タグ

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

  • GolangでAPI Clientを実装する

    特定のAPIを利用するコマンドラインツールやサービスを書く場合はClientパッケージ(SDKと呼ばれることも多いが記事ではClientと呼ぶ)を使うことが多いと思う.広く使われているサービスのAPIであれば大抵はオフィシャルにClientパッケージが提供されている.例えば以下のようなものが挙げられる. https://github.com/aws/aws-sdk-go https://github.com/Azure/azure-sdk-for-go https://github.com/PagerDuty/go-pagerduty https://github.com/hashicorp/atlas-go 特別使いにくい場合を除けば再実装は避けオフィシャルに提供されているものを使ってしまえばよいと思う(まともなものなら互換性などをちゃんと考慮してくれるはずなので).一方で小さなサービ

  • 高速に自作パッケージをGithubにリリースするghrというツールをつくった

    高速に自作パッケージをGithubにリリースするghrというツールをつくった tcnksm/ghr・Github ghrを使えば,1コマンドでGithubにリリースページの作成とそこへのパッケージのアップロードが可能になる.複数パッケージのアップロードは並列で実行される. デモ 以下は簡単な動作例. 上のデモでは,v0.1.0タグでリリースを作成し,pkg/dist/v0.1.0以下の6つのファイルを並列でアップロードしている(ghrをghrでリリースしている).1ファイルあたり,2.0M程度なのでまあま速いかと.アップロード結果は,ここで見られる. 背景 “Go言語のツールをクロスコンパイルしてGithubにリリースする” 上で書いたようにcurl使って頑張ってAPIを叩いていたが,やっぱシェルスクリプトは嫌だし,アップロードが遅い. Githubへのリリースを行う専用ツールでaktau

    michael-unltd
    michael-unltd 2017/02/26
    release module to github
  • CI-as-a-ServiceでGo言語プロジェクトの最新ビルドを継続的に提供する

    CI-as-a-ServiceでGo言語プロジェクトの最新ビルドを継続的に提供する Go言語で作成したツールのリリース方法について,最近実践していることを書く. リリースは,ローカルから人手で行っている.具体的には,自分のローカル環境でクロスコンパイルし,セマンティック バージョニングによるタグをつけ,CHANGELOG.mdを丁寧に書いた上でリリースをしている.クロスコンパイルにはmitchellh/gox,リリースには自分で作成したtcnksm/ghrを使っている(ghrについては,“高速に自作パッケージをGithubにリリースするghrというツールをつくった”を参考). その一方で,開発中の最新のビルドも提供するようにしている.例えば,こんな感じで,Pre-Releaseとして提供している.Go言語での開発なので,go getしてくださいと言える.しかし,環境によってビルドが失敗する

  • GolangでAmazon EchoのSmart Home Skillを書く

    Amazon Echo(以下Alexa)はAmazonが開発・販売している音声アシスタント+Bluetoothスマートスピーカーである.音楽を流す,今日の天気やニュースを聞く,Googleカレンダーの予定を聞く,TODOを追加する,家電を操作するなどなど… といった多くのことを全て音声を通じて実行することができる(こちらの動画がわかりやすい). 現時点(2016年8月)では音声認識英語のみで対応地域もUSのみとなっている(例えば天気を聞くと地域を指定しない限りUSの天気が返ってくる).また連携できるサービスも日で使えるものは少ない.ただ発表当時から「これは完全に買いだ」と思っており先日GopherCon2016で渡米したときにいきおいで購入した(自分は音声アシスタントはSiriなどのスマートフォンに搭載されているものよりも据え置き型のものに未来を感じている.実は大学院では会話ロボットの

  • 初めてのOSSコミット homebrew-caskがいい感じだった | SOTA

    初めてのOSSコミットはhomebrew-caskがいい感じ BrewfileでHomebrewパッケージを管理するにも書いたが,homebrew-caskというのは,家Homebrewではインストールできない,Google ChromeやVagrantといったdmg配布のアプリをBrewでインストール可能にするサイドプロジェクト. 先日koboのデスクトップアプリでを読めるようになったが,まだhomebrew-caskではインストールできない状態だった.ということで,homebrew-cask,厳密にはhomebrew-caskで管理されるアプリの派生バージョンを管理しているhomebrew-cask-versionsに新しいCaskの追加のPull requestを送ってマージされた.この時,homebrew-caskは初めてのOSSコミットの経験にとても良いと感じた. 理由は以下

  • 2015年振り返り

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

  • Apache Kafkaに入門した

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

    michael-unltd
    michael-unltd 2016/01/28
    Messging System
  • Dockerのネットワークの基礎

    今までいろいろ触ってきて,Dockerネットワーク周りに関しては何となくは理解していたが,人に説明できるほど理解してなかったのでまとめておく.基は,Advanced networking - Docker Documentationがベースになっている. 仮想ブリッジの仕組み Dockerのネットワークは,仮想ブリッジdocker0を通じて管理され,他のネットワークとは隔離された環境で動作する. Dockerデーモンを起動すると, 仮想ブリッジdocker0の作成 ホストの既存ルートからの空きのIPアドレス空間を検索 空きから特定の範囲のIPアドレス空間を取得 取得したIPアドレス空間をdocker0に割り当て が行われる. コンテナを起動すると,コンテナには以下が割り当てられる. docker0に紐づいたveth(Virtual Ethernet)インターフェース docker0に割り

  • CoreOSに入門した

    CoreOS is Linux for Massive Server Deployments · CoreOS CoreOS + Docker Meetup Tokyo #1に参加してCoreOSにめっちゃ感動したので,CoreOSに入門していろいろ触ってみた. まず,CoreOSの概要とそれを支える技術について説明する.次に実際にDigitalOcenan上にVagrantを使って実際にCoreOSクラスタを立てて,CoreOSで遊ぶ方法について書く. CoreOSとは何か CoreOSは,GoogleやFacebook,Twitterといった企業が実現している柔軟かつスケーラブル,耐障害性の高いインフラの構築を目的としたLinuxディストリビューションである.軽量かつ使い捨てを前提にしており,クラウドなアーキテクチャのベストプラクティスを取り入れている.CoreOSの特徴は大きく4つ挙

  • 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.

  • 1