タグ

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

  • ウノウラボ Unoh Labs: OAuth プロトコルを知る

    こんにちは、naoya です。 昨日の社内勉強会で、OAuth について行いましたので、そのときの資料を公開します。 OAuth プロトコルの解説のあとに、Twitter の OAuth 経由でステータスを更新するクライアントを作ってみたので、そのソースコードをおいておきます。サンプルでは、現在時刻をステータスとして更新しています。ダウンロードは、こちらからどうぞ。ちなみに、OAuth の仕様書では、Authorization ヘッダに埋め込む方法が書いてありますが、Twitter では対応していませんでした。実際に動作を見てみたい人は、サンプルコードを設置してみてください。 サンプルコードに含まれているファイルは、次の通りです。 oauth_twitter.php: まずこのファイルを開きます、Request Token リンクをクリックすると認証トークンを取得開始します oauth_t

  • ウノウラボ Unoh Labs: RDBで階層構造を扱うには?

    yukiです。ダイエットを始めて3kg減ったと思ったら、風邪を引いて見事に1kg増量。 運動しないと駄目ですね。あと残り20kg、道のりは遠いです。 さて今回は、「RDBで階層構造を扱うには?」です。 あるサイトを構築中に階層構造をもったカテゴリ構造にすることになり、どのようにDBで扱うか悩みました。 DBMySQLを採用していたので、この時点でぱっと頭に浮かんだ選択肢は以下のようなものでした。 XML-DBを利用する 親カテゴリレコードのプライマリIDを子カテゴリレコードに持たせる 親を含めた『絶対パス』を名称として扱い、取り出した後にパース ファイルシステムに同様のディレクトリ構造を作り、毎回パースする (1)のXMLDBはオープンソースのeXistやXindice、Yggdrasillなど様々な選択肢がありましたが、カテゴリのみの利用な割にメンテナンスコストが高すぎるので見送りま

    FTTH
    FTTH 2009/06/24
    更新よくわかんない。「徐倫の娘」は追加できるけど徐倫と承太郎の右id被んね? ……と思ったが小数で代入してトリガでID振りなおせば良いのか。
  • ウノウラボ Unoh Labs: シェルの仕組み(前編)

    尾藤正人(a.k.a BTO)です 社内勉強会でシェルの仕組みというのをやってみましたので、資料を公開します。 シェルはUNIXを使う上で、必ず使用される非常に身近なツールです。 毎日使用しているツールにも関わらず、具体的にどのような動作をしているのか知らない方も多いのではないのでしょうか。 シェルの使い方に関する情報はたくさんありますが、シェルの実装についての情報はほとんどないなと思ってシェルを題材に取り上げました。 シェルにはUNIXプログラミングのエッセンスがぎっしりつまっています。 シェルの内部の仕組みが分かるようになると、UNIXプログラミングが分かるようになると言っても過言ではないのかもしれません。 シェルの仕組み(前編) - Upload a Document to Scribd 社内勉強会中にustreamで動画を流していたのですが、動画を保存するのを忘れてしまいました。

    FTTH
    FTTH 2008/10/23
    シェルよく知らないんだよな。
  • ウノウラボ Unoh Labs: シェル(bash)スクリプトを書くときのTips

    尾藤正人(a.k.a BTO)です UNIXを使う時にはシェルスクリプトをよく使います。 ちょっとしたコマンドを実行するには、シェルスクリプトは非常に便利です。 今回はシェルスクリプトを書くときに覚えておいた方が便利なTipsを紹介します。 非互換性 ここで紹介するものは基的にbashで動作するものになります。 伝統的なBourne Shellでは動作しないことが多くあると思います。 しかしながら最近はbashがメインで使われることが多いので、"だいだいの環境で動くからおk"ぐらいのノリで使ってもらえればと思います。 $(...) コマンドを"$(", ")"で囲むと実行結果をコマンドラインに代入してくれます。 一見これは"`"(バッククオート)と同じに見えますが、"$()"にはネストができるという利点があります。 例えばシェルスクリプト自身の絶対パスを取得するのは次のようにで

  • ウノウラボ Unoh Labs: MySQL オペミスでデータが破損してしまった場合の復旧方法

    こんにちは satoです。 オペミスで update に where句を付け忘れたり、プログラムのバグでデータが破損してしまったりした場合でも、バイナリログには更新SQLがすべて書き込まれるので、バックアップデータからオペミスが起こるまでの全てのSQLを流し込めれば、元の状態に戻すことは可能です。 •バイナリログを取っている •オンラインバックアップをとっている(mysqldumpMySQLを止めた状態でのcpによるバックアップとバイナリログ) •バックアップ時点でのバイナリログの書き込み位置を保存している 以上のような状態でデータが壊れた時の復旧手順をまとめてみました。シナリオとして •ある1カラム email をupdateしようとしたら、間違ってwhere 句を付け忘れ 全レコードをupdateしてしまった •気がついたのが半日後 というオペミスが発生したとします 1) データベー

    FTTH
    FTTH 2007/08/22
    オペミスした奴を銃殺し、保険金で損失を補填する。 / 復旧はしてないw
  • ウノウラボ Unoh Labs: PHP標準の機能(だけ)でウェブサイトのサムネイルを作る

    ではまず試しにInternet Explorerのウィンドウをキャプチャーして、そのサムネイル(ここでは160×120ピクセル)を表示してみましょう。PHPからIEを操作するにはCOMを使用します。 <?php $url = 'お好みのURLをどーぞ'; if (!extension_loaded('gd')) { exit('GD library is not loaded.'); } elseif (!function_exists('imagegrabwindow')) { exit('Function imageGrabWindow is not exist.'); } try { $ie = new COM('InternetExplorer.Application'); $handle = $ie->HWND; $ie->Width = 800; $ie->Height = 6

    FTTH
    FTTH 2007/07/25
    そもそもwindows版のPHPを使っている時点でスキモノ度が激高な罠。
  • ウノウラボ Unoh Labs: PHPで不要とされた機能についての考察

    Keitaです。 Hideさんが、ぼくをキャバクラに連れて行ってくれません。 さて、PHPの次期バージョンPHP6では、いくつか廃止されるPHPの機能があります。 UnicodeサポートがはいるPHP6を使うかどうかともかく、その機能のいくつかをみて、あーそうするとPHP4とか5でつかうのもアレなんじゃない?っていうのが今回の目的です。 ずいぶん前から言われてることなので、(リンク先の記事も2005年だし)知ってる人はしってると思いますがとりあえず。 magic_* 系統の廃止 一番わかりやすいところでいうと、「magic_quotes_gpc」が設定でOnの場合には、外部から送られてくるGET, POST, COOKLEの値に対して「'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULLに、エスケープ文字列「'」を追加します。 一見セキュリティ上好ましい設定に

    FTTH
    FTTH 2007/02/23
    ここに書くのも失礼かと思うが心底どうでもいい。
  • ウノウラボ Unoh Labs: WEBサービス運用における監視体制

    こんにちは satoです WEBサービスは作るよりも運用の方がコストがかかるとも言われています。 運用を極力自動化して、コストを減らしたいものです。 ここではウノウで使っているツール類を紹介したいと思います。 1) 疎通、生存監視 webの生存監視などは nagiosを使って監視しています。 nagiosには - いつ(土日を除く、10時~22時までの間で など) - どのタイミングで(N回連続で ,復旧したら など) - 何が起こったった時に(疎通が取れない など) - どうするか(メールで通知する) などを細かく設定できる監視ツールです。 ウノウでは MySQL、memcached、HTTP、ping、DNS、SMTPなどの監視をnagiosで行っています。 2) システムやアプリケーションLOG ログの監視には swatch を使用しています swatchの機能には -

  • ウノウラボ Unoh Labs: 無料でここまでできる!OS毎のセキュリティ対策まとめ

    こんにちは sato です。 個人情報が流出する事件が多発していまが、みなさんはどうしていますか? 今回は僕が家で使用しているツールについて紹介したいと思います。 ウィルス対策 AVG Anti-Virusの Freeを使っています。これでウィルスサーチや メールの添付ファイルチェックなど、大抵のことはやってくれます。 使用しはじめて、半年以上経ちますがまだウィルスに感染したことはありません。 Windows,Linuxは http://free.grisoft.com/doc/avg-anti-virus-free/lng/us/tpl/v5よりDLすることができます。 以下のサイトに使用方法が詳しく書いてあるので、参照させていただきました。 http://eazyfox.homelinux.org/SecuTool/AVG7/AVG701.html Mac用には clamxa

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

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

    FTTH
    FTTH 2006/10/27
    TIPSはさておき、「ウノウの中の人がphpのtipsを語ったエントリでまさにそのTIPSに誤りがあった」というのは覚えておいて良いやも知れぬ。
  • ウノウラボ 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: インデントをなるべく浅くするテクニック

    こんにちは satoです。 インデントが浅いと、コードが見やすいです。 インデントが浅くなりそうなテクニックを紹介します。 時と場合にもよりますし、賛否両論もあると思いますが、寛大な目でみてやってください。 1)処理の判定は正常じゃない場合を書く //before $data = getdata(); if ($data) { なんか複雑な処理; } else { return false; } //after $data = getdata(); if (!$data) { return false; } なんか複雑な処理; 2) array か どうかを判断する場合は array にして処理をする //before if (is_array($args)) { foreach() ... } else { .... } //after if (!is_array($args)) {

    FTTH
    FTTH 2006/08/18
    本末転倒という噂もあるが、「片っ端からモジュールに切り出す」ってのも有効[なこともある]
  • ウノウラボ Unoh Labs: PHPで書かれたwebサービスを高速化する

    尾藤正人です。 アクセス数の多いコンシューマ向けの web サービスは、処理速度がかなり重要になってきます。 応答速度が遅いと使用しているユーザにとってストレスになりますし、 処理に時間がかかればサーバに対する負荷も高くなります(厳密に言うと違う)。 そこでウノウではいろいろな工夫をして処理速度の高速化を行っています。 一口に高速化といってもいろいろな要素がありますが、大きく分けて3つの段階があります。 ・ハードウェアによる高速化 ・ソフトウェアによる高速化 ・プログラムの工夫による高速化 しかし、これら3つは独立ではなく、互いに影響しあっているので完全に分けて考えることはできません。 それぞれがどのような部分に影響を与えているのか、ちゃんと理解してチューニングすることが大事です。 ただし、高速化するときに忘れていけないのが、高可用性です。 いくら高速に動作しても安定して動作し

    FTTH
    FTTH 2006/07/15
    実は大したこと書いてない。
  • 1