サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
stellaqua.hatenadiary.org
何と、前回の記事の日付が2年前という恐ろしい状況!…止まった時計を再び動かすべく、はてなダイアリーに戻って参りました。 という事で、BEAR.Sunday meetup #2にお邪魔させて頂いてきたので、ご報告を。 会場はとってもオシャレなHubTokyoさん。WebSterさんの提供で、食べ物・飲み物に困らずに非常にリラックスした状況で、なるほど、これが勉強会ではなくmeetupなんだと実感しました。 全員が自己紹介も兼ねてLT必須という事で、何の話をしようかと思ったんですが、ちょうどTDDフレームワークのWaltzを作っていて、DocTestが動く状態になったところだったので、その紹介をさせて頂きました。 http://www.slideshare.net/stellaqua/bea-rmeetup2-lt 他の方が時間節約の為に1台のPCに資料をまとめてプレゼンしている中、どうしても
今回から、ちょっとずつBEARを触っていってみようと思います。今回は、とりあえず基本に従って、インストールからHelloWorldまで。 早速インストール インストールの手順は本家Wikiのインストールのページを参照しました。 →Google Code Archive - Long-term storage for Google Code Project Hosting. PEARパッケージなので、"pear install"で一発インストールできて楽ちんですね。 $ sudo pear channel-discover pear.bear-project.net $ sudo pear install -a bear/BEAR-beta結構依存パッケージが多いみたいで、色々と追加でインストールされました。 ちゃんとインストールできたかどうか確認する為、バージョンを表示させてみます。 $
ググればサクっと分かるかと思ったけど、案外すんなり分からなかったのでメモしておく。 普通にforeachとかsection使うと、配列の個数で繰り返し回数が決まってしまうので、他の言語のfor文みたいな繰り返し回数が決まっているループはできません。 で、例えば、0〜9までの繰り返しをしようとしたら、以下のようにすれば良いようです。 {section name=i start=0 loop=10} i={$smarty.section.i.index}<br /> {/section} ちなみに、loopで指定する値は、for文で言うところの、 "for($i=1;$i<10;$i++)" の、10に相当するので、例えば5〜14まで繰り返しとかだと、 {section name=i start=5 loop=15} i={$smarty.section.i.index}<br /> {/se
ちょっと捕捉できていなくて出遅れた感はあるんですが、何だか面白そうだったので乗っかってみました。 →J-POPの歌詞における「何か」の探され率は異常 ニュース速報BIP この中で34224のコメントがうまくまとまっていたので、そちらから拝借させてもらって、適当に並び替えて歌詞を生成するWebサービスを作ってみました。 →どこかで聞いたような歌詞メーカー 今のところ、単語を適当にパラグラフにばらけさせてるだけな感じですが、それでもそれなりにそれっぽくなるのが面白いところですな。(笑) ただ、もうちょっと工夫してみると、もっとそれっぽくなって面白くなりそうな感じもするので、もうちょいいじってみようかなと思っています。 ちなみに、ニコニコ動画でも、元のスレの歌詞を使って曲を作っちゃった動画が既に上がっているようで、こういう職人さんの才能はやっぱりスゴイなぁと思ってしまいます。 →http://b
何か「Ctrl+Aするとスゴイ!」ってページが話題になっていたので作ってみました。 →画像が浮かび上がる文章ジェネレータ どうせなら日本語の方がよかろうと思って、青空文庫から"吾輩は猫である"の文章を引っ張ってきました。デフォルトで猫画像が埋め込まれているので、Ctrl+Aすると猫が浮かび上がってきます。 ちなみに、もうちょっと早く作って1番乗りを目指したかったんですが、やっぱり先を越されちゃってましたね。(^^; →Select Art - 選択反転すると画像が出てくるジェネレータ 他にも既に作った人とかいるかもしれないですね〜。 ま、とりあえずサクッと作ってみたので、公開しておきたいと思います。
山本陽平さん著の"Webを支える技術"を先ほど読み終わりました。 Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus) 作者: 山本陽平出版社/メーカー: 技術評論社発売日: 2010/04/08メディア: 単行本(ソフトカバー)購入: 143人 クリック: 4,320回この商品を含むブログ (183件) を見る 第1部から第4部までは、Webに関する技術について歴史的な経緯も含めて非常によくまとまっているので、Web技術の知識の総復習的な感覚で読みました。自分自身、Web技術に関して基本的な知識は抑えているつもりですが、細かい部分であやふやだったりするところもあったので、そういった部分を補完できて非常に助かったかなと。 第5部に関しては、WEB+DB PRESSの連載当時から興味深く読ませて頂いていましたが、当時はまだ自分でリソース設計
ちょっと元データの件数が大量にある処理をしたいという要件があって、普通に逐次処理していくと恐ろしく時間が掛かるので、「こんな時こそHadoop!」って事で、久々にHadoopをいじくっていました。 ただ、自宅サーバでやろうとすると、いくら分散処理できるとは言っても結局処理するのは物理的には1台な訳で、メモリを使い切ってスワップしまくってウンともスンとも言わなくなってしまうという、とっても悲しい状況になってしまいました。 「そんな時はAmazon先生にお願い!」って事で、Amazon Elastic MapReduceを試していたんですが、ちょっとハマってしまったところがあったので、備忘録がてら記事にしようかと思います。 Mapper/Reducer以外のファイルが使えない! 以前にAmazon Elastic MapReduceを試した時は、MapperとReducerが1ファイルだけの簡
「ブログに書くまでが(ry」…ではなく、「トラックバックするまでが勉強会」との事なので、早速。 第51回PHP勉強会に行って参りました。今回は発表者として、BEARに関するプレゼンをさせて頂きました。 リソースフレームワークBEARのススメ(PHP勉強会#51)View more presentations from stellaqua. 今まで何度もPHP勉強会には参加させてもらいましたが、発表するのは初めてでした。 とりあえず、プレゼンする上で気を付けようと思っていた事はちゃんと気を付けてプレゼンできたかなとは思ってますが、後でUSTREAMの録画を見直して一人反省会をしようと思います。 今回の発表の一番の目的はBEARの事を一人でも多く知ってもらう事と思っていて、新米芸人のごとく、「今日は名前だけでも覚えて帰って下さいね。」という感じと思っていたので、そういう意味では目的は果たせたか
今まで作ったWebサービスのいくつかでMeCabを使っているんですが、最近の言葉がMeCabの辞書に反映されていないので、特に話し言葉に近いブログとかの単語判別が甘いという悩みがありました。 そんな訳で、以前からずっとやろうと思っていたまま後延ばしにしていた、はてなキーワードからMeCabのユーザ辞書を作って利用するようにする作業を行いました。 手順などは、以下のサイトを参考にさせてもらいました。 →はてなキーワードからMecCab辞書を生成する(Ruby版) 以下、実際に行った手順。 はてなキーワードファイルをダウンロードする 以下のページからはてなキーワードがまとまって入っているCSVファイルをダウンロードします。 →はてなダイアリーキーワードふりがなリストを公開しました - はてなダイアリー日記 $ wget "http://d.hatena.ne.jp/images/keyword
前回までで、極めてシンプルな形のWebアプリケーションではありますが、BEARを使って動作するものを作成するところまで、一通りの流れを見てきました。 ただ、最初の紹介記事でも書いたように、Webアプリケーションが1画面で1機能だけを提供するような事はまず無い訳で、今回から数回に渡って、1画面(BEARで言うと"ページ")で複数のリソースを扱う場合について学習してみたいと思います。 で、どんな機能を追加するかって事なんですが、逆さ語は、文章の入力フォームの下に、最近変換された文章を表示するようにしているので、その機能を実装してみようと思います。 DBを使う場合のリソース作成を試してみる 実際のリソース設計・実装は次回に回すとして、今回はまずDBを使う場合のリソース作成の方法を学びます。 本家Wikiの中だと、デモの中のDBセレクトのページが比較的分かりやすいので、そちらを参考にしました。 D
久々にPHP勉強会(第49回)に参加する事にしまして、BEARの布教活動をしてこようかと企む今日この頃、皆様いかがお過ごしでしょうか。(ここまで挨拶)*1 さて、前回までで、DBを使わないようなシンプルなリソースの作り方について学びました。今回は、リソースを利用する側である"ページ"を作成して、実際に動作するWebアプリケーション完成までやっていきたいと思います。 "ページ"の概念 ページに関しては、本家Wikiのページの説明の辺りを見ると、概念がよく分かります。 最低限必要なのは、onInject・onInit・onOutputの3つのメソッドで、 onInjectで必要なコンポーネントなどのインジェクトを行う。 onInitでリソースからのデータの読み込みとテンプレートへの値のセットを行う。 onDisplayで実際の出力を行う。 というような流れが基本という感じみたいですね。他のメソ
今まで月1ペースぐらいだったブログ更新が急にペースアップしているのは、自分のwktk感の現れです。(笑) 最初の紹介記事のはてブの付き方を見ると、結構注目度も高い感じですね。今まで注目されてなかったのが何とも不思議だ…。 さて、今回から実践編という事で、BEARを使って実際にWebアプリケーションを作っていこうと思います。 お題としては、拙作のWebサービス達の中から、逆さ語をチョイスする事にしました。 逆さ語は、"与えられた文章を逆さ語に変換する"という機能がメインで、画像を扱う訳でもないし、画面遷移もなく1画面で完結するUIなので、最初のお題としてはもってこいかなと。 BEARでのリソース作成を試してみる という訳でリソースを作っていくんですが、リソース設計をする前に、まずはBEARでどうやってリソースを作るのか勉強しておこうと思います。 BEARでのリソース作成に関しては、本家Wik
これ、密かにスゴイぞ…。 →Google Code Archive - Long-term storage for Google Code Project Hosting. 「こんなWebアプリケーションフレームワークがあったらなぁ…。」と最近ぼんやりと考えていた、そのものズバリな感じで、かなり衝撃を受けています。今まで捕捉できてなかった自分に反省…。orz 今までRails以降の、いわゆるMVCフレームワークに何ともかんともなじめなかったんですが、このBEARに関しては、かなりすんなり考え方が入ってきました。 Rails型のフレームワークになぜしっくりこないのか? せっかくの機会なので、そもそも、なぜRails型のフレームワークが自分的にしっくりこなかったのか、ちょっと考えてみました。 まず、自分のイメージとしてRails型のフレームワークの場合、"URL1つに対してMVCの塊1つが対応
すっかり、"作ってみた"シリーズの公開ブログになっていますが、また、どうでもいいようなアイデアを思い付いてしまったので作ってみました。 →今北川柳 ネーミングセンスがアレなのは気にしない方向で…。*1 これは何? WebサイトやブログのURLを入力すると、文章から適当に単語を拾ってきて川柳をでっちあげるサービスです。 ただ文字列として生成するだけだと見た目的に面白くないので、色紙に毛筆で書いたっぽい画像を生成するようにしました。 試しにこのブログでやってみたら、こんな感じになりました。 全くもって中身がありませんね。(笑) これだけだとなんなので、ついでにasahi.comのトップ画面でやってみたら、こんなのになりました。 総選挙直後なので、やっぱり"総選挙"という単語が入ってきてますね。まぁ、やっぱり意味はサッパリ分かりませんが。(笑) どんな仕組みなの? 川柳生成部分 基本的な仕組みと
何となく"マルコフ連鎖"という単語に魅かれて、ちょっとやってみました。 →mecab でマルコフ連鎖をためしてみる。 - コードを舐める日々 まずスクレイピング まぁ、当然(?)、PHPでやる訳ですが、まずスクレイピングをどうしようかなと思ったんですが、HTMLScrapingという素晴らしいPHPクラスがあるので、ありがたく使わせて頂く事にしました。 →http://www.rcdtokyo.com/ucb/contents/i000851.php <?php try { $hs = new HTMLScraping(); $url = 'http://www.asahi.com'; $xml = $hs->getXmlObject($url); $li = $xml->xpath('//div[@id="HeadLine"]/ul[@class="Lnk FstMod"]/li[1]/
AmazonがEC2上でHadoopによるMapReduceを実行できるサービスを出してきたようですね。 →Amazon EMR - Amazon Web Services →http://kzk9.net/blog/2009/04/reviewing_amazon_elastic_map_reduce.html 前回の記事では、EC2上でHadoop用のインスタンスを自分で動作させて、ファイルの転送も事前にやって…と色々下準備が必要だったんですが、このサービスを使えばローカルの環境からいきなりコマンド一発でMapReduceを実行する事ができるようになりました。 そんなのを聞いたらやってみたくなるよね、という事で、PHPのMapper/Reducerが使えるか試してみたかったので、早速使ってみる事にしました。 多段階のMapReduceは面倒なので、今回は以前の記事で使った単語カウントの
前回は話だけで終わってしまったので、今回はソースコード中心です。 アイテム同士の距離の計算に必要な情報を出力するReducerを実装する という訳で早速ですが、前回延々と話をしていた事をReducerに実装します。 #!/usr/bin/php <?php require_once(dirname(dirname(__FILE__)).'/lib/HadoopStreaming/Reducer.php'); class Reducer extends HadoopStreaming_Reducer { public function reduce ( $key, $values ) { $wordcount = array(); while ( $values->has_next_value ) { list($id, $count) = explode(':', $values->cur
ふいに顔認識技術を試してみたくなった。後悔はない。 と、何の脈絡も無く、ちょっと顔認識で遊んでみたくなったので、メモを残しつつ試してみます。 まずは、OpenCVライブラリのインストールから。SourceForgeのOpenCVのページからソースをダウンロードして、コンパイルします。 $ wget "http://downloads.sourceforge.net/opencvlibrary/opencv-1.0.0.tar.gz?modtime=1162852454&big_mirror=1" -O opencv-1.0.0.tar.gz $ tar xzvf opencv-1.0.0.tar.gz $ cd opencv-1.0.0 $ ./configure --without-python $ make $ su # make install 最初に、"./configure"だけ
以前参加した、Tokyo Cloud Developers Meetupで株式会社あくしゅの方がWakameというソフトについてプレゼンされていて、二次会でもお話を伺って、素直に「スゲー!」と思っておりました。そのWakameがついにリリースされたようですね。 →http://www.venturenow.jp/news/2009/04/20/2040_006391.html 本家サイトは以下。 →http://wakame.axsh.jp/ どうスゴイのかは、以下の記事を見て頂くと伝わるんではないかと。 →"Wakame" は三年後、「あれはイノベーションだった」と言われても不思議じゃないソフトウェアだ - @kyanny's blog*1 Wakameのスゴそうなところ Wakameのスゴさは何と言っても、"自律型"っていうところにあるように思います。*2 1日のサーバ負荷の上下に合わ
あいかわらずHadoopStreamingが楽しくてやっているんですが、そろそろ自宅サーバ1台だけで処理するのは限界っぽいので、AmazonEC2上でHadoopStreamingにチャレンジしてみました。 AmazonEC2の導入に関しては、以下のまとめ記事からのリンクを参照しまくりさせてもらいました。多謝。m(_ _)m →Amazon EC2/S3を使ってみた - まとめ (Amazon Web Services関連エントリ目次) - 元RX-7乗りの適当な日々 そして、AmazonEC2上でのHadoopStreamingの動かし方に関しては、以下の記事を参考にさせてもらいました。 →hadoop-ec2でアクセス解析してみたよ! - soffritto::journal 階層的クラスタリングをEC2上で動かしてみる とりあえずテストという事で、前回の記事で作成した階層的クラスタリ
Gitは非常に優れたバージョン管理システムではあるものの、BTS(Bug Tracking System)/ITS(Issue Tracking System)との連携はまだいまいちだなぁ、と個人的に思っていたんですが、GitHubに公式にITSの機能が追加されたようで、ちょっと触ってみました。 →GitHub Issue Tracker! - The GitHub Blog 今回はお試しなので、適当な空リポジトリを作って、それを使ってIssueの自動クローズなんかを体験してみたいと思います。 実験用リポジトリを作成する GitHubにログインして、"Create a Repository"で新規リポジトリを作成して、後は表示される手順に従って作業を進めます。具体的には以下のような感じ。 $ mkdir its-test $ cd its-test $ git init $ echo 'マ
(今回の記事は、id:naoyaさんの記事をパクってにインスパイアされて、PHPでやってみたものです。話の内容としては概ね同じです。) 前回の記事の最後で、「HadoopStreamingはReducerへの入力が構造化されていないという問題点があります。」という事を書きました。 前回の小説の文を分かち書きしたものの単語数カウントの例で言うと、Reducerに渡ってくる入力は次のような形になります。 単語1 1 単語1 1 単語2 1 :今回は、単純にハッシュ上にカウントしていくだけなので大した問題にはなりませんが、もっと複雑な処理をReducerにやらせようとすると、PHPプロセスのメモリ不足になってしまう可能性があります。 PHPでHadoopStreamingの入出力を汎用的に扱う という訳で、id:naoyaさんの作ったフレームワークを参考に、PHPで同じようなものを作ってみました
「何番煎じか分からないけど集合知プログラミングをPHPでやってみたシリーズ」で扱っている集合知プログラミングは、とかく計算量が多くなりがちで、うまくアルゴリズムを作らないとメモリ不足に陥りがちです。 現に前回の記事では、その越えられない壁を体験してしまったので、「どげんかせんといかん。」という事で、最近ちょっと興味のある、Googleのバックエンドでも使われている"MapReduce"に関して少し調べてみました。 "MapReduce"に関しては、「"Googleを支える技術"読め。以上。」でもいいんですが、id:naoyaさんが書かれている記事が非常に分かりやすかったので、その記事のリンクを貼っておきます。 →MapReduce - naoyaのはてなダイアリー "Googleを支える技術"もせっかくだからAmazonのリンクを貼っておきます。 Googleを支える技術 ?巨大システムの
最近、ちまちまとGit環境の整備をしていて、少しずつノウハウも溜まってきたので、忘れない内に書いておこうと思います。 GitBashを使おう 前回はコマンドプロンプトからGitコマンドを叩いていた訳ですが、コマンドプロンプトだと色々といまいち不便な事が多いですよね? そんな時はコレ! "GitBash"!! とっ、ても、カン、タン、だっ! という事で(?)、WindowsでGit操作をするなら、msysgitをインストールすると付属してくるGitBashを使うと何かと便利になります。 スタートメニューのGitの項目の中に"GitBash"というのがあるので、それをクリックするとコマンドプロンプトっぽい画面が立ち上がります。 Bashの機能がだいたいそのまま使えて、viとかgrepとかUNIX系のコマンドも基本的な辺りは入っているので、UNIX操作に慣れている人は重宝するのではないかと思いま
明けましておめでとうございます。m(_ _)m 旧年中は(ry。 普通だと、ここで去年の総括とか今年の目標とか書くところなんでしょうが、1月1日だからと言ってそういうのをやるのはあまり好きではないので、通常通り"やってみた系"の記事を書いていこうかと思います。 今回ターゲットにしたテーマは? 年末に"集合知プログラミング"を買って、少しだけ読み始めたんですが、実際に自分でコード書きながら読み進めた方が、後々実際にライブラリとして使えたりしていいかなと思い、せっかくなのでブログでシリーズものとしてスタートさせる事にいたしました。 集合知プログラミング 作者: Toby Segaran,當山仁健,鴨澤眞夫出版社/メーカー: オライリージャパン発売日: 2008/07/25メディア: 大型本購入: 91人 クリック: 2,220回この商品を含むブログ (277件) を見る本書のサンプルはPyth
RESTfulなWebサービスをサクっと作るのに、何だかんだでRailsが一番手っ取り早いんじゃなかろうか…と思って挑戦していたんですが、ちょっとハマってしまったので備忘録…。 とりあえず、Ruby/Rails/PostgreSQLをインストールしてから、まずはRailsアプリケーションを作成…。 $ rails railstest で、DB作成。 $ createdb -E utf8 railstest で、database.yml編集。(内容はサンプルという事で適当…。test/productionも内容は同じ。) development: adapter: postgresql database: railstest username: user password: pass host: localhost encoding: utf8 で、db/migrate/001_initia
一応、Git環境は整ったものの、ありきたりなテストファイルを使った操作をしていても感覚として身に付かないので、実際にRailsのWebアプリケーションを使って、メモを残しつつGit操作を試してみようかと思います。 少しずつじっくりやっていきたいので、何回かに分けて記事を書いていこうと思います。でも、アジェンダを作って回を分けたりしている訳ではないので、きちんとした連載みたいなものにはならないと思うので、ご了解の程を…。 今回、予備知識として"git"をキーワードに色々ググっていて、非常に参考にさせて頂いたサイトがあるので、ご紹介しておこうと思います。 →アリスとボブになりきってgitをちゃんと理解したい! - ザリガニが見ていた...。 実際に試してみた結果+所感で綴られているので、非常に分かり易いですね。「Gitをインストールはしてみたけど、どうすればいいの?」という方には(自分も含めて
10/4〜5に掛けて、OSC2008Tokyo/Fall→Git勉強会→OSC後Hackathonという3HitComboをやってきた訳ですが、もう色々と盛りだくさんで、何を書いていいやら…という事で、感想とかはバッサリ省略。<おい なので、Gitの話だけに絞って、なおかつ、環境構築の備忘録メインで書こうかと思います。 ということで、Git勉強会についてさらりと…。今回は、Gitのメンテナーである濱野さんをお迎えして、Gitの概要というところから簡単な例を交えての使い方をお聞きしました。 内容の詳細に関しては、id:kinnekoさんが詳しいメモを公開されているので、それに便乗しておきます。 →Git(ギット)勉強会メモ - kinneko@転職先募集中の日記 当日、濱野さんが使われていた資料も公開されているので、そちらもリンクを張っておきます。 →http://www.kernel.or
以前、RESTfulWebサービス読書会の議論の中で、「RESTは目的ではなく手段である」というような言葉があって、「それはまさにその通りだよな…」と思った訳ですが、その時から「じゃあ、RESTが目指す目的ってどこ?」なんて事をぼんやり考えてました。 8月の読書会は諸々の理由から中止になった訳ですが、スタッフだけで反省会と称して色々と議論をして*1、そのぼんやり考えていた事が少しばかりクリアになって、考えが少し前進できた気がするので、アウトプットしてみようかと思います。 RESTful読書会の反省会で得た自分的結論 反省会で色々と話をした結果、結局のところ、第0回読書会で話されていた内容に4ヶ月間掛けてやっと実質的に知識が追い付いたんだという事が分かりました…。(^^;ゞ 時間はずいぶんと掛かりましたが、自分の感覚としてRESTfulな考え方が身に付いたという意味では意義があったと思います
次のページ
このページを最初にブックマークしてみませんか?
『Stellaqua - TOMの技術日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く