NAKAMURA Minoru $B$NF|5-(B (2006$BG/(B9$B7n(B)

$B@h7n$NF|5-(B(2006$BG/(B08$B7n(B) $B:#7n$NF|5-(B(2006$BG/(B09$B7n(B)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2022 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2023 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2024 | 1 | 2 | 3 | 4
$B%[!<%`%Z!<%8(B | $B:G?7$N%3%a%s%H(B50
$B%$%s%G%C%/%9(B: $B?)$YJb$-(B | Java | $B%W%m%0%i%`(B | UNIX | $B2hA|(B
$B:G?7$NF|5-$X$N%j%s%/(B | $B$3$NF|5-%Z!<%8$r$O$F$J% $B$3$NF|5-%Z!<%8$r$O$F$J%V%C%/%^!<%/$KDI2C(B
$B$O$F$J(B $B%@%$%"%j!<(B $B%"%s%F%J(B $B%V%C%/%^!<%/(B $B%V%m%0(B
Twitter | mixi | Facebook | slideshare | github | Qiita



9/29 ($B6b(B)

$B:#F|8+$?(B IKEA $B$N%7%c%H%k%P%9(B

$B?72#IM1X$H(B IKEA $B$NE9J^$r1}I|$9$kL5NAAw7^%P%9$rH/8+!#(B


9/26 ($B2P(B)

Google $B$G%R%C%H$7$?(B PDF $B%U%!%$%k(B

Google $B$G%R%C%H$7$?(B PDF $B$X$N(B URL $B$K(B #search="$B8!:w%-!<%o!<%I(B" $B$H$$$&%5%U%#%C%/%9$,Ce$/$h$&$K$J$C$?$N$K5$$E$$$?!#(B $B$3$l$C$FA0$+$i$@$C$?$1!)(B

PDF $B$r3+$/$?$S$K%V%i%&%6Fb$N(B Acrobat $B$,%-!<%o!<%I$K%^%C%A$9$k2U=j$^$G0\F0$9$k$N$G!"(B $B=&$$FI$_$9$k>l9g$K$O!{!#(B $B$G$b%^%C%A$7$?(B PDF $B$r:G=i$+$iFI$_$?$$$H;W$C$F$$$k$H!"(B $B$$$A$$$AJ8=q$NCfJ"$^$G0\F0$5$l$k$N$OLLE]$@$J$!!#(B

$B$IK:$l(B

Acrobat Reader $B$r(B Web $B%V%i%&%6$K%W%i%0%$%s$7$F$$$k>l9g!"(B Web $B>e$G8x3+$5$l$?(B PDF $B%U%!%$%k$N(B URL $B$N8e$K(B #hogehoge $B$H$+$D$1$k$H!"(B $B$7$*$j$N0LCV$d;XDj$7$?%Z!<%8$r3+$/5!G=$,$"$C$?$O$:!#(B $B$G$b$I$&$d$l$P$h$+$C$?$N$+;W$$=P$;$J$$!#(B Help me!!

[Tips] PDF $B%U%!%$%k$N3+$-J}(B (PDF Open Parameters; PDF$B7A<0(B)

Web $B%V%i%&%6$G(B PDF $B$r8+$k>l9g$N%Q%i%a!<%?$O!"(B Acrobat $B$,=P$7$F$$$k(B PDF Open Parameters $B$H$$$&%I%-%e%a%s%H$K:\$C$F$$$?!#(B $B;H$($=$&$J$b$N$r$$$/$D$+H4?h$7$F$_$k!#(B

$B%Q%i%a!<%?L>(B$BFbMF(B
nameddest=namePDF $BCf$N(B named destination $B$r;XDj$9$k(B
page=pagenum$B%Z!<%8HV9f$r;XDj$9$k!#:G=i$N%Z!<%8$O(B 1 $B$K$J$k!#(B
#page=14$B$N$h$&$K;XDj$9$k!#(B
pagemode=bookmarks
pagemode=thumbs
pagemode=none
$B%Z!<%8$,3+$+$l$?;~$K!V$7$*$j!W$d!V%Z!<%8!W$N%5%$%I%P!<$r3+$$$?>uBV$K$G$-$k!#%G%U%)%k%H$O(B none$B!#(B
search=wordListPDF $B$r3+$$$?;~$KJ8;zNs$N8!:w$r9T$&!#(B
#search="word1 word2"$B$N$h$&$K;HMQ$9$k!#(B
scrollbar=1|0scrollbar
toolbar=1|0toolbar
statusbar=1|0status bar
messages=1|0message bar
navpanes=1|0navigation panes

$B%Q%i%a!<%?$,J#?t$"$k>l9g$O(B & $B$G6h@Z$l$P$h$$!#(B

$BNc$($P(B PDF $B%U%!%$%k$N(B 5$B%Z!<%8L\$K0\F0$7$?8e!"(B $B$=$NCf$+$i(B nameddest $B$r%5!<%A$7$?>uBV$G(B PDF $B$r3+$-$?$$>l9g$K$O!"(B URL $B$K(B #page=5&search="nameddest" $B$r$D$1$l$P$h$$$h$&$@!#(B

$B%3%a%s%H$r=q$-9~$`(B
[1] [tos] 2006-09-28 09:04:08
$B$3$l$G$9$+$M!)(B

$B!V(BHTML$BJ8=q$+$i(BPDF$BJ8=q$N;XDj%Z!<%8$K%j%s%/$9$k$K$O!W(B
(http://www.keiyu.com/doc/pdflink.htm#02)
>> Acrobat 4.0$B0J9_$G$O!"(BHTML$BJ8=q$G>> http://www.keiyu.com/test.pdf#page=3">3$B%Z!<%8L\$rI=<((B
[2] [nminoru] 2006-09-29 00:48:29
tos$B$5$s>pJs$"$j$,$H$&$4$6$$$^$9!#(B
$B%Z!<%8$N;XDj$O(B #page= $B$@$C$?$s$G$9$M!#$3$l$OCN$j$^$;$s$G$7$?!#(B

9/24 ($BF|(B)

$B85=;5H1X$,9b2M2=$5$l$?$h(B

$B%"%Q!<%H$+$i$N:G4s1X$G$"$k(B $BEl5^El2#@~$N85=;5H1X$,9b2M2=$5$l$?$h!#(B

$B%W%i%C%H%U%)!<%`$,(B2$B3,$K2~;%3,$,(B3$B3,$K$"$j!"(B $B0lEY(B3$B3,$^$G>:$C$?8e$K(B2$B3,$K9_$j$k$H$$$&9=B$$K$J$C$F$$$k!#(B $B<~0O$G0lHV9b$$7zJ*$J$N$G8+@2$i$7$OBgJQ$h$$!#(B

$BD9$$%(%9%+%l!<%?(B
$BD9$$(B$B%(%l%Y!<%?(B$B%(%9%+%l!<%?(B
$BIpB.?yJ}LL(B">
$BIpB">.?yJ}LL(B
$B2~;%$N$
$B2~;%$N$"$k3,$ND/$a(B
$BF|5HJ}LL(B
$BF|5HJ}LL(B

[Food] $B%S%C%0%"%C%W%k!w85=;5H(B

$B5W$7$V$j$K%S%C%0%"%C%W%k$G$*Ck$r?)$Y$k!#(B

$B%3%a%s%H$r=q$-9~$`(B
[1] [$BL>L5$7!w85=;5H(B] 2006-09-28 08:38:03
$B1X$,?7$7$/$J$C$F$+$iD+$N%P%9$N=BBZ$,$J$/$J$C$F(B
$B$9$C$-$j$7$^$7$?$M!#(B

9/23 ($BEZ(B)

[Linux] Linux $B$G(B tick $BL$K~$N@:EY$N%?%$%^!<$r$I$&$d$C$F07$&$+!)(B

9/19$B$NF|5-(B$B$NB3$-!#(B
$B:#$N$H$3$m(B HPET ($B$$$o$f$k%^%k%A%a%G%#%"%?%$%^!<(B) $B$O(B i386$B!"(Bx86_64$B!"(Bia64 $B$KB8:_$9$k$,!"(B $B3hMQ$5$l$F$$$k$H$O8@$$Fq$$!#(B $B$^$:(B HPET $B$O(B /dev/hpet $B$H$$$&%G%P%$%9$H$7$F8+$($k$N$G!"(B $B$3$l$rD>@\A`:n$9$k$3$H$G%?%$%^!<$r%;%C%H$9$k$3$H$,2DG=$@!#(B $BFCDj;~4V8e$K(B SIGIO $B%7%0%J%k$rHt$P$9$h$&$J;HMQJ}K!$,$G$-$k!#(B $B$?$@%f!<%6%W%m%;%9$+$i(B /dev/hpet $B$r3+$$$FA`:n$9$k$N$OITJX$@!#(B

i386 $B$d(B x86_64 $B$G$O!"(B HPET $B$O(B RTC (Real Time Clock) $B$NBe$o$j$H$7$F;HMQ$5$l$F$$$k!#(B $B$3$N>l9g$O9b@:EY$N;~7W$H$7$F;H$o$l$F$$$k$K2a$.$J$$!#(B

$B%f!<%6%W%m%;%9$+$i%7!<%`%l%9$K9b@:EY%?%$%^!<$r;H$&$?$a$K$O!"(B ($BM}O@>e$O(B) POSIX $B%?%$%^!<(B (timer_create) $B$r3HD%$9$kJ}K!$,$"$k!#(B POSIX $B%?%$%^!<$N@8@.4X?t(B timer_create(2) $B$O(B which_clock $B$K$h$C$F%?%$%^!<$N

int timer_create (clockid_t which_clock, struct sigevent *timer_event_spec, timer_t *created_timer_id);
#define CLOCK_REALTIME           0
#define CLOCK_MONOTONIC          1
#define CLOCK_PROCESS_CPUTIME_ID 2
#define CLOCK_THREAD_CPUTIME_ID  3
#define CLOCK_REALTIME_HR        4
#define CLOCK_MONOTONIC_HR       5

$B$3$N%?%$%^!<k_clock $B9=B$BN$NG[Ns(B posix_clocks $B$H$7$F6hJL$5$l$F$$$k!#(B posix_clocks $BG[Ns$N:GBgMWAG?t$O(B 16 $B$G$"$j!"(B $BH>J,$0$i$$$O;H$o$l$$$J$$!#(B

$(LINUX)/kernel/posix-timers.c:
static struct k_clock posix_clocks[MAX_CLOCKS];
$(LINUX)/include/linux/posix-timers.h:
struct k_clock {
  int res;/* in nanoseconds */
  int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
  int (*clock_set) (const clockid_t which_clock, struct timespec * tp);
  int (*clock_get) (const clockid_t which_clock, struct timespec * tp);
  int (*timer_create) (struct k_itimer *timer);
  int (*nsleep) (const clockid_t which_clock, int flags,
                 struct timespec *, struct timespec __user *);
  int (*timer_set) (struct k_itimer * timr, int flags,
  struct itimerspec * new_setting,
  struct itimerspec * old_setting);
  int (*timer_del) (struct k_itimer * timr);
#define TIMER_RETRY 1
   void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting);
};

SGI Altix $B$O(B HPET $B$r;H$C$F(B POSIX $B%?%$%^!<$NCLOCK_SGI_CYCLE(10))$B!#(B mmtimer $B%I%i%$%P!<$rF3F~$9$k$H(B posix_clocks[10] $B$,@lMQ$N%?%$%^!<$K$J$k$h$&$@!#(B

$(LINUX)/device/char/mmtimer.c:
static struct k_clock sgi_clock = {
  .res = 0,
  .clock_set    = sgi_clock_set,
  .clock_get    = sgi_clock_get,
  .timer_create = sgi_timer_create,
  .nsleep       = do_posix_clock_nonanosleep,
  .timer_set    = sgi_timer_set, /* $B$3$3$G(B HPET $B$rA`:n(B */
  .timer_del    = sgi_timer_del, /* $B$3$3$G(B HPET $B$rA`:n(B */
  .timer_get    = sgi_timer_get  /* $B$3$3$G(B HPET $B$rA`:n(B */
};

register_posix_clock(CLOCK_SGI_CYCLE, &sgi_clock); /* posix_clocks[] $B$X$NEPO?(B */

mmtimer $B$,%$%s%9%H!<%k$5$l$?8e$O!"(B timer_create(2) $B$N(B which_clock $B$K(B CLOCK_SGI_CYCLE $B$,;XDj$G$-$k$h$&$K$J$j!"(B timer_settime(2) $B$G%$%s%?!<%P%k%?%$%^!<$r;E3]$1$k$H(B tick $B$NESCf$G$"$C$F$b(B SIGALRM $B%7%0%J%k$,Aw?.$5$l$k$h$&$K$J$k!#(B $B$b$C$H$b(B SIGALRM $B$,@53N$KAw?.$5$l$F$b!"(B $B

tick $BL$K~$N%?%$%^!<$r:n$k$K$O$^$:%O!<%IE*$J%?%$%^!<5!9=$,I,MW$@$,!"(B $B$=$N8e$O(B POSIX $B%?%$%^!<$N;EAH$_$K>h$C$1$F$7$^$&$N$,;H$&B&$+$i$O3Z$=$&$@!#(B

$B2q

$B0[F0A0$N?&>l$KCV$$$F$$$?;dJ*$NK\N`$r<+Bp$KBp5^JX$GAw$jJV$9!#(B $B2YJ*$,CJ%\!<%kFsH"J,$[$IA}$($F!"(B $B$^$?%"%Q!<%H$,69$/$J$C$?!D(B


9/22 ($B6b(B)

$BAaBg$N;3L>8&$+$i$N%"%/%;%9$,;_$s$@(B

9$B7n(B10$BF|(B 12:14:57 (+0900) $B$rHi@Z$j$K(B "e-SocietyRobot(http://www.yama.info.waseda.ac.jp/~yamana/es/)" $B$H$$$&(B User-Agent $B$r;}$D%m%\%C%H$,BgNL$K$d$C$F$-$F$$$?$N$@$,!"(B 9$B7n(B22$BF|(B 04:10:21 (+0900) $B$K%T%?$j$H;_$^$k!#(B

$B%m%0$r8+$k$He:No$K(B10$BIC$E$D4V$r6u$1$F$N%"%/%;%9$,B3$-!"(B $B?t;~4VCV$-$K5Y;_%?%$%`$,$-$F$$$k!#(B

e-Society$B$N(B $B!V4pHW%=%U%H%&%'%"$NAm9g3+H/!W%W%m%8%'%/%H!V%$%s%?!<%M%C%H>e$NCN<1=8Ls$r2DG=$K$9$k%W%i%C%H%U%)!<%`9=C[5;=Q!W$H$$$&%W%m%8%'%/%H$NWeb$B%/%m!<%i$K$h$k(BWeb$B%Z!<%8<}=8(B$B$N0l4D$@$C$?$i$7$$!#(B $BMxMQpJs$rCj=P$9$k$3$H$r2DG=$H$9$k%=%U%H%&%'%"$r3+H/$9$k!#(B $B$b$C$F!"4k6H>pJs%]!<%?%k!J(BEIP:Enterprise Information Portal$B!K8~$1$NM-MQ$J>pJs%=!<%9$r$B$H$"$k$,!"(BEIP $B$C$F2?$@$m$&!)(B 2ch $B$N4F;k$_$?$$$J$3$H$,$G$-$l$P$$$$$N$+$7$i!)(B

$BIw

$B?&>l$G2FIw


9/21 ($BLZ(B)

Power Distribution Unit

$B30It<~JU5!4o$NEE8;4IM}$r%=%U%HE*$K@)8f$G$-$k5!3#$rC5$7$F$_$k!#(B $B9qFb$@$H(B APC $B$N(B Power Distribution Unit (PDU)$B@=IJ$,F~

$B@_CV7ABV$H$7$F$O%i%C%/%^%&%s%H<0$N(B PDU $B$,u$,LdBj$K$J$j$=$&!#(B


9/19 ($B2P(B)

[Linux] IA-64/Linux $B$G$b(B HPET $B$,;H$($k(B

$BA0!9$+$iG:$s$G$$$?(B Linux $B$N%?%$%^!<@:EY$NITB-$NLdBj(B (5/22$B$NF|5-(B$B!"(B7/4$B$NF|5-(B)$B$@$,!"(B IA-64 $B$G$b(B HPET(High Precision Event Timers) $B$,(B $B;H$($k$3$H$,J,$+$C$?(B!!

HPET $B$O$l:n$l$P$h$$$h$&$@!#(B $B5,Dj$K$h$j%/%m%C%/@:EY$O:G>.(B(?) 10MHz (=100$B%J%NIC(B)$BC10L$G!"(B $B:G>.(B 3 $B8D!A:GBg(B 32 $B8D$N%?%$%^!<$,;HMQ2DG=$i$7$$!#(B

Linux $B$G$O(B /dev/hpet $B$H$$$&(B char $B%G%P%$%9$H$7$F8+$($k!#(B 2.6.17 $B7O$N%+!<%M%k$r8+$k$H(B SGI $B$N(B SN2000 $B%^%7%s$G(B IA-64/Linux $B$rF0$+$7$?>l9g!"(B timer_create(2) $B$N%?%$%^!<$,(B HPET $B7PM3$H$J$j(B 1/1024 $BIC$N

HPET $BEk:\(Data sheet)

Intel $B$@$H(B Intel I/O Controller Hub 6 (ICH6) $B$NCf$KB8:_$7$F$HJ9$/!#(B
$B%$%s%?!<%P%k%?%$%^!<$,%7%9%F%`A4BN$G(B3$BK\$@$1;H$($k$h$&$@!#(B $B%/%m%C%/@:EY$O(B 68.841279 $B%J%NICC10L$i$7$$!#(B $BHyL/$J%/%m%C%/$@!#(B

[$B;~;v(B] $B%?%$$G%/!<%G!<%?!<(B

$B8=CO;~4V$N8a8e(B10$B;~(B($BF|K\;~4V(B20$BF|8aA0(B0$B;~(B)$B$K%?%$$G%/!<%G!<%?$,H/@8!#(B $B73$,%P%s%3%/;TFb$r@)05!#(B


9/18 ($B7n(B)

[Work] $B$O$8$a$F$N(B HP-UX 11i v2 for IA-64

$B$*$R$4$H$GI,MW$J$N$G(B Itanium2 $B%5!<%P$K(B HP-UX 11i $B$r%$%s%9%H!<%k$9$k(B(9$B7n(B14$BF|$NF|5-(B)$B!#(B rx26000 $B$K9XF~0JMh=i$a$F(B Linux $B0J30$N(B OS $B$,%$%s%9%H!<%k$5$l$k!#(B

rx2600 $B$O(B VAG $B$,%*%W%7%g%s07$$$N@=IJ$@$1$"$C$F(B(2004$BG/(B3$B7n(B9$BF|$NF|5-(B)$B!"%7%j%"%k%3%s%=!<%k7PM3$N%$%s%9%H!<%k$K$J$k!#(B DVD $B$+$i$N%3!<%k%I%$%s%9%H!<%k$G(B1$B;~4V$0$i$$$+$+$k!#(B

$B$H$j$"$($:%$%s%9%H!<%k;~$K5$$E$$$?(B HP-UX $B$NFCD'$O!"(B

  • $B%G%9%/%H%C%W$O(B CDE$B!#(B
  • HP-UX $B$O(B VERITAS File System/Volume Manager $B$,%G%U%)%k%H$G;H$($k!#(B $B%G%U%)%k%H$N%U%!%$%k%7%9%F%`$,(B VxFS$B!#(B
  • $B%G%U%)%k%H$KG$$;$k$H(B
    • $B%Q!<%F%#%7%g%s$O(B {/home,/opt,/tmp,/usr,/var,/stand,/} $B$N(B 7 $B$D$K@Z$i$l$k!#(B
    • /etc/shadow $B$K$OBP1~$7$F$$$k$,%G%U%)%k%H%*%U(B
  • C $B%3%s%Q%$%i$O%P%s%I%k$5$l$F$$$k!#(B
    (Bundled) cc: HP aC++/ANSI C B3910B A.05.50 [May 15 2003]
    
    $B$3$l$O:GE,2=$,0l@Z8z$+$J$$%P%s%I%kHG$N$h$&$@!#(B

$B$H$j$"$($:%$%s%9%H!<%k$O40N;$7$?$,!"(B $B8=>u$G$O(B bash $B$b(B emacs $B$b(B less $B$b;H$($J$$4D6-$J$N$G!"(B gcc $B$r%3%s%Q%$%k$9$k$H$3$m$+$i$O$8$a$J$$$H%@%a$_$?$$!#(B

P.S.

HP-UX $B$O(B Itanium $B%"!<%-$N(B OS $B$NCf$GM#0l(B (Solaris/SPARC $B$N(B V8 ABI$B!"(BMIPS/IRIX $B$N(B N32 ABI $B$_$?$$$J(B) 32-bit $B%b!<%I$r;}$C$F$$$k$@$h$M!#(B $B2K$K$J$C$?$i(B Java VM $B$b(B 32-bit/64-bit $B$NN>J}$N%P%$%J%j$,B8:_$9$k$N$G!"(B $B@-G=:9$r3S$Y$F$_$h$&!#(B

$B;29M(B


9/17 ($BF|(B)

[Food] $B%Q%9%F%#%7%e!&%G!&%J%?(B

$B85=;5H$N%Q%s20$GGd$C$F$$$?(B $B%]%k%H%,%k$O%j%9%\%s@8$^$l$N$*2[;R!#(B

$B%J%?(B
$B%(%C%0%?%k%H$G$9$M(B

$B:#F|8+$D$1$?2f$,GZ$,

$B85=;5H$N%H%s%+%D20(B(?)$B$G8+$+$1$?4GHD!#(B
$BFy$NK|@$$N4GHD(B(2/12$B$NF|5-(B)$B$H$$$$!"$*$^$($i2?$r6t$C$F$$$k$s$@!#(B


9/14 ($BLZ(B)

$B$3$s$K$A$O(B HP-UX

IRIX $B$H$O1J7m$NJ,$+$l$r9p$2$?(B$B$,!"$3$s$I$O%"%l%2$JM}M3$G(B HP-UX $B$,I,MW$K!#(B
$B$3$s$J$3$H$b$"$m$&$+$H!"(Bhp $B$N(B Itanium2 $B%^%7%s(B$B$rGc$&;~$K(B HP-UX 11i $B$bGc$C$F$*$$$?$N$GLdBj$J$$!#(B

$B$H$3$m$G(B HP-UX 11i $B$N%a%G%#%"$C$F$I$3$K$d$C$?$1!D(B

$B!!!!!!!!(Bo-o$B!"(B $B!!!!!!!!(B('A`)$B!!(B $B%a%,%M%a%,%M(B $B!!!!!!!!(II$B!!(II(B)_

9/13 ($B?e(B)

[Work] NETGEAR GSM7324 $B$,$^$?ITD4$K(B

$B?&>l$N(B L3 GbE Switch $B$,$^$?ITD4$K$J$j!"K=Av$r7+$jJV$9$h$&$K$J$C$?(B($BA02s$O(B2004$BG/(B9$B7n(B27$BF|(B$B!"(B2004$BG/(B11$B7n(B30$BF|(B)$B!#(B $B%i%C%/$NG[CV$,JQ$o$C$FGQG.$,0-$/$J$C$?$?$a$@$m$&$+!)(B


9/11 ($B7n(B)

SGI $B$,(B MIPS & IRIX $B$rBG$A@Z$j$X(B (CNET Japan)

$B?oJ,A0$+$i(B (SGI $B$N(B) MIPS $B%W%m%;%C%5$N3+H/$OBZ$C$F$$$N$G(B $B3P8g$O$7$F$$$?$N$@$,!"(B $B$D$$$K(B IRIX & MIPS $B%^%7%s$N3+H/!&HNGd$,=*N;$9$k$H$3$N$3$H!#(B

$BBg3X1!;~Be$KC^GHBg3X$N(B RCCP $B$N(B Origin2000 (4-way R10000 180MHz) $B$r;H$o$;$F$b$i$C$?$,!"(B $B$=$l$,<+J,$,?($k=i$a$F$N(B 64 $B%S%C%H7W;;5!$@$C$?!#(B $B8&5f$NFbMF$,FbMF$J$N$G(B $B%0%i%U%#%C%/7O$N%"%W%j$K?($k$3$H$O$^$C$?$/$J$+$C$?(B($B"+%*%$%*%$(B)$B$,!"(B $B%"%;%s%V%i$d(B ABI $B$H5:$l$kF|!9$O$"$N:"$K$O$8$^$C$?$s$@$J$!!#(B

$B2a5n$N;q;:7Q>5$H$$$&0UL#$G$O!"(B SGI $B$O(B Transitive $BItanium/Linux $B>e$GF0$/(B MIPS/IRIX $B%P%$%J%j$N%(%_%e%l!<%?$r3+H/(B $B$7$F$$$k$N$G!"(B $B$=$A$i$K0J9_$5$;$k$D$b$j$@$m$&!#(B SGI $B$N:GBg$N;q;:(B MIPS Pro Compiler $B$b%=!<%9$,8x3+$5$l$F(B Open Research Compiler $B$J$I$K0z$-7Q$,$l$F$$$k$7!"(B IRIX $B$,$J$/$J$C$F$b(B IRIX $B$,$J$/$J$C$F$bLdBj$J$$$+!D(B


9/9 ($BEZ(B)

Binary Hacks $B$N9;@5%U%'%9%H(B

$B%*%i%$%j!/$7=q$+$;$F$b$i$C$?$N$@$,!"(B $BK\F|$O<9I.(Shudo's Note $B$N(B 2006/9/9 $BJ,(B$B;2>H$N$3$H(B)$B!#(B

$B3+:E>l=j$N%*%i%$%j!$B?7=I$KMh$k$HKh2sLB;R$K$J$C$F$$$k$h$&$J5$$,$9$k!#?7=IKb6-!#(B

Binary Hacks $B$NCxl$H$OE7CO$N:9$,$"$k$3$H$rDK46$9$k!#(B
$B!t(B $B$H$$$&$+$=$&$$$&$H$3$m$K0\$C$F$$$/$o$1$@(B

$B1'L@2H(B ($B8x<0(B)

$BBG$A>e$2$O;MC+$K$"$k%*%j%8%J%kq-;R$NE9!V1'L@2H!W$G!#(B

$B%3%a%s%H$r=q$-9~$`(B
[$BK\E9(B] 2006-09-14 07:14:09
nminoru$B@h@8$N0\@R$O$^$@$G$9$+!)(B:-)
[nminoru] 2006-09-14 23:00:40
$BK\E9$5$s!":#HU$O!#(B
$BK?$B$=$N$&$AAv$l$J$/$J$C$?$i@:Fy>l$K0\@R$5$;$i$k$+$b!D(B

9/7 ($B6b(B)

[MyWeb] $B7h0UI=L@(B

$B@h7n$O8&=$$,$"$C$?$j$7$F%P%?%P%?$7$F$$$?$1$I!"(B $B$b$&$=$m$=$m5$;}$A$N%9%$%C%A$r@oF.%b!<%I$K@Z$jBX$($F;E;v$r$7$h$&!#(B

$B<~$j$N%Z!<%9$K9g$o$;$F%N%m%N%m$H;E;v$r$7$F$$$?$N$G$O!"(B $B$$$D$^$G$?$C$F$b%H%s%M%k$N=P8}$+$i=P$i$l$J$$$h!#(B


9/6 ($BLZ(B)

[CPU] Itanium2 $B$,%a%b%j$K=q$-9~$_$r9T$&$H$O!)(B

6/26$B$NF|5-(B$B$G5$$K$7$F$$$?(B mf $BL?Na$,%9%H%"!&%P%C%U%!$rEG$-=P$5$J$$$H$$$&LdBj$@$,!"(B $B>/$7$@$19%E>!#(B

$BLdBj$K$J$k$J$!$H9M$($F$$$?$N$O0J2<$N%Q%?!<%s!#(B 1: $B!A(B 6: $B$O;~4VE*$J7P2a$rI=$7$F$$$k!#(B

  • $B%W%m%;%C%5(B1$B$,(B 1: $B$G(B [A] = 1 $B$G(B 2: $B$G(B [B] = 1 $B$H=q$-9~$_$r$7!"(B mf $BL?Na$r9T$&!#(B $B$3$3$G%a%b%j$K=q$-9~$^$l$?$H%W%m%0%i%^!<$OIaDL?.$8$k$,!"(B $B4: $B$G%W%m%;%C%5(B2 $B$,(B [B] = 2 $B$r!"(B5: $B$G(B [A] = 2 $B$r=q$-9~$`!#(B $B$3$l$O%a%b%j$KD>$A$K=q$-9~$^$l$?$H$9$k!#(B
  • 6: $B$G%W%m%;%C%5(B1 $B$,(B [A] $B$rFI$_9~$`!#(B $B$3$l$O%W%m%;%C%5(B2$B$,=q$$$?(B 4: $B$G=q$$$?(B 2 $B$H$$$&CM$,FI$_9~$^$l$k!#(B
  • 7: $B$G%W%m%;%C%5(B1$B$,(B [B] $B$+$iCM$rFI$_9~$`!#(B $B%9%H%"%P%C%U%!$NCf$K(B [B] $B$,B8:_$9$k$N$G!"(B $B%9%H%"!&%U%)%o!<%G%#%s%0(B$B$5$l$FCM$O(B 1$B!)(B
[A]$B!"(B[B] $B$N=i4|CM$O(B 0$B!#(B

   Processor1          Processor2
   ---------------    ----------
1: store.rel [A] = 1
2: store     [B] = 1
3: mf      
4:                    store.rel [B] = 2 (forcibly)
5:                    store.rel [A] = 2 (forcibly)
6: load.acq  [A]
7: load.acq  [B]

$B7k6I!"(Bmf $BL?Na$,%9%H%"%P%C%U%!$r%U%i%C%7%e$7$J$$>l9g!"(B $B%W%m%;%C%5(B1 $B$O(B [A] = 2, [B] = 1 $B$H8+$($k$+$b$7$l$J$$!#(B

$B$@$,8+Mn$H$7$F$$$?$3$H$O(B mf $BL?Na$O%9%H%"!&%U%)%o!<%G%#%s%0$r@Z$k$H8@$&F0:n$r$9$k!#(B 7: $B$N(B load.acq $BL?Na$O(B 2: $B$,=q$-9~$s$@%9%H%"%P%C%U%!$+$iCM$r=&$&$3$H$O$G$-$:!"(B $B$$$C$?$s%a%b%j$+$iFI$_9~$^$J$/$F$O$J$i$J$$!#(B

  • 2: $B$H(B 6: $B$N4V$K$O=g=x4X78$,$"$k!#(B $B$=$7$F(B 6: $B$N%m!<%IL?Na$O(B 5: $B$G=q$-9~$^$l$?CM$r$B%9%H%"%U%)%o!<%G%#%s%0$,@Z$l$F$$$k0J>e!"(B 7: $B$N%m!<%IL?Na$O(B 6: $B$N%m!<%IL?Na$rDI$$1[$9$3$H$O$G$-$J$$!#(B

$B$h$C$F3N


9/4 ($B7n(B)

JIT $B%3!<%I$H(B unwind $B>pJs(B

$B%G%P%C%,$,%9%?%C%/%H%l!<%9$rI=<($9$k$?$a$K$O!"(B $B%9%?%C%/%U%l!<%`$rF0E*$K2r@O$9$kI,MW$,$"$k!#(B $BDL>o$O%l%8%9%?$N;H$$J}$H%9%?%C%/%U%l!<%`$N9=B$$,(B($B$"$kDxEY(B)$B7h$^$C$F$$$F!"(B $B%9%?%C%/%]%$%s%?$N0LCV$+$i8!::$7$F$$$1$P%9%?%C%/%U%l!<%`$N$"$kDxEY$N9=B$$O8+$($F$/$k!#(B

$B%9%?%C%/%U%l!<%`$H<+F0JQ?t$,$I$N$h$&$K4XO"IU$1$i$l$F$$$k$+$rD4$Y$?$j!"(B C++ $B8@8l$NNc305!9=$rpJs$,I,MW$K$J$k!#(B $B$3$NpJs$O(B .text $B%;%/%7%g%s$K$"$k%3!<%IK\BN$H$OJ,N%$7$F$$$F!"(B .debug_info $B%;%/%7%g%s$J$I$K3JG<$5$l$F$$$k!#(B

$BLdBj$O(B JIT $B%3%s%Q%$%i$r4^$`%7%9%F%`$J$I!"(B $BF0E*$K%3!<%I@8@.$,9T$o$l$k%"%W%j%1!<%7%g%s$N(B unwind $B$@!#(B .debug_info $B$J$I$N$O@EE*$K9=@.$5$l$k$3$H$rA0Ds$K$7$?%;%/%7%g%s$@$+$i!"(B $BF0E*%3!<%I$N(B unwind $B$r4^$a$k$3$H$O$G$-$J$$!#(B libunwind $B$,(B $BF0E*(B unwind $B>pJs$NEPO?!&:o=|5!9=$rDs6!$7$F$$$F!"(B $B%G%P%C%,$,(B libunwind $B$KBP1~$7$F$$$l$P%9%?%C%/%H%l!<%9$,2DG=$K$J$k!"!"!"(B $B$1$I$H$F$bEPO?$7$F$O$$$i$l$J$$!#(B

$B%W%i%C%H%U%)!<%`$K$h$C$F$O(B Unwind $B>pJs$O$J$/$F$b$I$&$K$+$J$k$N$@$,!"(B $BLdBj$K$J$k$N$ONc$K$h$C$FNc$N$4$H$/(B IA-64 $B$G$"$k!#(B Intel $BMM$,(B IA-64 $B$N(B ABI $B$rDj5A$9$k$K$"$?$j(B (Itanium $B%W%m%;%C%5(B: $B%=%U%H%&%'%"5,B'$*$h$S%i%s%?%$%`!&%"!<%-%F%/%A%c!&%,%$%I(B) $B$N(B $B$h$&$K$J$5$l$?!#(B $B%U%l!<%`$rLa$9$K$OA0$N%U%l!<%`$N(B sp $B$H(B bsp $B$H(B cfm $B$,I,MW$J$N$@$,!"(B $B$=$l$,8=:_$N%U%l!<%`$N$I$3$K3JG<$5$l$k$N$+7h$^$C$H$i$s!#(B Linux $B$b(B Intel $BMM$N;EMM$KJo$o$l$?!#(B

$B$H$$$&$o$1$G(B IA-64/Linux $B$G$O(B unwind $B>pJs$,$J$$$H%P%C%/$H%l!<%9$,pJs$N7g$1$?%U%l!<%`0J9_$,Bg5,LO$KGK2u$5$l$F$7$^$&!#(B $B$I$&$9$l$P$$$$$s$@(B orz


9/2 ($BEZ(B)

[Food] $B>e3$$N$*EZ;:(B

2004$BG/!A(B2005$BG/$K%9%$%9$+$iMh$F$$$?%$%s%?!<%s%7%C%W@8$,!"(B $BCf9q?M$H9q:]7k:'$r$9$k$H$$$&$3$H$G(B $B@h7nKv$K>e3$$G5s<0$r5s$2$?$=$&$@!#(B $B$=$N7k:'<0$K5H@n$5$s$,;22C$7$FMh$?$N$G!"(B $B$*EZ;:$rLc$C$?!#(B

$BCf$K5M$aJ*$NF~$C$?%A%g%3%l!<%H!#(B $B%-!<%\!<%I$HHf3S$7$F$$$?$@$1$k$HBg$-$5$,(B $B$*J,$+$j$+$7$i!)(B

$B$7$e$5$s$K$*2q$$$9$k(B

$B7Y;!$+$i1?E>LH5v>Z$N99?7DLCN$,Mh$F$$$?$N$r;W$$=P$7$F!"(B $B8a8e$K%N%=%N%=$H99?7$K=P3]$1$k!#(B

$BESCf85=;5H$NK\20$K4s$k$H!"(B $B%P%C%?%j$H$7$e$5$s$K$*2q$$$9$k!#(B $B:#G/$N(B3$B7n$K85=;5H$K$*0z1[$7$5$l$?$HJ9$$$F$$$?$,!"(B $B0J9_$*2q$$$9$k$N$O=i$a$F!#(B

$BLH5v$N99?7$OEZMKF|$K$d$C$F$$$J$$;v$rESCf$K5$$E$/!#(BOUCH!

[Food] $B%j%H%k!&%9%W!<%s(B ($B8x<0(B)

$B=BC+$^$G=P$FI~$rGc$C$?$D$$$G$K(B $B!VL#$N;~7WBf!W$NNY$K$G$-$?%+%l!<20$K4s$C$F$_$k!#(B

$B%j%H%k%9%W!<%s(B
$B%A!<%:%+%l!<(B

$B%+%l!<$N?I$5$O!V%m%1%C%D(B($B?I8}(B)$B!W$rA*Br!#(B $B%A!<%:$N3]$+$C$?%+%l!<$@$,7k9=?I$$!#(B


9/1 ($B6b(B)

[Java] Java $B$G(B Closure (Closures for Java)

$B5lJ9$KB0$9$k$,(B JDK7 $B$+$i(B Java $B8@8l$NJ8K!$K(B Closure $B$,DI2C$5$l$k$3$H$K$J$C$?!#(B Java $B8@8l$@$1$G$J$/(B Java $B2>A[%^%7%s$N%P%$%H%3!<%IL?Na$K$bDI2C$,9T$o$l$kM=Dj!#(B $BJ8K!$H$7$F$O(B function type$B!"(Blocal function$B!"(Banonymous function (closure) $B$,DI2C$5$l$k!#(B $B0J2<$K$=$NHwK:%a%b!#(B

Function Type
$B;2>H7?$N0l$D$H$7$F(B function type $B$,F3F~$5$l$?!#(B
  • return-type(argumen-type-list)
  • return-type(argumen-type-list) throws throwable-type
  • return-type(argumen-type-list) throws throwable-type | throwable-type
$BNc30$N7?$N%j%9%H$O(B | $B$G6h@Z$k$=$&$@!#(B
int(int,int) func;  
$B$N$h$&$KJQ?t$rDj5A$9$k!#(B Function type $B7?$NJQ?t$K$O(B local function $B$+(B anonymous function $B$+(B null $B$,BeF~$G$-$k!#(B $B%a%=%C%I$J$I$N0z?t7?$H$7$F;HMQ$9$k$3$H$b2DG=!#(B
Local functions
$B%m!<%+%k4X?t$H$$$&$N$,:n$l$k$h$&$K$J$C$?!#(B
public static void main(String[] args) {
  int plus2(int x) { return x + 2; } // plus2 $B$H$$$&L>A0$N(B local function $B$rDj5A(B
  int(int) plus2b = plus2;           // plus2b $B$H$$$&L>A0$N(B function type $B7?$NJQ?t$K(B plus2 $B$rBeF~(B 
  System.out.println(plus2b(2));     // $BJQ?t(B plus2b $B$rDL$7$F(B plus2 $B$r;HMQ!#(B
}
$B$3$l$^$G$N(B Java $B$N(B anonymous class $B$O!"(B $B<+J,$rDj5A$7$F$$$k3,AX$N%9%3!<%W$K$"$k(B final $B=$>~$5$l$?%m!<%+%kJQ?t$r(B $BFbB&$KH$G$-$?$,!"(B local function $B$d(B closure $B$G$O(B final $B=$>~$5$l$F$$$J$$$b$N$G$b;2>H2DG=$N$h$&$KB+G{$,4K$a$i$l$?(B (Anonymous class $B$N%k!<%k$b4K$a$i$l$?$h$&$@(B)$B!#(B $B$I$N$h$&$K!"0J2<$NFCD'$,$"$k!#(B
  • Local function $B$O0z?t%j%9%H$H$7$F2DJQ0z?t$r$B:F5"8F$S=P$7$O2DG=!#(B
Anonymous Functions (Closures)
Local function $B$rL5L>2=$7!"(B $BD>@\(B function type $B$NJQ?t$K7k$S$D$1$k$3$H$,$G$-$k!#(B $BA0=R$N(B Function type $B$N(B plus2b $B$O(B plus2 $B$rMQ$$$:$K!"(B $B0J2<$N$h$&$K$+$1$k$=$&$@!#(B
int(int) plus2b = (int x) { return x + 2; }
int(int) plus2b = (int x) : x + 2;  // $BE|0a9=J8(B

Non-local Transfer

$B$3$l0J30$K(B closure $B$NCf$G;H$($k$N$_;H$($k(B $BFC

return
return $B$O8=:_$N(B local function $B$d(B closure $B$+$i0lCJ3,$NC&=P$r9T$&$@$1$G$J$/!"(B closure $B$r0O$s$G$$$k(B local function $B$d(B method $B$+$i(B $BBg0h(B$BCf0h(B$BC&=P$9$k5!G=$,$D$$$?$h$&$@!#(B $BNcBj$,$J$$$N$GNI$/J,$+$i$J$$$,!"(B $B0J2<$N$h$&$J%3!<%I$,3]$1$k$h$&$K$J$k$N$G$O$J$$$+$HM=A[$9$k!#(B
// closure
void(int,int) compartor = (int x, int y) {
  if (x == y) {
    return search: x;
  }
}

// local function
int search(int(int,int) comparator) {
  for (int x : arrayX ) {
    for (int y : arrayY ) {
       comparator(x,y);
    }
  }
  throw new NoFoundExceptoin();
}
break $B$H(B continue
$B$$$^$$$AF0:n$,ITL@$@$,(B break$B!"(Bcontinue $B$r $B7QB3(B(Continuation)$B$r9T$&$?$a$N5!9=$J$N$@$H;W$&$,!"(B $B$I$N$h$&$K$7$F;H$&$+$OITL@!#(B

$B$3$l$r

$B%j%s%/(B


$B@h7n$NF|5-(B(2006$BG/(B08$B7n(B) $B:#7n$NF|5-(B(2006$BG/(B09$B7n(B)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2022 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2023 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2024 | 1 | 2 | 3 | 4
$B%[!<%`%Z!<%8(B | $B:G?7$N%3%a%s%H(B50
$B%$%s%G%C%/%9(B: $B?)$YJb$-(B | Java | $B%W%m%0%i%`(B | UNIX | $B2hA|(B
$B:G?7$NF|5-$X$N%j%s%/(B | $B$3$NF|5-%Z!<%8$r$O$F$J% $B$3$NF|5-%Z!<%8$r$O$F$J%V%C%/%^!<%/$KDI2C(B
$B$O$F$J(B $B%@%$%"%j!<(B $B%"%s%F%J(B $B%V%C%/%^!<%/(B $B%V%m%0(B
Twitter | mixi | Facebook | slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp