毛布がない/ディスプレイの高さ/dアニメストアのスペースだけ入ったspanタグ

11/30(土)

毛布がない

風邪のあと咳が長引いていた。そろそろ収まりつつあるのだが、ハウスダストの影響もあり得ると考えて毛布をクリーニングに出した。当然だが、クリーニングに出すと自宅に毛布がなくなる。寒い。現在進行形で。賢い人間は冬が来る前に毛布をクリーニングに出していたのだろう。どうして僕にもそうしろと言ってくれなかったのか。水曜日まで耐えねばならない。

ディスプレイの高さ

僕はバロンチェアをヘッドレスト付きで使っている。頭をヘッドレストに預けると視線が上を向くのでディスプレイがある程度高い場所にあってほしい。そこでツクモでディスプレイの台を買ってきた。概ね満足しているが、一つ計算外だったのはマウスのケーブルとディスプレイ台の足がぶつかることだ。現状問題ないが、少し気にする必要がある。

dアニメストアのスペースだけ入ったDOM

dアニメストアの作品ページにはエピソードリストがある。一つひとつのエピソードは話数番号・サブタイトル・サムネイルを持つが、作品によっては各エピソードにサブタイトルを振らないものもある。そういう作品はどうなるのかなと思ったら、サブタイトルとして   (スペース) が設定されていてひっくり返った。

話数番号とサブタイトルにはマウスオーバーしたときにクリック可能であることを表現するアンダーラインを表示するスタイル(text-decoration: underline)が当てられている。つまり、スペースにアンダーラインが付加されて謎の線分が出現するのだ。

これは強気すぎる。表示すべきものがないなら要素を消せばいいのに。

パソコンが壊れた(7ヶ月2回目)

11/29(金)

たぶんこのブログを始めてからは2回目で合ってる。

今度のは理由がよくわかっていない。久々にPCを再起動したら起動時にログインできなくなった。ユーザーを選択すると認証エラーと表示され、直後にフリーズする。ユーザーを選択せずにCtrl+Alt+F3でCUIからログインすることはできる。ログ見てググった感じNVIDIAのドライバが悪そうな感じがあるが、Linuxがわかりそうな同僚を召喚しても直せなかったので諦めて再インストールした。

Ubuntuのインストール時にもエラーが出て困った。これは使っていたisoイメージが壊れていたのが原因だった。割と壊れたイメージをつかまされることがあるので、ちゃんとチェックサムを確認しよう。ストレージ用HDDを外してUbuntuをインストールし、あとからマウントすることでほとんどのデータは残せた。

Nコン2019中学校の部

10/14(月)

Nコン中学校の部を途中から見た。豊島岡と郡山5が銅で文の里が銀というのは波乱だが清泉の金は妥当だったろう。

自宅のネット回線の工事があってから速度は上がったけどGoogleとYouTubeで特大の(数十秒)のstallが発生するようになっていた。ISPにもっとデータが欲しいと言われたので毎分curlして所要時間をcsvにまとめるスクリプトを書いた。

ありがたい技術情報

Scala+PlayでDIする情報を漁っていたらScalaでDI(Play framework2.7 + Guice編)を発見した。控えめに言ってこれは神。一番素晴らしいのはPlay framework2.7で2019年7月12日という新しさ。Playやその他Scalaのフレームワークは容赦のない変更をぶっこんでくる(慣れてないからそう感じるだけかもしれないが)ので、バージョンが違うと全然動かないということはよくある。

技術情報で何より重要なのは新しさだ。記事になっているからには書いた人の環境で、書いたときには動いていたのだろう。しかし時間が経てば経つほど同じコードが動く確率は下がっていく。

だから古い記事の内容を持ち出してきて「これは今でも動く」と書いてくれているだけの情報でも素晴らし価値がある。発信していけ。

ついにDIを書いている

何もわかってないけどPlayFramework2.4におけるDIのテスト方法とかWriting functional tests with ScalaTestとかトレイトの応用編:依存性の注入によるリファクタリングとか読みながらそれっぽい形をした何かを書いている。DIが何をするものなのかはわかってきたが、結局それを実現するためのライブラリの使い方もわからなきゃいけないのでは…?

今週末はすごい嵐になるらしい。停電覚悟で本でも買っておこうか。水と食料。なんで台風いつも休日に来るの?

サウナでホラー/Dota2覚醒/依存性注入

いつもは日曜日にやることだが、3連休なので今日銭湯に行った。サウナは磨りガラスで仕切られていて、そこに中でタオルを振り回す人間の影が映っていてちょっとしたホラーだった。

この3連休で割と熱心にDota2をプレイした。最近は上達の感覚がある。行動とその効果の関係を以前よりも鋭く捉えられるようになった気がする。ちょっとした移動や位置取りでより貪欲にアドバンテージを取っていけるようになった。現在のMMRは4051だ。

Scalaはなかなか進まない。GETリクエストを受けてDBからデータを取り出して返すメソッドのテストをどう書くべきか思案している。DBという外部システムへの依存はユニットテストには持ち込まないのが原則だ。つまりDBからデータを取り出す部分を別の関数に切り出し、本番とテストで別の関数を呼び出すようにする。逆に言えば2種類の実装を本番とテストでそれぞれ注入するということになり、このテクニックを依存性注入(Dependency Injection)と呼ぶ。たぶん合ってるはず。

ガチで知りたい人はこの辺読んでください。僕も今読んでます。

勉強は投資

9/13(金)

↑13日の金曜日じゃん。

先輩とペアプロして大変勉強になった。早めに帰った。

これを見つけてなるほどDDDというのはこういう順序で学ぶものなのかと思った。

勉強すべきことは無限にあって、つまりどこに投資するかという話になる。そのためにはキャリアを考える必要がある。難しい。

前倒し勤務

今日は10時に出勤して19時に帰ってみた(帰れてはいない)。

夜に空腹になる前に帰宅できるので間食を削減する効果は確かにありそうだ。午前10時は午前11時に比べて涼しいというのもいい。

逆に世の一般的な通勤時間に近づくので電車は混む。難しいところだ。多数派と違うことをすることでメリットが生じる場合もあるが、それ以前に多数派というのはメリットがあって多数になっているのだ。

帰宅してScalaを書いていた。PlayのFormではmodelのunapplyメソッドが必要になる。フォームのデフォルト値としてmodelの情報を入れておくような機能のためだ。

unapplyはcase classだと勝手に作ってくれるのだが、そうでなければ自分で実装する必要がある。コップ本の26章を読むといろいろわかる。Scalaの武器であるパターンマッチの一種、コンストラクターパターンに使われているとか。

Dota2のSoloMMR(サポート)が4051になり過去最高になった。最近はDazzleスパムをやめてAncient ApparitionやWarlockを使っている。どちらもダメージを出せるサポートヒーローで楽しい。だが両者の操作感は全く違う。前者はスキルのクールダウンが短く、アイテムとのコンボも必要になるアクション要素の高いヒーローだ。一方で後者はスキルのクールダウンが長く、タイミングや立ち回りが求められる。

未来の重圧/case classをやめた

未来のある時点に向かって準備しなくてはいけないものが出現したのでなんとなく落ち着かない気分だ。大学にいる頃からこの感覚がひどく苦手で、会社員になるとだいぶ緩和されていたのだが、やはり人生そう甘くはない。毎日死の準備をしながら生きていこうな。

Scalaのクラスはcase classにするとapplyメソッドが自動で生えるのだが、これと合わせてコンパニオンオブジェクトで自前のapplyも実装するとコンパイラがどっちを使うか判断できなくて怒る。

sealed abstract case classという手もあるらしいが、インスタンス化したいクラスなのでこの手は使えない。結局どうにも出来なかったのでcase classにすることをやめた。それほど恩恵を受けていたわけでもないし。

久々に酒を飲んだ/酒を飲んでプログラミングをするな

※この記事は『ほろよい もも』を飲んで書かれた。

月の始めに強い意志で(ほぼ)定時退社。制度上定時はないが自分で11時から20時を勤務時間と決めている。

いろいろな事情でSlackのワークスペースが増えてきたのでLinux用のアプリケーションをインストールしたのだが、ワークスペースにログインできずにいる。ブラウザでログインした後アプリケーションに処理が移らない。

仕事でTypeScriptをやってはいるが、趣味開発で初めて裸のtscコマンドによるコンパイルをやった。コンパイルのバージョンがどうなっているのかよくわからない。前者も後者もコンパイルは通るのに前者しか動かなかったりする。

import * as Hoge from "hoge";
import Hoge from "hoge";

完全に酒に酔って意味不明ムーブ繰り出してる。間違ってaccess tokenをpushしてしまったので定石どおりリポジトリ削除→再作成→pushをやったのだが、修正をaddしないままcommit --amendしていたので無意味だった。やり直し。