月別アーカイブ: 2008年7月

Python: コマンドライン引数の取得 – sys.argv変数

コマンドラインで与える引数によってプログラムの挙動を変えたいという場面はよくあります。Python ではコマンドライン引数は sys モジュールの argv 属性に文字列を要素とするリストとして格納されています。そして、リストの先頭要素(sys.argv[0])はスクリプトファイル名となっています。

ソースコード

text.txt

実行結果

引数を指定しない場合

引数を指定した場合

リファレンス

C++, boost::thread : スレッドの同期と排他制御 – mutex、conditionクラス

複数のスレッドから1つの変数にアクセスする際、システム側のスレッドスケジューリング次第で、予期せぬ書き換えが起こってしまう場合があります。その為、ある1つのスレッドが変数にアクセスしている際は他のスレッドをブロックする排他制御やスレッドの同期を行う必要があります。C++でJavaのsynchronizedメソッド/ブロックと同じような記法でクリティカルセクションを実装する方法の1つにboost::threadライブラリのmutexとconditionクラスがあります。

続きを読む

C++, boost::thread : スレッドグループの生成と実行

同じような処理を行うスレッドが複数ある場合は、それらをスレッドグループでまとめると、スレッドへの操作がやり易くなります。スレッドグループへの登録には、boost::thread ライブラリの thread_group クラスを用いて、メンバ関数 create_thread() の引数にマルチスレッドで実行したい関数のアドレスを指定します。

それでは下記のサンプルで実際にその過程と実行結果を確認してみましょう。

続きを読む

Python: 正規表現の基本 – 文字範囲の指定「[ ]」

ソースコード

実行結果

リファレンス

Python: 正規表現の基本 – 繰り返し「*」「+」「?」

ソースコード

実行結果

リファレンス

Python: 正規表現の基本 – メタ文字「.」「^」「$」

ソースコード

実行結果

リファレンス

Python: SQLiteにデータを格納、検索、出力 – pysqlite

レコードの検索や格納処理性能がオープンソースのDBで間に合う程度の問題であれば、積極的に使っていきたいです。それによって、他のロジックのコーディングに傾注できます。また、DBという共通のプラットフォームは複数言語から扱えますので、データの再利用がしやすいです。
さて、今回はPythonからSQLiteを扱うサンプル(pysqliteの使い方)を書いてみます。

ソースコード

実行結果