読者です 読者をやめる 読者になる 読者になる

pslaboの日記

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


日付時刻を元素番号に対応する元素記号に置換して表示する時計を作ってみる。

なんとなく試作。実用性は全くない。

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes qw(gettimeofday);

my @element;
$|=1;


sub main {
        &init;

        # この while の中身は別の関数にすべきだったかも。。。
        while(1) {
                my ($unixtime, $microsec) = gettimeofday;
                my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
                  = localtime($unixtime);
                $year += 1900;
                $mon += 1;

                my $year_upper2digits = int($year/100);
                my $year_lower2digits = $year - $year_upper2digits * 100;
                $year_upper2digits = $year_upper2digits = 0 ? 100 : $year_upper2digits;
                $year_lower2digits = $year_lower2digits = 0 ? 100 : $year_lower2digits;

                # 時刻の 0 時は24時とする。
                $hour = $hour = 0 ? 24 : $hour;

                # 分、秒の 0 は 60 とする。
                $min  = $min  = 0 ? 60 : $min;
                $sec  = $sec  = 0 ? 60 : $sec;

                # 1秒以下の秒は1/100単位で処理し、0 =100 とする。
                $microsec = $microsec / 10000;
                $microsec = $microsec = 0 ? 100 : $microsec;

                printf "%d/%02d/%02d ", $year, $mon, $mday, $hour, $min, $sec, $microsec;
                printf "%02d:%02d:%02d.%02d\n", $hour, $min, $sec, $microsec;
                printf "%2s%2s/%2s/%2s ",
                        $element[$year_upper2digits]->{symbol},
                        $element[$year_lower2digits]->{symbol},
                        $element[$mon]->{symbol},
                        $element[$mday]->{symbol};

                printf "%2s:%2s:%2s.%2s\r\033M",
                        $element[$hour]->{symbol},
                        $element[$min]->{symbol},
                        $element[$sec]->{symbol},
                        $element[$microsec]->{symbol};

#               select undef, undef, undef, 1;
                # これくらいの wait にしたほうが雰囲気が出るような気がする。
                select undef, undef, undef, 0.13;
        }
}

&main;

sub init {
        # 本来ならば $element[0] が参照されることは無いはずだが、
        # 万が一参照された場合は 60 と同じ値を返す。
        $element[0]={ symbol => 'Nd', name=>'ネオジム'};

        $element[1] ={ symbol => 'H' , name=>'水素'};
        $element[2] ={ symbol => 'He', name=>'ヘリウム'};
        $element[3] ={ symbol => 'Li', name=>'リチウム'};
        $element[4] ={ symbol => 'Be', name=>'ベリリウム'};
        $element[5] ={ symbol => 'B' , name=>'ホウ素'};
        $element[6] ={ symbol => 'C' , name=>'炭素'};
        $element[7] ={ symbol => 'N' , name=>'窒素'};
        $element[8] ={ symbol => 'O' , name=>'酸素'};
        $element[9] ={ symbol => 'F' , name=>'フッ素'};
        $element[10]={ symbol => 'Ne', name=>'ネオン'};
        $element[11]={ symbol => 'Na', name=>'ナトリウム'};
        $element[12]={ symbol => 'Mg', name=>'マグネシウム'};
        $element[13]={ symbol => 'Al', name=>'アルミニウム'};
        $element[14]={ symbol => 'Si', name=>'ケイ素'};
        $element[15]={ symbol => 'P' , name=>'リン'};
        $element[16]={ symbol => 'S' , name=>'硫黄'};
        $element[17]={ symbol => 'Cl', name=>'塩素'};
        $element[18]={ symbol => 'Ar', name=>'アルゴン'};
        $element[19]={ symbol => 'K' , name=>'カリウム'};
        $element[20]={ symbol => 'Ca', name=>'カルシウム'};
        $element[21]={ symbol => 'Sc', name=>'スカンジウム'};
        $element[22]={ symbol => 'Ti', name=>'チタン'};
        $element[23]={ symbol => 'V' , name=>'バナジウム'};
        $element[24]={ symbol => 'Cr', name=>'クロム'};
        $element[25]={ symbol => 'Mn', name=>'マンガン'};
        $element[26]={ symbol => 'Fe', name=>'鉄'};
        $element[27]={ symbol => 'Co', name=>'コバルト'};
        $element[28]={ symbol => 'Ni', name=>'ニッケル'};
        $element[29]={ symbol => 'Cu', name=>'銅'};
        $element[30]={ symbol => 'Zn', name=>'亜鉛'};
        $element[31]={ symbol => 'Ga', name=>'ガリウム'};
        $element[32]={ symbol => 'Ge', name=>'ゲルマニウム'};
        $element[33]={ symbol => 'As', name=>'ヒ素'};
        $element[34]={ symbol => 'Se', name=>'セレン'};
        $element[35]={ symbol => 'Br', name=>'臭素'};
        $element[36]={ symbol => 'Kr', name=>'クリプトン'};
        $element[37]={ symbol => 'Rb', name=>'ルビジウム'};
        $element[38]={ symbol => 'Sr', name=>'ストロンチウム'};
        $element[39]={ symbol => 'Y' , name=>'イットリウム'};
        $element[40]={ symbol => 'Zr', name=>'ジルコニウム'};
        $element[41]={ symbol => 'Nb', name=>'ニオブ'};
        $element[42]={ symbol => 'Mo', name=>'モリブデン'};
        $element[43]={ symbol => 'Tc', name=>'テクネチウム'};
        $element[44]={ symbol => 'Ru', name=>'ルテニウム'};
        $element[45]={ symbol => 'Rh', name=>'ロジウム'};
        $element[46]={ symbol => 'Pd', name=>'パラジウム'};
        $element[47]={ symbol => 'Ag', name=>'銀'};
        $element[48]={ symbol => 'Cd', name=>'カドミウム'};
        $element[49]={ symbol => 'In', name=>'インジウム'};
        $element[50]={ symbol => 'Sn', name=>'スズ'};
        $element[51]={ symbol => 'Sb', name=>'アンチモン'};
        $element[52]={ symbol => 'Te', name=>'テルル'};
        $element[53]={ symbol => 'I' , name=>'ヨウ素'};
        $element[54]={ symbol => 'Xe', name=>'キセノン'};
        $element[55]={ symbol => 'Cs', name=>'セシウム'};
        $element[56]={ symbol => 'Ba', name=>'バリウム'};
        $element[57]={ symbol => 'La', name=>'ランタン'};
        $element[58]={ symbol => 'Ce', name=>'セリウム'};
        $element[59]={ symbol => 'Pr', name=>'プラセオジム'};
        $element[60]={ symbol => 'Nd', name=>'ネオジム'};
        $element[61]={ symbol => 'Pm', name=> 'プロメチウム'};
        $element[62]={ symbol => 'Sm', name=> 'サマリウム'};
        $element[63]={ symbol => 'Eu', name=> 'ユウロピウム'};
        $element[64]={ symbol => 'Gd', name=> 'ガドリニウム'};
        $element[65]={ symbol => 'Tb', name=> 'テルビウム'};
        $element[66]={ symbol => 'Dy', name=> 'ジスプロシウム'};
        $element[67]={ symbol => 'Ho', name=> 'ホルミウム'};
        $element[68]={ symbol => 'Er', name=> 'エルビウム'};
        $element[69]={ symbol => 'Tm', name=> 'ツリウム'};
        $element[70]={ symbol => 'Yb', name=> 'イッテルビウム'};
        $element[71]={ symbol => 'Lu', name=> 'ルテチウム'};
        $element[72]={ symbol => 'Hf', name=> 'ハフニウム'};
        $element[73]={ symbol => 'Ta', name=> 'タンタル'};
        $element[74]={ symbol => 'W' , name=> 'タングステン'};
        $element[75]={ symbol => 'Re', name=> 'レニウム'};
        $element[76]={ symbol => 'Os', name=> 'オスミウム'};
        $element[77]={ symbol => 'Ir', name=> 'イリジウム'};
        $element[78]={ symbol => 'Pt', name=> '白金'};
        $element[79]={ symbol => 'Au', name=> '金'};
        $element[80]={ symbol => 'Hg', name=> '水銀'};
        $element[81]={ symbol => 'Tl', name=> 'タリウム'};
        $element[82]={ symbol => 'Pb', name=> '鉛'};
        $element[83]={ symbol => 'Bi', name=> 'ビスマス'};
        $element[84]={ symbol => 'Po', name=> 'ポロニウム'};
        $element[85]={ symbol => 'At', name=> 'アスタチン'};
        $element[86]={ symbol => 'Rn', name=> 'ラドン'};
        $element[87]={ symbol => 'Fr', name=> 'フランシウム'};
        $element[88]={ symbol => 'Ra', name=> 'ラジウム'};
        $element[89]={ symbol => 'Ac', name=> 'アクチニウム'};
        $element[90]={ symbol => 'Th', name=> 'トリウム'};
        $element[91]={ symbol => 'Pa', name=> 'プロトアクチニウム'};
        $element[92]={ symbol => 'U' , name=> 'ウラン'};
        $element[93]={ symbol => 'Np', name=> 'ネプツニウム'};
        $element[94]={ symbol => 'Pu', name=> 'プルトニウム'};
        $element[95]={ symbol => 'Am', name=> 'アメリシウム'};
        $element[96]={ symbol => 'Cm', name=> 'キュリウム'};
        $element[97]={ symbol => 'Bk', name=> 'バークリウム'};
        $element[98]={ symbol => 'Cf', name=> 'カリホルニウム'};
        $element[99]={ symbol => 'Es', name=> 'アインスタイニウム'};
        $element[100]={ symbol => 'Fm', name=> 'フェルミウム'};
        $element[101]={ symbol => 'Md', name=> 'メンデレビウム'};
        $element[102]={ symbol => 'No', name=> 'ノーベリウム'};
        $element[103]={ symbol => 'Lr', name=> 'ローレンシウム'};
        $element[104]={ symbol => 'Rf', name=> 'ラザホージウム'};
        $element[105]={ symbol => 'Db', name=> 'ドブニウム'};
        $element[106]={ symbol => 'Sg', name=> 'シーボーギウム'};
        $element[107]={ symbol => 'Bh', name=> 'ボーリウム'};
        $element[108]={ symbol => 'Hs', name=> 'ハッシウム'};
        $element[109]={ symbol => 'Mt', name=> 'マイトネリウム'};
        $element[110]={ symbol => 'Ds', name=> 'ダームスタチウム'};
        $element[111]={ symbol => 'Rg', name=> 'レントゲニウム'};
        $element[112]={ symbol => 'Cn', name=> 'コペルニシウム'};
        $element[113]={ symbol => 'Uut', name=> 'ウンウントリウム'};
        $element[114]={ symbol => 'Fl', name=> 'フレロビウム'};
        $element[115]={ symbol => 'Uup', name=> 'ウンウンペンチウム'};
        $element[116]={ symbol => 'Lv', name=> 'リバモリウム'};
        $element[117]={ symbol => 'Uus', name=> 'ウンウンセプチウム'};
        $element[118]={ symbol => 'Uuo', name=> 'ウンウンオクチウム'};

}