サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
torufurukawa.blogspot.com
▼ 2016 (20) ► 9月 (1) ► 8月 (4) ▼ 7月 (8) トリガー、行動、ヒャッホウ 活かしにくいのではなくて、単に不在なだけ 創造的な業界 通知を受け取りたいコンテクスト フェイスカラー・ドリブン ゲームしないのに、ひとりぼっちの惑星に課金してしまった Monkey-C とかいうプログラミング言語 デバッグの手伝い ► 6月 (4) ► 5月 (1) ► 3月 (1) ► 2月 (1) ► 2015 (19) ► 12月 (4) ► 11月 (3) ► 10月 (5) ► 9月 (1) ► 7月 (1) ► 3月 (1) ► 2月 (1) ► 1月 (3) ► 2014 (34) ► 12月 (5) ► 11月 (3) ► 10月 (1) ► 6月 (1) ► 5月 (3) ► 4月 (1) ► 3月 (4) ► 2月 (8) ► 1月 (8) ► 2013 (52)
欲しいものを手に入れたり、何かを成し遂げるための心構えや方法論というのがあって、自己啓発書やセミナーで紹介される。何年も前に参加したイベントが、ちょっと意識高めで、そこでも紹介されていた。 「流星理論というのがあってだな」 「何すか、それ?」 「流れ星を見たら、願い事を3回となえるんだ。すると願いが叶う」 「ちょw」 「笑ったね?流れ星が突然見えたとき、とっさに3回も言えるってことは、常にそのことを考えてるってことだよ」 いま考えていることは、成果になる可能性がある。であるならば、考えていることが、誰かに某かの足しなるかも知れない。このところ、テレビ番組と連動するウェブサービスの、要件定義について考えている。 以下は、これまでの経験で、おおざっぱに個人的に認識している課題と解決策の案だ。特定の放送局、制作会社、番組の話ではない。 個数が決まらない 「Facebook Messenger に
「ねーよw」と返事をしたものの、実は話をしたことがあった。そして、会話の内容は、仕事の仕方に、影響を与えていることに気づいた。ありがとうデマルコ先生。 2004年のデベロッパー・サミット、略してデブサミの第1回のとき、会場の廊下にいた。退学と就職の間を彷徨っていた私は、Python ユーザ会のブースの留守番をしていたのだ。 トム・デマルコは、基調講演者だかゲスト・スピーカーとして来日していた。金払っていないので講演は聞いていないし、別にイベント自体の運営には関係なかったのだけど、懇親会の会場に潜り込めた。主催者の翔泳社の人に「デマルコと、話してきていいですよ」と言われて、ひゃっほうってな感じで話しに行った。
キャリアハックのインタビュー記事「エンジニアがクリエイティブ業界で働くべき最大の理由|バスキュール 古川亨のキャリア論」が公開された。こういうところにも、ソフトウェア・エンジニアのポジションがあることを知ってもらえるといいなぁ、という思いでグダグダ話した内容を、記者の白石氏がきれいにまとめてくれた。 タイトルにある働くべき理由や、キャリア論が明示的ではないと指摘された。記事に興味を持った人に対して、続きはブログで、という位置づけで、この文章を書くことにした。 「一般的な問題解決方法と、技術的知識/技能を、自分自身の環境に合った組み合わせで習得/実践することで、エンジニアが提供できる価値が大きくなる領域が存在する。クリエティブ業界はそのひとつだ。」という立ち位置で、インタビューに答え、この文章を書いている。 主語は、私(のようなエンジニア) 人口百人以下の村役場に勤める二十三歳の出納係と、丸
Fitzpatrik と Collins-Sussman「Team Geek」を読んだ。体系化された方法論として書かれているわけではないので、内容をそのまま紹介することが難しい。この本で問題であると指摘されていることのうち、自分がやってきたこと、どう対処しようとしているかを書いておく。 ※ 誤字脱字、分かりにくい表現、スタイルをリライト。ロジックはそのまま。-- 2014/04/24 8時半ごろ で、でたーw 天才じゃないのがばれるのが嫌だから、途中の成果を隠奴〜w Most programmers are afraid to share work they've just started, because it means peers will see the mistakes and know the author of the code is not a genius. これは自分に
10年以上前に書きためた雑文を、Kindle の電子書籍にして99円で販売した。もともと知人がウェブじゃなくて Kindle で読みたい、とうるさく言ってきたので作った。ふと、儲けることはできるのだろうか、と思った。結論からいうと、まったく儲け方が分からなかった。 釣りタイトルで、ブログ記事を書く → はてブ、そこから派生したgunosyから 1000 ページビュー → そのうち1%が購入 → 10冊売上 → ちゃりんちゃりーん という流れを期待していた。
Kindle 本を出版するのに使用した、ドキュメント生成ソフトウェア Sphinx の紹介と、ドキュメント自体の紹介をする。 はじめに Amazon の Kindle Direct Publishing は、手軽に電子書籍を出版するためのサービスだ。特定のフォーマットで電子書籍データを作り、ウェブページで情報を入力、手続きすれば、Amazon の Kindle 本として販売ができる。 先日、拙作を上梓したときには Sphinx というソフトウェアを使った。Sphinx はドキュメントを生成するソフトウェア がある。サンプルをとったことはないけれど、おそらくは主にソフトウェアの技術文書を記述/生成するために使われていると思っている。たとえば Sphinx を使っているコミュニティのウェブサイトは、Sphinx で作られている。けれど別に仕様書を書く以外に使ってもよい。 restructur
生まれてはじめて PyPI にコードを登録した。Python 2.7 と 3.3 で使えるようにするにあたり、ライブラリの実装とは直接関係ないところで、とまどった。現時点での手順を記録しておく。 以下を前提とする。 OS X 10.9.1 (Mavericks) homebrew でパッケージを管理 pyenv, pyenv-virtualenv で OS 上の Python 環境を管理 PyPI に登録するライブラリは Python 2.7 と 3.3 に対応 まず始める shimizukawa によるハンズオン資料と公式ドキュメントを併読しながら進める。基本的な作業はハンズオンでだいたい分かる。とはいえ、あなたが持っているライブラリは、必ずしもチュートリアルどおりではないだろうから、公式ドキュメントのガイドが必要になるだろう。 ところで、ナウなヤングは egg じゃなくて wheel
森博嗣のGシリーズには、赤柳初郎という人物が登場する。この人物の正体の特定を試みている。検討した登場人物、特定するにあたり立てた仮定、候補から外していく過程を残している。 全力でネタバレである。森博嗣の作品群の内容に言及する。未読、読中の人は、そのつもりで、この文書の続きを読む、読まないを判断されたい。 本人による回想や内省発言は、本人は真実であると信じている。 物語の中で、1人だけが赤柳初朗を名乗る。 非現実的な若作りや長寿はない(150歳だけど三十路そこそこに見えることはない。2013年現在の黒木瞳52歳のような見た目はあり得る)。 利害がことなる複数の目撃者がいる描写は、実際に起こっている(西之園萌絵、山吹早月、刑事の近藤、赤柳初朗が一緒にコーヒーを飲んでいるシーンでは、実際にコーヒーが飲まれている)。 赤柳初朗は、他の作品に登場した人物である。 上記の仮定、物語の内容を境界条件とし
Go の型は First-class ではない、ということにゴールデンウィーク最終日に気づき、悶々としています。(何も Go が悪いわけではない) ことの発端は、以下の様な関数を定義したところから始まります。 func getName(x interface{}) string { return reflect.TypeOf(x).Elem().Name() } この関数に、任意の型のポインタをわたすと、型の名前を取得できます。けど、ポインタを渡さなければならないのですね。 var foo *Foo name := getName(foo) foo は使わないのに! 使わないというのはウソですね。けど、ちょっと違うんですよ。まあこれは私がPython 脳だからであって、別にGoが悪いわけじゃない。 何をしたいかと言うとですね、Google App Engine datastore のクエリ
Web API をもつアプリケーションのテストを、Python と requests ライブラリを使って書いています。それはよいのですが、テストが通らなかったときですよ。酔ってますよ、もう、休日に仕事してぜんぜんはかどらなくて。それと、これとは別ですけど。 アプリケーションが Python で書かれていない場合、開発者が Python 環境を自由に使えない場合があります。テストのレポートを再現するためだけに、Python モジュールをインストールしてもらうのも気が引けます。 というわけで、requests を使ったアクセスを、 curl で再現するように hooks に追加することにしました。最初から curl 使えよとか、いろいろあると思いますが、すでにレイヤをまたいで requests 使ってたもので。 import curledrequests as requests request
ブラウザは、実際に GET や POST する前に、プリフライトリクエストというリクエストを発行します。通常これは OPTIONS メソッドです。で、このときのレスポンスヘッダをみて、ブラウザは呼び出す/呼び出さないを決定します。 http://torufurukawa.blogspot.jp/2012/05/http-access-control.html これを実現するのに nginx (1.2.1) の設定で困ったのでメモしておきます。ちなみに、このウェブサイトは Basic 認証をかけます。 http { #... server { listen 8080; server_name localhost; location / { root html; index index.html index.htm; # GET, POST 用のヘッダ設定 add_header Access-
git-flow/hg-flow を使ったブランチ方針に、不満というか不都合というか、気になることが出てきたのでメモしておきます。結論めいたものはありません。
運用中のウェブサービスで、保存してあるデータのスキーマを変えたいときがあります。このとき、プログラムのコードとデータベースの間で互換性が保ちつつ、双方を更新する必要があります。Google App Engine を使ったサービスでのやったことのメモです。 プロパティの増減 最初、こんなデータがあったとします。 from google.appengine.ext import db class User(db.Model): name = db.StringProperty() これでたくさんのデータが保存されている状態になったとしましょう。ここで、プロパティが増えます。 class User(db.Model): name = db.StringProperty() birthday = db.DateProperty() Google App Engine のデータストアには ALTER
なんの自慢にもならないどころか、完全に自戒エントリです。まず、そもそも受け入れテストを自動化する試みは有効だという仮説を持っています。 言葉の定義が曖昧で申し訳ないですが、V字モデルを考えた時に右上のほうにあるテストのことを想定しています。ですが、あまり厳密にシステムテストとの違いとか、パフォーマンスや負荷はとかを区別していません。「右上のほう」くらいを考えます。 要求分析 -------> 受け入れテスト 基本設計 -----> システムテスト 機能設計 ---> 結合テスト 詳細設計 -> 単体テスト コーディング 反復的に、スパイラルになど、とにかく少しずつソフトウェアを開発していくのが、バグ発生のリスクが少ない印象があります。仕様変更にも耐えやすい。そうすると、受け入れテストが自動化されていると、容易にテストでき、要求とことなる状態になったことがすぐわかります。あるいは、要求との差
ソースコード管理でのブランチの切り方を模索してきました。いったん落ち着いたので書き残しておきます。 前提条件は以下のとおりです。 iPhone アプリがアクセスするウェブAPIを開発する。 サーバサイドの開発者はふたり。大阪と東京。 他の案件とかけもち。 行き着いたところ Mercurial git-flow/git-daily に似たブランチ方針 機能追加、開発中機能のバグ修正: default ブランチから、XXX ブランチを切って機能追加/変更し、default へマージする。 リリース: default ブランチから、release/XXX ブランチを切って、ステージングでテスト/修正。終わったら、default と master へマージし、master の先頭を本番サーバにデプロイする。 リリース済不具合の修正: master ブランチから、hotfix/XXX ブランチを切っ
patch はコンテクストマネージャでもあるので、with を使った書き方ができます。with でつくられたブロックの中でだけ、モックが機能するようになります。 >>> from mock import patch >>> with patch('random.random') as m: ... import random ... random.random() # もうモックになっている。戻り値は Mock オブジェクト ... m.return_value = 0.5 ... random.random() # 戻り値は 0.5 ... <mock.Mock object at 0x423ed0> 0.5 >>> random.random() # モノホンの random 関数 0.84432022018162511 with ブロックの中に入った時点で、random.random
mock を使ったニットテストの、シンプルなシーンをまとめました。例として「Twitter アカウントのスクリーンネームを指定し、そのアカウントの最新のツイートの内容を取得する」という機能を実装する場合を考えます。 まず、簡単にユニットテストを書けるような場合から考えます。create_user_timeline_url() 関数を定義し、Twitter アカウントの screen_name を渡すと、そのアカウントのつぶやきを取得するために URL が返される、としましょう。たとえば Twitter アカウントのスクリーンネーム wozozo を渡すと、 http://twitter.com/statuses/user_timeline/wozozo.json が返ってくることを確認します。 実装とテストは以下のようになります。URL のテンプレートを定数にしたほうがいいとかありますが、
大規模ウェブサービスのプラクティスを紹介している、High Scalability の記事「15 Ways To Make Your Application Feel More Responsive Under Google App Engine」を訳しました。 記事は Java 前提で、私は Python で Google App Engine を使っているのですが、それでも面白いなと思ったので、有効な方法は使っていこうとしています。ついでなので翻訳したものを残しておくことにしました。 軽量な査定用フィードバックサービスを提供している Small Improvements が、Performance issues on GAE, and how we resolved them という素晴らしい記事を書いている。どのようにして、ほとんどのリクエストを 300ms から 800ms でさば
2011 Python アドベントカレンダー のエントリです。Python 2 と Python 3 の差異を吸収するラッパ集として six というライブラリを触ってみました。 Python 3 に同梱されている 2to3 というツールは、ひとつの Python 2 のソースから、 Python 3 用のソースを自動生成します。したがって、もとの Python 2 用コードと Python 3 用コードのふたつのバージョンを持つことになります。 一方、six がやろうとしているのは、ひとつのソースコードを Python 2 と Python 3 からも呼び出せるようにすることです。提供されるのは、基本的な定数や、ラッパ関数です。 文字列リテラルのフェイク Python 3 と言えば文字列です。 # coding: utf-8 print(u'うほ') Python 3 ではこれはエラーにな
初めて参加した Python 温泉で、 @voluntas と @aohta に開発プロセスの教えを乞いました。いろいろ教えてもらった中で、実際に手を動かし始めたことを書きます。@voluntas のブログ記事をベースに書いていますが、ふたりに教えてもらったことを混ぜています。
単体テストというのは、本来、あるコンポーネントの依存先に影響されないように、対象をテストします。が、これまでは比較的てきとーで、依存先のテストが通っていれば、依存先を完全に分離せずにやってきました。 これには2つ問題があって、(1) そもそもそれは単体テストではない、(2) 依存先が外部だったらどうするんだ、と。例えば、Twitter からタイムラインをとってくる、とかですね。 def get_user_timeline(user) """タイムラインをとってきて、辞書で返す""" twitter = Twitter() response = twitter.get_timeline(user.id, user.access_token) timeline = [{'text': tweet.text} for tweet in response['tweets']] return tim
@shin_no_suke どういうことなの? (hg)changeset: 164:aedce6151bf9 user: Shinya Okano<...> date: Wed Aug 31 17:23:39 2011 summary: buchoはオワコン ( http://twitter.com/#!/shin_no_suke/status/108831096287920128 より) 昨日で株式会社ビープラウドを退職し、本日より株式会社バスキュール号で働きます。 なんで辞めるの?と聞かれるのですが、因果関係としては、ビープラウドを辞めるからバスキュール号に行くのではなくて、バスキュール号に行くのでビープラウドを離れます。 以前、マーケティングをかじっていたことがあります。プロモーションのためのシステムを開発するという、バスキュール号のビジネス
金曜日に大地震があって、土日は休み、月と火(今日)はもともと有給休暇。明日からは仕事が始まって、いま考えていることを忘れてしまいそうなので、書き残しておこうと思います。 福島の原発が、地震の被害を受けています。で、私は大学院で原子力工学を専攻しました。それで、知人が一部の報道の情報と意見をもとに信じている「状況」と、私なりに判断した「状況」に大きな差があることに気づきました。それで、いやそういうことじゃなくってね、とか、あの記者の人は怒鳴ってるけどね、とか補足をすることになったわけです。 もともと原子力のことを書こうかと思ってたんですが、メディアが、データをわかり易くして、受け手にとって意味ある情報として伝える、ということをやってないとか、そもそも原発とはだなとかいう話は、すでに存在しているので置いておきます。核となる問題のひとつは「見積り」や「予測」に対する、不適切な要求である、という仮
LabVIEW で、複数の並行処理を開始/停止させるアプリケーションを開発する機会があったので、メモ。 このアプリケーションは、画面を操作するとデータの集録を開始したり終了したりする。あるいは、データ集録開始後、一定時間が経過すると、自動的に集録を終了する。こういうのは、Producer/Consumer パターンで実装するのが、LabVIEW では定石みたいになっていると思う。 ところがサンプリングレートやタイミングが異なるような、複数のデバイスからデータを集録するようなときは、ちょっとだるい。 たとえば アナログ電圧のデバイスから、サンプリングレート 10k/s で 0.1秒ごとのかたまりで取得 シリアルポートに繋がった電流計から、0.7秒ごとに電圧を取得 CAN ポートにメッセージが到達するごとに集録(いつ届くかは分からない。届かないこともある) デジタル信号のデバイスから(以下略)
このページを最初にブックマークしてみませんか?
『Pyhton 3.x対応のフレームワークQP - Even More Addicted to Indentation』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く