Newsstandを非表示にする
iOS5から追加された用途不明?なアプリNewsstandを消したい。
できれば脱獄したくないのがiphoner(笑)の常で非脱獄でNewsstandを消す方法があったので書いておく。
(i).iphoneのsafariから http://www.cydiahacks.com/ にアクセスする。
(ii).中央付近の"Hide Apps no Jailbreak"(脱獄なしでアプリを隠す)をタップ。
(iii).中央付近の "Hide Newsstand" をタップ。
(iv).確認のダイアログが出るので「インストール」をタップ。
(v).「Appをダウンロード出来ません」と出るので「完了」をタップ。
(vi).Newsstandを長押しでアンインストール!
なお株価アプリ,お天気アプリなどもアンインストールできる模様。
こんな記事も書いております。
Dropboxでブログの画像を管理する : でじたるはっくす!
http GET/POST を実現するrequestsモジュール
pythonで迅速かつエレガントにサーバとの通信を行いたいならrequestsモジュールを導入しない手はない。付属のurllibモジュールやurllib2モジュールよりも単純かつ明快にコードを書くことができる。
import requests req = requests.post(URL,ポストしたいデータ,verify=False)
でURLにHTTP/POSTリクエストを送りデータを受信できる。
verifyは証明書を指すフラグで証明書を確保できない場合はverify=Falseで構わない。
簡潔にSSL認証を投げることができた。
requestsモジュール公式サイト
http://docs.python-requests.org/en/latest/
『GIGAZINE 未来への暴言』を読んだ
超有名ニュースサイトGIGAZINEの編集長の山崎さんが編集者の目からみたウェブの時代の今と未来を綴った一冊。
2010年に出版されたこともあり2年前にウェブの最先端にいた人の考えを垣間見ることができて興味深い。
電子ブック絡みで初代Kindleの話題がでてる。つい先月amazonから新しいKindle(Fire HD,paperwhite)がリリースされたばかりだからちょっと懐かしい気持ちになる。今でこそタブレット端末全盛で安価に手に入るようになったけど,2年前にはipad一強だったからな。Eインクとかも知名度低かったし。
山崎さんがどういう考えで記事を書いてるか書かれている。専門性だけにとらわれずあらゆる趣向を持った「オタク」的な人間が理想的だという。技術書が売れない時代だからあらゆる話題を包含したメタメディア的なことが大切だと山崎さんはいってるんだろう。
日本にオタク気質な人間が少ない原因は本書でも言及されているように教育にあるだろう。小中高と半ば洗脳のように量産型日本人を生産すれば興味とか趣向もどこへやらといったところ。量産型気質はメタメディア的なウェブの性格と相入れないのも忘れてはならないという。
そんな山崎さんのウェブの未来へのアイデアが伝わってくる一冊だ。ぜひ山崎さんには1年に一度「暴言」を書いてもらいたい。
TornadoでWebSocketクライアントセッションを管理する
Tornadoでクライアント側からWebSocketでセッションを張る際にサーバーサイドでクライアントの情報を管理する。
"self"はクライアントごとに独自のSocketHandlerを返す。
#-*- coding:shift-jis -*- import tornado.ioloop from tornado.web import * import tornado.websocket import tornado.httpserver class MainHandler(RequestHandler): def get(self): self.render("index.html") cone = [] class SocketHandler(tornado.websocket.WebSocketHandler): def open(self): if self not in cone: cone.append(self) print "-------------------" print "connected" print cone print "--------------------" def on_close(self): if self in cone: cone.remove(self) print "------------------" print "dis-connected" print cone print "-------------------" def on_message(self,message): for i in cone: i.write_message(message) app = Application([(r"/websocket",SocketHandler),(r"/",MainHandler)]) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(8000) tornado.ioloop.IOLoop.instance().start()
index.htmlで同ディレクトリに保存
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title></title> </head> <body> <script> var ws = new WebSocket("ws:localhost:8000/websocket") ws.onopen = function(){ ws.send("hello") } ws.onmessage=function(evt){alert(evt.data)} function c(ws){ ws.send("oh,mygod") } </script> <form action=""> <input type="button" text="submit" onClick="c(ws)"/> </form> </body> </html>
以下のページが非常に参考になる。
http://masahito.hatenablog.com/entry/20100221/1266773601
https://sites.google.com/site/tornadowebja/documentation/integration-with-other-services/tornado-websocket
http://voluntas.hatenablog.com/entry/20100221/1266719424