スキップしてメイン コンテンツに移動

投稿

3月, 2008の投稿を表示しています

Python: PaSoRiでSuicaの履歴を読み出す

Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する って記事でPaSoRiなるものを知った。Edyもオサイフケータイも使ってないし、FeliCaについてはまったく興味がなかったのでスルーしてたんだけどこれは面白そう。早速、 SONY RC-S320 非接触ICカードリーダ/ライタ PaSoRi 「パソリ」 を買ってきていじってみた。因みに値段は約3000円。 まず、PaSoRiを読み出すためのライブラリとして felicalib や libpasori などがあったのでこれらを調べてみると、どうやらPythonで利用するためにはCで拡張モジュールを書かないとダメそうで、ちょっと面倒だなと思っていたが、 FeliCa の Id を python で読む というページを見つけて、Pythonのctypesモジュールを使えば拡張無しでできそうなことを知る。 で、上記のサイトなどを参考にざざっとプログラムを書いてみた。ライブラリはWindowsを使っていることもあってfelicalibを選択。プログラムを実行させるには、このライブラリと駅コード情報が必要となる。 路線・駅コード一覧・登録 から、Excel形式ファイルを落としてきて、それの駅線・駅コード一覧のページをCSV形式に変換しておく(StationCode.csv)。店舗情報やバス情報の取得については、コードも増えるし面倒なので割愛。でも簡単に入れられるハズ。 実行すると以下のような履歴をすべて出力する。 改札機 運賃支払(改札出場) 2008年01月14日 赤羽駅 王子駅 8920円 改札機 運賃支払(改札出場) 2008年01月14日 王子駅 赤羽駅 9070円 ああ、面白かった。以下、ソース。 追記: バグ修正改良版については、 Python: PaSoRiでSuicaの履歴を読み出す・その後 を参照のこと。 #!/usr/bin/env python # -*- coding: shift_jis -*- """ read_felica.py by nox Suicaの履歴を出力するプログラム. """ from ctypes import * P

C++: OpenGLで正十二面体を回転させる

どう書く?org にポリゴン表示のお題があるのだが、なんとなく時機を逸してしまった感があるのでここで。でも投稿を見た限り、どれもOpenGL使ってないなぁ。真っ先に挙がると思っていたのだが。 ここでは、OpenGL(GL/GLU/GLUT)を使って正十二面体を回転させている。ちょっと変更するだけで、マウス操作を加えたり、タイマー関数を利用したりできる。言語は敢えてC++で。GLUT使うなら本当はCの方がシックリ来るけど。コンパイルはWindowsだろうが、Linuxだろうが問題ないはず。 以下、ソースコード。 #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> class Rotate3D { private: static GLdouble m_matrix[16]; static double m_spin; static void Draw(); static void Rotate(GLdouble, GLdouble, GLdouble); static void Display(); static void SpinDisplay(); static void Reshape(int, int); public: Rotate3D() { } virtual ~Rotate3D() { } void Init(); }; GLdouble Rotate3D::m_matrix[16]; double Rotate3D::m_spin = 0.0; void Rotate3D::Draw(void) { glColor3d(0.5, 0.5, 0.5); glutSolidDodecahedron(); } void Rotate3D::Rotate(GLdouble x, GLdouble y, GLdouble z) { glTranslated(0.0, 0.0, -10.0); glRotated(x, 1.0, 0.0, 0.0); glRotated(y, 0.0, 1.0, 0.0);

TeXの数式を簡単にEPSやJPEGなどの画像データに変換する方法

TeX wiki TeXの数式をDTPソフトに よりメモ。 pLaTex一式(Ghostscript関連含む)がインストール済みのこと。EPSではなくJPEGなどの画像データに変換したい場合はImageMagickがインストール済みのこと。 上記のような数式を作りたい場合、以下のようなTeXテキストファイルを作成する(ここではeq.tex)。 \documentclass[12pt]{jarticle} \begin{document} \thispagestyle{empty} \[ \mathrm{RMSD} = \sqrt{\frac{1}{N}\sum_{i=1}^N{\delta_i^2}} \] \end{document} 上記のTeXファイルを、 platex eq.tex としてDVIファイルを作成する。 dvipsでEPSファイルに変換。 dvips -E -Ppdf -x 5000 eq.dvi -o eq.eps EPSのアウトラインを取る。 Windows: gswin32c -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=epswrite -dEPSCrop -r9600 -sOutputFile=eq2.eps eq.eps Lunix: eps2eps eq.eps eq2.eps EPSファイルをJPEGファイルに変換したい場合は以下を実行。 convert eq2.eps eq2.jpg 目的に合わせて、eq2.epsやep2.jpgを利用する。 Windowsなら、以下のようなコマンドスクリプト(ここではconvert_eq.cmdとして保存)を作っておけば、 convert_eq.cmd eq これで変換できる。 platex %1.tex dvips -E -Ppdf -x 5000 %1.dvi -o %1.eps gswin32c -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=epswrite -dEPSCrop -r9600 -sOutputFile=%1_2.eps %1.eps convert %1_2.eps %1_2.jpg Linuxも同様にシェルスクリプトを作成する。

騒音を約99%カットするノイズキャンセリングヘッドホン

世界初、ノイズキャンセリング機能をデジタル化 周囲の騒音を約99%低減するノイズキャンセリングヘッドホン発売 騒音を約99%カットするノイズキャンセリング(以下、NC)ヘッドホンMDR-NC500Dがソニーから4月21日に発売されるらしい。NCヘッドホンの性能は騒音のカットだけではなく、音質や装着感も大きなウェイトを占めるので実際のモノを見るまでは何ともいえないが、良いものであれば約5万円の価格は高くはないし、買ってしまうかも。 因みに今使っているのは、BoseのQuietComfort2とSennheiserのPXC300、それにソニーのMDR-NC022だ。ソニーも前に比べれば随分まともになってきていると思う。QuietComfort2は今もよく使っているが、PXC300はMDR-NC022を使うようになってからほとんど使っていないな。コンパクトだといっても電源部分などが嵩張るのがきつい。 まあ、MDR-NC500Dについては発売してから調べてみようと思う。

ActionScript 3.0で鏡文字

ずいぶん前からActionScript 3.0(以下、AS3)を覚えようと思っているのだが、未だに手付かずの状態だ。それでも少しぐらいは触っておこうと思ったので、前回の ShootNumbers に引き続き、入力したテキストをそのまま鏡文字で出力するFlashアプリを作ってみた。こんなのは初歩の初歩だと思うが、AS3については素人であるので致し方ない。 ところで、Flashはこのブログの投稿記事に埋め込められないので、サイドバーの一番下に入れてみた。大したプログラムでもないのでそのうち外すかも。 で、問題の中身だが、AS3の流儀なんてほとんど知らないので、妙なコーディングしているかもしれない。その辺は勘弁して欲しい。キャレットの表示などを入れたりしたら思ったよりもコード量が増えてしまった。うーむ。肝心なのは、フォントをEmbedで埋め込む必要があることだろう。埋め込まないと文字の反転や回転ができない。 以下に示すソースコードを mxmlc MirrorImagedText.as として、コンパイルすればswfファイルを作成できる。使い方は普通にキーボードから文字を打ち込めばよい。バックスペース、改行が可能。マウス左クリックで全消去。 MirrorImagedChar.as // MirrorImagedChar class by nox package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.utils.Timer; import flash.events.TimerEvent; public class MirrorImagedChar extends Sprite { [Embed(systemFont='Courier New', fontName='myFont', mimeType='application/x-font&#

GCCでSSEを使ったプログラミング

先日、GCCでIntelのSSEを使う話が出たのでメモ。 MMX: mmintric.h SSE: xmmintric.h SSE2: emmintric.h SSE3: pmmintric.h SSSE3: tmmintric.h ついでにモトローラのAltiVecでは以下の通り。 AltiVec: altivec.h 上記をインクルードすればそれぞれで固有の命令が使える。何れにしろ、SIMDのプログラミングは面倒。因みに、PS3ではaltivec.hを利用してプログラミングしていくことになる。

C++0x: ワーキングドラフト

C++0xのワーキングドラフトが2月に出ていた。 Working Draft, Standard for Programming Language C++ 基本的に以前のC++とは互換性を取るようなので、今まで通りのコーディングでほとんどの場合、問題ないみたい。いろいろ便利に、安全に使える工夫がされているようだ。 ぱらぱらと流し読みしてみたけど、スレッド関連のユーティリティも入っている。時代も変わったものだなぁ…。

PGP/GPGを薦めたいが…

個人情報漏洩などのセキュリティ問題が深刻になってきているが、それを防ぐための一つの手段として暗号化がある。特にメールの暗号化は重要だ。仕事で個人情報を含む文書をメールで送ったときにもし間違ったアドレスにでも送ろうものなら一大事である。このようなときでも暗号化してあれば安心だ。 ではどのようにして暗号化すればよいか。たとえばWindowsに付属しているOutlook Expressなどでは、暗号化のための仕組みが組み込まれている。しかし、これはデジタル署名が必要であり有料なのだ。もっと手軽に無料で利用できる仕組みは無いものか。実はある。それがPGP/GPGだ。 PGP はPretty Good Privacyの略で、Philip Zimmermannが開発した暗号化ソフトウェアだ。一方、 GPG はGnu Privacy Guardの略で、GnuPGとも呼ばれている。OpenPGPに準拠した無料の暗号化ソフトウェア(GPL)である。PGPとGPGの違いは、PGPは商用で利用するには有料であるが、特許を持つ暗号化アルゴリズムなども利用できる。GPGの方は商用で利用する場合でも無料であるが、特許に抵触するアルゴリズムは採用していない。個人的にはGPGを利用している。Linuxでは普通に使われているし、Windowsでも問題なく導入できる。 しかし、いくら優れた暗号化ソフトウェアであっても、周りが使っていなかったら意味が無い。暗号化して送っても読めないからだ。署名を入れても、それが正しいかどうか分からない。以前、インターネット上の電子メールが出始めた頃に電子メールアカウントを取得したのだが、アカウントを持っている知人がいなかったのでまったく無意味であったが、それと同じ状況だ。 なら、周りの人にもGPGを薦めれば良いかと思うのだが、ある理由で薦めにくいのだ。導入・使用方法が分かりづらいのである。ある程度コンピュータに詳しい人ならばまったく問題ないのだが、そうでないとちょっと面倒だ。PGPの公式サイトではWindowsのバイナリファイルも置いてあるが、それで使えるのはGUI版ではなくコマンドライン版である(個人的にはGUIよりもコマンドラインのほうが使いやすいと思っているが…)。 また、メールソフト自体が手軽にPGP/GPGを使えない場合が多い。GPGで暗号化し

Willcomが新しいモバイルコミュニケーションマシンを開発

メモ。Intelのモバイル機器向けCPU、Atomを搭載したWindows Vistaマシンになるそうだ。2008年6月提供予定。 新しいモバイルコミュニケーションマシンの開発について OSやCPUはなんでも良いので、とにかくサクサク動くものが欲しい。Vistaってところが不安だが…。いくら機能が充実していてもモッサリ動作では紙と鉛筆にすら劣ると思う。