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

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

Asterisk 13で作るクラウドFAXシステム

Asterisk 13からはFAXを送受信するための機能が標準搭載されているのですが, FAXイメージをTIFFファイルレベルでやり取りする機能までしか提供されておらず, そのままでは実務には使えません。 そこで,AsteriskのFAX機能を補強するためのPythonスクリプト…

Evernoteで図入りのMarkdown文書を書いてMarkedでプレビューする方法(Mac OS X)

EvernoteにMarkdown記法でメモを書くのは便利なのですが, せっかくEvernoteを使っているのに図を手軽に扱えないのは残念なので,ひと工夫してみました。 使い方 以下が作成したPythonスクリプトです。 <EVERNOTE_USER_NAME>の部分は,Evernoteのアカウント名に置き換えてくださ</evernote_user_name>…

PDF帳票を作成するためのWEB APIを提供開始しました

クラウド上のシステムからPDF帳票を作成するための実験的なサービス Field Reports for Cloud を提供開始しました。 このサービスで提供するField Reports APIを利用すれば,Google App Engine (GAE), Heroku, Salesforce.com (SFDC) などのPaaS上に構築され…

Gmailで自動返信メールシステムを構築する方法

Gmail Labsで公開されている「返信定型文」と「フィルタ」機能を組み合わせて自動返信メールを実現することはできますが,いくつか制限があります。 自動返信メールの返信元アドレスに「+canned.response」が付く。 返信文にあいての名前などを動的に挿入す…

MacVimをコマンドラインから起動する方法

MacVimにはmvimコマンドが付属していて,ターミナルからMacVimを起動する事ができます。 香り屋版でもそのまま使えたので,便利に使っていました。 Lionになってから,MacVimが起動していない状態でmvimを実行すると,以下のようなエラーが出力されるように…

nginx+SCGI+web2pyの構成をお試し中

nginx+uWSGI+web2pyの構成で3ヶ月ぐらい運用していたのですが,あるトラブルがありuWSGIをSCGIに置き換えて様子を見ています。 「あるトラブル」とは? 運用しているサイトは帳票開発ツールのデモサイトなので,応答として動的に生成したPDFを返すページがい…

書類送付状生成デモの改造

先日作成した書類送付状生成デモを少し改造してみました。 書類送付状生成デモ 解説記事 改造点は以下のとおりです。 すべてをcontrollerで実装していたのを改め,controllerとviewに分離した。 viewを切り替えて,PDFとHTML両方の出力形式に対応できるよう…

書類送付状生成デモの作成

前回のはがき宛名面の作成デモに続いて,書類送付状を作成するデモを作成しました。 実用的にも使えると思いますので,よかったら使ってみてください。 書類送付状生成デモ テンプレートの作成 まずは,オフィスソフトを利用して,帳票のレイアウトをデザイ…

Google App Engine からPDF帳票を生成する

Google App Engine (GAE) から Field Reports for Cloud β版で提供しているWeb APIサービスを用いて,帳票を生成する方法を解説します。 今回は,「Hello World!」を表示するデモを作成します。 プログラムの作成 Webアプリケーションフレームワークとしてwe…

CentOSにnginx+web2pyをインストール

さくらVPS上にnginx+web2pyの構成でWEBサーバを設定する手順をまとめました。 CentOSであれば,概ね同様の手順でインストールできると思います。 前提として,web2pyのファイルは /var/www/web2py に置いているものとします。 nginxのインストール nginxの公…

はがきの宛名印刷用PDF作成サービスを公開します

弊社製品のPDF帳票開発ツール Field Reportsを使って, はがき宛名面の印刷用PDFを生成するサービスを作成しました。 当初は単に製品のデモとして作り始めたのですが, 意外と実用的なものができたので, Webサービスとして一般に公開したいと思います。 サ…

OCamlでWindows用DLLを作成する方法

同一のコードから複数のプラットフォーム用の共有ライブラリ(Unix系OSなら.so,Mac OS Xなら.dylib,Windowsなら*.DLL)を作りたい場合,どのプログラミング言語を選ぶべきでしょうか? まず思い浮かぶのがC/C++だと思いますが,もっと「モダン」なプログラ…

ブログ移転のお知らせ

2012年3月より,本ブログは下記URLへ引越します(Tumblrの独自ドメイン機能を利用しています)。http://blog.field-works.co.jp/今後ともどうぞよろしくおねがいいたします。 2012/11/17 はてなブログがMarkdown記法に対応しました。これを機会に,はてなダ…

Google Apps Script でメールをタイマー送信する方法

メールの送信を予約して,決まった日時に送りたいことがあります。そのようなことを実現するためのアプリケーションもあるようですが,常にPCの電源を入れておく必要があります。 一方,外部のASPサービス(「ステップメールサービス」など)も存在するよう…

IPAmj明朝フォントの研究 ― 実装編 ―

前回の調査結果を元に Field Reports 1.4 に以下の機能を盛り込みました。 サロゲートペア対応 従来は,PDFで定義済みのCMapである「UniJIS-UCS2-H」を使ってエンコーディングを行なっていましたが,これでは1文字=2バイトのコードまでしか対応できませんで…

Jimdoでソースコードを整形して表示するならPygmentsが便利

Webサイトにソースコードを整形して貼り付ける時の定番は,SyntaxHighlighterのようです。 ただ,SyntaxHighlighter付属のCSSファイルをサイトにアップロードする必要があり,Jimdoで使うのはちょっと面倒なので躊躇していました。先日,Pygmentsというソフ…

IPAmj明朝フォントの研究

独立行政法人情報処理推進機構(IPA)より「IPAmj明朝フォント」が公開され,6万字というインパクトもあり,各所で注目されているようです。弊社で開発している「PDF帳票開発ツール Field Reports」でもこのフォントが自由に使えるようになれば,利便性が高…

OCamlで作成した拡張モジュールでセグメンテーション違反発生

以前のブログでも書いたとおり,弊社ではOCamlを使ってLL言語用の拡張ライブラリを作成しています。 この構成でこれまでは特に問題なく稼動していたのですが,機能拡張していくうちに突然セグメンテーション違反が発生するようになってしまい困りました。 現…

現在契約できるプロバイダフリーのIP電話

(c) nakusa123|画像素材 PIXTA現在,050 plusのようなスマートフォンから利用できるIP電話サービスが開始され好評の様ですが,使用する端末やアプリが限定されてしまうのがちょっと不満に思えます。一方,各ISPがひかり電話を始めとするIP電話サービスを提…

VMware ESXi 5.0でVNC接続を利用する方法

最近,VMware ESXi を5.0に移行したところ,今まで使えていたVNCでの接続ができなくなってしまいました。VMWareサーバにログインしてログファイルを調べてみたところ,以下のようなメッセージを発見。 vmauthd.log:2011-09-05T14:47:33Z vmauthd[11156]: vth…

iCalとiPhoneをTODO込みで同期をとる方法

iCalとiPhoneを連携させるには Google カレンダーを媒介として同期を取る方法が定番ですが,残念なことに TODO(リマインダー)の同期が取れません。 GoTasksなど,iPhoneからGoogle の「ToDo リスト」を参照できるようにするAppは存在するようなのですが,i…

jarファイルとjniライブラリのインストール方法

(c) YsPhoto|写真素材 PIXTAJavaの外部ライブラリ(*.jar)をJavaの処理系が参照できるようにするためには,環境変数CLASSPATHに追加したり,コマンド実行時に -classpath オプションを追加するなどの方法がありますが,jarファイルの数が多くなってくるとい…

Windows用PHP拡張モジュールを最短でビルドする方法

現在,「LL言語用PDF帳票ツール Field Reports」をWindowsへ移植しているのですが,Windows環境でPHP拡張モジュールをビルドする方法として断片的な情報しか見つからなくて苦労しました。 試行錯誤してなんとかビルド手順が確立できたので,わかったことをま…

LL言語向けPDF帳票ツールField ReportsがJavaに対応しました

弊社製品LL言語向けPDF帳票ツール Field ReportsをJavaに対応させました。当初の構想としては,Java対応の手段としてOCaml-Javaを使ってみようかと思っていたのですが,今回お手軽にJNIを使ってJava用I/F (Java Bridge) を作成してみました。作成したJava Br…

オープンソースのExcel出力ライブラリ

Excelドキュメントと同様に,帳票出力の手段としてExcelを利用する方法も相変わらず人気があるようです。Excel帳票を使用する際にはいくつか気をつけなければいけない事項があると思いますが,社内システムなどで既にMS Officeがインストールしてあり,かつ…

CSVから帳票を生成するツールを作ってみました

弊社のLL言語用PDF帳票ツールField Reportsを使って,CSVファイルを元にPDF帳票を生成するツールを試作してみました。同様の処理はMS WordとExcelの「差し込み印刷」機能を使ってもできますが,このツールには以下の特長があります。 雛形の作成手段がWordに…

PDFで情報発信するときには添付ファイル機能を活用しましょう

企業・官公庁等が情報発信を行う際にPDFがよく利用されますが,掲載されているデータを抽出して自動処理することが難しいという弱点があります。今回の大震災においても,東京電力発表した放射線量測定データが初期にはPDFが形式だった事が批判を浴び,現在…

ビルドツールをOMakeからpyKookへ乗り換えた話

Field Reports 1.1を開発するにあたり,ビルドツールをOMakeからpyKookへ乗り換えました。 なぜOMakeをやめたのか? OMakeをやめた理由は以下のとおりですが,主に私がうまく使いこなせなかった事が原因です。 OMakeは素晴らしいツールであり,それ自体には…

オープンソースのPDFライブラリ(Perl編)

PerlのPDFライブラリは2つしか見つけられませんでしたが,両者ともレベルが高いと感じました。 PDFJは,PDFライブラリというよりはミニ組版ソフトという感じのツールですが,座標を指定して表示オブジェクトを配置することもできるようです。 PDF::API2 主な…

Field Reportsの使い方:連続帳票の作成

通常「連続帳票」と言えばラインプリンタで使用する長い用紙のことを言いますが,ここでは,複数ページで構成される明細書状の帳票を連続帳票と呼んでいます。例えば,クレジットカードの利用明細,銀行のステートメントのような帳票です。 プログラムの作成…

Field Reportsの使い方:複合帳票

今回は,表紙付きの請求書を作成します。 復数のテンプレートを組み合わせて作る帳票を複合帳票と呼んでいます。 テンプレートの作成 表紙のテンプレートを作成します。 前回と同様に,OpenOffice.orgで下絵を作成し,Acrobatでフィールドを配置しました。請…

Field Reportsの使い方:単票(2) テーブルを含む帳票

今回は,テーブル形式のデータを持つ帳票(見積書)を作成します。 下絵の作成 前回同様,OpenOffice.org の Calc で帳票のデザインを作成しました。 これを,PDF形式にエクスポートします。 フィールドの配置 明細項目の部分が2次元のテーブルになっていま…

Field Reportsの使い方:単票(1) Hello World

今回から,Field Reports の使い方を説明させて頂きたいと思います。まずは単純な1ページ構成の帳票を作成します。 開発言語は,Python 2.7 を使用します。 テンプレートの準備 最初にテンプレートの下絵として使用するPDFを作成します。 PDFを作成できれば…

オープンソースのPDFライブラリ(Ruby編)

Python編に続いて,Rubyから利用できるオープンソースのPDF出力ライブラリをできるだけ集めてみました。 PDFに対して分割・結合などの加工を行うためのライブラリは含めていません。 記述に漏れや誤りがあれば訂正しますので,ご指摘ください。ざっと見た限…

オープンソースのPDFライブラリ(Python編)

Pythonから利用できるオープンソースのPDF出力ライブラリを集めてみました。 PDFに対して分割・結合などの加工を行うライブラリは含めていません。 他にあれば追加しますので教えてください。また,記述に誤りがあれば訂正しますので,ご指摘ください。 Repo…

Jimdo で会社サイトを構築してみた感想

弊社の会社サイトは,Jimdo というWebホスティングサービスを利用して作成しています。 サイトの準備も予定の8割ぐらい進んで形になってきましたので,この辺りでJimdo を利用して会社サイトを作成するメリット/デメリットを少し振り返ってみたいと思いま…

C言語でOCamlデータを生成する方法のまとめ

ユーザーズマニュアルの“Interfacing C with Objective Caml”に必要なことは全部書いてあるのですが,理解するのにちょっと苦労したので,自分なりの理解をまとめておきます。 プログラミングする際に最低限必要な概念をまとめただけなので,詳細は端折って…

Field Reportsの特徴 (5) テンプレートエンジンとの対比

Webシステム開発において,Ruby on Rails や Django などのWebアプリケーションフレームワークや Smarty, Cheetah, Mako, Jinja, Tenjin などのテンプレートエンジンを使用することが一般的になりました。CGIの時代と比べれば,ずいぶん生産性が向上したので…

OCamlでPython/Ruby拡張モジュールを作るときの注意点

Field Reports の拡張モジュールを作成する際に,メモリ管理やエラー処理といった通常サンプルプログラム等で説明されていような所で色々苦労しました。 注意点を記録しておきます。 メモリ管理 OCamlのGCと折り合いを付けるには,以下3点のルールを必ず守…

Ruby1.8/1.9両対応のC拡張モジュールを作る方法

Python用に作成した拡張モジュールをRubyに移植する必要があり,Ruby拡張モジュールの作成方法を調べました。以下の仕様を満たすgemパッケージを作成することが目的になります。 Ruby1.8とRuby1.9に両対応したC拡張モジュールを作成する。 Foo::Barのように…

Field Reportsの特徴 (4) テンプレート方式の帳票ツール

帳票ツールの分類 世の中には色々な方式の帳票ツールがあり,その処理方式も様々です。Field Reportsでは,あらかじめ準備しておいたテンプレートにテキストや画像を流しこむ方式を採用しています。 そのような方式にした理由を説明するために,まず既存の帳…

Field Reportsの性能測定

Field ReportsがPDFを生成する速度を測定してみました。 測定環境 PC DELL PowerEdge T100 CPU Core 2 Quad Q8400 2.66GHz Memory 4GB HDD SATA 160GB OS Cent OS 5.5 測定方法 Pythonで以下のようなスクリプトを作成してコマンドラインから実行しました。 …

Field Reportsの特徴 (3) ―「LL言語向け帳票ツール」とは ―

JAVAで構築した帳票ツールをLL言語から利用する場合にはありがちなことですが,以下のような手順を踏まなければいけないようなツールにはしたくありませんでした。 DBから取得したデータを元にXMLファイル(もしくはCSVファイル)を作成する。 帳票ツールを…

Field Reportsの特徴 (2)

前回の続きです。 OCamlで帳票ツールを作ってみてどうだったのか? OCamlの生産性の話や構文の話は既にあちこちで語られていますので,「LL言語の拡張ライブラリをOCamlで記述する」という特殊な用途で使用した中で感じたことを書いてみたいと思います。項目…

Field Reportsの特徴 (1)

OCaml関係で興味を持って頂いている方が多いようなので,まずOCamlで開発を行った理由・効果などについて書いておきたいと思います。 なぜOCamlを使って帳票ツールを作ろうと思ったのか? 帳票ツールを開発する言語を選ぶにあたって,次のようなことを考えま…

LL言語向けPDF帳票ツール Field Reports β版をリリースしました

かねてから開発していた帳票ツールが形になってきましたので,β版という形で本日リリースしました。 製品名は,Field Reports といいます。合同会社フィールドワークスWebサイトからダウンロードできます。Linux版とMac OS X版があります。 対応済みのLL言語…

Cryptokitを組み込んだプログラムが遅くなった場合の対処方法

今まで作ってきたプログラムに暗号ライブラリCryptokitを組み込んだら,プログラムの動作が急に遅くなってしまいました。どうやら,乱数を生成している箇所で数秒〜数十秒の待ちが発生している模様です。問題が発生した環境は,VMWare Fusion上で稼動してい…

LinuxとMac OS XでMACアドレスと取得する方法

実行マシンのMACアドレスを取得する必要があってやり方を探したのですが,意外と探すのに時間がかかりました。結果をここにまとめておきます。 やりたいこと 実行マシンが持つネットワークカードの名称とMACアドレスを列挙したい。 LinuxとMac OS Xの両方で…

激安IP電話機購入

某オークションで投げ売りされているIP電話機を購入した。 1台300円!! 型番は,IPWave P104SPWとなっている。 のぞみ電話というサービスで使われている端末のようだ。 D-Link DPH-140SのOEMと思われる。 操作パネル・マニュアル・WEB管理画面などは日本語…

TeXで使用しているハイフネーションアルゴリズムについて

TeXで欧文文書を成形する際に必要に応じて単語のハイフネーション処理を行なっている。TeXの解説書などによると,F. M. Liangさんの考案したパターンマッチングによりハイフンを入れる箇所を求める方式を使っているらしい。 現在作成している帳票ソフトでハ…