タグ

ブックマーク / frsyuki.hatenablog.com (12)

  • Captty - ターミナル録画ツール - Blog by Sadayuki Furuhashi

    ターミナルを録画するツールにはttyrecがありますが、Partty!.orgではCapttyというツールを開発しました。Capttyはttyrecと比べて、データを圧縮する、ウィンドウサイズを保存するという利点があります。 CUIの操作画面は、普通の動画と比べればサイズは小さいですが、塵も積もれば山となり、長時間使っていると結構な大きさのデータ量になります。特に画面をスクロールしたり、vimやscreenなどを使って画面を分割して操作していたりすると、サイズがどんどん増えます。 しかしデータのほとんどがテキストなので、エントロピーが小さく、かなり圧縮が効きます。普通にdeflateで圧縮するだけで、ざっと10%くらいになります(90%減!)(もちろんデータによって違いますが) というわけで、Capttyはデータを圧縮して保存します。保存するファイルのデータ形式自体が圧縮を考慮して設計して

    Captty - ターミナル録画ツール - Blog by Sadayuki Furuhashi
  • Ramzeを使ってみる - Blog by Sadayuki Furuhashi

    Partty!.orgのWebインターフェイスはRubyで書いたのですが、Ruby on Railsではなく、Ramazeという変な名前のWebフレームワークを使ってみました。Railsと比べてブラックボックスがずっと少なく、分かりやすいのがいい感じです。データベースを使わずにVCモデルで構築することもでき、現にPartty!.orgはデータベースを使っていません。(これはターミナル共有プログラムがデータベースに対応していないのが主な理由です) RamazeのHello, World!は↓こんな感じで、ファイル1つで完結します。 require 'rubygems' require 'ramaze' class HelloController < Ramaze::Controller map '/' def index "Hello, World!" end end Ramaze.star

    Ramzeを使ってみる - Blog by Sadayuki Furuhashi
  • 「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記

    Parsing Expression Grammar (PEG)をベースとした構文解析器を生成するパーサジェネレータMetalを作りました。Rubyで書かれており、Rubyのコードを生成します。 Metalの多くはOMeta: an Object-Oriented Language for Pattern MatchingをRubyに移植したものです。 Metalの特徴: Rubyでアクションが書ける オブジェクト指向(継承、Mix-in、委譲、オーバーライド、super) PEGの特徴はそのまま 曖昧さが無い 左再帰が書けない(いまのところ) メモ化する ソースコードはCodeRepos:/lang/ruby/metalにあるので、ガツガツいじれます。 使い方 Ruby gemsでインストールできます。 $ gem install metal 文法定義ファイルを書いて、metalコマンド

    「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記
  • Aerial(エアリアル) - Ajax/Cometの次を行く リアルタイム双方向RPC - Blog by Sadayuki Furuhashi

    JavaScript - サーバー間で双方向のRPC通信を行う技術は「Aerial」(エアリアル)という名前になりました*1。アイディアを出していただいた皆様、ありがとうございましたm(_ _)m Aerialは、通信にFlashを使い、JavaScriptとサーバープログラムとの間で双方向のRPC呼び出しを行う技術です。つまり、サーバー側からJavaScriptのメソッドを呼び出したり、逆にJavaScriptからサーバー側のプログラムを呼び出したりします。 サーバーから直接JavaScriptのコードを呼び出したり、逆にJavaScriptからサーバー側のメソッドを呼び出したりできるので、通信の内容を意識する必要がなく、バグの混入を抑えます。RPC成分入り! ライブラリを開発するときも、HTTPやブラウザ間の実装の違いを意識する必要も無く、ごく普通のTCP接続で通信を行うので、Come

    Aerial(エアリアル) - Ajax/Cometの次を行く リアルタイム双方向RPC - Blog by Sadayuki Furuhashi
    tsukkee
    tsukkee 2008/10/13
    時間ができたら試してみよう
  • Comet/Ajaxの上を行く技術 - Blog by Sadayuki Furuhashi

    上を行くかどうかは知りませんが :-p Ajaxはクライアントの都合でサーバーに通信を仕掛けるpull型の通信ができ、Cometはサーバーが好きなタイミングでクライアントへデータを送りつけるpush型の通信ができるわけですが、新たに双方向の通信ができる技術を開発しました。 具体的には、JavaScriptとサーバーの間で双方向のRPCができます。すなわち、サーバーからクライアント側のJavaScriptのメソッドが呼べるし、逆にクライアント側からサーバー側のメソッドを呼ぶこともできます。 サーバー側で call("addMessage", "Hello!") とやると、JavaScript側の function addMessage(msg) { ... } という関数が呼ばれたりします。 この技術を使って、試しにチャットシステムを作ってみました > デモ (ソースコード)*1 リアルタイ

    Comet/Ajaxの上を行く技術 - Blog by Sadayuki Furuhashi
    tsukkee
    tsukkee 2008/10/13
    Flash経由でサーバとクライアントで双方向通信する仕組み
  • Flex Terminal + Telnet - Blog by Sadayuki Furuhashi

    ちまちまと改良を続けているFlexターミナルエミュレータですが、オープンソースのFlex 3.0がリリースされた記念でちょっと宣伝します。 インターフェイスをしっかり作ったので、ライブラリとして使いやすくなりました。 マルチバイト文字の扱いを割とまじめに実装しました。UTF-8、EUC-JP、Shift_JISが使えます。実行中にエンコーディングを変えられます。 screenでもvimでもエスケープシーケンスの塊でも、まともに動くようになりました。 ウィンドウサイズを変えられるようになりました。 ANSIカラーを変えられるようになりました。 デモ: http://syuki.skr.jp/files/dhatena/20080228/FxTerm.flv (はてなに貼り付けるとあまりに小さい…右クリック→拡大するといい感じです) ソースコードはCodeRepos:/lang/actions

  • CGIでRailsをまともに動かす - Blog by Sadayuki Furuhashi

    普通にRuby on RailsCGI(dispatch.cgi)で動かすと遅すぎてやってられませんが、gateway.cgiを使うと、そこそこの速度で動くようになります。 最初に仕掛けを紹介してしまうと、1回目のアクセスがあったときに常駐プロセスを起動し、2回目以降のアクセスはその常駐プロセスに処理させるようになっています。CGI自体は常駐プロセスに処理を投げるだけなので軽い、というわけです。ただし、1回目のアクセスは通常通りCGIで動作させたくらいの遅さです。 常駐プロセスは一定時間アクセスがないと自動的に終了するので(次のアクセスがあったときにまた起動する)、いろいろ制限のある環境でも使える、かもしれません。 さて、そのgateway.cgiですが、Railsの標準パッケージの中に含まれています。まだexperimentalらしいですが、多少パッチを当てると動きます。 使い方は↓こ

    CGIでRailsをまともに動かす - Blog by Sadayuki Furuhashi
    tsukkee
    tsukkee 2008/10/13
    レンタルサーバでも気軽に使えるようになればRailsやほかのRubyフレームワークももっと広まりそう
  • 開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi

    なかなかrootにならせてくれない、ハードウェアを選ばせてくれない、設定ファイルをviでいじらせてくれないなど、不自由なUNIX : Mac OS Xですが、それ故の自由が何物にも代え難い今日この頃。Leopardになってcron+pdumpfsの仕事まで持って行かれてしまいました。 前回のTiger版カスタマイズメモに引き続いて、Mac OS Xのカスタマイズを書いておこうと思います。 Terminal.app タブ機能が実装されたりssh-agentがKeychainと統合されたりと、Leopardで驚異的なアップデートが行われたターミナル周りですが、まだまだ改善できる余地があります。問題は以下の3点。 HomeキーとEndキーが使えない 色が見にくい ショートカットキーが使いにくい まずHomeキーやEndキーですが、これは環境設定で変更できます。Terminal.appの環境設定の

    開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi
  • 続・Flexでターミナルエミュレータ - Blog by Sadayuki Furuhashi

    予想外に反響をいただいた前回ですが、なんと空前のTTYブームが来ていたとは! そんなこんなでソースコードも公開しました。CodeReposのlang/actoinscript/FxTermにあります。 二日目の成果はこんな感じです↓ 背景色が出るようになりました!カーソルが見えるようになりました! 前回は色付きのテキストを表示するためにTextクラスのhtmlTextを利用していたのですが、これだとやたら泥臭い(色が変わるたびに<font color="#FF0000">... & いちいちタグをエスケープしないといけない)し、その上背景色を設定できなかったので、SpriteクラスにTextFieldクラスで文字列を描画していくようにしてみました。ちょっとだけスマートになっています。 今のところの問題点は… 日語は出るけどちょっと化ける 日語を入力できない 画面の左側に変な色が出ている

    続・Flexでターミナルエミュレータ - Blog by Sadayuki Furuhashi
  • Flexでターミナルエミュレータ & Telent - Blog by Sadayuki Furuhashi

    ふと思い立ってFlexでターミナルエミュレータとTelnetクライアントを書いてみました。(と言ってもCからActionScriptへの移植なわけですが) 巷で話題のSocketとByteArrayをバリバリ使ってます。 エスケープシーケンスの処理が破滅的に大変で丸一日かかってしまったのですが、ここにきてvimが動いた!ので、とりあえずスクリーンショットだけ公開。 ↑vimでウィンドウ分割しています。 screenも使えます。ANSI Colorにもしっかり対応。マルチバイト文字も大丈夫。文字コードはEUC-JPもいけます。 今のところの問題点としては… 文字の背景色が出ない カーソルが見えない 矢印キーが使えない スクロールバッファがない うーむ。矢印キーが使えないのはキーイベント周りを直せばいいとしても、スクロールバッファは難しそうな気がする。 ※追記:ソースコードも公開しました→続・

    Flexでターミナルエミュレータ & Telent - Blog by Sadayuki Furuhashi
    tsukkee
    tsukkee 2008/10/13
    すげー!
  • Railsを使わずにWebアプリを書く - Blog by Sadayuki Furuhashi

    だいぶご無沙汰になっております。生きてます。 今はWikiFormeを記法エンジンに使ったWikiのような何かを開発しています。これがなかなか難航していて、公開までにはもう少し時間がかかりそうです。(と言ってもソースコードはCodeReposにありますが) Rubyで作っているのですが、Railsベースではありません。これは勝ち組ですねー まじめなところ、Railsで作ると導入が面倒になるのでやめました。 Railsその他のWebフレームワークは非常に便利なのですが、CGIで動かすと絶望的に遅くてやってられません。生成したHTMLをオンメモリでキャッシュしても、ゼロから作ったCGIのキャッシュ無しよりも遅い。ずっと遅い。たとえキャッシュ機能を2, 3行のコードで入れられたとしても、これでは悲しい。 RailsCGIで動かすなと言うのはもっともな話で、どう見ても設計からしてCGIで動かすこ

    Railsを使わずにWebアプリを書く - Blog by Sadayuki Furuhashi
  • 古橋貞之の日記 - 開発環境としてのMac OS Xカスタマイズ

    Mac OS Xを使っていないプログラマは、時間の80%を無駄にしている、かどうかは知りませんが、堅いGUIとUNIX系のコマンドラインツールを使えるMac OS Xは、開発環境として使いやすいことは確か。 が、デフォルトのままでは、Terminal.appで日語が表示できないとか、lsやfindがGNU系じゃなくてBSD系だとか、要するにOSだってカスタマイズしてなんぼというわけであります。 というわけで、私のMac OS Xのカスタマイズをこのあたりに書いておきます。 ※2008/2/3追記: Leopard版書きました > 開発環境としてのMac OS X Leopard Terminal.app Mac OS Xにはデフォルトで「ターミナル」(/Applications/Utilities/Terminal.app)が付いてきますが、これがデフォルトではまったくイケてない。主要な

    古橋貞之の日記 - 開発環境としてのMac OS Xカスタマイズ
  • 1