投稿

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

おおきなjavascriptコードのデバック

Source Map http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/ これがあると大きなコードをデバックできそうだ。 結合されたり、圧縮されたjavascriptとその前の状態を結びつけて表示してくれるのである。しかも、javascriptへコンバートされるCoffeeScriptなどもデバックで使えるそうである。 速くリリースして欲しい。

flexbox

一週間前にリニューアルされたflexbox http://dev.w3.org/csswg/css3-flexbox/

MacOSX アプリケーション起動のショートカット

MacOSXでは気軽にアプリケーション起動のショートカットをカスタマイズすることはできません。このことは、複数のOSを使っているボクにはとても不便なことです。 automatorを使えばある程度実現することが可能です。 環境:MacOSX 10.6.8 MacBookPro この例ではControl+Option+TでTerminal.app(ターミナル)を開く、ショートカットを作ってみます。  (Note:普段は英語表示をつかっているので表記が英語になっている箇所があります) automatorをspotlightで検索して起動、もしくはアプリケーションから起動 Serviceを選択 Action(検索が便利)からLaunch Applicationを選ぶ Launch Applicationウインドウが左側に表示される Service receives selectedを no input 起動アプリ選択でアプリケーション->ユーティリティ->ターミナルを選ぶ わかりやすい名前をつけて、保存 automatorを終了 アップルメニューからシステム設定を選ぶ キーボードを選ぶ キーボード・ショートカットボタンを押す サービス、一番下にautomatorで保存した項目が追加されるので、その項目の右側の空欄をダブルクリックして、Control+Option+Tを押す 以上で完成、Control+Option+Tが、他のアプリで使われてなければターミナルが起動する。 もしくは起動済みの場合はターミナルが前に来る。

memtest86+とMacBook

イメージ
上のようにMacBookProに8GBのメモリを入れるとUbuntu付属のmemtest86+が動作しない。 これはBIOS(EFIという仕組みで動作)にバグがあるためと言われている。 予想だがEFIはIA-32で動作するため32bitのメモリ最大値4GByteまで対応しないのではないか? したがって、macで8GB以上メモリテストをする場合はRemberを使ったほうがいいと思われる。ただし、RemberはMacOS上のアプリのためOSが使っているメモリをテストできない。メモリの80%〜90%ぐらいの領域のみだ。 ほかにはMac付属のDVD内にAHT(Apple hardware test)があり、DVDを入れ、再起動時「D」を押すことによって起動する。 Remberと比較すると簡易的なメモリテストがある。

メモリが安いのね

仕事の合間に、休憩がてらSSDなどを見ていたら、メモリがやたら安いのに気がついた。 基本的にパソコンの性能にはあまり注目しなくなり、ずいぶん立つがちょと遅かった様子。 一番の底値は2月末あたりで日本の謀メモリ会社が 会社更生法 適用を申請したあたりだ。 あまり必要性は感じられなかったが、最近,SSDのためUbuntu swapエリアもなくしたので買うことにした。 サムスン4G x 2送料込みで4100円也 MBP17 2010に取り付ける予定。

sublime text 2

最近はこのEditorが使いたくって、MacOSXを使っている。残念ながらLinux版やWindows版もあるが日本語入力がまともに出来ないのである。そこでMacOSXでjavascpritやcss, htmlを書いている。C++やjavaに関してはeclipse中心であるが、とにかく軽くて、ソースの位置やインデントが分かりやすい。スクリプトを書くのにバランスの良さを感じる。 しかし、いまだに購入には至っていない。 やはり、壁は日本語入力なのである。早急に対応をお願いしたい。そうなれば購入する。

javascript arguments sample codes

JavaScript the definitiveguide 6th Edition (page175)にあったargumentsのサンプル。 smjsで実行できるものを書いてみた。 // javascriptらしい自由度の高いsum var isArray = Function.isArray || function(o) { return typeof o == "object" && Object.prototype.toString.call(o) == "[object Array]"; }; function flexisum(a) { var total = 0; for (var i = 0; i < arguments.length; i++) { var element = arguments[i], n; // Ignore null and undefined arguments. if (element == null) continue; if (isArray(element)) n = flexisum.apply(this, element); else if (typeof element == "function") n = Number(element()); else n = Number(element); if (isNaN(n)) throw Error("flexisum(); can't convert " + element + " to number"); total += n; } return total; }; var test = function() { return 5; }; var test_str = function() { return "9"; }; var ar_test = [1,1]; print(isArray(ar_test)); // 配列の中に他の配列や関数が含まれていて

emacsとjs-mode

emacsでjsavascriptを編集するモード(JavaScript-IDE) この情報は日本語サイトも含めゴロゴロしているが、古いemacsだったり、独自の拡張のため、今は使えなかったりと...参考にすると苦労させられる。 当たり前だが本家のサイト通りにやっていれば、互換性の信頼は上がるし、最新版が取得できる。 試した環境 emacs23.3 (現在、emacs23.4は日本語入力に不備があるため使っていない) 参照先: http://code.google.com/p/js2-mode/ 現行(Mar., 2012)の基本的な方法( 将来は変わる可能性有り、上を参考。 リンクがはずれていたら、 もうページはあてにならないw ) ./emacs.d/elisp/js2.elとして置いた場合 in Emacs, M-x byte-compile-file RE js2.el RETでコンパイル init.el編集 ( autoload 'js2-mode "js2" nil t) (add-to-list ' auto - mode - alist '("\\.js$" . js2-mode)) カスタマイズ M-x customize-group RET js2-mode RET ここでIndetを2にして使っている。 できれば、ほか方法では触らない。 ハマって苦労する時間がもったいない。 それよりもjavascriptを愉しもう。 emacsを20年以上使ってきて想うことは、emacsの危険さは本来のコーディングではなく,つい カスタマイズが目的になってしまうこと。 init.elは素朴に。 PS ご存知と思いますが余裕があればauto-completeが便利 http://cx4a.org/software/auto-complete/index.ja.html js2-modeで使うにはいろいろ設定が必要ですが、いずれ。

emacs23.4とGoolge日本語入力で不都合

先月アップデートされたemacs23.4 for windowsはGoogle日本語入力で使用すると、変換中の文字がmin-bufferの上で表示され、日本語ユーザーには使いものにならないので、バグが修正されるまでまったほうがよいだろう。 しばらくはemacs23.3を使うのがいい。いつものことだが、英語圏で作られているので日本語対応は後手にまわるのである。 尚、2台のPCで試したが結果は同じだった。

cygwin+teratermをUbuntu Terminalのショートカットをあわせる

Teraterm+cygwin 一番使う、ショートカットはコピー&ペースト。それをUbuntu terminalと同じにする。 teraterm.exeのフォルダにあるKEYBOARD.CNFを編集 [Shortcut keys] ; Ctrl + shift + c EditCopy=1582 ; Ctrl + shift + v EditPaste=1583 キーコードはTeraterm.exeのフォルダ内にKeycode.exeがあるのでそれで調べる。 尚、僕のバージョンではショートカットを変えてもメニューのショートカット表示は変わらなかったが、差新しいショートカットは動作した。

gitkとcygwinとx-server

以前にココ でgitkがX-serverが必要となり困ったと書いたが、時間があったのでX-serverを起動できるようにした。 そのメモ。 まずは以下のアプリを追加。 X-server関連 xinit(xorg-serverは依存で自動インストール)をインストール X-Serverがエラーで起動できない場合、fork()や.DLLのロードでエラーが発生してしまう場合は修正する必要がある。 僕もまったくおなじ症状であった。 以下に方法がある。 http://cygwin.wikia.com/wiki/Rebaseall さらに、カラーのラベルがないと表示された場合は、~/.gitkを消す。 また、gitkが起動できない対処は上の記述も含まれるが以下が参考になる. http://stackoverflow.com/questions/9248034/cygwin-gitk-issue とりあえず動作するようになったが、X-serverの起動しているのでemacs-x11もインストールすることにした。 が、今度は日本語入力で問題が発生。Google日本語入力が利用できないのである。 もちろんしょぼいIMEのはあるのだが使う気などおこらない。。。いつも流れになったorz。で、X版のemacsはuninstallした。

Node.jsとAddon

以下のNode.jsのAddonチュートリアルはとてもわかりやすく、しかも、ほぼC++を利用方法を網羅し説明してある。 本来v8に必要なドキュメントだと思うが、このようなものは現時点ではすぐに探せないか、存在しない。きっとNode.jsを作った人たちが書いたときに苦労したため、現実的にわかりやすく書くことができたのではないか。 http://nodejs.org/api/addons.html http://code.google.com/p/waf/ 以下にAddonパターン Addon patterns Function arguments Callbacks Object factory Function factory Wrapping C++ objects Factory of wrapped objects Passing wrapped objects around 以下にNODE_MODULE内容をWIN32部分を取り除いて載せておく #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) #define NODE_STRINGIFY_HELPER(n) #n #endif /** * When this version number is changed, node.js will refuse * to load older modules. This should be done whenever * an API is broken in the C++ side, including in v8 or * other dependencies */ #define NODE_MODULE_VERSION (1) #define NODE_STANDARD_MODULE_STUFF \ NODE_MODULE_VERSION, \ NULL, \ __FILE__ #define NODE_MODULE(modname, regfunc)

最新のgdb printer (gdb ver7以上)

gdbとlibstdc++debugマニュアル http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html stdcxxの最新のprinterを取得 svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python qtのQStringなどのprinterはKDE devの中に入っている。 doc http://techbase.kde.org/Development/Tutorials/Debugging/Debugging_with_GDB printer http://quickgit.kde.org/?p=kdevelop.git&a=tree&f=debuggers/gdb/printers gnu推奨スイッチ set print pretty on set print object on set print static-members on set print vtbl on set print demangle on set demangle-style gnu-v3 .gdbinit (qtとstdc++対応) ----------------------------------------------------------------------------------------- python import sys # Qt4 sys.path.insert(0, '/home/macken/develop/gdb_qt_printers') from qt4 import register_qt4_printers register_qt4_printers (None) # stdc++ v6 sys.path.insert(0, '/home/macken/develop/gdb_printers/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end

v8cgi

v8cgiのソースを2日ほど眺めた。v8の現実的な使い方を知るのにはシンプルな構成になっていると感じたためである。本来はNode.jsのコードをチェックしたいがイベントループ(イベントドリブン)ベースであるため、私のようなv8初心者にはコードを読むにはキツイと感じたのもある。実際にサーバーとして使うのならばNode.jsのほうが高速を考慮した設計なのでそちらが理想である。v8cgiに慣れたらNode.jsも解析したいと思う。 v8cgiに話を戻すが単純な処理を行うだけで特にトリッキーなところは少ないと思う。しかもNode.jsと同じくCommonJSに合わせたプラットフォームなので参考になる。尚、非同期機能中心のNode.jsはCommonJSに合わせにくいと読んだことがある。人気のNode.jsにの対応させるためCommonJSも変わっていくのではないか? 参考: http://code.google.com/p/v8cgi/ http://nodejs.org/ http://www.commonjs.org/ まずは macro.hをプリントアウトを横におきながら app.h, app.ccを読み v8cgi.ccを読む コアのclass v8cgi_App base class(super)   | v8cgi_CGI 各モジュールはjsとnativeでそれぞれ分かれている。 私はsocketの経験が多いのでそれを解析 src/lib/socket/socket.cc 多くのnative構成は... ------------------------------------------------------- [最終処理] ------------------------------------------------------- [JS_METHOD() 各エントリーの実装] ------------------------------------------------------- [SHARED_INIT() エントリーを登録] ------------------------------------------------------- その他。 src/内 gc

Ubuntu 11.10とgtk+3開発ライブラリ

以下のinstallが必要 Gtk3 C++ライブラリ libgtkmm-3.0-dev libgtkmm-3.0-doc オフィシャル http://www.gtkmm.org/en/