orangain flavor

じっくりコトコト煮込んだみかん2。知らないことを知りたい。

Rubyによるデザインパターンを読んだ

恥ずかしながら10年以上プログラミングをやっていて、今までちゃんとデザインパターンを勉強したことがありませんでした。 それぞれのパターンはなんとなく知っているけど、ちゃんと理解できてはいないという状態でした。 デザインパターンを勉強しようとし…

Mac OS X 10.9.2でGitHubにアクセスするとサーバー証明書のエラーが発生する場合の解決策

問題 Mavericks の最新のアップデート(10.9.2)をインストールした後、Google ChromeでGitHubにアクセスした時に、SSLサーバー証明書のエラーが表示されるようになりました。 このように「実際の github.com に接続できない」と表示されます。 アドレスバー…

Python/FlaskアプリからOAuthでGitHub APIを使う

このようなサンプルが意外と見つからなかったので作りました。 GitHub API GitHubはWeb API を提供しており、リポジトリやユーザーなどをAPI経由で取得・操作することができます。 執筆時の2014年2月現在では、v3とbetaの2つのバージョンがあり、デフォルト…

unattended-upgradesはインストールしただけでは動かない

2018-06-17追記: パッケージの自動削除について追記しました。検証環境はUbuntu 16.04 LTS x86_64です。 ということを知らなかったので、Debian/Ubuntuでの自動アップデートについて改めて調べてみました。 動作を確認した環境は、Ubuntu Server 12.04 LTS x…

iTerm2でSolarizedを使うと一部の色が灰色になってしまう問題の対処法

iTerm2でSolarizedの配色を使う場合、以下の記事が参考になります。 のびーの食っちゃね~だらだらな日々。食っちゃ寝生活してても意外と平気だったりする。 : ターミナル (iTerm2) な Vim を Solarized カラースキーマで! ターミナルをiTerm2に換えた: 黄…

Ruby製アプリじゃなくてもTurnipで自動受け入れテストがしたい

Python製のWebアプリケーションの自動受け入れテストをしたくて、調べてみました。 Ruby界隈だと、最近ではCucumberに代わってTurnipというツールが流行っているみたいなので試してみました。 (c) .foto project 自動受け入れテスト用のライブラリ Rubyで自…

PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる!

2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含む…

HerokuにDjangoアプリケーションをデプロイしてもcollectstaticが実行されないことがある

【2014年6月3日追記】この後、ビルド時にデフォルトで環境変数を参照できるようになったため、現在この問題は発生しません。 user-env-compileも廃止されました。 See: App environment available in all builds | Heroku Dev Center はじめに Heroku では、…

2013年を振り返って

2013年が終わるので、振り返っておきます。今年は以下の点が良かったです。 サービスの開発を継続できた 継続的デリバリを実践できた ブログ記事の執筆、翻訳ができた 良かったこと1:サービスの開発を継続できた 以前から趣味でWebサービスを作ったりしてい…

はてなブログでソースコードの配色をSolarizedにする

はじめに 以前から自分のブログに書いたソースコードが読みにくいと感じていました。他所のソースコードが読みやすいブログを眺めていたところ、 Solarized という有名な配色があることを知りました。 良さげだったので、このブログのソースコードの配色をSo…

Chef SoloでFluentd + Elasticsearch + Kibana3をインストールする

はじめに Fluentd + Elasticsearch + Kibanaが良いという話をよく聞くので、Chef Soloでサクッと環境を作ってみようと思ったら意外と苦戦したので記録を残しておきます。 結論 Kibana 3を簡単にセットアップできるChefリポジトリを作成しました。 https://gi…

Dockerを使ってJenkinsのジョブごとにテスト実行環境を分離する

はじめに JenkinsでJVM上で動かない言語(PythonやRubyなど*1)を使っていると、ジョブごとに環境が分離されていないことが問題になる場合があります。 Pythonにおける virtualenv やRubyにおける Bundler を使えば、ジョブごとに利用するライブラリを分離す…

Djangoでメモリに乗らないサイズのDBを扱うときに気をつける点

はじめに Djangoでメモリに乗らないサイズのデータベースを扱うときに、気をつけるべきポイントをまとめます。メモリを大量に消費していつまで経っても処理が終わらなかったり、OOM Killerに殺されたりといった悲しい結末を回避できたら幸いです。 データ量…

Groongaで複数のトークナイザを使い分ける方法

はじめに 全文検索エンジン Groonga を使っていると、トークナイザによる検索結果の違いを比較したくなる時があります。 しかし、検索時に利用するインデックスを明示的に指定する方法は、現時点ではドキュメント化されていないようです。 4.7.2. インデック…

Opscode Community Cookbookをオーバーライドする方法

はじめに Chefを使っていてOpscode Community Cookbookに不満がある場合、フォークするのではなくオーバーライドすべきだと言われています。 ChefのCookbookのベストプラクティス | Ryuzee.com ChefConf 2013: Beginner Chef Antipatterns しかし、オーバー…

Herokuの中の人が書いたWebアプリケーション構築の方法論「The Twelve-Factor App」の日本語訳

2016-01-14追記: 日本語版は随分前に本家にマージされたので、記事中のURLも変更しました。 The Twelve-Factor App はHerokuの中の人 Adam Wiggins氏によって書かれた、モダンでスケーラブルかつ継続的デプロイ可能なWebアプリケーションを構築するための方…

FabricとCuisineを使って簡単に永続的なSSHトンネルを設定する

はじめに インターネット越しにサーバー間で通信する際、通信内容を暗号化する方法としてSSHのトンネル(ポートフォワーディング)があります。autossh を使うと簡単にSSHトンネルを作れますが、サーバー間で 常時使う トンネルを作るための設定作業は意外と…

さくらVPSでLXCを使って安価に複数台構成を実現する

2013年6月7日 22:04更新: Upstartのデフォルトの設定ファイルを書き換えない方法に変更しました。hitoさんありがとうございます。 lxcなどのバージョンを記載しました。 はじめに Chefを使っていると、役割やサービスごとに環境を分離したくなります。 しか…

金融機関の口座集約アプリを少しでも安全にするために

はじめに 金融機関の口座集約アプリの危険性について - プログラマになりたい という記事が話題になっていたので、日頃からアカウント・アグリゲーション系のサービスについて考えていることをまとめておきます。 アカウント・アグリゲーション・サービスの…

DjangoからMySQLにCOMMITしたデータが別のトランザクションから見えない

はじめに Djangoを使ったアプリケーションで、2つのバッチ処理用プロセスA、Bを同時に立ち上げたときに、Aのトランザクションでsave & commitした値をBでは読み取れないという問題に直面しました。 問題の箇所のソースコードはこのような感じです。 実行順 …

かっこいいダッシュボードが簡単に作れるDashingがすごい

はじめに まずはデモを見てくれ!デスクトップPCなどの大きい画面で見るのがおすすめです。 デモ(中) デモ(大) Windows 8風のフラットなデザインで、いろいろ動いていてかっこいいですね。こんな感じのダッシュボードを簡単に作れるライブラリがDashing…

Capistranoでのsudoの書き方

はじめに Ruby製のデプロイツールであるCapistranoを使ってみました。いろいろなレシピを眺めていると、sudoの書き方が次のようにいろいろあって違いがわからなかったので、調べてみました。 sudo "hoge" # (1) sudoアクション run "sudo hoge" # (2) 文字列…

EvernoteのMarkdownをプレビューできるようにしたのでブログを引っ越した

2016-01-14追記: BaraagはEvernoteアプリの仕様変更により動かなくなっています。Markdownでメモをとるのにリアルタイムプレビューは重要でないことに気づき、筆者も使わなくなっているので、メンテナンスする予定もありません。ごめんなさい。 今まではてな…

SkypeのチャットにJenkinsのビルド結果を通知する

はじめに Jenkinsのビルド結果をSkypeのグループチャットに通知したいことがあります。Skype プラグインはあるのですが、ググるとインストールが大変でうまく動かないという声がチラホラありました。とりあえずプラグインだけをインストールして設定を見てみ…

フューチャーホームコントローラーをJenkinsのXFDとして使う

はじめに フューチャーホームコントローラー(FHC)には音声合成の機能があり、WebAPIで喋らせることができます。そこで、Jenkinsのビルド結果をわかりやすく知らせるXFD (eXtreme Feedback Device) として使ってみます。 ※吹出しはイメージです。本当は別に…

Visual Studioでビルド後にZIPアーカイブを手軽に作る

はじめに Visual Studioでのビルド後に、ちょっとバイナリをZIPで固めたいと思っても簡単にはできません。Visual Studioでのビルドに限らず、Windowsで作業を自動化しようとすると、Linuxならzipコマンド一発でできることが、簡単にできなくて困ることがよく…

フューチャーホームコントローラーの音声認識をKinect for Xbox 360に肩代わりさせるまでの手順

はじめに フューチャーホームコントローラー(Future Home Controller: FHC)は、以前の記事で書いたように、家電を音声でコントロールできるようにする未来感あふれるガジェットです。ただちょっと困っているのが、音声をうまく認識してくれないことがある…

Ubuntu Server 12.04.2 LTSでSkypeのボットを動かすまでの手順

はじめに 開発についてのミーティングをSkypeのチャットで行っていると、このチャットに外部からメッセージ送りたくなります。例えばJenkinsからの通知とか、アラートの受信とか。技術的にできることは知っているのですが、非GUIのサーバー環境で動かそうと…

フューチャーホームコントローラーの感想とそこから見るホームオートメーションの未来

fhc

フューチャーホームコントローラー(Future Home Controller: FHC)は、家電を音声で操作できるようになる未来感あふれるガジェットです。先日届いたので、いろいろ楽しんでます。FHCを使うとこんなことができます。 私「ねぇジュイス、ただいま。」 ジュイ…

CucumberとJenkinsを使って、PHPなどで作られたリモートのWebアプリの受け入れテストを自動で行う

WordPressのようにPHPなどでできたWebサイトの振る舞いを自動でテストしたいと思い、仕組みを作ることにしました。きっかけは、設定が間違ってて、トップページは正常に表示されているにも関わらず、個別のエントリページではエラーになってることがあったた…