You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
WebSocketって何? WebSocketは、Javascriptでサーバとリアルタイム双方向通信をする仕組みです。概要は第1回 WebSocket登場までの歴史:Jettyで始めるWebSocket超入門|gihyo.jp … 技術評論社によくまとまっています。 この記事ではWebSocketサーバを実装しながら、どういうプロトコルかを解説します。サンプルコードはWebSocket Draft 76でechoサーバーを作ってみた - いろいろな何かのものを参考にさせていただいています。ありがとうございます。 ※WebSocketプロトコルは現在ドラフトの段階なので、そのうち仕様が変わる可能性があります。この記事は20111/23時点の情報です。 プロトコル概要 WebSocketで通信を行なうおおまかな流れは次のようになります。 クライアントとサーバの間でハンドシェイクを行ない、接続
Asynchronous behaviour driven development for Python. The main reason for asynchronous testing is to make tests which target I/O run much faster, by running them concurrently. By having a faster suite, it gets run that more often, thus improving the feedback cycle. Write some vows, execute them: $ pyvows test/ Get the report, make sure you kept your word. A non-promise return value ✓ should be co
C++やCでプログラムを開発しているときに、依存ライブラリやら何やらの環境を沢山用意したくなりますよね?富豪ならここでVMware ESXiやKVMを使うところでしょうか。LLerなら、たとえばRubyやPythonにはrbenvやvirtualenvがあります。FreeBSDを使っている人ならjailを使う場面ですね。ちょっと器用な人ならchroot(8)を使いこなしているかもしれません。しかしjailは私には窮屈だし、情弱な私はまさに今pficommonやらで困っていました。つまり、 ユーザ空間で 大して苦労もせずに いろんなUnix系OSで どんなものが入っていてもとりあえず 環境をコロコロ切り替えたいのです。これを手作業でやろうとすると沢山の環境変数をシェル毎に毎回exportする羽目になります。ld_configとか( ゚Д゚)ハァ?という感じですよね。rvmなんかよくできている
グローバルインタプリタロック(英: Global Interpreter Lock, GIL)とは、プログラミング言語のインタプリタのスレッドによって保持されるスレッドセーフでないコードを、他のスレッドと共有してしまうことを防ぐための排他 ロックである。インタプリタのひとつのプロセスごとに必ずひとつの GIL が存在する。 プログラミング言語においてグローバルインタプリタロックを採用した場合、複数のスレッドを持つインタプリタプロセスの並行性を制限してしまう。プロセスをマルチプロセッサのマシンで実行させた場合、ほとんどあるいはまったく速度の向上が見られない。 こうしたロックを採用する理由として、下記のものがある。 シングルスレッドのプログラムの速度向上(すべてのデータ構造に対して別々にロックを獲得・解放する必要がなくなる) 通例スレッドセーフではないC言語のライブラリとの結合が容易である。
ループの中でループを回す処理は読みにくい 例えば友達が5人いて、サンドイッチが3種類あって、2種類の飲み物を配る処理を作るとします。 こういう場合、for文を何段にもネストするプログラムを書かざるを得ないときがありますよね。 for friend in friends: for sandwich in sandwiches: for drink in drinks: do_something(friend, sandwich, drink) そもそも、こういうプログラムを書く前は、本当にそういう処理で正しいのか考えた方がいいですが、とにかくこんなコードは読みにくいです。 ループの中でループを回すプログラムを字下げして書くことが読みにくさに寄与していると思うのですが、pythonだと字下げは必須なので悩ましいものです。 itertools.productを使えば絶対に1段で書ける しかし、こ
おっさんにも、このブログを読めば、GTKによるLinux上でのGUIプログラミングを可能にすることを目的に書かれています。 別にPythonエキスパートを養成するものではありません。(笑) おっさんなので、適当にそれらしくでっち上げられれば、それでいい、というポリシーでゆるく書かれています。 生暖かい目で見守ってください。 今回は、前回Gladeで作成したTreeViewを使ったリスト表示の画面に、プログラムからアイテムを追加する、というネタをやります。 っても、ネタってほどのモノじゃないんですが、実はこれが。(笑) 激、シンプル。 追加したコードは以下の内容になりますかね。 def on_btAdd_clicked(self,widget): tbEdit = self.wTree.get_object("tbEdit") self.listStore.append([len(self.
Deutsch English Español Français Italiano Nederlands Polski Português Русский Türkçe 汉语 العربية Български Bosanski Català Čeština Dansk Ελληνικά Euskara پارسی Suomi 客家语 עברית हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia 한국어 Kurdî / كوردی Latviešu Norsk ਪੰਜਾਬੀ Română Slovenčina Српски / Srpski Svenska ไทย Татар теле Українська Tiếng Việt 粵文
PUSH/PULL はあまり面白く無さそうなので、PUB/SUB を試してみました。 PUB PUB 側が bind します。 SUB は定期的に PUB に接続を見に行くので、少し寝てあげる必要があったりします。 import time import zmq ctx = zmq.Context() sock = ctx.socket(zmq.PUB) sock.bind('tcp://127.0.0.1:5555') time.sleep(1.0) sock.send('hello') SUB SUB が PUB に繋ぎに行きます。今回はルートは空なので FANOUT で、全員に配ります。 普通の MQ でもこれは出来ますね。 import zmq from zmq.eventloop import ioloop loop = ioloop.IOLoop.instance() ctx =
サーバーのリソースを見るにはグラフ化は重要ですが、推移ではなくリアルタイムな状況、例えば秒単位のスパイキーな負荷を見るには、サーバー上でvmstatやiostatなどの*statファミリーを叩く必要があります。 さて、vmstatはメモリの状況やブロック数単位のI/O状況は見られますが、バイト単位のI/O状況やネットワークの送信、受信バイト数を見ることはできません。 # vmstat 1 procs -----------memory---------- ---swap--- -----io----- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 0 4724956 355452 726532 0 0 54 484 3 3 1 0 99 0 0 2 0 0 47
動的ディスパッチ 動的ディスパッチは、「実行時に呼び出すメソッドを決める」ことを指します。 rubyではsendによって動的ディスパッチができます method_to_call = :upcase obj = "abc" obj.send(method_to_call) # => "ABC" pythonではメソッドがオブジェクトなので、getattrを使って、メソッドオブジェクトを取得して、実行することができます method_to_call = 'upper' obj = "abc" getattr(obj, method_to_call)() # => "ABC" 動的メソッド定義 動的メソッド定義は「実行時にメソッドを定義する」ことを指します。 rubyではdefine_methodを使用して動的にメソッドを定義することができます 以下は英語版wikipediaのrubyのページに
MacBookAirにbyobu入れてみたけど、byobu-config起動しようとするとPythonのsnackモジュールがないと怒られるのでインストールしたメモ。 libnewtに含まれているみたい。Python全然わからない。 そのままFormula書くとPython複数バージョン検出するとこけたので、散々悩んだ結果、野良Formulaに頼って自分の環境用に書きなおした(gist)。 $ cd /usr/local/Library/Formula/ $ wget https://raw.github.com/gist/1272305/ba26d8a5bf9d7fa2e2979d11bfba2c43717e0402/newt.rb $ export PYTHONPATH=/usr/local/lib/python2.7/site-packages/ $ byobu-config
Werkzeug¶ werkzeug German noun: “tool”. Etymology: werk (“work”), zeug (“stuff”) Werkzeug is a comprehensive WSGI web application library. It began as a simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility libraries. Werkzeug doesn’t enforce any dependencies. It is up to the developer to choose a template engine, database adapter, and ev
Web アプリを仕事ではほとんど書いたことが無かったのですが、Flask を仕事で使う事にしたので、書いてて感じた Flask の使いどころを。 追記 コメントに色々な意見を頂いておりますので、是非そちらも。 がっつり使われた方の感想 Flaskを1年仕事で使った感想 - kawaken’s blog http://d.hatena.ne.jp/kentaro_kawano/20120115/1326612808 結論 とりあえず箇条書きで ... データベースサーバとの接続が前提なら、 Flask を使うのはやめる Flask-* という Flask の拡張を使う時点で、Flask を使うのはやめる 大規模で Blueprints を使う前提なら、Flask を使うのはやめる 小さなアプリでプラガブルな仕組みを自分で作るには良い パーミッションは Flask-Principal が良さそ
ここ最近App Engineを使って今の企画のバックエンドを担当していました。Ruby programmer として感じたことをまとめてみます。 どういう企画? 地図とメールを使ったインタラクティブアドのアプリです。詳しくは今のところ内緒になっています。 Python Python初めて書きました。今までPython=indentしてるからきっとだれにでも読みやすくなってる くらいの安易な認識しかなかった私。Rubyと一番違うと思ったのは必ず誰しもに必要とされるまで余分な実装しないというPythonの考え方。Rubyだと全てのクラスはObject型を継承してて、便利なirbでClass.public_methods.grep /name_of_method/ すればリファレンス見ることもなく大体使いたい関数が見つかる とか Enumerableのeachとかmap, reduce, inj
最近、3年くらい前に書いた「そろそろ例のプロジェクトについて言及するか」についてTwitterで言及があったので思い出しました。「条件を満たしたものをすべて呼び出す」という設計思想でプログラムが書けてしまうという点について意外とみんなピンと来ないみたいだからコンセプトプルーフを実装してみようと思っていたんでした。 という訳で作りました。https://github.com/nishio/genomy 解説 「遺伝子はタンパク質の設計図」というところまでは教科書などでもよく言及されます。でも、その設計図には「どういう状況になったら作るべきか」「どういう状況では作るべきではないか」という情報も書かれています。 この「作るべきではない」(発現の抑制)がどう実現されているか、ザックリ説明しましょう。体の中にあるタンパク質があると、これがある遺伝子の周辺にへばりつき、その遺伝子からタンパク質を作る過
さらに詳細な利用方法が知りたい方は、Yahoo!デベロッパーズネットワークのマニュアルを参照してください。 ベイジアンフィルタの実装 ここから本格的にベイジアンフィルタの実装に入っていきます。 その前に、まずは先程のリスト1のコードを利用して入力された文章をわかち書きし、単語の集合を返す関数を作成しnaivebayes.pyとして保存しましょう。こちらも先程のmorphological.pyと同様にutf-8で保存してください。 リスト2 文章の分割をする関数(naivebayes.py) # -*- coding: utf-8 -*- import math import sys #yahoo!形態素解析 import morphological def getwords(doc): words = [s.lower() for s in morphological.split(doc)
個人的に Python が熱いです。以前にも同じような事を言った気がしますが。多分デジャブです。 Python といえば、アリエルには言わずと知れた Python 界隈の大物が御座しますが。そんな大物の縄張りで、僕のようなチンピラがこれまた安っちい記事を書くのはかなり恐縮ですが。その辺りは気にせず、図太い精神で書いてこうと思います。 Python は、再帰の途中で内部状態を維持しつつ途中結果を返すジェネレータだったり、(mutable ながら)リストに対して map とか filter とか出来ちゃうところで Lisp を感じられる辺り、かなりオモロい言語です。 せっかくだし何か書きたいなという事で、ベクトル空間モデル [1] を使った類似文書検索プログラムを作ってみました。 出来たものだけ見せると、以下のように動作します。 入力文書は標準入力から受け取ってます。4 行目の「国会図書館は…
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く