投稿

1月, 2012の投稿を表示しています

CommonJS

JavaScript用ホストオブジェクトに依存しないライブリの標準化 http://www.commonjs.org http://wiki.commonjs.org/wiki/CommonJS CommonJSを実装(全てではなく、お互いに影響) Node http://nodejs.org underscore.js http://documentcloud.github.com/underscore/ Backbone.js (underscore.jsをベース) http://documentcloud.github.com/backbone/

CCACHEメモ

Android-ndk-r7でも正式にサポートされたccache. コンパイル結果がキャッシュされ、2回目以降は高速になる。プリコンパイルヘッダーよりも安定して使いやすい。 書くまでもないがLinux nativeでも当然使える。そのインストールメモ 以下から取得 http://ccache.samba.org/ tar xzvf <filename> cd <folder> ./configure make sudo make installで終わり manページと /usr/local/binへインストールされる。 あとは以下のシンボルリンクをはればOK ln -s ccache /usr/local/bin/gcc ln -s ccache /usr/local/bin/g++ ln -s ccache /usr/local/bin/cc ln -s ccache /usr/local/bin/c++ 以上でコンパイルはCacheされ、高速になる。 ただし当たり前だがリンカは遅い。 アンインストールは 上のシンボルリンクを消し、 rm /usr/local/bin/ccacheでOK

ECMAScript第5版ノート

15.2.3 Properties of the Object Constructor について preventExtensions, sealやfreezeはJavascriptならではの脆弱性を防ぐのに役に立ちそうだ。 8.6.1 Property Attributesについて Writableという属性は、前々からこんなことが言語でできたらなぁ、と何度も思っていたことで、つい歓喜した。 ついでにget, set属性に関しては、Dartと比べると物足りなさを感じた。 もう少し書きやすくしてほしい。

Ubuntu 11.10 キーリング入力ダイアログを止める

Ubuntu11.04, 11.10に対応、以下を参照のこと。 http://askubuntu.com/questions/867/how-can-i-stop-being-prompted-to-unlock-the-default-keyring-on-boot Unityでパスワードを検索して、 パスワードと暗号キー選び Login項目を右クリック、パスワードの変更で、空を指定 以上 注意:当然ながら、セキュリティがなくなるので盗難等に注意が必要。 以前は無線LANの設定ですべてのユーザーに許可するをチェックすればよかったようだが最新版は変わっている。

JavaScript本

技術評論社から昨年秋頃発売になった本「パーフェクトJavaScript」を読みはじめました。本の題名や表紙デザインが俗ぽっくて、初心者向けの印象をうけましたが、内容は充実していると思います。とくにJavaScriptの動きは早いのでNode.jsなどの記述もあり重宝します。 いまいちなのは、難しい部分になってくると、繰り返し屁理屈のような記述が多くなり(はじめから読んでいる人にはうんざり)、重要な部分がぼやけてしまっている点です。難しい部分なので宗教論うんぬんよりも、素直に説明を書いて後でコラムなどでまとめて欲しかった気がします。 またjavascriptは凄いし、メジャーだからやらないと損するよなどと脅迫的な部分がある気がします。ボクはjavascriptは創世記的な言語という気がします。とにかくトリッキーな部分が多い(イディオム)。例えばdartのほうが利点を感じます。言語仕様がシンプルかつ自然なためです。時勢もそれを望み始めているのではないかと思います。それを防ぐためにjavascriptは大きな変革が間近な気もしているので(5版が出たとしてもproperty attributeなどが書きにくい)、なおさらそう目につきました。 いろいろな意味で David Flanaganの サイ本は必要だと思います。しかし、現時点では第6版の日本語がないため、買いにくい書籍になっています。技術書の英語がよめるならば、英語版を入手するほうがいいかもしれません。1000page以上ありますが、そのうちリファレンスが300pageぐらいあります。 各文書は英語らしく明確でわかりやすいと思います。Server-side JavascriptはRhino(当たり前かw)とNodeについて短めですが書いて有ります。 仕上げにJavaScript Patternsがあればいいでしょう。  javascriptのベースはしっかりし、頭が言語になじんできます。 いまのところjavascriptの本では一番好きな本です。その後は現実的なJQueryやNode.jsのソースを読んでいく流れがいいと思います。尚、JavaScript The good partsも良書だと思いますが、残念ながらECMAScript5が出来る前のため、そのことが考慮されていませんので多少混乱します。改正

HDD完全消去コマンド

HDD完全消去コマンド 参考: データの完全消去 Data erasure(Wikipedia) Wiping hard drive clean SSDなどが一般的になってきた現在、使っていたHDDを処分することが多くなり、HDDを完全消去しなければならない。WindowsやMacOSXのパーティションを含め、消去するにはUbuntuなどを使うのが便利である。理由は主要なパーティションに対応しているためである。 ここでは外付けHDDを消す目的である(最近、2,3千円で手に入るIDEやSATA対応のUSB接続するアダプターを利用)完全消去は 大変危険なコマンドなので使わないPC上のUbuntuなどが望ましい(古いEeePCを使った)。これに外部接続して作業する。 ハードディスクを0や1で上書きしても、特別な装置(詳細はしらない)で復元できてまう。 したがって、ランダム値で上書きする必要があるのである。 接続後。 以下のコマンドでHDDを一覧表示し、外部接続のドライブ名を知る。 sudo fdisk -l shredコマンドを使う 手っ取り早く2回(このあとでHDDを破壊するほうが望ましい) sudo shred -n 2 -v /dev/sd? 中古として売る場合の望ましい方法(ほぼ完璧 Wikipediaで推奨 ) sudo shred -n 3 -v -z /dev/sd? option -n 3 というのはランダム情報を3回書き込む -z 上の-nを行った後、0で埋める -v 作業状態を ターミナル に出力 verboseモード 上で-n 2や-n 3 -zとあるが Wikipedia によると15GBytes以上の場合は-n 1にしても問題ない報告もあるそうだ。住所録やクレジットカード情報等、その他重要な情報がなければ無理をせず以下のコマンドでことが足りる可能性がある。 sudo shred -n 1 -v /dev/sd?

Ubuntu ServerをHDDごと新しいマシンへ引越し

今回はSoftware RAID 1(ミラーリング)を使っている2台の500G-HDD(Ubuntu10.04LTS server)を古いサーバーから、新しいサーバーへ物理的に移動する手順を紹介 引越す先は... HP ProLiant MicroServer/Turinon 2gram HDDなし 音が静かで省エネ、サポートがいい、しかも安価。 いままでのHDDを物理的に移動すればいいだけなのでラク。 しかし、HDD移動前に以下の2つを行うことアドバイスする。 移動する前にsudo apt-get update/upgradeをして最新版にしておく。これは新しいマシンのネットワークカードが動かない場合を想定しておこなう。(できればBackupをしたいが、データの重要性と時間を考慮して、しないことが多いw) ソフトウェアRAIDを使っていれば、 ProLiant MicroServerのBIOS(起動時F10)内でRAIDは選ばず、AHCI(デ フォルト)へ。 新しいサーバーで起動時、古いサーバーのネットワークカードとはMACアドレスが異なるため、eth0に割り当てられない可能性が高い(eth1などへrenameされ、起動後ifconfigではloしか表示されない)。したがって古いマシンで閉じる際、以下のファイルをローカルなどに移動するか消す。 /etc/udev/rules.d/70-persistent-net.rules (eth0やeth1に割り当てる設定が起動時自動に生成されている。消すことによってリセット) 以上で、新しいサーバーへHDDを移動する。出来ればHDDの挿入場所は順序を同じにする。e.g. スロットベイAはベイ1へ, Bは2へ (新しいサーバーで初起動の際、HDDが異常があると言われることがあるがFixをおこなう) ただし、ネットワークカードのドライバーがうまくインストールされなければ、手間がかかる作業がまっている。(通常はbroadcomのNIC tg3のドライバーは自動にインストールされる。LiveCDなどは不要) それはいずれ。

apt-get update/upgradeのログ

/var/apt/history.log /var/apt/term.log へログ出力される。

用紙の大きさ(A4とUS Letter)

英語のドキュメントを読む場合、OSの環境をはじめから英語にして慣れていると読みやすいことが多い。しかし、その場合、印刷するときに用紙サイズがUS Letterになっていることが多い。では日本で標準的なA4とUS Letterではどう異なるのか。 A4(inch) 11.69x8.27=96.6763 US Letter 11x8.50=93.5 はじめはディフォルト用紙選択をUS LetterからA4に変更できるものはすべて行う。 また幸いにも、A4のほうが大きいため、大は小をかねる、ことから、対応しやすい。特に フォームフィード (FF,␌,^L,\f,0xC)が便利になる。 ではrfcなどや、ソースコードにFFが入っている場合は何で印刷をするか? 便利なのはemacsのM-x print-bufferだ。これを使うとFFが有効に動作してくれる。emacsのPostScript系印刷は遅いので手軽ではないが、カラー印刷(faces)を使う場合はこちらを使う。 (日本語fontは問題が有り) しかし、そのままだと欠点があり、rfcの1ページ目を印刷する際、オーバーするため、フッターが次のページに繰り越されてしまう。その対策としては1ページ目の先頭の空白行を消して、印刷すればすっきりと収まり、ドキュメントが数段読み易くなる。 まぁ、日本国内でUS Letterを安く購入できればと思うのだが、この場合は別の問題が発生するので(A4と区別しにくいし、取り違えなどが発生)、考えないことにする。

IMAP4r1とExtention

最近はrfc3501関係にどっぷり浸かっていました。やっと、1ヶ月半で見渡すことが出来るようになり(実際は理解していないかもw)、fc4549などを読んでいて楽しいかも、思えるようになりました。 一番のキーはUIDVALIDITYについて、何が書いてあるかは記憶できるのですが、実際はrfc4549を熟読して、理解しなければ意味がわかっていない気がします。 結果的には同期が一番重要なことで、 UIDVALIDITY CONDSTORE(HIGHESTMODSEQ) UIDPLUS による効率化が必要である。 古いサーバーに関しては、ある程度、非対応としてもいい時代になってきているのかもしれません。 Silent explungeにも、十分注意して、ユーザーの怒りを買わないこと。 メールの容量も重要な課題であること。 IDLEに対応していなければ便利でない。 IMAP拡張rfc5000番以後で注目しているもの QRESYNC rfc5162 モバイルで有効なQRESYNC. さらに高速なResyncにはQRESYNCが重要である。1往復でOld-messageの状態を取得できる SEARCHRES rfc5182 Referencing the Last SEARCH Result LIST-EXTENDED  rfc5258 LIST、LSUBコマンドを効率化させる。 ESORT  rfc5267 SORTにレンジを指定でき、効率化させる。 NOTIFY rfc5465 Select mailboxの範囲内だけ機能するIDLEを改良し、Push機能を強化 その他(上と重複有り) RFC 6237 - IMAP4 Multimailbox SEARCH Extension RFC 6203 - IMAP4 Extension for Fuzzy Search RFC 6154 - IMAP LIST Extension for Special-Use Mailboxes RFC 5957 - Display-Based Address Sorting for the IMAP4 SORT Extension RFC 5819 - IMAP4 Extension for Return

Ubuntu11.10 Kernelにpatchを当てコンパイルする方法

シンプルにUbuntu11.10 カーネルにpatchを当てコンパイルする。 ここに記するカーネルコンパイルはPatchをあてるだけを目的にシンプルに書いたものである。詳細は https://help.ubuntu.com/community/Kernel/Compile を参照のこと。今回はSSD対応にするpatchを当てる例で書いている(これはMacBook+SSDにUbunutをインストールしたときを例にしているだけで、コンパイル手順はPCでも全く同じ、念の為) ソースとコンパイルに必要なパッケージをインストール sudo -sでrootへ(これ以後、操作に注意) apt-get install linux-source kernel-package フォルダを作成し、ソースを展開 mkdir ~/src cd ~/src tar xjvf /usr/src/linux-source-<version-number-here>.tar.bz2 cd linux-source-<version-number-here> 現在のubuntuの設定を使う cp /boot/config-<your current kernel config> ./.config 設定を反映 make oldconfig patchを反映 cat ~/Download/< patch> | patch -p1 コンパイルし、debianのパッケージを作成(環境にもよるが2時間ぐらいの処理) make-kpkg --initrd --append-to-version c1 kernel_image <deb file> が../.に生成される。 インストール #  dpkg -i <deb file> ボクの環境(ubuntu 11.10 macbookpro 6,1)では... <linux- src>は linux-source-3.0.0 < your current kernel config >は 3.0.0-14-generic <version-number-here>は3.0.0 <de

SSD Intel320とUbuntu11.10

Ubuntu11.10(MacIntelにインストール時)の現時点ではSSDが効率良使えるAHCIモードにするとバグがある。そのバグはレジューム後では不安定になる。これはAHCIモードで復帰されないため(IDEモードに戻ってしまう)修正patchはあるが11.10では反映されていない様子。しかし、AHCIモードにしない場合、プチフリーズが多く発生する。 ココにコンパイルの方法を書いた。 (今後、対策されると思われる。以下を参照、この中にはpatch有り)。 https://bugs.launchpad.net/mactel-support/+bug/817017 AHCIにするには以下を参照(MacBookPro6,2だがグラフィックカード以外はほぼ同じ) https://help.ubuntu.com/community/MacBookPro6-2/Oneiric#SSDs 注意:上のリンク先のように01_mbp_ahciを作成すると、Grub2起動でBOOTCHAMPのWindowsが起動に失敗する可能性がある。そんなときは... 01_mbp_ahciを作らず。10_linux内、printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"の次の行に以下の4行を追加すればLinux時のみACHIで動作し、Windowsが正常に起動可能となる。(修正後update-grub2を忘れるなw) # set ACHI mode for Mac-Ubuntu   cat << EOF     setpci -d 8086:3b28 90.b=60 EOF 注意:Ubuntu12.10では変更されている dmesg|grep -i ahciで確認 [    1.068055] ahci 0000:00:1f.2: version 3.0 [    1.068096] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [    1.068198] ahci 0000:00:1f.2: irq 41 for

android-ndk-r7とgdb7.3

android-ndk-r7とgdb7.3(Ubuntu11.10 python2.7) gdb_qt_printersがエラー発生 pythin error .gdbinitを無効にしなければならない。 一部のprojectがgdbでラベルのアドレスがずれる。(r6に戻してテスト、gdb_qt_printersは動作するがstlportのstd::stringのprinterは動作しない、これはgnustlと内容が異なるため) osanpo/androidは正常に動作 尚、ndk-gdbが動作すれば基本的にはSequoyahが動作するようだ。