エンジニアなプログラマ

プログラミング(特にvala言語関連)の話題を取り上げていきます。

現在、新しいクラス図描画ソフトを開発中! http://gridraw.com/

.poファイルからメッセージIDを抜き出して文字数をカウントする方法

翻訳時に文字数を見積もる必要があったため作成した。 .rstから抽出した.poファイルを対象としているため、一部のReST構文の除去も含んでいる。 find . -name '*.po' | while read line; do msgattrib --untranslated --no-wrap $line; done | grep 'msgid \…

Gitリポジトリ保管サービスを移行する方法

codebreak;サービス終了に伴い、リポジトリを移行する必要に迫られた。 そこで、gitリポジトリを移行する方法をまとめておく。 参考リンク Duplicating a repository - User Documentation stackoverflow.com tanacasino.hatenablog.com Git - git-clone Doc…

Freeeが出力する全銀フォーマットをジャパンネット銀行が受け付けられる全銀フォーマットへ変換

Freeeが出力する全銀フォーマットはジャパンネット銀行のWeb総振では直接受け付けてくれない。 どちらが悪いのかは分からないが…。 これでは困ってしまうので、とりあえず、Freeeが出力する全銀フォーマットを、 ジャパンネット銀行の全銀フォーマットに適合…

MinGW+MSYSインストール メモ

MinGWとMSYSをインストールするためのメモ。 ダウンロード http://sourceforge.net/projects/mingw/files/latest/download?source=files インストールパッケージの選択 とりあえずgccでC/C++ソースのコンパイル・実行程度であれば、 mingw32-base mingw32-gc…

interfaceの順序

概要 少なくとも現時点(ver.0.24)では、クラスに設定するinterfaceの順序を気にする必要がある。 ソースコードと実行結果 まず、問題のソースコードと、 その実行結果を見てみよう。 interface IFirst {} interface ISecond : IFirst { public abstract int …

internal-vapiオプションのバグ?

目的 以前の記事(静的ライブラリ内のprivateクラスへアクセスする - エンジニアなプログラマ)で、 --internal-vapiオプションについて記述した。 このオプションに関してvalacのバグと思われる動作があったので、 その詳細と回避策を記録しておく。 なお、bu…

静的ライブラリ内のprivateクラスへアクセスする

目的 複数のvalaソースに分割されたプログラムをmakeする際、 静的ライブラリを生成してリンクすることはよく行われる。 この時、静的ライブラリ内で使用しているprivateなクラスを、 外部から使用する方法を検討する。 結論 valacのオプション-Hと--interna…

GLib.Test.add_func()でデリゲートを生成できないとき

目的 テストでGLib.Testを使用した際、add_func()の引数に関して次のようなコンパイルエラーが発生した。 Cannot create delegate without target for instance method or closure この解決方法を検討する。 現象 例えば次のようなソース。 private class Un…

automakeにおけるVALAFLAGSの制限

valacは出力.cファイルの名前を変更することができない。 その影響で、automakeでは、 同じソースを複数のターゲット(PROGRAMSやLIBRARIES)で 使用することができなくなっている。 なぜなら、automakeのvala言語対応においては、 .valaを.cにリネームしたタ…

Vimの一括置換時に '継続' 表示で処理を止めない方法

Vim

目的 多くの(正確な数は不明)ファイルを対象に文字列の一括置換をする。 :args **/*.vala :argdo %s/foo/bar/g すると途中で '継続' と表示され、処理が一時停止。 Space、Enter、PageDown等を押下し、逐次処理を進めなければならなくなる。 処理を一時停…

Valadocのインストール方法

Valadocとは Valadocはvalaソースコードに記述されたコメントから、ドキュメント生成するソフトウェア。 公式サイト https://wiki.gnome.org/Projects/Valadoc 前提 Ubuntu 12.04 LTS valac 0.22.1 手順 ソースコードを入手する。 git clone git://git.gnome…

gee-views公開

目的 GDBではGeeのコンテナの要素を直接表示できない。 さらに、データ構造もライブラリで隠蔽されているため、 無理やり(メモリを)覗き見するのも難しい。 そこで、Geeのライブラリ関数を使用して、 Geeコンテナの要素をGDBで表示できるようにするマクロ…

Pyclewnのインストール

前提条件 Ubuntu 12.04 LTS Python 2.7.3 Vim 7.3 PythonとVimはapt-getしてきたもの。 Pyclewnの取得 公式ページからダウンロードする。 http://pyclewn.sourceforge.net/index.html インストール tar xzvf pyclewn-1.11.py2.tar.gz cd pyclewn-1.11.py2 su…

GLibのエラーメッセージ出力時にabortする方法

目的 デバッグ中にGLibがエラーメッセージを出力することがある。 そのメッセージが致命的(CRITICAL)である場合は、十中八九アプリケーションにバグがある。 例えば、このようなメッセージだ。 GLib-GObject-CRITICAL **: g_object_unref: assertion `object…

Vala言語の特徴 (2)

前回に引き続き、vala言語の特徴を紹介する。 なお、公式ページはこちら。 https://wiki.gnome.org/Projects/Vala ネイティブなバイナリを生成できる valaのソースコードから、最終的にはネイティブなバイナリコードを生成できる。 PerlやRubyのようなインタ…

Vala言語の特徴 (1)

vala言語。 これは数年前に開発された新しい言語である。 日本での知名度はまだ高くないようだ。 そこで、今回はvala言語の特徴を紹介してみよう。 なお、公式ページはこちら。 https://wiki.gnome.org/Projects/Vala 文法はC#ライク vala言語の文法はC#とほ…