ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

複数のremoteにgit pushしたい

git remote set-url --add ${remote} して上げれば良い。

# git clone git@github.com:masasuzu/p5-Acme-LoveLive.git
cd p5-Acme-LoveLive
git remote set-url --add origin git@bitbucket.org:masasuzu/p5-acme-lovelive.git
# git push

この例だとgithubとbitbucket両方にpushするようになっているが、githubと社内のgitサーバ両方同期したいときにどうすれば良いのかなーと調べて出てきた一つの答えがこれ。

定期的にcronで同期させるとタイムラグがあるのに対して、こっちだとリアルタイムに同期出来るのが利点かな。ただ、cloneした後にこの設定忘れると、社内のミラーレポジトリが古いままになってしまって非常に面倒くさくなることもあり得るのが注意点ではある。 cronで同期方式とgit push時に同期方式、一長一短ではあるが、さて。

あと思いついた方法としてgithubのwebhook飛ばして、それをhookにしてfetchするとか、jenkinsさんお仕事任せるとかそういう方法もありますね。

Fluentdのfilter_grepの設定で少しはまった。

fluentd 0.12.15 の話です。

結論から言うとFluentdのfilter_grepが、keyの後にスペース1個しか許容してくれません。 なので、下記のようにそろえるために、スペースを余分に入れると、意図しない正規表現になってしまいます。

<filter fluent.info>
  type            grep
  exclude1        message    (?:^out_forest plants new output|adding rewrite_tag_filter rule)
</filter>

正しくはこう。

<filter fluent.info>
  type            grep
  exclude1        message (?:^out_forest plants new output|adding rewrite_tag_filter rule)
</filter>

ソース的にはこのあたりで、スペース一個でsplitしてるので、2個目以降のスペースはregexに含まれてしまうという。

key, regexp = conf["regexp#{i}"].split(/ /, 2)

out_rewrite_tag_filterと同じ感覚で設定すると自分のようにはまるのが請け合いという話でした。

<match static.access.**>
  type              rewrite_tag_filter
  rewriterule1      vhost       (?:hogehoge.jp|fugafuga.jp)     ignore
  rewriterule2      uri         (?:/favicon.ico|/robots.txt)    ignore
  rewriterule3      vhost       (.*)                            static.access.site.$1
</match>

以上です。今日1時間くらいはまってた話でした。

Fluentdのmonitor_agentを動かしたい

設定ファイルにこう書いて再起動するだけ。

<source>
  type monitor_agent
  bind 0.0.0.0
  port 24220
</source>

拡張子jsonを付けるとJSONで結果が返ってくるので、jqと組み合わせるとか、プログラムで処理しても良い。何も付けないとLTSVで結果が返ってくる。

curl --silent localhost:24220/api/plugins.json 

ちなみにもともと自分が、やりたかったことはforwardのキュー溢れしてないかどうかなのでこういう風にしてあげれば良い。

% curl --silent localhost:24220/api/plugins | grep forward | grep plugin_category:output
plugin_id:object:3fb168dda99c   plugin_category:output  type:forward    output_plugin:true      buffer_queue_length:3   buffer_total_queued_size:1447111        retry_count:0
plugin_id:object:3fb16aad87d8   plugin_category:output  type:forward    output_plugin:true      buffer_queue_length:77  buffer_total_queued_size:26217068       retry_count:0
plugin_id:object:3fb168667b9c   plugin_category:output  type:forward    output_plugin:true      buffer_queue_length:27  buffer_total_queued_size:21915109       retry_count:0
plugin_id:object:3fb1687cb9fc   plugin_category:output  type:forward    output_plugin:true      buffer_queue_length:54  buffer_total_queued_size:2465405        retry_count:0
plugin_id:object:3fb168d580a0   plugin_category:output  type:forward    output_plugin:true      buffer_queue_length:13  buffer_total_queued_size:421007 retry_count:0

FluentdのBufferedOutputの挙動を知るためのリソース メモ

Fluentdのforward回りで少しはまってたときに役に立ったリソースメモ。 解決しつつあるので、その件についても後で書く

tagomoris.hatenablog.com

blog.glidenote.com

qiita.com

Acme::LoveLiveがサンシャインに対応した

なんとなく某所から圧力がかかったので、雑に対応しました。

% perl -Ilib -MAcme::LoveLive -E 'binmode STDOUT => "utf8";say join(":", $_->fullname_ja, $_->cv) for Acme::LoveLive->unit("Aqours")->members'
小原鞠莉:鈴木愛奈
津島善子:小林愛香
黒澤ダイヤ:小宮有紗
高海千歌:伊波杏樹
桜内梨子:逢田梨香子
松浦果南:諏訪ななか
黒澤ルビィ:降幡愛
国木田花丸:高槻かなこ
渡辺曜:斉藤朱夏

ご査収ください。

github.com

www.lovelive-anime.jp

というか、9人中5人も名前がで始まるのかー。

crystal langことはじめ

crystalをちょっと触ってみたくなったので、hello worldするまで。 基本ドキュメントに書いてあります。

crenv(anyenv)で実行環境をインストール

anyenvは入ってる前提です。plenvやrbenvと同じノリで、開発したいのでcrenvを使います。

github.com github.com

crenvをインストール

cd ~/.anyenv
git pull
anyenv install crenv
exec $SHELL -l

crenvをインストール

現時点で最新の0.7.5をインストール

crenv install 0.7.5
exec $SHELL -l
crenv global 0.7.5

ちゃんとインストールされてることを確認。

% crenv versions
* 0.7.5 (set by /Users/masasuzu/.anyenv/envs/crenv/version)

% crystal --version
Crystal 0.7.5 [2a33a87] (Thu Jul 30 17:19:13 UTC 2015)

プログラム実行

こんな内容の hello.cr を書きます。

puts "hello world"

crystalもしくはcrystal runで実行出来ます。

crystal hello.cr
# もしくは
crystal run hello.cr

crystal buildで実行バイナリを生成してくれます。

crystal build hello.cr
./hello

--release オプションを付けると最適化してビルドしてくれます。

crystal build hello.cr --release

蛇足:プロジェクト作成

crystalには言語標準でプロジェクトの雛形を作ってくれる機能があります。べんり!

crystal init appでアプリケーション、crystal init libでライブラリプロジェクトの雛形が作れます。

% crystal init app hello-world
      create  hello-world/.gitignore
      create  hello-world/LICENSE
      create  hello-world/README.md
      create  hello-world/.travis.yml
      create  hello-world/Projectfile
      create  hello-world/src/hello-world.cr
      create  hello-world/src/hello-world/version.cr
      create  hello-world/spec/spec_helper.cr
      create  hello-world/spec/hello-world_spec.cr
Initialized empty Git repository in /Users/masasuzu/project/crystal/tmp/hello-world/.git/

SEE ALSO

http://crystal-lang.org/api/

crystal-lang.org

qiita.com

東京都内で3回以上改札出る用事があるときは都区内パスが便利なときもある

最近、JR使う時は都区内パスを使うことが多いです。750円で都区内のJRは乗り放題なので、3回以上改札外に出る用事があるときは、お安くなることが多いです。

-東京フリーきっぷ

東京フリーきっぷというのもあって、こちらは1590円で都区内の都バス、地下鉄、日暮里舎人ライナー、JRが乗り放題なので、使い勝手が良いです。 特にバス使う場合にはこちらを使う方が特になるパターンありそうです。

事前に運賃を計算してみて、うまく使ってみると良いのでは無いでしょうか?

hiki2mdを書いてる

github.com

前回書いた記事で撤去したhikiサーバにあったドキュメントを再利用しやすいようにmarkdown形式にしておきたいなと思い、ちょっと書いてます。

ソース見ると分かるんですが、正規表現でごりっとしてます。これだとテーブルの置き換えがかなり無理げです。そのほか整形済みテキストの中にhiki記法があったら、簡単に死んでしまいます。

こういう場合、やはり、トークンに分解した上でそっから目的の形式に変換するのが定石なんですかね?

もうちょっとなやんで書きます。

refs

masasuzu.hatenadiary.jp

さくらのレンタルサーバを解約した

特にネガティブな理由はなくて不要になったので、解約しました。

f:id:masasuz:20150719211722p:plain

7年間使っていたことになります。ありがとうございました。 とはいえ、一括で払ってるので来年の2月までは契約が残ってます。

もともとこのサーバは http://masasuzu.net をホストするために使っていたサーバです。

  • ぺらいちのHTMLページ
  • Hiki
  • tDiary
  • メールサーバ

の4つの役割を持っていましたが、ぺらいちのページは別で持っているVPSもしくはGithub Pagesに移行出来ますし、HikitDiaryも使っていないので、維持する必要が無い。 そして、メールもgmailに全部寄せてしまえば、とくに独自ドメインのメールアドレスも必要無いということで、完全に役割が無くなってしまったのでした。

とはいえ、もろもろの移転作業が面倒くさい + 年間1500円ちょいしか費用かかってなかったので、ちょっと億劫になっていたのですが、このまま放置する方が将来のコストが高いなと思い立ち、解約することにしました。

移転作業は、なんだかんだで、@masasuzu.netのメールアドレスで作っていたアカウントが多くて、そこの変更作業が面倒くさかったです。

ぺらいちのページは本体のページはGithub Pagesに置いて、VPSのnginxでリバースプロキシしてます。なんでこんな面倒なことしてるかというと、仕様上トップのDNSエントリはCNAMEできないので、仕方なくVPSの方に名前を振っています。

tDiaryのデータはもう捨てて問題ないのですが、Hikiのデータはまだ有用なものがあるので、そのうちmarkdown化してGithubレポジトリにデータを置いておきたいな思います。

さくらさん7年間ありがとうございました。