サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
innossh.hatenablog.com
もう 11 月も半ばですが 10 月分のブログとして書きます。怠惰w 特にネタがないので以前も書きましたが Ansible の小ネタ投稿にします。 innossh.hatenablog.com 今回は変数参照について。 Ansible というか Jinja2 の内容も混じってます、思いつくけどどう表現していいかわからないような検索しづらい系の小ネタ集めました。 動作検証したコードの方を見たい場合はこちらのリポジトリをどうぞ。 github.com hash 内の値の参照 意外と簡単です。 yaml: vars: foo: foo example_hash: foo: foo bar: bar ... tasks: - block: - debug: msg: "example_hash['foo'] is {{ example_hash['foo'] }}" - debug: msg: "
Ansible で playbook を実行する際に、事前に check mode で一度変更点を確認することがよくあると思います。 具体的には check mode の出力結果で、 playbook 内のどの task が changed になり、どの task が changed にならないかを見ることで、今回の実行での変更点が何であるかを把握するといった形になります。 ここで重要になるのが、"その module の changed: True は何を表すのか"という部分です。 例えば、"対象のホスト(AWS の EC2)を、登録されているロードバランサー(ELB)から切り離す"というカスタムモジュール(my_ec2_lb とする)を作成する場合、 changed: True/False は何を表すでしょうか。 カスタムモジュールでなくとも、すでに公式で elb_instance とい
少し前のことですが、 Fluentd の v0.14 が stable になりましたね。 イコール v1.0 である通り、安定感が増した感じがしています。 ブログのネタが無いので今回は Fluentd の小ネタを投稿することにしますw 一応ここでは比較のために v0.12, v0.14 と表記します、というか v0.14 に慣れすぎてまだ v1.0 と呼ぶのに慣れてないだけなんですが。 v0.12 まで必須だったようなプラグインの機能でも、 v0.14 ではコアの機能でカバーできることが多くなりハッピーになりましたが、どのように設定を修正していいのかパッとわからない場合があります。 例として、 fluent-plugin-forest の話を紹介しましょう。 GitHub - tagomoris/fluent-plugin-forest Fluentd 公式のプラグインリストのダウンロード
なかなかハマったので軽くまとめておきます。 一年ほど前に Amazon Echo と Google Home のこんなエントリを書きましたが innossh.hatenablog.com とうとう日本にも Amazon Echo が発売されましたね!テンション上がってさっそくゲットしました。 ひとまずテレビの電源を Echo で操作するために、もともと持っていた IRKit と Alexa を連携させることにしました。 Alexa の強みはスキルベースでそのスキルを公開できるプラットフォームがあることかと思いますが、 一般ユーザ的にはゼロ開発で簡単に設定できることがとても大事ですよね。 というわけでカスタムスキルも開発も全くなしで Google Home と同じように、 Alexa の IFTTT 連携によって IRKit を操作してみましょう。 必要なものは Amazon Echo Am
Nginx を使う時に、設定に対して動作が意図したとおりにならないことがよくあります。 おそらく初見殺しで何度もハマる人が多いのでここであるあるをまとめておこうと思います。 OpenResty の話も混ざっていますがほぼ同じと考えて良いです。 ではさっそく、 Nginx あるある言いたい〜〜〜 location の path マッチングの優先順位がわからない Nginx のビルド時のパラメータを後から確認したい worker_processes と worker_rlimit_nofile と worker_connections upstream へのリクエストの HTTP バージョンが 1.0 になる upstream のレスポンスを見てクライアントへのレスポンスを変化させたい proxy_set_header でヘッダが正しく設定されない more_clear_headers を i
ログ -> fluentd -> fluentd -> ストレージ のような流れで fluentd を酷使していると、1コアしか使えない fluentd が悲鳴を上げて そこがボトルネックとなってスループットが上がらない問題にぶつかります。 そこで使えるのが fluent-plugin-multiprocess というプラグインです。 他の input plugin と同様に source を定義して複数の fluentd の子プロセスを呼び出すことでマルチコアの利用が可能になります。 docker-fluentd-multiprocess/fluent.conf at master · innossh/docker-fluentd-multiprocess · GitHub <source> @type multiprocess <process> cmdline -c /fluentd
複数のdocker imageとcontainerを使ってサクッと環境を整えたいときにdocker composeってとても便利ですよね。 単純な構成だと公式ドキュメントを読めばわりと簡単に思い通りになるのですが、 意外と慣れるまではどんな設定をしてどうファイルを配置するか迷いがちだと思います。 そんなわけで今更感が強いですがベストプラクティス的なものをまとめておきます。 最近になってようやくDockerfileとdocker-compose.ymlの良い書き方使い方がわかってきた気がする。初期のころに書いたやつも試行錯誤して書いたはずなんだけど今やクソみたいに感じる— innossh (@innossh) 2016年9月19日 今月のブログ書くネタに困って今更になってdocker composeを選んだわけでは…うっ… ベストプラクティスと言いつつ半年以上前の情報の可能性が…うっ… さっ
準備編はこちら innossh.hatenablog.com いよいよ出発 成田空港を出発し、サンフランシスコ国際空港に到着するまでだいたい9時間ぐらいです。 たまたま隣になったアメリカ人の女性がめちゃめちゃ日本語がうまく 英語の発音もすごく綺麗でかっこええええーってなりながら飛行機を耐えていました。平凡な俺達はeconomy size。 これから数日間英語だけで旅行を満喫しなければいけないのでその女性と 日本語英語混じりでお話させていただきました。楽しい。 この時は、一人旅不安だったけれど意外とイージーモードで英語も話せるんじゃね?とか思ってました。 甘かった。なんと愚かな。 そこから一転、アメリカの入国審査であんなに詰められるとは思いませんでした。。 一人旅だしアメリカに友達がいるわけじゃないって言ったらホテルだとか会社名だとか質問攻めにあいましたww やっぱり甘くないじゃないか騙した
nginxのリクエスト数を制限する、ngx_http_limit_req_moduleの動作を勝手に勘違いして勝手にハマったというお話です。 大したことではないのですがdockerでその動作を再現した例はこちらです。 github.com 何にハマったのかというと、”5r/sが5req per secではない”のです。 ”2r/sも2req per secではない”のです。でも”1r/sは1req per secです”。なぞなぞでしょうか。 ...dockerのコンテナを動かしてshellを実行すると次のようなエラーログとアクセスログが出力されます。 nginx_1 | 2016/06/13 15:35:35 [error] 8#8: *18 limiting requests, excess: 0.995 by zone "five", client: 192.168.99.1, ser
リアルタイムログ解析としてEFKなどが定番のようになっていますが 実運用でなかなかEasticsearch導入に気がひけたりKibanaで細かい分析とビジュアライズができなかったり、 一方で本格的に分析のシステムを構築するならHadoopやCassandraなどでクラスタ組んだり有料のサービスを使ったりなど、 ちょっとデータ貯めこんでちょっと集計したいだけなのに気持ち的にもヘビーになることがあります。 そんな時、Fluentd+Norikra+MySQLとかで構築すると、直接DBにつっこむほどwrite頻度も多くないし 集計もSQLで取得もSQLで障壁が少なくて良いかなと思っていました。 ただ実際Norikraを試してみると、ログ内のtimestampを時間の基準とするext_timed_batchを使用した場合 ストリームのデータが前後して入力された時にデータが壊れる(意図しないデータが
昨年からIoT業界でソフトウェアエンジニアとして働いています。 IoTって何なのでしょうか? 入ったばかりの僕はそれを聞かれた時、なんとなく皆がわかっている程度の あらゆるThing(モノ)がInternet(インターネット)に繋がるんだよ と言っていたのですが、それだけ聞いてもはてな?と思う方が多いと思います。 ユビキタス社会という言葉は太古の昔からある幻想で僕は大学生のころに知りましたが、 ここ数年で少し夢物語でもあるようなその環境が現実的になってきました。 インターネットに繋げばスマホからいつでもどこでも家のエアコンを操作できたり 子どもやペットが特定の範囲に移動したらスマホに通知をしたり。 冷蔵庫内の食べ物の管理や家のドアの鍵の管理などは実際には浸透していないように思いますが まあでもそのうち当たり前になるのかもなとも思います。 それでも、あいおーてぃー(笑)だとかIoTは流行らな
Webサービスを継続的に開発運用していくうえで データベースのデータ構造の更新は避けられませんね。 複数人で開発する時に必須と言っても良いソースコードのバージョン管理ですが ソースコードのみならず、データベースのバージョン管理をすることで すでに存在するデータを壊さずに必要になった構造変更などを正確かつ便利に実行していくため データベースのマイグレーションツールを利用することが多くなってきました。 Ruby on RailsやCodeIgniter、Djangoなどフレームワークとセットで マイグレーションの機能を利用できるものもありますが 今回はそれ単体で動くPythonのDBマイグレーションツールであるsimple-db-migrateを使ってみました。 理由としては 生のSQLで書きたい シンプルな設定で、単純なUPとDOWNを実行したい 導入するサービスの下回りが主にPythonを
先月、僕が開発のマネージャーを努めていたサービスがクローズになりました。 こんなに無力さを感じたことがあったでしょうか。 ただ、得られたことや感じたことは大きいので 最後の振り返りとして書き留めようと思います。 立ち上げ 思い切った新規開発でリリースまで辿り着けずにプロトタイプの段階で打ち止めになったプロジェクトから 一転して既存のリソースを流用して内製の開発チームをつくることになり 初めて採用の面接官側をやりました。 採用面接と一口に言っても、考慮しなければいけないことは多方面に渡っていて 結局はバランスをとって何を重視するか判断して決めることになりますが 非常に重要であり難しい問題です。良さそうと感じた人がうまくハマらなかったり、 おとなしそうだなと思っていた人がバリバリ仕事できたり。 ただ、少なくとも現場の人間と面接するのは必須だなと。 社風に合うかも大事なんだろうけれど、所属する予
iTunes Connectが新しくなり、XcodeでArchive, Distriburionを実行して 生成したバイナリをitunes Connect上にアップロードする形になりました。 もともとiOSアプリのバージョンについての認識が甘く アップロード時にエラーが出て時間のかかるビルドを何度もやり直すハメになったので 忘れないようにまとめておきます。参考になれば幸いです。 バージョンに関する設定は3点あります。 iTunes ConnectのマイApp内の対象アプリのApp一般情報のバージョン設定 hoge-Info.plist内のCFBundleVersionの設定 hoge-Info.plist内のCFBundleShortVersionStringの設定 それぞれを説明します。 App一般情報のバージョン設定 これはユーザに見えるバージョン番号です。 一般的には3桁のピリオドで
このページを最初にブックマークしてみませんか?
『Usual Software Engineer』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く