yhara.jp

Recent Posts

How to use file logger in Sinatra

2016-09-28
Tech

When 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
(more...)

Building rogue on Mac OS El Capitan

2016-09-27
Tech

Usually you can install rogue with Homebrew(brew install rogue). However, when you want to read the source code, you may want to compile it by hand. Here's how (based on the recipe file).

  1. Download http://pkgs.fedoraproject.org/repo/pkgs/rogue/rogue5.4.4-src.tar.gz/033288f46444b06814c81ea69d96e075/rogue5.4.4-src.tar.gz and extract it
  2. (Optionally run git init; git add .; git ci -m "untar" so that you can easily check what you've changed)
  3. run brew install ncurses
  4. run CPPFLAGS="-DNCURSES_OPAQUE=0" ./configure
  5. run make
  6. run ./rogue and the game will start.

ブログを作る(6)

2016-09-26
Tech

自分のサーバにデプロイして、外から見えるようになった。実はRubyKaigiの初日くらいにデプロイしてたんだけど、新規記事の作成ができなくなっていて、ちょっと間が空いてしまった。

バグ自体は既知のもので手元では直していたのだが、git pushを忘れていて修正前のものがデプロイされていたのだった。それとは別にSinatraのloggerがログを記録してくれない?という現象があり、原因を把握するのが大変だった。Sinatraのログについては別途記事を書く。


ブログを作る(5)

2016-09-07
Tech

なんか色々やった。だいぶブログらしくなってきたと思う(見た目的にはまだまだだけど、機能として)。この装飾がなさすぎる感じ、逆にいいかもという気分になってきた。redcarpetでmarkdownをレンダリングするようにしたので、リストとかはちゃんと使えている。

タイムゾーンについて

現在はDBにはUTCで保存していて、設定ファイルでユーザ(書き手)の好きなタイムゾーンを設定できるようになっている。こういう構成なので、日付を扱うときはつねにタイムゾーンについて考慮する必要がある。

今日ちょっと問題になったのは、編集画面のdatetime入力欄。前回決めたように各記事がdatetime(記事の日付と、ソートのための時刻)をもつのだけど、これを入力するのにTime.parseを使うと、「2016-09-07」とだけ書いたときにどうなるだろうか?

答えは「デプロイしたサーバのタイムゾーン設定の影響を受ける」で、このままだとトラブルの予感がひしひしとするので、設定ファイルのタイムゾーンと見なしてパースさせたい。調べてみると、ActiveSupportにTime.zone.parseというそのものずばりなメソッドがあったので、それを使うようにして解決。


ブログを作る(4)

2016-09-03
Tech

そういえば日付の扱いについてちゃんと考えてなかったが、思ったより複雑っぽい。

  • post.date
    • ユーザが入力する
    • 記事のURLに含まれる
  • post.published_at
    • 記事が最初に一般公開状態になったときに設定し、変更はしない
    • フィードのpublished欄に使用
  • post.updated_at
    • (ActiveRecordによって)自動的に設定される
(more...)

ブログを作る(3)

2016-08-24
Tech

これは3番目の記事である。

一応、管理画面ができて、記事を書けそうな感じになってきた。それはいいけど、管理画面の実装とRSpecによるテストとあれやこれやを一度にやってたらdiffがぐちゃぐちゃになってしまった。

まあ一人プロジェクトだし最序盤だからモノリス的コミットになってしまうのは別にいいといえばいいんだけど、現状が把握できなくなると急速にやる気が失われていくという問題があって、それはとてもまずい。

趣味プロジェクトであっても、モチベーションを維持していくためにはちゃんと「やることリスト」みたいなものを作った方が良いのかもしれない。そうすれば「いま何の作業をしているのか」が明確になるし、達成感もより短いスパンで得られるようになるはず。

とりあえず日付を入力する欄がないことに気づいたので次はそれだな(この記事は2016年8月24日に書かれた)


ブログを作る(2)

2016-08-16
Tech

前回からちょっと間が空いてしまった。これは二番目の記事である。

とにもかくにも、記事を書く機能を優先して作ったほうが良さそうだ。前回と同じくこの記事もviews/index.slimに直書きしている。このままでは単なる日記になってしまう。

記事の保存先はRDBにする予定だ。jekyllなどのように静的ファイルをコンパイルすることも考えたけど、「ブラウザ上で記事を書きたい」という要件があるので、普通にActiveRecordでやるのが実装が一番簡単だという結論になった。


ブログを作る

2016-08-11
Tech

自分のためのブログエンジンを作ろう、と思ってどれくらい経っただろうか。

少なくとも数年はくだらないはず。二度ほどチャレンジしては途中で放置した記憶がよみがえる。どうも、「やろう」という気持ちに手が追いつかないことが多くて困ってしまう。否、本当はそれほど困っていないからこそのこの体たらくなのだろうけど。

「やろう」を「やった」に変えるためには、兎にも角にも手を付けないことには始まらない。ということでこのpostを書いているのである。前回前々回の失敗は、記事を用意せずにブログエンジンを作り始めたことにあるように思う。記事が無くてもブログエンジンは作れるが、ブログには記事が必要なのだ。

ブログエンジンは今のところ名前だけ決めていて、nlog2という。まだ記事を書く機能がないので、この記事はviews/index.slimに直接、文章をベタ書きすることによって執筆された。ブログの公開はある程度機能ができてからにするつもりだったけど、とりあえず表示はできているのだから、このまま公開してしまうのも面白いかもしれない。まあ明日以降に考えよう。


Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author