猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

Python

カプセル化

Javaやc++に比べると限定的ですが、Pythonもカプセル化の機能を持っています。 _をひとつ先頭に付ける Pythonでは_を先頭に付けた変数や関数はクラスの内部からのみアクセスする、という規則があります。ただしこれは規則というよりは習慣に近く、実際にはク…

オブジェクトの名前と値

inspect.getmenbersに関して調べたところ、 inspect.getmembers(object[, predicate])(原文) オブジェクトの全メンバーを、 (名前, 値) の組み合わせのリストで返します。リストはメンバー名でソートされています。 predicate が指定されている場合、 predic…

ジェネレータ式

ジェネレータを簡易に生成できるジェネレータ式の使用例です。listからfor文を使ってジェネレータを作成しています。 こういったのを自然に使いこなせるようになるととてもかっこいいのですが… >>> numbers_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> type(…

モジュールとクラス

Pythonでモジュールとクラスの違いです。基本の基本ですが、意外によく分かっていませんでした。 Pythonにおけるモジュールとクラスの違い モジュールはファイルからなり、モジュール中にクラス・メソッド・定数などが定義されている。要するにクラスはモジ…

Eventletの使い方(サーバ版)

前回はクライアント版のプログラムで並列化されているのを確認したので、今度はサーバ側のプログラムを作成してみます。 サーバプログラム import eventlet def handle(clientSock, clientAddr): data = clientSock.recv(1024).strip() clientSock.sendall(d…

Eventletの使い方(クライアント版)

PythonのモジュールEventletを触ってみます。並列プログラミング難しいです。基本的にここを参照しています。 とりあえず触ってみる ネットワークを介しての問い合わせはIO処理に時間がかかっているはずです。そのためGETメソッドを逐次処理する場合と、even…

WSGIのお勉強 その2

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…

mapperモジュールの使い方

ここを参照にしたmapperモジュールの使い方の簡単にメモです。 インストール # easy_install routes 使い方 まず特定のURLのパターンをmap.connect()で作成します。そしてそのパターンにURLがマッチした場合に、URLから辞書型のオブジェクトを作成します。 …

requestsモジュールの使い方

以前はPythonでHTTP関連の処理を行う際にurllibモジュールを使用していましたが、より便利なrequestsモジュールを使用してみます。 詳細に関してはこちらを参考にしてください。 インストール # easy_install requests 使用例 Googleにアクセスしてステータ…

WSGIのお勉強 その1

WSGIとは Pythonのドキュメントからの抜粋です。 Web Server Gateway Interface (WSGI) は、Web サーバソフトウェアと Python で記述された Web アプリケーションとの標準インターフェースです。標準インターフェースを持つことで、WSGI をサポートするアプ…

Pythonでパイプ付きシェルコマンドの実行

Pythonのプログラム内部においてシェルコマンドを実行するには、subprocessやos.systemなどいくつか方法があります。その中でももっとも簡単なのがshの利用です。 インストール pipコマンドでインストールします。 # pip install sh Downloading/unpacking s…

Pythonでソケットプログラミング その3

Pythonの標準ライブラリを用いてエコーサーバを書き直してみます。 標準ライブラリの利用 import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): self.data = self.request.recv(1024).strip() self.request.sendall…

Python

Python標準ライブラリ Python2.7の標準ライブラリです。 Python基本文法関連 カプセル化 可変個の引数の取り扱い lambd式 ジェネレータ式 デコレータ HTTP関連 urllibモジュールの使い方 requestsモジュールの使い方 Mapperモジュールの使い方 ログ関連 ログ…

Pythonでソケットプログラミング

https://bitbucket.org/pypy/pypy/src/9d88b4875d6e/lib-python/2.7/SocketServer.py

Pythonでソケットプログラミング その2

エコーサーバ クライアントからの入力をそのままクライアントに送信するエコーサーバのプログラムです。前回との違いはサーバ側とクライアント側それぞれでwhile文でループにしていることです。 サーバ側 import socket class EchoServer: def __init__(self…

Pythonでソケットプログラミング その1

Hello,worldサーバ サーバではクライアントのIPアドレスを表示します。クライアントに対してはHello,worldというメッセージを送信します。 最低限の機能しかもたないプログラムですが、サーバとしての基本的な機能はすべて含まれています。 サーバ側 #server…

文法の基本

Pythonでバイナリデータの取り扱い

Pythonでパケット処理をする際に勉強する必要があったため、PythonのStructクラスのpackおよびunpackに関してまとめてみました。それぞれバイナリデータ⇔C言語の構造体の変換を行います。 unpack関数 struct.unpack(fmt, string) 与えられたバイナリデータを…

urllibモジュールの使い方

Pythonの対話型シェルでurllibを用いてHTTP関連の基本的なリクエストの送信を行ってみました。 GETリクエストの送信 >>> import urllib >>> url = 'http://172.16.1.254' >>> response = urllib2.urlopen(url) >>> html = response.read() POSTリクエストの…