トップ «前の日(06-29) 最新 次の日(07-01)» 追記   RSS 1.0 FEED  

Journal InTime


2005-06-30 (Thu)

_ [Ruby] Google Summer of Code for Mono

ものがたり経由:

Jaen Saul: Ruby.NET implementation

Florian GroB: Ruby.NET

[Summer2005 - Monoより引用]

Ruby.NETが二つ採用かあ。

_ [tDiary] 「httpの数」を閾値にするフィルタ

そこで、樂水開発日記にあった「httpの数」を閾値にするフィルタを導入。これは賢いね!

[ただのにっき(2005-06-30)より引用]

実はやまださんがすでに以前に公開されていたようです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ ただただし [がーん。その記事は、読んでいたはずなのに……]

_ Florian Gross [(Mirrored from matz' blog.) Sorry for posting in English...]


2006-06-30 (Fri)

_ [Ruby] Binding.of_caller

Binding.of_callerを実装しようと思い立った。

SCOPEのflagsをprevにしてRBasicのflagsを使うようにしたところまでは よかった*1のだが、ruby_dyna_varsどう しようと思ってPUSH_FRAME時にFRAMEに突っ込んでしまったり、vis_mode とかもあるじゃん、とか思ったらもう面倒になって挫折。

とりあえず、パッチを放置しとこう。

binding_of_caller.diff

以下のコードくらいなら期待通り動く。

def Object.foo
  eval("p [self, x, y, z]", Binding.of_caller)
end
x = 1
1.times do
  y = 2
  1.times do
    z = 3
    Object.foo
  end
end

*1  本当は予期せぬ所でRBasicのflagsを書き換えてしまった せいでGCで落ちて大変だったんだけど。


2014-06-30 (Mon)

_ [Ruby][InfluxDB] InfluxDBの古いデータの削除

InfluxDBを試しているが、InfluxDBには今のところ古いデータを自動で削除する機能がない(対応予定はあるようだ)。

古いshardを丸ごと削除するのが効率がよいらしい(InfluxDBでは一定期間ごとにshardが作成される)ので、以下のようなcron用スクリプトを書いてみた。

require "influxdb"

USER = "root"
PASS = "root"
TTL = "1d"

def parse_ttl(ttl)
  case ttl
  when /\A(\d+)s\z/
    return $1.to_i
  when /\A(\d+)m\z/
    return 60 * $1.to_i
  when /\A(\d+)h\z/
    return 60 * 60 * $1.to_i
  when /\A(\d+)d\z/
    return 24 * 60 * 60 * $1.to_i
  else
    raise "invalid TTL - #{ttl}"
  end
end

secs_to_live = parse_ttl(TTL)
influxdb = InfluxDB::Client.new

for shard in influxdb.get_shard_list["shortTerm"]
  end_time = Time.at(shard["endTime"])
  if Time.now - end_time > secs_to_live
    influxdb.delete_shard(shard["id"], shard["serverIds"], USER, PASS)
  end
end

InfluxDBでは小文字で始まる名前のseriesは短期間(short term)、大文字で始まる名前のseriesは長期間(long term)と決まっているが、上記のスクリプトでは短期間のshardだけ削除するようにしている。

ただ、デフォルトでは各shardの期間が7日間になっているので、それよりも短い期間でshardを削除する場合は/opt/influxdb/shared/config.tomlの設定を以下のように変更しておく必要がある(この例では6時間に設定している)。

[sharding.short-term]
duration = "6h"

/opt/influxdb/current/config.tomlの方を変更しても反映されないので注意。


2018-06-30 (Sat)

_ [Ruby] 松江Ruby会議09

松江Ruby会議09に参加した。

LTで何か喋ってほしいとのことだったので、Rubyでスレッドをつくる話をしてきた。

もちろん実用性はないけど、Ruby 3でも継続が残るようなので、玩具として遊ぶ分には問題ないはず。スライドにも書いてあるように、TracePointのフック内の継続を取り出してフックを抜けた後でcallしたりするとおかしなことになる。継続を使う時は何が起きても泣かないこと。

恒例になりつつあるRuby Quizでは、途中で間違えるつもりが最終問題に行く前に一人だけ残ってしまったので、ファーエンドテクノロジー様からオライリー書籍一万円分をいただいてしまった。

今回も楽しい会議だった。来場者、スタッフ、スポンサーのみなさん、ありがとうございました。