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 の「 取り扱い説明書をよく読んで云々 」というのはかなり聞き流してたんだけど、致命的なことになるかもしれないのね。