|
Windows7は、Vistaと違って結構ちゃんと動くので嫌いではないのですが、Windows系OSは使いはじめに一番いろいろやらなければならず、もっとも重要なのは、やはりCtrlキーとCapsLockキーの入れ替えです。
なんだかんだいっておきながら、いつも人に頼って申し訳ないのですが、ここによい情報がありました。 Microsoft TechNetのCtrl2Caps V2.0というソフトをこのページからダウンロードして、コマンドプロンプトを管理者権限で立ち上げ、インストールします。 再起動後、よしよしうまくいったと思っていましたが、どうやら私の環境では、CapsLockとCtrlが入れ替わるのではなく、CapsLockキーがCtrlキーに変化しました。もとのCtrlキーもそのまま使えるので、つまりCapsLockキーがなくなってしまったことになります。まあ日ごろから、この記事のタイトルのように、CapsLockキーなんて死んでしまえばいいと思っていたので、むしろ歓迎です。タイプライター時代のなごりらしいですが、いつまで引きずるつもりなんですかねー。 |
|
たとえば、4桁の0と1の並びを考えます。0000とか0101とか1111などですが、全部で2の4乗で16通りあります。これらすべての組合せについて、羅列してくれるコードをPythonで書きたいと思ったときは、generator関数が便利です。
# python2.6 or higher def bernoulli_str(upto): startat = 0 endto = 2 ** upto - 1 while startat <= endto: yield format(startat,'b').zfill(upto) startat += 1 if __name__ == '__main__': for v in bernoulli_str(4): print(v) 出力 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 桁数を増やすとあっという間に組合せ爆発を起こすので、yieldを使ったgeneratorを使うことで、メモリに入り切らなくなってしまう事態を回避できます。桁数がそろった方が見栄えがいいので、zfillで0詰めしています。 やっぱり、Pythonはとっても便利で使いやすいと実感しますが、GoogleがGoを出したり、iPhoneのおかげでObjective-Cの人気があがったりと、プログラミング言語界も相変わらず活況です。お正月先輩からきた年賀状には、「とりあえず今年はScalaから」と書いてありましたが、浮気はせずしばらくPythonがいいかなーと思うところです。 |
|
少なくとも、半角英数字で構成されるtxtファイルの中身は検索しくれているようです。
お、すごいなーと思って日本語が入ったPDFを試してみましたが、どうやら見てくれていない模様。MS-Wordの文章とかも最近は「Googleドキュメントとして開く」ことができるので、ついでだから中身も検索対象にしてくれると便利かもしれません。 と、ここまで書いて、もしかしたらBase64エンコードされた文字列をそのまま検索しているだけなのでは?と思い、適当な日本語を書いたtxtファイルを添付して、Base64エンコードした文字列で検索してみましたが、だめだったので、仮説は否定されました。残念。というか、もしこの仮説が正しいと、半角英数字もBase64では違う文字列になるはずだから、最初の事実があり得なくなってしまいます。なんか背理法みたいな感じに・・・。というわけで、そもそも仮説がおかしいことに気がつきました。アホでした。 何ごとも、実行する前に少し考えてみるって重要かもしれません。 |
|
折角たくさんコアがあるけど、並列プログラミングは面倒だという方に指示されているのかどうか解りませんが、OpenMPを使ったときのメモを。
#ifdef _OPENMP #pragma omp parallel #endif for( int i = 0; i < permu_cnt; ++i){ ... などとすると、マルチコア化されるという魔法のような話です。 スレッド数は環境変数OMP_NUM_THREADSで設定できます。GNU g++は4.2からOpenMPに正式対応したということですが、手元にIntel C++ Compiler11.0があったので、これでコンパイルしました。 言われたとおり、 -openmp ってつけたらコンパイルは出来たのに、実行すると、 dyld: Library not loaded: libiomp5.dylib Referenced from: /Users/***呼び出し元のバイナリ*** Reason: image not found Trace/BPT trap というエラーが・・・ /opt/intel/Compiler/11.0/056/lib に、libiomp5.dylibがあったので、LD_LIBRARY_PATHに追加すればいいのか?と思ってやってみるも失敗。 あり?と少し悩みましたが、iccのコンパイルオプションに、 -static-intel を追加すればOKです。 なんか、とりあえずマルチスレッドで動いてます。8コアMacProなので、5コアくらい使って5倍になったらいいかなというところです。 |
|
MacOSX10.5のPython2.6で動かせる簡単なPyCXXの例を、貼り付けておきます。
test.cxx
mac_py26.mak
どちらも、サンプルファイルをちょっと変更してわかりやすくしただけですが、これだけで結構Py::Listの動きなどよくわかると思います。 ~/pycxx-6.1.1$ make -f mac_py26.mak で、test.soができていることを確認して、インタラクティブシェルを起動します。 ~/pycxx-6.1.1$ python Python 2.6.3 (r263:75184, Oct 2 2009, 07:56:03) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import test >>> l = test.func(range(3),10) 10.0 >>> l [0, 1, 2, 10.0] >>> type(l) <type 'list'> >>> という具合に使えます。 C++でコードを書くとき、ラッパーオブジェクトをどのあたりまで使ったらいいのかとか、本格的なプログラミングには、すこし考えが必要ですかね。 |


