View lambda-function.mk
HANDLERS = Hello \
my.LogAggregator \
my.CountDaily \
my.CountHourly \
supecial.LogCollector
BRANCH=$(shell git rev-parse --abbrev-ref @)
JAR=$(BRANCH)/myproject-assembly-0.1.jar
all:
View sleep-well.md

処理が成功するまで実行しつづける

インスタンスの起動スクリプトとかを書いてるときによく欲しいと思うやつです。

例えば、 service nginx start が実行されたあとに curl -i localhost | grep "200 OK" とかをすると、サービスがそれなりに動いていることが確認できてよかったりするのですが、あまりにも直後だとサーバの起動が間に合わず、curl が失敗してしまいます。nginxだとまだましだけど、アプリケーションサーバだとそれなりに時間がかかったりする。

古典的な解決方法は、 sleep 30 です。簡単だけど、アプリケーションが巨大になってくると30秒では起動しないこともある。じゃぁ sleep 60 が妥当か?でも、サーバインスタンスの起動スクリプト全体はできるだけ早く立ち上がってほしい。困った。

なので、curlが成功するまで叩き続ける、みたいなスクリプトに仕上げたくなるわけです。

View gateau_au_chocolat.md

ガトーショコラ

  • 調理時間70分

材料 (18cm 丸形1台分)

  • チョコレート (製菓用でも板チョコでも) 150g
  • バター (無塩) 100g
  • 砂糖 70g
  • 卵 3個
View Build.scala
import sbt._
import sbt.Keys._
import com.earldouglas.xwp.XwpPlugin._
import sbtassembly.Plugin._
import AssemblyKeys._
object BuildSettings {
val buildOrganization = "jp.zucks"
val buildVersion = "1.0.0-SNAPSHOT"
val buildScalaVersion = "2.11.6"
View rule.md

新社会人が守るべきだがほとんど誰も教えてくれない社会のルール

  • トイレットペーパーホルダーが二つあるトイレでは、紙が少ないほうを先に使いましょう
View readme.md

負荷低すぎ問題は障害ではなくパフォーマンスチューニング

負荷低すぎはもはや障害じゃないのかという記事の話。

そうすると、 『イベントで一時的にc4.4xlarge(8万/月)にして、そのまま最大CPU使用率10%とかで数ヶ月放置されている』 みたいなのはビジネス的な損失という意味で明らかに障害で、監視すべきじゃないだろうか?

とのこと。

View MSE.scala
package mse
import java.io._
import org.bytedeco.javacpp.helper.opencv_core.AbstractCvMat
import org.bytedeco.javacpp.opencv_core._
import org.bytedeco.javacpp.opencv_highgui._
object MSE {
def main(args: Array[String]) {
val ms =
View techass.md

エンジニアの評価観点について

こんにちは。 @katzchangです。

VOYAGE GROUPでは人事評価制度の一つとして技術力評価会というのが年に2回ほど開催されて、半年くらいの仕事から何かテーマをピックアップしつつ、別チームのエンジニア2名とお話をしつつ、なんと評価までされてしまうという、とても楽しい会があります。

評価する側のエンジニアも多様で、ある程度の評価軸はありつつも、それぞれの質問や評価はそれなりに個性が出るものだろうなーと眺めています。ということで、私なりの質問や評価のポイントをいくつか挙げてみます。

質問に対して明確に答えるための手段を知っているか?

View sigdump
```
Sigdump at 2014-08-10 18:45:49 +0900 process 1977 (/usr/sbin/td-agent)
Thread #<Thread:0x007f191859bf68> status=run priority=0
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:38:in `dump_backtrace'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:24:in `block in dump_all_thread_backtrace'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:23:in `each'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:23:in `dump_all_thread_backtrace'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:16:in `block in dump'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:107:in `open'
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/sigdump-0.2.2/lib/sigdump.rb:107:in `_open_dump_path'
View curry.php
<?PHP
class F {
public static function curry($f) {
return new F($f);
}
private function __construct($f, $args = []) {
$this->f = $f;
$this->args = $args;