2009/05/31

konversation 1.2-alpha2

http://konversation.kde.org/
http://websvn.kde.org/trunk/extragear/network/konversation/

私のお気に入りIRCクライアントである Konversation の KDE4 版が少し前についにリリースされた。これまでは KDE 3.5 互換レイヤのものを不承不承使っていたのだが、Konsole が動かなくて泣きそうだった。それもしっかりと修正されている。

アルファ版なので「目立つところ」にはバグがない、という程度だ。よって安定してから使いたい人は少し待った方が良いかもしれない(俺はSVN版を追いかけている)。だが、マルチバイトの環境でも既に実用の域であることは付記しておく。

# argonel お疲れ様っす(`ー´)ゞ

2009/05/27

Final Fantasy on virtual console

http://www.nintendo.co.jp/wii/vc/vc_ff/index.html

昨日 Wii のバーチャルコンソールで配信開始されたので早速DL。しかしピスコディーモンたらいう中ボスっぽいのにやられて心が折れました(ぶ) ああ、そんなのもいたなぁ、とw

そんななつかしゲームがいっぱいバーチャルコンソールにはあるので Wii は非常に宜しい。少し前にスペースハリアーというゲームが配信されたのだが、そのときは俺より世代が少し上の連中が大漁に釣れていたようである。

2009/05/26

[memo] 3 notations of [lat|long]itude

http://en.wikipedia.org/wiki/Longitude

Each degree of longitude is sub-divided into 60 minutes, each of which divided into 60 seconds. A longitude is thus specified in sexagesimal notation as 23° 27′ 30" E. For higher precision, the seconds are specified with a decimal fraction. An alternative representation uses degrees and minutes, where parts of a minute are expressed in decimal notation with a fraction, thus: 23° 27.500′ E. Degrees may also be expressed as a decimal fraction: 23.45833° E. For calculations, the angular measure may be converted to radians, so longitude may also be expressed in this manner as a signed fraction of π (pi), or an unsigned fraction of 2π.

----

ジオコーディングしているとはじめは緯度経度の記法が3つあるのに戸惑ったりするが、基本的には「度・分・秒」や「度・分」の表記ではなくて、「度」の値のみを小数点付きで表す表記(上記で言えば 23.45833°E)を使うようだ。データとして扱いやすいというのがその理由だろう。俺もこの3つのうちどれを採用するかといわれたら、表示上の理由がない限りはこれを選ぶ。strtod すればdoubleにできるし、ね。

分と秒は60進法なので、他の記法からこの記法への変換も簡単だ。分、秒をそれぞれ60及び3600で割って度の値に足せばよい。

2009/05/25

undefined reference(3)

もうこのネタやめにしたいんだけど、一応メモしておく。なんでクラス名忘れるかね。これはひどいとしか言いようがない。原因がわかるまでにかかった時間は2分くらい。

---- test.h ----
#ifndef __TEST_H__
#define __TEST_H__

class A {
public:
static void hoge();
};

#endif // end of __TEST_H__

---- test.cpp ----

#include "test.h"

void hoge() {
return;
}

---- main.cpp ----

#include "test.h"

int main(int argc, char* argv[])
{
A::hoge();
return 0;
}

以下の実行結果は最早おなじみである。

$ g++ main.cpp test.cpp
/tmp/ccSUS3Oq.o: In function `main':
main.cpp:(.text+0x12): undefined reference to `A::hoge()'
collect2: ld はステータス 1 で終了しました

2009/05/21

undefined reference(2)

前のエントリで書き忘れていたので追記しておく。メソッドの実装忘れも俺的にはよくある。たとえば以下のようなコードである。宣言して満足しちゃった、的なアレである。

--- test.cpp ---

#include <iostream>

class A {

public:
// default constructor.
// not implemented.
A();

void helloworld()
{
std::cout << "Hello World!" << std::endl;
}
};

int main(int argc, char *argv[])
{
A a;
a.helloworld();
}

上記をコンパイルすると、下記のようになる。実装がないので、リンカから見えない。以下の結果は当然の帰結である。

$ g++ test.cpp
/tmp/ccIVHTVA.o: In function `main':
a.cpp:(.text+0x74): undefined reference to `A::A()'
collect2: ld はステータス 1 で終了しました

2009/05/20

C++ namespace -> undefined reference to 'main'

C++ の namespace は重要なキーワードであるが、うっかり main 関数のようなグローバルな関数をそれで囲んでしまうと大変なことになる。マングリングによってラベルが変化し、自分が意図した通りにリンカから見えなくなるからである。

namespace はスコープを変えるんだというごく当たり前のことがことがわかっていればこんなことは多分普通やらないんだと思います。多分。ただ、そういう理屈もわかっていない初心者とか、以下のような多段 namespace のマクロを全ファイルに適用するのが癖になっている人とかは要注意である。

--- test.h ---

#ifndef __TEST_H__

#define __MUMUMU_NAMESPACE_NAME__ mumumu
#define __AHO_NAMESPACE_NAME__ aho

//
// namespace macro
//
#define __HOGE_NAMESPACE_START__ \
namespace __MUMUMU_NAMESPACE_NAME__ { \
namespace __AHO_NAMESPACE_NAME__ {
#define __HOGE_NAMESPACE_END__ } }

#endif // end of __TEST_H__

--- test.cpp ---

#include "test.h"

__HOGE_NAMESPACE_START__

int main(int argc, char *argv[]) {
return 0;
}

__HOGE_NAMESPACE_END__

上記の test.cpp をコンパイルすると、以下のようになる。

$ g++ test.cpp
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference
to `main'
collect2: ld はステータス 1 で終了しました

test.cpp を コンパイルし、main の text セクションのみをダンプすると以下のようになる。namespace の情報がラベルに付加されていることがわかる。

$ g++ -c test.cpp
$ objdump -x test.o | grep main
00000000 g F .text 0000000a _ZN6mumumu3aho4mainEiPPc

2009/05/16

PEAR_PackageProjector 0.2.0

http://openpear.org/repository/PEAR_PackageProjector/trunk/release

先程のエントリの patch を取り込み、それに伴う細かい変更を行った 0.2.0 を置いておきました。変更点は要するに PEAR 1.8.0 以降に対応しましたよ、ということです。

0.2.0 以降は、PEAR の requirement は 1.8.0 になります。

#あとは sakamoto さんにリリースしてもらえばいいんだな。

----

[0.2.0]
- fixed bug getcwd() routine could not get current directory.
- followed PEAR 1.8.0 API changes.
-- PEAR_PackageFileManager2::exportCompatiblePackageFile1 was deleted.
- replaced Dependency PEAR_PackageFileManager with PEAR_PackageFileManager2.

[ Update 20th May 2009 22:24 JST by m ]

正式にリリースされました。id:magiwo さんありがとう!

[PATCH] PEAR_PackageProjector does not work with PEAR 1.8.0 or higher

http://www.mumumu.org/~mumumu/tmp/pear_packageprojector_over1_8_0.patch

現在は openpear で公開されている PEAR_PackageProjector 0.1.3 は、PEAR 1.8.0 以降では動かない。PEAR Package バージョン1 向けのメソッドが削除されたためなのだが、作者でありメンテナでもある sakamoto さんと直で連絡をとる方法が openpear 上にもないようなので、この日記を書いた時点での最新のtrunk に対する patch を晒しておく。ダウンロードは上記リンクからどうぞ。


diff -ur /home/mumumu/ppp/src/PEAR/PackageProjector/Derictory.php /usr/local/php5/lib/php/PEAR/PackageProjector/Derictory.php
--- /home/mumumu/ppp/src/PEAR/PackageProjector/Derictory.php 2009-05-16 05:46:37.000000000 +0900
+++ /usr/local/php5/lib/php/PEAR/PackageProjector/Derictory.php 2009-05-16 06:04:22.000000000 +0900
@@ -307,7 +307,7 @@
if (self::isAbsolutePath($path)) {
return $path;
}
- $tmp = (OS_WINDOWS) ? getcwd() :$_ENV['PWD'];
+ $tmp = (OS_WINDOWS) ? getcwd() : getenv('PWD');
return $tmp .DIRECTORY_SEPARATOR.$path;
}

diff -ur /home/mumumu/ppp/src/PEAR/PackageProjector/Package.php /usr/local/php5/lib/php/PEAR/PackageProjector/Package.php
--- /home/mumumu/ppp/src/PEAR/PackageProjector/Package.php 2009-05-16 05:46:37.000000000 +0900
+++ /usr/local/php5/lib/php/PEAR/PackageProjector/Package.php 2009-05-16 06:08:01.000000000 +0900
@@ -44,6 +44,7 @@
$this->pkg = new PEAR_PackageFileManager2();
$this->options = array();
$this->options['filelistgenerator'] = 'file';
+ $this->options['packagefile'] = 'package2.xml';
$this->options['simpleoutput'] = true;
$this->postInstall = null;
$this->Installgroups = array();
@@ -155,9 +156,7 @@
$this->pkg->addReplacement($installer, 'pear-config', '@bin_dir@', 'bin_dir');
$this->pkg->addReplacement($installer, 'pear-config', '@php_dir@', 'php_dir');
}
- //
- $this->pkg->exportCompatiblePackageFile1();
- //$this->pkg->addRelease();
+ $this->pkg->addRelease();

$this->pkg->generateContents();
$result = $this->pkg->writePackageFile();



[ Update May 17th 2:27 JST by m ]

この patch を取り込んで openpear に新しいバージョンを置いておきました

math

数学が苦手だったので、学生時代の知識を引っ張り出そうとしても急には引っ張り出せないので困る。けど解決できないわけじゃない(一行独白

2009/05/14

one-seg TV with AM/FM Radio

http://www.sony.jp/oneseg-radio/products/XDV-G200/

自宅のテレビが壊れてしまった。音が出ない上、電源を入れても15分もすると電源が落ちるという体たらく。15年近く使っていたのでしょうがないとはいえ、今年は本当にモノが壊れまくりである(´ー`; )

どうせなら代替はデジタルでしょ。と思いつつ、基本的に相方の家にデジタルテレビがあるんで繋ぎ的なものでいい。部屋の中でも、外でもある程度視聴できたらいいよね、という考慮からワンセグ機を購入した。安いモノもいろいろ出ていたのだが、安かろう悪かろうなものもかなり存在するようなので、評判がよいもの、かつラジオも聴けるもの、を購入したのが上記である。

----

2型というちっこさながら、感度・画質ともに割と良い。だが、室内のどこでも視聴できるわけではないのはワンセグだから割り切らなければならないだろう。室内で完全な視聴環境を得たければおとなしくフルセグで見るべきである。俺の場合は窓の側のテーブルに置いてみるようにしている。

ちなみに、室外では中央線や山手線で視聴してみたが問題ない範囲である。

dead download link

http://groups.google.com/group/smarty-discussion/browse_thread/thread/a4f0f13f56d9538d

XX がリリースされたよ! とアナウンスするのはいいんだけど、ダウンロードのリンクが404とかエラーとかだと物凄く萎えるす。メンテナは自らダウンロードとリグレッションテストくらいはしましょうね。自戒を込めて。

----

お陰で一瞬だけ smarty-discussion group を購読するハメになった上、dup post までしてしまった件。google group って Web にすぐ投稿が反映されないとはいえ、俺ってスーパーお馬鹿だよね。ざっと見たら意外に流量が多くてビックリした。

2009/05/12

The Immortal

http://www.nicovideo.jp/mylist/7074638

俺も相方もクソゲーの類は大好きなのだけれども、この「The Immortal」はかなりひどくて糞ワロタ。「呪いの館」以来のヒットである。実況もいい味出しているのでお暇な方はどうぞ(2行独白)

2009/05/08

POSS Japanese Edition will be published on June 2009

http://producingoss.com/ja/producingoss.jp.foreword.html

やっと最後の原稿を脱稿した。上記がそれである。

俺と高木さんが全文の翻訳を手掛けた Producing Open Source Software(邦題:オープンソースソフトウェアの育て方)は、来月中に日本語版が出版される予定となった。ボランタリーで翻訳をはじめたときはまさか出版されるなんて思っても見なかったわけだが、ここまで来れたことを今は素直に喜びたい。これで今年の目標の一つは達成できることになる。

上記のリンクを見ても分かる通り、この本はオンライン版として全文がオープンソースで公開されている。オープンソースソフトウェアの開発者は勿論のこと、ソフトウェア開発者であればきっと面白く読めるだろう。オンラインで読んでみてもし気に入ったら、手に取って頂ければ嬉しく思う次第だ。

----

原著が2005年に出版されたもので若干古いので、内容については原著者の Karl Fogel とも協力しつつ、URLやツールについての記述は極力最新のものに追随したり、注釈を施すなどした。原著の出版時から動きがあった部分(ライセンス等)についても Karl によってアップデートが行われている。オレンジニュースなどでは記述に若干古い部分があるとの指摘があったが、現状公開されているものについてはその指摘はもはや当たらないだろう。

この本を通じて、オープンソースの世界が少しでも人々に伝わることを願っている。