bouzuya.hatenablog.com

ぼうずやのにっき

bouzuya/purescript-examples に date を追加した

bouzuya/purescript-examples に date を追加した。まだ途中なのだけど……。 purescript-datetime を試したものだ。

exactDate はあるのに exactTime はなかったり、setHour はあるのに setYear はなかったりする。なぜそうなっているのかよく分からない。

Data.DatediffData.TimediffDuration DaysDuration Hours などの型が変えるだけできちんと動きが変わるの、良い。あと似たようなものとして BoundedEnumtoEnumYearMonth などの型に合わせて変わるのも良い。まあ Show なんかでも同じなんだけど、改めて。 toEnum で同じように生成しているだけなんだけど、きちんと Year Month Day などの型へと推論される。賢い。

2017-W06 ふりかえり

2017-W06 をふりかえる。

2017-02 の目標

2017-W06 の目標

rally-cli の import は今日できた。 Web QR を試すはずが、 OpenID Connect を試している。どちらもまだ blog 記事を書いていない。

今週の記事

Netflix で『言の葉の庭』を観たほか、『攻殻機動隊 S.A.C 2nd GIG 』を観ている。まだもう一ヶ月は継続するっぽい。

つくったもの

2017-02-06/2017-02-12

blog などは除いている。 rally-cli 0.2.0 import をつけた。まだ詳細は blog 記事を書いていない。 purescript-examples は stdin を何度か書き直している。

その他

斑鳩は最高 12 ミス。今日が最高記録だ。 C4 はあとすこしでノーミス。 C1 では A が出た。伸びている。 C5 の練習をはじめる。

2017-W07 の目標

PureScript IDE が psc-ide-server の起動に失敗するのを解決した

bouzuya/rally-cli の import があとすこしでできそうなのだけど、今日はそれではなく Visual Studio Code の PureScript IDE が psc-ide-server の起動に失敗する問題を解決したことを書く。

結論から書く。 PATH に Node.js が含まれておらず、 psc-ide-server の実行が失敗することが原因だった。 Terminal から Visual Studio Code を起動した場合は bash / zsh の設定ファイルで PATH に設定されるので問題ないのだけど、 Spotlight から Visual Studio Code を起動した場合は PATH に設定されないため問題が起きる。解決策としては /etc/profile に PATH の設定を含めるなどがある。

たどった経路を書いておく。

もちろん、ここまで直線的ではなく、あちらこちらへいろいろな原因を疑いながら移動した。

findBins'getVersionpsc-ide-server --version 相当を実行し、Executable を返す。Executabledata Executable = Executable String (Maybe String)Stringpsc-ide-server のパスで、 Maybe Stringpsc-ide-server のバージョンだ。 getVersion に失敗した場合は Nothing が入る。

今回の状況では Node.js が見つからないため getVersion によって実行される psc-ide-server コマンドが失敗する。それが Executable "/path/to/psc-ide-server" Nothing という Maybe StringNothing にした形で伝えられる。ちなみに正常なら Executable "/path/to/psc-ide-server" (Just "0.10.6") などという形で返される。「 Nothing のとき Executable じゃなくね?」と個人的には思うのだけど、そういう仕様なのだから仕方ない。

それを P.startServer' 内で処理するのだけど、ユーザーの目に触れない位置での log だけでバージョンの ERROR を通知するのみで、 実際の実行では強引に実行しようとしている。https://github.com/nwolverson/purescript-ide-purescript-core/blob/v0.8.2/src/IdePurescript/PscIdeServer.purs#L89-L110

startServer' の結果は StartError になるのだけど、画面に表示されるエラーメッセージは「ポート番号を確認しろ」というものとなる。ポート番号に問題はない。 https://github.com/nwolverson/purescript-ide-purescript-core/blob/v0.8.2/src/IdePurescript/PscIdeServer.purs#L110

P.startServer' がバージョンの確認に失敗する状況を甘く見ている。 Visual Studio Code における PATH は Terminal のものとも異なるので、画面表示のメッセージが弱いと、原因に気づきにくい。

bouzuya/rally-cli の import をつくっている

今日は無事に朝活。そして PureScript の型あわせ……。

bouzuya/rally-cli の import に 2017-02-09 の stdin 相当のものを結合した。 JSON を読んで、その displayName でスタンプラリーをつくれるようになった。あとはスタンプラリーの更新・スポットの作成・スポットの更新だ。そこまで行けば 0.2.0 だ。

0.2.0 になったら、別の作業に移りたい。 bbn 4.x はいつになったらできるのだろう……。

bouzuya/purescript-examples の stdin を直した

今日も早起き。だけど、朝にシャワーを浴びようとしたら水しか出ない。誰かが家の外にあるガスの元栓を閉めたようだ。いたずらだろうか。早く起きた分がすっかりむだになってしまった。許せない。

bouzuya/purescript-examples の stdin を直した。

stdin は purescript-node-streams パッケージの Node.Stream モジュールを使っている。

以前は readString を使っていたのだけど、Readable w ("err" :: EXCEPTION | eff)err を除去するハンドラーが提供されていないので、使うのをやめた。代わりに readEither を使っている。

あと onReadable が何度も発生しているので、 onClose まで待つようにした。 2017-02-04 でも書いた Control.Monad.ST を使って onReadable の結果をつめて onClose でそれらをまとめて返すようにした。良さそう。

アラームをひとつだけにした

今日はきちんと起きた。

近頃のぼくはだらしないので時間をずらして複数回のアラームを設定していると、最後のアラームまで寝てしまう。

それじゃいけないと最初のアラームだけ残して削除した。背水の陣、か。効果があったのかは分からない。結果として今日はきちんと起きることができた。

……ただ朝活の時間は Twitter で通勤云々のやりとりをしているうちに潰れてしまった。そういうこともある。

ひさしぶりの Windows Server / Vivaldi をためしている

寝坊した。朝活なし。寝るのが遅い。

ひさしぶりに Windows Server を触る。 GUIリモートデスクトップ。最近は SSH も使えるらしいと噂も聞いたが、そこに手を出す余裕はない。コマンドも使わずに設定する。ライセンス費用もそうだし、 GUI にもでマシンパワーを食っている感じがする。扱いにくい。

日曜日くらいからだけど、Vivaldi を試している。Firefox 51 で Vimperator の :tabopen ほかが動かなくなった。その影響で Web ブラウザの乗り換えを考えている。素直に Chrome に移っても良いのだけど、せっかくなので別のものも、と試している。

タブを左側におけることやショートカットキーを設定できることが良い。パネルも嫌いじゃない。 Opera のようなカーソルによるフォーカス移動も良い。

ただ……。本当はタブではなくツリーにしてほしいし、キー設定できるコマンドが少なすぎる。タブスタックは使いづらい。タブスタックや選択したタブをタイル状に並べる機能も使いづらい。マウスジェスチャー? 懐かしいね。

拡張をごてごてと機能を増やすことを考えれば、最初から機能があってもいいかなという気持ち。このへんは振り子だ。ころころ言うことが変わる。