タグ

ブックマーク / zariganitosh.hatenablog.jp (21)

  • ASCIIコードの秘密 - ザリガニが見ていた...。

    当はエスケープシーケンスのことを調べていたのだが、その前にASCIIコードについて調べることになってしまった...。文字コードの基として知っているつもりだったASCIIコードについて、あらためて見直してみると、実は当の意味をよく分かっていなかったことに気づいた。 ASCIIコード表 ASCIIコードは、7ビット(2進数7桁)の文字コードであり、全部で128のコードが定義されている。 最も基的な文字コードであり、その他多くの文字コードはこのASCIIコードと互換性を維持している。 00 10 20 30 40 50 60 70 00 NUL DLE SP 0 @ P ` p 01 SOH DC1 ! 1 A Q a q 02 STX DC2 " 2 B R b r 03 ETX DC3 # 3 C S c s 04 EOT DC4 $ 4 D T d t 05 ENQ NAK % 5

  • with_indifferent_accessはなぜ文字列キーを使うのか? - ザリガニが見ていた...。

    前回からの続き。 ところで、最近のRubyは{abc:123}({:abc => 123}と同等)のようなハッシュ定義も可能になり、間違いなくシンボルキーが多用される時代なのに... with_indifferent_accessは、なぜ文字列キーを使うのか? シンボルは無駄にオブジェクトを生成しない。 コード中に:fooがいくつあっても、たった一つの:fooオブジェクトを参照するだけ。 irb(main):001:0> :foo.object_id => 538568 irb(main):002:0> :foo.object_id => 538568 irb(main):003:0> :foo.object_id => 538568 オブジェクトIDがすべて538568。同じである。 一方、文字列は何度も異なるオブジェクトを生成する。 コード中に"foo"が出現する度に、異なる"foo"

    with_indifferent_accessはなぜ文字列キーを使うのか? - ザリガニが見ていた...。
  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

    awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基動作 awkの基動作は、とってもシンプルである。

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
  • rubyのワンライナーに見る驚きの省略記法 - ザリガニが見ていた...。

    rubyには、省略されたコードが隠されていることがある。その省略されたコードをちゃんと理解しておかないと、rubyの中で何が起こっているのか?見失ってしまう...。調べてみた。 一般的なソースコードの中では、可能な限り省略せずに書いた方が良いと思われる。 きっと、他人を悩ますか、1カ月後の別人の自分が悩む。 しかし、直接タイプすることが多いワンライナーでは、素早く、簡潔に入力できる省略表現は便利である。 無駄に$や!を入力しないので、エスケープの問題で悩むことも少なくなると思われる。 作業環境 OSX 10.9 Mavericksである。 GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13) ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin

    rubyのワンライナーに見る驚きの省略記法 - ザリガニが見ていた...。
  • 標準入力からプログレスバーを利用する仕組み - ザリガニが見ていた...。

    cocoaDialogというアプリケーションがあって、インストールするとコマンド呼び出しから、GUIのダイアログ環境を提供してくれる。 例: msgbox(メッセージボックス) inputbox(インプットボックス) secure-inputbox(セキュア インプットボックス) dropdown(ドロップダウン) fileselect(ファイルセレクト) textbox(テキストボックス) progressbar(プログレスバー) progressbar(プログレスバー) ひと通りのGUIが揃っていて、たいへん便利である。その中でも気になるのがプログレスバーの存在である。時間のかかる処理の進捗状況を教えてくれるあの棒グラフみたいなGUI。今まで単機能のコマンドツールを作っても、進捗状況を的確にフィードバックする方法がなくて困っていた。窮余の策として、Growlや通知センターを使って、「開

    標準入力からプログレスバーを利用する仕組み - ザリガニが見ていた...。
  • プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。

    プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的

    プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。
  • 最高の電子書籍はどこにあるのか? - ザリガニが見ていた...。

    伝記スティーブ・ジョブズ1・2、ようやく読み終わった。今回は電子書籍で購入した。かつて、アラン・ケイが夢見たDynabook、それを実現してしまったジョブズ渾身の傑作iPadで、長編書籍(しかもジョブズ自身の伝記という内容)を果たしてどこまで快適に読めるのか、身を持って体感するため。 iPadで、伝記スティーブ・ジョブズが読める電子書籍リーダーにもいろいろある。このブログを書いている時点で7つの電子書籍リーダーを選択できた。果たして自分はどの電子書籍リーダーで読めば良いのだろう?探ってみた。 一覧比較 最初だらだらと調べていたのだけど、いろいろな要素があって非常に分かりにくい...。 とりあえず、iPadで伝記スティーブ・ジョブズを読む状況に限定して調べてみた。 ebiReader Kinoppy honto パブリ BookLive Voyager アプリ 価格 1995円 2000円

    最高の電子書籍はどこにあるのか? - ザリガニが見ていた...。
  • プロセスの源流を見に行く - ザリガニが見ていた...。

    MacBookが起動している間、実に様々なアプリケーションが稼働して、快適な作業環境を提供してくれる。Dockやメニューバーには、自分の意志で明示的に起動されたアプリケーションが並ぶ。しかし、そこに見えているのはほんの一部で、その裏ではさらに多くのアプリケーションが稼働している。それらは常にバックグラウンドで稼働し、UI*1を持たない。だから、厳密にはアプリケーションとは言えないかもしれない。 普段はその存在をほとんど感じることはないが、アクティビティモニタ*2を起動すると簡単に確認できる。ツールバーで「すべてのプロセス」にしてみると、自分の環境ではその数およそ100プロセス*3。結構な数だ。 それらの暗黙的に稼働している(はるかに多い)プロセスは、一体いつ起動されたのだろう?それを調べるには、やはりアクティビティモニタのツールバーで「すべてのプロセス(階層表示)」にしてみると、ある程度想

    プロセスの源流を見に行く - ザリガニが見ていた...。
  • このブログについて - ザリガニが見ていた...。

    ザリガニが見ていた...。

    このブログについて - ザリガニが見ていた...。
  • ヒートシンクとシロッコファンの清掃 - ザリガニが見ていた...。

    最近どうも初代MacBookの冷却ファンが常にフル稼働している。負荷の少ないwebページ閲覧でも、しばらくするとすぐに6200rpmで最高速回転冷却が始まる。何かが、おかしい...。そう思って、センサーの温度を調べてみてびっくり! 何だこれは...。Heatsink Aが126℃って、かなりホット。もしCPUの温度であれば、とっくに熱暴走してもおかしくないレベルの超高温!目玉焼きが焼けそう。この高温が継続すると、各部に悪影響を及ぼしそう。まだ過ごしやすい春の陽気でこれだから、真夏の冷房なしの環境を考えると、先が思いやられる。 隣のHeatsink Bは58℃という至って平常な温度なので、温度センサーの異常か、Heatsink Aの冷却がうまく機能していないことを予想した。分解してみた。 埃 ヒートシンク周囲には、かなりの綿埃が付着していた。 また、シロッコファンとの接合部では、ヒートシンク

    ヒートシンクとシロッコファンの清掃 - ザリガニが見ていた...。
  • AirPrint・CUPS-PDF・Dropboxを賢く使う方法(まとめ) - ザリガニが見ていた...。

    重要:一括ダウンロードに含まれるスクリプトを修正しました。 CUPS-PDF_permissions_default.scpt を実行すると/etc/cups/cups-pdf.confの内容が消えてしまう不具合を直しました。(すいません!) もし、/etc/cups/cups-pdf.confの内容が消えてしまった場合は、CUPS-PDFを再インストールすることでデフォルト設定が戻ります。 2010/12/6 18:00以前にダウンロードした方は、最新版をダウンロードしてください。(お手数おかけして、申し訳ないです!) 過去3回、AirPrintに試行錯誤してきて、 AirPrint可能なプリンタ共有にしておく AirPrintでPDFをDropboxに送る AirPrint中にキャンセルする方法 さらに分かったことも含めて、AirPrintにまつわる操作とか設定等のまとめ。 AirPr

    AirPrint・CUPS-PDF・Dropboxを賢く使う方法(まとめ) - ザリガニが見ていた...。
  • radikoのflvから取り出したAACはなぜiTunesで読めないのか? - ザリガニが見ていた...。

    http://radiko.jp/ は既存のラジオ放送をWebで同時配信(サイマル放送)してくれている。 その番組をradikoroを使って録音すると、20100905220904.flvのようなフラッシュビデオ形式のファイルとして保存される。 保存されたファイルは、大体1時間番組で20MBくらいのサイズ。 flvではiTunes・iPodが再生してくれないので、radikoroの録音設定でmp3に変換するようにしている。 ところが、変換後のmp3は50MBくらいのサイズになってしまう。およそ2.5倍に膨れ上がっているのだ。 今時のハードディスクは、テラバイトが標準になりつつあるので大した問題はない。でも、気分が良くない。 調べてみるとradikoの音声は、HE-AAC 48kbpsのステレオ品質*1らしい。(着うたフルと同等レベル) 上記のHE-AACは、flvというコンテナ*2に収めら

    radikoのflvから取り出したAACはなぜiTunesで読めないのか? - ザリガニが見ていた...。
  • QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。

    かつてのMac OS9までの描画エンジンの主役はQuickDrawが担っていた。GUIなOSでは、文字も含めてすべてをグラフィックとして扱うので、画面に見えているすべてのもの*1はQuickDrawによって描かれていたことになる。描画エンジンは、GUIなOS開発の要となる技術である。その出来が、GUIなOS開発の成否を分けるとも言える。 そして、最初期のQuickDrawは、ビル・アトキンソンがたった一人で開発したそうである。 当時(25年以上前)のCPUは、動作クロックが8MHzという性能だった。(現在は2GHz=2000MHzかつ、複数コアが当たり前) そのような性能であっても、違和感なくマウスで操作できるOS環境にするために、斬新な発想や試行錯誤を重ね、相当な努力の末に開発されたのがLisaやMacintoshであった。 Amazon.co.jp: レボリューション・イン・ザ・バレー

    QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。
  • 徹底的にソフトウェアで豊かな音を奏でてみよう - ザリガニが見ていた...。

    MacBook音楽を聴く時、どのアプリケーションを利用するだろう? ほとんどの場合、iTunesだと思う。 その他... QuickTime Playerでも再生できる。 QuickLookでも再生できる。 いずれもQuickTimeの技術がベースになっていると思われる。でも、まだ手段はある。 afplayコマンド ターミナルを起動して、afplayコマンドで再生する。 afplayは、QuickTimeに頼らない仕組みで再生するOSX標準のコマンドである。 しかも、OSX 10.6からはバージョンアップして、機能が追加されていた! Usage: afplay [option...] audio_file Options: (may appear before or after arguments) {-v | --volume} VOLUME set the volume for pl

    徹底的にソフトウェアで豊かな音を奏でてみよう - ザリガニが見ていた...。
  • Quicksilverは如何にして鋭い検索を行っているのか? - ザリガニが見ていた...。

    Quicksilverの検索性能が、感性をくすぐってきた。 「apple」→「AppleScript Editor」 「ase」→「AppleScript Editor」 「prol」→「Property List Editor」 「im」と入力して、「Image Capture」を起動したいが、「iMove」がトップヒットになってしまう...。 そんな状況でも、候補リストから2回連続で「Image Capture」を選択すれば、3回目以降は「Image Capture」がトップヒットになる。 直近のユーザーの好みを学習してくれるのだ。 もちろん、「ima」まで入力すれば「Image Capture」がトップヒットになる。 「ase」「prol」のような、単純な前方一致でも、部分一致でもない検索には恐れ入る。しかも、シンプルだけど学習もしてくれる。使うほどに手に馴染んでくる仕組みは、この辺

    Quicksilverは如何にして鋭い検索を行っているのか? - ザリガニが見ていた...。
  • コマンドから引き出すGUIの機能 - ザリガニが見ていた...。

    OSXが素晴らしいGUI環境を提供してくれるのだから、わざわざコマンド操作を覚えるまでもないと考えていた。ところが、OSXGUI環境を素早く・便利に使いこなすためには、キー操作を組み合わせたショートカットが必須*1である。そして、ショートカットとは何かを考えれば、キー入力以外の何者でもなく、突き詰めればコマンド入力と大差ないことに気付く。 Finderからcommand-Nで新規ウィンドウをを開くのも、ターミナルでlsと入力するのも、キー入力のタッチ数は同じである。 Quicksilverなんて、高度な入力補完機能付きのターミナルのようなものかもしれない。 つまり、GUIはコマンド入力と組み合わせることで、最大の効率化を図れるのである。 ところで、OSXGUI操作にはそれに対応するコマンドが用意されていることが多い。(どちかというと、コマンドが先でそれにGUIを着せた結果なのかもしれな

    コマンドから引き出すGUIの機能 - ザリガニが見ていた...。
  • マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。

    そもそも、マルコフ連鎖とは何なのか?全く聞いたこともなかった。そして、文章を要約するのはとっても高度なことだと思っていて、自分のレベルではその方法を、今まで思い付きもしなかった。 しかし、以下のようなシンプルなRubyコードでそれが出来てしまうと知った時、目から鱗である...。一体、何がどうなっているのだ?コードを追いながら、マルコフ連鎖を利用するという発想の素晴らしさを知った! 作業環境 MacBook OSX 10.5.7 ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] mecab utf8環境でインストール済み マルコフ連鎖に出逢う rssを流し読みしていると、以下の日記に目が止まった。(素晴らしい情報に感謝です!) MeCabを使ってマルコフ連鎖 一体何が出来るコードなのか、日記を読んだだけではピンと来なかっ

    マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。
  • cronからlaunchdへ(より効率的なジョブ管理を目指して) - ザリガニが見ていた...。

    前回、cronでジョブ(コマンドやスクリプト、単一のプログラムなど)を自動実行するために、crontabからその設定をする方法について調べていた。自分なりにかなり詳細に。 ところが、OSX 10.5ではcronを利用してジョブを自動実行する仕組みは一切、利用されていなかった...。ユーザーがcrontabで設定ファイルを作成しない限り、cronさえ起動していない状態だ。(crontabで設定ファイルを作成すれば、cronも起動するようになる。)cronに替わって、OSX 10.5ではlaunchdが活躍していた。launchdはcron以上に柔軟にジョブを管理する仕組みを持っている。 例えば、スティッキーズをspotlightで検索可能な状態にするために、cronを使ってStickiesDatabaseを1分ごとにコピーしていた。*1 最初は無差別にコピーしていたが、 * * * * *

    cronからlaunchdへ(より効率的なジョブ管理を目指して) - ザリガニが見ていた...。
  • observerを利用して嬉しくなること - ザリガニが見ていた...。

    以前の日記で、restful_authenticaionのobserverを利用しないコードに変更してしまったが、その後、修正を繰り返すうちに、observerにはobserverの良さがあることに気付き始めた。 以前の発想 observerを利用した場合 # コントローラー class UsersController < ApplicationController def activate self.current_user = params[:activation_code].blank? ? false : User.find_by_activation_code(params[:activation_code]) if logged_in? && !current_user.active? current_user.activate flash[:notice] = "Signup

    observerを利用して嬉しくなること - ザリガニが見ていた...。
  • マウスで握って並べ替える。 - ザリガニが見ていた...。

    リストの順番を自由に並べ替えたい。こんな時、Railsにはヘルパメソッドsortable_elementがある。このメソッドを1行追加するだけで、マウス操作でドラッグして並べ替えが可能になる。但しいくつか注意することがある。それを知らないために、思うように動かず遠回りしてしまったので、忘れないように自分用のメモ。まずは以下のように使ってみた。 利用環境 MacBook Rails 1.1.6 scriptaculous-js-1.7.0 必要最小限の基動作を確認 <%# view %> <%= javascript_include_tag :defaults %> <ul id='sort'> <li id='item_1'>item_1</li> <li id='item_2'>item_2</li> <li id='item_3'>item_3</li> </ul> <%= sort

    マウスで握って並べ替える。 - ザリガニが見ていた...。