タグ

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

  • ウノウラボ Unoh Labs: MySQL5からのインデックス結合で1テーブル複数インデックスを使う

    komagataです。 Webアプリケーションのパフォーマンスの大半はデータベース、特にインデックスの使われ方にかかっている気がします。 仕事でもMySQLをよく使いますが、MySQLでは1テーブルに付き1インデックスしか使われません。PostgreSQLなどと比べてそのことが気になってMySQLでのパフォーマンスチューニングに全く自信が持てませんでした。 オライリーの実践ハイパフォーマンスMySQLには下記のように書かれています。 実際、UNIONを除き、MySQLでは、1つのクエリを実行するとき、1つのテーブルに付き1つのインデックスしか使用できない。この事実は、繰り返し述べるに値するほど重要である。「MySQLでは、1つのクエリを実行するとき、1つのテーブルにつき1つのインデックスしか使用できないのである。」 また、その制約を考えたクエリの書き方として下記の様に書いてあります。 my

  • ウノウラボ Unoh Labs: mod_proxy_balancer 小技集

    こんにちは sato です。 ベンチャーでは高価なハードウェアバランサなどを購入することはできないですが、 apache2.2 から mod_proxy_balancerという apacheモジュールの ソフトウェアバランサが 追加されたので、フォト蔵でも使用しています。  今のところ proxy サーバがボトルネックになることはないです。 想定構成は以下とし、apacheは 2.x を使用しました。 proxy1 +------web1 +------web2 ... +------webN ・基設定 httpd.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so ProxyPass / ba

  • ウノウラボ Unoh Labs: 今からはじめるCassandra入門

    こんにちわ、7月に入社したばかりの@emorinsです。 題名の通りですが分散データベース『Apache Cassandra』を紹介したいと思います。 少し前はHadoop(とHBase)と比較されることの多かったCassandraですが、最近はHadoopの人気に押されつつあるようにも感じます。 しかし、CassandraとHadoopは特徴が異なり、よく言われるのがCassandraはリアルタイム処理に向き、一貫性のかわりに可用性を重視し、またHadoopとは違って単一障害点もありません。 今日はそんなHadoopとは違った魅力のある分散データベース『Apache Cassandra』をはじめてみましょう。 目次 Cassandraとは アーキテクチャ Cassandraの特徴 コンシステンシレベル データモデル MemtableとSSTable セットアップ storage-conf

  • ウノウラボ Unoh Labs: Macでのスクリーンショットの撮り方まとめ

    yamaokaです。 MacMac OS X)でスクリーンショットを撮る方法についてまとめてみます。いつも忘れてしまうので個人的な備忘録だったりしますが、同じことで悩んでしまう方にとって少しでも参考になれば幸いです。 「Command + Shift + 3」を押下 単純に画面全体のキャプチャ画像が必要な場合に使います。ショートカットキーを押した瞬間、デスクトップに画面全体のキャプチャ画像が保存されます(PNG形式)。 「Command + Shift + 4」を押下 マウスカーソルが十字(ヘアライン)に変わり、画面上の範囲を選択できるようになります。ドラッグして範囲選択した上でマウスのボタンを離すと、選択範囲のキャプチャ画像がデスクトップに保存されます(PNG形式)。 「Command + Shift + 4」を押下、さらに「Space」を押下 マウスカーソルがカメラの形に変わり、その

  • ウノウラボ Unoh Labs: 国産MySQLストレージエンジン「Spider」の作者、斯波健徳氏に聞く

    こんにちは。中村です。 MySQLにはMyISAM、InnoDBCSVなどのいくつかストレージエンジンがありますが、皆さんはSpiderというストレージエンジンを聞いたことはありますでしょうか。Spider Storage Engineは斯波健徳さんにより作成されたDatabase Shardingを可能にするストレージエンジンでMySQL 5.1で利用可能です。 先日、某集まりで斯波さんとお会いしたときにSpiderを作っているということを教えてもらったので、早速詳しい内容を教えてもらうことにしました。 ※Spiderについての説明資料はMySQLカンファレンス 2009にて斯波さんが発表されたときのスライドがあります。スライドの直リンク(zip) Spider Storage Engine について posted by (C)フォト蔵 Spider Storage Engineとは?

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

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

  • ウノウラボ Unoh Labs: デフォルト派のためのWindowsデフォルトテクニック

    先週ウノウに入社しましたkomagataです。 入社したてなのでPCのセットアップなどをやっていました。便利なフリーソフトでも紹介できればよいのですが、僕はWindowsには「なるべく余計なソフトを入れずに済ませたい」というデフォルト派なのでデフォルトでWindowsを便利に使うためのTipsを少し紹介できればと思います。 Windowsキーを積極的に使う 軟弱なキーと思われがちなWindowsキーですがWindowsをデフォルトで使うには欠かせません。ショートカットキーを表記する場合はEmacs等のC-sのようにWindowsキー+eはW-eと表記します。(当か?) W-e --- エクスプローラ起動 W-d --- デスクトップの表示/非表示 W-w --- ウインドウを閉じる(=M-F4) W-l --- コンピュータのロック W-m --- 開いている全てのウインドウを最小化 W

  • ウノウラボ Unoh Labs: JavaScript でクリップボードを扱う方法 (Flash10対応版)

    酒徳(クジラ飛行机)です。以前、ラボブログにJavaScriptでクリップボードを使う(IE/Firefox) という記事を書きました。これは、Flash Player の機能を利用して、JavaScript でクリップボードを操作するというものでした。 ところが、Flash Player 10 になって、セキュリティ制約が強化されたため、この方法でテキストをコピーすることができなくなってしまいました。そこで、このセキュリティ制約を回避してクリップボードを扱う方法と、簡単に「コピー」ができるライブラリを公開します。 まず、Flash Player 10 のセキュリティ制約について紹介します。具体的に言うと、クリップボードにテキストをコピーするメソッド「System.setClipboard()」の使用が制限されるようになってしまいました。以前はこのメソッドを任意のタイミングで呼び出すことが

  • ウノウラボ Unoh Labs: JavaScriptでクリップボードを使う(IE/Firefox)

    こんにちは、さかとくです。師走で忙しいですね。今回は、JavaScriptでクリップボードを使うプログラムを作ってみます。IEとFirefoxで動く簡単なライブラリを作ってみましたので、参考にしてください。 IEだけで動かすのは、簡単なのですが、FireFoxではクリップボードを操作する方法がありません。そこで、FireFoxでも使えるようにFlashを使って工夫してみます。 まず、参考までにIEでクリップボードを扱うJavaScriptを見てみましょう。IEなら以下のように一行書くだけです。

  • ウノウラボ Unoh Labs: ブログパーツ貼り付けタグのまとめ+Googleガジェット@はてな

    ごらんの通りこれらのタグは、一部例外を除き少なくとも上表にあるブログサービスでは、すべてOKかすべてNGかのどちらかで、つまりこれらのひとつがNGなら他のタグもNGであるようなので、どのタグを選択するか、ブログサービス側の制限を考慮して悩む必要はないようです。 そうするとFlashオブジェクトの表示は、「Internet ExplorerでのActiveXコントロールのアクティブ化問題」を考慮するなら、OBJECTタグを直接記述するのは避けて、JavaScriptで行ったほうがよいのかなと。 全般的な留意点 貼り付けコードはブログの投稿設定などに影響されないように配慮しておく必要があります。特に、サイドバーだけではなく記事文中にも貼り付けられることを想定している場合は、以下の設定は、殆どのブログサービスで記事文の投稿についてはデフォルトでONの筈なので、こうした設定に影響を受けないもの

  • ウノウラボ Unoh Labs: ベンチャー流サーバ構築のススメ(ハードウェア編)

    尾藤正人です。 ウノウでは最近新オフィスに引越ししたのですが、新オフィスにサーバルームを設置してフォト蔵のサーバをホスティング業者から自社サーバに移行しました。 自社サーバに移行のは下記のような理由からです。 フォト蔵のようなストレージ系のサービスの場合、十分な帯域を確保する必要があるが、広帯域を確保するにはコストがかかる フォト蔵のようなストレージ系サービスの場合、大容量のHDDが必要になるが、大容量のHDDを搭載したマシンはハイエンドマシンになり、増設コストがかかる マシンの増設に時間がかかりフレキシブルに対応できない というわけで自社サーバに移行したわけですが、自社サーバに移行するにあたって様々なノウハウがたまってきました。 サーバ構築にはいろいろトピックスがありますが、今回はハードウェア的な部分について書きたいと思います。 ・マシンは全て同じ構成にする 数多くのサーバを運用するに

  • ウノウラボ 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: ウェブ開発の共同作業でパーミッションを有効活用する

    前回カメラをなくした!!とかいってたら見つかってホッとしているjokagiです. 前回のエントリの書き上げはかなりサボってしまったので,その影響で今回はすぐに順番が回ってきてしまいました. 今回も負けずにロングエントリで行きます!! このエントリの目的 複数人でウェブコンテンツを作成運用管理する場合,特に番サーバーのファイルのパーミッションで悩んでいる人をよく見かけます. あまりパーミッションを積極的に有効活用できない人は挙句に誰でも読み書きできる(いわゆる0666や0777)ザルにすることが多いでしょう. いや待ってください. もうちょっと丁寧に設定してみませんか? というお話です. 必須環境 少なくとも初期作業においてはroot権限が必要になります. また,ある程度最低限のコマンドやその実行結果についての知識,あるいは調べる能力が必要になるかもしれません. UNIXの一般的なファイル

  • ウノウラボ Unoh Labs: gdbの使い方

    今年の2月にマカーになったbokkoです。どうも僕の使っているフォントがほかの人には見づらいらしく、「そのフォントはねぇよw」と言われたり、外付けのキーボードを使っているせいか、「MacBookの意味なし!」と社内で言われてたりしています。 今日はgdbのお話です。gdbは非常に広く使われているデバッガで、特にC、C++のプログラムをデバッグするのによく使われています。 デバッガの使い方 プログラムをデバッグする際、例えば以下の方法が挙げられます。 1. ソースコードを読む 2. ソースコードに出力関数を仕込む(例えばprintf) 3. ソースコードを書き換えて実行してみる これで十分な場合もありますが、そうでない場合もあります。これらの方法ではプログラムを実行している最中にこちらからソースコードレベルでのアクションを起こすことが難しいので、例えば、プログラムをある時点で止めて変数の

  • ウノウラボ Unoh Labs: Flickr2PhotoZouを公開します

    こんにちわ、hideです。 先日のエントリにある通り、2泊3日で開発合宿に行ってきました。僕は「1日1サービス」を目標に掲げて合宿に望んだのですが、なんと風邪でダウンしてしまい真ん中の日は丸々寝てました。 そんな状況ではあったのですが、Flickr2PhotoZouというFlickrの写真をフォト蔵にインポートするツールを作りました。もともとFlickrの無料アカウントが200枚制限に達してしまったため、その写真を移行したくて自分用に作ったものなのですが、せっかくなので公開します。 http://flk2pz.demos.unoh.net/ 【使い方】 フォト蔵にログインするためのメールアドレスとパスワードを入力してください。 Flickrにログインしていない場合は、ログイン画面が表示されるのでFlickrにログインしてください。 Flickr2PhotoZouへアクセスを許可するため

  • ウノウラボ Unoh Labs: プロセスの監視を行う デーモン monit

    こんにちは satoです。 monitは プロセスの監視を行うデーモンです。 条件とそれに伴うアクションを指定することができます。 条件とは例えば以下のようなものがあります プロセスが起動していなかったら 特定のプロセスのメモリの使用量が あるサイズを超えたら 特定のプロセスのCPUの使用率が 50%を超えている状態が 10分続いたら 特定のポートに接続できなくなったら など アクションには以下のような物があります 起動、再起動する アラートメールを送信する ユーザスクリプトを実行する など これらを組み合わせて、プロセスの監視を行います。とくにユーザが作成したプログラムの監視などに効果を発揮します。インストールは RedHat系なら yum install monit で入ります。(CentOSや商用のRedHatはrpmforgeをリポジトリとして追加する必要があります) 主な設定ファ

  • ウノウラボ Unoh Labs: symfonyでgettext

    yamaokaです。最近、PHPのフレームワークのsymfonyをいじっています。 symfonyでメッセージの国際化を行う場合、 デフォルトではXLIFFの形式を使うようになっています。 その他、gettextやデータベースからメッセージリソースを取得できるようにもなっているのですが、 その方法があまり公開されていません。 今回はgettextを利用してメッセージの国際化を行う方法を紹介します。 gettextに関する基的な情報については、 Wikipediaの該当項目や ウノウラボの過去記事 などを参考にどうぞ。実際の動作はsymfony 1.0.8で確認しています。 apps/<yourapp>/config/settings.ymlに下記を追記 all: .settings: i18n: on # 国際化を有効に standard_helpers: [I18N] # ヘルパーとし

  • ウノウラボ Unoh Labs: 「サーバサイドCSS」という選択

    miyakeです。突然ですが、CSSって書くの面倒ですよね。何らかのプログラミング言語を知っている人間から見ると、CSSというのは言語としてはかなり貧弱です。 もちろんCSSはプログラミング言語では無いので、それを貧弱だと言われてもCSSもいい迷惑かも知れません。でも、 div#content { ~ } div#content div.entry { ~ } div#content div.entry p { ~ } div#content div.entry ul { ~ } こういう大したことをしていないのに、コードがどんどん長くなっていくのを見ると、もう少し何とかならないものかと思ってしまいます。 コピペするにしても、 コピー元にカーソルを移動 範囲選択してコピー コピー先にカーソルを移動 ペースト という操作が必要になります。数が増えてくるとコピペのミスも発生しかねませんし、id

  • ウノウラボ Unoh Labs: Linuxをネットワーク経由で自動インストールする方法(後編)

    こんにちは、miyakeです。早く書くつもりだったのに前回からずいぶんと時間が空いてしまいました。今日は前回構築したPXEブート環境を用いて、いよいよOSの自動インストールに取りかかります。 ■前回のフォロー まず初めに、前回の内容について追加です。前回の手順でうまくインストールできなかったという情報がありましたので、ご紹介させて頂きます。 zuzara : CentOS5をネットワークブートからインストールする(ウノウラボの記事に補足) next-serverの指定をしないとインストール出来なかったという事例が紹介されています。前回の内容でうまく動かなかった方は、/etc/dhcpd.confへの追加設定を、 filename "pxelinux.0"; next-server 192.168.10.10; のようにしてみてください。next-serverに指定するIPアドレスは、tft

  • ウノウラボ Unoh Labs: 紙のノートでToDo管理

    yamaokaです。 最近、ToDo管理(タスク管理)を紙の小さなノートを使ってするようにしています。 今回は、実際どのように管理しているのかを書いてみます。 朝書く 作業を始める前に、やることを考える時間を作ります。 ぼくの場合、通勤の電車がかなり空いているので(乗換駅が始発駅です)、 座席に座りながらノートを広げるようにしています。 一日単位で書く まず、その日の日付を書きます。そしてその下に、 箇条書きでその日にやることをリストアップしていきます。 一日単位で書くことで、その日のゴール(到達目標)を明確にすることができます。 優先順位をつける その日のうちに絶対終わらせなければならない項目の先頭には、 二重丸を付けておきます。書き出した項目を一日で全部終えられるとは限りません。 最低限やらなければならないことをはっきりさせておきます。 終わった項目は消す そうして書き出したToDo項