bouzuya.hatenablog.com

ぼうずやのにっき

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 のようなカーソルによるフォーカス移動も良い。

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

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

『言の葉の庭』を観た

昨晩は Netflix にて『言の葉の庭』を観た。2017-01-20 に映画館で観た『君の名は。』からの流れだ。

ぼくはこれを観るのがはじめてではない。 2013-06-02 に映画館で観ている。そのことを話すと、妻に「そのときは誰と観たの?」と聞かれた。「確かひとりだった」と答えると、「ひとり? さみしくないの」という旨のことを言われた。

ぼくはカラオケだってひとりだったし、映画も、旅行だってひとりだった。ひとりで居ることはさみしくない。ひとりで居るときより、大勢で居るときに孤立するほうがずっとさみしい。気をつかう。決定できなくなる。存在が希薄になる。……。

さて『言の葉の庭』。

当時の感想には書いてない(気づいていなかった?)けど、雨の日に異性の素足を触らせてくれと頼むという状況は、なんだかマニアックな感じがする。ただ素足を要求するのではなく、雨の日の濡れた素足を要求する感じが。

当時は人物がブレている、などと書いてあるのだけど。そうでもないような……。格好つけて溜め込んだものがあふれでているだけっぽい。行動が年相応ではないというのは、確かにそうだ。いじめにあった教師が雨の日にビールとチョコレートもって公園で過ごすかな……。次に観たらまた感想が変わるかな。いい加減なもんだ。


今日は有給休暇の残りを使って病院へ行ったあと、出勤した。社長がインフルエンザで休みだ。また流行っているらしい。二度はかかりたくないな。

2017-W05 ふりかえり

2017-W05 をふりかえる。

2017-02 の目標

2017-W05 の目標

  • ☑: 2017-01 のふりかえりを書く
  • ☐: bouzuya/rally-cli の import / export をつくる

import ができなかった。また脱線していた。

今週の記事

Netflix で『ファイト・クラブ』・『スタンド・バイ・ミー』を観た。

PureScript でつくっている bouzuya/rally-cli はすこしずつだが進んでいる。その過程で MaybeST について書いてみたりしている。

つくったもの

2017-01-30/2017-02-05

blog などは除外している。 rally-cli は export が仮に出来たので 0.1.0 にした。 import ができれば 0.2.0 かな。 purescript-examples は stdin と st を追加した。

その他

斑鳩は最高 14 ミス。今週からミスで数えるようにしている。先週が 6 コンティニュー (20 以上 23 未満) だったことを考えると伸びている。ただ最高記録の一回きりでほかは 20 くらいで安定している。

ほぼ日課で 1 日 40 分くらい。練習で C4 か C5 を 2 回、それから ALL で記録を取っている。 C4 単体だと抜けられるのに ALL だとミスするのはなぜだろう。疲れかな。

ジョジョの奇妙な冒険』の第三部を読み終えた。前に読んだのは高校のときだったかな。ひさしぶりだ。

『型システム入門』は流し読みをしている。それでもまだ半分も行ってない。流し読みで理解できるはずはないのだけど。

2017-W06 の目標