万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    README.mdの罠

    git pushできなくてハマった。
    「README.md」を今回作ってしまったので、一度pullしないといけないようだ

    git pull origin master

    このあとだとOKだった。

    Tornadoメモ

    RequestHandlerのfinishメソッド
    接続を閉じる

    Tornadoのon_open

    https://groups.google.com/group/python-tornado/browse_thread/thread/af89195f90251d54

    ・88ページ(Introduction To Tornado)

       class EchoHandler(tornado.websocket.WebSocketHandler):
           def on_open(self):
               self.write_message('connected!')
    
           def on_message(self, message):
               self.write_message(message)
    

    on_open」と「open」があるけど、実際は「open」があるが「on_open」はないみたい。

    このsockjs-tornadoにはフェイクでつけてる。一貫性のためらしい。
    https://github.com/MrJoes/sockjs-tornado/blob/master/examples/test/test.py

    JSでは、onopenとonmessageのアンダースコアがないメソッド名。

    Introduction To Tornado著者に問い合わせてみる
    http://www.doryexmachina.com/

    Tornadoの簡単なWebSockeの例

    例::: Shadow Logs ::
    Izhar Firdaus氏がサンプル公開している

    準備
    ・8888ポートでつなぐよ。
    jQueryは必須。

    JS自体は「mini.js」にし、

    ↓htmlにはこのように書いた。
    ・mini.html

    <html>
        <head>
            <meta charset="utf-8">
            <title>enchant</title>
            <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
            <script type="text/javascript" src="mini.js"></script>
        </head>
        <body>
        </body>
    </html>
    

    JavaScript上にはonmessage関数があるのに、Pythonコード上のClientSocketクラスにon_messageメソッドとかがないな。

    Pythonコードのdataは、Ajaxで行なっている"data"ではないようだ。


    ・注意
    WindowsSafari Version 5.1.7(7354.57.2)、MacSafari Version 5.1.6 (7534.56.5)
    だと以下のエラーが出た。

    Unexpected response code: 426

    Windows版Chrome19.0.1084.46なら動いた
    Mac版ChromeVersion 19.0.1084.46は動いたが、
    XMLHttpRequest cannot load http://localhost:8888/push?x=1&y=3. Origin null is not allowed by Access-Control-Allow-Origin.」
    って変なエラー。ローカルにアクセスしてるらしい。

    とりあえず、Izhar Firdaus氏のサンプルをベースに自分なりにいじったのを
    https://github.com/shinriyo/websocket_mini_tornado
    においた。

    ■使い方
    1. mini.htmlを普通に開く


    2. 別のブラウザとかでmini.html開く
    以下のアドレスにアクセスした時にdataのパラメータの値がつまれる。

    http://localhost:8888/push?data=somedatahere



    3.「1.」で開いたブラウザでボタン押す
    JSの↓の部分が出現した。

     $('body').append('<div>' + event.data + '</div>');