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

  • iMacが始まりだった - ザリガニが見ていた...。

    何でもいいから、何か書いて、残しておくべきだと思った。まとまりがないけど。 そもそも、Macが存在しなかったら、今このブログを書いていたかどうかも分からない。 人生においては常にそうなのかもしれないが、あの時、あの瞬間に、何かに出会っていなかったら、きっと今の状況はなかったのではないかと、そう思うことがよくある。 あの時、偶然にもiMacを買っていなかったら、VAIOがすんなり購入できていたら、今頃はどうしていたのか? 現在も続く貴重な友人関係も、あの時iMacを購入したからこそ続いている、そんな状況もある。 仕事をしていく上でも、質を追究したソフトウェア作りの知識が広い意味で役立っていた。 質を追究する心は、このブログのポリシーにもなっている。 思い出 初めて購入したパソコンがブルーベリーのiMacだった。なぜiMacだったかというと、お金の問題だった。当初、生存給付金の25万を元手

    iMacが始まりだった - ザリガニが見ていた...。
  • レコードをテキストに変換する方法の一歩先 - ザリガニが見ていた...。

    MacBookiPhoneiPadのSafariにおいて、あらゆるページで自動ログイン・自動入力を目指した上記 auto_login*1スクリプトの作成では、その過程で様々な問題が持ち上がった...。 手軽に安全で確実なSafariのフォームへの自動入力を目指して - ザリガニが見ていた...。 auto_login AppleScriptコード - ザリガニが見ていた...。 iPhoneiPadのSafariでもあらゆるページで自動入力したい - ザリガニが見ていた...。 今回のスクリプト作成で最後まで悩んでいたのは、AppleScriptのレコードを文字列に変換する方法だった。 ログイン情報をJavaScriptで利用するにはJSON形式に変換する必要があり、どうしても必要な処理だったのだ。 ところが、AppleScriptにはレコードを文字列にする方法が提供されていない。(

    レコードをテキストに変換する方法の一歩先 - ザリガニが見ていた...。
  • coding()ハンドラの真価と広がる世界 - ザリガニが見ていた...。

    昨日実装したcoding()ハンドラは、少し大袈裟かもしれないけど、実は自分の中では長年の夢だった。 on coding(obj) try if obj's class = text then "\"" & obj & "\"" else if obj's class = list or obj's class = record then obj as number else obj as text end if on error msg try "require \"jcode\";$KCODE=\"u\";/\\{.*\\}/=~" & quoted form of msg & ";puts($&);" --rubyコード do shell script "ruby -e " & quoted form of result --シェルコード on error --do shell sc

    coding()ハンドラの真価と広がる世界 - ザリガニが見ていた...。
  • iPhone・iPadのSafariでもあらゆるページで自動入力したい - ザリガニが見ていた...。

    前回までにMacBookにおいては、手軽に、安全で、確実なSafariの自動入力環境になった。 手軽に安全で確実なSafariのフォームへの自動入力を目指して - ザリガニが見ていた...。 しかし、来はiPhoneiPadでこそ、自動入力したいのではないか?MacBookならキーチェーン.appの自分のメモを見れば、どのページであっても手入力して、どうにかログインはできる。ところが、iPhoneiPadにはキーチェーン.appがないので、ID・パスワードを確認する術がないのだ。 出先でちょこっと金融機関のページにログインしたいと思っても、自動入力できず、ID・パスワードもあやふやでログインできず、諦めた経験はないだろうか。結局、家に帰って、MacBookの前に座って、ようやくログイン。そんな経験が自分には少なからずある。また、iPhoneの小さなソフトウェアキーボードで入力するのも

    iPhone・iPadのSafariでもあらゆるページで自動入力したい - ザリガニが見ていた...。
  • auto_login AppleScriptコード - ザリガニが見ていた...。

    日記の容量の制限で溢れてしまったので、9月26日から分割した。 ログイン情報取得.scpt Safariで表示中のページからログイン情報を取得して、保存する。 set BS to load script POSIX file ((do shell script "dirname " & quoted form of ((path to me)'s POSIX path)) & "/_login_base.scpt") tell BS authenticate("●入力された情報を保存します。" & return) set new_record to record_from(url_key() & ":" & input_tag_json()) if new_record as list = {{}} then error number -128 --強制終了 try openssl_dec

    auto_login AppleScriptコード - ザリガニが見ていた...。
  • メモリを割とガッツリ解放するAppleScriptを作る過程 - ザリガニが見ていた...。

    前回、メモリを解放する効果のあるコマンドを覚えた。 du -sx / >& /dev/null & sleep 5 && kill $! diskutil repairPermissions / purge ターミナルを開いて、これら3つのコマンドを実行すると、予想以上に気持ちよくメモリを解放してくれた。これならメモリ不足を感じたら実行する定例の操作として、覚えておく価値は十分ありそう。しかし、毎回ターミナルから3つを実行するのは、コマンド履歴を利用したとしても、だんだん面倒になってきた。ではどうするか?いつものAppleScriptでやってみることにした。 基 AppleScriptからコマンドを実行するのは簡単。do shell script "コマンド" を使うだけ。 よって、メインの処理自体は以下のように書ける。シンプル。 do shell script "purge" do s

    メモリを割とガッツリ解放するAppleScriptを作る過程 - ザリガニが見ていた...。
  • メモリを解放してスワップ発生を抑える方法 - ザリガニが見ていた...。

    OSX 10.6 Snow Leopardは、極めて安定した、信頼性の高い、快適なOSとなった。但し、ハードディスクから起動する環境において、その快適さを保つためたった一つ気を付けておくべきことがある。それは、スワップ使用領域の増加を極力抑えること。 スワップへのアクセスが頻繁に発生している時は、あのレインボーカーソルがぐるぐる回っている時である。どうしようもない操作レスポンスの低下に悩まされる。そんな状態に極力陥らないように、使っていないメモリを素早く解放する方法を模索してみた。 その1 フォルダ容量を計算する フォルダ容量を計算する過程でメモリが解放されることがある。それを利用した方法は、3つある。どれも仕組みは同じなので、どれか一つの方法を実行するだけで十分。 Finderを利用する方法 Finderで起動ディスクのルートを開いて、リスト表示にする。(command-2) 表示オプシ

    メモリを解放してスワップ発生を抑える方法 - ザリガニが見ていた...。
  • バックグラウンドになったアプリを一時停止して劇的に軽くするAppleScript - ザリガニが見ていた...。

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

    バックグラウンドになったアプリを一時停止して劇的に軽くするAppleScript - ザリガニが見ていた...。
  • テキスト編集のキー操作を自在にコントロールする - ザリガニが見ていた...。

    その裏で何をしているか? パソコンで文章を書くという行為は、最も一般的だけど、その裏では高度な技術が動いていたりする。例えば、aというキーを押したら、画面にaと表示されるのが当り前と思ってはいけないのだ。 OSは、キーを押した時に発生する電気信号を、キーコードとして受け取るだけである。 そのキーコードのよって、画面上の指定された位置に、指定されたフォントで、aという文字が表示されるのは、OSが描き出す幻想である。 最近のフォントは輪郭を数式化された関数で描画する。さらに、アンチエイリアス処理によって、ピクセル間をなめらかな曲線に仕上げる。 人間にとって文字と画像は区別されるモノだが、パソコンにとってはどちらも画像で、CPUにとってはメモリ上に格納された電気信号でしかない。 文字は入力されたらそれでおしまいではなく、絶えず挿入・削除が繰り返され、編集される運命にある。 文字が挿入されたら、そ

    テキスト編集のキー操作を自在にコントロールする - ザリガニが見ていた...。
  • デフォルト設定でテキストシステムの底力を引き出す - ザリガニが見ていた...。

    前回からの続き... テキストシステムはとっても奥が深い。 まだまだ知るべきことがたくさんある。 関連日記 テキスト編集のキー操作を自在にコントロールする AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定 MacBookで文章を入力する時の操作方法 デフォルト Cocoa Event-Handling Guide: Text System Defaults and Key Bindings 上記のアップル公式のページに詳細な解説が載っている。但し、英語で。 ネイティブ日語スピーカーな自分には、読んでも意味が分からない部分もあったりする。 そんな時は、実際に設定して、動作を確認してしまうのが手っ取り早い。 半年後の自分がまた英語の文献と睨めっこしないように、どんな効能なのかメモしておく。 NSTextKillRingSize # 任意設定;4にする場

    デフォルト設定でテキストシステムの底力を引き出す - ザリガニが見ていた...。
  • Safariに追加している便利な機能や設定 - ザリガニが見ていた...。

    最近、Safariのとっても便利な機能や設定を知った。以前から使っているものも含めて、追加している機能を厳選して書き出してみた。 動作確認の環境 MacBook OSX 10.6.4、Safari 5.0.2 テキストエンコーディングを自動判別するよ。 以下のページをクリックしてみて欲しい。自分のSafariでは、すべて文字化けする。 ができるまで ホームページ案内 / Homepage Guide ブートの仕組み ところが、テキストエンコーディングの自動判別を有効にすると、かなりの確率でちゃんと読めるようになった。 3.のページについては、最初文字化けが続いたが、何度かテキストエンコーディングの手動設定を繰り返しているうちに、文字化けしなくなった! テキストエンコーディングを学習するのだろうか?謎だ...。 そんな機能を実現してくれる設定は... # 自動判定を有効にする defaul

    Safariに追加している便利な機能や設定 - ザリガニが見ていた...。
  • QuickDrawが素早く楕円を描く手順を追う - ザリガニが見ていた...。

    2010年7月20日、QuickDrawのソースコードがダウンロード可能になったらしい。 MacPaint と QuickDraw のソースコード、公開される - スラッシュドット・ジャパン yebo blog: AppleMacPaintとQuickDrawのソースコードを寄贈 QuickDrawは、Lisaや初代MacintoshからOS9の時代まで、Macの画面に見えるもの(ほとんど)すべてを描いていたGUIなOSの核となる描画プログラムだ。25年以上も昔から、角の丸い四角形を当然のように高速に描画していた。そのQuickDrawがどのように円を描いていたのか?以前の日記で思いを馳せたことがある。 QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。 奇数の数列の和が、二乗の数列になる(1 + 3 = 2^2、1 + 3 + 5 = 3^2、1

    QuickDrawが素早く楕円を描く手順を追う - ザリガニが見ていた...。
  • 麻雀の「待ち」を出力する その3 - ザリガニが見ていた...。

    さらに前回の続き。 メソッドを再帰呼び出しすることで、ループ(再帰呼び出し)回数はかなり節約できた。 しかし、puts @outs.uniqに頼っている現状では、まだ無駄な検索をしていることになる。 順序違いの組み合わせは、最初から無視すれば、一石二鳥だ。 無駄なループ処理を節約できる。 重複を取り除く処理も不要になる。 uniqで誤摩化すということは、自分で書いたコードのアルゴリズムを読み切れていない証拠だ。 処理の流れを徹底的に理解して、無駄な処理を排除してみる。 class Tehai def initialize(input) @in_text = input @outs = [] @count = 0 end # 対子を取り出す def toitsu(loc, n, rest, pick, head) new_rest = rest.sub(/#{n}#{n}/, '') gen

    麻雀の「待ち」を出力する その3 - ザリガニが見ていた...。
  • Rubyのハッシュテーブルの仕組みを徹底的に理解する - ザリガニが見ていた...。

    ハッシュとは 一般的に理解すると抽象的で分かり難くなってしまうが、ハッシュとは、あるデータから、一定の計算をして求めた、目的に沿った数値、と思っている。それでは、どのような目的に利用されるのか?自分の知識で考えてみた。 暗号化 webアプリケーション等で、パスワードをDBに保存する時、生のパスワードをハッシュに変換して保存する。 Digest::SHA1.hexdigest等で求めたハッシュから、元のデータを復元するのが非常に困難という特性を利用する。 保存しているパスワードハッシュが、たとえ漏洩したとしても、不正利用を防止できる。 パスワードを照合するときも、ハッシュに変換して、保存しているパスワードハッシュと一致するかどうかで判断する。 同等の確認 長い文字列データを比較する時、全ての文字が等しいかチェックするのは非常に時間がかかる。 しかし、長い文字列データをハッシュに変換しておき、

    Rubyのハッシュテーブルの仕組みを徹底的に理解する - ザリガニが見ていた...。
  • マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。

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

    マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。
  • 1