タグ

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

  • GithubのGo言語プロジェクトにPull Requestを送るときのimport問題

    TL;DR fork元(オリジナル)をgo getしてその中で作業,forkした自分のレポジトリにpushしてPull Requestを送る. 問題 Github上のGo言語のプロジェクトにコミットするとき,cloneの仕方で若干ハマることがある.普通のOSSプロジェクトの場合は,forkしてそれをcloneしてpush,Pull Requestとすればよい.Go言語のプロジェクトでは,同じレポジトリの中でパッケージを分け,それをimportして使ってるものがある.そういう場合にforkしたものをそのままcloneすると,importの参照先がfork元の名前になりハマる. 例えば,github.com/someone/toolがあるとする.このレポジトリはgithub.com/someone/tool/utilsという別パッケージを持っており,mainがそれを使っているとする.つまり以下

    kimutansk
    kimutansk 2017/01/25
    一度はまってこうやったら出来るやとなりましたが、一度やらかさないとわからないっちゃわからないですよね・・・
  • 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

    kimutansk
    kimutansk 2016/05/09
    GoLang、数百GB単位のヒープでも数十ms単位のpauseで済みますか。アルゴリズムもシンプル。ライトバリアはMarkTerminationと併せてこう実現されてますか。
  • Google Omegaとは何か? Kubernetesとの関連は? 論文著者とのQA(翻訳) | SOTA

    エンタープライズ向けのKubernetesサポートを行っているkismatic Inc.による“Omega, and what it means for Kubernetes: a Q&A about cluster scheduling”が非常に良いインタビュー記事だった.Google Omegaとは何か? 今までのスケジューリングと何が違うのか? 何を解決しようとしているのか? 今後クラスタのスケジューリングにはどうなっていくのか? をとてもクリアに理解することができた. 自分にとってスケジューリングは今後大事になる分野であるし,勉強していきたい分野であるのでKismaticの@asynchio氏と論文の共著者であるMalte Schwarzkopf氏に許可をもらい翻訳させてもらった. TL;DR 2013年に発表されたOmega論文の共著者であるMalte SchwarzkopfがG

    kimutansk
    kimutansk 2015/09/17
    公平性より効率重視、各スケジューラに全情報を渡すことにより最適な配置、一部リソース確保した時点でスモールスタート・・公平性云々は組織内でやるなら納得な感じです。
  • Dockerの諸問題とRocket登場の経緯

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

    kimutansk
    kimutansk 2015/02/17
    この辺の問題、企業として当然とるスタンスとあるべき論とセキュリティと・・が諸々あるんですよね。この辺の話を知ってから様子見スタンスになったのはあります。
  • DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする

    DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする DockerHubのAutomated Buildsは,GithubやBitbucketへのgit pushをフックしてレポジトリ内のDockerfileを元にDockerイメージをビルドする機能である. イメージを使う側からすれば,それがどのようなDockfileから作られているか可視化され,常に新しいイメージがあることが保証されるので安心感がある.イメージを提供する側からすればDockerfileを更新してgit pushすれば自動でビルドしてくれくれるので楽という利点がある.そのためDockerHubにイメージを上げる場合は,docker pushを使うことはほとんどなくてこのAutomated Buildsを使うのが普通である. このAutomated BuildsはWeb h

    kimutansk
    kimutansk 2015/01/14
    DockerHubのAutomated BuildsにWebHookを設定してGitにPushするごとにコンテナを更新することができる、と
  • Dockerコンテナ接続パターン (2014年冬)

    記事はDocker Advent Calendar 2014の1日目の記事です. Dockerによるコンテナ化はリソース隔離として素晴らしい技術である.しかし,通常は1つのコンテナに全ての機能を詰め込むようなことはしない.マイクロサービス的にコンテナごとに役割を分け,それらを接続し,協調させ,全体として1つのサービスを作り上げるのが通常の使い方になっている. コンテナ同士の接続と言っても,シングルホスト内ではどうするのか,マルチホストになったときにどうするのかなど様々なパターンが考えられる.Dockerが注目された2014年だけでも,とても多くの手法や考え方が登場している. 僕の観測範囲で全てを追いきれているかは分からないが,現状見られるDockerコンテナの接続パターンを実例と共にまとめておく. なお今回利用するコードは全て以下のレポジトリをcloneして自分で試せるようになっている.

    kimutansk
    kimutansk 2014/12/05
    動的Ambassadorくらいまでは何とかついていけますが、weave形式になると大変になりそうなので、素直にkubernetesなんですかねぇ・・
  • CoreOSクラスタ内のDockerコンテナの動的リンク

    CoreOSクラスタ内のDockerコンテナの動的リンク Dynamic Docker links with an ambassador powered by etcd 上記の記事を参考にCoreOSのクラスタ内で複数ホスト間にまたがりDockerコンテナを連携させる方法について検証した. 背景と問題 複数ホストにまたがりDockerのコンテナを接続する方法としてはAmbassador パターンが有名である.これはトラフィックを別ホストへforwardすることに特化したコンテナを立てる方法で,ホストに無駄な設定なし,かつDockerコンテナのみで行えるシンプルな方法である.例えば,あるホストからredis-cliを使って,別ホストで動くredisに接続する場合は以下のように接続する. (redis-cli) --> (ambassador) ---network---> (ambassad

    kimutansk
    kimutansk 2014/12/05
    必要最小限の基本機能しか持たないからこそ、Ambassadorパターンのような転送のためだけにコンテナ立てることも可能になるわけですか。プロセスを組み合わせる感覚ですね。
  • Fleetの使い方,Unitファイルの書き方

    Fleetの使い方,Unitファイルの書き方 CoreOSに入門した | SOTA CoreOSではすべてのアプリケーションをDockerで動かす.このとき,コンテナによるサービスをCoreOSクラスタのどのマシンで起動するかをいちいち人手で決めるわけにはいけない.クラスタ内のリソースの状態や動いているサービスに基づき,適切なマシンでコンテナを動かすスケジューリングの仕組みが必要になる. このスケジューリングとコンテナの管理にCoreOSはfleetを用いる. fleetを使うとCoreOSクラスタが1つのinit systemで動いているかのようにそれを扱うことができるようになる.開発者はどのマシンでどのDockerコンテナが動いているかを気にする必要がなくなる. 例えば,5つのコンテナを動かす必要があれば,fleetはクラスタのどこかでその5つのコンテナが動いてることを保証する.もしコ

    kimutansk
    kimutansk 2014/11/20
    この手のクラスタ管理の機構は複数ありますが、CoreOSとDockerを使う場合はfleetがいいですか。
  • わかりやすいREADME.mdを書く

    GitHubなどに自分のツールやライブラリを公開するとき,README.mdは重要な役割を担っている.レポジトリを訪れたユーザが自分のツールを使ってくれるか否かの第一歩はREADME.mdにかかっている,と言っても過言ではない.実際自分が使う側になったときも,まずREADME.mdを読んで判断していると思う. 成功しているプロジェクトを参考にしつつ,自分が実践していることをまとめておく.ここに書いていることはあくまで(自分の中で)最低限的なものである.プロジェクトが成長していくにつれてREADMEはあるべき姿に成長していくべきだと思う. READMEの役割 README.mdには大きく2つの役割がある. プロジェクト,ツールの使い方,インストール方法 プロジェクト,ツールの宣伝 元々READMEは前者の役割しかなかったが,GitHubの仕組み上,後者の役割も徐々に重要になっている. さらに

    kimutansk
    kimutansk 2014/08/03
    画像でDemoを書くのはなるほど。VSやContributionは自分が書くときは入れてませんでしたね。ともあれ、ドキュメントとして重要な位置づけなのは確かです。
  • Go言語のコードレビュー

    SoundCloudが2年半ほどGo言語を利用したプロダクトを番で運用した知見をGopherConで発表していた(“Go: Best Practices for Production Environments”).その中で“CodeReviewCommentsというGoogleでのGo言語のコードレビューにおいてよくあるコメントをまとめたサイトが紹介されていた. 最近Go言語を書くようになり,使えそうなのでざっと抄訳してみた.“リーダブルコード”的な視点も含まれており,Go以外の言語でも使えそう. gofmtでコードの整形をすること コメントは文章で書くこと.godocがいい感じに抜き出してくれる.対象となる関数(変数)名で初めて,ピリオドで終わること // A Request represents a request to run a command. type Request str

    kimutansk
    kimutansk 2014/05/28
    Go言語の規約やレビューについての内容・・・ですが、Go言語に依存しない部分は別言語でも参考になりますね。
  • DockerのHost networking機能

    DOCKER 0.11 IS THE RELEASE CANDIDATE FOR 1.0 1.0のRCである0.11はいくつかの新機能が追加された.例えば,SELinuxのサポートや,Host networking機能,Link機能でのホスト名,Docker deamonへのpingなど. この中でもHost networking機能がなかなか面白いので,実際に手を動かして検証してみた.事前知識として“Dockerのネットワークの基礎”も書きました.ネットワークに関して不安があるひとが先にみると,Host Networing機能の利点/欠点もわかりやすいと思います. TL;DR Host networking機能を使うと,異なるホスト間のコンテナの連携がちょっぴりやりやすくなる.SerfやConsulのようなサービスディスカバリーツールとの相性も良さそう. まだ出たばかりの機能で実際に使っ

    kimutansk
    kimutansk 2014/05/13
    今までのモードの他に他のコンテナやホストのネットワークをそのまま使用したりできると。1ポート1コンテナで挿げ替えて環境構築、とかがやりやすくなりますね
  • Dockerとは何か?どこで使うべきか?

    この記事はDockerに関する実験的な記事や,Buildpackを使ってHeroku AppをDocker Containerとして使えるようにする“building”の開発などで知られるCenturyLink Labsの “What is Docker and When To Use It”の翻訳です. Dockerとは何か?Dockerをどこで使うべきか?についてよく見かける記事とは違った視点から説明されています. 翻訳は許可をとった上で行っています. Dockerとは何でないか Dockerとは何かを説明する前に,Dockerは何でないかについて述べる.Dockerの否定形は何か?Dockerの制限は何か?Dockerが得意でないことは何か? DockerLXCのようなLinux Containerではない DockerLXCだけのラッパーではない(理論的には仮想マシンも管理でき

    kimutansk
    kimutansk 2014/05/02
    Dockerの真髄は差分である、という言葉を見たこともあり、GitとDockerの類似性はわかりますが、まさかJavaの性質とDockerが紐づけられるとは思いませんでした。なるほど・・
  • serverspecとdocker-apiでDockerfileをTDD

    serverspecとdocker-apiDockerfileをTDD いくつかDockerfileを書いてきた.今書いているDockerfileは短くてシンプルなものばかりだが,もっと長く複雑化した時に不安になりそうだ.不安を解消するにはテストしかない.さらにテスト駆動的にDockerイメージを開発できたら素敵だ.つまり, テストを書く Dockerイメージを作成して,テストの実行 -> RED Dockerfileの編集 Dockerイメージを作成して,テストの実行 -> GREEN テストを… の流れができるとよい. ということで,RSpecを使ってTDDでDockerfileを開発するというのをやってみた,tcnksm/docker-rspec.今回実現したのは以下. Docker Remote APIDockerfile特有のコマンド(e.g, CMDやEXPOSE)のRSp

    kimutansk
    kimutansk 2014/01/08
    こういう風に確認できますか。2手段組み合わせると効率よさそうではありますねぇ
  • 1