タグ

ブックマーク / qiita.com/sfujiwara (15)

  • Goでコマンドライン引数と環境変数の両方からflagを設定したい - Qiita

    Goで実装したプログラムでオプションをコマンドライン引数から取るには標準の flag パッケージを使いますが、値を環境変数からも読みたいことがあります。(特に Docker で動かす場合) https://github.com/namsral/flag を使うと便利です。標準の flag を置き換える形で、import 1行で対応できます。 package main import ( "fmt" "github.com/namsral/flag" ) func main() { var age int var fooBar string flag.IntVar(&age, "age", 0, "age of gopher") flag.StringVar(&fooBar, "foo-bar", "hoge", "hoge") flag.Parse() fmt.Println("age:",

    Goでコマンドライン引数と環境変数の両方からflagを設定したい - Qiita
    sfujiwara
    sfujiwara 2017/06/09
    便利だった
  • Stretcher v0.8.0 でダウンロードのリトライオプションを追加しました - Qiita

    Stretcher v0.8.0 で以下のオプションが追加され、アーカイブのダウンロード処理をリトライできるようになりました。 -retry srcアーカイブのダウンロードリトライ回数 (default 0) -retry-wait リトライ間隔(秒 default 3) Pull Requestをいただいた @sugy@github さん、ありがとうございました! Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    Stretcher v0.8.0 でダウンロードのリトライオプションを追加しました - Qiita
  • Stretcher v0.7.0 でコマンド実行だけできるように - Qiita

    Stretcher v0.7.0 では src がないmanifestを処理すると単に pre/post, success/failure のコマンド実行だけを行うようになりました。 commands: pre: - command1 - command2 post: - command3 success: - notify_success_command failure: - notify_failure_command pre, postとは何なのか、という感はありますが、単にpreとpostが連続して実行されるのでどちらに記述しても差異はありません。 たまに、Stretcherがインストールしてあるホストに対してコマンド実行だけ行いたいことがあるのですが(イレギュラーな再起動とか)、consul execは自由すぎてちょっと…という場合や、consul agentとstretcher

    Stretcher v0.7.0 でコマンド実行だけできるように - Qiita
    sfujiwara
    sfujiwara 2016/09/06
    なりました
  • Stretcher v0.5.0 でダウンロードの帯域制限とタイムアウト - Qiita

    $ stretcher -h Usage of stretcher: -max-bandwidth string max bandwidth for download src archives (Bytes/sec) -random-delay float sleep [0,random-delay) sec on start -timeout int timeout for download src archives (sec) 帯域制限 -max-bandwidth manifestのsrcに指定したアーカイブは往々にして巨大になるため、アーカイブの取得でネットワーク帯域を使い果たさないように制限するオプションです。 単位は Bytes/Sec で、go-humanize が解釈できる形式のsuffixも付けられます。 例: 10MB/sec に制限したい場合 -max-bandwid

    Stretcher v0.5.0 でダウンロードの帯域制限とタイムアウト - Qiita
    sfujiwara
    sfujiwara 2016/04/07
    書きました
  • nginxでリクエスト開始時刻をログに出力する - Qiita

    nginxがログに出力する時刻はリクエスト処理が終わった時点の時刻のため、障害対応時など、いつ開始したリクエストから問題が出たのかを調査するために開始時刻もログにだしたいことがあります。 nginx単体ではリクエスト開始時刻にアクセスする方法が見つけられなかったのですが lua-nginx-module を使うと以下のようにできました。 set_by_lua_block $start_time { return os.date("%Y-%m-%dT%T%z", ngx.req.start_time()); } ngx.req.start_time() でリクエスト開始時刻のunix timeが取れるので、それを os.date() でフォーマットして変数に設定し、ログでは $start_time 変数を出力する形です。

    nginxでリクエスト開始時刻をログに出力する - Qiita
    sfujiwara
    sfujiwara 2016/03/29
    これも書いた
  • nginxでproxy_pass先にSNIなhttpsを指定する - Qiita

    nginxで proxy_pass する先を SNI ではない HTTPS から SNI な HTTPS (具体的には CloudFront) へ変更したらハマったのでメモ。 こんなログがでて接続できない。 [error] 21711#0: *32897 SSL_do_handshake() failed (SSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure) while SSL handshaking to upstream, client: ****, server: ****, request: "GET / HTTP/1.1", upstream: "https://****", host: "****"

    nginxでproxy_pass先にSNIなhttpsを指定する - Qiita
    sfujiwara
    sfujiwara 2016/03/29
    書いた
  • Stretcherで起動時にrandom sleepする - Qiita

    Stretcher で deploy する対象台数が多い場合、consul event で一斉に起動してしまうと S3 などへのファイル取得もほぼ同時に走るため、負荷により取得失敗の原因になることがありました。 ということで v0.4.0 で -random-delay という起動オプションを追加しました。 起動後、manifest取得の前に 0〜指定した秒数だけランダムで sleep するので、適当にタイミングを散らすのに使えるかと思います。 pre で sleep するコマンドを実行する pre が動作するのは src 取得、展開後なので遅い manifestに指定する manifest取得自体は一斉に走ってしまう という理由でコマンドラインオプションになりました。 Register as a new user and use Qiita more conveniently You g

    Stretcherで起動時にrandom sleepする - Qiita
    sfujiwara
    sfujiwara 2016/02/10
    書いた
  • mackerel-agentでhost idの重複を避ける - Qiita

    Mackerel Advent Calendar 2015 15日目の記事です。 mackerel-agentを起動すると、/var/lib/mackerel-agent/id というファイルにMackerel側でホストを識別するための ID が書き込まれます。 このファイルが残ったままイメージファイルを作成して別のホストを立てた場合、Mackerel側ではホストの識別ができず、実際には複数ホストホストが存在していても1ホストとして認識されてしまいます。 イメージ作成前に削除する手はありますが、そうするとそのホストmackerel-agent を起動し直した場合に別ホストとして登録されてしまうので困りますね。 ということで、id ファイルが残っていても「自分のものではない」と判断できる場合には id ファイルを削除した上で mackerel-agent を起動する方法を考えてみました

    mackerel-agentでhost idの重複を避ける - Qiita
    sfujiwara
    sfujiwara 2015/12/15
    Mackerel Advent Calenader 15日目書きました #mackerelio
  • nginx-lua から fluentd へログを送信する - Qiita

    nginx Advent Calendar 2015 7日目 兼 fluentd Advent Calendar 2015 6日目のエントリです。 nginx-lua (https://github.com/openresty/lua-nginx-module) から fluentd にログを送信する方法を紹介します。 Lua から fluentd へログを送信するライブラリとして fluent-logger-lua というものがありますが、これは LuaSocket ライブラリを使用しているため nginx-lua では使いづらいので、ngx.socket.tcp を使用して自前で送信してみましょう。 fluentd の forward protocol は3パターンの入力フォーマットがあるのですが、一番単純なフォーマットは [tag, time, event] の形式で、この形に Me

    nginx-lua から fluentd へログを送信する - Qiita
    sfujiwara
    sfujiwara 2015/12/07
    nginx Advent Calendar 2015 7日目書きました
  • Test::UNIXSock で UNIX domain socket のサーバもテストする - Qiita

    Perl5 Advent Calendar 2015 4日目の記事です。 Test::TCP というテストモジュールはご存じですよね? TCP サーバを実際に (空いているポートを自動で見つけて) 起動して、それに対するテストを簡単に書ける素晴らしいものです。 諸般の事情により、TCP ではなく UNIX domain socket を使用するサーバについても同じことをしたかったため、Test::UNIXSock を作りました。 使い方はほぼ同じです。Test::TCP では port が渡ってくるところが一時的に生成された UNIX domain socket の path になっているので、それを使って server, client のコードを書いて普通にテストするだけです。 以下は memcached への接続をテストする例です。 use 5.12.0; use Test::UNIX

    Test::UNIXSock で UNIX domain socket のサーバもテストする - Qiita
    sfujiwara
    sfujiwara 2015/12/04
    書きました
  • AWS LambdaでS3に配置されたファイルをgzipする - Qiita

    大量のファイルをgzipしたものをS3に配置したいニーズがあって、非力な手元のマシンで一旦gzipしてから転送するよりはLambdaにやらせたらいいのではないか?ということでやってみました。 以下のようなLambda functionを設置 大きなファイル(数十MB以上)を扱う場合はtimeoutをデフォルトの3秒から伸ばす。メモリも128MBでは足りないことがあるので512MBなど S3の読み書き権限があるIAM Roleを設定 S3のイベント通知でLambda functionをkick aws s3 sync で大量のファイルを同期してもアップロードが終わったファイルから順番に処理が走るので、同期が終わった数秒後にはgzipされたファイルが生成されている状態になります。 var aws = require('aws-sdk'); var zlib = require('zlib');

    AWS LambdaでS3に配置されたファイルをgzipする - Qiita
    sfujiwara
    sfujiwara 2015/09/03
    書いた
  • consul membersの結果でbash補完する - Qiita

    consulでホストを管理してる状態で、bash-completionでのsshの補完候補にconsul membersの結果を使いたかったんです。個別にsshすると最近は若者にdisられるそうですが、それはそれこれはこれとして… /etc/bash_completion の _known_hosts_real の定義を以下のように置き換えるととりあえずできました。共通のを上書きしたくなければ個別に .bash_profile などで再定義すればよいですね。 _known_hosts_real() { local members=$(consul members -status=alive | awk '!/Node/{printf("%s ", $1)}') COMPREPLY=( $( \ compgen -W "$members" \ ${COMP_WORDS[COMP_CWORD]

    consul membersの結果でbash補完する - Qiita
    sfujiwara
    sfujiwara 2015/02/24
    書いた
  • go-bindataでまとめたファイルをhttp.FileServerで配信する - Qiita

    Goはアプリケーションを1バイナリで配布できて楽なのですが、webアプリケーションの場合は大抵静的ファイルを配信する必要があり、これが外部ファイルになってしまいます。CSSとか。 そこで go-bindata を使うとファイルをバイナリに同梱できて便利ですが、これを http.FileServer で配信できたら更に楽になるのでは…と思ってこんな風にしてみました。 http.FileServer interfaceを実装した AssetFileSystem と、http.File interfaceを実装した AssetFile を適当に定義して、go-bindata で作った Assets() から取得したデータを配信してやるサンプルです。 ただし、http.serveFile() がindex.htmlへのアクセスをリダイレクトしてくれるという気の効かせ方 をするため、現状は inde

    go-bindataでまとめたファイルをhttp.FileServerで配信する - Qiita
    sfujiwara
    sfujiwara 2015/01/22
    書いたけどindex.htmlにアクセスできない辛い版
  • AWS S3で異なるアカウントが所有するバケット間をsyncする - Qiita

    アカウントが異なるS3 bucket間を aws s3 sync したい場合の設定例。 前提 account: A bucket: AAAA account: B bucket: BBBB があったとして、AAAA → BBBB に aws s3 sync をしたい。 設定 B が AAAA に対して読み取ることを許可するため、AAAA の bucket policy に以下のような設定をします。 [ACCOUNT-ID-B] は B の aws acccount id (12桁の数字) です。 要するに arn:aws:s3:::AAAA/* に対して s3:GetObject arn:aws:s3:::AAAA に対して s3:ListBucket を許可ですね。 { "Version": "2008-10-17", "Id": "Policy1406622286590", "Stat

    AWS S3で異なるアカウントが所有するバケット間をsyncする - Qiita
    sfujiwara
    sfujiwara 2014/07/29
    書いた
  • [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita

    port 80を開くためにはroot権限が必要だが、開いたあとはセキュリティーリスクを最小限にするために一般ユーザ権限に降格したい、というWebサーバをGoで書く例です。 【追記3】 下記の例ではLinuxで動作させた場合に不十分です。 Linuxではsetuidを呼び出したスレッドにしか効かないので、以下の例をそのままLinuxで動かすとsyscall.Setuid()は成功しますが、HTTPのHandlerでは別スレッドで動くことがあるため、rootのままで動作することになります。 methaneさんのコメントを参照ください rootで起動した状態で":80"をlistenして syscall.Setuid() で一般ユーザになり http.Serve()する package main import ( "net" "net/http" "syscall" "log" ) func m

    [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita
    sfujiwara
    sfujiwara 2014/07/16
    Qiitaで書いてみた / コメントで教えて頂いた内容を追記
  • 1