2007-01-01から1年間の記事一覧

文字列テーブルデータの出力

前回までで取り出したラベルと文字列データのタプルおよび文字列データのオフセット辞書の情報をまとめて バイナリデータを出力します。コメントによる擬似コードは以下のようになります。

入力データの整理

csv を読み込んで作成した入力データを整理して、出力に必要なデータを作成します。 入力データを for でまわし、文字列データの重複チェック&オフセットの計算、 およびラベルの重複エラーチェックを行おうと思ったのですが、割と複雑になってしまうので …

ちょっと修正

id:bonlife さんより助言を頂いたのでスクリプトをちょこっと修正してみました。

csvから入力データ作成

昨日のコメントによる擬似コードを実際のスクリプトで実装したものが以下になります。

csvの読み込み

まず CSV を読み込んで入力データを整形する部分を作ります。プログラムは Python を使います。 Python には CSV を扱うモジュールがあるのでこれを利用しようと思いますが、 初めてなので動作をみてみます。

文字列データの変換

文字列データを元データからプログラム中で読み込んで使用するバイナリデータに変換するプログラムを考えます。 この変換処理への入力は、ラベルと文字列データの組です。この入力の表現は抽象的なもので、具体的な元データはスプレッドシートです。 スプレ…

文字列テーブルのデータ構造

文字列テーブルから文字列を取り出すときには対になるラベルを用います。 C++ の場合には enum を使って実現するのが効率が良いと思われます。 ラベル 日本語 英語 STR_HELLO こんにちは。 Hello. STR_BYE さようなら。 Good bye. このテーブルから enum { S…

PythonでShift-JISの文字列のサイズを求める

StringIO モジュールを使います。 #coding:shift-jis from StringIO import StringIO f=StringIO() f.write("日本語で Hello.") print f.tell() 15(07/12/20) str と unicode を混同していました。 こんなことしなくても len("日本語") は shift_jis で 6, u…

文字列データの分離

コード中に文字列を直接埋め込まず一箇所にまとめて管理するというのは 国際化しやすくするというのが一般的に主な理由だったと思いますが、 それとは別に出来上がる実行ファイルのサイズを小さくしたいという理由で 文字列テーブルデータを作ろうかと思いま…

はてなスター

http://masafumi.cocolog-nifty.com/masafumis_diary/2007/07/post_1bd7.html 今日これを見てなんのことだろうって思ってたら、自分でやってしまいました。 自画自賛させるワナじゃないですか。

再利用性

再利用性が高いってのは凝集度とか結合度とかそんな話以前に、 「あれ、この関数前も作ったはずだけどどこで定義してたっけ…」 とかいうのをなくさないとダメなんだなぁと、ちょくちょく思いました。

IronPython

Python もそこそこに IronPython に手を出そうとしてみる。 Python 本体よりも、 .Net Framework に慣れるのが重要そう。 逆に、コレを通じて .Net Framework の勉強になるのかも。

Python と Twitter のれんしゅう

色々の練習も兼ねて、 Python で、 Twitter の public timeline から 名前を拾ってきて表示するプログラムを作成しました。 from xml.etree import ElementTree from urllib import urlopen e = ElementTree.ElementTree(file=urlopen("http://twitter.com/s…

setter と getter

カプセル化、カプセル化と考えていると、メンバ変数について無闇に取得させないほうが良いだろうかと そんな風に思って setter は用意したのに getter を作らなかったりしていた時期がありました。 あるクラスのクライアントが何か値をセットするときにはそ…

Twitter から…

Python を使って Twitter から欲しい情報だけ取ってくるようなことができんかなーと いろいろ調べてたら python による twitter API のラッパーがあるそうで、 試してみようかと思ったら simplejson なるものが必要といわれ、 じゃあ simplejson をインスト…

Lua に手を出してみる

いざというときのために Lua を試してみました。バージョンは 5.1。以下のスクリプトを C++ から呼び出すテストをしてみました。 f = function () print("hello") end C++ 側のプログラムは以下のような感じ int _tmain(int argc, _TCHAR* argv[]) { // LUA …

python で線とか簡単に引けたらアニメーションデータを視覚化するときに 楽かもしれんなぁと思ってたら、 visual なるモジュールが存在し、 さらに graph というまんまグラフを描くためのものまでありました。 ひゃーこれはゆかい。 0.374146 0.483459 -0.53…

goto が危ないということが!「言葉」ではなく「心」で理解できた!

結論から言えば、変更が発生したときに処理の流れをつかみにくいのが良くありません。 for ( int index = 0; index < count; ++index ) { // .. 何かしらの処理 if ( condition[index] ) { goto NEXT; } // .. 何かしらの処理 NEXT: // .. 結果の処理 } さて…

もしもの時の…

今日ちょろっと書いていたコードのこと const size_t objCount = objArray.size(); for ( size_t objIndex = 0; objIndex < objCount; ++objCount ){ // objArray[objIndex] を順に処理 } for のカウンタのインクリメント部分が間違っています。 しかし objC…

reinterpret_cast

C++ の思想としてキャストはなるべく無いほうが良い、というのがあって、 作った人の考えには従うようにした方が良いのだろうなという考えとともに reinterpret_cast も使わない方が良いのだろうか。と悩んできました。 そもそも reinterpret_cast の何がま…

C++ スタイルのキャスト

C++ のキャストというと static_cast, dynamic_cast, const_cast, reinterpret_cast の 4 種類があります。 「 C++ の設計と進化(isbn:4797328541)」などを読むと分かるように C++ では キャストは極力使わないようにしたほうが良いという考えがあるようです…

ツールを作って、マニュアルらしきものを作る必要があったのですが、作業はほんの数ステップのものなので 流れをムービーにしてみようと思って検索して見たら見つけました。検索キーワード 操作 ムービーhttp://www.ringolab.com/note/daiya/archives/002531…

ドラッグアンドドロップされたファイル名を取り出して、これを C の文字列にするために作った関数が 昨日の時点ではこうでした。 System::Void ConvertToSjisFromUnicode(std::string & sjisString, String ^ unicodeString) { array<unsigned char> ^ charArray = System::</unsigned>…

今日のお仕事

先々使うことになるであろうツールを VC++/CLI で作成してました。 まともに使うのは初めてですが、すごい、なんかプログラミングを しているという感じがしませんでした。 けどあっという間に GUI 部分は出来上がりました。それよりも Win32 で作ってあるラ…

見切り発車

とりあえずはじめてみました。 プログラムのこととか書こうと思っています。