yhara.jp

Recent Posts

2017年5月16日

2017-05-16
Diary

というわけで日記。

3月のこと

3月はsyntax-rulesの続きをしていた。3月の終わりに中間報告記事を書こうと思ってたんだけど仕事が忙しかったりして流れてしまった。5月はまたこれをする予定だったけど既に月半ばになってしまったな。どうしようかな。今年中に作りきるという目標はあまり動かしたくないけど。

4月のこと

4月はEsquisの続きをやるつもりでLLVM+例外について調べてたりしたけど、そのあとこういう閃きがあって4月はこれに費やすことになった。

(more...)

ブログを作る(12) カテゴリ機能を付けた

2017-05-16
Tech

記事にカテゴリを付けられるようにした。前からやりたかったものの一つである。ソースはこのへんだけど、ファイル構成の見直しも同時にやったのでこれだけ見てもよく分からないな。

同カテゴリの記事を探しやすくするというのが第一の目的だけど、もう一つの変更点として、日記(カテゴリDiary)を省いたAtomフィードを追加で提供するようにした。これを期にもうちょっと雑多な内容も書くようになるかもしれない。ならないかもしれないけど。

やったこと

  • Categoryモデルを作成。各Postは0..1個のCategoryに属する。
  • 編集画面にCategory選択フォームを追加。
  • カテゴリ自体のCRUDは/_configを新設してそこでやるようにした。Twitterに書いたけど、disabled="disabled"を付けることで削除ボタンの誤操作を回避している。コスパがよい(実装コストが低くて効果が大きい)ので好きなハック。
(more...)

LLVMで例外を実装するには

2017-04-06
Tech

LLVMを使った自作言語に例外を入れることを考えてた。結論からいうとCrystalのソースを真似するのでよさそう。

  • Crystal → libunwind → _Unwind_RaiseException
  • C++ → __cxa_throw → libunwind → _Unwind_RaiseException

_Unwind_RaiseException等の仕様はここ。http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html

「Itanium C++ ABI」という名前ではあるけれど、Level I, II, IIIのうちのLevel I部分(_Unwind_RaiseException等)はC++に限らない言語独立なAPIになっている。__cxa_throwはLevel IIで、C++用のもの(であるけれど、場合によってはこれが使えることもあるかも)。

(more...)

スプラ日記

2017-04-03
Diary

久しぶりにS+になった。前はヤグラノヴァだったけど今回はバケデコのガチエリア(モズク・マサバ)。元気なときに集中してやればS+上がれるのではないか、とは前々から思ってたんだけど、実際にできることがわかって良かった。

普段は仕事終わって夕飯食べてお腹いっぱいな状態でやってたりするのでS30〜S70くらいで推移してる。一度S+に上がれてからは、強くなるというよりはいろんな武器を触って楽しんでいる状況。最近はエイムが良くなってきて、L3リールガンが扱えるようになってきた。最初触ったときはこんなん絶対無理だと思ってたのでちょっと嬉しい。


スノボ納め 16-17

2017-03-26
Diary

表大山まで滑りに行ってきた。今季はこれでおしまい。

http://www.daisen-resort.jp/

松江に住んでいると大山が近くて、冬場はほぼ毎週スノボに出かけている。数えてみると今季は9回行けたらしい。会社の人と一緒に行くんだけど、今季は社外の人とも一緒に行ったりした

今季は雪の降り始めが遅くてどうなることかと思ったけど、1月と2月に大量に降った日が一度ずつあり、3月入ってからも降ったりしたので、それなりに長く滑れるシーズンになって良かった。

今年は試乗会で板を予約したので、来季は新しい板になる。試乗会ってその場で板を買えるのかと思ってたんだけど、そうではなくて、この夏に製作するモデル(つまり17-18モデル)のサンプルが試乗できて、気に入ったら予約すると9月くらいに手に入るということだった。とても楽しみ。

今使っている板は新古品を2万で買ったやつで、スノボショップに持っていたら保存状態が悪くて変な風に反っていると言われて、一応滑れるようにエッジを調整してもらったという経緯がある。気づいたら6年これに乗っていたらしい。後悔はしてないけど、もう少し早く買い替えても良かったかなという気はする。新しい板、試乗してみて、めちゃめちゃ乗りやすいと思ったからね。



牛乳を泡立てるやつ買った

2017-03-05
Food

百均でミルクフォーマー買った。150円だった。ミルクフォーマーはスタバの店舗で売ってるのを見たことあるけど、2000円以上してたので、百均にあると聞いてびっくりした。

商品の写真

作りがちゃっちくて、グリコのおまけ感ある。とりあえず使う前に洗おうと思ったが、本体は防水じゃないので、棒の部分だけ取り外す必要があるんだけど、これがまためちゃめちゃ固い。しかし隙間にスプーンの柄を突っ込んだりして頑張ってるうちになんとか取り外すことに成功。その後は常識の範囲内の硬さになった。

使い方だけど、カップに牛乳を入れて、こいつを突っ込んでスイッチを入れるとモーターがすごい勢いで回転し、牛乳に空気が入るという寸法。液体全体が泡になるのではなく、上部に泡が発生するという感じ。牛乳はホットでもアイスでもよい。

成果物としてどういうものが得られるのかよく分かってなかったんだけど、要するにお店のカプチーノとかの上に乗ってる泡状のやつ、あれが手に入ります。150円にしては意外なほどふわふわになる。なんとなく専用の機械とかでやってるのかなぁと思ってたけどこんな単純な機構で再現できるのか。

ということであとは発生させた泡をどのように活用するかという話になるが、スタバのサイトによると泡立った牛乳の上からコーヒーを注ぐということらしい。なるほど。


弁当はじめました

2017-03-05
Food

野菜を買いすぎたので、夕食の野菜炒めを多めに作って、半分を翌日の弁当にしてみた。普段は会社に来られるお弁当屋さんの弁当を買ってて、それと比べるとボリュームも彩りもないけど、意外とこれで良いじゃんっていう感じだった。コンビニが近いので味噌汁だけカップのを買うとかもできるし。一人暮らしだとどの野菜を買ってもたいてい大きすぎるので、こうやって消費先が増えるのは良い。

弁当を作ること自体は興味がありつつ手を付けてなかったんだけど、最近ちょうどいい大きさのランチボックスを見かけて、とりあえず買うだけ買っておいたのが役に立った。(市販の弁当箱はたくさんあるんだけど、米は冷凍して持っていくので、おかずだけ入れるやつが欲しかったのだった) 二段になってるので、慣れてきたら二段目を冷凍食品で埋めたりするのもいいかも。


CapybaraでSinatraアプリをテストする

2017-02-28
Tech

このブログはSinatraで作っていて、テストはRack::Testで書いてたのだけど、思い立ってCapybaraで書き直した

Rack::Test vs Capybara?

というのはある種のバグがRack::Testだと漏れちゃうんですよね。例えばフォームをsubmitしたときにビューのtypoで正しいリクエストが飛ばない、みたいなやつ。Rack::TestだとこういうPOSTリクエストに対しこういう挙動をする、は書けるんだけど、ボタンを押したときにどういうPOSTが飛ぶか、はCapybaraでないと書けない。

もっと規模が大きければRack::Testでコントローラのテストを書いて、Capybaraでintegraiton testを書いて…みたいな構成もあり得るけど、このブログの場合は規模が小さいのでCapybaraによるE2Eテストだけあれば良いかなと思う。

以下、Rack::Testから移行するに当たって「これどうするんだろ?」ってなったことをメモしておく。

(more...)

Rubyでレイトレーシングした

2017-02-21
Tech

生成された画像

これをRubyに移植した。aobenchが自作言語のターゲットとしてまだちょっと大きいなと思ってより小さいサンプルを探していたのだけど、最後のステップまで移植したら結局aobenchとあんまり変わらないようなものになった。ただaobenchのコードはちゃんと理解していなかったので、少し理解が深まった気がして面白かった。あと画像が出るプログラムはやっぱり楽しい。

ソースはgistに上げた。ray5.rbまであり、それぞれ以下のようになっている。

  1. 画像を生成する
  2. 球を出す
  3. 陰影を付ける
  4. 床を出す
  5. 反射させる

上に貼ったのはray5.rbの出力結果だ。よく見ると元記事と微妙に球の位置が違うことが分かるが、オリジナルは時間tを受け取ってアニメーションするようになっていて、tの値が違うのが原因と思われる(最初、アルゴリズム部分に間違いがあるのかと思って焦った)。


Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author