BiwaScheme 1.0.0に向けて
BiwaSchemeはもともと修論のために作り始めた処理系なんだけど、ということは、来年で10周年になるということに気がついた。途中、放置してた期間もそこそこあるけど、issue/PRくらいは対応しようとしているうちになんだかんだで10年。10年かぁ…。
せっかくなので、来年に1.0.0をリリースしようかなという気分が高まってきた。というかもう1.0.0にしちゃおうかなとも一瞬思ったのだけど、バージョニング的には非互換を入れやすいタイミングなので、何を入れるかについてもう少し検討することにした。
Schemeプログラムの読み込みについて
現状のBiwaSchemeで一番直したいと思うところがSchemeプログラムの記述方法にあって、以下は例なんだけども、
<script src="biwascheme.js">
BiwaScheme 0.6.6をリリースしました
https://github.com/biwascheme/biwascheme/releases/tag/0.6.6
0.6.5でエラーが正常にレポートされないという、実用上困りそうなリグレッションがあったのでそれの修正が主。最近マージしたPRでのリグレッションだった。
そういうわけで前回リリースから比較的短かったけど、リリース間隔が長いと手順を忘れてしまって作業がめんどくさくなったりするので、忘れない程度にリリースをやったほうが良いかもなと思った。
ブログを作る(7)
やることリストの中に「年別・月別のページを作る」というのがあって、簡単そうだからやってしまおうかなと思ったのだけど、実はそれほど役立たないことに気づいた。
自分が人のブログを読むときどうしてるかを考えると、「記事一覧」か、「カテゴリ」を実装するのがよさそう。あとは「前後の記事」もけっこう読むかもなあ。
記事一覧ページ
記事の一覧ページは、ブログによって記事のタイトルだけが出るタイプと、タイトルに加えて記事の冒頭が出るタイプがある。後者はたとえばjekyllとか。冒頭がどこまでなのかは、本文中にマークを入れることでユーザが明示する。「続きを読む」機能と呼ばれることもあるね。
ところではてなブログの記事一覧ページってどんなだったっけと見てみたら、記事の先頭から一定文字数が表示されるっぽい。マークを入れなくても勝手に冒頭が判断されるのは便利そう。
enumerable-lazy gem 0.0.2をリリースしました
enumerable-lazyという古いgemがあるのだが、なんかこれのリリースをしてほしいという連絡が来た。deprecatedなgemのライセンスがrubygems.org上で明示されていることにどれほどの意味があるのか分からないが、とりあえずやってみることに。
と思ったがgemのpushが通らない。そういえば、rubygems.orgのアカウントを2つ持っていることを思い出した。rubygems.orgって大昔はgemcutter.orgという名前だったんだけど、サイト名が変わるときに間違って新規登録しちゃったんだよな、確か。
ということで古いアカウントでログインし直す必要がある。面倒だ。とりあえず~/.gem/credentialsをリネームして読めないようにして、以下を実行。
% gem owner enumerable-lazy --add (新しいアカウントのメールアドレス)
EmailとPasswordを聞かれるので、古いアカウントでログイン。これでgemのownerを追加できたので、~/.gem/credentialsをもとに戻してrake release。
ということで無事リリースできましたが、Enumerable#lazyはRuby 2.0から本体に取り込まれているので、いまさらインストールする必要は全く無いですよ!
(2016/10/05追記:issueで教えてもらったのだけど、grape 0.16.2→mustermann19→enumerable-lazyという依存関係だったみたい。そのため古いgrapeを使っているとlicense_finderでエラーが出ると。最新のgrapeではこの依存は取り除かれている。)
最近の発表(2016夏)
Twitterにはスライドを貼ったんですがブログに書いてなかったので載せておきます。
Fluentd meetup in Matsue
fluentdコミッタのtagomorisさんが松江に来られるというので発表してきました。fluentd印の魔剤エナジードリンク美味しかったです。
内容はfluentdと直接の関係はないですが、ログつながりということで…。 文中、RailsのproductionのログレベルがINFOと書いていますが、Rails5からはDEBUGだそうです。
Using bcrypt with Sinatra basic auth
There 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:
How to use file logger in Sinatra
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
Building rogue on Mac OS El Capitan
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).
- Download http://pkgs.fedoraproject.org/repo/pkgs/rogue/rogue5.4.4-src.tar.gz/033288f46444b06814c81ea69d96e075/rogue5.4.4-src.tar.gz and extract it
- (Optionally run
git init; git add .; git ci -m "untar"
so that you can easily check what you've changed) - run
brew install ncurses
- run
CPPFLAGS="-DNCURSES_OPAQUE=0" ./configure
- run
make
- run
./rogue
and the game will start.
ブログを作る(6)
自分のサーバにデプロイして、外から見えるようになった。実はRubyKaigiの初日くらいにデプロイしてたんだけど、新規記事の作成ができなくなっていて、ちょっと間が空いてしまった。
バグ自体は既知のもので手元では直していたのだが、git pushを忘れていて修正前のものがデプロイされていたのだった。それとは別にSinatraのloggerがログを記録してくれない?という現象があり、原因を把握するのが大変だった。Sinatraのログについては別途記事を書く。