ブログ一覧

Pythonでのスレッドの使い方(サンプルソース)

Posix準拠のプラットフォームではpthreadがサポートされています。 Pythonのスレッドはこのpthreadを使っているので、pthread環境下では ネイティブスレッドを使用できます。当然Linux系の環境ならば使用可能です。


Pythonでのスレッド実装方針は大きく2つあります。
一つはthreading.Threadクラスをオーバーライドしてスレッド本体の実装を実現する方法で、 もう一つはスレッド実行したい関数をコールバック登録する方法です。

MacPortsの使い方(基本コマンド)

以下にMacPortsでよく使うコマンドオプションを記述しておきます。

Python: ファイルロックによる排他制御(サンプルソース)

前回は排他制御について説明しました。


今回は排他制御を体感するためのサンプルソースを紹介します。

MacOSX: Thunderbirdの移行方法(MacからMacへ)

Thunderbirdの移行方法は簡単です。
基本的に、メールデータやアドレス帳など個人データ一式が

/Users/mitarai/Library/Thunderbird/Profile/


以下に格納されるので、それを新しいマシンにコピーするだけです。

Python: ファイルロックによる排他制御(fcntl編)

PythonでCGI実装していると、CGIからいろんな資源にアクセスすることになります。


RDBとかファイルとか。。。


RDBに対するR/Wは、RDB管理モジュールが同時書き込みに対する排他制御を行ってくれるので 何も意識することはありませんが、ファイルに対するR/Wとなるとそうはいきません。

ファイルで特に問題になるのは、書き込みです。

Python: 関数ポインタの渡し方(汎用ハンドラの作成法)

C言語では関数ポインタと引数を渡してコールバック関数を実現するなんてことが よくありますよね。Pythonでもそれが可能で、要は可変個の引数の渡し方さえ 分かってしまえば簡単に実現可能です。

Python:多次元配列(タプルの配列)のソート方法

前回の記事で辞書配列、リストなどに対する基本的なソーティング方法を紹介しました。


今回は、もうちょっとこだわって、多次元配列(正確にはタプルのリスト)に対するソート方法を 紹介します。

C言語:高速化のためのコンパイルオプション

高速化のために、ボトルネックとなる関数を発見し性能改善する必要があります。 そんなときはgprof等のプロファイラツールを使用しましょう。

また、最適化のためのオプションも有効です。

C言語:セグメンテーションフォルト(セグフォ)時にcore(コア)を吐かせる方法

C言語プログラミングを行っているときに、セグフォを目にすることは良くあると思います。 また、実際にサービスとして運用しているプログラムが予期せぬタイミングでセグフォで 停止していた。。。なんてことを経験された方も数多くいらっしゃると思います。

そんなとき、core(コア)を吐かせるようにシステムに設定をしておけば、どこで何が原因で プログラムが停止したのかが瞬時に分かるので便利です。

C言語:メモリ破壊検出ツール electric fenceの使い方

C言語に限らず、プログラム開発においてデバッグに多くの時間がかかるバグの一つとして、 メモリ破壊系バグが挙げられます。


このバグは主に確保した配列を飛び越えてデータを書き込むことで 発生します。このようなプログラムは単純にprintf()等でシーケンスでバッグをしても、入力の種類に よって停止する位置が変わったりするので、まったくの無力です。逆にgdbでひとつひとつステップごとに 様々な変数やシーケンスをチェックしだすと、ものすごい時間を浪費します。