サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
voluntas.hatenablog.com
Erlang/OTP 80% くらいは Erlang/OTP 書いてる。 最近はパッケージ化が面白い。rebar generate と relx 併用している。さらに Linux ディストリ事のパッケージングとかを Docker でやったり。 18.0 が次にリリースされて順調に進化してる感じがしている。来年も少しでも貢献していきたい。 Python 外部テストツールとして使う以外はまったく使わなくなった。 nginx + lua のテストに py.test と requests を使っている。そういえば Ansible もか。そのくらい。 ほぼほぼ使わなくなったといっても過言ではない。 Lua Lua の仕事が意外にあったので、会社の第一弾製品として作った。 luli Lua言語用ソースコード静的解析ツール 継続的に Nginx + Lua のお仕事があるので、書いている。ただ最近はプロ
mochiweb を仕事でも使っているので特に困っていないのですが、せっかくなので cowboy を触ってみることにしました。 ちなみに、作者の @lhoguin が来月あたり日本に来るらしく、日本の Erlang な人と会いたいと行っているので興味ある人は是非。 更新 2012-09-22 cowboy の新しい API に対応しました オススメ! http://d.hatena.ne.jp/pocketberserker/20120921/1348225277 環境と注意 Erlang: R15B02 前提です、出たばかりですが色々細かい修正がされていたりするので是非インストールしましょう。 github 今回のお試しアプリは github においてあります。 https://github.com/voluntas/snowflake/tree/feature/cowboy 動かすとき
Clojure のビルドツールといえば leiningen です。 https://github.com/technomancy/leiningen https://github.com/technomancy/leiningen/blob/stable/sample.project.clj これが無いとやってられません。というか凄く良く出来てます。 さて leiningen の lein uberjar というコマンドはなにやらスタンドアローンで動く jar ファイルを作ってくれるようです。 ということは Ring を使ってみたこの間のサンプルもスタンドアローンで動くようになるということです。 さっそく試してみました。 (:gen-class) を設定する なにやら (:gen-class) を設定しないといけないようです。ということで設定してみました。 (:gen-class) が何し
ZMQ は非同期が売りですが、まずは同期で書いてみます。 とりあえず書くと言えば Echo サーバ、ということで書いてみました。 REP 側は pyzmq のサンプルにあったコードそのままです。 REQ 側 zmq.REQ で Connect します。ポイントは REP 側を先に起動しておくというところでしょうか。 import zmq ctx = zmq.Context() sock = ctx.socket(zmq.REQ) sock.connect('tcp://127.0.0.1:5555') sock.send('hello') print sock.recv() 値が返ってきたら画面に表示して終了です。 REP 側 ioloop という zmq の機能を使います。応答があった場合通知してくれる POLLIN を使います。 import zmq from zmq.eventloo
オライリー様から Python & AWS クックブックを献本頂きました。 Python & AWS クックブック http://www.oreilly.co.jp/books/9784873115436/ 個人的には boto では S3 と Glaicer しか触ってないので、とても楽しみでした。 概要とセットアップ この本は EC2 と S3 を boto から扱う際のクックブックです。 boto のセットアップが github、ソース、pip、easy_install、virtualenv まで書いてあって至れり尽くせりです。 さらにはアクセスキーを /etc/boto.cfg または ~/.boto に書く話が書いてあって好印象です。 EC2 クックブック 正直言いますと EC2 は AWS Console からしか触ったこと無い情弱だったりします。ただ、この本を読んであぁこうし
追記 あまり好ましくない作業が行われていたと判断したので、消しました。自分も見れません。 共同編集者の皆様、とても楽しい情報をありがとうございました。 原文 元ネタは @sifue さんの転職ブログ。 株式会社インクスを退職して株式会社ドワンゴに入社しました - しふーのブログ http://d.hatena.ne.jp/sifue/20121003/1349279980 ここで、比較表が出ていて、内容が完全に技術者よりでぐっときたので Google Docs で公開してみた。 項目は @sifue さんの完全にパクリ。 https://docs.google.com/spreadsheet/ccc?key=0AgsKtP8AY5SzdGVCbWJ5d2FJbmdWaV9yR1liSGFrU0E&pli=1#gid=0 公開したのが夜中の 2:00 だったにも関わらず張り付いている人の多い
函数プログラミングの集い 2012 in Tokyo - [PARTAKE] http://partake.in/events/9a5f18bf-ca0c-48cd-a050-8a564c1ab0d9 継続開発のススメ Erlang/OTP 編 — Gist https://gist.github.com/9ee65f0dfa9b7dd78fde 応用セッションの一発目として「継続開発のススメ Erlang/OTP 編」という内容で発表してきました。 資料は gist で書いて事前の共有しておきました。 発表はそれをなぞりつつも基本的にはアジェンダだけ一緒であとはアドリブで話をしてきました。 そのため、同じ事を何度も言ってしまっていたっぽいです。すみません ... 。 また 3 % くらいしか Erlang が入って無く、 ほとんど開発手法や方針などの話で退屈させてしまった気がします。 質
基本的すぎることしかやってないのであまり参考にはなりません。 ただ触ってみたよレベルです。それよりはなぜ LXC を検討しているのかなどの目的を書き出し中です。 なんで LXC ? Xen 大好きですが、Solaris コンテナを使ってた身としてはコンテナ系を使わないわけにはいきません。 コンテナ系はオーバヘッドがほとんど無いので負荷試験とかに便利です。あと clone が出来る。 ただネットワーク周りが面倒なイメージはあったりします。あとセキュリティが怪しいらしいですね LXC 。 基本的には社内で動かすビルドやテストサーバ向けに使おうと考えています。 それも常時起動している系での使用を考え中。 いったんビルド環境をぽこぽこ増やしたいなと思ったときに既存環境を clone してさくっと建てられるっぽいので。 なんで Ubuntu ? RHEL に LXC が入ったのは 6.3 からです。
変更履歴 2012-06-24 ドキュメントの所に *diag シリーズについて追記 概要 開発があればリリースがあり、リリースが終われば、メンテナンスがあり、さらに開発があります。プロダクトが EOSL (End Of Service Life) を迎えるまではこれを続ける必要があります。 去年の 8 月に「継続開発のススメ」というので、やっていることをまとめたのですが約 1 年経ってもう少し細かくまとめて見ようと思いました。基本的には自分がいる環境を前提に書いてます。 継続開発のススメ http://d.hatena.ne.jp/Voluntas/20110823/1314036482 開発スタイルは常に変化し続けていくべきだと思っています。これだ、というのを作らないのが一番良い開発スタイルでは無いかなと。 脳内を書き出しているので、日本語がおかしい上に一貫性が無いと思います ...
Sphinx で会社の製品サイトを作って 4 ヶ月以上過ぎました、実際に運用してみた感想などを。 前提 デザイナー @kinofumi に依頼して、Sphinx の専用テーマを作って貰いました。@kinofumi は Jinja2 も使いこなしてしまったりとデザイナー?なのか怪しいですが、とてもステキなサイトが出来ました。 商用製品サイトなので、とにかく見やすいこと、知りたい情報が見つかることが第一に作って貰いました。 リリース環境 S3 にデプロイしてパーミッションを Public にしています。URL は DNS 指定しているだけです。 それ以上は特にやっていません。 費用 アクセスが 1 日 100 人未満です。そもそも 1000 人も見に来るようになったら問題です。 で、実際いくらかかったのよ、という話しです。 今のところ三ヶ月連続で $ 0.03 で、今月も今のところ $ 0.0
もちろん rebar 前提です。 OMake とか watch コマンドとか色々ありますが、自分は Python の watchdog を使っています。 watchdog は Python で出来てる監視ツールです、pip でインストールしましょう $ pip install watchdogMakefile ... 色々省いてます .PHONY: test compile: @./rebar compile skip_deps=true xref: compile @./rebar xref skip_deps=true clean: @./rebar clean skip_deps=true test: xref @./rebar skip_deps=true eunitwatchdog はイベント系ライブラリなのですが、シェルコマンドとしても使えます。 監視は *.erl と *.h
github に移行しました。 pyfes/201207.rst at develop · pyspa/pyfes · GitHub https://github.com/pyspa/pyfes/blob/develop/201207.rst
MBA なのでスペックがしょぼいです。( Core2Duo 1.6 / 4G / SSD 128 ) Erlang R15B Python 2.7.2 追記 2012-03-19 simplejson を 2.4.0 にアップデート tokoroten.json を置き換える 結果 simplejson は C 拡張アリです encode(decode(data)) を 100 回ほど回してみました モジュール名 バージョン/ハッシュ マイクロ秒 simplejson 2.4.0 289527 jiffy 12bf41ee61 391444 mochijson2 938d5c8190 6871681 ベンチマークに使ったコード https://github.com/voluntas/snowflake/tree/feature/json かなり適当に書いたので、間違っているかも知れません。
概要 Broker を間に置いた REQ/REP パターンを作ってみます。 基本的にはどう頑張っても 1:N しか出来ないのですが中間に Broker をおくことで、 N:N を実現しています。 実現したいこと REQ と REP どちらかの 1:N 構成ではなく、N:N 構成をする ただ、今回は REQ 側はめんどくさいので 1 構成になっています。 構成 1 つの Broker に対して複数の REP と REQ がぶら下がります。Broker が死ぬと破綻します。 broker.py Broker を実現するには ROUTER と DEALER を使います。 簡単に言えば集約して、再度配るといった感じです。 Broker は ROUTER と DEALER 両方で bind しています。 import zmq from zmq.eventloop import ioloop loop
PUSH/PULL はあまり面白く無さそうなので、PUB/SUB を試してみました。 PUB PUB 側が bind します。 SUB は定期的に PUB に接続を見に行くので、少し寝てあげる必要があったりします。 import time import zmq ctx = zmq.Context() sock = ctx.socket(zmq.PUB) sock.bind('tcp://127.0.0.1:5555') time.sleep(1.0) sock.send('hello') SUB SUB が PUB に繋ぎに行きます。今回はルートは空なので FANOUT で、全員に配ります。 普通の MQ でもこれは出来ますね。 import zmq from zmq.eventloop import ioloop loop = ioloop.IOLoop.instance() ctx =
Web アプリを仕事ではほとんど書いたことが無かったのですが、Flask を仕事で使う事にしたので、書いてて感じた Flask の使いどころを。 追記 コメントに色々な意見を頂いておりますので、是非そちらも。 がっつり使われた方の感想 Flaskを1年仕事で使った感想 - kawaken’s blog http://d.hatena.ne.jp/kentaro_kawano/20120115/1326612808 結論 とりあえず箇条書きで ... データベースサーバとの接続が前提なら、 Flask を使うのはやめる Flask-* という Flask の拡張を使う時点で、Flask を使うのはやめる 大規模で Blueprints を使う前提なら、Flask を使うのはやめる 小さなアプリでプラガブルな仕組みを自分で作るには良い パーミッションは Flask-Principal が良さそ
商用の製品紹介サイトに Sphinx を導入した事について書いてみます。 結論 とりあえずの結論 非技術者でも HTML を知らずに気軽に更新できる うまくテンプレート化されているのでページ追加が簡単 静的 HTML なのでリリースが簡単 結局画像の修正が大変 文章中心のサイトじゃないと意味が無い 非技術者が Windows/Git という組み合わせを覚える必要がある 枠組みをデザイナに作ってもらえれば、社内で色々好き勝手にいじれる 導入 製品の紹介サイトを作るというプロジェクトがありました。今までは CMS 等を使ってきていたのですが、今回は思い切って Sphinx を導入することにしてみました。 Sphinx のテーマを作ってもらえれば自社内で更新が気軽に出来るし、メンテナンスコストも低くなると考えたからです。 まず、社内に Web デザイナがいないため、誰かに白羽の矢を立てる必要があ
注意 PDF 出力を前提とした話しになっています OSS のドキュメントとしてはよく使われておりますが、実際に仕事の道具として導入してみた人はあまりいないのではないでしょうか。 導入のきっかけや、実際導入した際の環境などを書いて行ければと思います。 注意事項としては Sphinx を自分自身はまったく使いこなしていないので、Sphinx やそれらの「技術的」な話しは出来ません。そこを期待されている方は @aohta に「話しを聞きたい」とかリプライ飛ばすともしかすると書いてくれるかも知れません。 ドキュメントツール導入のきっかけ もともと Word が使いづらく reST を自分個人で使い続けてました。使い始めたきっかけは @everes が使っていたからだったと記憶しております。一人でほそぼそと使っていましたが、rst2pdf がきっかけになって社内で使ってみたらどうか?という話が出てき
heroku コマンドが入っていない場合は gem install heroku で入ります。 まずは webmachine を持ってきて、webmachine ベースのアプリを new_webmachine.sh で作ります。 $ cd /tmp $ git clone git://github.com/basho/webmachine $ cd webmachine $ make $ ./scripts/new_webmachine.sh heroku_webmachine /tmp $ cd /tmp/heroku_webmachine $ make それが終わったら、git 環境を作って heroku インスタンスを生成します。 その後、Erlang アプリが動く buildpack を設定に指定します。 heroku-webmachine というのは今回使っている名前です、基本的
ちらしのうらです。 自分は誰かに憧れてということはほとんど無いのですが、今も昔も憧れている人がいます。 その方はハッカーです。初めての知ったのは学生時代に Python を勉強し始めた頃でした。 当時 Python を触っている人はほとんどおりませんでしたが、その頃触っている人は最低一度はお世話になっている人です。ウェブサイトを読んで、勉強させて貰ってハッカーってかっこいいなぁって思っていました。 就職してから運良くその方に会うことが出来ました。初めて見たときは感動しました。 「おぉ、これが、ほんものか ... 」なんて感じです。 なんていったって、ずっとウェブだけで見ていた人が目の前で HHK Pro + MBP でカタカタ作業しているのを目の当たりにしたのですから。 ハッカーに憧れて、プログラマになりました。 今の自分はカッコイイコードより、シンプルなコードが良くて、楽しい事よりお金が
ジェネリッククラスビューのテストを試行錯誤しながら書いているのですが、テスト書いているとやはりカヴァレッジを見ながら書きたくなりますよね。 ということぐぐったら Django + Coverage を上手いことやってくれる django-coverage というのがあるようです。 $ easy_install coverage django-coverageあとは settings.py にいくつか設定するだけです。 週間でcore というアプリにフレームワークっぽいのを作るようにしているのでそこの views と tests を追加しました。 カヴァレッジは .cover というディレクトリに出力してもらいます。.gitignore に追加するのをお忘れ無く。 COVERAGE_ADDITIONAL_MODULES = ['core.views', 'core.tests'] COVER
テストを書くときに、外部の HTTP API を叩く処理が組み込まれている場合は、何かしらモックが必要です。 どう書くのがスマートなのか良くわからないので色々試してみる 準備するモノ python 2.7.x mock simplejson requests nose covarage テストのデファクト あまりまとまってるのがないので、まとめておきます。 テストランナーは nose または py.test nose はプラグインがステキ py.test はなにやら色々嬉しい事があるらしい モック/スタブは mock テストは unittest (unittest2) カヴァレッジは covarage ? これは良くわからず、基本 Jenkins に食べさせらるタイプで出力できればおk この辺が今のところデファクトでしょうか、ご意見お待ちしております。 mock patch を使うと綺麗に
どれを使うのが王道なのか良くわかりませんが、調べてみたらこの辺かなというのをメモ leiningen さえあれば Clojure すらインストールする必要はありません。あとは project.clj に書くだけ。 leiningen https://github.com/technomancy/leiningen clojure https://github.com/clojure/clojure ring https://github.com/mmcgrana/ring compojure https://github.com/weavejester/compojure clj-json https://github.com/mmcgrana/clj-json lein-ring https://github.com/weavejester/lein-ring ring-mock htt
とりあえず書き出してみました、これから色々修正します。 こうしたら良いと思う、こうしたら良かったの両方がごちゃごちゃっとなってますが、あくまで考え方なので銀の弾丸ではありません。 #bucho Python 温泉で @torufurukawa と色々話しをしました、いい機会なのでまとめてみます。 自分が色々やっている中で、こうした方がいいと思いますという内容がほとんどです。 @torufurukawa がエントリあげてました、実践的な話しなのでオススメです。 Even More Addicted to Indentation: Python 温泉で開発プロセスの教えを乞う 銀の弾丸はない 開発手法にベストプラクティスはありません。環境、仕事内容、人によってそれぞれでしょう。 そのため、今回書かれていることが銀の弾丸になる事はありません。 開発手法は固定するモノではなく、常々変化するモノです
Riak 1.0 における Secondary Index の制限 マルチインデックスクエリーがない SQL っぽいクエリー言語がない ソート/ページネーションがない 文字列と数値のみ バックエンド DB は LevelDB のみ GitHub からソースを取って来てビルドする 重要なのは 1.0 ブランチを使う事です $ git clone git://github.com/basho/riak.git $ cd riak $ git checkout --track origin/1.0 $ make rel バックエンドデータベースに LevelDB を使うようにする app.config ファイルの riak_kv セクションの storage_backend を変更する必要があります。 設定を変更する $ vim rel/riak/app.config {riak_kv, [ %
いつも告知ばかりなので、たまには。 始まり 最近 Clojure を勉強しています。Clojure というのは JVM 上で動く Lisp に影響を受けた言語です。 JVM 上で動く言語といえば Scala だと思いますが、なんか興味が持てなかったので一切手を出していません。 さて、なぜ Clojure かという話しですが、最初は単に新しい言語を覚えたいという理由からです。 仕事では Erlang/Python をメインで書いています。特に Erlang は商用製品で書いているので、かなりガッツリやっています。仕事で使う言語は上記に加えて C くらいです。ただ C は読めれば十分なのでそれ以上は困っていません。 個人的に仕事で使えない言語は覚える気が無いので。趣味で書くのであれば Python で十分でした。 Clojure との出会い Clojure が最初に気になった理由は Herok
日時 2012-03-17 で 9:00 開場で 10:00 スタートの予定です。遅くても 20:00 までには解散します。 懇親会 主催者側では開催しません。各自でご自由にどうぞ。 場所 今回もオラクル様のご厚意により、オラクル青山センターの会場を提供して頂く予定です。 参加費用 無料です。 開場時間 9:00 ~ 10:00 と 12:45 ~ 13:15 の二回だけです。 受付 受付にて Zusaar の参加者 ID とチケット番号を口頭にて確認させて頂きます。 運営 基本 @voluntas の独断と偏見で色々決まっていきます。ご了承ください。 主催 @voluntas ハッシュタグ #pyfes お手伝いして頂いている方々 会場提供 @yokatsuki (Oracle Japan) togetter @blaue_fuchs スチール @hiroki_niinuma お手伝いと
正式に募集開始を致しました。応募お待ちしております。 お手数ですが、募集サイトにて確認していただければと思います。 募集サイト シニアデベロッパーを 1 名募集します http://omake.accense.com/wiki/Recruit 会社概要 会社のウェブサイト http://accense.com/ 会社概要のページ http://accense.com/company/profile/
もともと 1.0 系くらいしかしらない Django 1.3 系を触っていて見知らぬものが出てきて使ってみたのでメモ。 今までのファンクションベースのジェネリックビューからクラスベースのジェネリックビューになった。 なったといってもファンクションベースが使えなくなったわけでは無い。 ファンクションベースは融通が利かなくて、ほんと特定用途にしか使えなかったのだけれど、クラスベースはかなり何でも出来る感じ。 ただ ... mixin で実装されているのでコード追いかけるのがめんどくさすぎる ... 。 更新履歴 get がいらなかったので削除 クラスベースを使った場合の方針 作ってみて感じたのは、クラスビューベースのジェネリックビューを使ってそのプロジェクト用の簡単なフレームワークを作っていくというのが、うまいやりかたの用です。 今回はあまりクラスを作りませんでしたが本来ならもう少し細かくクラ
次のページ
このページを最初にブックマークしてみませんか?
『Twisted Mind』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く