nDiki : 2006年04月下旬

2006年4月21日 (金)

第1回 社内 Perl 勉強会

この間教材として選定した「初めてのPerl 第3版」を使って第1回目の社内 Perl 勉強会を実施した。

プログラミングのクラスなんて大学(および TA)以来なので、進め方は手探りである。 まずは以下の様にしてみた。

目的

Perl プログラミング、および一般的なプログラミング・開発のスキルアップを目指す。

進め方

  • 私が進行役。
  • 自由参加 (私の指定プロジェクトメンバは必須)。プログラマでも、コンテンツデザイナーでも。
  • 書籍「初めての Perl 第3版」を教材とする。
    • 本は社内に1冊ある。ケンカしないでうまく回して読むように。
  • 1週間に1章ずつ進める (最初の回は1・2章)。
  • 各自事前に独習すること。業務の支障にならない範囲でうまく進めること。
  • 章末の練習問題を課題とし、勉強会の前に解答を作成してみること (書籍末に回答があるが見ないようにすること)。
  • 独習の上でわからない点は適宜、誰かに質問してできるだけ解決をはかること。

勉強会

  • 毎週金曜日に勉強会を 16:00 - 17:00 で開催。
  • 練習問題の解答ピアレビューを中心に行う。その場で本読みはしない。
  • 課題がプログラムの場合は、プリントアウトして持参すること (あまりに長い場合はのぞく)。
  • 参加希望者は事前に 社内 WikiPage に、参加意思を表明すること。
  • 練習問題別に、チェック項目や補足情報を追加した資料を開始時に配付。

実施

第1回は私を含めて6人による勉強会となった。

プログラミングを学ぶのはやはり実践が一番であるので、事前に練習問題に取り組むというスタイルにしてみた。勉強会では他人のコードを見たり意見交換したりすることで理解を深め新しい発見ができればと考えている。

皆それぞれの業務を抱えているので、忙がしい人については事前の課題取り組みについては厳しのではとの不安もあったが、初級者・中級者にかかわらず全員準備してきていた。 びっくりするとともに嬉しかった。 参加者は皆それぞれチャレンジ心を持ち、何かを得ようとという熱意があるようで素晴しい限りである。

今回は練習問題も簡単だということもあり、全員解答できたようである。 今回気がついた点:

  • プログラムのプリントアウトについては以下のようにするのが望ましい。
    • プログラム毎にプリントアウトを分ける (1枚に複数のプログラムを掲載しているとレビューしにくい)。
    • フォントは適度な大きさで (小さいと見づらい)。
    • 今後プログラムが長くなってきた時のために、行番号を入れるのが望ましい。
    • 可能ならばプリティプリンティグを (皆にツールを紹介する必要あり)。
    • 今回は皆1セットづつしかプリントアウトしてこなかったが、これだと皆でレビューしにくい。人数分プリントアウトしてしまった方が効果的ではないだろうか。他人のプログラムで興味深いものは持ち帰りたいし。その場合はプログラムの先頭にコメントで問題番号と作成者を書いてもらうのが良いだろう。
  • そういえば書籍末の正解の確認をしなかった。今後問題が難しくなってきたら確認した方がいいかもしれない。
  • 教材の本は予算で買った1冊とスタッフ私物の1冊で現在2冊。ちょっと足りないかな。もう1冊ぐらいあった方が良いかもしれない。

1時間の予定であったが10分オーバーで70分。 時間的にはこれぐらいか。90分ぐらいあった方がいいのかもしれないけれど、業務とのかねあいもあるし。

本社

そういえば今回は東京オフィスで希望者向けのものだったので特に本社には連絡しなかったんだけれど、1名ここ(nDiki)の記事を見て羨しがっていたらしい。

リモートでの参加までは考えていなかったので今回は準備できなかったけれど、希望があるならなんか方法を考えていきたい。

また来週

さて、本格的にプログラミングっぽくなってくる次回からが楽しみである。 目指せ総 Perl プログラマ化。

スポンサード リンク

Emacs でお好きな言語のソースコードを色付き HTML テキストに変換

今日の Perl 勉強会向けに、自分の書いたコードをプリントアウトする。 どうせなら見易くなるように、色付けして出したいな。 でも、Perlプリティプリンタって何があるのだろう?

調べている時間もあまり無いしどうしようかな。 あ、そういえば昔 emacs-wikiソースコードを埋めこむ際に何か外部プリティプリンタを呼び出していたっけか。

とうことで emacs-wiki を調べてみる。するとどうも最近の emacs-wiki は htmlize.el を使って直接 HTML テキストを生成してしまっているらしい。*1

*1emacs-wiki を使っていた頃の自分の設定を見てみると、その頃は perl2html -n -s していたようだ

htmlize.el

ということで htmlize.el がロードされている状態で、Perl ソースコードを開いているバッファで以下を実行。

 M-x htmlize-buffer

すると新しいバッファに HTML テキストが生成される。 お、お手軽。 行番号も入れたかったのだが、残念ながらその方法は見つからず。

ソースコードに限らずハイライトされているバッファなら、その色付けでマークアップされた HTML テキストを生成できるようだ。

便利。ちょっとした時に使えそうなので覚えておこう。

[ 4月21日全て ]

2006年4月22日 (土)

狭さを感じさせない表参道ヒルズ

naney:133478016

紀ノ国屋目当てに表参道に出てきたついでに、表参道ヒルズにも寄ってみた。

「同潤会青山アパート……」などとそこらで語り尽されているであろう話はさておき、なかなか工夫されたフロア構成だ。

桜木町ランドマークプラザにどことなく似ている、中央下部に階段のある吹き抜けとそれを取り囲む通路。 大きな違いは、通路がなだらかな斜面になっているところ。 通路はそれほど広くないのだが、人が多い割には歩きやすいから不思議だ。

(これも作戦なのかもしれないが)ぐるぐるしているうちに、何階にいるかすぐにわからなくなる。 ショッピングの時にはいいかもしれないが、火事が起きたら悲惨そうだ。

ファション関連のお店中心で、そう何度も来そうにないと思ったが B3F に DELFONICS を発見。 Rollbahn のデルフォニックスだ。

思わずぶらぶらして(激混みだったので、ぶらぶらという感じではなかったけれど)、カレッジバッグを購入。 ちょっとしたコピーやプリントの持ち運び用に活躍してくれそうだ。

奥様に人気の KINOKUNIYA エコロジーバッグ

naney:133477981

最近スーパに買い物袋を持参することにしたが KINOKUNIYA のエコロジーバッグに目をつけた。 たまに街で見かける、ベージュ地にグリーンでグルグル時が書いてあるあの紙袋の紀ノ国屋だ。

あの紙袋って良くみかける気がするけれど、調べてみると思ったよりそれほど店舗の数は多くない。 近くだと紀ノ国屋 インターナショナル (青山店)か、渋谷店か。

どちらか迷ったが今回は表参道近くの、インターナショナルへ行ってみることにした。 新橋で乗り換えた銀座線は、土曜日だというのに随分混んでいた。

東京メトロ表参道駅で下車。 エチカ表参道 (Echika) ができてから来るのは初めてだ。 しょせん地下鉄駅、ちょっとごちゃごちゃしている印象だ。

実はエチカ表参道の中にも OMO KINOKUNIYA (オモ キノクニヤ)として紀ノ国屋が出展していたりする。バッグもちょっぴり置いてあったけれど、せっかくなのでもちろん目的のスーパーの方へ行ってみる。

ありました。バッグ。いっぱい。

大小2種類のバッグを購入。

さて、これを持って西友へゴー!

[ 4月22日全て ]

2006年4月23日 (日)

Perl プリティプリンタの定番 perltidy

一昨日は時間がなかったので、Perl プログラムの色付きプリントアウト作成に Emacs の htmlize.el を使用したのだが、残念ながらこれだと Emacs を使っていない人には薦めることができない。

ということで調べたところどうやら perltidy が定番の様子。 Perl Best Practices でも紹介されているらしい。

HTML テキスト出力

ソースコードをハイライトして行番号付きの HTML テキストを生成する場合は

 perltidy -html -nnn --nohtml-entities source.pl

とする。

Emacs からの perltidy の呼び出し

perltidy の真価はソースのリフォーマットにある。 これを使用するとソースコードを統一のとれたスタイルに整えることができる。

Emacs からはリージョン選択して

 M-1 M-| perltidy

するか、http://www.emacswiki.org/.../CPerlMode で紹介されている

 (defun perltidy-region ()
   "Run perltidy on the current region."
   (interactive)
   (save-excursion
     (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
 (defun perltidy-defun ()
   "Run perltidy on the current defun."
   (interactive)
   (save-excursion (mark-defun)
                   (perltidy-region)))

を .emacs などに書いておいて M-x perltidy-region することで整形することができる。

今までは CPerl mode 頼りだったけれど、これからはリポジトリにコミットする前に perltidy を通すようにしようかな。

まずは自分好みにあわせた、.perltidyrc を作成せねば。

[ 4月23日全て ]

2006年4月24日 (月)

perltidy のコマンドファイルでデフォルト設定

perltidy をいろいろいじった結果、今のところ自分好みの設定は以下:

 # Basic Options
 --maximum-line-length=78       # default is 80
 --indent-columns=2             # (!= perlstyle) default is 4
 --preserve-line-endings

 # Code Indentation Control
 --line-up-parentheses          #
 --nooutdent-long-lines         # default is --outdent-long-lines

 # Whitespace Control
 --paren-tightness=2            # default is 1
 --square-bracket-tightness=2   # default is 1
 --brace-tightness=2            # default is 1
 --nospace-for-semicolon        # default is --space-for-semicolon

 # Line Break Control
 --vertical-tightness=2         # default is 0
 --vertical-tightness-closing=1 # default is 0
 --want-break-before="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
                                # default is ". << >> -> && ||"

 # HTML Options
 -nnn
 --nohtml-entities

一応 Perl Best Practices (は持っていないので Web で公開されているサンプルファイル)の perltidyrc や perlstyle などを参考にしつつ作成。

インデント幅その他、比較的タイトがお好き。

[ 4月24日全て ]

2006年4月25日 (火)

同じサイドに立った社内通達文書を

社内通達文書のレビュー/リライト。

通達というと、どうしても上意下達なイメージになりがちだ。 しかし上から下への指示でしかないと、受け手は形式的しか受けとらないし動かない。

基本的に書き手が、受け手と同じサイドに立ち「一緒にこうしようぜ」という雰囲気を醸し出している方がいい。 「下手に出すぎじゃないか」という捉え方もあるだろうが、結果的に受け手が理解し一丸となって期待する方向へ進むならばそちらの方がよいのだ。

形式的かどうかに捉われず、通達の目的を達するのに効果的なメッセージにするべきだし、そうするのが書き手の役目である。

ということで、がっつり自分流に書き換え。

[ 4月25日全て ]

2006年4月26日 (水)

どこでもダーツセット - 誕生日プレゼント

naney:135920260

明日有給休暇を取るぐらさんより、1日はやめの誕生日プレゼントを頂いた。 感謝。

なんと、小型のダーツセットだ (ちなみに去年は「あひるちゃーん」)。 これがあれば、まさに「ダーツの旅」ができてしまう。 問題は小さすぎて、的に当たるかどうかだ。 さながら、関口宏の東京フレンドパーク2状態。

ダーツといえば、大学の研究室の壁が学部生にやられてボコボコ穴があいてたっけか。

自分の机の前にあるパーティションに的を固定してたまにやろう。 跳弾が隣りの人に刺さってもしーらないっと。

でかカール チーズ味 おまけつき - 誕生日プレゼント

naney:135920227

ぐらさんに合わせて松下君より、1日はやめの誕生日プレゼントを頂いた。 感謝。

こちらはビッグ。 金ピカ百式仕様の、でかカールだ。

カールはウチではハグソ菓子と呼んでいるカテゴリの菓子*1

次の日に開封して食べてみたんだけれど、これがデカい。 1個で口いっぱいだ。 食べがいがあって、普通のカールより美味いぞ。

naney:135920353

カールおじさんランチクロスのおまけ付き。 「どうやら愛妻弁当をこれで包んでくるよね? 絶対」ということらしい。

*1マズイという意味ではなくて、食べると歯に付くという意味で

[ 4月26日全て ]

2006年4月27日 (木)

復刻 PACKMAN 楽しいしかけの貯金箱 - 誕生日プレゼント

naney:135920319

雨で始まった誕生日、会社につくと机の上に飴玉に囲まれたパックマンが。 このセンスは zakwa さんだな。ビンゴ。感謝。

飴玉に書かれたうにょうにょは、よく見ると「参」。 お、そういえば奇遇にもこのあいだ私が表参道ヒルズに行った次の日に、zakwa さんも行ったのだと言っていたっけ。

赤いポップなアイツは、硬貨で貯金する楽しみを忘れていた昨今に新鮮な貯金箱1970年代にヒットした仕掛け貯金箱の復刻版である。 世代的にはマッチしているはずだが記憶にはないな。ハテ。 うちにあったのは、黄色い半円のベロが上下するやつだった気がする。

PACKMAN は手に硬貨をのせると「ポンッ」と跳ね上げてお召し上がりになる。 早速 100円をのせたら、パクッと食べちゃった。

面白がって見にくる人に「ポケットマネーで試してみる」ように勧めまくる。 食べちゃえばこちらのものだ!

しかし、なぜかみんなパコーン、パコーンと高く飛ばしてしまって PACKMAN の胃袋に現金が入っていかない。

惜しい。

会社に置き忘れた定期券の所在ををライブカメラで確認

naney:136868717

今日は誕生日ということで早めに会社を出たのだが、駅の近くまできてフリースジャケットのポケットに何も入っていないことに気がつく。 「あ、定期券忘れた」。

慌ててでたせいで、定期入れを忘れてきてしまったらしい。 GTD 用の RHODIA と、次の行動リストも一緒に忘れてきてしまったのもかなり痛い。 しかしここまできて取りに戻ると早く会社を出た意味がなくなってしまうので、泣く泣く切符を買って帰宅。

明日出社すれば定期入れはどこかにあるはずだが、はてしかしどこに置いてきたのだろう。

あ、そういえばライブカメラがあるじゃないか。 ということで帰ってさっそくアクセス。 Web ブラウザから BL-C10カメラ方向を移動させて机の上に向けてみると、ぽつんと置いてあった。 こういう時には、向きの変えられるライブカメラは非常に便利。

まだオフィスに残っている(カメラのモータ音で、私が家からアクセスしているだろうことは感ずいている)同僚に Skype チャットで話しかけたら、あれよあれよとデスクの上が大変なことに。

主犯は zakwa 女史だな。ばっちり腕が写ってますぜ。

http://www.naney.org/img/2006/webcam/2006-04-27-185008.jpg

とりあえず定期入れを端に寄せてもらって一安心。

豪華額装自分プリント - 誕生日プレゼント

naney:135920300

出社して席に座ると、左にあるデスクワゴンに平べったい大きな白い箱が。 いかにもアート系。 これは社長ですね。感謝。

手作りの付箋リボンで飾られた箱を開くと、白い清楚な額によく知っている人のモノクロームプリントが。

あ、自分。

この写真覚えているぞ。 社長が買った GR DIGITAL電車の中せ見せてもらった時のだ。

きちんとレタッチした後大きくプリントして額装していただいている。 私のために時間をかけて作っていただくなんて、愛情を感じちゃう♥。

あわせて GR DIGITAL の写りの良さも実感 (被写体が良いから?)。

しかし、オフィス内でのプレゼント交換における「ウケ狙い」(恥かしいもの、嬉しいけともらうとちょっと困るもの、役に立ちそうで役に立たないもの等々)という不文律がしっかり押さえられているな。

これは豪華すぎ・大きすぎで飾るところを探すのにひと苦労だ。 飾ったら飾ったでナルっぽいし。

でも嬉しいので、恥ずかしいのをおさえて会社で飾っちゃえ (自宅にはこれだけ大きいものをかけられる空間のあいている壁面みあたらないよ)。

naney:135920284

[ 4月27日全て ]

2006年4月28日 (金)

第2回 社内 Perl 勉強会

リャマ本を使用した社内 Perl 勉強会の2回目を開催。 今回は7人。直前に社長につかまって約20分遅れのスタート (スミマセン)。

進行方法はほぼ前回と同じで、事前に練習問題を解いておき、勉強会では互いにコードレビューをしながら進行役の私がポイントを説明していく形式。

今日は「初めてのPerl 第3版」第3章が範囲で、リストと配列がテーマ。

今回の変更点と反省点

  • 解答のソースコードは全員 perltidy で色付き HTML に変換してプリントアウトして持ってくるようにしてもらった。前回より見易さアップ。
  • 前回は1人1解答につき1枚プリントして持参してもらったが、今回は各自出席者分プリントアウトし持ち寄ってもらうことにした。これによって、それぞれ配られたプログラムをゆっくりレビューできる。書き込みもできるし、持ち帰ることもできるので効果あり。
    • 反省点はプリントの枚数が多くなって混乱したこと(「第2問の○○さんの解答プリントはどれだっけ?」)。次回は、冒頭で全員のものを集めて問題番号ごとに整理してステープラーでまとめるという形にしよう。
  • ソースコードの先頭にコメントとして問題番号と作成者名を入れてもらうようにしたのだが、それだけだと誰のものか区別しにくいとの意見。
    • perltidy のオプションで HTML 化した時にタイトルをいじれればいいのだが、そのような機能はなさそうだ。
    • それこそ誰か、練習として H1 要素を書き換えるスクリプトとか書いてくれないかなぁ。

今のところ、全員ついてこれている様子。 スカラーコンテキストとリストコンテキストは、Perl 初心者にとってとっつきにくい部分の一つだと思うので、これが理解できれば結構いけそうな気もする。

今回はトータル80分ぐらい。7人だと1時間半ぐらい確保しておいた方がいいかもしれないな。

次回はゴールデンウィークを挟んで2週間後。

[ 4月28日全て ]

2006年4月29日 (土)

WikiPage 編集画面で Ctrl+S を押すとプレビューするようにしてみる

「ついつい保存しようとして Ctrl+S を押して Web ブラウザの保存ダイアログを開いてしまうんだよね。Ctrl+S で (WikiPage を)保存してくれると嬉しいんだけれど。」

WiKicker を使用している同僚からのアイデア。 自分にとって C-s は Incremental search forward (`isearch-forward') であって保存ではないので、あまり関係ないといえばないんだけれど、その気持ちは良くわかる (C-p で 印刷ダイアログが開くのうざい)ので、試しに実装してみることにした。

ただしいきなり Ctrl+S で保存はちょっとデンジェラスなので、プレビュー画面に移動するようにしてみる。

例によって Web ページ上の JavaScript におけるイベント処理は、Web ブラウザ依存バリバリなのね。 テストが面倒(自分でできない/自動化困難)なので、できるだけ近付きたくはないのだけれども。

とりあえず、Firefox 1.5.0.2 on Debian GNU/Linux と、Internet Explorer 6 on Windows 2000 では動くことを確認するところまできた。

喜べ松下君。

ついにあの人が mixi 登録

「知人が mixi をやっていると聞いて興味を持った」というのでこの間招待しておいた、あの人がついに mixi 登録。

最新の Module::InstallPerl 5.005_03 ステ?

ゴールデンウィークに突入。 9連休を利用して、一気に WiKicker コーディングを企んでいる。

さっそくちょこちょこ修正してパッケージングし、www.naney.orgインストール。 …… Perl Makefile.PL でコケる。

どうも use inc::Module::Install; でエラーを起してしまっているようだ。 Makefile.PL は変更していないので、そうすると Module::Install の問題っぽい。

tarball をパッケージングするホスト側の Module::Install を 0.57 まで落としたところ、Perl 5.005_03 でも通るようになった。

Module::Install is a package for writing installers for CPAN (or CPAN-like) distributions that are clean, simple, minimalist, act in a strictly correct manner with both the ExtUtils::MakeMaker and Module::Build build systems, and will run on any Perl installation version 5.004 or newer. (Module::Install 0.61 より)

とあるように古い Perl もサポートにも気を払っているのが気にいって ExtUtils::MakeMaker から移行しただけにちょっと残念。

今後また 5.005_03 でも動くようになるのか、それとも捨てられるのか要チェック。

[ 4月29日全て ]

2006年4月30日 (日)

今回はほぼ6カ月使ったソニッケアーのブラシを交換

すこし前に交換ブラシを購入してあったのだけれども、結局のびのびになって今日交換。 今回は前回の交換から6カ月弱。 まあ普通の歯ブラシと併用しているのでフルに1日2回使っていなかったし、こんなものかな。

しかし交換してみると歯へのあたりやソニック感もかなり違う。 やはりもうすこし短い期間で交換した方が良さそうだ。

交換した後にお出掛け。 外出先でソニープラザに寄ったら、「ミニブラシ」が発売されているのを発見。

ソニッケアーのサイトの替ブラシのページには

エリートの替ブラシはブラシヘッドデザインの変更により、今まで届きにくかった部分も磨きやすくなりました。また、新しいブラシヘッドデザインにより、1サイズのみで皆様に対応可能となりました。エリート e5000・e7000シリーズ専用です。

なんて書いてあるけれど、やっぱりちょっと大き目という感じがあったよな。

今度試してみたい。

www.naney.org サーバ断続的にダウン

www.naney.org の過去記事を確認しつつ作業をしていたら、9:00 前に急にアクセスできなくなった。 ping も通らない。 9:20 ぐらいに 1度復帰したが、また10:00 前にダウン。

それから何度も落ちては復帰を繰り返すようになってしまっている。 SSH で接続している途中にも突然刺ささるし、傍から見ていても原因が良くわからない。

昨日 WiKickerアップデートしたから「もしかしてうちが原因?」とちょっと心配もしたりするのだが、無限ループに入ったりメモリを使い尽すようなコードが追加してはいないはずだしなぁ(ローカルでのテストではそのような現象は見られない)。

落ちる直前まで見ていてもそれほど load average が高いわけでもないようだしなぁ。

とまぁ、しばらく様子を見ているうちに NaneyOrgWikinDiki が Internal Server Error。 止められた。 正確には SpeedyCGI のフロントエンド speedy コマンドの実行権限を管理者に落とされた。

  • (大半はロボットによるものなのだけれども) NaneyOrgWikinDiki のどちらか(あるいは両方)に常にアクセスがあってスクリプトが動いている
  • top すると他のユーザの CGI プログラムは 'perl' か 'perl 5.00503' と表示されるのに対し、これらは speedy、speedy_backend と表示されるため、管理者の目を引きやすい

ということもあって疑われたと推測。

一応こちらでも SpeedyCGI を使わないで直接 Perl で実行するように変更してみたり、Memcached を起動するのをやめてみたりなど設定を変更してみたりするのだけれど、関係なく落ちる落ちる。

管理者がシステムの設定を変えていないで発生するようになったのなら、ハードウェア障害が起きているんじゃないかと想像してしまうのだが、実際どうなんだろうか。

結局夜 23:00 過ぎだかに落ちたあとは復帰する様子がないので(管理者が落ちたかな?)、今日はあきらめ。

ヤマザキ春のパンまつり2006年2枚目交換

今年はちょっぴり同僚にシールをもらったけれども、それ以外はほぼ自力で2皿目に到達。

[ 4月30日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.050286s / load averages: 0.48, 0.44, 0.42
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker