10年以上前にやったオブジェクト指向風のC言語開発

20世紀に僕は組み込み系でこんな風なコードを書いていた気がします.
10年ぶりに空で書いているので正しいのかどうか不明です.
ほら動かしたいんじゃなくて昔は〜的なゴミネタですよ(何

#include <stdio.h>

typedef struct {
  int (*method1)( void);
  int property1;
} Foo;

Foo *FooNew( void);
int FooMethod1( void);

int main( int argc, void **argv) {
  Foo *foo = FooNew();
  printf("%s: %d\n", *argv, foo->property1);
}

Foo *FooNew( void) {
  Foo *foo;

  foo = (Foo *)malloc(sizeof(Foo));
  if (foo != NULL) {
    foo->method1 = FooMethod1;
    foo->property1 = foo->method1();
  }
  return foo;
}

int FooMethod1( void) {
  return 1;
}

tarのmanでちょっとワロタ

BUGS
       The  GNU  folks,  in  general, abhor man pages, and create info documents instead.  The maintainer of tar falls into this category.  Thus
       this man page may not be complete, nor current, and was included in the Red Hat CVS tree because man is a great tool :).  This  man  page
       was first taken from Debian Linux and has since been loving updated here.

REPORTING BUGS
       Please report bugs via https://bugzilla.redhat.com

SEE ALSO
       The  full documentation for tar is maintained as a Texinfo manual.  If the info and tar programs are properly installed at your site, the
       command

              info tar

       should give you access to the complete manual.

AUTHORS
       Debian Linux http://www.debian.org/
       Mike Frysinger <vapier@gentoo.org>

著者はdebiangentoo関係,でも不都合報告はRed Hatのbugzilla.なんでやねん.

suで一時的にシェルを変える方法

CentOS 5で root から su できなかったので調べてみた。

なるほど。

http://blog.mizoshiri.com/archives/214

下記のようになった場合

[root@hoge home]# su - hoge
This account is currently not available.

/etc/passwdを編集します。

[root@hoge home]# vi /etc/passwd
hoge:x:100:100::/home/hoge/:/nobin/nologin
hoge2:x:101:101::/home/hoge2/:/bin/bash

ここの「/nobin/nologin」を/bin/bashなどにしてやるとログインできるようになります。

ユーザーデータベースを編集せずともsuコマンドやsudoコマンドで一時的な変更は可能ですよ.

suコマンド

# /bin/su - --shell=/bin/sh apache
-sh-4.0$ id
uid=48(apache) gid=48(apache) 所属グループ=48(apache)

sudoコマンド

# /usr/bin/sudo -u apache id
uid=48(apache) gid=48(apache) 所属グループ=48(apache)

まとめ

もうちょっとダラダラ長文を書いていたんだけど消えてしまった(涙

Thunderbird(Shredder) 3.0(RC1)変更点の翻訳を読んでの所感

Mozilla Fluxに掲載されたThunderbird 3 RC1変更点を読んでみて実際のユーザー(Thunderbirdとしては使ったことないですが)の所感です.
全体的にネガティブな文章になってしまっていますが,さくさく動くThunderbirdを期待している人は気をつけたほうがいいと思います.そうでないより高機能になって欲しいThunderbirdユーザーは期待してもいいと思います.

個人的には他のメーラーgmailやMail.app,Outlookなどを意識しすぎて不用意に本体が肥大化してしまっている気がしますが…

メールメッセージのタブ表示

メールメッセージのタブ表示
メールメッセージ上でダブルクリックするか、Enterキーを押すことで、メッセージが新規タブウィンドウに開きます。メッセージやフォルダを中クリックすれば、背景タブに開きます。Thunderbirdの終了時には見えているタブが保存され、次回起動時に復元されます。タブツールバーには新しいタブメニューがあり、タブの切り替えに役立ちます。

そこそこ便利です.が,複数メールの処理時に間違えてタブを開いたときにお祭りになります.原因としては「標準ではキーボードでタブを閉じられない(っぽい)」
最悪なのはspamの処理,たとえば100通単位のメールを選択しているとき,ひょんなことから全部タブで開いてしまうことがまれにあります(俺が悪いの? 俺が悪いの?).
このときは全部のタブの[x]をクリックするなりして閉じなければなりません.残念ながらThunderbirdでは[x]の高速連射はサポートされていないようで,それなりの時間間隔(1秒未満ですが)でクリックしなければなりません.しかし最悪なことにタブの数で[x]のイチが徐々にずれるんですよね…

とにかく数がまとまったメールの処理は気をつけましょう.

スマートフォルダ

スマートフォルダ
フォルダペインにはスマートフォルダが設定され、複数のアカウントに存在する特殊なメールボックス、たとえば受信トレイを結合します。スマートフォルダはデフォルトでオンになっています。

趣味の問題ですが気持ち悪いのでとっとと切り替えました.
Outlook Expressなどで統合受信箱に慣れている人には便利なんだと思います.

新しいメッセージサマリービュー

新しいメッセージサマリービュー
複数のメッセージを指定することで、指定したメールの要約を見ることができます。

複数選択は常に新しいサマリービューになるため,「遅い」です.
頻繁にメール処理をしていると地味に苦痛です.
また,スレッドツリーを閉じているときのスレッドトップは常にサマリービューになります.
つまり,「1通目の内容を読みたいときは必ずツリーを開く必要があります」
これも地味に苦痛です.

メッセージアーカイブ

メッセージアーカイブ
受信トレイその他のフォルダにあるメッセージを、新しいアーカイブフォルダにファイルしておくことが可能です。

結論で言うと「アーカイブフォルダ」に移動されます.いわゆる古からの「目的別にフォルダーを分けて管理」が破綻します.ちなみに元の場所に戻す機能が標準では存在しませんので間違えてアーカイブにしちゃうとお祭りです.
「メールの分別はタグ」で行うようにしていればアーカイブが併用できるので便利になるかもしれません.が,それを前提に最初からやっていないと面倒ですね…
ちなみにThunderbird 3.0から「メッセージにフィルタを適用」「フォルダにフィルタを適用」というメニューがツールメニューに追加されたので後からフィルターを再適用させたい場合には楽になりました(Thunderbird 2.0でもあった気がしますが,うちはIMAPだったからか? メニューが有効になっていた記憶がありません.というかThunderbird 2も1年近く使っていないために記憶が怪しいですが).

改良されたアドレス帳

改良されたアドレス帳
既に連絡先がアドレス帳に登録されている場合、星形の新しいアイコンによって示され、アイコンをクリックすると連絡先の詳細をインライン編集できます。アドレス帳に未登録の場合も、そのアイコンをクリックするだけで追加できます。誕生日のフィールドが新たに加わり、あなたの友人たちの誕生日を把握できます。また、アドレス帳の連絡先に写真を含めることも可能です。

うろ覚えですが便利になった気がします.

Windows Vistaユーザー向け

Windows Vistaユーザー向け
Thunderbird 3はVistaの検索結果と統合されます。初回起動時にThunderbirdは独自のインデックスシステムをWindows Vistaにインストールするかどうか尋ねます。ユーザーの選択により、ThunderbirdのメールとニュースのメッセージをWindowsの検索結果に含めることができます。

これクラッシックメニューを使っていると恩恵がないのでWindows 7にするまで気づきませんでした.
ただ機能の実現があるのと便利なのかは別かなーという気もしています.

IMAPフォルダの同期

IMAPフォルダの同期
Thunderbirdは、デフォルトで、IMAPメッセージをバックグラウンドでダウンロードするようになり、メッセージの読み込みが高速化され、オフラインでの操作がしやすくなりました。この機能は、フォルダのプロパティから個々のフォルダ単位で有効化できるほか、アカウント設定の「同期とディスク領域」から、あるアカウントの全フォルダに対して設定することもできます。

重いものは重いです(苦笑
フォルダーが多いとどのフォルダーを同期するか…というインターフェースがこなれていないために苦痛です.

終わり

グローバル検索の恩恵で検索機能は充実し,検索結果は面白い表示をしてくれるようになりました.
ちなみに僕はそのままnightlyなので先月末くらいから3.0.1preになりました.ちょっとづつ機能が増えたり変わったりしていっていますね.

必要なSRPMだけリモートのリポジトリーから取得する

rpmforgeやEPEL,その他世にあるリポジトリーをミラーすると使わないRPMのために大量のストレージを用意しなければならないですね.SATAなディスクならともかくそうじゃないときには困ります(RHEL 5用のEPELで2GB越).
かといってSRPMが必要なときにiDCにいるとインターネットからもう取得する手段がない場合もえてしてあります.

  • インフラ構築に必要なRPMは個別に取得している
  • 何らかの理由でRPMの再構築が必要な場合を考え,SRPMをあらかじめ取得しておく
  • RPMもそうだけどSRPMをまるっとミラーはしない
  • 今回はRHEL5用EPELで必要なSRPMを取ってくる.ミラーサーバーは大好きなIIJを使う.
for SRPM in `rpm -qp --queryformat="%{SOURCERPM}\n" ../../x86_64/RPMS/*.rpm | sort  | uniq`; do 
wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/SRPMS/${SRPM}; done

xargs使ったり改善の余地はあると思いますけど思いつきってことで.