2007-05-31 :-|
_ [仕事]仕事
0830 出勤。
パブロンとバファリンを調合しました。しかし鼻水がっ
ヲレ「 おはようございまふ( グス ) 」
Eb さん「 なんですか『まふ』って 」
ヲレ「 照れ隠しです( グス ) 」
Eb さん「 体調は回復したんですか 」
ヲレ「 絶好調です!( グス ) 」
Eb さん「 グスグスって、全然絶好調じゃないですよ 」
_ 趣味
- 責任転嫁
- 謀略
_ [松下][ナショナル][白物家電] 謹告 ナショナル電子レンジ・冷凍冷蔵庫・電気衣類乾燥機をご愛用の皆様へ
松下からの告知がありました。自宅のは対象外でした。
電子レンジはこちら。
対象製品は、1988年12月から1993年12月までに製造しました下記12機種となります。
冷凍冷蔵庫はこちら。
対象製品は、1989年2月から1992年10月までに製造しました下記5機種となります。
電気衣類乾燥機はこちら。
対象製品は、1993年8月から2001年12月までに製造しました下記8機種となります。
いまから 20 年ちかく前の製品です。自宅にあるのは 20 年とはいかないけど 10 年くらい前のものがあります[ 2006-11-27 ]。まだ現役です。松下の製品はリコール対象の製品があったのだけど、それでもこれだけ昔の製品が現役で使えているわけです。白物家電ってすごいです。
_ [写経][UNIX][NetBSD][プログラミング]詳解 UNIX プログラミング写経
WindowsXP 上の VMWare 上の NetBSD
プログラム 6.1
/etc/passwd をごにょごにょ。シェルが /usr/pkg/bin/zsh かよ! /usr/pkg を mount 出来ないときとかどーすんの!とか言わない。そのときは気合いでがんばる。
#include <sys/types.h> #include <pwd.h> #include <stddef.h> #include <string.h> struct passwd* getpwnam( const char* name ) { struct passwd *ptr; setpwent(); while( ( ptr = getpwent() ) != NULL ) { if( strcmp( name, ptr->pw_name ) == 0 ) break; } endpwent(); return ptr; } int main( int ac, char** av ) { struct passwd *ptr; ptr = getpwnam( av[ 1 ] ); if( ptr == NULL ) { printf( "no such user: %s\n", av[ 1 ] ); } else { printf( "name: %s\n", ptr->pw_name ); printf( "passwd: %s\n", ptr->pw_passwd ); printf( "uid: %d\n", ptr->pw_uid ); printf( "gid: %d\n", ptr->pw_gid ); printf( "gecos: %s\n", ptr->pw_gecos ); printf( "dir: %s\n", ptr->pw_dir ); printf( "shell: %s\n", ptr->pw_shell ); } return 0; }
% ./a.out rin name: rin passwd: * uid: 1000 gid: 100 gecos: dir: /home/rin shell: /usr/pkg/bin/zsh
_ [写経][UNIX][NetBSD][プログラミング]詳解 UNIX プログラミング写経
WindowsXP 上の VMWare 上の NetBSD
uname(3) します。
#include <sys/utsname.h> #include <stdio.h> int main( int ac, char** av ) { struct utsname name; if( uname( &name ) == -1 ) { perror( "uname" ); exit( 1 ); } printf( "sysname: %s\n", name.sysname ); printf( "nodename: %s\n", name.nodename ); printf( "release: %s\n", name.release ); printf( "version: %s\n", name.version ); printf( "machine: %s\n", name.machine ); return 0; }
% ./a.out sysname: NetBSD nodename: yuto release: 3.0.1 version: NetBSD 3.0.1 (MYKERNEL) #0: Sat Jun 24 04:38:43 JST 2006 root@yuto:/usr/obj/sys/arch/i386/compile/MYKERNEL machine: i386
上記は uname -a と同じ印字です。
% uname -a NetBSD yuto 3.0.1 NetBSD 3.0.1 (MYKERNEL) #0: Sat Jun 24 04:38:43 JST 2006 root@yuto:/usr/obj/sys/arch/i386/compile/MYKERNEL i386
/usr/src/usr.bin/uname/uname.c を見てみたら struct utsname 構造体のメンバを印字していました。ただ、以下だけが utsname を使っていません。
if (print_mask & PRINT_MACHINE_ARCH) { int mib[2] = { CTL_HW, HW_MACHINE_ARCH }; size_t len = sizeof (machine_arch); if (sysctl(mib, sizeof (mib) / sizeof (mib[0]), machine_arch, &len, NULL, 0) < 0) err(EXIT_FAILURE, "sysctl"); }
PRINT_MACHINE_ARCH は uname -p したときに立てられるビットです。
while ((c = getopt(argc,argv,"amnprsv")) != -1) { switch (c) { case 'p': print_mask |= PRINT_MACHINE_ARCH; break;
uname -p ってなんでしょう。man uname してみます。uname -m と何が違うんでしょうか。
-m print the machine hardware name. -p print the machine processor architecture name.
とりあえず試してみます。WindowsXP 上の VMWare 上の NetBSD です。
% uname -m i386 % uname -p i386
同じです。
では Mac mini に入れた NetBSD 上で uname してみます。
% uname -p powerpc % uname -m macppc
おー。なるほど。この Mac mini は G4 1.25 のころの Mac mini なので NetBSD/macppc を使いました[ 2006-09-24 ]。/usr/src/build.sh で以下のように MACHINE_ARCH を設定してます。ここで powerppc になるんですね。最近の Mac mini だと Intel Core Duo なので i386 になるのかしら。
getarch() { # Translate a MACHINE into a default MACHINE_ARCH. # case "${MACHINE}" in : amigappc|bebox|evbppc|ibmnws|macppc|mvmeppc|ofppc|pmppc|prep|sandpoint) MACHINE_ARCH=powerpc ;;
_ [飯][ペペロンチーノ]飯
ペペロンチーノのようなもの( ref. きょうの料理 2007-05 p.46 )
イタリアンパセリなんて無いので万能ネギを使ってみました。なんか妙なものになりました。
_ [4行日記]4行日記
- 【事実】だいぶ久しぶりに詳解UNIXプログラミングを読んだ
- 【気づき】uname(3) を深追いしてみた。楽しかった。
- 【教訓】プログラムを書くことにより気づくことがある
- 【宣言】深追イストを目指す( ref. ハッカー養成塾: 深追い、佳境、バッドノウハウ )
薬の勝手な飲み合わせは何が起こるか分からないから、処方されたもの以外は絶対にやるなって言われてません?
よしみつくん<br>ほほお。初めて聞きました。
物によってはある日突然死んでしまいますから
よしみつくん<br>Σ( ̄□ ̄lll) <br>テレビ CM の「 取り扱い説明書をよく読んで云々 」というのはかなり聞き流してたんだけど、致命的なことになるかもしれないのね。