Ubuntu 11.04がでたので、家のiMacのVMWare上にインストールしました。11.04はベータ版を会社のマシンの仮想マシン上で動かしていたので特に感想はありませんが、やっぱり、だんだんMacみたいになってきているな・・・、と感じます。それがいいか悪かは、人によって違うようですが・・・。さて、OSのインストール自体は普通です。そのあとやったことたちです。
[続きはこちら…]
Ubuntu 11.04がでたので、家のiMacのVMWare上にインストールしました。11.04はベータ版を会社のマシンの仮想マシン上で動かしていたので特に感想はありませんが、やっぱり、だんだんMacみたいになってきているな・・・、と感じます。それがいいか悪かは、人によって違うようですが・・・。さて、OSのインストール自体は普通です。そのあとやったことたちです。
[続きはこちら…]
今日は何かと忙しい日ですが、Chrome 11がリリースされました。いろいろ変わったところもあるようですが、Speech APIが搭載されたとよく聞きます。Speech APIはGoogle Translateで既に利用可能だそうです。早速試します。僕が試したときは、日本語は無理でした。英語なら入力できます。まわりを気にしながらしゃべりかけてみると・・・、僕の発音ではちゃんと認識してくれません。悲しいです。それで、英語教材の音を認識させてみると・・・、やっぱりちゃんと認識してくれません。ひょっとして文のように長いものだとダメ?と思って単語をひっそりとささやくと・・・、今度は認識してくれました。Googleは優秀ですね。
[続きはこちら…]
MongoDBのドキュメントを保存するときはsafeと言うオプションがあります。これは、ドキュメントを保存するときにサーバ側で成功したかどうかのチェックを制御します。簡単にいっちゃえば、Falseの場合はドキュメントの保存時にリクエストを投げっぱなしにするので、データの送信までの時間しかわかんないと言うことです。デフォルトだとFalseになっています。僕のベンチマークのデータをみて@buzztaikiは「MongoDBとCouchDBの保存パフォーマンスの違いってこのオプションの違いで、実際は大差ないんじゃないの?」とdisります。なので、調べてみました。今回はinsertだけです。
[続きはこちら…]
「パーフェクトJava」発売の時に章ごとの自己評価を書きました。
同じことを「実践JS サーバサイド JavaScript 入門」で書こうと思います。ただ「パーフェクトJava」の時と少し事情が異なります。「実践JS サーバサイドJavaScript 入門」は冒頭の「本書の読み方」でパートごとの簡単な紹介を書いています。要は、既に公式には自己評価に近い内容を本の中に吐露済みです。そんなわけでこれから書くのは裏バージョンです。
なぜサーバサイドJavaScriptなのかを可能な限り客観的に書いたつもりです。もちろん、サーバサイドJavaScriptの本なので、なぜサーバサイドJavaScriptかの論旨に強引さがあるのは否定しません。そもそも結論ありきの話です。
本を書いたことを差し引いても、JavaScriptがサーバサイドに進出するのはそれなりに確度があると思っています。ただ、JavaScriptがサーバサイド言語の本流になるかと言われると、率直に言ってわかりません。
現時点のサーバサイドのプログラミング言語(環境)は、Java、.NET、PHPが先頭集団、Perl、Ruby、Pythonが2番手集団というの自分の見立てです。プログラミング言語には熱狂的ファンがいるので迂闊に書くと根拠を示せと怒られそうですが気にせず書きます。今後、JavaScriptが2番手集団に入ってもおかしくないと思っています。更にこう書くとファンに怒られそうですが、サーバサイドJavaScriptが侵食(開発者を奪う)するのはPHPではないかと勝手に思っています。
サーバサイドJavaScriptを使う理由は本に書いていますが、ひとつ取り上げると複数のプログラミング言語を使い分けるのが面倒だからという理由があります。クライアントサイドJavaScriptはある前提で、Webアプリ開発で複数のプログラミング言語を使いたくなければ、アプローチは次の3つ考えられます。
アーキテクチャとしては最後が一番美しいですし、個人的にはこれがベストですが、これができるのはブランド力か財力のある人だけです。普通の人は簡単にまねできません。最初と2番目の件は本に書いてあるので興味があれば見てください。
本書は、JavaScriptの生まれは拡張言語だというスタンスで書いています。本書での拡張言語の定義は、アプリに組み込んで機能を拡張する言語で、かつエンドユーザが書いたコードを実行できるアーキテクチャを意図しています。同じ意味で、組み込み言語と呼ぶ向きもありますが、組み込み言語と呼ぶと最近は組み込み機器用の言語と間違われるようなので、用語は拡張言語で統一しています。
かつて拡張言語の雄はLisp(系言語)でした。Emacsが一番有名ですが、(知る人ぞ知る)CannaもLisp系言語で設定ファイルを書けました。GIMPのScheme系言語(Script-Fu)も有名です。かつてTclが拡張言語として売り出した頃、rmsがTclをやめてみんなGuileを使え、と全世界に訴えたのは記憶に新しいところです(15年以上前ですが…)。
Lispファンには申し訳ないですが(JavaScript本を書くと色んな言語に喧嘩を売るようで心苦しい)、拡張言語の主流はJavaScriptに移った(移る)と思っています。
リファレンス的な章です。ECMAScript第5版ベースなのが少し目新しいと思います。JSONオブジェクト(ECMAScript第5版にあるネイティブJSONオブジェクト)とE4X(ECMAScript for XML)の解説が希少価値です。
前半の山場です。CommonJSは次のURLをください。たぶんCommonJSを扱っているのは(今のところ)日本で唯一の書です。
– http://www.commonjs.org/
前半の山場の章ですが誤算もありました。ひとつはnode.jsの扱いです。この章でCommonJS実装のひとつとしてnode.jsを取り上げました。本質は触れましたが、もっと書けば良かったかなとは思います。個別のAPIに深入りしても内容が古くなりますが。
もうひとつはCommonJSの規格が思ったより進まなかったことです。2010年の初めの頃からCommonJSのMLを購読しています。流量こそ止まっていませんが、思ったより進展がありません。このまま行くとnode.jsのAPIの後追い規格に成り下がる可能性もあります。何も貢献せずに外野から言うだけは失礼なのでこれ以上は書きません。
Java6のスクリプティングAPIです。先日、WEB+DB PRESSにJVM言語の記事を書きましたが、あれが伏線です。興味があれば合わせて読んでください。
Webアプリのアーキテクチャとか、MVCアーキテクチャとか、など書いています。今更な感じもありますが、クライアントサイドJavaScriptしかやっていないと、Webアプリの作りそのもののイメージを持っていない人もいるので書きました。
7章と8章は各論で、具体的なサーバサイドJavaScriptをいくつか紹介しています。なぜJVMと非JVMで分けたのかと言うと単にページ数のバランスの問題です。非JVMという呼び方は、JVMがやけに偉そうで(JVMが本流みたい)好きな呼び方ではないのですが、他に良い分類がなくて、JVMと非JVMになりました。
知る人ぞ知るサーバサイドJavaScriptが動くCouchDBとMongoDBの章です。NoSQLで想起する一番の特徴の分散処理のことは書いていません。そっち方面は別媒体で書いたので後日紹介します。
本書は主に非RDBの世界のデータ設計について書いたので、その点は特徴的かもしれません。非正規化でどうデータ設計するのかに興味があれば読んでみてください。
CouchDBはサーバサイドJavaScriptの解説がそのままアプリ実行環境としてのCouchDBの解説になります。このため、本書はCouchDB専門書でないですが、結果的にCouchDBの相当部分を説明していると思います。ちなみにCouchDBのMap/ReduceはHadoop等のMap/Reduceと(応用分野として)違う面白さがあるのでその方面に興味があれば読んでみてください。
MongoDBのサーバサイドJavaScriptは、MongoDB全体で見ると、端的に言ってあまり大きな領域ではありません。CouchDBに比べると本書のMongoDB網羅度は高くありません。とは言え、MongoDB本はまだ出ていないと思うので、データの持ち方(データベース、コレクション、ドキュメント)や一連の操作を紙で読みたい人のニーズには合致するかもしれません。
Google Apps Scriptです。突然、この章だけスクリーンショット満載です。
本の中にも書いていますが、個人的には、本書で取り上げているサーバサイドJavaScriptの中で、Google Apps Scriptが一番最先端だと思っています。
Google Apps Scriptは凄いと思います。凄いのですが(たぶん多くのプログラマには)面白くはありません。ほとんどのプログラマはExcelのマクロにあまり興味がないと思います。もっと低レベルで不細工で愛想のない技術じゃないと萌えません。そんなものです。しかし、Google Apps Scriptが今ここまで来ていることは認識しておいたほうがいいと思います。
Google App Engine for Java(GAE/J)上でRhino載せるアプリの実践です。タイトルが実践JSになったので実践的な何か、というリクエストで書きました。Javaの本かと思うような内容になってしまいました。JavaScript本なのにGAE/Jも学べるお得な本です。
本人を特定されないようにKさんと呼びます。
昼間六本木でKさんにばったり会いました。Kさんは20代の青年です。
Kさん「井上さん、実践JS サーバサイド JavaScript 入門を書店で見つけたので買いました」
井上「何冊ですか?」
Kさん「…一冊です」
井上「一冊だけですか」
Kさん「すいません」
Kさんは思わずこんな風にからかいたくなる愛すべきキャラクターなのです。しかしそんな彼から驚愕のひと言が飛び出しました。
Kさん「この本、意外に売れるかもしれません」
まさかの上から目線。Kさん、そんなキャラではなかったのに。
普段、斎藤佑樹(ハンカチ王子)は意外にプロでもやるかもと上から目線で語っていますが、語っている当人はどう考えても斎藤佑樹より野球が下手です。彼が上から目線で語られるのは公人だからです。自分も上から目線で語られるようになったと言うことは、公人に一歩近づいたのかもしれません。
と思うことにしました。
MongoDBの方が好きなんですが、CouchDBのパフォーマンスも見てみました。viewを作るところとかのパフォーマンスは見ていないので、厳密な比較にはならないかもしれませんが、ある程度の傾向とか、感覚は分かると思います。CouchDBとか、MongoDBって何じゃ?と言う人は、ASCIIのHadoop & NoSQLを読めば分かるかも。今回はmemcached、MongoDB、CouchDBの3つについて比較しました。memcached、mondodbのコードは以前のものを使っています。
[続きはこちら…]
さて、Modern Common Lispはこれで4回目です。環境構築も完成に近づき、Common Lispでプログラムを始められる状態になりつつあります。ブログの主題も環境構築から実践へと移ります。
今回はCommon Lispでプログラムを書く際によく必要になるであろうライブラリの紹介です。Common LispはSchemeと比べると仕様の大きな言語には違いありませんが、最近普及しているPythonなどに比べると標準ライブラリも小さいです。そのため、適切なライブラリを適切に使用するという能力は、他の言語以上にCommon Lispで必要になるでしょう。
ここで紹介するライブラリはすべてQuicklispに入っているのですぐ利用できます。まだインストールしていない人は以下のエントリを参考にインストールしてください。
早く実践JS サーバサイド JavaScript 入門について何か書け、と言われつつある今日この頃ですが、しばしお待ちください。とりあえずAmazonで目次を見られます。今週あたり書店にも並ぶようです。ありえるえりあ読者は寄付だと思って買ってください。
今日はSoftware Design 今月号の紹介です。
Software Design (ソフトウェア デザイン) 2011年 05月号 [雑誌]
第1特集の「ファイル操作/ログ解析/コーディングを最適化 Vim&Emacsをちゃんと使えてますか?」を大山さんと一緒に執筆しました。総ページ数40ページです。いつものように「Emacsのトラノマキ」の連載記事もあります。こちらは袖山さん執筆です。合わせて47ページ、今月のSoftware Designをアリエルで占拠しました。
第1特集の「Vim&Emacs記事」は新人歓迎企画です。世間に疎いのでまだひとりも会っていませんが、世の中には4月に新社会人になった人が大勢いるようです。そんな人がターゲットの特集です。とは言え、あまりに普通の話が延々と続くと、Software Design読者のボリュームゾーンの年代のおっさん…じゃなくて年配の人…じゃなくて経験者に物足りない内容になるので、所々、マニアックなネタを混ぜたつもりです。なかなか難しい試みでした。おっさん…じゃなくて経験者と新人の両方にいい顔をする記事のつもりですが、外すと両方にとってつまらない記事になるからです。
ところで、新人にVimとEmacsを教える必要はあるのか、というもっとも問いかけがありそうです。これに対する自分の見解は、エディタはツールなので特別何かにこだわらなくてもいいがファイルシステムの理解は必要だと思う、です。
これに対して、ファイルシステムなんて古くないか、というもっとも疑問もあると思います。この見解には同意します。ファイルシステムがすぐに廃れるとは思いませんが、世の中がファイルシステムを隠蔽する方向に進んでいるのは紛れもない事実です。利用者視点では既に多くのサービスがファイルシステムを意識せずに使えます。管理者視点でも、多くのサービスがファイルシステムを意識せず、GUIやWebブラウザUIで管理できる方向に進んでいます。この動きは今後も更に加速するはずです。
しかしファイルシステムは当面存在します。相当に短く見積もっても10年は今のファイルシステムの延長に近い形態は残ると思っています。ファイルシステムを隠蔽するGUIやWebブラウザUIがあったとしても裏には居座ります。日頃からファイルシステムを敬遠するか、それとも馴染んでおくかで、いざという時の心構えが違ってきます。
新人がVimとEmacsをやっておくもうひとつ良い点はおっさん…じゃなくて経験者と話が弾むことです。新社会人が先輩に話しかけるきっかけにできます。相手がVimユーザだったらEmacsをけなせばいいので簡単です。Emacsなんて、GNUの狂人たちの使う、醜くてブクブク太ったエディタですね、と言えば盛り上がることうけ合いです。相手がEmacsユーザだったらVimをけなせばいいんだ、と思ったら間違いです。相手がEmacsユーザだったらVimを褒めるのが正しい戦略です。褒めるのはVimよりできればviです。viの機能美はUnixの機能美に通じますね、と言えばEmacsユーザは喜んでこう返すはずです。うんviは美しい、でもviですらBSDの堕落に通じているのであって、本当のオリジナルUnixの機能美を体現しているのはedなんだ、と。それに引きかえEmacsなんて本当に堕落の堕落で、因果なエディタだよ、と。
会社では製品のストレージにOracleを使っています。Oracleを選択したのはいろいろな事情があります。その選択が正しかったのか間違っていたのかはまだ分かりませんが、なんだかんだ言いながら、素敵なバグを踏みつつ抱腹前進をさせています。そんな大好きなOracleですが、今までは10gを使っていました。でも、よく分からないメンテナンス期間が今年の夏に終わります。世界はやっと11gに入れ替わります。会社の製品はとっくの昔に11gに対応していましたが、顧客の都合で10gもIE6のようになかなか無くならないかもしれないし、Chromeのように・・・。
さて、11gになっての不満というか困ったことは、製品は正式なOracleを使っていましたが、開発は10g Express Editionを使うことも多かったのです。無料なので・・・。11gはExpress Editionがでる気配もなくずっと悲しい思いをしていたり、今後もするんだろうとあきらめていたら、Express Editionのベータ版がでているらしいです。会社の中にはこっそりインストールしていた人がいます。
その人、仮にたばたんとしておきましょう、たばたんが言うには、インストール後におまじないをかけないと、半年後にインストールしたOracleにつなげなくなるそうです。ベータ版の罠なのか、ベータ版ならではのバグなのか、真相は闇の中です。
さて、おまじないですがsqlplusでsysユーザで入って、次の真言を唱えるらしいです。たばたんはどうやってこれに気づいたのでしょう?きっとオタクです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
alter system set sec_case_sensitive_logon=FALSE scope=both; alter system set audit_trail=NONE scope=spfile; -- 製品版の場合、@?/rdbms/admin/undoaud というScriptを実行するが、β版には存在しないので直接入力 noaudit all; noaudit all privileges; noaudit exempt access policy; -- 製品版の場合、@?/rdbms/admin/undopwd というScriptを実行するが、β版には存在しないので直接入力 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME UNLIMITED PASSWORD_GRACE_TIME UNLIMITED PASSWORD_LOCK_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED / |
でわでわ
[オリジナル]
アリエルの開発者の数人で「アリエル・ラボ」を始めてみました。会社には完全に事後承諾ですが。
僕「アリエル・ラボっていうの作ってみたんですけどいいですか。いいよね」
CTO「うん、いいと思います。いいよ」
ラボというと少人数の研究開発グループみたいですが、アリエル開発者が余暇に作ったプロダクトを発表する場にしようと思っています。Google Labsみたいな感じです。
ロゴも作ってみました。
早速いろんなページに貼ってみました。
まったくアリエルのイメージと違う気がしますが、まあ仕方ないです。誰か代わりに作ってくれる人がいればいいのですが。
ちなみに labs.ariel-networks.com はGitHub Pagesで作ってみました。以下のリポジトリで公開しています。
今のところ僕と松山さんが作ったプロダクトが並んでいるので、ほとんどCommon Lispのプロダクトです。いずれ他の人がいろんな言語で面白いプロダクトを作ってくれることを期待します。岩永さんとか。Scalaとか。
うまくいくかまったくわかりませんが、まあ細々とやってみます。「こうしたほうがいい」など意見があれば深町 (@nitro_idiot)へ。
最近のコメント