書いたコードをデーモンとして動かすときに、手抜きしてnohupでバックジョブに投げていたんですが、id:kenkitiiさんに 「rubyにGodという便利なものがあるよ」と教えてくれました。 このGodってどういうもの? 通常のプログラムをデーモンとして動かせます。 設定をrubyで記述します。 色々な機能が付いてたりもします。 で、使ってみたら便利すぎてびびりました。 とりあえずプロセスが落ちたときのメール通知をgmail経由にしたかったので、対応できるようにしてみました。 サンプルコード 'test.rb' を作成 ただカウントだけのゴミコードです。 n = 0 while true puts (n += 1) sleep 1 end godで読み込む設定ファイル 'test.god' を作成 notify_smtp()にtlsを対応させています。 require 'tlsmail'
gistfile1.rb פ�yU # run with: god -c /path/to/config.god [add -D if you want to not-deamonize god] # This is the actual config file used to keep the delayed_job running APPLICATION_ROOT = "/var/www/application" RAILS_ENV = "production" God.watch do |w| w.name = "delayed_job_production" w.interval = 15.seconds w.start = "/bin/bash -c 'cd #{APPLICATION_ROOT}/current; /usr/bin/env RAILS_ENV=#{RAILS_E
Upstartは、いくつかのUnix系コンピュータオペレーティングシステムで起動時にタスクを実行する手法として古くから備わるinitデーモンの代わりとなるもので、イベント駆動型である点に特徴がある。Upstartは、当時カノニカルの従業員であったスコット・ジェームズ・レムナント(英語版)が開発した。 原理の説明[編集] 元々古くから備わるinitプロセスは、電源オンの後にコンピュータを通常の起動状態にすることや、シャットダウン前にきちんとサービスを終了することにしか責任を持たなかった。このため、前記の設計により現在のタスクが完了するまで将来のタスクは厳格に同期化され、さらにブロックされてしまう。さらに準備やクリーンアップ機能による制限を受けるため、これらのタスクはあらかじめ定義されねばならない。これでは現代のデスクトップコンピュータにおけるスタートアップ以外の、以下に挙げるような様々なタス
こんにちわ、やんだー(・ω・`;)です。 iOS7が登場して、iPhoneアプリのアイコンの画像も 新しいサイズが追加されたようです。 主がiOS7が登場した後に、アプリのバージョンアップ申請を出したところ、 こんなメールが送られてきました。 We have discovered one or more issues with your recent delivery for "アプリ名". Your delivery was successful, but you may wish to correct the following issues in your next delivery: Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of e
Illustrator CS4でアートボードのサイズを変更するには次の手順で行います。 ドラッグして行う方法 ツールボックスの[アートボードツール]をクリックして選択します(キーボードショートカットはshift+Oキー)。 アートボードがバウンディングボックスのように選択されるので、ハンドルをドラッグしてサイズを変更 選択したオブジェクトにアートボードを合わせる 選択しているオブジェクト、または、ドキュメントのオブジェクト全体に対して、アートボードの大きさを調整することができます。 ツールボックスの[アートボードツール]をクリックして選択 画面上部のコントロールパレットに[アートボード]関連のオプションが表示されるので、プリセットのプルダウンメニューから[アートボードを選択したアートに合わせる]を選択 [アートボードをアートワークのバウンディングボックスに合わせる]を選択すると、すべてのア
「Objective-CのBlocksの循環参照とその解決策」では、Blocksのメモリ管理の難しさと、世間ではよく使われている「weakSelfパターン」があまり良くないのではないかということを書きました。 このブログでは、いろいろ考えた結果たどりついた、僕が考えるBlocksの使い方を書きたいと思います。 サンプルをgithubに載せましたので、良ければそちらも参照してください。( BlocksMemoryExample ) Blocksを安全で便利に使うために必要なこと 先に、Blocksを安全で便利に使うためには、どんなことが必要なのかというのを考えておきたいと思います。 循環参照におちいらず、使用後に解放される。 使い手が内部の実装をできるだけ意識する必要がない。 おまじない的なコードを書く必要がない。 できるだけBlocksに渡すオブジェクトの存在を保証する。 そして、Bloc
半年までは、Objective-Cでコールバックの処理は、delegateを使って実装していました。しかし、delegateによるコールバックは処理の繋がりが分かりにくいというデメリットがあります。 これは皆さん感じるところだと思いますが、実際に最近のObjective-C開発は、Blocksを使って記述するのがトレンドだと思います。 ただ、メモリ管理に関して少し注意しなければならない点があるので、検証結果も合わせて記していきたいと思います。(少し長くなるので2回にわけて書きたいと思います。) Blocksで処理を行う これは簡単なサンプルです。BlocksRunnerクラスは、Blocksで渡された処理を保持し、runメソッドが呼ばれた時にその処理を実行します。 int main(int argc, const char * argv[]) { @autoreleasepool { Bl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く