yhara.jp

Recent Posts

Fomentを読む(6)

2016-10-09
Tech

前回はこちら。月一でやろうかなと言っていたけど、先月はちょっと忙しくて休載した。しかしまあ「長期的には成し遂げたいけど、短期的には優先度が高くない課題」に対する手法としては、月に一日だけやるというのはわりと良さそうな感じがしてきた。

前回はsynrules.cppの提供する2つの関数、CompileSyntaxRulesとExpandSyntaxRulesについて、どの補助関数が呼ばれているかを調べたのだった。次は何をしようかなぁ。とりあえずこれらの関数の引数と返り値が知りたいな。

ExpandSyntaxRules

synrules.cppを見る。ExpandSyntaxRulesはExpandTemplateの結果を返す。ExpandTemplateはMakePairかListToVectorの結果を返すので、Schemeレベルの値を返すっぽい。

引数の方はどうだろうか。ぜんぶFObjectだから分かんないんだよな...。綺麗なコードだと言ったけど、Cなのに事実上型がないような感じでつらみが出てきた。

(more...)

ブログを作る(8)

2016-10-07
Tech

URLのタイムゾーン

今まで記事のURL(例:/2016/10/07/post1)はUTCだったんだけど、よく考えたらここ日本時間にしないのは変なので直した

ソーシャルボタン

Twitter, Facebook, はてブのボタンを置いてみた。けど読み込みが遅いなー。それは仕方ないとしても、読み込み中にボタンが縦に並んでしまうのは直したいな。あとfacebookボタンだけ縦位置が微妙にずれているのも。(追記:こんな感じで直った)


BiwaScheme 1.0.0に向けて

2016-10-07
Tech

BiwaSchemeはもともと修論のために作り始めた処理系なんだけど、ということは、来年で10周年になるということに気がついた。途中、放置してた期間もそこそこあるけど、issue/PRくらいは対応しようとしているうちになんだかんだで10年。10年かぁ…。

せっかくなので、来年に1.0.0をリリースしようかなという気分が高まってきた。というかもう1.0.0にしちゃおうかなとも一瞬思ったのだけど、バージョニング的には非互換を入れやすいタイミングなので、何を入れるかについてもう少し検討することにした。

Schemeプログラムの読み込みについて

現状のBiwaSchemeで一番直したいと思うところがSchemeプログラムの記述方法にあって、以下は例なんだけども、

<script src="biwascheme.js">
(more...)

BiwaScheme 0.6.6をリリースしました

2016-10-06
Tech

https://github.com/biwascheme/biwascheme/releases/tag/0.6.6

0.6.5でエラーが正常にレポートされないという、実用上困りそうなリグレッションがあったのでそれの修正が主。最近マージしたPRでのリグレッションだった。

そういうわけで前回リリースから比較的短かったけど、リリース間隔が長いと手順を忘れてしまって作業がめんどくさくなったりするので、忘れない程度にリリースをやったほうが良いかもなと思った。


ブログを作る(7)

2016-10-05
Tech

やることリストの中に「年別・月別のページを作る」というのがあって、簡単そうだからやってしまおうかなと思ったのだけど、実はそれほど役立たないことに気づいた。

自分が人のブログを読むときどうしてるかを考えると、「記事一覧」か、「カテゴリ」を実装するのがよさそう。あとは「前後の記事」もけっこう読むかもなあ。

記事一覧ページ

記事の一覧ページは、ブログによって記事のタイトルだけが出るタイプと、タイトルに加えて記事の冒頭が出るタイプがある。後者はたとえばjekyllとか。冒頭がどこまでなのかは、本文中にマークを入れることでユーザが明示する。「続きを読む」機能と呼ばれることもあるね。

ところではてなブログの記事一覧ページってどんなだったっけと見てみたら、記事の先頭から一定文字数が表示されるっぽい。マークを入れなくても勝手に冒頭が判断されるのは便利そう。


enumerable-lazy gem 0.0.2をリリースしました

2016-10-04
Tech

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夏)

2016-10-03
Tech

Twitterにはスライドを貼ったんですがブログに書いてなかったので載せておきます。

Fluentd meetup in Matsue

fluentdコミッタのtagomorisさんが松江に来られるというので発表してきました。fluentd印の魔剤エナジードリンク美味しかったです。

内容はfluentdと直接の関係はないですが、ログつながりということで…。 文中、RailsのproductionのログレベルがINFOと書いていますが、Rails5からはDEBUGだそうです。

(more...)


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.

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author