タグ

ブックマーク / taichino.com (15)

  • nodejs+SSEを試してみる – taichino.com

    yuiseki
    yuiseki 2014/05/14
  • Google Glass買った – taichino.com

    Google Glassはまだ一般には販売されてなくて、あらかじめExplorer Programに申し込んでおいて、枠が空いたらメンバーに招待される感じになっています。しかもアメリカに住所がないと買えません。僕は1年くらい前に申し込んで、ようやくInvitationが送られてきました。まぁ1500ドルとか笑えない金額なんですけど、せっかくアメリカに住んでるし、ウェアラブルコンピュータが次のトレンドっぽいし、Androidも覚えたいし、ボーナスも貰ったし、まぁいいかというので買いました。 開封 家に直接送ってもらう事も出来るんですけど、僕はチェルシーマーケットにあるGoogleのオフィスに取りにいきました。そうするとフレームの調整とか最初の設定とかアップルストアでいうところのジーニアスバーのノリで教えてもらえます。まぁ英語キツかったですけど。実際はその場で開封したんですけど、以下は家でもう

    Google Glass買った – taichino.com
  • Celeryでタスクをスケジュールする – taichino.com

    先ほどの記事の続きです。Celeryでcronの代わりにタスクのスケジュールをしたいという話です。 先ほどの記事でも使ったtasks.pyが以下です。myappの中に配置しています。 # myapp/tasks.py from celery.task import task from celery.log import get_default_logger @task def add(x, y): logger = get_default_logger() logger.info('add called') return x + y 早速このタスクをスケジュールしてみましょう。settings.pyに以下を追記します。CELERYBEAT_SCHEDULEに登録したいタスクを記述していく感じです。簡単ですね。この例では30秒置きにタスクを実行します。 from celery.schedul

  • DjangoでCelery + RabbitMQを使ってみる – taichino.com

    Djangoでタスクをスケジュールしたいなっていう時に、今まではcronで処理してたんですけど、cronで処理するとシェルから叩けるようにコマンド用意する必要があったり、処理が散らばったりして気持ちが悪いなと思ってたんですけど、何気なくStackOverflow見てたらいい感じの質問が見つかりました。 一番人気の回答はcron使えや!っていう残念なものなんですけど、2番目の回答にCelery使ったら良いよって書かれてて、セロリか…などと思いながら調べてみるといい感じだったので使ってみる事にしました。CeleryはPythonで書かれたジョブキューで、バックエンドにはRedisとかMongoDBとか他にも色々使えるみたいですが、デフォルトにはRabbitMQが採用されています。Celery単体でも使えるのですが、DjangoやPylonsなどに組み込むためのモジュールも用意されていて、タスク

  • 画像を特徴色を調べる – taichino.com

    ちょっと画像の類似度を使って分類実験したいと思います。 それでどうやって画像の類似度を測ろうかなぁと悩んだのですが、その画像を代表する幾つかの色でパレットを作って、その距離でもって類似度にするのが簡単そうなのでやってみることにしました。 なお画像の特徴色は正式な言葉ではありません。英語だとDominant Colorという単語はあるようですが、対応する日語はわかりませんでした。この記事ではDominant Colorの意味で特徴色と書きたいと思います。 Median Cut じゃあどうやって特徴色を抜き出そうかなと色々調べていると、よくよく考えてみると当たり前なんですが、画像の減色処理で同じような事が行われているというのが分かりました。そして減色処理で使われてるらしいアルゴリズムにMedian Cutというのがあります。 Wikipediaに説明が無いので、ざっと書くと以下のようなアルゴ

    yuiseki
    yuiseki 2013/03/18
  • Pythonの連続forループが読めない – taichino.com

    入門自然言語処理を読んでいると以下のようなコードがやたらでてきますが全然読めるようにならないので覚え書きです。for文が連続して2回来てます。StackOverflowにも同様の質問があがっています。 all_tags = [tag for article in articles for tag in article.tags] これは記事の配列から記事につけられているタグの一覧を取得するコードで、forループを分解して書くと以下のようになります。 all_tags = [] for article in articles: for tag in article.tags: all_tags.append(tag) 何が気持ち悪いかというと左から順にforが処理されているのに、配列の要素になる最後の式が一番左にあることです。一番左のtagが最初のfor ~ inではなく、2つめのfor ~

    yuiseki
    yuiseki 2012/08/20
  • PythonでGoogleカレンダーのAPIを叩く – taichino.com

    ちょっとカレンダーを使った実験をしたくてGoogle CalendarのAPIを叩いてみたのですが、何度かバージョンが変わっている事もあって、少し手こずったのでメモしておきます。 まずAPIを叩く前に、https://code.google.com/apis/console/ にアクセスして使用するサービスを有効にしておきます。 現時点の最新APIバージョンは3なのですが、このバージョンのAPIを叩くにはgoogle-api-python-clientモジュールを使います。gdataという如何にもなモジュールもあるのですが、これは古いバージョンのAPI用なので注意しましょう。 $ pip install google-api-python-client OAuthの認証周りが何となく複雑で面倒な気がしますが、コードを見ると別に特に難しくはないですね。基的な処理の流れは以下の通りです。OA

    yuiseki
    yuiseki 2012/05/23
  • Pythonで日本語を含んだリストと辞書をpretty printしたい件 – taichino.com

    Pythonでコード書いてると、1回は残念だなぁと思うポイントとして表題の件があると思います。具体的には以下です。 # リストも辞書も出力がお世辞にも良いとは言えない。。 >>> print ['あ', 'い', 'う'] ['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86'] >>> print {'title':'ねじまき鳥', 'author':'村上春樹'} {'author': '\xe6\x9d\x91\xe4\xb8\x8a\xe6\x98\xa5\xe6\xa8\xb9', 'title': '\xe3\x81\xad\xe3\x81\x98\xe3\x81\xbe\xe3\x81\x8d\xe9\xb3\xa5'} 日語がバイト表現な上、全要素が1行で表示されています。これではちょっとprintデバッグするにも萎えますよね。複雑

    yuiseki
    yuiseki 2011/08/23
  • iPhoneでOpenCV(2.2以降)を使う – taichino.com

    以前も同じ内容を書いたのですが、OpenCVの開発は大変活発で最新版を使おうと思ったら色々つまずいたので再度エントリを書いておきます。前回はniwさんのエントリをなぞっただけだったので、今回は自力でライブラリのビルドをしました。手元の環境はSnowLeopard + iOS4.2 + OpenCVのリポジトリヘッド(2.2以降)です。 まずOpenCVは正式にiOSをサポートしていません。(androidはしてるんですが。)iOS環境では一部の機能を使えないため、使える部分を切り出してビルドするというのがiPhoneOpenCVを使うということです。使える部分を切り出してビルドをする為のスクリプトがniwさんの記事などで紹介されているのですが、構成が変わる度に他の人に頼るのはどうかという事で自力でビルドしてみようと思いました。 ライブラリの生成手順は以下になります。 CMakeを使ってX

    yuiseki
    yuiseki 2011/02/27
  • 久々にC++使ったら進化してて素敵になってた件 – taichino.com

    最近、数年ぶりにC++を触っているのですが、いつの間にかかなり使いやすくなっていました。まだ全容は把握できてないのですが、とりあえず印象に残った以下の項目について書いてみたいと思います。 BOOST_FOREACHとautoですっきりループ tupleで無くなる無駄な構造体 #pragma onceで楽々インクルードガード std::functionとlamda関数でコンパクトなコード typeidでリフレクション 主にC++0x周りの話だと思っていますが、勘違いしている可能性も高いです。 前置きですが、エントリ内のコードはすべてgccの4.5.0で動作確認を行っています。(mac portのgcc45パッケージをインストールしました)。またビルド時にはc++0xの使用を明示する必要があります。 $ g++-mp-4.5 -std=c++0x main.cpp 1. BOOST_FORE

    yuiseki
    yuiseki 2011/01/15
  • pythonのORMを色々試してみた – taichino.com

    そろそろpythonでもSQLを直に書くのが面倒になってきたので、O/Rマッパーを探してみたところ、幾つか種類があったので有名どころを使ってみることにしました。今回試したのは以下の4つです。 SQLAlchemy SQLObject Elixir Storm まず用途についてですが、僕はテーブルスキーマはSQLで直に書きますので、ORMでDDLを扱うつもりはありません。DMLを簡単に扱いたいというのが一番の目標です。そこで予め作成して置いたテーブルに対してCRUD操作のし易さを比べてみました。比較に使用したのは以下のテーブルです。 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `price` int(11) DEFAULT NULL, `isbn

    yuiseki
    yuiseki 2010/11/01
  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

    yuiseki
    yuiseki 2010/09/12
  • BeautifulSoupでスクレイピングのまとめ – taichino.com

    何度かBeautifulSoupについては書いているのですが、未だに使い方が覚えられずにイライラします。仕方が無いのでまとめて置く事にしました。BeautifulSoupはHTMLから情報を取得するだけ無く、HTMLの編集もできますが、ここではスクレイピング用途のみに絞っています。 使用するのは以下のHTMLです。 このHTMLを使って色々と情報を取得したのが以下です。覚えるべきはfindAllだけです。注意する必要があるのは、textを指定した場合にタグオブジェクトが取れずに、テキストオブジェクトが取れるので、一旦parentで親のタグ取りましょうという事と、正規表現で条件指定する場合は、re.compileで正規表現オブジェクトを渡すという事位ですか。 #!/usr/bin/python # -*- coding: utf-8 -*- import re import urllib f

    yuiseki
    yuiseki 2010/07/22
  • Pythonモジュールをダウンロード数でソートするPyPI Ranking作った – taichino.com

    CPANのpython版であるPyPIを見ても中々どのモジュールを使えば良いのか解らないなぁと思ったので、ダウンロード数でソートするサイトを作ってみました。名前はPyPI Rankingです。ややアレな響きがありますが、致し方ありますまい!当はDjango-nonrelかKayframeworkを使いたかったのですが、app-engine-patchの練習用に取得したアプリケーションIDを使い回す関係で、仕方なしにapp-engine-patchを使っています。 アクセスはこちらから。 基的にはダウンロード数でモジュールリストをソートしているだけです。一応タグごと作者ごとでもソートできます。最近は割とpythonには慣れてきているつもりだったのですが、上位に出てくるモジュールをことごとく使った事が無くて、まだまだ精進が足りないなぁと実感しています。 ちなみに現時点のダウンロード数で上位

    yuiseki
    yuiseki 2010/05/19
  • pythonでtwitterのStreaming APIを使ってみた – taichino.com

    twitterのように更新頻度が高いサービスのAPIはポーリングとあまり相性がよくありません。どうせtwitter API使うプログラム書くなら、リアルタイムなイベントベースっぽいAPIの方が色々と都合が良いので調べてみました。なんとなくXMPPに対応してる気がしてたんですが、実際はStreaming APIという独自のインターフェースが用意されていました。 Streaming API自体はただのHTTPリクエストで、リクエストのコネクションを張りっぱなしにして、都度データが流れてくる様な形になります。見るからに相性が良さそうなのでgeneratorで書いてみました。この例では幾つか種類があるStreaming APIの中からfilterを使っています。 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import base64 i

  • 1