読者です 読者をやめる 読者になる 読者になる

FIELD NOTES: 書を持って街へ出よう

合同会社フィールドワークス プログラマ兼代表のブログ

日付/時刻→文字列変換ライブラリ

日付/時刻のデータを整形した文字列に変換するライブラリを作成しました。前回の数値→文字列変換関数と合わせて,「書式指定付き文字列変換ライブラリ 0.2版」としてまとめました。ここで配布していますので,よろしければ使ってみてください。 書式指定文字…

曜日の計算

年・月・日で指定された日付の曜日と年初からの経過日を求める関数を作成した。年・月・日は,いづれも1はじまりの数値を与える。 wday_of_dateは,曜日に対応する数値(0:日曜日, 1:月曜日, ..., 6:土曜日)を返す。 yday_of_dateは,1月1日からの経過日(1月1…

pretty printer

今まで,デバッグprintf用にExtLibのStd.printを使ってきたが,フィールド名の情報がなくなってタグ番号の様な数字に化けてしまう。複雑なデータ構造になると直感的に理解できないので,ちょっと不便だなあと思っていたところに,d:id:KeisukeNakano:2008101…

UTF-8 ⇔ UTF-16 変換関数 その2

昨日作成したUTF-8⇔UTF-16変換関数が,いかにも効率が悪そうな作りだったので,チューニングしてみた。まあ,巨大な文字列を変換する予定はないので,実用的には大差ないと思うけど。 let explode_to_int s = let rec exp i l = if i < 0 then l else exp (i…

UTF-8 ⇔ UTF-16 変換関数 (OCaml)

UTF-8とUTF-16の文字列を相互変換する関数を作成した。 リスト処理を贅沢に使っているので,遅いかもしれない。 open ExtString (* UTF-8 → UTF-16BE(BOM付) 変換 *) let utf8_to_utf16be s = let rec loop = function | [] -> [] | ch0 :: rest when (ch0 l…

カスタム数値書式指定文字列による文字列整形プログラム

Microsoft Excelでは「ユーザー定義」,.Net Frameworkでは「カスタム数値書式指定文字列」と呼ばれる独特の記法がある。このカスタム数値書式指定文字列にしたがって,数値を文字列に変換するプログラムをOCamlで作成した。カスタム数値書式指定文字列自体…

OCamlでPython拡張モジュールを作る(その2)

昨日の続き。 はまり点3 デバッグのためにOCaml内でprintfしても値が出力されなかった。 原因は,標準出力をflushする処理がどこにもはいっていないためらしい。[Caml-list] Calling OCaml from C - nothing shown on stdoutに書いてあるとおり,手動でflus…

OCamlでPython拡張モジュールを作る

OCamlで作成したライブラリをPythonから利用できるように,拡張モジュール化した。その際に,いくつか苦労したので記録に残しておく。 なお開発環境は,Mac OS X 10.6.4 (Snow Leopard), Ocaml 3.12.0, Python 2.6.5 である。 一般的な作り方 mBの通り作業す…

オープンソースのバーコードライブラリ

バーコードを生成するオープンソースのライブラリにどんなものがあるのか,調べてみた。といってもたくさんありすぎるので,なにがしらの特徴のあるものだけをピックアップした。 pyBarcode http://packages.python.org/pyBarcode/ EAN, JAN, UPCなどメジャ…

メール自動返信システムの調査

メール自動返信システムを作る方法を調査した。 やりたいことは,以下のとおり。 gmailから定期的にメールを取得する。 メールのパターンに応じて,返信用文書を組み立てる。 返信メールを送信する。 また,返信用文書を組み立てる処理がある程度複雑になる…

OCamlでスタックトレースを出力する方法

OCamlで記述したプログラム内で例外が発生した場合,非常にあっさりしたメッセージを出力して停止する。OCamlでもJavaやLL言語のようにスタックトレースを出力できないものかとしらべてみた。 以下に方法を示す。 `-g'オプションを付けて,バイトコードプロ…

Samba+LDAP設定メモ

Samba LDAP連携の設定をしていて,いくつかハマったのでメモを残しておく。Mac OS X 10.5 (Leopard)にSambaとLDAPの設定を行うことで,poor man's Mac OS X Serverとして使用している。openldapはMac OSオリジナルのものを使用し,Sambaはmacportsで追加イン…

CamlPDFをFindlibで管理する

CamlPDFのビルドにはOCamlMakefileを使用しているが,make libinstallを実行してもライブラリとしてインストールされない。そこで,ライブラリとしてインストールできるようにmakefileを修正した。変更点は,一点。makefileにLIBINSTALL_FILESの宣言を追加し…

CamlPDFで実装されている機能について

概観 サイトにも簡潔に書かれていますが,CamlPDFはPDFファイルを編集するための比較ローレベルなライブラリです。したがってこのライブラリだけで,例えばPDF帳票を生成するアプリを作成することは不可能ではないにしろ非常に大変なことになると思います。 …

CamlPDFライブラリとは

概要 Coherent Graphics Ltdがオープンソースとして公開しているPDFライブラリです。 Flate圧縮のためにZLibを使っている意外はすべてOCamlで書かれています。 PDFファイルを読み書きするための比較的ローレベルな機能を提供しています。以前OCamlの勉強をし…