PythonのモジュールEventletを触ってみます。並列プログラミング難しいです。基本的にここを参照しています。 とりあえず触ってみる ネットワークを介しての問い合わせはIO処理に時間がかかっているはずです。そのためGETメソッドを逐次処理する場合と、even…
MacでもSICPの勉強をしたいので、環境構築の仕方についてまとめました。 DrRacketのダウンロード ここからDrRacketをダウンロードしてきます。以前はDrSchemeだったのに変わってしまったのですね。SICP用の環境設定がうまくいきません。どうしたらいいんだろ…
Pythonのソースコードを読んで理解する必要があるので、はじめてまともに向き合いました。今まで並列処理が必要になったことなどないので、本当に手さぐり状態です。ライブラリのドキュメントを読んでいても書いてある意味が分からないので、この分野で使わ…
オブジェクト指向のプログラムなので、アプリケーションを作成するプログラマが把握する必要のあるメソッドと、裏で動作するためユーザが意識する必要のないメソッドが混ざっている。比率としては、圧倒的に後者の方が多い。プログラマが把握しているのは氷…
それぞれの違い 同期処理では、あるタスクが実行している間、他のタスクの処理は中断される方式です。非同期処理は、あるタスクが実行をしている際に、他のタスクが別の処理を実行できる方式になります。 メリット・デメリット 同期処理の場合は、時間がかか…
Ryuのソースコードです。何はともあれ、これがないと始まりません。 https://github.com/osrg/ryu日本語で非常に丁寧に書かれています。まず初めによむならこれが一番です。 http://osrg.github.io/ryu-book/ja/Ryubook.pdfRyuのアーキテクチャ全般に関する…
TO READ http://methane.github.io/gevent-tutorial-ja/
WSGIに準拠したWebアプリケーション例 このページを参考にしました。 #wsgi-test1.py def application(environ, start_response): start_response('200 OK', [('Content-type', 'text/plain')]) return 'Hello, world' from wsgiref import simple_server if…
最近Ryuのソースコードを読んでいるのですが、「Ryuのソースコードを読む」というよりも「Pythonのモジュールの使い方を読む」ことの方が多く、ちょっと意外でした。 しかし、既存のモジュールを組み合わせただけで複雑な機能が実装できると考えると、実装の…
たまに扱うvyattaの設定のメモです。こちらに詳しい設定情報が記載されています。 IPアドレスの割り当て $ configure [edit] # set interfaces ethernet eth1 address 192.168.10.254/24 [edit] sshの有効化 # set service ssh [edit] # commit [edit] # sav…
ここを参照にしたmapperモジュールの使い方の簡単にメモです。 インストール # easy_install routes 使い方 まず特定のURLのパターンをmap.connect()で作成します。そしてそのパターンにURLがマッチした場合に、URLから辞書型のオブジェクトを作成します。 …
以前はPythonでHTTP関連の処理を行う際にurllibモジュールを使用していましたが、より便利なrequestsモジュールを使用してみます。 詳細に関してはこちらを参考にしてください。 インストール # easy_install requests 使用例 Googleにアクセスしてステータ…
mininetでよく使われるコマンドの使い方は以下の通りです。 フローエントリの表示 全てのスイッチのフローエントリが表示されます。 mininet> dpctl dump-flows *** s1 ------------------------------------------------------------------------ NXST_FLOW…
RyuのRESTを扱うサンプルコードの内で、最もシンプルなrest.pyを動かしてみました。ローカルでrest.pyを起動させ、同じくローカルから自身に対してcurlコマンドでhttpリクエストを送信します。 下の例ではGETリクエストでの表示とPOSTリクエストでの登録しか…
久しぶりにRyuをインストールしようとしたら、いくつか注意点がありました。うまく行かない場合は以下を参照にしてみてください。 これまでのインストール方法 # apt-get update # apt-get install git python-pip libevent-dev python-dev python-gflags uw…
前回に引き続きWSGIに関してです。今度はリクエスト毎の処理の分岐、およびパラメータの取得も行ってみます。 ソースコード リクエストの分岐 パラメータの取得
Pythonのソースコードを読んでいると、よく*argsや**keyargsといった文字が関数の引数にでてきます。これらの使い方に関してです。 キーワード引数 別名名前付き引数ともいいます。以下の使い方のように引数に名前と初期値をあらかじめ設定しておくことがで…
RESTAPIなどでHTTP関連のリクエストを手軽に扱えるcurlコマンドの使い方です。 ユーザ名・パスワードの指定 "-u ユーザ名:パスワード" で指定を行います。 # curl -u "username":"password" http://IPaddr:Port/pass ファイルの指定 カレントディレクトリの…
手軽にNWを構築できるmininetをUbuntu12.04にインストールしました。設定済みのVMをダウンロードする方法もありますが、ソースコードからインストールしました。 パッケージのインストール $ sudo apt-get install gcc make screen psmisc xterm ssh iperf i…
WSGIとは Pythonのドキュメントからの抜粋です。 Web Server Gateway Interface (WSGI) は、Web サーバソフトウェアと Python で記述された Web アプリケーションとの標準インターフェースです。標準インターフェースを持つことで、WSGI をサポートするアプ…
KVMを用いてのライブマイグレーションの設定 その2の続きです。 Ubuntuでルートユーザの作成 ルートユーザでUbuntuにログインする必要があります。それぞれのKVMホストにて、こちらを参考にして設定を行ってください。 virt-manager上でのリモート接続 virt-…
Pythonのプログラム内部においてシェルコマンドを実行するには、subprocessやos.systemなどいくつか方法があります。その中でももっとも簡単なのがshの利用です。 インストール pipコマンドでインストールします。 # pip install sh Downloading/unpacking s…
KVMを用いてのライブマイグレーションの設定 その1の続きです。KVMホスト側の設定手順です。KVMおよびvirt-managerはインストール済みと仮定しています。 パッケージのインストール # apt-get install nfs-common ストレージプールの設定 ここからはvirt-man…
NFSサーバではCentOS6.3を、KVMが動作するホストOSとしてUbuntu12.04をそれぞれ使用しています 全体構成 上の図のようにKVMホスト2台とNFSサーバ1台からなります。両KVMホスト間をVMが無停止で行き来するのが目的です。VMのイメージファイルは全てNFSサーバ…
Pythonの標準ライブラリを用いてエコーサーバを書き直してみます。 標準ライブラリの利用 import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): self.data = self.request.recv(1024).strip() self.request.sendall…
ブラウザ側でキャッシュを無効化 curlコマンドの使い方
CentOS6.4でブリッジの作成 CentOS6.3にVNCサーバをインストール CentOS6.4のカーネルアップデート(カーネルコンパイル) CentOS6.4のカーネルアップデート(パッケージインストール) CentOS6.4にgpartedをインストール Ubuntu12.04でrootユーザの作成 iptable…
OpenVSwitchのインストール Ubuntu12.03にOpenvSwitchをパッケージからインストール Ubuntu12.04.2にOpenvSwitchをソースコードからインストール OpenFlowSwitchとしてのOpenvSwitchの詳細設定 OpenVSwitchの設定 OpenvSwitchの基本設定 OpenvSwitchのログレ…
OpenvSwitch関連と組み合わせることで、簡単にOpenflowの環境構築が行えます。 OpenFlowコントローラのインストール CentOS6.4にRyuをパッケージからインストール CentOS6.4にRyuをソースコードからインストール Ubuntu12.04にRyuをソースコードからインスト…