I ♥ WordPress

Touch Diamond向けのページを作るには、、、
2009/01/03 23:01 posted by kunkichi

Touch Diamond の Opera のブックマークが使いにくいので、よく使うサイト一覧のHTMLを作ってサーバにアップしたのだけど、どうやっても横幅が小さくなる。折り返すほど長い文字列はないのだけどなぁ、、、

New Year’s Greeting & Resolutions of 2009
2009/01/02 01:36 posted by kunkichi

あけましておめでとうございます。気がついたら2008年も終わってしまい、いろいろな目標も達成できず、とほほ、、、今年はもっとがんばります。

で話は変わるんですが、

僕の好きなドラマに「フレンズ」という海外ドラマがあって、シーズン5の1話に「今年は何か一つ改善する」とみんなに宣言するエピソードがあったのを思い出しました。まあ日本語的に言うと「新年の誓い」みたいな感じで。

ということで、僕も宣言してみたいと思います。2009年の10の誓い。

  1. 短くても毎日勉強する時間を作る

    去年の10月頃から目標を決めて勉強していたのですが、年末に忙しくなったのにかまけてサボってしまう日も多々あり、、、やっぱりきちんと短くても毎日続けることが大事。実際に勉強したことが身に付いたのを実感できた瞬間もあったしね。

  2. もっとたくさん本を読む

    去年は後半から結構読んだつもりではあるのだけど、もっとペースを上げてたくさん読みたい。特にコンピュータ以外の分野を増やしたい。

  3. アウトプットをきちんとする

    勉強とか読書とか、なんでもそうなのだけど、やっぱりアウトプットすることを意識しないとダメ。ちゃんとブログを更新すること。

この辺は去年と変わらないし、これからも変わらない、基本的なことなのでしっかりやっていくこと。
ここからはちょっと具体的に。

  1. 統計学を勉強する

    コンピュータ以外の分野の本を読みたい、というのを具体的にいうとこれ。前から統計学はいろいろな意味で大事な気がしていて、きちんと勉強したいと思っていたので。

  2. アプリケーションを作って公開する

    運用といえど、多少のアプリ開発力はいろんな意味で必須。アプリケーションを少なくとも一つは作って公開すること。

  3. フレームワークを習得する

    アプリケーションを作るにあたっては、やっぱりフレームワークを使って、迅速に開発することを覚えたい。言語・フレームワークの取捨はまだ決めてないけど、PerlかPHPで。

  4. 自分用ポータルサイトを作る

    このブログとかwikiはレンタルサーバで、日々のスケジュールはGoogleカレンダーで、ToDoはCheck*Padで、といろいろ分散してやってるのだけど、これを一本化、、とは言わないまでもw、もっと便利に使える・カスタマイズできるようにするため、徐々に自宅サーバへ移行していきたい。せっかくTouch Diamondもゲットしたんだし、Touch Diamond向けに使いやすいようにもしていければ。

  5. 勉強会に参加する

    仕事以外での技術者としての横のつながりをもっと増やしていきたい。ネット上はもちろんだけど、実際に顔を見れる勉強会に積極的に参加していきたい。

  6. ダイエット(笑)

    健康診断でメタボ注意報が出ているので、警報が出る前になんとかしないと(爆)。間食をしないようにします。

あれ?9個しかない。まあいいか(笑)

今年もよろしくお願い致します。

[時間割:Perl]『ミニマルPerl』その10
2008/12/17 22:56 posted by kunkichi

どっひゃー!もう12月も半ばまで。サボりにサボりまくったな〜、、、とはいうものの一応本はどんどん読み進めてまして、いろいろと活用もしております、はい、、、さて、気を取り直してアウトプット再開です。

前回(ってかなり前だな、、、orz)sedのところまで進んでたので、今回からはAWKの機能をperlで実現していきます。

AWKよりもPerlが優れているところ

  • けちなマッチングが行える。
    例えばkunkichi:*:100:100:Test User1:/bin/bash:みたいな/etc/passwdのエントリの1カラム目だけが取りたい場合。普通に書くと、$ perl -wnl -e 's/^(.+):/$1/g and print $1;' /etc/passwd
    kunkichi:*:100:100:Test User1:/bin/bash
    となってうまく行かないパターンにハマりがち。もちろん以下のように正規表現で”:”を考慮するように見直せばオーケーだけど、、$ perl -wnl -e 's/^([^:]+):.*/$1/g and print $1;'
    kunkichi
    Perlだと、こんなことしなくても、ケチなマッチング(+の後の?がそれ)を使って「マッチする最短の単位」で拾える。$ perl -wnl -e 's/^(.+?):/$1/g and print $1;' /etc/passwd
    kunkichi
    うーん、awk でできないよ、っていうよい例が出ませんでした、笑
  • レコードセパレータのマッチング。改行とかもマッチングで拾えるということ。サンプルとして以下のようなテキストデータがあるとしてThis is a sample sentence and
    using Perl, you can match new
    line with regular expression.
    “new line”をマッチさせてみる。$ perl -00 -wnl -e '/new\nline/ and print;' sample.txt
    This is a sample sentence and
    using Perl, you can match new
    line with regular expression.
    ちなみに\sでもOK。$ perl -00 -wnl -e '/new\sline/ and print;' sample.txt

特殊変数いろいろ

  • 以下のサンプルデータを使います。# cat beatles.txt
    John Lennon
    Ringo Starr
    Paul McCartney
    George Harrison
    awkの場合、$ awk '{ print NR ":" $0 "(Nickname:" $1 ")"  }' beatles.txt
    1:John Lennon(Nickname:John)
    2:Ringo Starr(Nickname:Ringo)
    3:Paul McCartney(Nickname:Paul)
    4:George Harrison(Nickname:George)
    同じことをPerlでやると、$ perl -wnla -e 'print "$.:$_(Nickname:$F[0])"' beatles.txt
    1:John Lennon(Nickname:John)
    2:Ringo Starr(Nickname:Ringo)
    3:Paul McCartney(Nickname:Paul)
    4:George Harrison(Nickname:George)
  • セパレータ関連
    以下のサンプルデータを使います。$ cat 1_10.txt
    1 2 3 4 5 6 7 8 9 10
    セパレータを入力・出力で切り替えてみます。AWKの場合、awk 'BEGIN{RS=" ";ORS=",";}{ print $0 }' sample.txt
    1,2,3,4,5,6,7,8,9,10
    Perlの場合、perl -wnl -e 'BEGIN{$/=" ";$\=","}print;' sample.txt
    1,2,3,4,5,6,7,8,9,10
  • フィールドセパレータ。さっきのbeatles.txtをサンプルに使います。
    AWKの場合、awk 'BEGIN{FS=" ";OFS="|";}{ print $1, $2;}' beatles.txt John|Lennon
    Ringo|Starr
    Paul|McCartney
    George|Harrison
    Perlで。perl -wnlaF"\s" -e 'BEGIN{$,="\|";}print $F[0],$F[1];' beatles.txt
    John|Lennon
    Ringo|Starr
    Paul|McCartney
    George|Harrison
    Perlの場合は入力フィールドセパレータは変数がないので-Fを使う点に注意。
  • フィールド数
    AWKの場合、$ awk '{ print NF }' beatles.txt
    2
    2
    2
    2
    Perlの場合、$ perl -wnla -e '$num=@F;print $num;' beatles.txt
    2
    2
    2
    2
  • 引数の取得。
    AWKの場合、$ cat argv.awk
    BEGIN{
      print "ARGV=\"" ARGV[0],ARGV[1],ARGV[2] "\"";
      print ARGC;
    }
    $ awk -f argv.awk arg1 arg2
    ARGV="awk arg1 arg2"
    3
    AWKの場合は、自分自身も引数に含まれる。Perlの場合。$cat argv.pl
    !/usr/bin/perl -wl
     
    print "ARGV=\"$ARGV[0] $ARGV[1]\"";
    my $num = @ARGV;
    print "$num";
    $ perl argv.pl arg1 arg2
    ARGV="arg1 arg2"
    2
    Perlの場合は自分自身は引数に含まれない($0を使う)

変数展開

  • AWKではダブルクォートの中での変数展開ができないので、ちょっとややこしい。$ awk 'BEGIN{GUITAR="John";}{ if( $1 ~ "^" GUITAR ) print $0; }' beatles.txt
    John Lennon
  • Perlだとらくちん$ perl -wnl -e 'BEGIN{$guitar="John";}/^$guitar/ and print;' beatles.txt
    John Lennon

その他

  • -i拡張子機能はAWKにはない。
  • セパレータで区切られた文字列を自動的にフィールドに入れる機能はPerlではデフォルト無効。AWKでは常に有効。仮に使わなくても。
  • Perlはモジュールが使える。

AWKのほうが優れている点

  • シンプルなプログラムではサイズが小さくなる。
  • 引数の個数がARGCという変数だけでとれる。Perlは@ARGVをスカラーに一旦入れないといけない。

とりあえずAWKとの違いはこんな感じ。まあgrepやsedに比べるとそれほど大きな差はないけど、AWKでできることは大概できるって感じかな。

次回も引き続き、PerlでAWKの処理をやります。AWKの神髄とも言えるフィールド処理の話です。では。

[時間割:Perl]『ミニマルPerl』その8
2008/11/05 02:49 posted by kunkichi

昨日は祝日で外に遊びにいってたのですが、一応ノルマは守りました。ということで月曜日の『Perl』の勉強成果をアップ。引き続き、sedをPerlで置き換えてみます。

ミニマルPerl Unix/LinuxユーザのためのPerl習得法
Tim Maher
オライリージャパン
売り上げランキング: 96883
  • テンプレート的に使う。以下のようなメールの雛形ファイルがあるとして、From: %%FROM%%<%%ADDR%%>
    To: %%TO%%
    Subject: [%%LEVEL%%] %%SUBJECT%%
     
    %%CONTENTS%%
     
    ------------------------------
    This mail is automatically sent.
    これを置き換えるスクリプトをmake_mail.plとする。内容は以下#!/usr/bin/perl -s -wpl
     
    s/ %%FROM%%     /$from/xg;
    s/ %%ADDR%%     /$addr/xg;
    s/ %%TO%%       /$to/xg;
    s/ %%LEVEL%%    /$level/xg;
    s/ %%SUBJECT%%  /$subject/xg;
    s/ %%CONTENTS%% /$contents/xg;
    で実行するコマンドは以下。$ ./make_mail.pl -from='kunkichi' -addr='kunkichi@example.com' -to='admin@example.com' -level='CRITICAL' -subject='SERVER DOWN!!!' -contents='Server is down at 10:25. Please Check!!!' mail.tpl出力結果:From: kunkichi <kunkichi@example.com>
    To: admin@example.com
    Subject: [CRITICAL] SERVER DOWN!!!
     
    Server is down at 10:25. Please Check!!!
     
    ------------------------------
    This mail is automatically sent.
    -sで引数を変数として取る。正規表現でxを使って正規表現中にスペースを含めるので、読みやすい。ただし、変換前文字だけ。
  • 特殊文字のマッチングを使って変換もできる。8進数→ASCII文字とか、\c制御文字とか。
  • -iを使って、編集元のファイルを直接変換&バックアップ。$ perl -i.BAK -wpl -e 's/aaa/bbb/g;' sample.txtオリジナルファイルは、sample.txt.BAKとしてリネームされて、sample.txtに変換後の結果が上書きされる
  • -iを使う場合は、-p、もしくは-n&printを使わないと、ファイルに何も出力されない、空ファイルができるので、注意!
  • スクリプト化しても便利。#!/usr/bin/perl -s -i.BAK -wpl
    s/$re/$after/g;
    -sでオプションを取ってオリジナルファイルを変換、元ファイルは.BAKをつけてリネーム。
  • 正規表現でx修飾子を使うと、スペースだけじゃなくてコメントも入れれる。s/
      ^          # 行頭が
        aaa     # aaaで始まり
        .*        # 任意の文字が0回以上続いて
        bbb    # bbbで
      $          # 行末が終わる
    /changed/gx; # ところを"changed"に置き換える。
  • -iを使ってバックアップをとっても、同じことを2回実行すると、結局元々のオリジナルは失われてしまう(バックアップがバックアップで上書きされる)。こういう場合は、-iの拡張子に毎回異なるもの、例えばシェル変数で時間とか、を指定すれば何回実行してもOK。例えば$SECONDSで、シェル起動後の秒数とか。$ perl -i.$SECONDS -wpl -e 's/aaa/bbb/g;' sample.txt
  • -iで拡張子を指定する代わりに、-iを単体で使って、$^Iという拡張子を示す特殊変数に拡張子を指定することもできる。例えばPIDとか。#!/usr/bin/perl -i -wpl
    BEGIN{ $^I=$$; }
    s/aaa/bbb/g;
    ただしこれはコマンドラインからの実行では、$$はシェルで展開されてシェルのPIDが入ってくるので、同じシェルで2回実行すると全く意味が無くなる。あくまでもスクリプト内で使う。

sedのところは残り少しです。

[s21ht]梅田某所より
2008/10/28 21:24 posted by kunkichi

speed_test_umeda.jpg

おお、本領発揮。

[s21ht]さらにいれたもの
2008/10/24 00:46 posted by kunkichi

だいぶ Windows Mobile にも慣れてきたので、さらにアプリを追加。メモ。

  • SandGrass
    タイマー。シンプルな作り。Lifehacksなタイマーからラーメンまで。
  • Offisnail Date+ β005
    スケジューラ。標準のものよりも見やすく使いやすい。s21htの場合は、新しいベータ版で。
  • POsync
    スケジューラをGoogleカレンダーと同期。
  • Evernote client
    evernoteのクライアントソフト。メモはこっちに置き換え。

あとこれをPDA工房で買いました。

これで外でも充電OKです。

時間割をまた見直しました
2008/10/21 02:10 posted by kunkichi

先月1ヶ月の時間割達成率を見直した結果、またちょっと変更しました。

jikanwari_20081021.jpg

  • 『Python』と『絵』の時間は中止しました。
    • 『Python』の方は、さすがに3言語同時に勉強ってのは混乱しちゃってそれぞれが中途半端になってる気がしたので、どれか一つを減らすことにしました。で、C言語はサーバにも絡むし、Perlは仕事上使うことも多い、となると残りは、、、ということでPythonが脱落の憂き目に、、、あぁ、2度目の挫折、、、
    • 『絵』の方は、楽しかったんだけど、なんとなく今の時点ではそれほど積極的に勉強できていない感じがしたので。教科書をもう少し工夫すれば良かったかもしれないけど。
  • 代わりに、『C言語』と『Perl』を2時間にしました。やっぱり今の仕事や知識に直結する部分が大きいので、モチベーションが出るのは大きい。

ということで、あとは、アウトプットをなんとかせねばだなぁ、、、今も追いついてないし。

[s21ht]とりあえず入れたもの
2008/10/17 21:50 posted by kunkichi

昨日は肩こりがひどくて頭まで痛かったので、今日はカスタマイズの続きを。とりあえずいろいろ試してみました。

  • Googleマップ
    GPS搭載機って初めてなんですが、これは楽しい。タッチパネルはいいなぁ。
  • WMWifiRouter
    いやー、苦労しました。最初よくわからないで設定したら全くつながらなくて、1回フォーマットした後に画面の指示通りきっちりやり直したらいけました。WifiとBluetoothのON/OFF、あときちんとExitで終了することに注意した方がいいかもしれません。あと未だにDHCPの払い出しはしてくれません。スタティックでつなげてます。結構クセが強いアプリな印象。
  • Diamond TF3D Config Setup
    これは必須ですね。レスポンスがかなり変わります。あと言語を英語にするととても雰囲気が良くなります。
  • GSFinder+ for HTC Universal
    ファイルマネージャ。デフォのは使いにくいので、これがかなりスタンダード、らしい。
  • KTCapt
    画面キャプチャ。

ということで念願のルーター化に成功したので早速Touch Diamond経由で書いてます。いやぁ、Wilcomに比べるとやっぱり快適です。

で恒例のスピードテスト。自宅から。

s21ht_speedtest.jpg

まあこんなもんかなぁ。うちの家はなぜか携帯の電波がとても入りにくくて、Softbankだとピンポイントの場所以外では全滅、Wilcomもアンテナ1本立つか立たないか、って感じだったので、まあこれだけ出れば御の字かな。エリアによって差があるみたいなので、今度外で試してみたいと思います。

Touch Diamond (S21HT)
2008/10/16 01:01 posted by kunkichi

今日はちょっと勉強をお休みしてガジェットいじりを、、、

たまにはカフェとか外で勉強したいということで使ってたウィルコム(ちなみにPC接続のときはDD、普段は9を使ってました)ですが、やっぱりPC接続だと速度がね、、、

ということで、前々から気になっていたイーモバ、やっと契約してきました。機種はTouch Diamond(S21HT)。これで1台でPCも普段もイケる上に速度もアップ。やっと快適なカフェ勉強ができそうです。

20081015078.jpg

ま、いろんなところで既に取り上げられてますが、とりあえずのインプレッション。

  • 見た感じは悪くないです。iPhoneとかに比べると質感には若干かけるけど許容範囲内。
  • とにかく薄い、軽い。シャツの胸ポケットにちょうど良し。逆に薄すぎてちょっと落としそうで怖いぐらい。
  • 覚悟はしてたけど、噂通りの微妙なタッチパネル感度。強くいかないといけないのか弱くいかないといけないのか、まだ計りかねてます。
  • レスポンス自体は思ったよりもマシ。ただし、購入前は想像を絶する程のダメっぷりを想定してたので、という意味で。Touch Flo も、Windows Mobile機 ということを踏まえると、よくがんばってる方じゃないかな。

ま、出だしとしては思ったより悪くない印象です。カスタマイズする楽しみがあります。

とりあえずこの後やらないといけないことを備忘録的に。

ちょくちょく暇を見つけてカスタマイズしていきます。

あやっくす?
2008/10/08 23:38 posted by kunkichi

本屋でこんなの見つけた。

Ajaxセキュリティ
Ajaxセキュリティ
posted with amazlet at 08.10.08
Billy Hoffman Bryan Sullivan
毎日コミュニケーションズ
売り上げランキング: 27811

表紙がw

ajax_security.jpg

どストレートだなぁ、サッカー好きなSEとかプログラマは1回はこれを想像したはずではあるw

このページの先頭へ