2016-10-03
TechTwitterにはスライドを貼ったんですがブログに書いてなかったので載せておきます。
fluentdコミッタのtagomorisさんが松江に来られるというので発表してきました。fluentd印の魔剤エナジードリンク美味しかったです。
内容はfluentdと直接の関係はないですが、ログつながりということで…。
文中、RailsのproductionのログレベルがINFOと書いていますが、Rails5からはDEBUGだそうです。
2016-09-28
TechThere is a guide for adding basic auth to your Sinatra app.
Password is hardcoded in the short example, but in production, you may want a securer way.
bcrypt is the gem for you.
bcrypt
Add gem "bcrypt"
to your Gemfile. (Don't confuse it with bcrypt-ruby gem, which is its former name)
Then you can generate a password hash like this:
2016-09-28
TechWhen you do google search with "sinatra logging file", you may find a solution with Rack::CommonLogger
. However I was looking for a different approach because it does not respect interface of the logger
stdlib. Instead of calling the usual logger.info
, Rack::CommonLogger
forcefully inject output with logger.write
.
As a result, your log file will look like this. The first line is written by Rack::CommonLogger
, which has completely different format with the usual logger output on the second line. This may be a problem when you write a program to parse and analyze the logfile.
::1 - - [27/Sep/2016:02:44:42 +0900] "GET / HTTP/1.1" 200 2 0.0077
I, [2016-09-27T02:44:42.416430 #49814] INFO -- : hello world
2016-09-27
Tech2016-09-26
Tech自分のサーバにデプロイして、外から見えるようになった。実はRubyKaigiの初日くらいにデプロイしてたんだけど、新規記事の作成ができなくなっていて、ちょっと間が空いてしまった。
バグ自体は既知のもので手元では直していたのだが、git pushを忘れていて修正前のものがデプロイされていたのだった。それとは別にSinatraのloggerがログを記録してくれない?という現象があり、原因を把握するのが大変だった。Sinatraのログについては別途記事を書く。
2016-09-07
Techなんか色々やった。だいぶブログらしくなってきたと思う(見た目的にはまだまだだけど、機能として)。この装飾がなさすぎる感じ、逆にいいかもという気分になってきた。redcarpetでmarkdownをレンダリングするようにしたので、リストとかはちゃんと使えている。
タイムゾーンについて
現在はDBにはUTCで保存していて、設定ファイルでユーザ(書き手)の好きなタイムゾーンを設定できるようになっている。こういう構成なので、日付を扱うときはつねにタイムゾーンについて考慮する必要がある。
今日ちょっと問題になったのは、編集画面のdatetime入力欄。前回決めたように各記事がdatetime(記事の日付と、ソートのための時刻)をもつのだけど、これを入力するのにTime.parseを使うと、「2016-09-07」とだけ書いたときにどうなるだろうか?
答えは「デプロイしたサーバのタイムゾーン設定の影響を受ける」で、このままだとトラブルの予感がひしひしとするので、設定ファイルのタイムゾーンと見なしてパースさせたい。調べてみると、ActiveSupportにTime.zone.parseというそのものずばりなメソッドがあったので、それを使うようにして解決。
2016-09-03
Techそういえば日付の扱いについてちゃんと考えてなかったが、思ったより複雑っぽい。
- post.date
- post.published_at
- 記事が最初に一般公開状態になったときに設定し、変更はしない
- フィードのpublished欄に使用
- post.updated_at
- (ActiveRecordによって)自動的に設定される
2016-08-24
Techこれは3番目の記事である。
一応、管理画面ができて、記事を書けそうな感じになってきた。それはいいけど、管理画面の実装とRSpecによるテストとあれやこれやを一度にやってたらdiffがぐちゃぐちゃになってしまった。
まあ一人プロジェクトだし最序盤だからモノリス的コミットになってしまうのは別にいいといえばいいんだけど、現状が把握できなくなると急速にやる気が失われていくという問題があって、それはとてもまずい。
趣味プロジェクトであっても、モチベーションを維持していくためにはちゃんと「やることリスト」みたいなものを作った方が良いのかもしれない。そうすれば「いま何の作業をしているのか」が明確になるし、達成感もより短いスパンで得られるようになるはず。
とりあえず日付を入力する欄がないことに気づいたので次はそれだな(この記事は2016年8月24日に書かれた)
2016-08-16
Tech前回からちょっと間が空いてしまった。これは二番目の記事である。
とにもかくにも、記事を書く機能を優先して作ったほうが良さそうだ。前回と同じくこの記事もviews/index.slimに直書きしている。このままでは単なる日記になってしまう。
記事の保存先はRDBにする予定だ。jekyllなどのように静的ファイルをコンパイルすることも考えたけど、「ブラウザ上で記事を書きたい」という要件があるので、普通にActiveRecordでやるのが実装が一番簡単だという結論になった。
2016-08-11
Tech自分のためのブログエンジンを作ろう、と思ってどれくらい経っただろうか。
少なくとも数年はくだらないはず。二度ほどチャレンジしては途中で放置した記憶がよみがえる。どうも、「やろう」という気持ちに手が追いつかないことが多くて困ってしまう。否、本当はそれほど困っていないからこそのこの体たらくなのだろうけど。
「やろう」を「やった」に変えるためには、兎にも角にも手を付けないことには始まらない。ということでこのpostを書いているのである。前回前々回の失敗は、記事を用意せずにブログエンジンを作り始めたことにあるように思う。記事が無くてもブログエンジンは作れるが、ブログには記事が必要なのだ。
ブログエンジンは今のところ名前だけ決めていて、nlog2という。まだ記事を書く機能がないので、この記事はviews/index.slimに直接、文章をベタ書きすることによって執筆された。ブログの公開はある程度機能ができてからにするつもりだったけど、とりあえず表示はできているのだから、このまま公開してしまうのも面白いかもしれない。まあ明日以降に考えよう。