スキップしてメイン コンテンツに移動

投稿

2008の投稿を表示しています

プログラミングGauche: P.202 練習問題

オブジェクトを文字列に変換するための手続きwrite-to-stringを、 call-with-output-stringを使って実装する問題。 gosh> (write-to-string '(1 "abc" "\"" #\z)) "(1 \"abc\" \"\\\"\" #\\z)" gosh> (define (write-to-string2 obj) (call-with-output-string (lambda (port) (write obj port)))) write-to-string2 gosh> (write-to-string2 '(1 "abc" "\"" #\z)) "(1 \"abc\" \"\\\"\" #\\z)" 逆に文字列をオブジェクトへ変換 gosh> (define (read-from-string2 str) (call-with-input-string str (lambda (x) (read x)))) read-from-string2 gosh> (read-from-string "(1 \"abc\" \"\\\"\" #\\z)") (1 "abc" "\"" #\z) gosh> (read-from-string2 "(1 \"abc\" \"\\\"\" #\\z)") (1 "abc" "\"" #\z) cut版 (define (write-to-string2 obj) (call-with-output-string (cut write obj <

パスワードを表示するブックマークレット

以前から作ってみたいと思っていた一作。思った通りの時間で思った通りのものができた。 javascript:(function(){ var i, p, chars; chars = " abcdefghijklmnopqrstuvwxyzABCD EFGHIJKLMNOPQRSTUVWXYZ01234567 89"; p = ""; for (i = 0; i < 8; i++) { p = p + chars.charAt(Math.floor(Math. random() * chars.length)); } prompt("password", p); })(); IEとFirefoxで動作することを確認済み。実行すると8桁のパスワードが入力ボックスに表示されます。それだけ。

Mac OS X LeopardのCarbon Emacsで透明化

.emacsファイルで設定を試し、透明化を行う。 Emacs Lispはよくわかってないけど、alphaで透明度を設定し、color-themeでお気に入りのテーマを設定すれば大変クールに。 (require 'color-theme) (color-theme-initialize) (color-theme-dark-laptop) (set-frame-parameter nil 'alpha 80 ) Meadowでも同じ設定で動くんだろうか。color-themeは3.0に入ってなかったような。

脳が教える! 1つの習慣

頭ではやった方がいいと思っているけどなかなか続けられない、変わらない、なんとかして変化させたいというとき、小さな小さな一歩から始めればいいよというようなことなどを、脳科学的アプローチから始める、続ける方法をレクチャー。分かりやすくまとまっていて、行動につながりやすく感じる、最近のマイヒット本。
Gauche ユーザガイドの 6.4 ペアとリスト を読みながら実行した結果 gosh> (cons 'a 'b) (a . b) gosh> (cons 'a 'b) (a . b) gosh> (acons 'a 'b 'c) ((a . b) . c) gosh> (make-list 10 1) (1 1 1 1 1 1 1 1 1 1) gosh> (list 1 2 3) (1 2 3) gosh> (list* 1 2 3) (1 2 . 3) gosh> (list-copy '(a b (c d))) (a b (c d)) gosh> (car '(a b)) a gosh> (cdr '(a b)) (b) gosh> (set-car! '(a . b) 'c) # gosh> (let ((a '(a . b))) (set-car! a 'c) a) (c . b) gosh> (let ((a '(a . b))) (set-cdr! a 'c) a) (a . c) gosh> (caddr '(a b c d e f)) c gosh> (car (cdr (cdr '(a b c d e f)))) c gosh> (length '(a b c)) 3 gosh> (list-tail '(a b c d) 3) (d) gosh> (list-tail '(a b c d) 0) (a b c d) gosh> (list-tail '(a b c d) 1) (b c d) gosh> (list-ref '(a b c d) 1) b gosh> (last-pair '(a . b)) (a . b) gosh> (last-pair '(a b)) (b) gosh> (append '(a b c) '(1 2)) (a b c 1 2) gosh> (append!

SmartSleep

MacBook Airを外に持ち出す際、通常のスリープモードだと電源が入っている状態なので、 Windowsでいう休止状態(ハイバネーション)にしたいと思って調べたところ、 SmartSleepというソフトが使えばよいことが分かった。 スリープの種類が選択できて、"smart sleep"は、スリープとハイバネーションを バッテリー残率から判断してくれるので、Sleep & Hibernate Lvlをかなり高めに設定しておけば 普段家で使うときは電源が入っているので、スリープモード。 外に持ち出してしばらくすると、バッテリーが減るので自動でハイバネートしてくれ自動化されてくれて便利。 SmartSleep

MacでGaucheのCGI

GaucheをCGIとして、Mac(Leopard)上のEmacs環境で試すステップ MacPortsからGaucheをインストール Carbon Emacsをインストール EmacsのSchemeモードを設定(.emacsファイル) - ( http://karetta.jp/book-node/gauche-hacks/004640 の設定通りにしました) sudo apachectl startで、Apacheの起動(デフォルトで入ってる!) /Library/WebServer/CGI-Executablesが、cgi-binのパスなのでここにファイルを置くか、Apacheの設定をいじるかする 適当なcgiファイルを書き、権限を与えつつ確認。問題があれば/var/log/apache2/error_logを。 さすが正式なUNIX。

Mac OS Xはマイクロカーネルではない

MacBook Airにしてから数日。Mac OS Xってなんだ?という疑問が頭に浮かび調べた結果。 Mac OS Xのコアカーネル:BSDとMachがベースになっており、Machということはマイクロカーネル?と反射的に思っていたけどそれは勘違いで、Machから派生され今はマイクロカーネルと、モノリシックカーネルの利点を生かすハイブリット式。カーネルは、BSD、Machプラス、I/O Kitという独自のデバイスドライバで構成される。 Mac OS Xのファイルシステム:iPodでも使用されているHSF+。8エクスビバイト!!のファイルサイズまで扱える。FATやNFS、SMBもサポート。 コア部分は、Darwinという形で公開されている。Developer Connectionから落とすことができる。Linuxのようにほかのディストリビューションへ派生されることもあるのだろうか?OpenMacみたいな。

MacでKahua環境

Kahuaをセットアップしようと以下のチュートリアルをみながら設定中。 http://www.kahua.org/show/doc/Tutorial kahua.elをEmacsのsite-lispに置こうとするも、read onlyのエラーが。調べてみるとEmacsは、/Volumes/Emacsに置かれたままだったので、EmacsのアイコンをApplicationにドラッグして、Emacsを再起動させる。/Volumesの仕組みがまだよくわかってないが、多分一時的な置き場なんだろう。Firefoxも、/Volumes以下に置かれていたので同様にApplicationへドラッグ。

GaucheをMacで

見よう見まねで、Developer Connectionから、Xcode 3.0を取得しインストール。 MacPortsを通すも、portコマンドが通らないので、いろいろググり、.profileにPATHを記述。 PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin portが通れば、"sudo port install gauche"でストレートにインストールされた。かなり便利。

Mac生活

MacBook Airを購入。WindowsのVAIOから移行した完全な初心者マカー。 dmgで、Carbon EmacsとFirefox 3を導入。 xeyesがデフォルトで入っているなんて、Unixだな。 というか、dmgってなんていうパッケージ管理?

Google App Engineに備えて

Google App Engineが、SoftBank端末での認証登録でも失敗しちゃうので 来るべきApp Engine公開に備えてPythonをかじってみる。 Python Japan User's Group - http://www.python.jp/Zope/ アプリケーションサーバとしてZopeと言うのがあるのしか知らなかった。 他のスクリプト言語と比べて、シンプルで習得が容易と言うのが特徴とのこと。 言語自体の機能を最小限に抑えるという思想はSchemerとしては興味深い。 そう言えば、以前記事で読んだPython3000ってどういった設計なんだろうと思って調べたところ、 2001年,スラッシュドットのインタビュー( 邦訳 )にて,Guidoは再びPython 3000について言及しています。質問に答える中で,Pythonの精神に触れた「 Zen(禅) of Python ( 邦訳 )」の一節を引用しています。 「誰にとっても明確な手法が,一つだけあることが好ましい(There should be one-- and preferably only one -- obvious way to do it.)」 「 言語仕様の一貫性 」について言及したこの文章は,Pythonの言語としての哲学をよりよく表した一文として,たびたび引用されています。Pythonの現在の仕様だけでなく,Pythonが目指すべき姿をよく体現した言葉だと言えます。 - もっと知りたいPython3000 技術評論社 http://gihyo.jp/dev/feature/01/python3000/0001 なるほど。当初持ってたイメージどおり洗練されたデザインの言語という感じ。 使ってみて覚えたいと思うので、今月にもGUIアプリをPythonで作ってみようと思う。

GPLでアプリ公開 - オヘヤスイッチ

これまでは、プログラマとしてオープンソースを使う側だなと思い、 自分にできる貢献は?と考えたとき、まずはiアプリを公開してみることに。 ということで、弊社スパイシーソフトで運用をスタートさせたばかりのサービスへ先ほど公開。 600行程度の小規模なゲームですが、ゲーム開発の一般的な流れで作ってると思います。 ・シーン管理(init変数と、scene変数) ・描画やキーの処理などすべて、ループさせ、ループの最後でsleep ・描画処理はバッファに描き、一気に描画。 アプリ★ゲット みんなでアプリを作ろうぜ http://csns.appget.com/ オープンソースコミュニティにアップしてます。

Firefox3.0b5

Ubuntuを8。04にアップグレードしたタイミングで、Firefoxも3にバージョンアップされた。(Firefox3.0b5) 速くなった速くなったとは聞いていたが、実際に速くなっている気がする。 アドレスバーでの、自動補完は本当に高度で、 はてブにいきたくて、"はて"と打った時点でしたカーソルを押すと、はてなのさーびすがずらっと並ぶ。

Kahuaアプリケーション開発環境

Kahuaのチュートリアルを見ながら、Ubuntu上に、Kahuaと、Emacsから操作するためのkahua.elをセットアップし、ワーカプロセスに接続できるところまで環境構築。XEmacsで最初はセットアップしようとしたが、kahua.elの問題を解決できなかったのでGNU版で。 Welcome to Kahua. username: tnoborio password: wno type since wid 0 bookmarks Jun 1 11:22 huz:1i241 select wno> bookmarks(huz:1i241)> チュートリアル - http://www.kahua.org/show/doc/Tutorial

Ubuntu 8.04へ

VMwareに入れたときは、Ubuntu 7.10で、トレイ上にあるアップデートを通知するアイコンから、8.04へのアップグレード通知が出るようになったのでアップグレードボタンを押すも、 アップグレード中に、"その他のパッケージ管理を終了させてください"的なメッセージが出て正常に終了されない。といことで、手動でアップグレード中。 # sudo apt-get dist-upgrade ちなみに、Ubuntu 8.04は、長期サポート版なのでサポートは3年。 今から最新の8.04をつかうのであれば、以下の雑誌がおすすめ。

Moshをコンパイル

Schemeの実装である、Moshをセットアップしてみた。 環境は、VMWare上のUbuntu 7.10 /usr/local/src/mosh-0.0.2$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... no checking for c++... no checking for gpp... no checking for aCC... no checking for CC... no checking for cxx... no checking for cc++... no checking for cl.exe... no checking for FCC... no checking for KCC... no checking for RCC... no checking for xlC_r... no checking for xlC... no checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables See `config.log' for more details. C++をインストール sudo apt-get install g++ /usr/local/src/mosh-0.0.2$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes chec

プログラミングGauche 9章P.112 練習問題

二回ループしている点が効率悪いが、テストはパス。 gosh> (define (delete-1 elt lis . options) (let-optionals* options ((cmp-fn equal?)) (define (loop lis) (cond [(null? lis) '()] [(cmp-fn elt (car lis)) (cdr lis)] [else (if (eq? (delete-1 elt (cdr lis)) (cdr lis)) lis (cons (car lis) (loop (cdr lis))))])) (loop lis))) delete-1 gosh> (let ((data (list 1 2 3 4 5))) (test* "non-copy delete-1" data (delete-1 6 data) eq?)) test non-copy delete-1, expects (1 2 3 4 5) ==> ok #

プログラミングGauche 7章と8章

7.5 可変長手続きを返す "続きを返す手続き"は、一部だけ違う手続きを複数記述する必要がある際に便利。 例えば、ある手続きを行う前に、引数の値を表示してから処理を行う手続きを書く際など。 本にある、make-loggerは、一度間違ったが、そらで書けた。 gosh> (define (make-logger func) (lambda args (print "args=" args) (apply func args))) gosh> ((make-logger cons) 1 2) args=(1 2) (1 . 2) 手続きを返す手続きを書けるといのは、Schemeを知る前には、なかった感動。 7.9.1 多値を受け取る let-valuesと、let*-valuesの違いは、 let*-valuesの方は、変数のリスとの長で定義された変数を参照する。 let-valuesは参照せず、その時の環境の値で結果が変わる。 多値を返し、多値を受け取る gosh> (define (hoge) (values 'a 'b)) hoge gosh> (let-values (((c d) (hoge))) (print c) (print d)) a b # 8.2 等価性 Javaの == と、equalsメソッドは、それぞれ、eq?と、equals?にあたる。 gosh> (eq? '(1 2) '(1 2)) #f gosh> (equal? '(1 2) '(1 2)) #t gosh> (define p '(a b)) p gosh> (eq? p p) #t gosh> (equal? p p) #t 8.4 条件判断 練習問題 いくつかの述語を引数にとり、新たな述語を作れ ・引数がもとの述語のどれかを満たせば真を返す any-pred ・引数がもとの述語のすべてを満たせば真を返す every-pred gosh> (define (every-pred a b) (lambda (x) (and

プログラミングGauche 練習問題6章P.56

・リストの長さを計算するlengthを直接(foldを使わずに)定義してみる。 (define (length l) (if (null? l) 0 (+ 1 (length (cdr l))))) length gosh> (length '(a b c)) 3 ・リストの中から、条件を満たす要素だけを抜き出したリストを返すfilterを定義してみる gosh> (define (filter proc l) (if (null? l) l (if (proc (car l)) (cons (car l) (filter proc (cdr l))) (filter proc (cdr l))))) filter gosh> (filter odd? '(1 2 3)) (1 3)

プログラミングGaucheの課題deep-copy-list

deep-copy-listを考える。 copy-listは、 ・空リストでなければ、carと、cdrをcopy-listに渡した結果をconsする ・空リストならそのまま返す (define (copy-list l) (if (null? l) l (cons (car l) (copy-list (cdr l))))) deep-copy-listは、 ・空リストでなければ、carと、cdrをdeep-copy-listに渡した結果をconsするが、carがリストなら、 deep-list-copyに、carを渡す ・空リストならそのまま返す で、実装してみたのが以下 (define (deep-copy-list l) (if (null? l) l (if (pair? (car l)) (cons (deep-copy-list (car l)) (deep-copy-list (cdr l))) (cons (car l) (deep-copy-list (cdr l)))))) gosh> (deep-copy-list '(a b c (1 2 3))) (a b c (1 2 3)) あってると思うんだけど、結果が、copy-listと見え方が同じな場合どうしたら確認できるのだろう?

Bloggerでトラックバック

HALOSCAN(www.haloscan.com)でアカウント取得 HALOSCANにログイン "Installation Instructions"で、"Blogger or Blogspot (New Version / Google Login)"を選び、"Next" 画面で表示される手順どおり、Bloggerにログイン "レイアウト"メニューの"HTMLの編集"を選ぶ "テンプレートをすべて保存"リンクを選び、適当な保管先へxmlファイルを保存 保存したxmlファイルをHALOSCANのファイル選択で選び、アップロード "Download New Template"を選ぶと、変更後のxmlがダウンロードできるので、それをBloggerの先ほどxmlをダウンロードした画面から、今度は逆のxmlをアップロード と、このステップでトラックバックを受け付けられるようになった。 トラックバックを打つには、HALOSCAN、"Members" -> "Manage Trackback" -> "Send a trackback ping"から。

Schemeの継続

以下の記事を読むことで、ぼんやりと分かってきた。 でも具体的にどう使ったらよいかは、はっきりとしない。 http://practical-scheme.net/docs/cont-j.html http://www.jah.ne.jp/~naoyuki/Writings/VScheme3.html

iアプリ"オヘヤスイッチ"

先週からiアプリを作り始める。 その名もオヘヤスイッチ。スイッチが三つ並んでいて、それぞれどこの部屋のスイッチか決まっている。右からスクロールしてくる"居間のスイッチをオン"、"洗面所のスイッチをオフ"等の指令をすばやく押すゲーム。 ・・・作ったもののあまり面白くない。 ある程度のレベルになったらGPLで公開する予定。

レバメモ:ハイコンセプト

コンサルタントの「現場力」 で、お勧めの本。「ハイコンセプト」 日本経済も一億層中流階級から、M型社会へ向かう今、 情報化社会からコンセプチュアル社会へ変化している トフラーが、25年前にといた第三の波 ・第一の波 - 農耕社会 ・第二の波 - 産業社会 ・第三の波 - 情報化社会 そして、これから ・第四の波 - コンセプチュアル社会 情報化社会 - ロジカルで直線的な、コンピュータ的能力を基盤に築かれた時代 コンセプチュアル社会 - 創意や共感、総括的展望を持つことによって築かれる時代 「左脳主導思考」の重要度が低くなり、「右脳主導思考」の重要度が増していく その原因 ・豊かさ。物質的ニーズは過剰に満たされたので美しさや感情を重視する傾向強まる ・アジア。左脳型ルーチンワークはアジアの圧倒的に安いコストでまかなえる。それによってナレッジワーカーはオフショアに頼れない新たな能力が必要になる ・オートメーション。コンピュータがこなすことのできない高度な能力が求められる 国家、自治体、企業より突出した個人が富を生み出す時代、 そのような個人は六つのセンスを磨いている ・デザイン ・物語 ・調和 ・共感 ・遊び ・生きがい 六つのセンスの磨き方 ・デザイン 気になったデザインは記録 デザイン専門誌に触れる ・物語 ミニミニ短編小説を書く 自分史を語る ・調和 優れた交響曲。ベートーベン交響曲第9番、モーツァルト交響曲35番 インスピレーションボード いいたとえ話は書き留めておく ・共感 表情研究第一人者エクマソンの本を読む ボランティア ・遊び 右脳ゲーム http://www.tecmogames.com/ テレビゲームをやる ・生きがい 90歳になった自分を描く これまで親切にしてもらったのにきちんと感謝を伝えてなかった人物へ感謝の手紙を書き声に出して読む

スーパーエンジニアへの道―技術リーダーシップの人間学

・本の中では二種類のモデルを使ってリーダシップを説明 直線的モデル - 事象の間に直線的関係があると仮定。多数の事象をかんたんな一言でうまく理解できるが、複雑度が加わると有効性を失う 有機的モデル - 各人の納得する形で導くリーダシップ。いろんな人たちが、複雑な状況下で一緒に働く上での共通基盤のもとになる ・リーダシップの有機的定義 「リーダシップとは、人々が力を付与される環境を作り出すプロセス」 ・変化を起こすための三要素 Motivation - トロフィーや、あるいは一押し、一引きであるかにかかわらず人を突き動かす何か Organization - アイディアを実際実現することを可能にする既存の構造 Idea or Inovation - 種、実現されるもののイメージ ・成功するための技術リーダシップ 問題の理解 仕様書を非常に注意深く読む アイディアの流れを調整する 有用なアイディアをコピーするように奨励する メンバーの出したアイディアを練り直す 品質を管理する 品質を、プロジェクトの進行につれて計測する 進行速度と計画を見直し、必要なら方針を変更 アイディアを実践する前に顧客に確認する

レバメモ:コンサルタントの秘密

・一口にコンサルタントといっても多岐にわたり、ワインバーグにとっての、コンサルタントの仕事の定義「人々に、彼らの要請に基づいて影響を及ぼす術」 ・突き詰めれば自己こそもっともコンサルタントにとって基本的な道具であり、自己開発のための道具は日誌をつけること。 ・無能なコンサルタントは、問題を定義する代わりに最初に思いついた単語で、問題にレッテルを貼る。紋きり型レッテルが貼られると、問題はずっと解決しにくくなる。 ・レッテルの法則 - われわれは商品でなくレッテルを買う。 ・高度困難法則 - 第一番の問題を取り除いたとき、第二番目を昇格させてしまうこと。どんな場所にも問題を見つけ出してしまうのはコンサルタントの能力 ワインバーグ、コンサルティングへの道ガイド ・効果的思考法 - 「創造的思考の技術」 ・人と一緒に仕事をする上で - 「人を動かす」 ・技術的会議 - 「ソフトウェア技術レビュー・ハンドブック」 ・家族モデル - 「合同家族療法」

レバメモ:詳解正規表現

・Perl5からサポートの多言語に与えた機能 - インラインモード修飾子、非欲張り量指定子、キャプチャなし括弧、先読み、空白コメント挿入モード ・Perl5.8対応の新機能 - 戻り読み、アトミックグループ、条件文、埋め込みコード、正規表現オブジェクト、@-、@+ ・正規表現エンジンには大きく二種類存在する。DFAとNFA。 NFAの方がコンパイル速度早く、多くのサポートがある。DFAはそれがないが高速に動作する NFA - Perl、Java、PHP DFA - awk、egrep、MySQL ・Perlでの新機能 - 前後読み ... 前後にマッチする部分が存在する、あるいは存在しないのチェック - アトミックグループ - マッチするかマッチしないかのどちらかの状態を取る。早期のマッチ失敗を判断できるので高速 - 条件文 ... なんとif elseが書ける - 埋め込みコード ... その部分に到達するたびにPerlコードを実行できる。デバッグ分を差し込むなどに便利 - 正規表現オブジェクト ... 洗えられた正規表現をオブジェクトとして変数に保管できる - @-、@+ ... マッチ対象の開始および終了オフセット

レポート:コンサルタントの「現場力」 どんな仕事にも役立つ! プロのマインド&スキル

ロジカルシンキングがブームになるなど、欧米からビジネススキルが入ってくる中、日本起用の特徴的な価値観”現場力”は、日本最大の強みであり続けた。 日本の場合、四つのステークホルダーのうち、そう差はないものの、"社員"を重要視しているところは多く、そんな起業が大切にしているものが現場力。 コンサルタントも、いまやネットでいろいろな情報が入る時代、除法の切り売りだけでは食っていけず、現場力という視点が重要に。 ・コンサルティングにも二種類。コンテンツコンサルティングとプロセスコンサルティング。 - コンテンツコンサルティング - おたくの会社の問題はこれこれです。 - プロセスコンサルティング - クライアントの現場に入り、一員、チーフアドバイザーとなる。 ・プロセスコンサルティングには、知識はもちろん、信頼を得るための人間力、プロジェクトを導くリーダシップが必要。 ・プロのコンサルタントは、 ・仕事の目的を明確にし ・役割分担を決め ・仕事を進める問題点・課題点を広く抽出し ・仮説を立てながら ・問題点・課題点を整理体系化して分析し原因を明確にする ・解決策としての戦略や施策を出して ・メンバー共有し、モチベーションを向上させながら ・常に一人ひとりが考える場を作る これらサイクルを回す組織を意識していく

レポート: プログラミングGauche

Lisp、現在使われてる最古の言語の一つ。もう一つはFortran。もとはリストを処理するシステムということで、LISt Processingの頭文字から命名。 拡張可能なプログラム言語というのが特徴。 Scheme、Lisp方言。方針は、"単純で直行する少数のルール" Gauche、Scheme処理系の実践的な言語。 Gauche Perlからの影響 ・正規表現 ・モジュールシステム ・文字列補間 ・DBI/DBD Common Lispからの影響 ・CLOS ・キーワード引数 ・コンディション ・総称関数 総称関数は、さまざまな方ごとに適切な処理を自動で行ってくれる機能。 継続は難しい・・・。

XEmacsでGauche

プログラミングGaucheの設定をXEmacsの、~/.emacs.d/init.elへ貼り付けてgoshが起動するよう設定。 (modify-coding-system-alist 'process "gosh" '(euc-japan-unix . euc-japan-unix)) (setq scheme-program-name "gosh") (setq scheme-program-args "-i") (autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t) (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t) (defun scheme-other-window () "Run scheme on other window" (interactive) (switch-to-buffer-other-window (get-buffer-create "*scheme*")) (run-scheme scheme-program-name )) (define-key global-map "\C-cs" 'scheme-other-window)

コンサルタントの道具箱

コンサルタント本、二冊目 コンサルタントの権威、ワインバーグの著書。以前、"ライト、ついてますか"は読んだことがありその本では問題そのものに対していろんな着眼点というか、ヒントがちりばめられていると感じた。 目次 イチゴジャムの法則 知恵の箱 金の鍵 勇気の棒 願いの杖 探偵帽と虫めがね イエス・ノーのメダル ハート 鏡 望遠鏡 魚眼レンズ ジャイロスコープ 卵、カラビナ、羽根 砂時計 酸素マスク 最後の章の、酸素マスクの話は大変勇気が持てた。 具体的には、変化と学習が起こるモデル"変革モデル"を説明するくだり。旧態とは、能力も身につき、成功もし、後はこれをずっと繰り返すだけだという状態で、そうなると、新しい状態へ踏み出す不安より、同じ事を繰り返すつまらなさを選ぶ。 旧態から、外部要因(倒産やリストラなど)によって、旧態からむりやり、カオスという状態へ放り出される場合があるが、そのとき事が面白い。 突然選択肢が増え、疑念が頭をよぎり、多すぎる選択肢に対してもはや退屈はなくなり動揺する。今までの秩序はなくなり混乱する。 逆にそういう状況こそ面白い。その瞬間は燃え尽きたと感じるかもしれないが、リスクに対する挑戦ができる最大のチャンスであり、本当にやりたいことができる原動力になる。 この酸素マスクの章以外は、著者が実際に経験して気づいた法則が、実名を交えての紹介されており、イメージしやすく、文書も大変読みやすく頭に入ってくる。 気に入った法則 フリーブルの感覚フィルター - やるべきでないことは、一切やるべきでない。以上 ポランスキーの私的な探し物のコツ - なんの意味もないと思い込んでいる対象には、たぶん意味がある 臆病者の法則 - Aをする恐怖、Bをする恐怖があるとき、Bをする恐怖のほうがAのそれより大きいとき、人はBをする フェリシティの羽の哲学 - 所詮、重要なものはないのだからじゅうようだというふりをしてもかまわない。所詮、重要なものは何もないのだから、何の不利をしていないふりをしてもかまわな

レビュー:SEからコンサルタントになる方法

ゆくゆくは、ITコンサルタントにも憧れがあるということで、以下の本を読む。 経営戦略系のコンサルティングがもともとの始まりだったとは知らなかった。 業界的に、大きく五つに大別される。 総合系 - 戦略・システム・人事など幅広い分野で総合的にクライアントの経営革新の支援 戦略系 - 経営戦略、M&A等の戦略系に特化した支援 IT系 - システム導入、導入前段階、後段階に関するコンサルティング 人事系 - 人事・年金業務に特化した支援 シンクタンク系 - 業界横断的市場調査に特化し、政策立案や意思決定のための調査や分析業務が主体 参考になった点 品質管理者と進捗管理者は別の人。プロジェクト管理の大原則らしく、例外はプロジェクトが小規模の場合 他の職業と同じで最初は人まねから。大成する人は、創造性よりも再利用性高い。自分の力だけを信じるだけでなく(それはそれで重要だが)、過去の類似案件や実績からどうもってこれるかを考える 品質、納期、コストはまとめて考えるものでなく、品質、納期を妥結し、品質&納期 vs コストで考える

Gauche-dbd-sqlite クエリ実行その一

Gauche-dbd-sqliteモジュールを作ろうと、クエリの実行機能をを実装していたが、あらかじめsqliteで作成しておいたhoge.dbをオープンしSELECTしようとすると、サポートしていないファイルシステムであるとのエラーが。 問題切り分けのために、SQLiteのサイトにある、Cのサンプルを作成して試して見たところ、以下のようなエラーが出た ./sqlite-client ~/src/hoge.db "select * from hoge" SQL error: file is encrypted or is not a database エラーが出ていた理由は、sqliteコマンドのバージョンは、2.8.17で、sqlite-clientが利用していたライブラリはSQLite3だったという凡ミス。 Ubuntu 7.10の場合は、sqlite3で、データベースを作成すればOK。

イーモバイル速度

認証に失敗することが多かったので、イーモバイルのユーティリティを再インストール。 新宿区の自宅で、電波二本立っている状態のとき、実測値0.4Mbps程度。外出しているときには、十分な速度。

Apacheモジュール作成のステップ

mod_XXXを作る際にベースは簡単に作成できるように、mod_helloworldの作り方まとめ。(Ubuntuの場合) apx2で、モジュールの雛形を作る。Ubuntuの場合、apache2-threaded-devパッケージに入っていた。 apt-get install apache2-threaded-dev apxs2 -g -n helloworld これで、helloworldディレクトリに、以下のファイルができる。 cd helloworld/ ls ./modules.mk ./.deps ./mod_helloworld.c ./Makefile Makefileを見て、make installするだけでOKかと思いきや、下記のエラー。 /build/instdso.sh: No such file or directory というエラー。Makefileを確認し、/usr/share/apache2/build/special.mkファイルの、instdso.shファイルのパスが、 $(top_srcdir)/build/instdso.sh SH_LIBTOOL='$(SH_LIBTOOL)' $$i $(DESTDIR)$(libexecdir); \ となっていたので、Makefile中のtop_srcdirを設定するとOK。 top_srcdir=/usr/share/apache2 sudo make install make[1]: ディレクトリ `/home/tnoborio/src/helloworld' に入ります /usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_helloworld.la /usr/lib/apache2/modules/ make[1]: ディレクトリ `/home/tnoborio/src/helloworld' から出ます /usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_helloworld.la /usr/lib/apache2/modules/

さあ、才能に目覚めよう

34種類に大別された人の持つ才能・強みが分かり、それを伸ばすための本。 僕の持つ五つの強みは以下のとおり。 MAXIMIZER/最上志向 FUTURISTIC/未来志向 INTELLECTION/内省 CONNECTEDNESS/運命思考 INPUT/収集心 なるほど、180問も問題に答えただけあって(一つに5秒としても、15分!)自分の思考パターンにあっていると思う。200万人のインタビューという膨大なデータから書かれているだけに、強みを生かしかたは参考になる。 ただ、運命思考と書いてある説明にギャップがあるような違和感を感じた。

Gauche-dbd-sqliteで、open、close

ようやくsqlite3-open、sqlite3-closeまでこぎつけた。 dbd/sqlite.scm (define-module dbd.sqlite (export sqlite3-open sqlite3-close)) (select-module dbd.sqlite) (dynamic-load "dbd_sqlite") (provide "dbd/sqlite") Cのコンパイルエラーをマクロレベルで見てなくて初歩的なところで詰まった。 dbd.mysqlを見ていて、stubファイル、c、hファイル、scmファイルの関連が、ようやく分かった。

イーモバイルでVMware

引っ越した際、ネット環境を、フレッツ光+無線ルータから、イーモバイル7.2Mbpsにしたところ、 VMwareからネットが利用できない。 Windowsのネットワーク接続には、 VMware Network Adapter VMnet1 VMware Network Adapter VMnet8 とあるので、接続できるはず。 いろいろ試して、以下の操作を行ったら利用できるようになった。 VMwareのバージョンアップ。VMware Player 2.0.2 VMware上のUbuntuの再起動。普段は、サスペンドしているので、Ubuntuを再起動することはない 接続をNAT接続に切り替える。 たぶん、バージョンアップは必要ない。 ちなみに、VMware Playerに用意されている接続方法の違いは、 ブリッジ: LAN上にあるIPが振られる。他のマシンからアクセスできるためにはこのモードに。 NAT: ホストOSのIPを共有して利用。ネットを利用するだけならこちら。 ホストオンリー: 文字通りホストOSのみとしかつなげない。 といったところ。 ノートマシンはネットが利用できるが、デスクトップマシンがネットを使えないので、なんとかブリッジできる方法を考えねば。

Gauche-dbd-sqlite其の二

引き続き、Gauche-dbd-sqlite。sqlite3_openの第一引数へ渡すハンドルを作るだけで、 dbd_sqlite.c:28:`handle` undeclared (first use in this function) というコンパイルエラー。Schemというより、Cをちゃんとかけなきゃいけないな。

GaucheでSQLiteモジュール

Schemeを勉強がてら、Gauche用のSQLite3モジュールを作ろうと奮闘中。 dbd_sqlite.stub - (gosh genstub) -> dbd_sqlite.c -> dbd_sqlite.so という仕組みが分かったのと、libsqlite3をロードするMakefile.inファイルが書ける。 Gauche-dbd-mysqlと、以下のサイト参考にしつつ、stubファイルを書いているところ。 http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AMeCab