DOT NOTES

Twitter:@dot_not_ GitHub:@ogrew

終電日記 01。

f:id:taiga006:20190925213854j:plain

誰にも公開しないつもりだったブログの下書きのいくつかを、ベースにした7本。

最近、自分は結構人のエッセイや日記を読むのが好きなんだな、と思うようになりました。 ブログでもなんでも、その人の喜怒哀楽をフィルターなしに見れる気がして。

… osicomagazineを読んだ影響です。

まだ20本くらい中途半端な文章が残っているので、リライトでき次第公開していきます。

ということで毎日23:50にお届けした終電日記、第一弾でした。

重複を除いてレコード数をCOUNTするSQL

あるテーブルの特定のカラムで重複なくカウントしたい場合

SELECT COUNT(*) FROM  (SELECT DISTINCT level FROM player);

みたいにサブクエリとして書いていたが、

SELECT COUNT(DISTINCT level) FROM player;

みたいにかけることを知った。 こちらのほうがスマートだし、わかりやすい。

ただし多くのRDBMSでここのマルチカラムは許容されていない。 その場合は素直にサブクエリにして対応するのが吉。

0924 凡人。

f:id:taiga006:20190923225152j:plain

「安易にBillie Eilishを崇拝しないために、今日も腹に力入れて過ごしてる。」

TLに流れてきたこのフレーズが妙に面白くて、そして心に刺さった。

久しぶりにTLに姿を現した九年来の友人だった。

九年前、僕らはブログ仲間(と言えばいいのだろうか)だった。

当時僕は高二で、彼女は中三(いや、高一だったかもしれない)だった。

お互い日々のなんでもないブログにコメントしあって、連携するチャットサービスでときたま雑談をする中だった。

あるとき僕と彼女はエレファントカシマシのアルバムで何が一番好きか議論した。

僕らは音楽が好きだった。

僕は「ココロに花を」、彼女は「生活」を選んだ。

聞く人が聞けばこの時点で失笑かもしれない。

「生活」はエレカシのアルバムの中でも笑ってしまうほど暗黒期の作品であり、エピックのころの名盤だ。

一方の「ココロに花を」はそんな卑屈なほど内向的だったエレカシが外界に踏み出す一歩となった、言ってしまえば所謂今のエレカシらしさが存分に感じられる聴きやすいアルバムだ。ポニーキャニオン一発目のものだ。

当時の僕としては「生活」はただただ血生臭くて怖いアルバムだった。 でも社会人になった今、間違いなく一番聴いているアルバムは「生活」だったりする。

7曲しかないのに、まるでフルアルバムを聞いているみたいな重量感だ。(実際1曲が5,6分ある。)

そんなどうでもいいことを思い出した。

「あの頃のことを覚えてる?」とメンションする代わりに、僕は彼女のツイートにいいねを押した。

ところで僕はBillie Eilish好きだとか、

全部通じてくれればいいのだけれど。

町に出、笑い、凡人
ああここに有り

凡人-散歩き- - エレファントカシマシ

0923 pay。

f:id:taiga006:20190922022222j:plain

引越しをする、意思を固めた。じゃあな、黄金町。

口座の残高を見た。あの、まだしばらくよろしくお願いしてよろしいですか、黄金町。

部屋の中の不必要なものをちゃっちゃと売ることにした。

インストールしたままめっきり使っていなかったメルカリで売ることにした。

最初の頃に使おうとしたときに比べて出品までのスムーズさに舌を巻く。

バーコードリーダーで商品検索してくれるのは非常にかしこい。

でも相変わらず、売り手の写真を撮るセンスがない。

スニーカーと使ってない機材をいくつか出品して、

なんやかんやあって売り上げが3万円ほどになった。

あれこれ売って3万円かぁ、という気持ちと

まぁ、働かずして1週間で3万ならまずまずじゃないかと言う気持ちとが交互に。

溜まった売り上げ金がそのままメルペイとして使えることを知った。

ついそのまま、欲しかった機材をメルカリで検索してしまったが、危ない。本末転倒になってしまう。

とはいえ、CMでもこの類のキャッシュレスサービスはクーポンが豊富らしいので、それだけ使ってみようと思った。

160円のファミマのデザートが15円で買える。

なるほど、世間の人がみんな騒いでいた理由が今更、わかる。

キャッシュレス万歳、定価でデザートを買うなんて馬鹿げている。

ファミマに行ってから御目当ての商品を見つける。

このタイミングでどう買えばいいのかと迷った。

クーポン画面の詳細ページを開く。

どうやらファミポートでクーポンシートを発行しないといけないらしい。

「え?ここにきて?」と思わなくもなかったが仕方がない。郷に入っては郷に従え。

ファミポートに3人並んでいる。試されている気さえしてきた。

自分にファミマのデザートを手に入れる資格があるのか。

コンビニの狭い通路に並ぶ。あの時間は無限に感じられる。

なんとかシートを印刷して商品を買った。

店員が(またこれか…)という表情をした気がしなくもない。

「こんなに面倒なら160円払って素直にレジに並んだ方がいいな」なんて軒並みなことを思った。

ファミマのデザートは柔らかいカスタードの入ったたい焼きでうまかった。

amazonで購入した本がなかなか届かない。

気がつかないうちに年々短気になっているのかもしれない。

marshmallow-qa.com

0922 団地。

f:id:taiga006:20190921171418j:plain

「有名人じゃなくてもさ、

悪気なんてなくてもさ、

普段の会話の延長線上にあるうかつな発言で炎上する人多いからお互い気をつけたいね」

と言われた。

「たしかに。」

と返事をした。

そういえば最近身の回りで炎上をして傷つけたり傷ついたりする人をみたばかりだった。

「うかつな発言で炎上する人多いからお互い気をつけたい」という緊張状態はもう6,7年ほどずっと続いている気がする。

火に慣れてしまって全部ただのボヤ騒ぎとしか認知できなくなっているのかもしれない。

それはそれで怖いことだ。


炎上した記事や発言、ツイートなどへのコメント欄、リプライを見ていると思い出す景色がある。

小学校に入るまで、僕は団地暮らしだった。

特に変哲もない田舎の集合団地。僕の家は大通りに面した1階の角部屋だった。

その団地は面白い形をしていて、1階の住居と2階の住居の庭が吹き抜けでつながっていた。

そのおかげで1階に住む我が家にも家の奥まで陽の光が差し込んだ。

あるとき、2階の家に住む悪ガキ兄弟が買ったばかりの大きな水鉄砲で吹き抜けの庭から1階の我が家に打ち込んできたのだ。

今考えたら雨と大差ないのだが、晴れの日の我が家の窓をびしょびしょに濡らす奴らがひどく許せなかった。

父が窓から声をかけてみたが、案の定水鉄砲の的にされて終わった。

それはそれで愉快だったが、情けなくもあった。

「放っておけばいいでしょう。」

母の意見にしぶしぶ頷くかたちで僕らは黙って窓の外を見ていた。

その日の夕方、悪ガキ兄弟とその父と思しき人物が家に謝りに来た。

どうして、あんなことしたんだ?と父が聞くと

「1階の庭の草花のせいでうちまで虫が飛んで来るんだ!その退治をしたかったんだ!」

と言った。

「なるほどねー」と父は許したようだったが、僕は納得いかなかった。

悪ガキ二人は誕生日か何かで買ってもらったあの二段式の水鉄砲でとにかく遊んでみた買っただけなんだ、きっと。

でもわざわざそれを口に出す気にはならなかった。

正当化する用意をしてから打つ。ただ、ただ。

反撃されない、平和な位置から、一方的に。


別に世間の炎上案件にあーだこーだ講釈を垂れるつもりもないし、この昔話と無理やりリンクさせるつもりもないけれど、僕は世間の炎上ネタを見るとあの時の景色を思い出す。

「反撃されない、平和な位置から、一方的に。」

それが水鉄砲だったら、別にいいのだけれど。

marshmallow-qa.com

0921 口内炎。

f:id:taiga006:20190921180659j:plain

話題の「彼方のアストラ」を見終わった。まさにSF版「SKET DANCE」だった、最高だった。

ありがとう、篠原先生。 ありがとう、Amazon Prime Video。

久しぶりにSKET DANCEを読もうとして本棚を見渡したが、見つからない。

そういえばこの家に引っ越すとき、

(そう大学院を辞めて仙台から横浜に引っ越してきたとき、)

漫画の量がとてつもなくて半分ほど実家に送ってしまったのを思い出した。

「タイミング!」などと深夜に唸ってみるも仕方がないので、途中で読むのが止まっていた"ランウェイで笑って"の8巻を読み始めた。

アニメ化が決まったらしい。こちらも期待したい。


珍しく口内炎ができた。

人生で初めて口内炎ができたのは社会人になってから1ヶ月ほど経ったとき。

初めて感じる口内炎の痛みは痛烈ですぐさまGoogleで検索してみると「舌がん」の3文字が出てきて鬱になって布団にくるまった。

遡って、大学生のときに飲み会の席で口内炎になったことがないのが自分だけだったと判明した時があり、妙な優越感とともに疎外感を感じて酒が進まなかった。そしてきっと自分には縁のないものなんだろうなぁとそのときは思っていたが、てんで勘違いだった。

EZFGの「とても痛い痛がりたい」が口内炎の歌というのは有名な話。

僕はあの歌が好きだ。

なんの話だっけ。

今回の口内炎は舌の裏にできた。

こいつはだいぶタチが悪い。舌を動かすだけでもビリビリする。

生活リズムの乱れ、仕事のストレス、食事バランス。ため息が出るほど原因が思いつく。

とりあえずバッグに入っていたブラックのキシリトールガムを2錠口に入れてこのほとぼりが冷めるのを待つことにした。

そうだね アナタが耐えれば済むことだからね
そうやって 自分をごまかし続けて
フライアウェイ もう 
私の方からサインを送るよ
強がりばかりじゃ疲れるでしょ

とても痛い痛がりたい - EZFG

marshmallow-qa.com

0920 猫の地方性。

f:id:taiga006:20190920001240j:plain

猫の喧嘩で夜中に目が覚めた。

あなたにもそんな経験があるだろうか。

僕は今の横浜の家に引っ越してきてから季節に1度くらいの頻度でそれがある。

彼ら(彼女ら)はなんとも擬音化しづらい叫び声でお互いを威嚇し合う。

(ぴぎゃー!、んびゃ〜!あたりが近いかもしれない。)

不規則な周期で響く、その声で僕は目が覚める。 人間は狩猟民族なので大きな音より不規則な音に敏感だ、と昔誰かが言っていた。午前2時。

そうやって夜中に起こされるたびに僕は猫の地方性について少し考える。

僕が初めて一人暮らしをしたのは、仙台市に流れる広瀬川のほとりにある小さなアパートだった。

大学から徒歩10分で家賃3万4000円のロフト付き6畳のその部屋には大した思い出はないが、近所にとにかく野良猫が多かった。

観光地でもなんでもないが彼ら(そこの住む猫たちをあえて一括にする)はとにかく人懐っこかった。

合うたびに僕の足を外敵かなにかと勘違いして噛み付いてくる実家のネコとは大違いだった。(ナツ、君のことだよ。)

次に引っ越したのは寺と墓に囲まれた仙台駅徒歩3分のアパートだった。そこでも近所で野良猫を見かけることが多かった。

この頃から輪をかけて深夜に街を徘徊するのが趣味になった僕は、連れ立った体格差のある猫たちをよく見るようになった。家族ではないのだろう。野良猫の野良である部分を見てしまったような気がした。

「生まれ変わったら、ネコになりたい」とポエトリーな戯言(たわごと)をよく耳にするがラーメン屋の排気口の下で暖を取る猫たちに人間の言葉がわかったら容赦されないだろうな、きっと。

ちなみにこの文章では、"猫"と"ネコ"という表記にゆれがあるのだがあなたはその使い分けに気がついたであろうか。

僕はわからない。

marshmallow-qa.com

0919 防災マップ。

f:id:taiga006:20190918211105j:plain

横着な自分はポストの中のチラシをためがちだ。

毎日家を出るときにポストの中をチェックして、友人の結婚式の招待状やら水道代の請求書やら生活の上で必要なもの・避けられないものだけをピックアップして、隣町の不動産のチラシやらチェーンのピザ屋の割引券やらをつい放置してしまう。

塵も積もればなんとやら。そうこうして溜まった行き場のないチラシたちを月に一度くらいのペースでまとめて回収して家の中で取捨選択をする。(たまーに「え、これあったんじゃん!まず!」ってなる。ごくたまーに。)

この間もそんな感じで溜まりに溜まったチラシをぽいぽいとゴミ箱に捨てていた。そのとき、偶然地図を見つけた。 自分の住む横浜市の地区の防災マップだった。

「ほほーん。」

そのまま捨ててしまってもなんの問題もなかったのだが、妙に気になって広げてみると、それは自分が思っていたよりもだいぶ大きな代物だった。

「なるほどー。」

地図はエリアごとに色分けされていてその場所ごとの避難場所が目立つように書かれていた。

自分の住む場所は(大概の場所がそうであるように)このあたりの地域で一番大きな中学校だった。

台所の棚にしまってあった画鋲ケースを取り出して、玄関にその地図を貼ってみた。

僕は昔から地図が好きだった。

正確には地図を書くのが好きだった。

親の運転で一度通った場所は必ず覚えて、家に帰っては地図に書いて「おまえは記憶力がいいなー」と父に褒められた。

ノルウェイの森」に出てきた突撃隊という人物がいる。

彼は地図を愛し、国土地理院に入ることを目指す角刈りの学生だった。

本を読んだ多くの人にとって突撃隊は不思議なキャラで理解するのが難しい立ち位置のようだった。

物語の舞台からも途中で消えてしまう。

でも僕はこの青年がとても好きだった。

なんの、話だっけ。

そうだ、防災マップの話だ。

玄関に張った防災マップは僕の部屋の雰囲気からすると妙に浮いている。

そこだけ現実感が強いのだが、家の外に行く前、そして帰ってきたときに眺めるのにこれより良いものは今は思いつかない。

どうして早くポストからこいつを見つけ出さなかったのだろう。

そういうしょうもない、小さな後悔。

ちなみに村上春樹の作品は長編短編問わずほとんど読んできたが、「ノルウェイの森」が一番肌に合わなかった。

この話は長くなるし面白くならないことが見えているので割愛。

marshmallow-qa.com

0918 ヒグチアイ。

f:id:taiga006:20190918204012j:plain

最近は、ヒグチアイが好きだ。
きっかけはある土曜の夕方、消すのが面倒で流しっぱなしにしていたradikoから流れてきた彼女の歌声だった。
そのとき聴こえた曲名は忘れてしまったが、彼女の強い歌声とハーモニックな曲調に強く惹かれた。

便利な時代の便利なインターネットのおかげで僕はすぐに彼女の曲をYoutubeで聴くことができた。
それにしてもヒグチアイという名前がよい。本名なのかはたまた芸名というやつなのかそれはこの際どちらでもよい。
力強さと愛らしさを敷き詰めたような、収まりの良い5文字。
ところで僕の苗字はそれだけで5文字ある。メジャーな苗字でもないので自己紹介は苗字で済ませることが多い。
そのせいか特に名前を書くときは昔から名前のほうの数文字はどうも蛇足なような気がする。
決して嫌いな名前ではないのだけれど。
幕が閉じきる前の演者の小さなおふざけのような、お母さんにばれないように子供がかごに入れたスナック菓子のような、くすぐったい蛇足感。

でも、それが僕にとって多分ちょうどいいのだと思う。
僕がヒグチアイでないように、彼女も僕(の名前)ではないからあんな素敵な声で強いメッセージを歌えるのだと思う。

当たり前か。

一番の友だちは
裏側の自分だから

いつまでも勝てなくて
ときどきはつらくなる

迷った道で拾った何かを
ポケットにつめて

ぽたり - ヒグチアイ

marshmallow-qa.com

Golangで四則演算するだけのコンパイルができた。

🐬はじめに

speakerdeck.com

buiderscon2019でのDQNEOさんのライブコーディングの発表を見て「コンパイラ作るの夢ある〜面白そ〜」となったのでforkして0からやってみました。 といってGoで書いたのでほとんど写経。ちなみに更にその親玉のchibicc8ccなんかの実際のコードも見てみました。

github.com

📝メモ

...
        case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
            intLiteral := readNumber(char)
            token := &Token{
                kind:  "intliteral",
                value: intLiteral,
            }
            tokens = append(tokens, token)
            fmt.Printf(" '%s'", token.value)
        case ';', '+', '-', '*', '/':
            token := &Token{
                kind:  "punct",
                value: string([]byte{char}),
            }
            tokens = append(tokens, token)
            fmt.Printf(" '%s'", token.value)
...

このあたりの部分はByteReaderさんが処理したものをTokenizerさんがTokenごとにうまく分割しているところ。
readNumberメソッドは数字がその後も続くようだったら最後まで見に行くやつ。

...
        switch token.value {
        case "+", "-", "*", "/":
            return &Expr{
                kind:     "binary",
                operator: token.value,
                left:     expr,
                right:    parseUnaryExpr(),
            }
...

このあたりはTokenの2つ目を見た後にそれが演算子Tokenだった場合はそれにさらに続くと期待される数値Tokenをパースさせようとするところ。
parseUnaryExprの中でparseUnaryExprを呼び出して再帰的になっている。

ちなみに余談なんですがアセンブリコードに出てくるmovq addqのqってなんなんだろう?と思って調べてみました。

検索して出てくるサンプルコードを見ていると、movq や addq ではなく mov, add と書かれているものもあります。q は quad word の略で、4 語長つまり 64bit データを扱うことを意味します。x86 では命令にビット長を明示指定することができ、b : byte (8bit)、w : word (16bit)、l : long word (32bit)、q : quad word (64bit) が指定できます。x86 はもともと 16bit CPU である 8086 から出発しているので、16bit を基準の語長(ワードサイズ)としています。

多くの場合、movq と書かず単に mov とだけ書けばアセンブラが自動的に適切な長さを判断してくれるのですが、この資料では長さを明示する方を選びました。

初学者向け x86/MacOSX 64bit アセンブリ

ということでqなくても問題なく動作しました。


root@e1219eb59aea:/mnt# echo -n '4*7' | go run main.go | ./asrun
------------ assembly(a.s) ------------
#Tokens: '4' '*' '7'

  .global main
main:
  mov $4, %rax
  mov $7, %rcx
  imul %rcx, %rax
  ret
------------    result     ------------
28
root@e1219eb59aea:/mnt# echo -n '12/3' | go run main.go | ./asrun
------------ assembly(a.s) ------------
#Tokens: '12' '/' '3'

  .global main
main:
  mov $12, %rax
  mov $3, %rcx
  mov $0, %rdx
  idiv %rcx
  ret
------------    result     ------------
4

てな具合で写経しながらではあるものの四則演算のできるアセンブリコードを吐かせることにも無事成功。

型があるとだいぶ楽ですね。
楽しかったのでまた続きをやる…かも?

参考

github.com

github.com

github.com

github.com