5月 292011
 

「CPUコレクション」の第36回目です。今回も Socket370 の登場です。しかし、この CPU は良く解らないのであります。

Socket370 の Core は Katmai -> Coppermine と来て、この後登場する Tualatin となるはずなんですが、ではこの CPU は一体何?となるのであります。

まぁ、この辺り、僕自身は AMD の CPU を使っていたので Intel の CPU には疎かったと言う事情があるかとは思いますが・・。

なにはともあれまずは写真を掲載しましょう。

Socket370_PentiumIII_2_1.jpg

前回の 34 回の時に掲載した CPU とは明らかに、見た目が違うんですね。

これはただ単に、Intel が CPU クロック up したのでいっそことデザインも変えてしまえーっ!! などと思っただけなのでしょうかねぇ?

もしくは僕が全然全く Socket370 を解っていないだけなのでしょうか?
この辺りの事情通の方いましたら、是回お教え頂けませんでしょうか。

こちらが CPU の裏側になります。

Socket370_PentiumIII_2_2.jpg

ブツブツが付いている感じですなぁ;-)。 34 回の時の PentiumIII よりも二個少ない。

Socket370_PentiumIII_2_3.jpg

そして、このデザインの CPU も PentiumIII と Celeron の両方が存在しているんですな。

5月 202011
 

さてさて。「CPUコレクション」の第35回目です。前回から Socket370 になっています。今回登場するのは Coppermine コアの Celeron です。

Socket370 は Katmai コアの Celeron が初めて登場し Slot1 は終演を迎えるのでありますね。この CPU はそういった意味で言えば Socket370 の二個目の Celeron と言うことになるかと思います。

あわせて、パッケージも PPGA から FC-PGA になった版ですね。

Socket370_Celeron_FCPGA_1.jpg

見た感じも PentiumIII と特に変わるところは無いようです。

こちらは CPU の裏側です。

Socket370_Celeron_FCPGA_2.jpg

PentiumIII とは違って、数個のコンデンサが存在していないですね。本当にこの飛び出ているのかコンデンサなのか、僕は詳しく知りませんが・・f(^^;;。けど、こうやって並べて観察してみると細かいところの違いまで目について中々おもしろいですね。

この辺りの Socket370 は 会社の廃棄 PC と言うか、サーバから頂いてきたものがほとんどでしょうか。ただ、PentiumIII があっても Celeron が無かったりしたので何個かはアキバでジャンク扱いで買ってきたモノもあるような気がします。

それにても Socket370 な CPU ってのは変なんですよねぇ・・。この後、まだまだ続きますが色々なタイプがあるんですなぁ。

5月 122011
 

ちょっとわけあってカレンダーをホゲっているんですが、祝日管理というのが大変に面倒であることが判明した。 perl でホゲっているのでウェブで探したり、モジュールを検討したんだけど、どうもしっくり来ない。祝日が変更になるとソースコードを改変したり、モジュールをインストールしなければならなかったりで、ずっと保守がつきまとう・・。orz。

何かないかなぁ?とか探していたら google カレンダーの API を叩いて祝日をゲットして来る。ってのを見つけたけど XML のパースとか、どーもやることが多すぎる。他に何か無いかなぁ。とか探したり、手段を見つけようとしてます。あ。そー言えば、僕、ical サーバ作ったじゃん。てのを思い出したので、ical サーバから情報持って来られないか調べたけど、ちょっとダメっぽい。

それならば。と思いついたのが、ics ファイルをパースするサブルーチン作ってしまえ。ってことで非常にオオチャクな発想をしてしまったのであります;-)。

まず、Apple のサイトから日本の休日カレンダーを取ってきます。MacOSX のアプリとして iCal があり、それ用に提供している ics ファイルがたくさんある URL があります。

iCal カレンダーライブラリ

ここから日本の祝日用カレンダーを2,3ヶ月に一度 cron で持ってくるようにします。祝日はそーそー更新されることは無いと思うので頻度は低くて大丈夫。

そして、Apple が提供している情報は多分 iCal アプリがある間は公開し続けてくれるだろうと勝手に思っているので安心感がある;-)。

% ftp -a http://ical.mac.com/ical/Japanese32Holidays.ics

  さてと。これで絶えず最新の祝日情報がゲットできました。あとはこれをパースして祝日を抽出すれば良いだけですね;-)。
僕の書いたサンプルコードはこんな感じ。もっと美しくかける方いましたら絶賛募集中;-)。
 
#!/usr/bin/perl
use strict;
use Date::Manip;
# ## main # my $date = shift; if ($date) { my $data = &holiday_check($date); print $data ."\n\n"; } else { for (my $mm = 1;$mm < 13;$mm++) { for (my $dd = 1;$dd < 32;$dd++) { my $date = "2011" . sprintf("%02d",$mm) . sprintf("%02d",$dd); my $data = &holiday_check($date); print $data ."\n" if ($data); } } } exit 1;
# ## 祝日のチェック # sub holiday_check { my $date = shift; my $name = ""; my $day = ""; my $f = 0;
open(CAL,"<./Japanese32Holidays.ics"); while( my $line = <CAL> ) { $line =~ s/\r\n//g; chomp $line; $f = 0; if ($line =~ /^BEGIN:VEVENT/) { while( my $line = <CAL> ) { $line =~ s/\r\n//g; chomp $line; last if ($line =~ /^END:VEVENT/); # 日付が決まっている祝日の場合はそれを利用する if ($line =~ /^(DTSTART;VALUE=DATE:)/) { $line =~ s/$1//; $day = $line; $f = 1 if ($day eq $date); } # 祝日名を取得 if ($line =~ /^(SUMMARY:)/) { $line =~ s/$1//; $name = $line; } # 祝日法で決まっている祝日の情報の取得 if ($line =~ /^RRULE:/) { my $yy = substr($date,0,4); my $mm = ""; my $dd = ""; my @tmp = split(";",$line); foreach my $a (@tmp) { # BYMONTH は何月かの情報 $mm = $1 if ($a =~ /BYMONTH=(.*)/); # BYDAY は月曜日が祝日の時の計算 # 今のところは月曜日しか無いので MO の狙い撃ち # 祝日法が変わったら改修しようね;-)。 if ($a =~ /BYDAY=(.*)MO/) { $dd = $1 ; my @a = ParseRecur("*$yy:$mm:$dd:1:0:0:0"); my $d = substr($a[0],0,8); #print "@a,$a[0] : $date,$d\n"; if ($date eq $d) { $f = 1; last; } } } # BYDAY が無い RRULE の場合は DTSTART の月日を利用する unless ($line =~ /BYDAY=/) { my $datesv = $date; my $d = substr($datesv,4,4); if ($day =~ /$d$/) { $f = 1; last; } } } } last if ($f); } } close(CAL);
my $data = ""; if ($f) { $data = "$date : $name "; } return($data); }

 
このプログラムを CheckHoliday.pl として保存して、実行する場合は以下のような感じ。

 % ./CheckHoliday.pl 20110718
20110718 : 海の日 (Marine Day)

 
スクリプトの引数に YYYYMMDD を指定します。その日が祝日であった場合にはその名前を表示します。日付を指定しない場合は 2011 年の祝日全てを表示します。メインのほうは皆さんの環境に合わせて作ってください。今回はサブルーチンのほうがメインになります。

このスクリプト、ちょっと解説すると以下になります。

1. 基本的には VCALENDAR 形式の ics ファイルをパースします。
2. 振替休日 など、日付が固定しているデータは DTSTART を参照します。
3. 海の日 など、第二、三月曜日が休みな場合は RRULE の BYDAY を見ます。
4. RRULE に BYDAY が無いヤツは国が日付を決めた祝日なので DTSTART の MMDD のみを参照します。

これで祝日の情報を取得します。Date::Manip モジュールの ParseRecur は第何週の日付を返してくれるモジュールでこれが非常に助かりました。

と、言うことで、日付を与えればその日付が祝日であれば値を返す。と言うサブルーチンの完成です。

速度的にみると 20110101 から 20111231 までを調べるとだいたい 1.5 秒くらいかかりますかねぇ。ちょっと重いか?

良かったら参考にしてください。あ。もっと綺麗なコード、絶賛募集中です;-)。

5月 092011
 

いやね。最近 ports-current から csup して来て portupgrade -arR すると graphics/netpbm だけコンパイルエラーになって make が完了しなかった。

その後「今インストールしてあるやつを先に deinstall しろ。」ってメッセージが出力されるようになったのでその通りに試したら、おぉっ!! ちゃんと make が完了してインストールできるようになった。ヨカッタヨカッタ。

しかし、サーバ上で graphics/netpbm をインストールしようとしたらなんとこいつは libX11 などと言う、サーバにはまぁるで関係のないライブラリと言うか ports をインストールするようになっていた。アイタタタタ・・。orz。

ちょっと前までは netpbm-10.26.64 と、言うバージョンをインストールしていた。csup したら netpbm-10.35.80 をインストールしようとする。こいつがなんとっ!! X11 の ports をガサゴソとインストールしてくれちゃうんですな。 graphics/netpbm/Makefile を眺めても USE_XORG= x11 なんて書いてある。でもってどう見ても WITHOUT_X11=yes ってのが有効にならない・・。

サーバで X は要らんだろう。ということで irc の皆さんと話したり色々調べたりした結果どうやら /usr/local/bin/pamx というのが X のライブラリをリンクしているのを発見。ソースコード的には netpbm-10.35.80/other/pamx。 こいつは 10.26.64 のころには存在しないソースなわけね。

では pamx は何をするコマンドなのか調べてみたら、画面にイメージを表示するコマンドみたい。X-Window の壁紙設定コマンドみたいな感じかな。そんなの既にたくさんあるのでわざわざ netpbm で車輪の再開発することもなかろうに・・。などと思ったのであります。

と、言うことで、 graphics/netpbm の make 時に make WITHOUT_X11=yes と指定できる Makefile を用意したので X11 が必要無い環境で netpbm を利用する方は参考にしてみてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-netpbm-10.35.80_WITHOUT_X11_Makefile

WITHOUT_X11=yes を指定すると pamx を make、install しないので X11 のライブラリは要らなくなるようにしています。 ただ、 pkg-plist はいじってないので make deinstall 時に実際にインストールされなかった bin/pamx が無いよ。と言われますが、まぁ、その点は許してください;-)。

ちなみに僕はサーバ上で graphics/netpbm を利用していますが、ひとつは photo_gallery を利用しているため、もうひとつは、日本道路交通情報センターの交通情報の画像を取ってきて携帯電話からアクセスして表示できるように 90 度傾けたりサイズを変更したりするために利用しているのであります。

サーバ上では X11 は要らん。しかし graphics/netpbm は利用しているのであります;-)。

5月 022011
 

こんにちは。世間はゴールデンウィークですが、皆様いかがお過ごしでしょうか。「CPUコレクション」の第34回です。前回の AthlonXP Barton コアで AMD の CPU も一段落したので Intel 系 CPU の系譜をなぞっていって見たいと思います。

前回掲載した、自分で利用した Katmai コア の Celeron 以降、 Intel CPU は購入したことがありません。ただし、会社で利用している PC サーバのほとんどが当時としては PentiumIII が主流だっのではないでしょうか。

こんな感じで今回登場するのは Coppermine コアの PentiumIII。Katmai コアで Socket370 の PentiumIII って存在していないですよねぇ?持っていないんですけども。

Katmai コア の Celeron は PPGA、Coppermine コアの PentiumIII および Celeron は FC-PGA。共にどちらも Socket370 なのに非互換なソケット。こらー納得いかんっ!!

Socket370_PentiumIII_FCPGA_1.jpg

AMD の Athlon CPU と一緒でコアが剥き出しの状態の CPU となっています。その割りには「コア欠け」って言葉を聞きませんでしたね。

コアにヒートスプレッタなどが無いのでパッケージの上下の黒い部分に CPU の情報が書いてあるのて
あります。

こっちが裏側です。

Socket370_PentiumIII_FCPGA_2.jpg

表側がペロっとしている分、裏側はゴツゴツしているですね。けど、まぁ、CPU の上にはクーラーが乗るのでまぁ、そんなことはどうでも良いか。とわ言いつつ、コレクションとして持つと大体こんな感じなります。

ちなみに同じコアの Celeron と並べるとこんな感じ。

Socket370_PentiumIII_FCPGA_3.jpg

上にも書きましたが、PentiumIII というのは自分で購入して利用したことが無いのであります。今回から数回に渡り Socket370 に突入していきますが、会社の廃棄 PC から頂いてきたり、それで足りないときにはアキバのジャンク屋さんで見つけてきてなんとか全種類揃えた。と言う感じなのであります;-)。