カテゴリー別アーカイブ: ツール

JavaScriptでタコメーター

ドラッグスター250の最高出力は8,000r/minで発生、最大トルクは6,000r/min、と製品仕様にあります。さて、これぐらいの回転数まで上げた時に、いったい何km/hぐらいで走っているのでしょう?

というのも、多くのアメリカンタイプのバイクがそうであるように、ドラッグスター250にもタコメーターが付いていないから、分からないのです。

もちろん、後付けはできるのでしょうけど、減速比やタイヤサイズは分かるのだから、車速から逆算してみよう、という事で、JavaScriptを使ったタコメーターを作ってみました。理論値なので正確ではないでしょうが、参考値としては使えると思います。

tachometer | バイクのエンジン回転数を計算するページ

ギア5速で100km/hまで速度を上げたら、エンジンの回転数は6,209rpmかぁ。最大トルク発生回転数を超えています。なるほど確かに、高速道路では空気抵抗に負けてしまい、がんばっても100km/hぐらいが限界に感じます。

ドラッグスター250の他に、憧れのBOLT、ヤマハの至宝VMAX、その他個人的な知り合いの車種を登録しています。

今のところ機能を実装しただけの寂し過ぎるインターフェースですが、時間を作ってビジュアルも凝ってみたいと考えています。任意の減速比や変速比、タイヤサイズを入力・記録できるようにもして、みなさまから情報をいただけたら良いな、とか。

Perl + C + JavaScriptで動作するリアルタイムWebチャット

構想数年、着手約3ヶ月、やっとベータ版が完成しました。リアルタイムWebチャットサービスの “ChatPrompt” です。

まだ一部機能(Ajaxエラー発生時の再送等)が未実装ですが、C言語での作成部分が開発環境ではテストしきれないので、実環境にアップしてしまいました。

ChatPrompt
http://www.chatprompt.com/

さくっと個別のチャットを作れて、ユーザ登録等の面倒な手続きも不要なので、ぜひ使ってみてください。
ただし、まだベータ版です。いくつか不具合も出るかもしれませんがご了承くださいね。

とても質素なWebサイトにも関わらず、これでもだいぶん時間がかかってしまいました。作業時間があまり取れなかった事もありますが、けっこうこだわってじっくり作った自己満足の固まりです。

以前、シェル風のWebインターフェース(LFshell)とCometを使った簡易なWebチャット(LFchat)を作った後に、これらをミックスしたシンプルで高速なリアルタイムチャットを作りたいなぁ、とずっと思っていました。
この度やっと実現しました、しんどかった。。

以下、その自己満足さ加減がよく分かる説明を自己満足満載にしているので、ぜひ読んでください。

Comet処理をC言語で実装&カーネルイベントの使用で効率化

リアルタイムチャットを実現するためにロングポーリングのCometを使用しています。CGIベースのレンタルサーバでこれを実現しているので、利用中のユーザ数分のプロセスがWebサーバ側で動作する事になります。共用のレンタルサーバなので使用リソースを最小限にするために、Comet処理を担当する CGIはC言語で作成しています。また、メッセージの書き込みをカーネルイベントで取得しているので、待機中の負荷も最低限に抑えています。プロセス数を抑えるために、同時セッション数が一定以上になった場合は間欠ポーリングになります。

リクエストをキュー処理してセッション数を削減

高速なインターフェースを実現するためにAjaxを使っていますが、ユーザの入力の度にAjaxリクエストを行うとサーバが混んでいる等でレスポンスが遅い場合にセッションが重複してしまいます。ChatPromptでは送受信それぞれ1セッションのみに制限するようキュー処理を行っています。1回のAjax処理中にユーザの入力が複数回あっても、それらをキューに退避して、次のAjax処理でワーカーがまとめてリクエストします。

CSSとJavaScriptの縮小化

データ転送量を削減するために、CSSとJavaScriptを縮小化しています。これらコード自体を動的に変更しているので、縮小化もオンザフライで行っています。

各種ブラウザに対応

なんと今さらInternet Explorer 6にも対応。Firefox、Safari、Chrome(あ、Opera忘れてた。。)の他、iOSのMobile Safari、Androidにも対応させています。これらスマホ系のブラウザで実装されているViewportにも対応しており、画面の拡大縮小に合わせ てコンテンツの幅を自動調整します。

新たなにPerlのWebアプリケーションフレームワークを作成

これまで数年間Waftを使ってきましたが、Waftは上位互換と拡張性を意識しすぎてコードが複雑になりOOも活かしきれていませんでした。これを機に関数ベースでWaftの便 利機能のみを切り出していくつかの新機能を追加し、Oneという小さなフレームワークモジュールを作りました。デフォルトでContent-Lengthの出力に対応していたり、CGIクエリの展開変数にtieを使ってわざわざundef確認しないでもよくなったり、けっこういい感じのモジュールなんですよ。

まだまだ書き足りない。。

LFchat – PerlとJavaScriptで動くチャットプログラム

LFchatはPerlとJavaScriptで動くチャットプログラムです。Cometを試してみたくて作った実験的なプログラムのため、低機能で実用性はありませんが、Waftのサンプルプログラムにちょうど良いので公開します。

概要

送信したメッセージが瞬時に全員の端末に表示されるチャットプログラムです。

サンプル

LFchat 0.02

ブラウザのウィンドウを複数使って、端末1台でも動作を試す事ができます。複数のウィンドウでこのサンプルを表示させて、1つのウィンドウから何かメッセージを送信してみてください。

動作環境

サーバー

PerlのCGIを実行できるウェブサーバーで動作します。Apache 2とPerl 5で動作確認しています。

クライアント

JavaScriptを使用できるブラウザで動作します。Internet Explorer 8とFirefox 3で動作確認しています。

インストール方法

ファイルをサーバーにアップするだけです。

  1. LFchatのプログラムをダウンロードしてサーバーに展開してください。
  2. ディレクトリ「LFchat-0.02」を任意の名前に変更してください。
  3. ディレクトリ「lib」と「var」に外部からアクセスできないよう制限を行ってください。(アクセス制限用の.htaccessを同梱しています。)
  4. ディレクトリ「var」にCGIの実効ユーザーが書き込めるようオーナーの変更またはパーミッションのセットを行ってください。
  5. ファイル「Changes」と「README」を削除してください。
  6. ファイル「lfchat.cgi」に実行パーミッションをセットしてください。

使用方法

ブラウザでlfchat.cgiにアクセスしてください。

ダウンロード

LFchat-0.02.tar.gz, LFchat-0.02.zip Mon Dec 7 00:42:40 2009

以下のライブラリを同梱しています。

ソース

http://www.tamashiro.org/src/LFchat-0.02/

免責

このプログラムを使用した事によるいかなる損害も作者は責任を負いません。