タグ

ブックマーク / labs.unoh.net (57)

  • ウノウラボ Unoh Labs: 簡単Ajaxライブラリ「jQuery」と便利なプラグインたち

    こんにちわ、hideです。 最近は、jQueryというJavaScriptライブラリを使ってAjax関連の処理を書くことが多いです。なんといっても軽量で高速、XPathによる要素の指定がとても便利です。今回は、その便利なjQueryをもっと便利にするプラグインをいくつか紹介します。 ThickBox LightBoxのようなもので、画像の他にHTMLの表示も可能です。難点は、$()を使って書かれているので、他のライブラリと混ぜて使えないこと。僕はソース内の$()をすべてjQuery()に書き換えて使っています。 JSON for jQuery AjaxでJSONを取得して、処理できるようにするプラグイン。これは必須とも言っていいと思います。CallBack関数を指定してのJSONPも簡単。 BlockUI Plugin 画面の一部や全体を半透明のレイヤーで覆って操作できなくするものです

  • ウノウラボ Unoh Labs: Dojo 0.4の新機能を使っていろいろ遊んでみました

    こんにちは。できないのではなく「つくらない派」のhideです。 以前、「Dojoで簡単にクロスドメインAjaxを実現」というエントリを書きましたが、その後、新機能が追加されたDojo 0.4がリリースされました。0.4になって、JSONPを簡単に扱う方法は、dojo.io.bind() を dojo.io.ScriptSrcTransport.bind() を使うように変更しないと動作しなくなったので注意してください。 追加された機能は次の通りです。 ・グラフ描画機能の追加 ・各種ウィジェットの追加 ・SVG/VMLのベクター描画ライブラリ(GFX)の追加 ・FireBugと連携したデバック機能の改善 ・名前空間のサポート ・i18nサポート そして、Dojo 0.4を使っていろいろ遊んでみたサンプルがこれです。HTMLJavaScriptのコードを書いただけで、サーバサイドの

  • ウノウラボ Unoh Labs: JavaScriptのバグを退治する3つの手法

    こんにちは、さかとくです。今日は、世界中のプログラマーを悩ませているバグを退治する方法について考えてみたいと思います。今回は、特に、JavaScriptのバグを退治する方法にスポットを当ててみたいと思います。 そもそも、バグ(Bug)とは、正しくプログラムが動かない状態、不具合のある状態です。 書き間違いや、なんらかの勘違いが原因であることが多いです。簡単なつづりミスならば、構文エラー(Syntax Error)によって、すぐに間違いが見つかります。しかし、簡単にバグの原因が特定できないことも多くあります。そんなときはどうしたら良いでしょうか? 以下の3点から考えてみます。 ・具体的なデバッグ方法 ・バグを予防する ・精神論 具体的なデバッグの方法 どんな天才的なプログラマーでも、間違いの1つや2つは犯してしまうものです。一度もバグに遭遇せずプログラムを完成させることはできません。「

  • ウノウラボ Unoh Labs: ループ内の無名関数

    スーパーなエンジニアの近くに座っているMODです。 こないだJavascriptを書いててハマったネタをひとつ。 for文等繰り返し文の中で無名関数を定義するとき、定義内でインデックスの変数の値を用いることができないらしいです。 例えばこんなコード <input type='button' id='wan1' value='わん'> <input type='button' id='wan2' value='わんわん'> <script type="text/javascript"> for (i=1; i<=2; i++) { elem = document.getElementById('wan'+i); elem.attachEvent('onclick', function(){alert('いぬ No.'+i);}); } </script> ※このコードはI

  • ウノウラボ Unoh Labs: 配列要素の存在チェック

    こんにちは。今月入社したyamaokaです。よろしくお願いいたします。 さて、PHPで配列要素の存在チェックを行う場合、どうされていますか? 2通りの書き方があると思いますが、実は動作が異なる場合があるのです。 if (isset($array['foo'])) { // (1) // 存在する } if (array_key_exists('foo', $array)) { // (2) // 存在する } (1)の場合、要素の値がnullだと存在しないものとして扱われてしまいます。(2)では、該当するキーが存在しさえすれば存在するものとして扱われます。 配列の要素がnullになる可能性がある場合、array_key_exists関数を用いてチェックを行う必要があります。isset関数が使用できるのは、要素の値がnullにならないとわかっている場合だけです。 実行速度はどうでしょうか。P

  • ウノウラボ Unoh Labs: 配列操作でE_NOTICE対策を簡単に行う方法

    ってことで前フリとは関係ないのですが,今回はjokagiが以前常用していた関数を紹介します. 配列の要素を扱うときどうしていますか? フォームを受け取るときによくあるパターンに下記のようなコードがあります. if ($_GET['id'] && $_GET['passwd']) { login($_GET['id'], $_GET['passwd']); } else { error_function(); }

  • ウノウラボ Unoh Labs: 配列の要素を区切るカンマ、最後の要素の後に置いたら?

    こんばんは、ケンジです。 PHPで、配列に値を代入するとき $hoge = array( 0=>'a', 1=>'b', 2=>'c' ); というような書き方をしますよね。 このとき、4つ目の要素を加えるときに、最後の要素代入の行をそのままコピーして $hoge = array( 0=>'a', 1=>'b', 2=>'c' 3=>'d' ); こんな事になっちゃうこと、ありますよね。3つ目の要素と4つ目の要素の間のカンマを忘れてた!という事はよくあります(ありませんか?) そこでオススメなのが次の書き方。 $hoge = array( 0=>'a', 1=>'b', 2=>'c', ); 最後の要素の後にもカンマを入れるんです。実は、これでも動くんですよ。なので、はなから最後の要素の後にもカンマをつけてしまえば、忘れてた!となりません。よく忘れ

  • ウノウラボ Unoh Labs: 沢山の引数が必要な関数では配列で渡す

    こんばんは、ケンジです。 ウノウでは週1回開発者の勉強会を行っています。先日の回、コードレビューで自分のコードを他の開発者に見てもらいました。コードを書く際のお作法のようなことなど、色々と改善できる部分を教えてもらいました。その中のひとつをご紹介します。 例えば様々な条件から人物を検索して、その結果を返すような関数が欲しいとき function getPerson($name, $age, $sex, $hobby, $birth_y, $birth_m, $birth_d) { ... return $people; } こんな風にやたらと引数が増えたりするかもしれません。いろいろな条件で抽出できるようにして、汎用的に使いたいからです。けれど、これではどんな引数がどんな順番で書かれているかをわざわざ覚える必要があります。それに、男性を取り出したいとき、getPeople(,,

  • ウノウラボ Unoh Labs: 日本語とPHP

    yamaokaです。 PHPで日語を扱う場合、mbstringモジュールを利用する場合が多いと思います。 日語に特有の機能(カタカナの全角/半角変換など)も備わっていて、とても便利です。 しかし、日以外ではmbstringモジュールはあまり利用されていないようです。 代わりに利用されているのがiconvモジュールで、 最近話題のフレームワーク、symfonyでも 国際化の機能を実現するために内部で利用されています。 iconvモジュールはPHP 5でPHP体に組み込まれました。 別途用意して組み込む必要があるmbstringモジュールと違って、最初から使用できるので便利ですね。 PHPのマニュアルのiconv関数のページを見ると、 いくつかの関数が定義されているのがわかります。 それぞれ、mbstring関数との 対応表を作ってみました。 iconv関数mbstring関数

  • ウノウラボ Unoh Labs: PHP最適化tipsまとめサイト

    こんにちは。親知らずを抜いて離乳三昧のyukiです。GWの暴飲暴から脱し、ダイエットするには好都合ですね。すいません。負け惜しみです。 さて、今回は「PHPのちょっとしたコツ」の続きネタで、PHP最適化Tipsまとめサイトの紹介です。 これらは既に有名なサイトで紹介されていたり、常識の範囲かもしれませんが、ひとつでも有用に感じていただければ幸いです。 そして英語が極端に苦手なため、意訳突っ込み等あれば宜しくお願い致します。 PHPの最適化 12 PHP Optimization tips (元ネタはこちらでしょうか? http://www.ilia.ws/files/zend_performance.pdf) staticが使えるなら、staticを使う。速度は4倍になる。 __get, __set, __autoload は避ける。 require_once() はコストがかか

  • ウノウラボ Unoh Labs: PHPの画像処理の紹介と簡単な比較

    Keita です。 僕は、フォト蔵チームではないので、フォト蔵の画像処理については見ていませんが、個人的に画像処理に興味があるためPHPにおいての画像処理を簡単に調べたことがあります。 その時の結果をお話させていただきたいとおもいます。 この他に、もし、こういう選択肢があるよというのがあれば、教えていただけると大変うれしいです。 主要なライブラリの一覧 GDで処理 LibGDを操作するPHP標準のライブラリです。 ほぼ、レンタルサーバなどで利用できる反面、対応形式が、JPEG,GIF,PNG,WBMP,GD{,2}にしか対応していないなどのいくつか機能的に制限があります。 (WBMPは、Wireless Bitmapという、WindowsBitmapとは別の形式です) imagick ImageMagick/GraphicsMagickという画像編集ソフトのPECLの拡張で

  • ウノウラボ Unoh Labs: PHPのちょっとしたコツ

    Keitaです。 個人的には、Pythonの思想を取り入れた JavaScript 1.7 がとても気になっているのですが、それは明日の Keita(個々一番さん)が説明してくれると思うので楽しみに待つことにしましょう☆ ウノウの社員は、スルー力も必要なようです。 さて、そんな世迷言はみなかったことにして、PHPの話題です。 PHPいいよ、PHP素敵だよ。 さて、今回は日ごろ気をつけているPHPのコーディングのコツをTIPS形式で書いていこうと思います。 しかし、はるか過去にいろいろな所で情報収集したので情報の出典を忘れてしまいました。 わかる限りはURLを記載していきますが、記載されてない所があったらすいません&コメントで補足いただけると助かります。 1. array_pushは遅い いくつかのBlogで語られてることですが、array_pushは、次のような書き方のほうが早いそう

  • ウノウラボ Unoh Labs: PHPで可変個の参照渡し

    こんにちは,ttsuruoka です. PHP では func_get_args() を使って可変個引数の関数を作ることができます. function execute() { $args = func_get_args() .... } execute($foo); execute($foo, $bar); しかしこれには問題があって,参照渡しができません. function execute() { $args = func_get_args(); $args[0] = 20; } $foo = 10; execute(&$foo); echo $foo; // 10 func_get_args() が機能しないので, 可変個引数で参照渡しをすることはあきらめて, array を使って実装します. function execute($a) { // foreach 文では参照が渡せない

  • ウノウラボ Unoh Labs: PHPでパスワード文字列を生成

    こんにちは,ttsuruoka です. 会員制のサイトなどを作るとき, ユーザー登録時に仮のパスワードを発行したいときがあります. そういうときに便利なのが PEAR::Text_Password です. こんな感じで使えます: $passwd = Text_Password::create(); echo $passwd; // 出力 : // praimifrou デフォルトでは覚えやすい(発音可能な)10 文字のパスワードを生成しますが, 以下のようにすると複雑なパスワードも生成できます: $passwd = Text_Password::create(16, 'unpronounceable'); echo $passwd; // 出力(16文字の発音不可能なパスワード): // mArR99H3ZN#JsuK%

  • ウノウラボ Unoh Labs: PHPでのswitch文のトリッキーな使い方

    こんにちは、ケンジです。 先日の勉強会で初めて知った、switch文のトリッキーな使い方をご紹介します。 if ($a || $b || $c || $d || $e .....) { echo "どれかはtrue\n"; } if文の中の条件がこんな感じでだらだら続くとき。 こんな風に書けます。 switch (true) { case $a: case $b: case $c: case $d: case $e: echo "どれかは true\n"; } 条件式が複雑に色々と横に並ぶよりも、このように縦に並ぶと読みやすくなりますね。

  • ウノウラボ Unoh Labs: isset()って

    こんにちは,ttsuruoka です. (PHP の) isset() って引数を複数取れるんですね.最近知りました. if (isset($a, $b, $c)) // if (isset($a) && isset($b) && isset($c)) と同じ 他の is 系や empty() は複数取れないようです. なんで isset() だけ複数取れるようになっているんですかねぇ. あと,is_string() とか is_int() ってアンダーバーで区切られているのに, なぜか isset() は is_set() ではないんですよね.

  • ウノウラボ Unoh Labs: 0 == 'hoge' は true

    こんにちは,ttsuruoka です. 結構有名な話なのですが,知らない人が居たのでここで紹介しておきます. PHP で文字列を比較するときに, if ($s == 'mypassword') のように == 演算子を使うと, とても簡単に文字列の比較ができて便利なのですが, $s が整数の 0(あるいは浮動小数点数の 0.0 など)のときに真(true)になってしまいます. これは,数値と文字列の比較が行われたときに 文字列('mypassword')が自動的に数値に型変換されて, 0 として扱われるためです. また,どんな文字列でも数値に型変換されると 0 になるか, というとそうではなくて,例えば, if ($s == '100yen') は $s が '100yen' あるいは 100 のときに真になります. これは $s が 0 でも真になりません. あと,上の

  • ウノウラボ Unoh Labs: Web Application Testing cheatsheet

    こんにちは! やまもと@テスト番長です。 先日マサトさんに教えてもらったのですが、 こんなウェブアプリケーション用のチェックシートがあるそうです。 SECGURU: Web Application Testing cheatsheet なかなか面白いので、軽く日語にしてみました。(Special thanks to: ジュンヤさん) ※間違ってたらごめんなさい。  1. アプリケーション名とバージョン 2. コンポーネント名 3. 通信プロトコル SSLならばバージョンと暗号方式 4. パラメーターのチェックリスト URLリクエスト URLエンコーディング クエリストリング ヘッダー クッキー フォーム フォーム(Hidden) クライアントサイドのヴァリデーションチェック 使用していない余計なパラメータの存在 文字列長の最大/最小値 連結したコマンド(Concatenate

  • ウノウラボ Unoh Labs: php で 簡単にデバッグする方法

    尾藤正人です。 Ruby で debug する7つの方法 Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 ということなので、僕が PHP でやってること書いてみたいと思います。 preprint_r() print_r() とか var_dump() だと HTML の中に出してブラウザで見るときにすごく見にくくなります。 そこで preprint_r() という関数を定義して、<pre></pre> で囲んで見やすいように出力しています。 function preprint_r(&$var, $title = '') { echo _preprint_r($var, $title); } function &_preprint_r(&$var, $title = '') { if

  • ウノウラボ Unoh Labs: PHPによるテキストファイルへのロギング

    yamaokaです。 PHPでwebアプリケーションを作成するとき、 皆さんはロギング(ログの出力)をどうされているでしょうか。 今回は、テキストファイルへロギングする方法をいくつか紹介したいと思います。 error_log関数 syslog関数 PEAR::Log log4php Zend_Log error_log関数 PHPでは、標準の関数として error_log関数が用意されています。 使い方はとてもシンプルです。2番目の引数に「3」を指定することで、 テキストファイルにログを出力することができます。 error_log('message', 3, '/var/tmp/app.log'); syslog関数 また、syslog関数も 標準で用意されている関数です。syslog経由でテキストファイルにログを出力することができます。Windowsの場合は、イベントログでエミュレートさ