Category Archives: 技術

Permalink to single post

この世の中の”CMS”という言葉は・・・

“CMS”という言葉は、僕の認識と世間の認識とでは若干違うようである。

どうやら単に “サーバー側のコンテンツが更新できること” それ”のみ”だけでCMSと称しているようである。そこに管理システムや、データ形態・データ構造等の考察は一切含まれないようである。

そしてこの手の認識のズレは英語の苦手な日本特有の、”日本語化”によるものかと思ったんだけど、それもどうやら違うらしい。日本とほとんど取引していないバングラの人たちも同じようなニュアンスで”CMS”を使っていた。彼らはヨーロッパ圏の人たちとよく取引しているようだから、たぶんヨーロッパ圏も似たような認識なんだろう。

これはもはや僕のイメージしているものが”間違い”とすべきなのか、それとも一応、「 [僕の認識]⊃[世間の認識] 」なのでよしとするか。

Permalink to single post

GentooのGoogle Earthで文字化け (白豆腐化) してしまう問題

GentooでGoogle Earth 6をいれてみたが、文字列部分がすべて文字化けしてしまった。「□□□ □□□□□」みたいな感じ。

どうやらこれは、xorg.confのFilesセクションにあるフォント設定が適当だったのが原因らしい。

(参考URL: http://forums.gentoo.org/viewtopic-t-724364.html)

いままでは、あるマシンではxorg.confなしで動かしてたり、適当なパスが設定されてたり (どういういきさつで設定されてたか忘れたが・・・)。ということで存在するパスを指定したところ、ある程度正常に。

Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath     “/usr/share/fonts/corefonts/”
FontPath     “/usr/share/fonts/ja-ipafonts/”
FontPath     “/usr/share/fonts/vlgothic”
EndSection

しかし一部はまだ文字化けしたまま。。。

Permalink to single post

[gentoo] Firefox 11.0のコンパイルできなかった

emergeすると謎のinternal compiler error:

# emerge -av firefox

(・・・中略・・・)

x86_64-pc-linux-gnu-g++ -o SpdySession.o -c -I../../../dist/stl_wrappers -I../../../dist/system_wrappers -include /var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/config/gcc_hidden.h -DMOZILLA_INTERNAL_API -D_IMPL_NS_COM -DEXPORT_XPT_API -DEXPORT_XPTC_API -D_IMPL_NS_GFX -D_IMPL_NS_WIDGET -DIMPL_XREAPI -DIMPL_NS_NET -DIMPL_THEBES  -DSTATIC_EXPORTABLE_JS_API -DOSTYPE=\”Linux3.2\” -DOSARCH=Linux -DEXCLUDE_SKIA_DEPENDENCIES  -DOS_LINUX=1 -DOS_POSIX=1  -DIMPL_NS_NET -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/netwerk/protocol/http/../../base/src -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/xpcom/ds -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/content/base/src -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/content/events/src  -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/ipc/chromium/src -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/ipc/glue -I../../../ipc/ipdl/_ipdlheaders  -I/var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/netwerk/protocol/http -I. -I../../../dist/include -I../../../dist/include/nsprpub  -I/usr/include/nspr -I/usr/include/nss      -fPIC -fno-rtti -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-variadic-macros -Werror=return-type -pipe -march=core2 -mtune=core2 -mno-avx -fno-exceptions -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -g -Os -freorder-blocks  -fomit-frame-pointer   -DMOZILLA_CLIENT -include ../../../mozilla-config.h -MD -MF .deps/SpdySession.pp /var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/netwerk/protocol/http/SpdySession.cpp
In file included from ../../../dist/include/nsAutoPtr.h:48,
from ../../../dist/include/gfxPattern.h:46,
from ../../../dist/include/IPC/IPCMessageUtils.h:54,
from ../../../ipc/ipdl/_ipdlheaders/mozilla/net/PNecko.h:14,
from ../../../ipc/ipdl/_ipdlheaders/mozilla/net/PNeckoChild.h:9,
from ../../../dist/include/mozilla/net/NeckoChild.h:44,
from /var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/netwerk/protocol/http/nsHttp.h:60,
from ../../../dist/include/mozilla/net/HttpChannelParent.h:45,
from /var/tmp/portage/www-client/firefox-11.0/work/mozilla-release/netwerk/protocol/http/HttpChannelParent.cpp:41:
../../../dist/include/nsCOMPtr.h: In function ‘nsQueryInterface do_QueryInterface(nsISupports*)’:
../../../dist/include/nsCOMPtr.h:316: internal compiler error: in tree_nrv, at tree-nrv.c:143
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.gentoo.org/> for instructions.

いろいろと調べるとgccのバグのもよう。しかも修正済みなんですね。

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41153

以前なんかのバグでgcc 4.4に戻してからそのままにしてしまってた。gcc 4.5でコンパイルしてみる。

# gcc-config 4.5.3
* Switching native-compiler to x86_64-pc-linux-gnu-4.5.3 …
>>> Regenerating /etc/ld.so.cache…                                                                                [ ok ]

* If you intend to use the gcc from the new profile in an already
* running shell, please remember to do:

*   . /etc/profile

# . /etc/profile
# emerge -av firefox

(・・・ 中略 ・・・)

>>> Original instance of package unmerged safely.
* Updating desktop mime database …
* Updating icons cache …                                                                                        [ ok ]
>>> www-client/firefox-11.0 merged.

まあ出来ますわな。

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41153
Permalink to single post

セキュリティ&プログラミングキャンプ2011に参加しました

今年もセキュリティ&プログラミングキャンプ (2011)に、後半3日間だけですが特別チューターとして参加しました。

僕は2004年(第一回)のセキュリティコース参加者だったのですが、前年と同様プログラミングコースに関わることになりました。しかもなぜか「特別チューター」という肩書きに。僕はレベル的にはチューターと同じですよ。

ちなみにチューターのお仕事としては、Rubyの実行の可視化をしていたお二方のサポートを主にしていました。

今年のキャンプも例年どおりの奇人変人具合でした。毎年レベルが上がっているというのもあるかもしれませんが、なんか毎年幅が広がっている気もします。

BASICという以前からの王道から始まり突っ走る人、いろいろWebアプリとか作ってる人、実装よりも計算理論面からせめてる人もいる。今年はAndroidやってるところもあったと思います。毎年いろんな方がいるけど、それ幅が広くなっている気がします。まぁそもそもコンピュータの世界が広がっているっていう部分もあるんでしょうね。

あと今年の印象としては

  • 謎のGentooブーム
  • 謎のRedbullブーム

こんな感じです。とりあえず参加者の皆様のプレゼンも (笑える、興味深いの両方の意味で) おもしろかったし、いろんな人と今年もお話しすることができてとても楽しかったです。

個人的に悔やまれる点としては

  • 自分がじぇん厨なのでGentooブームにもっと乗っかれば良かった
    • 前半の2日間にいなかったのが災いしたか
  • スナガラボの売り込みをもっとしまくれば良かった
    • というか名刺作った量がそもそも少なすぎた

まぁこんな感じです。

そういうわけで、今後ともスナガラボ株式会社と須永をよろしくお願いします。

各種情報へのポインタ (自分のためにも今後追加します。。。)

http://d.hatena.ne.jp/nishiohirokazu/
Permalink to single post

会社設立しました

なんだかんだで便利そうなので、法人を設立してしまいました。

会社名は「スナガラボ株式会社」です。これから会社のサイトとかある程度つくります。はやめに体裁を整えねば。。。

このタイミングなのはルビィ会議とかの関係があるわけではなく、ただわたくしの誕生日であったからという理由だけでございます。

ということでこれからよろしくお願いします。

Permalink to single post

RubyKaigi2011で発表しましたよ

Rubyで使えるリアルタイムプロファイラって題目で発表しました。とはいえ実態はPythonのほうが(ry

何だかんだで言いたいことは言えたし、Pythonのところで狙いどおりウケてくれたので、よしといった感じでしょうか。

実際に使っている方もいらっしゃってそれはうれしかったです。

公開場所→sunagae.netのllprofページ

取り上げていただいたサイト

とかを自己満のためリストする。(順不同)

デモ動画

これだけみてもなかなか分かりませんが・・・

Permalink to single post

gnome3@gentooのキーボード設定がうまくでてくれない

キーボードリピートの部分の設定がなぜか表示されず。デフォルトではディレイが遅すぎて使い辛い。

仕方ないので直接編集しよう、とおもってgconf-editorつかってやってみてもうまくいかず。

最終的にgsettingsコマンドでやればいいこととが分かった。

gstetings set org.gnome.settings-daemon.peripherals.keyboard delay 120

gstetings set org.gnome.settings-daemon.peripherals.keyboard repeat-interval 25

Permalink to single post

軽量言語向けプロファイラ

とってもいまさらではありますが、研究で作っていたプロファイラの公開をしました。
MIT-Licenceです。

http://sunagae.net/software/llprof

リアルタイムに取れる+CCT(コールツリー)でとれる、しかもruby-profよりも速いっぽい、というやつです。

まだまだ使い物にはなりませんが。。。

Permalink to single post

並列実行の視覚化ツール

個人的なプログラム書いてるとき、並列実行の視覚化ツールがあったら便利だなぁと思って作ってしまった。

マルチスレッドとかで並列実行されるプログラムを実行させて、記録されるログからシーケンス図っぽいものを自動的に作ってくれます。

なんかそれなりにまとまったものができたので、たまにはちゃんと公開してみる。

まぁなんか似たようなソフトってあるんだろうなぁ。。

VizEXECのページ

・・・なんかこういう脇道にそれるのばっかりで、メインの作業がなかなか進まないんだよなぁ。

Permalink to single post

Monoを組み込み処理系として使う: 処理系サイズ

Monoを組み込んだプログラムをWindows向けに配布するときは一緒に配布してしまうのが多分楽。しかしその時にサイズがあまり大きすぎるとちょっと困る。

ということで、サイズ削減版のMonoを作るとどの程度のサイズになるかを調べてみた。

使ったのは本家で配布されているWindows版バイナリのMono 2.8.2。

とりあえずさっきのサンプルが動く最小構成と、Gtk#が動く範囲での最小構成で作ってみる。

結果:

  • ミニマム: 5.1 MB
  • Gtk#ミニマム:  46.4 MB
  • Gtk#ミニマムをzip: 17.4 MB

ミニマムはサンプルプログラム+mono-2.0.dll+mscorelib.dllだけなので、 (リビルドとかしない限り) 最小限構成だと思う。

Gtk#ミニマムのほうはなんかもう少し削れるかもしれない。ただし、まともなアプリ作ると参照が増えるかもしれないので、まぁこの程度なんでしょう。

zipすれば20MB切るし、初期配布サイズとしてはまぁOKかなぁという感じですかね。

Permalink to single post

Monoを組み込み処理系として使う

Monoの言語(C#、Boo、etc.)をスクリプティングとして使う場合とかに使える、C++の小さいサンプルを作ってみた。

スクリプティングとして使う場合は「C++→スクリプト」と「スクリプト→C++」の2方向の呼び出しができる必要がある。ということで最小限それができるサンプルを。

「C++→スクリプト」はMonoのAPI (mono_runtime_invokeとか) をつかってがんばる。「スクリプト→C++」はP/Invokeを使えばできるらしい。とりあえずやってみる。

試験環境はGentoo Linux、Mono 2.8.2です。monotest.cppがメインで、test.dllを呼び出している。test.dllはBoo言語でかかれている。ちなみにBoo言語はPythonライクなMonoの言語。まぁべつにC#でつくっても動くはず。。。

monotest.cpp:


#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/debug-helpers.h>

#include <string>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
using namespace std;


extern "C" {
extern void PrintFunc(int val);
}

void error(const string &msg = "")
{
	cerr << "Error:" << msg << endl;
	abort();
}

int main(int argc, char* argv[])
{
	// Export Check
	void *ThisModule = dlopen(NULL, RTLD_LAZY);
	cout << "Module Handle:" << ThisModule << endl;
	void *pFunc = dlsym(ThisModule, "PrintFunc");
	cout << "Function Handle:" << pFunc << endl;
	if(!pFunc)
		error("No symbol: PrintFunc");
	

	MonoDomain *domain;
	const char *file;
	int retval;
	
	if (argc < 2){
		fprintf (stderr, "Please provide an assembly to load\n");
		return 1;
	}
	file = argv [1];

	domain = mono_jit_init("monotest");

	MonoAssembly *assembly = mono_domain_assembly_open (domain, "test.dll");
	if (!assembly)
		error();

	
	PrintFunc(0);
	
	MonoImage *image = mono_assembly_get_image(assembly);
	MonoClass *klass = mono_class_from_name(image, "TestNamespace", "TestClass");
	MonoMethodDesc *desc = mono_method_desc_new(":TestStaticMethod(int)", false);
	MonoMethod *static_method = mono_method_desc_search_in_class (desc, klass);
	
	void *args[1];
	int val1 = 1234;
	args[0] = &val1;
	mono_runtime_invoke (static_method, NULL, args, NULL);

	mono_jit_cleanup (domain);
	return 0;
}

void PrintFunc(int val)
{
	cout << "In PrintFunc :" << val << endl;
}

test.boo:

namespace TestNamespace

import System.Runtime.InteropServices

[DllImport("__Internal", EntryPoint: "PrintFunc")]
def PrintFunc(val as int):
	pass

class TestClass:
	static def TestStaticMethod(val1 as int):
		print "In TestClass: ", val1
		PrintFunc(val1 * 2)
		return

コンパイル:

$ g++ -export-dynamic -g monotest.cpp -o monotest `pkg-config --cflags --libs mono-2`
$ booc test.boo

実行結果:

$ ./monotest test.dll
Module Handle:0x46d048e0
Function Handle:0x8048ff0
In PrintFunc :0
In TestClass:  1234
In PrintFunc :2468

P/Invokeはちょっと注意が必要。たぶんdlopenで自分自身を開いてやってるので、シンボルを参照できるようにする必要がある。具体的には、関数をextern “C”する必要があったり、コンパイル時に-export-dynamicをつける必要があったり。monotest.cppのmainの頭についているdlopenのテストコードはそれのチェック用。もしかしたらこれは外部ライブラリとかにしたほうがいいのかもね。

まぁとりあえずそれなりに簡単にMonoを組み込むことができそうということが分かった。

あとはWindowsでどうなるかだな。。。

Permalink to single post

gobby5 日本語化

以前、gobby5の日本語環境でのバグ修正(gobby numerical ID patch)をしたりしたけど、また最近いろいろいじったついでにgobbyの日本語化したよ。poファイル送ったら採用してもらえたみたいです。

ちなみにgobbyってのは共同作業でテキストを編集できるソフトです。

なんだかんだで日本語じゃないと使うのにハードルがあるようなので。。。

それにしてもGoogle Docsなんかも共同作業で編集できるみたいだけど、あんま使ってる人が(少なくともまわりには)いないのはなんだろう。そんなにニーズないのかな。

まぁ実際使えるかどうかはともかく、なんとなく面白いソフトです。

gobby4系はアンドゥとかできなかったりして不便だったけど、5系からはできるようになったので結構実用的かと。

参考: gobby – http://gobby.0x539.de/trac/

Permalink to single post

島めぐりマップつくってみた

旅行する時には必ずGPSロガー(Holux M-241)をもってって、なんとなく軌跡を記録していたりします。

いままでデータを適当にためてっただけでしたが、そろそろいくらかデータがたまって来たので、適当に可視化ツール作って、いままで巡った島をマップにしてみました。

ツールはPython + PIL(Python Imaging Library)でつくりました。PILは初めて使ったけどこれは便利ですね。

下図ができたマップ。(クリックして拡大)

青い線がGPSによる軌跡です。誤差があったり、一部補完してたりするので、完全に正確ではありません。途切れ途切れになっているところは、GPSの感度が悪かったり、GPSの電源を入れ忘れていたりでデータが取れなかったところ。かつ、まだ補完してないところ。結構多くて残念。

あと伊豆諸島とかは、GPS買う前にいったから軌跡がかけず。とても残念。

東京−大阪間に三本くらい軌跡があるのは、東海道線乗ったときと中央線乗ったときと、あとなんだろう。高速バスかな。福江島の右の奴は長崎本線、新潟の方も北陸本線。小笠原の右に走ってる線はグアムにいくときの飛行機ルート。

あー、日本の輪郭とかも書きたいけどフリーのデータ拾ってこないとなぁ。SVGとかで転がっているところ誰か知りませんかねぇ。いや自分でGPSもって日本一周すればいいのかな。

いやー、それにしてもまだまだ24島しか回ってないのかぁ。まだまだだなぁ・・・。

あ、あと「島図鑑なるものが・・・」で書いた原色 日本島図鑑をやはり買ってしまった。

Permalink to single post

xorg-server 1.7でpsb(poulsbo)ドライバを使う on Gentoo

T91MTに必要なpsbドライバは、現状ではxorg-server 1.7に対応していない。

コンパイル&インストールしてそのまま実行してみても以下のようなエラーを吐いて動かない。

/usr/bin/X: symbol lookup error: /usr/lib/xorg/modules/drivers/psb_drv.so: undefined symbol: LoaderRefSymLists

giving up.

とか

(EE) PSB(0): the stolenBase is:0x7f800000

(EE) PSB(0): screnIndex is:0;fbPhys is:0x7f800000; fbsize is:0x007bf000

xf86TokenToOptinfo: table is NULL

(EE) PSB(0): First SDVO output reported failure to sync or input is not trainded!!!

/usr/bin/X: symbol lookup error: /usr/lib/xorg/modules/drivers/psb_drv.so: undefined symbol: xf86LoaderReqSymLists

giving up.

とか。

なんか新しいバージョンになって削除されたシンボルを参照しているようで、それが原因で動かないっぽい。

そのへんの直し方の情報がArch Linux関連のページにあった(場所を失念・・・)ので、それを参考にパッチを作りました。ただ、作ったといっても内容はオリジナルではなく、参考にしたページに書いてあったやり方を実際にやってみたっていうレベルのものです。なのでsunagaeは偉くありません(笑)

sunaga-labの専用ページにアップしときます、使い方も適当に書いときましたので、使える方はどうぞ。気が向いたらオーバーレイ用のリポジトリを作ろうかな。

Permalink to single post

セキュリティ&プログラミングキャンプ2010

セキュリティ&プログラミングキャンプ2010に参加してきました。

いままでは

  • セキュリティキャンプ2004に参加
  • SPキャンプ2008にセキュリティコースチューターとして参加
  • SPキャンプキャラバン2008@sfcの運営サポート

という感じで関わってきました。

今年はssd研@東大に所属が移ったので、セキュリティではなくプログラミングコース/言語組のチューターとして参加しました。(ちなみにあんたダレよって方は>About)

チューターをやっての感想としては、やはり大変だったというのが一番でしょうか。やはり参加者の平均レベルはとても高いのですが、さらにその”高い”といってもいろいろな方向があって・・・

キャンプの後半ではそれぞれの参加者が各々の課題をやってもらいました。それぞれの課題には専属の講師orチューターがいたりするのですが、そこでのわたくしの役目としてはそうではなくて、専属の講師さんとかがいなくなったときに、そこにふらふらと押し寄せてサポートをするという感じでした。で、まぁ切り替わる度にわたくしの脳みそコンテキストスイッチが云々といったところでいろいろと苦労はしました。
まぁでもいろんな事ができたのでそれはそれで楽しかったです。

それ以外にも、突如としてHaskell&圏論を勉強してこうぜ的な事をtakuto_hさんとできたのはよかった。あとさらにいろいろと教えていただいたk.inabaさんにとても感謝。
昔にSFCで向井先生にちょっと教えていただきながら勉強したっきりで、放置プレーになっていた圏論への情熱が蘇りつつあります。。。
中途半端なのがとても気に入らないので、圏論はもうすこし泥沼にはまっていきたいと思います(笑)

とまぁ、ささやかながらキャンプの中でもそれなりに役割も果たせたし、とても自分でも勉強になった(圏論的な意味でもね)し、ということで、キャンプ無事終了。

とても疲れた。しばらくgdgd。。。

« 以前のエントリ 最近のエントリ »