仕事で画像キャッシュサーバーを構築した時のメモ。大規模事例の設定例が検索してもあまり見つからなかったので同じような境遇の誰かの参考になれば。 ピーク時のトラフィックは数Gbps 画像総容量は数十TB バックエンドのstorageが複数種類 規模とアクセス量とアクセスされる画像の種類が多いので、squidでdisk cacheを使用するとCOSS等を使用してもdiskIOで詰まる為、全てon memory cache。cache容量を確保する為に必然的にcacheサーバーの台数も数十台。 1. squidをsibling構成で並列に並べる cache_peer 10.0.1.1 sibling 80 3130 no-query no-digest proxy-only cache_peer 10.0.1.2 sibling 80 3130 no-query no-digest proxy-o
Wi-FiでOSC (OpenSound Control)メッセージを送受信するiPhoneアプリケーションRemokon for OSCをリリースしました。RemokonとMaxやSuperColliderを使って、音楽や映像をバリバリ制御してください。i3L(無料)などを使えば、Ableton LiveなどのMIDI対応アプリケーションもコントロールできます。 サポート・サイトにはRemokonやその前身にあたるakaRemoteを使ったデモ・ビデオがありますので、参考にしてくださいね。サンプル・プログラムやサポート・ライブラリもあります。 ちなみに、すでにApp StoreにはいくつかOSC対応アプリケーションがあるのですが、Remokonならではと思われる点を書いておきますね。これらにピンと来た方は是非使ってやってください。 ・OSCメッセージを受信してUIを設定できるので、ライブ
iPhoneの内蔵カメラの扱いは紆余曲折あって、多くのデベロッパーが苦労(というか快楽?)しています。しかし、先日大きな動きがあったので、これまでの経緯を含めてまとめておこうと思います。 第0章 iPhone OS 2.0からiPhone OS 3.0までの公式SDKでのAPIとしては、ユーザが写真を撮るためのユーザ・インターフェースを表示し、撮影した後の画像を取得できる機能が提供されていました。これらのAPIだけではアプリケーション側からカメラの画像がリアルタイムに取得できず、ライブ・ビューに他の画像などを重ねることもできません。いずれもAR的手法を実現する上で欠かせない機能なんですけどね。 ただし、非公式には存在しているAPIが結構沢山あって、柔軟なObjective-CとCocoa Touchの特性故に、実際に利用することもできます。このようなハック的手法で、公式にはできないようなカ
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog おひさしぶりです。オークション担当の山崎 賢です。 前回はPHP Serialize についてでしたが、 今回はPHPでのデバッグに関してお話します。 基本PHPはインタプリタ(厳密にはPHPは内部で一度コンパイルしていますのでインタプリタとは言い切れませんが) のデバッグではログ埋め込みが手軽です。 しかし、まれにSIGSEGVやSIGBUSなどでPHPスクリプトが落ちることがあり、途方にくれます。 地道にログを埋め込んでいき、箇所を特定するのも手法の1つですが、今回はgdbを用いたデバッグ方法を記載したいと思います。 ■STEP1 まずは、プログラムが落ちることを目的として以下のようなPHP Moduleを作成します。 ・ ・
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、IDプラットフォーム技術の近藤です。 先月末にひっそりとモバイル版OAuthをリリースしました。それに併せてYJDNのOAuthのドキュメントで分かりづらかった部分を更新しています。OAuthのパラメータで最も分かりにくいことで評判(?)なsignatureの生成方法をリクエストの署名で詳しく解説していますので、今まで自前でsignatureのロジック実装に挑戦していた開発者の参考になればと思います。 さて、どこがモバイル対応になったのかと言いますと、OAuthのフローの『2. End Userの認可要求』に記載してある、リクエストで指定するパラメータが一つ増えています。ここでConsumerが xoauth_yaho
Update 7/3/2011: This library no longer works with current builds of Arduino. At some point in the future I *may* decide to create a new revision, but my current focus is not on Arduino development. I believe there are one or more DHCP stacks based on my initial work. If you need DHCP support for your Arduino project, I would recommend you search for one of those libraries. I made a small updat
認証が不要で、結果をJSONPで返してくれるAPI。大体は高速化の為にmemcachedを使用し、cacheが存在すればcacheから、存在しなければDB等から引いてcacheに入れ、その後結果を返す設計になってるはず。 URL: http://api.example.com/count?user_id=12345&entry_id=12345&callback=hoge response: hoge({"status":"success", "count":1000});みたいなの。ほとんどの場合cacheにHitするので一瞬でresponseが返るけど、あまりに簡単なお仕事過ぎてそれの為にmod_perlのプロセスを使うのがもったいない。特に1日数千万回アクセスされるようなAPIだと積もり積もってすごい負荷に。 responseに使うJSONをそのままcacheに入れて、Tokyo T
■ Yahoo! IncのOAuthがRev Aのみになる Yahoo!Incは今まで、4月にセキュリティの問題が見つかった際に一時的にOAuthのシステムを止めましたが、その後はユーザーに警告画面を出すものの動作はするように戻していました。 よって、OAuth Core 1.0とその問題が修正された仕様のOAuth Core 1.0aの両方の仕様でOAuthを利用できる状態になっていたのです。 これは既にOAuth Core 1.0を利用していたアプリケーションへの配慮だったのだと思われますが、11/9にOAuth Core 1.0のほうの仕様ではOAuthの処理ができなくなるようです。 http://developer.yahoo.net/blog/archives/2009/11/reminder_we_are.html http://developer.yahoo.net/foru
「にねんM」「新にねん」「買い増し」どれがおトクなのか? 比較 – イーモバイル Pocket WiFi イーモバイル Pocket WiFi (D25HW) を確実に販売日 11月18日にゲットするべく、あるお店に行ってみました。ついでに、頭金が安くて月額が高い「にねんM」、頭金を多く払って月額が安い「新にねん」、どちらがおトクなのか聞いてみました。さらに買い増しとどちらがトクなのかも考えてみました。 イーモバイルには直営店がある はっきり言えばアースソフトの PT2 が入手しづらくて懲りた Nire なわけで。 🙂 ヨドバシカメラとか、普通にみんな行きそうな店では、普通に売り切れてしまう可能性を考えて、先日記事を目にした店に行ってみました。 それはイー・モバイル赤坂。唯一の直営店で、9月1日にオープンしたようです。公式サイトの画像を見ると、煉瓦造りの絵が載っています。とてつもなくオシ
先週末に購入したPocket WiFiだけど、紆余曲折ありながらもようやく日常で利用することができるようになったのでエントリーしてみる。 本体でできることは昨今流行りのモバイルルータとほぼ同じ。PHS300等でも同じことはできたけど、モデムを外付けにしたりしなくてはいけないなどかなり使い勝手が悪かった。本体の設定も面倒で、ケーブルの取り回しなんかもカッコ悪い。そういう悪い部分を完全に払拭したのがこのPocket WiFi。モデムもSIMもバッテリーも内蔵されていて設定も簡単。サイズも、商品名の通りポケットに入れられるほど。 見た目は小さいマウスのようで高級感はないけど許せる範囲。まあ普段はカバンやポケットに入れっぱなしなので見た目に関してはあまり気にする必要はない。 ■どんなガジェットで使う? このPocket WiFiはルータ機能も持っているので基本的に無線LANを搭載した機器ならば接続
またまたイー・モバイルネタ。各所で話題のモバイルルータがイー・モバイルから発売されるとのことで新作発表会に参加させてもらった。 コンセプトはWILLCOMのどこでもWiFiとかPHS300と同じ。いつでもどこでも3GネットワークとWi-FIを使ってインターネット接続を可能にするってもの。メーカはイー・モバイルと仲良しのHuaweiだ。 PHS300より優位なのはSIMが内蔵できること。どこでもWiFiより優位なのはそのサイズと通信速度だ。両機種の不満点を見事に克服してきた。 外観はこんな感じでちっちゃいマウスみたい。端末カラーはホワイトのみ。個人的にはデザインも問題ないと感じる。丸いのでポケットやカバンに入れても邪魔になることもないだろう。 ばらしてみる。 バッテリーは1500mAhで無通信状態で10時間、通信を行うと4時間の連続稼働が可能だそうだ。おそらく本体の重量(80g)の半分はバッ
OAuthの典型的シナリオ userがconsumer(Web上のサービス)を利用 userはSP(別のWeb上のサービス)にアカウントを持っている SPは一般にSNSで、userがSP上に蓄積した情報(個人プロファイルや友達リストなど)は原則的にSPの外部に非公開 consumerは、userに許可を得て、SP上の情報を取得する ただし、userはconsumerにSPのパスワードは教えない OAuth 1.0aの動作シーケンス 表記法 リクエストとレスポンスの区別は自明ですが、ひとめで分かるようにリクエストは --> 、レスポンスは ==> にしています。 リクエストやレスポンスペアの上に書いてある数字はOAuth1.0aスペックのセクション番号です。リクエストパラメータやレスポンスの内容はスペックの該当セクションを参照してください。 リクエストやレスポンスペアの下に書いてある文字列は
前回の続き。 id:brazilさんのアドバイスに基づいて、window.nameを使う方法。 window.nameにurlを代入しておき、reloadした際にwindow.nameと開いた(reload)したurlが一致したらreload判定。window.nameはwindowの名前を示すものでページ遷移してもnameは変化しないことを利用している。ただ、通常はwindow.nameはリンクのターゲットなんかに使われるのでuserscriptで使用する際には、対応するサイトがwindow.nameを使用してごにょごにょやってないのか調べておく必要があるかなぁと思います。 あんまり使われてないと思うけど…。
大規模なコードベースでリファクタリングを省エネ化するためにcodemodを最近調べていて、軽く試行錯誤したのでそのメモ。 やりたいこと 例えば以下のようなTable Driven TestなコードをBEFOREからAFTERに書き換えたい。コード量が多いため人間がやるのは現実的ではなく、codemodで機械的に書き換えたい。 BEFORE package main import ( "slices" "testing" ) func TestContains(t *testing.T) { type args struct { ss []string s string } tests := []struct { name string args args want bool }{ { name: "empty: false", args: args{[]string{}, ""}, wan
Yahoo! JAPANのOAuthがmobile対応していることをご存知でしょうか? Tech Blogに担当者のエントリが出ています。 モバイル版OAuthの便利な活用方法 - Yahoo! JAPAN Tech Blog OAuthはブラウザでユーザーがConsumer Appに対して認可をすることで、Web/Clientを問わず様々なアプリケーションがユーザー認証を必要とするAPIを利用できます。 Y!Jが行ったモバイル対応というのは、今までPCのブラウザからアクセスされる画面でのみ認可を行うことが可能だったものだったものが、携帯電話のブラウザの画面でもできるようになったことを示しています。 ■ モバイル用パラメータ 実装の内容については難しくないので、ブログのエントリとともに読んでみてください。 http://developer.yahoo.co.jp/other/oauth/f
■ 目的 twitterベースなマフィアゲームのおかげで一気に話題になったOAuth。 ここまできたら、みなさんにもっと詳しく知ってもらいたいということで、以下2つのサービスが実装したOAuthの仕様を見直してみます。 twitter : http://apiwiki.twitter.com/Twitter-API-Documentation FriendFeed : http://friendfeed.com/api/documentation 以下、OAuthをいくつかのステップに分けて仕様を見ていきます。 ■ Consumer登録 必要な情報 □ twitter Application Icon Application Name Description Application Website Organization Website Application Type Callback
iPhone関連の特定フレームワーク、ジャンルに特化した本が二つ出ました(出ます)。 横江iPhone関連の特定フレームワーク、ジャンルに特化した本が二つ出ました(出ます)。 横江 宗太さんの「OpenGLで作るiPhone SDKゲームプログラミング」 所 友太さんの「iPhoneプログラミングUIKit詳解リファレンス」 です。 「OpenGLで作るiPhone SDKゲームプログラミング」 iPhoneでOpenGLな本出ないかなぁ、と思っていたら出ました。 感想としてはともかく明解。OpenGL、ゲーム開発ってこんなに簡単に説明できるの?というぐらい明解。 第1章で以降の章で使うグラフィック・ライブラリを自作し、2章以降で実際に使ってゲームを作る、という進行になっています。 で、このグラフィック・ライブラリの自作(とゲームの制作過程)が面白い。 ちょっと進めたらリファクタリ
Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。 Arduinoとエレクトレット・コンデンサ・マイクを使ってオーディオレベルメータを作ってみた。マイクで拾った音の大きさに応じて、LED8個を段階的に点灯させている。 エレクトレット・コンデンサ・マイク(以下ECM)は音の強弱により容量が変わる一種のコンデンサだ。ECMから音声信号を取り出すためには+極に電圧をかけ、その電圧をコンデンサを介して取り出す。音の強弱によりECMの容量が変化し、充放電することで電圧の変化となり、それが音声信号となる。 ECMの音声信号はとても小さく、そのままArduinoに入力してもノイズと区別がつかない。そんな時はOPアンプを使う。小さな信号を大きな信号に
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
A Blog about Software Development. Software development is the act of developing a software product. I am building a AMQP client library to use along with some of the openbotlistprojects. The client library will need to be written in haskell and will be able to communicate with MQ servers like RabbitMQ. That is irrelevant because I am just wrapping my head around haskell networking. The "Data.Bina
5時間の糖負荷検査を受けても受けなくても、血糖調節の異常が予想される場合には、糖を除去する食事を指導することになります。 日本人の食事には、あまりに多くの砂糖が使用されているため、クリニックの指導に対してどのようにして良いのか、途方にくれてしまう方がいらっしゃいます。 料理をされる方はご存知のことと思いますが、日本料理には砂糖を多用します。その量は、フランス料理とかイタリア料理とかと比較しても多くなります。 そこで厳密に砂糖の使用を禁止すると、どのように献立を考えてよいのか困ってしまうようです。 また、白米を多用するため、おかずの味付けに砂糖を使わないようにしても、糖質(炭水化物)の割合はとても高くなります。 そのような食習慣の日本人がどのように糖質制限をするか、そしてどのように指導するかも困るのです。 『○○は食べても良いですよ!』 と許可すると、ここぞとばかりに量を摂取することを経験し
火曜日にHaskell 2009年末の集いに参加してきました。 前哨戦で参加者全員が発表するということで、新しいGHCで改善された並列プログラム用ランタイムシステムの性能改善の話を少しだけしました。スライドはこちら。 GHC 6.12.1 マルチコア対応ランタイムシステムについてView more documents from ma0e. 新しいGHCでは、 Control.Parallel.parで生成される超軽量スレッドsparkを各コア間で共有するのにwork stealing queueというロックフリーなデータ構造を使うようにしたとか 並列実行や並列GCにおいて局所性を高めて性能改善したとか 現在採用しているGCの方式とControl.Parallel.Strategiesライブラリの相性が悪く、メモリリークが起こることがあった問題を解消したとか これはparallelライブラリ
git の使い方が全くわからず。一瞬 bitbucket に入れようかと思ったくらい。 voluntas's memcached-client at master - GitHub http://github.com/voluntas/memcached-client とりあえず application 化しました。これで lib の下に置けばさくっと動きます。想定した使い方とは違うのかもしれないので微妙ですが。。。 大本との変更点は以下の通りです。 make して erl -pa ebin で使えるようになってると思います。テストとかは書いてないのでそのうち書きます ... 。 application:start(memcached) を呼び出して実行するようにした random_id を廃止して Pid を返すようにした Name (atom) を渡して好きに名前を付けられるようにした
ソフト開発に必須なUnitTestですが、Xcodeで動くUnitTest としてはiPhone Dev Center: iPhone Development Guide: Unit Testing Applications があります。このページに丁寧に使い方が書かれているので説明通りに設定する事で UnitTest が使えるようになります。ただし、この SenTestingKit にはいくつかの問題があります。 まずテストが結果がコンパイルエラーのように表示されるので、チェックするのがめんどうです。 そして、テストが通らなかった場合にデバックしようとしてもコンソール等にログを出したりできません ^^); この問題は致命的です。 そこで、他のUnitTestツールを探したところGoogle Toolbox for Mac の iPhoneUnitTesting というものがありました。こ
気がつけば12月も中旬だよ……。 少し前になるけど,「あとで試す」タグをつけといたやつをやってみる。これ↓: cf. 簡単なWebサーチエンジンの作り方 - 加藤 和彦のブログ 具体的な手順はこっちのページで公開されている。 cf. http://www.osss.cs.tsukuba.ac.jp/kato/wiki/kato/index.php?Jikken-search-engine さて,順にやってみよう。 課題1-1 与えられた文字列のsuffix arrayを作成するプログラムを作成せよ. import Data.List suffixArray :: String -> [Int] suffixArray xs = map fst $ sort' $ zip [1..] $ init $ tails xs where sort' = sortBy (\a b -> compar
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Apacheモジュールのログ出力、こんどはMessagePack版を作成しました。続いてはこちらをご紹介します。 Apacheのアクセスログを使い、ユーザアクセスの集計やパターン解析などというのは一般にどこでもやられていることだと思います。通常のアクセスログはテキストファイルなので、集計を行うためにスクリプト上で扱える変数・オブジェクト化が必要になりますね。1行ごとの各ログ項目を取り出すのに正規表現を使ったり、cutやawkなどを使い空白で分割するなど、色々工夫されていることと思います。 今回、MessagePack版のアクセスログ出力をやってみようと思い立ったのは、アクセスログをあらかじめ構造化済みの状態で保存しておければ、読み込みの際の解析する手間を省くことで解析処理の高速化が期待できるのではないか、そう考えたためです。MessagePackであれば、PythonやRubyはじめ様々な
Mysql Database Structure CompareはRuby製Windows/Linux向けのオープンソース・ソフトウェア。データベースを使ったWebシステム開発が当たり前になりつつある。だがデータベースの構造におけるバージョン管理は煩雑なケースが多い。 RubyだがGUIアプリケーション 特に運用時におけるスキーマ変更を適切に行っていないばかりに余計なエラーを起こすようなケースもある。そこで使ってみたいのがMysql Database Structure Compareだ。Mysql Database Structure Compareは二つのデータベースを比べてその差分を抽出するソフトウェアだ。 比較元、先ともにホスト、ユーザ名とパスワード、データベース名、ポート番号を指定できるようになっている。一つがローカル、一人はリモートであっても利用できる。比べた結果はSQLとして
HTML5 is here! Urray! I was tired of hearing about one of the new innovation in HTML5: the WebSocket API. After reading the excelent blog post about WebSockets and Ruby by Ilya Grigorik I got inspired by this experiment which is a simple example of a twitter-to-browser usage of websockets. Since the excelent em-websocket was available on github, I decided to write my own “from twitter to the brows
This document introduces AMQP messaging using RabbitMQ as a broker. It explains that AMQP and RabbitMQ allow applications to communicate asynchronously by sending and receiving messages through a broker, providing decoupling, queueing, load balancing and scalability. It provides details on RabbitMQ as an open source AMQP broker developed by Rabbit Technologies and the AMQP Working Group which main
RabbitMQで遊び、関連ライブラリを調べているうちにだいぶAMQPの概要が分かってきた。現時点で、参考になった資料を列挙しておく。 導入・基本概念 Introduction to AMQP Messaging with RabbitMQhttp://www.slideshare.net/somic/introduction-to-amqp-messaging-with-rabbitmqpy-amqplibのサイトから辿っていくうちにみつけたスライド。最初は読み流してしまったけど、後で見返すとAMQP, RabbitMQ, AMQPクライアント・ライブラリについて非常によくまとまっている。 クライアント・ライブラリ実際にコードを書いて試してみるにあたっては、次の二つのページが役にたった。http://www.rabbitmq.com/api-guide.htmlhttp://hopper
We close out 2009 with our annual review of the year's 50 best albums. Yesterday we highlighted another 25 that missed our top 50 but we feel deserve some attention. Woodsist had an auspicious 2009, releasing well-liked albums from Real Estate, Ganglians, and the Fresh & Onlys. Amongst the best of them was Songs of Shame, the fourth album from label chief Jeremy Earl and his intrepid band of outdo
AMQP (Advanced Message Queuing Protocol)(参考記事・英語) はJohn O'Hara氏によって(リンク)JPモルガン社内で生まれた。だが、彼のビジョンは単なる新しい社内向けのものに留まるものではなかった。AMQPの標準的かつ(リンク) オープンソースのテクノロジー(リンク)は、機運に乗っている。Jeff Gould氏(リンク)とその仲間達はAMQPの成り立ち、AMQPを動かしている人物、そして今後についてヒントを与えた。 IONA Technologies(リンク)はAMQP仕様の貢献者であり、AMQPがどのようなものであり、なぜ注目すべきなのかを説明する短い文章(リンク)を発表した。AMQPとは以下のようなものである。 「AMQPモデル(Advanced Message Queuing Protocol Model)」と呼ばれる明確なメッセージング
より効率的なコードに差し替えました http://dev.w3.org/2006/webapi/selectors-api2/#matchesselector と id:javascripter さんの記事 Selectors APIのmatchesSelectorと、動的なページでのイベント処理 via http://d.hatena.ne.jp/javascripter/20091018/1255889085 を参考に uu.match(expr, ctx, rtype = 0) な関数を書いてみました。 // uu.match - document.matchesSelector like function function uumatch(expr, // @param String: "css > expr" ctx, // @param NodeArray/Node: matc
Selectors APIのDraftに、matchesSelectorというAPIが定義されていて、現在、WebKitとMinefieldのNightlyに搭載されている。 ただし、ドラフトなのでベンダープレフィックスがついていて、Element#webkitMatchesSelectorやElement#mozMatchesSelectorを使わなければいけない(というより、まだ直接使うには時期尚早だ)。 使い方は簡単。 var paragraphs = document.getElementsByTagName("p"); paragraphs.item(0).webkitMatchesSelector("p"); // true paragraphs.item(1).webkitMatchesSelector("div#main > p"); // <div id="main"><
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く