ゆうちょダイレクトのログインが不便, haskellの例外時処理に悩んだ, slackにそこそこの容量のファイルが送れない不具合が発生してしまった
鼻血が止まらない
数カ月前から風呂に入るたびに鼻血が出るし, 寝てる間も自然と鼻血が出て迷惑しています. むかしから鼻血は出やすかったが, ここ数ヶ月のは特に多い. 心療内科で血液検査を定期的に行っているため, 血液の病気ではないでしょうが. 耳鼻科に行くべきでしょうか… 正直面倒くさい.
散髪に行きました
作業コアタイムに備えて起きたら今日は休みだった. 忘れてた.
髪の毛がうざったくなってきたことを思い出しました. 散髪に行きます.
自転車の鍵が所定の場所に無かった. そう言えばちょっと前に父親が自転車を使った. 父親はよく自転車の鍵を所定の場所に戻してくれないので, 鍵が行方不明になる. 使うのは全然構わないけれど, 鍵は元の場所に戻しておいてほしい. 普通に使えなくてこまる. 自転車を見てみたら鍵は刺さったままでした.
テクノロジーの力で忘れることを防止できないかな, HoloLensみたいなのでメモを貼り付けるとか. とか考えていましたが, 自転車の鍵を指紋認証にして鍵をなくすほうが楽そうですね.
散髪のバリカンが皮膚に触れる感触が好きです.
モスカードを作りました
これまでモスバーガーをよく使ってましたが, 面倒だったのでモスカードは作っていませんでした. この間ふと調べたらカード会員限定のクーポンが配られたりすることがあるそうなので, 作っておくことにしました. チャージは日時限定でポイントがよく溜まる日があるそうなのでその日にやっていこうと思います.
ゆうちょダイレクトのログインが不便
ゆうちょ銀行のゆうちょダイレクトのID入力がパスワードと同じページにないのでオートコンプリートは作動しない. わざわざinput fieldがハイフンごとに分けられているのでID入力に三回のコピペが必要. とても不便. 普通のフォームを使いたい. ログインに手間がかかる上にログイン時のセッションが短くて, さらに常にセッションを有効化していないとログアウトされて滅茶苦茶使いにくい. セッション関連はすぐに変えるのは難しいだろうけど, ログインフォームだけでも普通の形式にしてほしい. もともとゆうちょ銀行の口座があったから使っておいたけど, この使いにくさで銀行を乗り換えようかと悩むレベル.
errorを使わない方法に切り替え
起きてしまったので他の仕事をやろうと思いました.
やることはerror
を出すだけになってた例外処理を独自の例外型にすることと,
ユニットテストを追加することです.
実は私,
haskellの例外は自分が飛ばす側としては,
error
を使うか精々ioError
ぐらいしか使ったことがないので,
よくわかってないんですよね.
復旧可能なエラーはMaybe
を使った方が例外を持ち込まないので簡単ですし,
復旧不可能なエラーはどうせ無理なのでerror
でスレッドごと終了してしまって問題ないという判断をよくしています.
むしろ例外をtry
でEither
に変換することの方が多いですね.
error
を取り除けば良いわけだけど,
例外をthrow
するか,
IO (Either String ())
でも返すように変更するか,
悩みどころですね.
とりあえず,
slackの返すHTTPステータスだけ見ていてjsonを見ていなかったので{ok : false}
の時も正常終了してしまっていたところをjsonのパースをして変更しようと思いました.
httpJSON
を使って内部のjsonをData.HashMap.Lazy.HashMap
だとしてlookupDefault
すれば普通にパースできた.
例外処理どうしよう,
IO Either
にするかEither T IO
にするか…MaybeT IO
の場合はIO Maybe
の方が自然な気がするのでそちらをよく使っていますが,
今回はエラーが起きた時は計算を取り止めて終了させたいのでEitherT
の方が良いのだろうか,
Error
を使うべきなのだろうか…
Error
を使うほど重量級のプログラムとも思えないし,
普段はIO Either
を使うけど,
今回は計算脱出が行いたいのでEitherT
を使うことにしますか.
slackにそこそこの容量のファイルが送れない不具合が発生してしまった
slackのファイル投稿APIでmultipart/form-data
を使う方法がわからなくてurlパラメータのcontent
で処理すればいいかと思ってそのようにしていたら普通に容量を超えて投稿できなくなる問題が発生しました.
tokenはurl queryで送らないといけないしどうするんだろうと思ってググってみたら,
どうもfiles.uploadの場合formDataでtokenを送るみたい.
setRequestQueryString
からsetRequestBodyURLEncoded
に切り替えても投稿できた.
当初出来ないと思ってたのは何だったんだろう.
setRequestBodyURLEncoded
に切り替えても向こう側では大きいファイルが投稿できないらしい.
こちらでは投稿できて全く再現出来ないので謎になってしまっている.