本を読む

読書やコンピュータなどに関するメモ

Ubuntuでプロジェクターに映すときは3Dを切る

 自分の経験だけでサンプル数1ですが、Ubuntuからプロジェクターに映そうとしてうまくいかない(画面構成が乱れる、制御が効かなくなる、etc)ときには、デスクトップの3Dアクセラレーションを切ったらうまくいっています。

  • Ubuntu Unityなら、ログイン画面でUnity 2Dを選ぶ
  • GNOME 2.x+GNOME Classicなら、設定で視覚効果を無効に

 PCやプロジェクターの機種にもよると思いますが。

複数の短縮URLを多段展開するWeb APIを作った

 複数の短縮URLを1回で多段展開するWeb APIサービス「nagaino」を作りました。

 Shibuya.lisp TT #7でLTしたやつで、heroku+Clojure+MongoDBで動いてます。異常系(エラー等)への対応が甘いと思うので、正直、まだ人柱クオリティです。

 ソースはGitHubで公開してます。

Rubyのトップレベルで関数形式メソッドが定義されているか調べる

 多くの人は興味ないし、興味ある人は知ってそうな話。メモとして。

 Rubyのトップレベルで定義されている関数形式メソッドは、Objectのprivateメソッドになっている。そのため、定義されているかどうか、何かのオブジェクト、例えばObjectオブジェクトへのrespond_to?の第2引数にtrueを渡して確認できる。

$ irb
ruby-1.9.2-p290 :001 > def hoge; end
 => nil
ruby-1.9.2-p290 :002 > Object.respond_to?(:hoge, true)
 => true

 同じことをCでやるには、rb_obj_respond_to()の第3引数を真にする。

「冒険エレキテ島」1巻

冒険エレキテ島(1) (KCデラックス)
鶴田 謙二
講談社 (2011-10-21)

 「広くてすてきな宇宙じゃないか」が雑誌に掲載されたときの衝撃を引きずっていて、青い海や水没した浜松の描写、その日常とつながった冒険譚は、自分のひとつの原イメージとなっているように思う。

 この「冒険エレキテ島」も、小笠原諸島の青い海と空、古風な家や町の日常を舞台に、複葉機(フェアリー・ソードフィッシュ)を駆って空輸便を営むパイロットのヒロインを描く。銀玉鉄砲もあるしね。そして、謎のエレキテ島。うん、鶴田謙二ワールド。

 ぜいたくを言えば、最初のほうがカラーだったらよかったかな。

「Software Design」2011年11月号

 付録で、2010年1年間の「特集記事の」PDFがCD-ROMで付いている。

 第1特集が「さくらインターネットを基準にデータセンターの未来を考える」。遠慮したタイトルになっているけど、つまりさくらインターネットの総力特集。田中社長の対談に、ユーザーイベント「さくらの夕べ」のレポート、さくらインターネット研究所の松本氏によるInfiniBandやSSDキャッシュなどの技術とその使いどころの話、さくらインターネット研究所の鷲北氏による「さくらのクラウド」の基礎技術の解説、「ぼくんちのTV」の人によるVPS活用事例、小悪魔aicoさんによる石狩データセンターのイラスト解説など、見所たくさん。どさくさにまぎれて「さくらインターネット伝説」の各項目をカコミ記事で田中社長に聞いてるしw

 あと、対談中で「外のサービスでこれはスゴいと思ったものを、もっといいもので作る」という発言があって、ちょうど子飼弾氏のコラムの「Good artiets copy, great artists steal」という引用と呼応しているように思った。

 第2特集が「よりよいプリント環境の作り方」。CUPSとそれをとりまく印刷技術の解説、スマートフォンからの印刷、Google Cloud Printという3つの違う世界の技術をいっしょに紹介していたのが新鮮だった。

 インタビュー連載「Software Designer」は、GitHubの創設者のChris Wanstrath氏。コードを公開するサイトはSourceforgeなどそれまでにもあったけど、URL付けや操作などで「フォーク」を支援して「共有」を重視したのがGitHubの特徴、という言葉が面白かった。

 UnixマガジンからASCII.technologiesと続いていたjusのレポートが、この号からSoftware Designに移って開始した。新連載ではほかにHack for Japanの連載も。

 そのほか、Google Apps ScriptをExcel VBAふうに使う解説記事もあり。Openflow連載は、「OpenFlow界のRails」(記事より)ことTremaの解説がスタート。Emacs連載はpopwin.el。Ubuntu連載はGPGキーサインのHowTo。アメーバのインフラ連載は、ひきつづきChefの解説。Objective-C連載は、マルチスレッドをGCDやブロックなどを中心に解説。iOS連載は、Cocoa TouchのMVCパターンでの開発。Android連載は、Intentがらみのサンプルの見方。

「日経Linux」2011年11月号

 発売から時間がたってしまったけど、メモとして。

 この号では、コミュニティなどで名のある執筆陣がいろいろ参加しているのが期待。

 特集1が「いまこそWindows完全脱出」。アプリケーションを取り上げるだけではなく、データの移行や、周辺機器の対応、Active Directoryでの管理などに踏み込んでいるのが読みごたえがあった。交野市や箕面市の事例も紹介していて、これもアプリの話だけではなく、移動プロファイルなどの固有の問題への対処事例がレポートされていた。

 事例といえば、分載で「「カーセンサーnet」リニューアル奮戦記 前編」も。今回はプロファイリングによる、NFSのマウントオプション変更や、Apacheのパラメータが変に変更されていた事の修正、PHPコードからの外部コマンド起動の修正など。

 新連載では「触って学べるOSS-DB試験」ということで、PostgreSQLの基礎講座が始まっていた。いっぽう、クラウド基盤技術連載が最終回で、仮想ネットワーク設計のあたりを一気に解説していた。

 特集2は、「Linuxプログラミング超入門」と題して、Javaによるデスクトップアプリ、HTML5によるマッシュアップアプリ、Rubyによるデスクトップアプリ、GoによるTwitterクライアントと、4つの言語でのサンプルを紹介していた。締めとして、Matz氏が「技術を斬るスペシャル」として講評。解説の立ち位置が、氏らしいと思った。

 単発記事では、Android音楽プレイヤー「Zen Touch 2」を改造して、位置情報を公開するWebサーバーにする記事もあった。

 マンガ「シス管系女子」は、シチュエーション作りが毎回けっこう自然で面白い。今回はgrep。いっぽう、美女Linux連載はfindで、近いけどカブらないネタどりは狙ってるのかな。やさしいLinux連載も、ドライブのマウントとファイルのリネーム。

 ほか、プリンタ連載は、プリンター設定ダイアログまわり。upstart連載は、本格的にジョブの状態遷移と設定へ。認証連載は、シングルサインオン関連の技術。Android 3連載は、Fragmentのライフサイクルとアクションバー。Web感覚で作るAndroidアプリの連載は、Titanium Mobileのサンプル集である「Kitchen Sink」の見方。カーネル新機能連載は、extのTRIMの効率化。アジアOSS連載は台湾のソフトウェア業界事情。

「Shibuya.lispテクニカルトーク #7」参加

 Lispコミュニティ「Shibuya.lisp」のテクニカルトークイベント「Shibuya.lisp TT #7」に参加してきました。

 今回はLTに応募してしゃべってきました。小心者なので、終わったあと緊張で吐きそうになりましたが、懇親会でビールを飲んで回復しました。

 自分はさておき、ほかの方々の話はいずれも深くて興味深いものでした。中でも、FPGAでLispマシンを作ったという小黒さんの話は、びっくりしながら聞きました。

 以下、簡単なメモ。

括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか(松山朋洋)

 Common Lispで実際に書いている立場から、「Lispがすごい」と言われていることに対して懐疑的な点を具体的に上げつつ、ではどこがすごいかという話をしていました。

 いわく、ポール・グレアムなどが「Lispは凄い」というが具体的にどう凄いかわからないこと、キラーアプリが少ないこと、標準化が進まないこと、LispのGCやラムダ式などの機能はほかの言語にも取り入れられてきていること、ライブラリのパッケージをuse-packageするときやexportするときの面倒な問題、CLOSでアクセサが衝突すること、パターンマッチングが遅いことなどを上げていました。

 また、「便利系のマクロを作ると、なぜか使わなくなることが多い」とか、みんなで同じようなライブラリを書いてるとかいうことから、マクロなどでうまく使いやすいように抽象化するのは難しいと指摘していました。

 それでもLispを使う理由として、Guy Steele Jr.の「Grwoing Language」という言葉を紹介して、成長可能であることを上げました。また、Lispを書いているときは言語に縛られずに自由に書ける、と語っていました。

Secure Scheme Script(TOD)

 スクリプト言語はソースが見え、変数や関数も実行時に変えられることに対して、それらを制御する機能をSchemeに追加した実装を紹介していました。

 具体的には、セルに読み・書き・実行の認可のロックのフラグと、認証情報へのリンクを持たせて、ロックされたセルの処理にはパスワード認証が必要にしたとのこと。また、データは暗号化してBASE64してファイル保存するということでした。

 さらに、認証情報をプロセス間で交換できるようにし、ネットワーク越しにRPC的にほかのプロセスに式を投げられるようでした。

 質疑応答では用途の質問があり、PayPalみたいなことをやりたいという話がありました。

Lispマシンを作ってみた(小黒直樹)

 FPGAでLispマシン「Spica」を作ったということで、実機デモつきで説明をし、会場を驚愕させていました。

 Spartan-3A評価キットというのがベースで、ヘネパタ本ベースのMIPS風CPUインストラクションと3imp論文ベースの処理系で、GCもCPUの機能として持っているとのこと。また、REPLも毎回コンパイラでネイティブコードにコンパイルして実行しているとのことでした。また、いま多倍長整数はサポートしていないが、例えばCPUの乗算命令で桁あふれになるとソフトウェアの例外となるのでそれを掴まえて実装できるという話もありました。

 苦労としては、メモリコントローラが大変なので同じデータを送り続けてタイミング合わせを省略したとか、FPGAで全部書くのは大変なのでmicroSpica CPUを作ってその上でSpica CPUを作ったとか、アセンブラやエミュレータなどのツールも作ったとか。あと、GCがバグっていてnamed letが循環参照になってメモリが足りなくなり30秒で固まるというバグも起きたとか。

 あと、なんとなく遅いと感じてプロファイルをとってみたら、GCのためのリファレンスカウントの増減に37%の処理時間を使っていて、直したいがそのままになっている、という話もありました。

 ちなみに、製作期間は数か月とのこと。すごいなあ。

LT:scheme to c++0x(新妻弘崇)

 ここからLT。自分のトークの心配でよく聞けてなくてすみません。

 1番手は画像解析だったかをやっている方で、Schemeで書いたコードをC++に変換するツールを作って使っているとのこと。型推論がまだ甘いので手で直せるようにしているとか、boost::lambdaに期待とかいう話だったと思います。

LT:(文型素人による)実用を目指したArc処理系の(孤独な)開発(青山新)

 芸大でメディアアートをやっているそうで、Twitterでは「ハッカーが画家」とうまいこと言っている方もいました。

 Common LispでPICを制御して作品を作ったりしているとのこと。今回の発表は、SICPのメタサーキュラーインタープリタを参考に、C++でArc処理系を作っているとのことで、実際にデモもしていました。

LT:Web Applicationが思うがままに書ける(call-in-remote-instance)の作り方と使い方(橋本隼人)

 Webアプリケーションで、サーバーからブラウザに処理を送り込んで実行する機構を開発iて紹介していました。ブラウザ側はBiwaSchemeを使っているとのことです。

LT:長いの(emasaka)

LT:Clojure によるバイトコードプログラミング(太田 正悟(athos0220))

 Clojureにインラインアセンブラを実装した話で、「これでClojureはわからないけどJava VMのアセンブラを書ける人もOK」とw。ただ、Clojureコードと比べてみたら速度メリットはまだ弱く、autoboxingがオーバーヘッドなこと、Clojure 1.3でプリミティブ型の最適化が強力になったこと、そしてJava VMのJITが強力すぎることを上げていました。

LT:「The Lifeboat PERSPECTIVE 1989 AUGUST 特集/LISPミニツール」の紹介(田中洸一)

 「Gaucheがわかる」と言ったらRubyで開発している株式会社万葉に採用されたそうですw。

 20年前にLifeboat社が作った小冊子を紹介し、「リストをコンスセルの図で表示」「pretty print」「表計算ソフト」の3つの問題を出題していました。

LT:SchemeでFacebookアプリ作ってみた(ひげぽん)

 アプリ「王様の耳はロバの耳」がMoshで動いているそうです。「JSONは人間に読めないので、人間に読めるS式で」という発言が大ウケしましたが、「データをS式で保存するのはやりすぎだった。MySQLのほうがよかった」とも言っていました。

LT:KondoLisp(hayamiz)

 Arduinoのごく小さなハードウェアリソースで動くLisp処理系を作って、Arduino用プログラムを書いてコンパイルしなくても制御できるという発表でした。センサーに反応してLEDを光らせるデモを動画で見せていました。

LT:CL Libraries(深町英太郎)

 タイトルは上記のものと変わっていましたが、メインのトークをしていた松山さんたちとcl-annotなど、最近作ったいくつかのCommon Lispライブラリの紹介でした。

「Q.E.D.」40巻、「C.M.B.」18巻

 毎度おなじみミステリー漫画、今回も同時発売。「Q.E.D.」は1話書き下ろし。今回も楽しませていただきました。

 ネタバレしないように注意しているつもりだけど、念のためご注意を。

 「Q.E.D.」は、「四角関係」「密室No.4」の2話を収録。「四角関係」は人間関係ドラマを前面に出してるけど、それに気をとられると…。

 書き下ろしの「密室No.4」は、孤島と密室というミステリー伝統の舞台で置きた事件。なるほど、ドタバタ展開のあれが伏線と。

 「C.M.B.」は、「龍鳳」「A列車で行こう」「ガラスの博物館」の3話を収録。正統派ミステリー造りの「Q.E.D.」に対し、トリッキーな「C.M.B.」というのが最近の傾向かな。チェスタトン的な。

 「龍鳳」は、若干無理に思える部分もあるけど、謎に謎を重ねていく展開が面白かった。博物ネタは倒福や龍鳳胎。

 「A列車で行こう」は学園もの。何が起きているのか自体が謎という仕掛けが自分好みだった。

 「ガラスの博物館」は、トリックの話のあと、最終ページで説明されたアレの伏線の部分がそうなっていたのかと。博物ネタは古代ペルシャのガラス。

「Vyatta入門」

 Internet Watchに、「さくらのクラウド」β版の試用記を書きました。コントロールパネルを中心に、ユーザー側の利用イメージがどうなるかに焦点を当ててまとめてます。反応を見ると、どちらかというとインタビューの部分が受けたようですが(そりゃそうかw)。

 記事でも書きましたが、仮想ネットワークを実ネットワークっぽく見せるというコンセプトが面白いと思いました。そこで使って面白かったアイテムが、ソフトウェアルーターOSの「Vyatta Core」。Debianベースなので、コマンドラインで普通にlsとか実行できるんですが、同じコマンドラインで「show interfaces 」とか打って「?」を打つと補完候補が出てくるという。これはLinuxなのかルーターなのかという感じで驚きでした。

オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで (Software Design plus)
近藤邦昭 松本直人 浅間正和 大久保修一 日本Vyattaユーザー会
技術評論社
売り上げランキング: 28131

 そのVyattaを設定するのに、本書が参考になった。いまのところ、日本語で唯一のVyatta本のはず。

 最初に設定方法の基本を解説した後、第3章でIPアドレスの設定やDHCP、DNS転送、NAT、ファイアウォールといった基本的な設定のやりかたをさらってくれている構成が、自分のような初心者が簡単な用途に使うのにちょうど参考になった。

 もちろん、その後の章で、NATとかVLANとかDHCPとか、各ジャンルの設定を個別に解説している。ルーティングやVPN、LB、QoSなども。

 リファレンス形式じゃなくて、定番レシピ的な設定を題材に解説しているのが、入門者にもわかりやすいんじゃないかと思う。

Ubuntu 11.10(β)で追加されたパッケージ

 Ubuntu 11.10が今月リリースされる予定で、現在β2が公開されています。

 パッケージ一覧をUbuntu 11.04と機械的に比較したところ、約4,700パッケージが追加され、約2,400パッケージがなくなっていました。実際にはパッケージ名やパッケージ構成の変更も多く、それを含んだ数字ですが。

 追加されたパッケージの中から、目についたものをいくつかピックアップしてみます。パッケージ名など外見を見ただけで、中身は見ていません。あと、同じパッケージ名でバージョンアップされているものは含みません。

  • nautilus-dropbox

 DropboxクライアントがUbuntuのapt lineから入るようになっていました。といってもクライアント本体はnautilus-dropboxがダウンロードするんですが。

  • ubuntuone-installer

 Ubuntu OneのクライアントをAPTでインストールして、Ubuntu Oneの設定パネルを起動するツールのようです。通常のデスクトップ版だと、標準でUbuntu Oneクライアントがインストールされるので意味はなさそうですが、軽量環境用なのでしょうか。

  • ubuntu-orchestra-*

 (仮想)サーバーのプロビジョニングツール、Ubuntu Orchestraが登場しました。

  • unity-greeter
  • unity-lens-applications
  • unity-lens-files
  • unity-lens-gwibber
  • unity-lens-music
  • unity-services

 UbuntuのGUIのUnityがいろいろ変更されるのにともない、標準lensも増えてました。

  • jenkins
  • jenkins-*
  • libjenkins-*

 継続的インテグレーションのツールのJenkinsが追加されました。

  • openjdk-7-*
  • icedtea-7-*

 OpenJDKが7になりました。

  • tomcat7
  • tomcat7-*

 Java関係ではTomcat 7が入ってました。

  • postgresql-9.1
  • postgresql-9.1-*
  • postgresql-client-9.1

 PostgreSQLは9.1に。

  • uwsgi
  • uwsgi-*
  • uwsgi-plugin-*
  • python-django-uwsgi-admin
  • python-uwsgicc
  • python-uwsgidecorators
  • libapache2-mod-uwsgi*
  • libapache2-mod-ruwsgi*

 PythonやPerl、Ruby、JVMなど複数の言語に対応したWebアプリケーションサーバーのuWSGIが追加されてました。

  • linux-image-3.0.0-*
  • linux-source-3.0.0

 Linuxカーネルは3.0ですね。

  • xen-hypervisor-4.1*
  • xen-docs-4.1
  • xen-tools
  • xen-utils-4.1
  • xen-utils-common
  • libxen-dev

 Xenが4.1に。Linux 3.0にマージされましたしね。

  • cpanminus
  • cpan-listchanges

 Perlモジュールもいろいろ追加されていますが、cpanminus(cpanm)とcpan-listchangesが入ってました。

  • twiggy

 Perlのイベント駆動型Web(PSGI)サーバーのtwiggyも追加されていました。

  • perlbrew

 ホームディレクトリ以下にPerlをインストールするperlbrewがパッケージになっていました。まあ、最初にperbrew installして~/perl5/perlbrewを作り、~/.bashrcとかに設定を追加する必要があるんですが。

  • ruby-rvm

 同様にホームディレクトリ以下にRubyをインストールするRVMも追加されました。こちらは/etc/profile.d/rvm.shが用意されていて、~/.bashrcとかに設定を追加しなくていいようです。

  • ruby1.8-full

 Rubyのインストール関係では、ruby1.8、ri1.8、ruby1.8-devをまとめてインストールするためのメタパッケージが追加されてました。そのほか、Rubyもいろいろなライブラリが追加されているようです。

  • clojure1.2
  • leiningen

 Clojureが1.2になって、プロジェクト管理ツール(Mavenフロントエンド)のLeiningenも入りました。執筆時点では、leinコマンドを呼ぶと、jarファイルの名前の違いでエラーになるようでしたが。

  • gcc-4.6*
  • g++-4.6*
  • cpp-4.6*
  • gcj-4.6*
  • gfortran-4.6*
  • gnat-4.6*
  • libgnat-4.6*
  • gobjc++-4.6*

 gccは4.6に。

  • gccgo*
  • gccgo-4.6*

 gcc 4.6で追加されたGo言語フロントエンドも入ってます。

  • golang
  • golang-*

 本家のgolangも追加されてます。

  • npm

 node.jsのパッケージマネージャのnpmも入りました。

  • libjs-jquery-*

 Ubuntu 11.04ではlibjs-jquery-*としてはlibjs-jquery-uiぐらいしかなかったのですが、だいぶ増えてます。

  • ghc
  • ghc-*
  • libghc-*

 Haskellコンパイラのghcも7になって、パッケージ名が「ghc6」から「ghc」に変わってました。

  • yesod

 Haskellでいうと、Webアプリケーションフレームワークのyesodも入ってました。

  • failmalloc

 シブいところで、LD_PRELOADとかでmalloc()を置きかえて、テスト用にmalloc()を失敗させるfailmallocが入ってました。

  • git-sh

 git-shも。

  • twittering-mode

 Emacsのtwittering-modeも追加されました。

  • cloudfoundry-client
  • cloudprint

 VMwareのPaaSであるCloud Foundryのクライアントや、スマートフォンなどからインターネット経由で自宅のプリンタに出力するためのGoogle Cloud Printサーバーもありました。

  • howm
  • jlatex209-bin
  • jtex-bin

 いちど消えたhowmやjtexが復活していました。jtexはライブラリのjtex-baseはあったんですが。

  • qmail-run
  • qmail-tools
  • dot-forward
  • fastforward

 qmailのバイナリパッケージが入ってました。本家の開発が止まってるので、あまりおすすめできませんが。

2011.10.11変更:npmを追加

earthquake.gemでt.coなURLを自動展開する野良パッチ

追記2012.1.30:同等の機能がearthquake.gem本体(開発版)でサポートされたようです。

 ストリームAPIを使ったターミナル上のTwitterクライアント「earthquake.gem」を、t.coで短縮されたURLを自動展開するよう改造してみました(野良パッチ)。

 Twitterの1エントリーは、tweet entitiesというデータ構造にt.coの展開情報が入っていて(ほかにmentionやハッシュタグなどの情報も)、特に展開のためのAPI等を呼ばなくても展開できます。ストリームAPIではデフォルトでtweet entitiesが付いているので、その情報を元にテキストを加工するだけです。

 加工しちゃうと、mentionやハッシュタグの情報の位置がずれちゃいますが、ここでは使ってないのでよしとします。

 ストリームAPIで流れてくるタイムラインはこれで展開されますが、コマンドでリクエストしたエントリーにはデフォルトではtweet entitiesが付きません。なので、リクエストで指定します。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly