2007年09月

2007年09月27日

Linus Torvaldsは凄い?

 「ソースコードの反逆」を読んで以来、
 LinuxというOSの実装に興味を持ち、カーネルのコードを眺めたりするようになったけど、わからない・・・
 まぁ、C言語超初級、アセンブラてんで駄目なんで当然といえばそれまでなんですが、それなりに勉強にはなります。

 という話はタイトルと関係なくて、

 今日仕事中に、後輩に尋ねられました。

 「PHPを作った人って凄いんですか?」

 凄いとか、凄く無いとか、そこを疑問に持てるアンタが凄いよー。
 なんて、混乱とも感服と判別し難い一撃にポッカリ心に穴をあけられたまま、

 「君はPHPを作れる? そうでないならきっと凄いんだよ」

 なんてありきたりな返答をしてしまった。
 自分の尺度は小さいなー。

 多分、私はもう新しい言語の作り手になる可能性を閉ざしていて、
 彼はそうではないということなんだろう。

 今度は自問してみようかと思う、

 Linus Torvaldsは凄い?

pukiWikiをインストールしてみる

 ドキュメントを残すのどうすべー?
 なんて話が盛り上がってきたので、
 wikiを試してみることにした。

 投稿とか編集はやったことがあるけど、
 いざ使うならインストールからやってみよう!!

 とりもなおさず、
 http://pukiwiki.sourceforge.jp/?PukiWiki%2FDownload
 からコードをDL。

 ローカル環境では
 1.4.7を、

 レンタルサーバーのヘテムルでは、
 なぜかヘッダーが既に出力されてるぜー? のエラーが出たので、
 1.3.7をインストール。

 インストール作業は、
 解凍して、設定ファイルを数箇所書き換えて、
 パーミッションを変更するだけの簡単設定。

 とりあえず
 http://coelacanth.heteml.jp/wiki/pukiwiki.php

 でトップページを確認したので、続きはまた明日。

2007年09月26日

本の紹介:「スーパー上司力」

 思わぬ拾い物ならぬ、借り物。

 よくあるHowTo本、仕事術本かなーと気軽に図書館で借りたのですが、
 なかなかためになりました。

 一部抜粋、

 部下からの報告が多いか少ないかは、上司のフィードバック次第

 そうなんですよねー。
 ついつい「あいつはホウレンソ(報告・連絡・相談)できない奴ダー」なんて評価をしてしまいがちですが、

 こちらの側にも問題があって、
 改善していくようにしないといけませんね。

 などなど・・・

 うーんと呻りながら、
 読後にAmazonで購入してしまいました。
 家族は、図書館で本を借りることが経費削減と思っていますが、逆に出費が増えているかもしれない・・・。

 同時期に読んだ「チームハックス」「ザ・ゴール」「ザ・ゴール2」「メンタル・ブロックバスター」もオススメできる良作でした。
 先週はあたり週。


スーパー上司力!―突然部下が輝きだす40の魔法の仕掛け


AS3はイベントの設定がaddEventLitenerだけになるんですね

 ActionScript1&2では、
 ボタンだったり、フレームだったり、はたまたイベントリスナーと色々な書き方でイベントを登録できましたが、
 ActionScript3では、


 stage.addEventLitener(MouseEvent.CLICK, hoge);


 という書き方オンリーになるらしい。

 JavaScriptでもonLoadなどでイベントを指定すると、
 同じイベント時に上書きされるという現象を、イベントリスナーだと回避できるので、
 イベントリスナーに追加という方法に統一は好ましい。

 今、考えあぐねているのが、
 外部ファイルでimportするか、asなんてフレームを作成してそこに記述するの選択。
 外部ファイルが良いと思っていたけど、Flash8やFlashCS3で編集する場合は、フレームにアクションを書いたほうが検索、編集しやすい。

 このメリットは捨てがたいぞ。

関数の中で関数を定義するなー

 日々躓きの連続のActionScriptですが、
 今日は、呼び出したい関数が、関数の中で定義されていたため、
 呼び出し方法がわかりませんでした。

 というか、
 ちゃんとコードを読んでなかったために、
 関数の中で定義されていることに気が付くのに時間を浪費してしまったというだけなのだが・・・。

 関数の中の関数をどうやって呼び出すか興味の赴くまま調べるのが技術者の生き方なのかもしれないが、
 ここは素直に、


 hoge.onPress = function() {
 }


 を


 hoge.onPress = hogehoge;
 function hogehoge() {
  ほげほげの定義・・・
 }


 と分離して、hogehoge()の定義を更に外側の関数の外に出してしまうことで解決。


 _root.function hogehoge() {
 }


 なんて書き方もできるんですねぇ。勉強になりました。

2007年09月24日

Flashのtrace文を出力する

 FlashのtraceはFlashCS3などのツールでパブリッシュした際にだけ確認できると思い込んでいましたが、
 下記ページにdebug用のプレイヤーを発見しました。

 http://www.adobe.com/support/flashplayer/downloads.html

 ウィンドウズ環境でdebugする場合は、
 インストールしてあるFlashプレイヤーをアンインストールしてから、

 Download the Windows Flash Player 9 ActiveX control content debugger (for IE)
 Download the Windows Flash Player 9 Plugin content debugger (for Netscape-compatible browsers)
 Download the Windows Flash Player 9 Projector content debugger

 の3つをインストールすればOKのようです。
 最後のはデスクトップ環境で実行するプレイヤーのようなので、必須ではないかも?

 XPの場合下記サイトのように設定を行えばよいですが、
http://d.hatena.ne.jp/kasahi/20070531/1180630084

 Vistaの場合は、
 ログファイルの保存場所が違うようで、

 TraceOutPutFileName=C:\Users\mac\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txt

 となっています。

 ファイルに書き込まれるのは面倒だなーと思っていたら、
 FireFoxのサイドバーにtrace文を書き出すプラグインがありました。
 上記debug playerがインストールされているのが必須条件のようです。

 FlashTracer

 アドオンをインストール後、
 ツールからFlashTracerを選択すると左サイドバーでtrace内容を確認することができます。便利!!

 trace文はパブリッシュしたらユーザーに読めないと思い込んでいた人(私だけ?)
 は要注意。traceは公開バージョンでは潰しておきましょう。

 さらにFireFoxが手放せなくなったー。

Flash:関数にもスコープがあるんですね

 最近仕事でもようやくFlashの開発にあてる時間をとれるようになってきたのですが、
 いままでは保守がメインだったこともあり、
 知らなかったことが多いなぁ、と躓きと発見の連続です。

 侮りがたし、Flash+ActionScriptです。

 ムービークリップの中から定義した関数を呼び出せなかったので、
 ちょいとテスト。

 物事を解決するには、
 複雑なものから不要なものを取り除いて問題をシンプルにすることだ。
 プログラムは1ステップずつテストするのが近道!!

 というわけで、簡単なサンプルを作成。

 まずはメインのタイムラインに関数を定義


function trace_test() {
  trace("ok");
}


 非常に簡単、traceするだけ。
 次は、メインのタイムラインにmc_1というムービークリップを適当に配置。

 mc_1のタイムラインにもスクリプトを記述。


mc_2.onPress = this.trace_test;

function trace_test() {
  trace("ok2");
}


 さらにその下にmc_2を配置。

 パブリッシュして、
 mc_2をクリックすると、ok2を出力。

 ここで先ほどの、


mc_2.onPress = this.trace_test;


 を


mc_2.onPress = _root.trace_test;


 に変更すると、okを出力。
 関数にもムービークリップの階層によるスコープがあるんですねー。

function hoge() {
}

 で、グローバルな関数を定義できたりすると便利なんですが、

_grobal.hoge = function() {
}

 とかになるのかなぁ。
 というわけで、



function trace_test() {
trace("ok");
}

// グローバルな変数に定義
_global.trace_test = trace_test;


 とした場合はmc_1内で


this.mc1_2.onPress = trace_test;


 とスコープを気にせず呼び出すことができまいした。
 ただ、変数みたいに関数もグローバルに呼び出すのは美しくないか?

2007年09月19日

人生2冊目のプログラミング本

 職業プログラマーになって、1年半。
 初めてプログラムを書いてから、1年半が過ぎてしまった。

 懐かしい思い出、
 初めて買ったプログラミングの書籍「10日で覚えるC言語」に続いて購入した、
 「作ってわかるCプログラミング」を開いてみた。

 「10日で覚える」を読み終える前に買ったと記憶しているから、
 制御構文に初めて触れた程度の段階で読んだ本のはずだが・・・

 のっけから、

 vi hello.c

 viっすか、unixっすか?
 良く読んだな私。
 OSなんてWinodowsとMacしか知らなかったから頃だ(Macは名前だけ知っているレベル)。

 8ページ目で、

 hello > out.txt

 リダイレクトかー。
 一冊目だったらここで挫折、the endでしたね。
 プログラマーとしての第2の人生を守ってくれた「10日で覚える」に感謝。

 mainの引数がchar *argv[]から説明も無く、**argvに変わっていたりなかなかハイレベルな展開・・・。

 まぁ、あえて難しい本から入って、
 自分を鍛えたいという方なら、
 入門書に選ぶのも良いかな。


作ってわかるCプログラミング


2007年09月18日

久しぶりにUNIX環境でC言語を・・・忘れてる!?

 会社のサーバーだと、ほぼPHPインストール済みなので、
 簡単なスクリプトを書く場合もPHP使っていたら
 C言語の実行方法をすっかり忘れていた・・・。

 というわけで、
 超初心者メモ。

 FreeBSD環境には標準でgccが入っているので、
 コンパイルは

 #gcc -o test test.c

 でお手軽コンパイル。

 -oが作成されるファイル名を指定してコンパイルするためのオプション,
 testが作成されるコンパイル済みファイル名、
 test.cがソースコード。

 色々遊んでいる内に発見。
 mainの引数の3つめは環境変数が入るんですねー。
 mainは引数2つだと思っていました。

 C言語、しっかり覚えようっと。

2007年09月15日

種の多様性?

 リチャード・ドーキンスの「利己的な遺伝子」と、「カッコウはコンピュータに卵を産む」を平行して読み進めている。
 そしてプログラミングより、お菓子作りの経歴のほうが長いプログラマーなんて、かなり稀かもしれない、と呟いてみるが。それ自体に相乗効果があるわけでもないので、社会的な価値は皆無だ。

 今回の本題は「カッコウはコンピューターに卵を産む」の紹介。
 ハッカーとそれを追跡する管理者のお話だけど、大概の古本屋で一冊100円で見つけることができるのも魅力。

 プログラマーでUNIXを触ったことのある人なら、そうでない人以上の楽しみがあると思う。

 「ps -aux」ではなく「ps -eafg」と打つハッカーから得られる情報は?

 UNIXを使わない人にはてんでピンとこない内容だが(私にしてもなんとなくわかる程度)、知っている人にはリアリティのあるハッカーの姿が想像できる。

 このハッカーが、あるログインシステムにトロイの木馬を仕込むときに、
 AT&T式のUNIXしかしらず、実際使用しているバークレー式(BSDだ)では役に立たないプログラムを仕込むというくだりを読んで、種の多様性はこういうときに生存上優位に働くのだなぁと感慨。

 もし世の中がWindows一色なら、一つのセキュリティホールで全PCが崩壊になりかねない。普段、Windowsが淘汰されて、Linux一色になれば良いのにぃと不埒な暴言を吐いていた自分に反省。色々あるというのは良いことだ。

 大きくそれるが、ある種の蝉は7年周期、11年周期など一定の周期で一斉に地上に飛び出す。周期に違いはあるがどれも素数だ。

 同じタイミングで地上に飛び出すことは、
 あまりにも短い地上での命のともし火が消えぬ前に、伴侶を探す戦略として有効にはたらくというのは、直感的に理解できる。

 では、なぜ素数なのか?
 天敵を生み出さないためだという学説を聞いたとき、生物学への扉が開いた音を聞いた気がした。遠い(認めたくはないが、遠い)学生時代のお話。

 2年に一度、3年に一度大量発生する天敵がいたとしても、
 素数である限りそれらの大量発生に2回連続でぶつかることはないのだ。
 そして、多くの捕食者にとって、蝉にあわせて7年おきに自らを大量発生させるという戦略はあまりにリスクが高すぎる。

 話を戻そう、利己的な遺伝子の・・・いや、ハッカーの話か。

 この本の登場人物達は、当然ながらLL使いのWebプログラマーの私より、
 低いレイヤーの技術を駆使する。ライブラリによって隠蔽されているようなコードを自ら書き、UNIXを操る姿は、憧れを覚える。
 すでにライブラリ化されているから良いじゃん、という向きもあるだろうが、プログラマーたるもの低いレイヤーに興味を持って触らんようではアカンでぇ、とも思う。

 プログラミングのためのプログラミングという姿勢も勉強なった。

 紹介になっていないような気もするが、
 技術力を付けようという意欲の沸く一冊です。

Profile

シーラカンス

Recent Comments
QRコード
QRコード
livedoor Readerに登録
RSS
livedoor Blog(ブログ)