web開発に関するhokousyaのブックマーク (62)

  • 高機能な JavaScript 圧縮ツール「jsjuicer」 - WebOS Goodies

    JavaScript を使った Web アプリケーションを公開する際にほぼ必須となるツールが JavaScript Obfuscator 、いわゆる JavaScript 圧縮(難読化)ツールです。とくに Ajax を活用したサイトでは JavScript ファイルも大きくなりがちなので、できるだけコンパクトにまとめてページのロード時間を短縮したいところです。そんなわけで、私も Infosketch を公開する際にいろいろ試しまして、日ご紹介する jsjuicer を使うことにしました。 この jsjuicer は Web 関連のツールでは珍しく C++ で組まれたコマンドラインプログラムとなっています。そのため使い始めは少々面倒ですが、 make などによる自動化がやりやすいというのは大きな利点です。他のツールにはない便利な機能もいくつか実装されていますので、実用的な JavaScri

    hokousya
    hokousya 2007/07/24
    シンボルの短縮やデバッグ用コードの削除機能を持つ実用的なJavaScript圧縮ツールです。
  • Ext JS で HTML 要素をアニメーションさせる - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 ほとんど気付かれていないかもしれませんが、先日トップページの最新記事を表示する部分のスクリプトを改良して、記事内容がアニメーションして出てくるようにしました。これまでの意味不明な挙動に比べれば(^^;)、いくぶん使いやすくなったかと思います。 で、このアニメーションを実装するのに Ext JS というライブラリを使ってみました。 Ext JS は多彩な機能を実装し

    hokousya
    hokousya 2007/07/10
    JavaScriptライブラリ「Ext JS」でHTML要素に基本的なアニメーションを適用する方法です。
  • Google Gears 活用法 : SQLAdmin for Google Gears で SQL に挑戦! - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 先日公開した Infosketch はお試しいただけたでしょうか。まだまだ Google Gears の機能のごく一部を使っているに過ぎませんが、 JavaScript のみで大容量の永続ストレージが利用できる点はとても興味深いと思います(あのレベルなら Flex のローカルストレージという手もありますが ^^;)。僅かながら Google Gears のノウハウ

    hokousya
    hokousya 2007/06/28
    SQLAdmin for Google Gears で手軽に SQL を試してみよう!という企画です。
  • for ループでの配列長の括り出しは JavaScript でも有効か - WebOS Goodies

    「今週の話題」でもご紹介しましたが、先週、以下の記事が話題になっていました。 ActionScript3 最適化・高速化Tips 簡易まとめ ActionScript3 で効率の良いコードを書くための Tips がまとめられていて、私も興味深く読ませていただきました。その中に for ループで配列を操作する場合には配列長をあらかじめローカル変数に代入しておくと 147% 高速化されるという項目があり、このテクニックは JavaScript でも適用すべきである、となっていました。 実は私もけっこう平気で Array.length を書いてしまうほうなので(C/C++ あがりの風上にも置けませんね ^^;)、もし事実であれば今後は注意しなくてはいけません。しかし、実際のところ ActionScript と JavaScript では実行時の仕組みがだいぶ異なるはずで、 ActionScrip

    hokousya
    hokousya 2007/06/25
    配列を走査するfor文で配列長をあらかじめローカル変数に代入しておくことの効果を測ってみました。
  • Ruby で OpenSSL の乱数生成を利用する - WebOS Goodies

    単純な乱数よりだいぶ良くなっていますが、それでも思ったよりシンプルですね。また、最後に MD5 をかけると、 ID の長さが固定されてしまう(鍵空間の広さを調整できない)という欠点もあります。短期間しか使わないセッション ID なら大丈夫でしょうが、永続的な ID としてはちょっと不安が残ります。 なにか Ruby で簡単に強固な ID を生成する方法はないかなぁ、と考えていたのですが、そういえば Ruby には OpenSSL バインドが標準で添付されていました。強力な暗号化には予測困難で偏りの少ない乱数が不可欠ですから、これは期待できますね。そんなわけで、 Ruby から OpenSSL の乱数生成器を利用する方法を調べてみましたので、日はそれをご紹介しようと思います。 調べてみたところ、 C 言語なら OpenSSL の乱数は RAND_bytes という関数で利用できるようです。

    hokousya
    hokousya 2007/03/23
    OpenSSLの乱数を使って予測しにくいIDなどを作る方法です。
  • Anti-DNS Pinning について調べてみました - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 Open Tech Press で見つけた Google Desktop の脆弱性の記事に、 Anti-DNS Pinning なる言葉を見つけました。どうやら Web ブラウザを介した攻撃方法のひとつのようなのですが、恥ずかしながらまったくの初耳でしたので、少し調べてみました。これまたメモ代わりに記事にしておきます。日語で解説があるのは以下のサイト様しか見つか

    hokousya
    hokousya 2007/03/01
    Anti-DNS Pinning という攻撃方法について調べてみました。
  • Yahoo! Pipes ちょっぴり追加情報 - WebOS Goodies

    先日公開された Yahoo! Pipes ですが、やはり便利ですね。購読しているフィードの、「ここがこうだったらな」というところを気軽に編集できるのは素晴らしいです。自分でもいくつかパイプを作ってみて、その過程で知った追加情報が 2 つほどあるので、メモ代わりに記事にしておこうと思います。大したことではありませんが、お役に立てば幸いです。 せっかく URL 入力フォームがあるので、任意のフィード URL が指定できる汎用のフィルタパイプを作ってみたんです。それが Run this pipe のページではきちんと動くんですが、なぜか RSS フィードや JSON フィードを表示させると中身が空っぽになってしまいました。いろいろとパイプを組みなおしたりしてみても修正できないので、恥を忍んでぶろーくんいんぐりっしゅでフォーラムに質問してみました(^^ゞ http://discuss.pipes.

    hokousya
    hokousya 2007/02/27
    input form のバグ、JSONP 出力の情報です。
  • UTF-8 エンコーディングの危険性の補足 - WebOS Goodies

    えー、昨日投稿した「UTF-8 エンコーディングの危険性」の記事ですが、なにを間違ったのか過去最高のアクセスを記録しています。その前の Ruby 用 JSON クラスの反響がさほどでもなく、今回も大したことないだろうと思っていたので、かなりびびってます(((゜Д゜;)))ガクガク。はてぶコメントでも多くのご指摘をいただきまして、私自身反省している点もあるので、少し補足しておこうかと思います。 昨日の記事の意図は、まず単純に不正な UTF-8 シーケンスの存在を知ってもらい、そして具体的な対策として、入力の水際で不正な UTF-8 シーケンスを潰してしまおうというものです。ここが説明の足りなかった部分ですが、入力段で HTML などのエスケープをしようということではありません。 UTF-8 の正規化は HTML などのそれと違って二重にかけても結果が変わりません。また、目的はクライアントの保

    hokousya
    hokousya 2007/02/23
    ありがとうございます。wcharサポートのない言語では文字列を数値配列として扱うことになるので、効率はむしろ落ちるように思うんです。言葉遣いは元記事でもご指摘いただきました。「正規化」が正しいでしょうか。
  • UTF-8 エンコーディングの危険性 - WebOS Goodies

    的に、まともな国際化ライブラリを使っていれば、上記のような不正な文字コードはきちんと処理してくれるはずです。実際、 Opera, Firefox, IE ともに適切にエスケープしてくれました。また、 UCS に変換した後にエスケープ処理を行うことでも対処できるかもしれません。しかし、複数のモジュールで構成されるような規模の大きいアプリケーションでは、そのすべてが適切な処理を行っていると保証するのも、なかなか難しいかと思います。ここはやはり、すべての外部入力に含まれる不正なシーケンスを、水際で正規化するという処理を徹底するのが一番かと思います。 例えば Ruby の場合、不正な UTF-8 コードを検出する最も簡単な方法は、 String#unpack を使って UCS へ変換してみることです(昨日の記事への kazutanaka さんからのはてぶコメントにて、 iconv でも同様なこ

    hokousya
    hokousya 2007/02/22
    UTF-8検証の必要性。なるほど、確かに正規化と呼ぶのが正しい気がしますね。時間を見て修正します。ありがとうございます。
  • Ruby 用 JSON パーサーを更新、 JSON への変換も追加 - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 以前公開した前バージョンにはたくさんのアドバイス、リンクなどいただきまして、ありがとうございます。少々時間が経ってしまいましたが、あれからいろいろと勉強しまして、 strscan なる便利なライブラリが Ruby の標準ライブラリに含まれていることも知りました。それらをきちんと使えばコードをだいぶシンプルにできそうだったので、思い切って書き直してみました。まだまだ

    hokousya
    hokousya 2007/02/21
    JSON生成、UTF-8検証機能、サロゲートペア対応などを追加しました。「スケーラブルWebサイト」興味深い内容なので即買いしました(笑)>kazutanakaさん
  • モジュールを繋げてマッシュアップ!「Yahoo! Pipes」の使い方 - WebOS Goodies

    米国のYahoo! が、とても興味深いサービスをリリースしました。モジュールを繋げていくだけで各種データソースをマッシュアップした RSS / JSON フィードが作成できる Yahoo! Pipes です。単純なフィードの加工だけでなく、フィードからキーワードを抽出して Yahoo! で検索したり、 Flickr から画像を取得したりなど、なかなか面白い機能が用意されています。今後モジュールが順調に追加されれば、ネット上のデータを活用する有効な手段になるでしょう。 WebOS を名に冠する当 blog としても、これは放っておくわけにいきません(笑)。 先日の記事のとおり大量のリクエストが殺到して速攻でサーバーが落ちていましたが、現在は復活して正常に動いています。そこで、日はこの Yahoo! Pipes の使い方を詳細にご紹介しようと思います。 Yahoo! Pipes は前述

    hokousya
    hokousya 2007/02/13
    遅まきながら、Yahoo! Pipesの使い方をご紹介
  • Yahoo! Pipes 開通、そしてすぐに詰まる - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 昨日、米国の Yahoo!Yahoo! Pipes という新しいサービスをリリースしました。複数のデータソースから RSS フィード形式でデータをフェッチし、それを加工するモジュールを繋いでいくことで簡単にマッシュアップが作れるというものです。 しかし、 digg に掲載されたとたんにエラーが頻発するようになり、最後にはトップページの表示すらできない状態に。

    hokousya
    hokousya 2007/02/09
    昨日公開されたYahoo! Pipesを少し使ってみましたが、速攻でサーバーが落ちたのでどうにもなりません(笑)
  • 簡単にサジェスト付き Firefox 検索プラグインを作る方法 - WebOS Goodies

    blog ではサイト内検索を行う Firefox 検索プラグインを配布しているのですが、お気付きでしょうか(^^;。 Firefox をご利用の方は、当 blog のページを開くと検索ボックスの左のアイコンがうっすらと青くなるはずです(ただでさえ目立たない上に、スキンによってはまったく変化がなかったりしますが)。この状態でアイコンをクリックすると、メニューに「"WebOS Goodies" を追加」という項目が表示されますので、それを選ぶと当 blog のサイト内検索が追加されます。 ここまでは別に普通のことですが、ここからが題です。この "WebOS Goodies" を選択して検索後を入力すると、 Firefox 2.0 の特徴である検索語のサジェスト機能がきちんと働くようになっています。ぜひ実際に追加して試してみてください。実はこのサジェスト、とても簡単に追加することができます

    hokousya
    hokousya 2007/02/07
    検索プラグインに簡単にサジェストを追加する方法。Google cseのプラグインを生成するジェネレータもあります。
  • Opera 最新ビルドの Developer Console を試す - WebOS Goodies

    インストール方法は従来の開発者向けツールと同じです。 Opera 9.0 で開発者向けツールのページを表示し、「Developer Console」のリンクを適当なツールバーにドラッグしてください。ただ、この方法だとアイコンが表示されないので、 Hideto さんが作成されたボタンを利用されるほうがお勧めです。ご好意により Tips に転載させていただきましたので、ご利用ください。便利なボタンを作成してくださった Hideto さんに感謝です。 Developer Console は現在の正式版(Opera 9.1)には実装されていませんので、最新の Weekly Build をインストールする必要があります。 OPERA DESKTOP TERM のページのタイトルの下に最新版インストーラへのリンクがありますので、そこからダウンロードしてインストールしてください。ただし、場合によっては不

    hokousya
    hokousya 2007/02/05
    最新のWeeklyBuildで追加されたDeveloperConsoleのレビューです
  • canvas : 画像の合成方法いろいろ - WebOS Goodies

    使い方がわかったところで、実際に試してみましょう。以下のサンプルでは、合成モードを変更して効果の違いを確かめられます。ついでに描画する図形(パス or ビットマップ画像)、透明度、描画色なども変更できますので、それぞれを組み合わせてどのような効果が得られるかも確認できるようにしておきました。 ※ペンギンの画像は Image * After で公開されていたものを Flickr に保存して利用しています。 ディスティネーション画像の下半分は半透明で描画しています。ただし Opera では画像に対する半透明指定は機能しません。また、透明部分が確かめやすいように背景画像を設定していますが、この背景は CSS の background-image プロパティーによるものであるため、 globalCompositeOperation の影響を受けずに描画されます。ソースは以下のようになっています(簡

    hokousya
    hokousya 2007/02/02
    canvasで使える合成モードのご紹介とデモがあります。
  • net2ftp : テキスト編集機能の日本語対応パッチ - WebOS Goodies

    さっそくパッチです。複数のファイルにわたりますので、 diff 形式で掲載させていただきます。ちょっと長いですがご了承ください。 diff -r -U 3 net2ftp_orig/modules/edit/edit.inc.php net2ftp/modules/edit/edit.inc.php --- net2ftp_orig/modules/edit/edit.inc.php 2007-01-21 19:29:16.000000000 +0900 +++ net2ftp/modules/edit/edit.inc.php 2007-01-21 19:16:46.000000000 +0900 @@ -169,6 +169,23 @@ if (isset($_POST["text_splitted"]) == true) { $text_splitted = $_POST["text

    hokousya
    hokousya 2007/01/22
    net2ftpのテキストエディタに文字コード・改行コード変換機能を追加するパッチです。
  • Google ガジェット API がアップデートされました - WebOS Goodies

    先日 MiniMessages ライブラリのご紹介が終わってやっと一息ついたかと思ったのですが、またまた API が更新されてしまいました(^^;。今回の更新も、新しいユーザー設定のデータタイプの追加、新しい機能ライブラリの追加、開発用ガジェットの追加など、盛りだくさんです。そんなわけで、日はその拡張された各種機能の概要をご紹介しようと思います。 ユーザー設定のデータタイプに list を追加 list データタイプは、文字列を保存するためのデータタイプです。例えば RSS フィードを表示するガジェットで、ユーザーが好きなだけフィードを追加できる場合に使えます。これまでも自分で設定用インターフェースを用意して文字列としてシリアライズすれば実現可能でしたが、それが単にデータタイプを "list" にするだけで済むようになりました。 _IG_Prefs クラスにも getArray, set

    hokousya
    hokousya 2007/01/19
    Google Personalized Homepage ガジェットのAPIの新機能です。
  • Google Personalized Homepage ガジェットの作り方 : MiniMessages ライブラリ - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。

    hokousya
    hokousya 2007/01/16
    Googleガジェットの上部にメッセージを表示するライブラリです。
  • Google Personalized Homepage ガジェットの作り方 : Drag ライブラリ - WebOS Goodies

    日は、引き続き Google Personalized Homepage ガジェットで使える機能別ライブラリの中から、 Drag ライブラリをご紹介します。このライブラリを使うと、ガジェット中の任意の HTML 要素をドラッグ&ドロップできるようになります。ドラッグされる要素(ソース要素)とドラッグを受け取る要素(ターゲット要素)を指定するだけでよく、他の面倒な処理はライブラリ側にお任せですので、驚くほど簡単に実装できます。ドラッグ&ドロップは直感的な UI を実現するのに非常に効果的ですので、うまく活用して使いやすいガジェットを目指したいところですね。 それでは、さっそく使い方を見ていきましょう。なお、機能別ライブラリの基事項についてはこちらの記事でご紹介しています。機能別ライブラリにはじめて触れる方は、先にご参照いただくと良いかと思います。 以下で Drag ライブラリの使い方を見

    hokousya
    hokousya 2007/01/12
    Google Personalized Homepage ガジェット内で要素をドラッグ&ドロップできます。
  • Google Personalized Homepage ガジェットの作り方 : Tabs ライブラリ - WebOS Goodies

    日は、 iGoogle ガジェットで使える機能別ライブラリの中から、 Tabs ライブラリをご紹介します。その名のとおり、ガジェット内にタブを表示して表示内容を切り替えられるようにするものです。既存のガジェットでは、 Interesting Items For You で使われていますね。前回の記事でご紹介した SetPrefs, Dynamic Height ライブラリと違い、簡単な手順で高度な GUI を実現する、わりと派手めなライブラリです。ガジェットの表示面積は限られていますから、うまく活用して多くの情報をコンパクトにまとめたいですね。 それでは、さっそく使い方を見ていきましょう。なお、機能別ライブラリの基事項については前回の記事でご紹介しています。機能別ライブラリにはじめて触れる方は、最初にそちらをご参照ください。 前回の記事でもご紹介したとおり、機能別ライブラリを利用するに

    hokousya
    hokousya 2007/01/10
    Google Personalized Homepage ガジェットにタブを表示するライブラリです