2015
07/30
00:18

[斜め読み] クリーンアーキテクチャLatest!

[斜め読み][クリーンアーキテクチャ]

The Clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html * 2012年8月の記事 * システムアーキテクチャの話 * 円の中心から外に向かって順に、エンティティ、ユースケース、インターフェイスアダプタ、ライブラリ及びフレームワーク * 過去何年間にもわたっていろいろなアーキテクチャが提唱されてきた * 六角形アーキテクチャ * たまねぎアーキテクチャ * 絶叫アーキテクチャ * DCI * BCE * これらのアーキテクチャの主眼は皆同じ、階層構造による関心の分離 * これらのアーキテクチャによって次のようなシステムが作成される * フレームワークに依存しない:アーキテクチャはライブラリやフレームワークに依存しないので、プログラムをフレームワークの制約の中に押しこむのではなく、それらをツールとして使える。 * テスト可能:ビジネスルールはUI、データベース、ウェブサーバーといった外部要素なしでテストできる

2015
07/27
03:50

[斜め読み] どのようにしてParseはRubyからGoに移行して正気を保ったか

[斜め読み][Go言語][golang]

How We Moved Our API From Ruby to Go and Saved Our Sanity http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/ * 2015年6月の記事 * 2011年に立ち上げた時はRuby On Railsだった * 最初は何もかもがうまく行っていたが、コードが大きくなるに連れてデプロイにどんどん時間がかかるようになっていった * そのためモンキーパッチを用意してCapistranoでローリングデプロイをするようになった * 2012年の終わりには m1.xlargeインスタンス200台で、各インスタンスごとに24のunicornが走り、一秒間に3000リクエストを処理していた * デプロイには20分かかるようになっていた * その後Parseは急成長を遂げる * ワーカープロセスの枯渇にオートスケーリングが追いつかない * リクエストごとにプロセスを割り当てるやり方はスケールしない、非同期処理への移行が必要になった * 非同期処理の候補

2015
07/09
05:36

[斜め読み] Goアプリケーションのための最小構成Dockerコンテナを作る方法

[斜め読み][Go言語][golang][docker]

Building Minimal Docker Containers for Go Applications http://blog.codeship.com/building-minimal-docker-containers-for-go-applications/ * 2015年4月の記事 * Dockerオフィシャルの golang:onbuild を使うとサイズが大きくなる >520MB * コンテナ内でGoコードコンパイルをしているから * 自分でコンパイルしてscratchコンテナにバイナリを入れる Dockerfile.scratch * scratchコンテナはサイズが0バイトのコンテナ、文字通りの空っぽ * OS標準のライブラリが何もないので、コンパイル時にスタティックバイナリを作る必要がある * ** http://blog.codeship.com/building-minimal-docker-containers-for-go-applications/ ** * SSL証明書は /etc/ssl/certs/ 以下にコピーする * コンテナのサイズは最終的に 6.12MBになった

2015
07/07
05:10

[斜め読み] RubyからGoのマイクロサービス群への移行で得た知見

[斜め読み][Go言語][golang]

From a Ruby monolith to microservices in Go, lessons learned - Niket Patel https://sourcegraph.com/blog/live/gopherconindia/112656568167 * 2015年3月の記事 * 元はGopherCon Indiaのプレゼン スライドはこちら https://speakerdeck.com/nexneo/joy-of-single-purpose-services-in-go * Beehivelyという学校向けアプリの事例 * 話の内容は以下二点について * なぜマイクロサービスアーキテクチャに移行したのか * なぜGoがマイクロサービスに適しているのか * Rubyのつらいところ3つ * メモリ消費とスピード・・・キャッシュを活用して高速化を図っていたが、メモリアロケーションとGCが足を引っ張り実質的に無意味になっていた * 並行性・・・Rubyで並行処理をすると個々のプロセスごとにメモリを消費する * 後方互換製・・・ライブラリやフレームワークの変遷が激しい

2015
07/03
02:12

[斜め読み] メソッドレシーバのポインタと非ポインタで痛い目を見ないようにしよう

[斜め読み][Go言語][golang]

Don't Get Bitten by Pointer vs Non-Pointer Method Receivers in Golang http://nathanleclaire.com/blog/2014/08/09/dont-get-bitten-by-pointer-vs-non-pointer-method-receivers-in-golang/ * 2014年8月の記事 * Goのメソッドレシーバでは、レシーバとしてポインタと非ポインタの両方を定義できる * Goでは ポインタが指すオブジェクトのメソッドの呼び出し ''(&X).method()'' を ''X.method()'' と書ける * メソッドレシーバがポインタと非ポインタでどう違うのかは、仮にレシーバをメソッドに渡される引数と考えてみると良い * 参照渡しが値渡しよりも望ましい場面 * レシーバの値を変更したい場合 * レシーバが巨大な構造体で値のコピーが高くつく場合 * 一貫性:いくつかのメソッドがレシーバをポインタとして受け取るなら、その他もそうすべき * コード例 * 略

2015
06/29
01:54

[斜め読み] ハッカーのためのユーザ獲得方法

[斜め読み][グロースハック]

The Hacker's Guide to User Acquisition http://austenallred.com/user-acquisition/book/ * 2015年の本 * マーケティングの本ではない * ハッカーやメイカーのための、全くのゼロから自分の製品やサービスを知ってもらうための方法を紹介する * メディアに取り上げてもらうように頼む * この方法で、Time Magazine BBC The Guardian TechCrunch PandoDaily Slate Gizmodoのほか、何百ものブログに取り上げてもらえた * 戦術とアプローチ * リポーターの習性を理解する * 興味のあることは何か * 権威のあるリポーターか、駆け出しのリポーターか * リポーターはまず他の人がどう言っているかを調べる癖がある * メディアのランクづけ * 他の人がどう言っているか、という鶏と卵の問題を解決するために、まず記事にする内容に植えている小さなブログから始め、じょじょに大手サイトへと働きかけていく * 小さなブログをどうやって見つけるか そのリスト作成方法

2015
06/24
22:56

[斜め読み] Goのパッケージ管理について

[Go言語][golang]

DEPENDENCY MANAGEMENT AND GO http://jbeckwith.com/2015/05/29/dependency-management-go/ * 2015年5月の記事 * パッケージ管理に欲しい機能 1. 再現可能なビルド 2. プロジェクト語の環境 3. 広く使われていること * 素のGoではこれらが実現されていない * ライブラリのAPIに後方互換性のない変更が加えられるととたんに動かなくなる * 解決方法 * ライブラリをソースツリーにコピーする * インポート文がコピーした場所を指すように書き換える * プロジェクトごとにGOPATHを書き換える * パッケージ管理のツールが大量にある、20個以上 * Godepがおすすめ https://github.com/tools/godep * Godepは欲しい機能をすべて満たしていて、コミュニティでも人気がある * Godepの使い方 * いつもどおり go get する * つづいて godep save すると、依存しているパッケージが ./Godeps にコピーされる

2015
06/24
08:30

nemoで複数ファイル選択時に名前の変更を行うとThunarのバルクリネームを起動するようにする

[Ubuntu]

nemo 2.6.6では複数ファイルを選択した時のリネーム操作で起動するプログラムを設定できるようになっています。 Thunarのバルクリネームは非常に便利なので、nemoから起動できるようにします。 nemoの[設定] - [挙動]タブ - [一括名前変更] に次のコマンドを入力します `` thunar --bulk-rename %F `` ![ファイル管理の設定_035.png](/userdata/blog/ファイル管理の設定_035.png) これでnemoからバルクリネームを起動できるようになりました。 ちょっと前に試した時はうまく行かなかったのですが、アップデートのせいかいつの間にか動くようになっていました。

2015
06/23
03:06

簡単に暗号化/匿名化メッセージが送れるBitMessageの使い方

[暗号化][メッセージアプリ][Bleep][BitMessage]

[GoogleがGmailの利用情報を米司法省に提供していたことが明らかになりました。](https://firstlook.org/theintercept/2015/06/20/wikileaks-jacob-appelbaum-google-investigation/) 対象になったのはTorの開発者で、WikiLeaksのボランティアをしている人物なので、一般人には関係ないと思うのですが、Googleがこの事実を隠していたということもあり、あまり気持ちの良いものではありませんね。 メールで暗号化/匿名化というとGnuPGなどがありますが、導入に手間がかかるためかあまり利用されていないようです。 その点BitMessageならインストールするだけで使えるのでより敷居が低いのではないかと思います。 BitMessageはBleepと同じように分散ネットワーク、公開鍵暗号での通信を行いますが、違う点もいくつかあります。 * オープンソース * 送れるのはテキストメッセージのみ * モバイル版がない * アドレスを複数持てる * 送受信者の特定が困難 * チャンネルというメーリングリストに似た機能がある

2015
06/21
22:15

[斜め読み] スレッドプールを使ってNGINXを9倍高速化する

[斜め読み][サーバ][nginx]

(注:画像やコードは元記事を参照のこと) Thread Pools in NGINX Boost Performance 9x! http://nginx.com/blog/thread-pools-boost-performance-9x/ * 2015年6月の記事 * nginx 1.7.11以降ではスレッドプールという機能が追加されている * nginx 1.9.0を使ったベンチマークでは9.5倍高速化できた * ただしスレッドプールはいつも役に立つわけではない、メモリにキャッシュが収まってしまうような場合には不要なオーバーヘッドになる * リクエストされたデータがメモリに収まりきらないような場合に有効、たとえばストリーミングデータサーバなど * スレッドプールを使うにはnginxを ``--with-thread`` オプション付きでコンパイルする必要がある * スレッドプールを有効にするには、locationコンテキストに ``aio threads`` という一行を追加するだけ * ``thread_pool`` ディレクティブを使ってより細かく設定することもできる

2015
06/17
22:54

[斜め読み] Goで便利なテクニック10個

[斜め読み][golang][Go言語]

(注:画像やコードは元記事を参照のこと) * The Original Article http://arslan.io/ten-useful-techniques-in-go Ten Useful Techniques in Go * 2014年7月の記事 * ここ何年かで学んだことのまとめ * アプリケーションがスケールするために必要なこと 1. GOPATHをひとつだけにする * 複数のGOPATHを使うとスケールしない、また複数のGOPATHが必要になったことは一度もない。 2. for-selectでbreakを使う代わりに関数にラップする * for-selectでbreakを使う代わりに、関数に入れてreturnを使う。こうするとエラーやその他の値を返すこともできる。 3. 構造体の初期化にタグ付きリテラルを使う * リテラルにタグをつけていないと構造体にフィールドを追加するとコンパイルできなくなる。 4. 構造体の初期化を複数行に分ける * 二つ以上のフィールドがある場合は複数行に分ける。コードがより読みやすくなる。 5. 整数の定数にString()メソッドを追加する