タグ

ブックマーク / deeeet.com (14)

  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

  • 2015年振り返り

    2015年の振り返りとして自分が好きだったもの,影響を受けたものを雑多にまとめる.それに合わせて自分の活動についても振り返り,2016年の展望を書く(fogus: Send More Paramedicsの形式が良かったのでそれを真似ている). Blog posts read 今年読んで印象に残った,影響を受けたブログ記事.順不同. Japanese コードを書くことは無限の可能性を捨てて一つのやり方を選ぶということ 7年働いた時点での私の仕事の極意 志低く ソフトウェアエンジニアだけでサービス運用できる環境を作って失業した話 べログの口コミに見る人間心理 -麻薬と性とトラウマと- 運用を楽にするためのアプリケーションコードを書くということ Webオペレーションエンジニアアウトプットと開発力 我慢の期間 2015年Webサーバアーキテクチャ序論 A Million Hello Worl

  • Go言語でファジング

    この記事はGo Advent Calendar 2015の21日目の記事です. 今年もGoコミュニティーから多くのツールが登場した.その中でも異彩を放っていたのがGoogleのDynamic testing toolsチームの@dvyukov氏によるgo-fuzzである. go-fuzzはGo関数のファジングを行うツールである.このツールはとても強力で標準パッケージで100以上,golang.org/x/パッケージで40以上,その他を含めると300以上のバグを発見するという実績を残している(cf. Trophies). 記事ではこのgo-fuzzの紹介を行う. ファジングとは? Fuzz testing - Wikipedia, the free encyclopedia ソフトウェアの脆弱性検出におけるファジングの活用 「ファジング」とはソフトウェアのテスト手法である.テスト対象となる

  • OctopressからHugoへ移行した

    このブログは2年ほどOctopressを使って生成してきたが,不満が限界に達したので,Go言語で作られたHugoに移行した. Octopressへの不満は,とにかく生成が遅いこと.100記事を超えた辺から耐えられない遅さになり,最終的には約150記事の生成に40秒もかかっていた.ブログは頻繁に書くのでかなりストレスになっていた. Hugoのうりは生成速度.試しに使ったところ,明らかに速く,すぐに移行を決めた.最終的な生成時間は以下.爆速. 他に良いところを挙げると,まずとてもシンプル.Octopressと比べても圧倒的に必要なファイルは少ない.また,後発だけあって嬉しい機能もいくつかある.例えば,draftタグを記事のヘッダに書いておけば,ローカルでは生成されても,番用の生成からは外されるなどなど. インストール Go言語で書かれているのでgo getして,デザインテーマをCloneする

  • Dockerコンテナ間のlink,database.ymlの書き方

    Dockerコンテナ間のlink,database.ymlの書き方 DockerはLinksというコンテナ同士の連携を簡単に行う仕組みをもつ. これは,DB用のコンテナとアプリケーション用のコンテナの連携を行いたいときなどに有用になる. 例えば,1337ポートがEXPOSEされたcontainer1という名前のコンテナとの連携を行いたいとする. このとき以下のように,-link 連携したいコンテナ名:エイリアス名で新しいコンテナを起動すると, そのコンテナ内に連携したいコンテナのポート番号やIPをもった環境変数が現れる. docker run -d -link container1:alias user/sample bash root@48408a38c9b2:/# env ALIAS_PORT_5432_TCP_ADDR=172.17.0.2 ALIAS_PORT=tcp://172.

  • プレゼンするときに考えていること

    僕はカンファレンスで喋るのが好きだ.好きだが決して得意ではない.むしろ喋るのは苦手なほうだと思う. 実際に自分でやるまではプレゼンは才能だと思っていた.大学の研究発表などで実際に自分でプレゼンをするようになり,大学の研究室で指導されまくった結果,プレゼンは技術だと認識した(もちろん才能もある).技術であるということは学ぶことができる.それに気づいてからはたくさんプレゼンに関するを読んだ.昔は発表前に必ず何か一冊プレゼンに関するを読みそれを積極的に取り入れるようにした. 得意でないなりに学んで,発表を繰り返した結果なんとなく毎回考えること/意識することが固まってきた.今後のために簡単にまとめておく. 聴衆は貴重な時間を割いて会場に来る オーガナイザーは貴重な時間を割いてカンファレンスを準備している 聴衆が誰かを妄想する 早めに準備する.早めに準備する.早めに準備する.早めに… Keyno

  • DockerイメージのビルドにPackerを使うべき理由

    DockerイメージのビルドにPackerを使うべき理由 “Ask HN: Do you bake AMIs for AWS deployments?”での,Mitchell Hashimoto氏のコメントより.簡単に抄訳. ソフトウェアのインストールや設定の知識は,依然としてShellscriptやChef,Puppetに残っている.Packerを使えば,Dockerのコンテナの作成に現時点で存在している経験やCIプロセスなどを利用できる. 共通のフォーマットの設定.Dockerfileの記述は特有である.それは良いが,現状様々なイメージ(AMIやDockerのコンテナ,Virtualboxなど)が存在する.Dockerが全てではないとき,イメージをビルドするために様々なツールをメンテするのは負担になる.Packerを使えば,一つの方法で,さまざまなプラットフォームに対応できる.たとえ企

  • Packerを使ってChef/Puppet/AnsibleでDockerのイメージをつくる

    Packerを使ってChef/Puppet/AnsibleでDockerのイメージをつくる Packerは,Vagrantの作者であるMitchell Hashimoto氏によって開発が進められているVirtualBoxやVMWare,Amazon EC2などの仮想マシンのテンプレートの作成を行うツール.VagrantのVirtualBox用のBoxを作るveeweeに置き換わるツールとして知られている.最近のアップデートDockerのイメージのビルドをサポートした. TL;DR Packerを使えばDockerのイメージをDockerfileを使わずビルドすることができる つまり,Dockerfileの特有な記述を使わず,今まで慣れ親しんできたChefやPuppet,Ansibleのようなプロビジョニングツールを使ってDockerのイメージをビルドできる. 参考 Dockerイメージの

  • Apache Kafkaに入門した

    Apache kafka 最近仕事でApache Kafkaの導入を進めている.Kafkaとは何か? どこで使われているのか? どのような理由で作られたのか? どのように動作するのか(特にメッセージの読み出しについて)? を簡単にまとめておく(メッセージングはまだまだ勉強中なのでおかしなところがあればツッコミをいただければ幸いです). バージョンは 0.8.2 を対象に書いている. Apache Kafkaとは? 2011年にLinkedInから公開されたオープンソースの分散メッセージングシステムである.Kafkaはウェブサービスなどから発せられる大容量のデータ(e.g., ログやイベント)を高スループット/低レイテンシに収集/配信することを目的に開発されている.公式のトップページに掲載されているセールスポイントは以下の4つ. Fast とにかく大量のメッセージを扱うことができる Scal

    yasuharu519
    yasuharu519 2015/09/04
    Apache Kafkaについて。楽しそう
  • Go1.5はクロスコンパイルがより簡単 | SOTA

    Go1.5はクロスコンパイルがより簡単 Cross compilation just got a whole lot better in Go 1.5 | Dave Cheney Go 1.5: Cross compilation — Medium Go言語の良さの一つにあらゆるOS/Archに対するクロスコンパイルがとても簡単に行えることが挙げられる.今まで(Go1.4以前)も十分に便利だったがGo 1.5ではさらに良くなる. 今までの問題を敢えて挙げるとターゲットとするプラットフォーム向けのビルドtool-chain準備する必要があるのが煩雑であった(cf. Go のクロスコンパイル環境構築 - Qiita) $ cd $(go env GOROOT)/src $ GOOS=${TARGET_OS} GOARCH=${TARGET_ARCH} ./make.bash --no-clea

  • サンフランシスコでたくさんコーヒー飲んだ

    サンフランシスコでたくさんコーヒー飲んだ Google I/O 2015のためにサンフランシスコを訪れた.サンフランシスコといえば対岸のオークランドにサードウェーブの代表格となったBlue Bottle Coffeeの焙煎所があり,サードウェーブコーヒーの流れを受けた様々な有名ロースターが存在している.コーヒー狂としてはロースター巡りをせずにはいられず滞在中は時間があればロースターに行っていた.以下は行ったところまとめ. Four Barrel Coffee.Valencia St.にある.Drip Coffee(Pour-over)のために別途スタンドが準備されていて店員が豆の説明をしながら丁寧にドリップをしてくれる.COLOMBIAのla CABANA農場のものを飲んだがこれが圧倒的に美味かった(今回一番美味しかったと思う).衝撃を受けた.ここは“Four Barrel, San Fr

  • Docker社を訪問した

    Google I/O 2015のためにサンフランシスコを訪れたついでにDocker社に遊びに行った.Docker社はサンフランシスコのダウンタウンを南に下った475 Brannan St.にある(ちなみに275にはGitHub社がある). 迎えてくれたのはNathan.Nathanとは昨年東京で開催されたCommunities meetup Chef, Docker, Openstack, Puppetで出会った.その後もtwitterで絡んでおり今回訪問させてもらうことになった. まず,近くにカフェ(Blue Bottleで焙煎された豆を使っていた)がありコーヒーを片手に近況などをゆっくり話した.NathanはDocker Machineをメインに担当していて,最近追加した機能や今後の予定などについて語ってくれた.今はv0.3.0に向けてRCを出して絶賛テスト中とのこと.Docker M

    yasuharu519
    yasuharu519 2015/06/07
    [docket
  • Dockerの諸問題とRocket登場の経緯

    2014年の後半あたりからDockerDocker Inc.への批判を多く見かけるようになった(もちろんもともと懸念や嫌悪を表明するひとはいた).それを象徴する出来事としてCoreOSチームによる新しいコンテナのRuntimeであるRocketのリリースと,オープンなアプリケーションコンテナの仕様の策定を目指したApp Containerプロジェクトの開始があった. CoreOS is building a container runtime, Rocket 批判は,セキュリティであったり,ドキュメントされていない謎の仕様やバグだったり,コミュニティの運営だったり,と多方面にわたる.これらは具体的にどういうことなのか?なぜRocketが必要なのか?は具体的に整理されていないと思う.これらは,今後コンテナ技術を使っていく上で,オーケストレーションとかと同じくらい重要な部分だと思うので,ここ

  • Werckerの仕組み,独自のboxとstepのつくりかた

    Werckerの仕組み,独自のboxとstepのつくりかた WerckerはTravisCIやDrone.ioのようなCI-as-a-Serviceのひとつ.GitHubへのコードのPushをフックしてアプリケーションのテスト,ビルド,デプロイを行うことができる. Werckerは,TravisCIのように,レポジトリのルートにwercker.ymlを準備し,そこに記述された実行環境と実行コマンドをもとにテスト/ビルドを走らせる. Werckerには,その実行環境をbox,実行コマンド(の集合)をstepとして自作し,あらかじめWercker Directoryに登録しておくことで,様々なテストからそれらを呼び出して使うという仕組みがある.実際,Werkcerで標準とされているboxやstepも同様の仕組みで作成されている(wercker · GitHub). 今回,WerkcerでのGo

    yasuharu519
    yasuharu519 2014/10/18
    wreckerについて
  • 1