タグ

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

  • RubyのOptionParserの底力を知る - ザリガニが見ていた...。

    コマンドは、以下のような書式でオプションと引数を設定して、実行する仕組みになっている。 例: コマンド名 オプション オプション オプション引数 オプション コマンド引数 optparser_test.rb -a -b VALUE --foo FILE_PATH 実際にコマンドを作ろうとすると、オプションの解析には手間がかかると気付く。 そのため、多くの言語環境にはオプション解析用のライブラリが用意されている。 Rubyのoptparserについて、基的な使い方は知っているつもりだったが... Rubyでコマンドの中身を作るまで - ザリガニが見ていた...。 ちょっと気の利いたコマンドにしようとすると、その使い方は謎だらけになった。 どうしたら苦労最小限でオプションを解析できるのか、調べてみた。 基 require 'optparse' OptionParser.new do |op

    RubyのOptionParserの底力を知る - ザリガニが見ていた...。
  • 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

    InoHiro
    InoHiro 2015/02/10
    すごいエントリだ
  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

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

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
    InoHiro
    InoHiro 2013/12/09
  • UTF-8にもいろいろある - ザリガニが見ていた...。

    前回からの続き。 改行コードの違いを体感してみる - ザリガニが見ていた...。 文字エンコードとロケールを体感する - ザリガニが見ていた...。 改行コードの違いも知った。文字コードとロケール、ターミナルの言語環境との関係も知った。これで文字にまつわる悩みとはおさらばできると思ったら、まだダメだった...。 実験環境 OSX 10.8 Mountain Lion以前((OSX 10.9 Mavericksでは、Mac仕様なNFDのUTF-8を表示しようとするとエラーになってしまったため、10.8以前の環境で実験した。Assertion failed: (width > 0), function conv_c, file /SourceCache/shell_cmds/shell_cmds-175/hexdump/conv.c, line 137. ** ** Abort trap: 6

    UTF-8にもいろいろある - ザリガニが見ていた...。
    InoHiro
    InoHiro 2013/11/25
  • patchコマンド-pオプションの覚え書き - ザリガニが見ていた...。

    patchコマンドは、元ファイルと差分情報からファイルを更新してくれる素晴らしいコマンドだが、patchコマンドを実行するディレクトリと-pオプションの設定で悩むことが多い。そこで今後のために、自分用の覚え書き。 ファイルにパッチを当てる 様々なオプションが設定できるが、基は以下の書式。 $ patch 元ファイルのパス < patchファイル(差分情報)のパス 元ファイルが存在するディレクトリに移動すれば、「元ファイルのパス」は省略できる。(以下synergy-1.3.1の例) $ cd ~/Downloads/synergy-1.3.1/lib/platform $ patch < ~/Downloads/OSX_BusError.patch synergy-1.3.1に対するパッチファイル、OSX_BusError.patchをサンプルに考えてみる。 Index: COSXKeyS

    patchコマンド-pオプションの覚え書き - ザリガニが見ていた...。
  • :disable_withで処理中を明確にして二重送信を防止 - ザリガニが見ていた...。

    フォームに入力した内容をサーバー送信する時、送信ボタンを押してから処理に時間がかかると不安になる。(特にファイルをアップロードする時など。)ユーザーによっては、2回、3回と送信ボタンを押しまくるかもしれない...。不要な操作は、サーバーにも負荷がかかるし、きっとユーザーもイライラしているはず。そんな時は、submit_tagの:disable_withオプションで手軽に解決できた! 以下のように:disable_with=>'アップロード処理中...'と設定しておけば... ボタンを押すと、操作できない状態に変化して、二重送信が防止できる。 同時にボタンの表示が[アップロード処理中...]に変更され、ユーザーにフィードバックできる。 <%= start_form_tag({:action => 'create'}, :multipart => true) %> <%= render :pa

  • バックグラウンドになったアプリを一時停止して劇的に軽くするAppleScript - ザリガニが見ていた...。

    元ネタは以下のページ。(素晴らしい発想に感激!) Macで重いバックグラウンドアプリケーションを劇的に軽くするPythonスクリプト « 日曜研究室 全くそのとおりで、自分の場合もSafariで常時50以上のタブと複数のウィンドウを開いて作業しているのだ。ブックマークするほどでもないけど、後で試してみたいこととか、この日記を書いている間は頻繁に参照しそうだから開いておこうとか、諸々の理由でついついタブを開き過ぎる傾向にある。その結果、アイドル時のCPU利用率の増加、メモリの空き容量残りわずか、swap頻発。そして、重〜いMacBookにイラつく結果となるのだ。 この状況を打破すべく考案されたのが、プロセスにSIGSTOPシグナルを送信して、バックグラウンドで利用していないアプリを完全に停止状態にしてしまう方法。SIGSTOP中のプロセスのCPU利用率は0になるのだ。 面白そう!こうゆうのを

    バックグラウンドになったアプリを一時停止して劇的に軽くするAppleScript - ザリガニが見ていた...。
    InoHiro
    InoHiro 2011/03/20
  • その写真に何を写しているのか? - ザリガニが見ていた...。

    最近はカメラのことがとっても気になりだして、2回に分けて集中的に調べてきた。 カメラの知識(露出について) カメラの知識(焦点距離と画角・被写界深度について) 物事は何でもそうだけど、カメラもまた奥が深い。まだまだ知らないことばかりだ。上記で書いたカメラの知識についても、それに関するほんの一部を触っただけで、不足していることが数多くある。 また、撮影する時に知っておくべき知識や技術というのも数多くある。ともすると、いつもの調子でそういった知識や技術ばかりを追ってしまいそうになる。しかし、そういったノウハウをすべて覚えたとしても、良い写真が撮れる訳ではなかったりする。もちろん、知識やテクニックは、ないより、あった方がいい。でも、そもそも「良い写真」の定義さえ分からない自分が居るのだ...。 写真とは何なのか? その根的な疑問に、たった一言で気付かせてくれた名文がある。 写真はキラキラ: s

    その写真に何を写しているのか? - ザリガニが見ていた...。
    InoHiro
    InoHiro 2011/03/20
  • カメラの知識(焦点距離と画角・被写界深度について) - ザリガニが見ていた...。

    初めてデジタル一眼レフ(D40)を手にした時、18-55mmというキットレンズの焦点距離を見て、超広角レンズなのかもしれないな、なんて思っていた。 初心者だけど、28mm=景色を広々撮れる広角レンズ、ぐらいの認識はあったのだ。(この認識も正確とは言えないのだが) しかし実際には、D40などAPS-Cサイズの撮像素子においては、35mmフィルムサイズの画角に換算すると、27-82.5mmという扱い易い広角・中望遠ズームなのであった。 APS-Cサイズの撮像素子においては、焦点距離の1.5倍相当の画角になるのだ。(35mmは52.5mm、50mmは75mm相当の画角になる) そうか200mmなら300mmのレンズだと思ってしまえばいいんだな、と思っていた時期もあったが、それもまた若干違う理解だった。 確かに画角は300mm相当になるが、焦点距離はあくまでも200mmのまま。 よってボケ具合も2

    カメラの知識(焦点距離と画角・被写界深度について) - ザリガニが見ていた...。
    InoHiro
    InoHiro 2011/03/20
  • カメラの知識(露出について) - ザリガニが見ていた...。

    灯台下暗し。カメラの基的な知識は、メーカーのサイトで親切、丁寧、体系的に解説されていることが多かった。 デジタル一眼レフカメラの基礎知識 | ニコンイメージング レンズに関する基礎知識 | デジタル一眼レフカメラ“α”(アルファ) | ソニー デジタルカメラ講座 | デジタルカメラ LUMIX(ルミックス) | お客様サポート | Panasonic レンズのF値 レンズの焦点距離とF値(第十一回) | デジタルカメラ講座 | デジタルカメラ LUMIX(ルミックス) | お客様サポート | Panasonic F値 = 焦点距離 ÷ レンズ口径 50mm F1.0のレンズは、口径50mmの大きさということ。(面積:25^2*3.14=1962.500) 50mm F2.0のレンズは、口径25mmの大きさということ。(面積:12.5^2*3.14=490.625) F値が2倍(F1.0→

    カメラの知識(露出について) - ザリガニが見ていた...。
    InoHiro
    InoHiro 2011/03/20
  • restful_authenticationで認証メールをgmailから送信して、エイリアスアドレスで受信する - ザリガニが見ていた...。

    現状は動作確認のため自分の.Mac(MobileMe)を利用して認証メールを送信するようにしているが、当はgmailを利用して送信したかった...。.Macメールでちゃんと送信できれば、そのまま設定を置き換えればgmailでも送信できそうなのもだが、何度やってもgmailからは送信してくれない...。調べていくと、gmailの場合はSMTPにTSLで接続する必要があるらしい。 しかし、RubyがSSL/TSLに対応しているのは1.9系かららしい。そのため、1.8系でgmailを利用するためには、以下のコードで拡張する必要があるようだ。 lib/smtp_tls.rbによる拡張 以下のコードをRailsプロジェクトのlibフォルダ以下にsmtp_tls.rbとして保存した。 # ---------- lib/smtp_tls.rb ---------- require "openssl"

    restful_authenticationで認証メールをgmailから送信して、エイリアスアドレスで受信する - ザリガニが見ていた...。
  • aasmとは何か?acts_as_state_machineとの違いは? - ザリガニが見ていた...。

    restful_authenticationを--statefulオプションで利用すると、2つのstate_machineが用意されていることに気付く。一つは、以前から利用しているRailsのプラグインacts_as_state_machine。で、もう一つがgemでインストールするaasm。aasmってacts_as_state_machineの頭文字だよな?と思いながら、デフォルトではacts_as_state_machineの設定になっているし、acts_as_...を身近に感じるので、aasmの方は今まで無視していた。 ところが、インストールしたacts_as_state_machineの更新日時を見てみると2006-11-13と相当古い...。1年半以上更新されていないことになる。(でも、特に不便は感じないのだけど。)一方、aasmのページを見てみると、今も活発に更新されている。

    aasmとは何か?acts_as_state_machineとの違いは? - ザリガニが見ていた...。
  • 楽観的ロックの使い方 - ザリガニが見ていた...。

    webアプリケーションでは、二人以上のユーザーが同じデータを編集中という状況が発生する。その場合、特に対策をとらなければ、最後に送信ボタンを押したユーザーのデータで更新されるはず。しかし、これではお互いの意思を確認できないまま、結果として、先に登録したユーザーのデータが、知らないうちに破棄されてしまうことになるので、あまり良くない。そこで、編集する時に何らかの制御をかける。その制御方法に、以下の二つがある。 悲観的ロック(データ編集を開始した時にロック) 既に誰かが編集中であれば、他の人はそのデータの編集ページを開くことが出来ないようにする。 楽観的ロック(データ更新した時にロック) 編集ページは複数ユーザーで同時に開くことが出来るが、途中で誰かが更新した場合は、その後の更新が制限される。 悲観的ロックが安全確実な気がするが、不要なロックが長時間続いてしまう可能性もあり、厳密過ぎるロックは

    楽観的ロックの使い方 - ザリガニが見ていた...。
  • ザリガニが見ていた...。

    貨幣や経済のでよく引用される、南の島の巨大な石のお金の話(有名らしい)が好き。何年か前に、どこかのページで読んだ。とても良くまとまっていて、面白い話だなーと、感銘を受けた。いつまでも記憶に残っている。しかし、今検索しても、感銘を受けたあのページは見つけられない...。関連する情報はたくさん出てくるのだが、以前見たのとはちょっと違う気がした。ならば、自分で書き留めておこうと。若干の想像や創作が入ってしまうかもしれないけど、忘れたくないので書いてみる。 巨大な石のお金 ミクロネシアのヤップ島では、島中に大きな石のお金が置かれているらしい。小さいものは直径30cmくらいから、大きいものでは3m以上、その重さは5トンにもなる。 まさしく、アニメ「はじめ人間ギャートルズ」の世界のようだ。ギャートルズの世界は原始時代の設定であったが、ヤップ島ではつい最近(20世紀初頭)まで、このような石のお金=石貨

    ザリガニが見ていた...。
  • [Ruby on Rails]記事一覧 - ザリガニが見ていた...。

    貨幣や経済のでよく引用される、南の島の巨大な石のお金の話(有名らしい)が好き。何年か前に、どこかのページで読んだ。とても良くまとまっていて、面白い話だなーと、感銘を受けた。いつまでも記憶に残っている。しかし、今検索しても、感銘を受けたあ…

    [Ruby on Rails]記事一覧 - ザリガニが見ていた...。
  • 2.0のmap.resourcesのオプション設定いろいろ - ザリガニが見ていた...。

    今までおろそかにしていた「ルート設定」ではあるが、Rails2.0からは避けて通ることができない*1と今更ながら思い直し、いろいろ試してみた。以下はその実験結果。 基 追加オプションなしの基ルート設定map.resources :slipsによって、以下のルート規則が生成される。 ルート規則は上にあるものが優先される。 .:formatが付属する偶数No.の行は、http://XXXX.XXX/slips.xml等の拡張子付きのリクエストを、respond_toブロックで適切に処理するために存在する。 # ルート設定: config/routes.rb ActionController::Routing::Routes.draw do |map| map.resources :slips end No. 名前付きルート名 メソッド URLパス書式 処理されるコントローラー、アクション

    2.0のmap.resourcesのオプション設定いろいろ - ザリガニが見ていた...。
  • railsforumのrestful_authenticationは素晴らしい!それを見てRESTfulの理解も深まる - ザリガニが見ていた...。

    最近、restful_authenticationで試行錯誤していて感じたこと。restful_authenticationはユーザー認証に関する必要最小限の機能を提供してくれるが、実際に運用できるレベルに仕上げるには、要点を押さえた的確な修正が必要になる。ユーザー認証のscaffold的な位置付けだろうと。 生成されるソースコードはとても簡潔にまとめられていて、読み易い。しかし、いざ自分好みのログインに修正しようとすると、実にいろいろな手段があり、どのような仕組みにするか当に迷ってしまう。 例えば、以前の日記で試したパスワード忘れに対応する方法も、今振り返ってみれば最悪の例だ...。アクティベーションとパスワード忘れの処理が混同しているし、修正の手順もセキュリティ的に中途半端。実装の仕方もせっかくのrestful_authenticationのRESTfulなルールを無視している。やは

    railsforumのrestful_authenticationは素晴らしい!それを見てRESTfulの理解も深まる - ザリガニが見ていた...。
  • form_forの使い方 - ザリガニが見ていた...。

    Railsのバージョンが最新版は2.0.2となっている。しかし、自分の頭の中は依然、1.1.6の状態だ...。勉強のスピードよりRailsの進化の方が早い。1.2.6までは、1.1.6の機能でも利用できたが、Rails2.0以降はガラリと進化し、1.1.6までの書き方では通用しなくなっている部分もある。その一つが、start_form_tag、end_form_tagの廃止。その代わりにform_for do 〜 endブロック*1を利用することになっている。form_forは1.1.6の頃から存在するメソッドだが、専らシンプルなstart_form_tagばかり使っていた。(form_forはマニュアルを見ても複雑そうで、分かり難い印象があったので...。)そろそろform_forについて調べておかないと...。 基形 今まではstart_form_tagを使って、以下のように書いてい

    form_forの使い方 - ザリガニが見ていた...。
  • 自分仕様なMacBookの快適なところ - ザリガニが見ていた...。

    iPadは場所を選ばず手軽に使えて便利なのだが、結局のところ、MacBookの代わりにiPadで作業しようとする限り、MacBook以上に快適に作業できることはなくて、現状ではiPadでの作業はMacBookに比べて冗長になる。(もちろん、iPadでしかできない作業とか、iPadが得意な作業というのもあって、例えば、現在地を絶えず追跡しながらカーナビのように地図アプリでナビゲーションするとか、PDFをまるで紙ののように再現するとか。) たぶん、長年MacBook(のようなマウス&キーボードUIのパソコン)を使ってきて、その環境での作業が慣れているせいもあるかもしれない。それに、そもそもマウス&キーボードUIには25年以上の歴史があり、その中で常に進化し続けてきた。今のMacBookは、すべてがマウス&キーボードUIに最適化され、かなり成熟した作業環境になっているはずなのだ。さらには、自分

    自分仕様なMacBookの快適なところ - ザリガニが見ていた...。
  • iPadのSafariに不足しているものを補う - ザリガニが見ていた...。

    指でダイレクトに触ってなめらかに反応する、あのiPadUIは、あっという間に使う人々を魅了する。しかし、そのまま使い続けているうちに、実はMacBookのようなマウスを利用したUIほど細かい操作ができないことに、いずれ気付く。 iPadUIには、指先での操作を考慮して、適度なサイズと間隔が保持されている。そのため、マウスのUIほど機能を詰め込むことが出来ず、厳選した機能のみが提供されることになるのだろう。 iPadのSafariに不足しているもの それにしても、今のSafariにどう考えても不足していると感じる機能が、二つある。 表示中のページを閉じる機能 ページ内検索 表示中のページを閉じる機能 例えば、http://b.hatena.ne.jp/hotentry で、気になる記事へのリンクをクリックすると、新規ページが開いてリンク先にジャンプする。 気になる記事を読み終わったら、今