タグ

ブックマーク / hakobe932.hatenablog.com (9)

  • シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべにっき ♨

    シェルスクリプトから"foreman start"したときにCtrl-Cで終了できないという現象に遭遇しました。なぜこのようなことが起こったのかについて調べてみたので解説します。一見不可解におもえるプロセスの振舞いをUNIXプロセスの仕組みをひもとき説明してみたというおもむきの記事です。 概要 foremanはシェルスクリプトから、"foreman start"のように起動したときにCtrl-C終了できません。シェルスクリプトでなくてもssh経由で ssh -t host foreman start のようにした場合でも同様の問題が発生します。これは、foremanがsetpgrpシステムコールを呼び出してプロセスグループのリーダになるという動作をしていたのが原因でした。 現象 以下のように "foreman start"をシェルスクリプトから実行すると、Ctrl-Cによりforemanを

    シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべにっき ♨
  • なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこのにあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。

    なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨
  • gRPCのロードバランシング - はこべにっき ♨

    先日の記事から引き続きgRPCについて勉強してる。 gRPCのサーバをプロダクトで利用する場合に気になるのが、ロードバランシングをどういう風にやったら良いのかということで、その部分について調べてみた。 TL;DR: gRPC Load Balancing を読めばだいたいわかる gRPCのロードバランシングのポイントとしては、gRPCが基的にはHTTP2上に構築された仕組みである*1ことに注意して考えると良さそうだった。 プロキシ によるロードバランシング まず考えられるのは、gRPCのサーバとクライアントの間にプロキシを設置してロードバランシングを行う方法だ。 よくあるHTTP/1.1の世界で考えると、複数のWebアプリケーションサーバの前段にnginxのようなリバースプロキシを設置してロードバランシングする方法になる。 gRPCはHTTP/2を利用するので、この方法の場合リバースプロ

    gRPCのロードバランシング - はこべにっき ♨
  • ドメイン駆動設計読んだ - はこべにっき ♨

    エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型購入: 19人 クリック: 1,360回この商品を含むブログ (130件) を見る ドメイン駆動設計読み終った。ドメインを中心に据えてソフトウェアを設計するための方法を教えてくれるだった。設計の話なので、抽象度が高く、なかなか読み辛いけど、良い話がたくさんでてくる。こので例にでてくるソフトウェアが経理システムだとか貨物の配送システムなどのエンタープライズよりだったので、はじめは自分のようなWebエンジニアとっては参考にしにくいかと思っていたのだけど、まったくそういうことはなく、たいへん参考になった。 ドメイン駆動設計でいうドメインとはソフトウェアが

    ドメイン駆動設計読んだ - はこべにっき ♨
    a2ikm
    a2ikm 2014/03/22
    積読してるし、そろそろ読むか…
  • Erlang入門した様子を3分で伝える試み - はこべにっき ♨

    プログラミングErlang を読んだので、Erlang入門的な内容を社内の3分LTでしようとしたけど、失敗した様子です。

    Erlang入門した様子を3分で伝える試み - はこべにっき ♨
    a2ikm
    a2ikm 2014/03/20
  • go言語によるhtmlcat実装 htmlcatgo の紹介 - はこべにっき ♨

    go言語の勉強に、motemenさんが作ったhtmlcat(標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days - subtech)をgoで実装してみました。この記事ではhtmlcatgoの紹介と実装の見どころについて解説します。 htmlcatgoの紹介 htmlcatgo は、標準入力をブラウザ上でtail -fできるソフトウェアです。元祖htmlcatの使い方とほぼ一緒です。 $ tail -f /var/log/messages | htmlcatgo のように実行すると、 2013/12/16 08:15:02 htmlcatgo: http://localhost:45273のようにURLが表示されます。これをブラウザで表示すると、画面にtail -fの結果がリアルタイムで流れてきます。元祖htmlcatにある --execオプ

    go言語によるhtmlcat実装 htmlcatgo の紹介 - はこべにっき ♨
    a2ikm
    a2ikm 2013/12/17
  • Erlangを学んでみてる - はこべにっき ♨

    Herokuがログ収集ツールの実装に使い始めたり(参考: Logging on Heroku)、RiakやCouchDBの実装に使われてたりというので興味を持って、プログラミングErlangを読んで見てる。2008年くらいの。 まだ半分くらいまでしか読んでないけど、アクターモデルの話とかはひと通り終わって、これから複数のノードでErlang上のプロセス連携させる話題に入る。処理系を起動させるだけで計算ノードになっていたりして、分散プログラミングに対するおもてなし度が高い。 並行プログラミングについて教えてくれる8章に練習問題がついていて、解けたらインターネットに公開しよう!って書いてあったので問題の引用と共に公開してみる。 リングのベンチマークを書いてみよう。N個のプロセスからなるリングを作り、1つのメッセージがリングをM回るようにして、 合計でN*Mのメッセージが送信されるようにする。

    Erlangを学んでみてる - はこべにっき ♨
    a2ikm
    a2ikm 2013/11/25
  • CoroはCoroutineのCoro - PerlでFiber - はこべにっき#

    Ruby勉強会@関西でFiberについて勉強してきた - はこべブログ ♨でPerlでもGeneratorをうまく書けるモジュールがないかなーとこぼしていたところ. perlではCoroでほぼ同じ事ができるが、どちらにしろCoroを使う利点は1個1個をresumeすることじゃなくて 非同期に実装することだと思うのでgenerator云々はちょっと用途が違う気もするです http://b.hatena.ne.jp/lestrrat/20090202#bookmark-11922880 というブコメをいただきました.id:lestrratさんありがとうございます. Coroについて調べてみたところ,Coro::Introによると The natural application for these is to include a scheduler, resulting in cooperati

    CoroはCoroutineのCoro - PerlでFiber - はこべにっき#
  • TitaniumのコードをGUIなしでエディタからすばやくbuildする - はこべにっき ♨

    最近ちまたではTitaniumが話題ですね。はてな技術勉強会で紹介されたのをきっかけに少しいじってみています。 Titanium開発では、通常Titanium DeveloperというGUIアプリケーションを使ってコードをbuildします。開発中は、どうしてもTitanium Developerとエディタとの行き来が必要で、なかなか不便です。 そこで、Titaniumのコードをvimなどのエディタから一発で、すばやくbuildできるようになるスクリプトを書いてみました。ついでにXCodeもTitanium Developerも(GUIの部分は)起動しなくてよくなります。 https://gist.github.com/715378 使い方 https://gist.github.com/715378 を Titaniumのプロジェクトの直下に置いて、 $ perl build.plのよう

    TitaniumのコードをGUIなしでエディタからすばやくbuildする - はこべにっき ♨
  • 1