トップ 最新 追記

Public Diary


2007-04-07

[雑記] 社会人4年目

社会人4年目に突入しました。

2年目の終わりに前職を退職して海外旅行なんてしたもんだから、年数の割に貯蓄が無いのが痛いですが…。とはいえ、生活も安定してきたし、生活のほとんどが仕事ってのはやはり自分のスタイルではないと思うので、そろそろ諸々のことに復帰しようかと思っています。

とりあえず、科学ライブショー「ユニバース」。まぁ就職すると卒業扱いになるし実務上はあまり役に立たないかもしれないが、それでも客入りが激しいときは猫の手も借りたくなることもあるので、まぁ合コンでいう人数合わせ程度にでも顔を出そうかなぁと思っている。学生中心の運営母体だから、一仕事終えた後の財布役になるというのも良いと思うし。そろそろ還元してあげても良い頃だ。

あとは、ネット関係とか。ユーザ会とかはほとんど機能しなくなっているが、まだまだできること&やらなきゃいけないことは残っているはず。とはいえ一人で一からやり直すのは無理な気がするので、とりあえず直接会える人々と、酒でも飲みながらブレーンストーミング的に話をして、そこから次につないでいこうと思う。

こういう活動は、やっぱり自分を育ててきてくれた部分だと思うし自分の本質の一面が出ていると思うので、大事にしなきゃなぁと常々思う。


2007-04-10

[プログラミング] 2GBの壁

今更ながら、2年前に導入された職場内のAIXサーバ(32bit)が2GBを超えるファイルの取り扱いに対応していないということで、先週末あたりからバージョンアップを試行中。

Linuxと違ってサポート情報が限られている(というかやっぱりユーザ数が圧倒的に少ない??)ので結構面倒だけど、それでも最近はAIXでもrpmが使えるようになってきたのでまだマシか。

Apache
2GB問題にはversion 2.2.0から対応。まぁこれは普通にconfigureしてmakeしたらそこそこすんなり動いた。
PHP
Apacheのバージョンアップに伴って、4系の最新版の version 4.4.6 をインストールしようとするも、make install のスクリプトがおかしい。make でバイナリ (libphp4.so) 自体は生成されるので、cp -p で手でインストール。rpm パッケージ化すると便利かなと一瞬血迷いそうになったけど、httpdなどのいわゆる依存パッケージがrpm管理されていないのにphpだけrpm化するわけにもいかず。
ユーザ部署からproc_openがおかしいと言われて、見てみるとなんだかproc_openでNULL(相当のモノ)が返ってきている。さんざん悩んだけど、stderrをファイルに接続していて、ファイルのパーミッション不足だということが判明。PHP_FUNCTION(proc_open)のソースまで読んじゃったよ。
Wget
version 1.10 から対応。1.10.1 からファイルサイズの表示にlocaleconv関数を使っていて、どうやらlconv->groupingにNULLが返ってきているのにstrdupしようとして、しかもstrdupもNULLを返して…といったバグ(というか単にAIXに対応してないだけ?)があってver 1.10.2を使えない。これもパッチを書いて回避。
実はWgetってソフトウェアの名称としてはwgetじゃなくてWgetだって知ってました?

…なんてなことをして、夜の業後を費やしているわけです。 エラーメッセージも並記しておくと後で役に立つかなぁと思うので、またそのうちメモします。

Wgetのパッチはこんな感じ:

diff -rc src.original/ptimer.c src/ptimer.c
*** src.original/ptimer.c	Wed Jul  6 15:26:18 2005
--- src/ptimer.c	Tue Apr 10 11:41:05 2007
***************
*** 173,180 ****
      {
        /* If no clock was found, it means that clock_getres failed for
  	 the realtime clock.  */
!       logprintf (LOG_NOTQUIET, _("Cannot get REALTIME clock frequency: %s\n"),
! 		 strerror (errno));
        /* Use CLOCK_REALTIME, but invent a plausible resolution. */
        posix_clock_id = CLOCK_REALTIME;
        posix_millisec_resolution = 1;
--- 173,180 ----
      {
        /* If no clock was found, it means that clock_getres failed for
  	 the realtime clock.  */
!       /* logprintf (LOG_NOTQUIET, _("Cannot get REALTIME clock frequency: %s\n"),
! 		 strerror (errno)); */
        /* Use CLOCK_REALTIME, but invent a plausible resolution. */
        posix_clock_id = CLOCK_REALTIME;
        posix_millisec_resolution = 1;
Only in src.original: topas.error
diff -rc src.original/utils.c src/utils.c
*** src.original/utils.c	Mon Jun 27 14:12:20 2005
--- src/utils.c	Tue Apr 10 11:41:05 2007
***************
*** 1206,1212 ****
        setlocale (LC_NUMERIC, "");
        lconv = localeconv ();
        cached_sep = xstrdup (lconv->thousands_sep);
!       cached_grouping = xstrdup (lconv->grouping);
        /* Restore the locale to previous setting. */
        setlocale (LC_NUMERIC, oldlocale);
        if (!*cached_sep)
--- 1206,1215 ----
        setlocale (LC_NUMERIC, "");
        lconv = localeconv ();
        cached_sep = xstrdup (lconv->thousands_sep);
!       if (lconv->grouping)
!           cached_grouping = xstrdup (lconv->grouping);
!       else
!           cached_grouping = "\x03";
        /* Restore the locale to previous setting. */
        setlocale (LC_NUMERIC, oldlocale);
        if (!*cached_sep)

1980|03|
1986|04|
1998|04|
2002|01|11|
2003|03|04|05|07|08|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|02|03|04|06|07|08|11|12|
2008|01|02|03|04|06|07|08|09|10|
2009|01|12|
2011|05|10|11|
2012|01|02|10|