私が歌川です

@utgwkk が書いている

sqlxで無理やり複数カラムに対するINクエリを書く

小ネタだしプロダクションで試したことはないです。ISUCONの練習をしていたらふと、これで複数カラムのINクエリが書けるのでは?? と思いついたのでメモ。

package main

import (
    "fmt"
    "log"
    "strings"

    "github.com/jmoiron/sqlx"
)

type WhereInArg struct {
    Name   string `db:"name"`
    Number int    `db:"number"`
}

func main() {
    whereInArgs := []WhereInArg{
        {
            Name:   "a",
            Number: 1,
        },
        {
            Name:   "b",
            Number: 2,
        },
    }
    query, args, err := sqlx.Named("SELECT * FROM tbl WHERE (`name`, `number`) VALUES(:name, :number))", whereInArgs)
    if err != nil {
        log.Fatal(err)
    }
    query = strings.Replace(query, "VALUES", "IN (", 1)
    fmt.Printf("%s (args: %#v)\n", query, args)
    // SELECT * FROM tbl WHERE (`name`, `number`) IN ((?, ?),(?, ?)) (args: []interface {}{"a", 1, "b", 2})
}

VALUES (:name, :number)VALUES (?, ?), (?, ?) に展開されるのがミソで、そこに括弧を足しつつうまく変換しているけど、プロダクションでやることはなさそう。placeholderを手で複製するか sqlx.In を使うことになる?

グローバル版ブルーアーカイブ公式4コマ

世界観がだいたい分かっているので、英語になっていてもまあ読める。誰かが日本語に翻訳したものをリプライにぶら下げてくれているが、自力で読み終わるまではできるだけ目に入れないようにしている。自力で読み解くと、まあ読めるんだけど、口調や意訳をどうすると自然になるか考えながら読み進められておもしろい。単語や慣用表現の意味を推測して、あとで答え合わせすると、まだまだ知らない表現があるものだな~と思う。

ヘイロー*1が消えるということは、意識を失っているということなので、そんな熱量で話しつづけたのか??

そういえば数年前に大学院の入試のためにTOEICを受けたのだけど、いま受けると何点ぐらい取れるのだろうか。

*1:頭の上の輪っか

珍しく朝6時前に目が覚めた。ちょっと散歩して朝ごはんを食べてから原稿を書いた。

見出しの下に何らかの文がある、ぐらいのところまで埋めた。ここから文章を膨らませていけばよいけど、果たしてどれくらいで書き上げられるか。冗長な表現にならないように気をつけたいし、一方で内容がスカスカだと悲しい気もする。

思い込みでさも知っているかのように書くのが一番よくないので、参照したドキュメントをメモしながら書いていて、速はそんなに出ていない。けどまあこういうものかとも思う。

ところでいつ入稿したらいいのかよく分かっていない。あとでスケジュールを調べて仮決めしておこう……。

桃山御陵駅ガード下をたどれるところまでたどる

近鉄の桃山御陵駅前のガード下には商店街があって、しばらく歩くと商店街ゾーンは終わるのだけど、ガード下の空間がどこまで続いているのか気になったのでたどってみた。

しばらくは駐車場として貸し出されていたり、貸しコンテナになっていたりするゾーンを通り抜ける。公園が見えてきたところで終わりかと思ったけど、回っていったらまだ続いていそうだった。

空間

下を通って、落書きを見届けながら進む。

さすがに住宅街っぽいところまで来るとガード下は通れなさそうだし、宇治川が近くなってきたしで終わりを予感しつつ進む。全然違うはずなのに「実家」を感じながら歩いていった。

ついに宇治川に到着して終了。鉄橋を見届けて引き返した。

川見てる

追体験する

goo.gl

味玉のレシピをMakefileで記述する

最近よく味玉を作っているのだけど、ジップロックに日付を記入し忘れたり、ボウルに水を入れてから氷を入れようとしたりしていて、手順の依存関係を意識しないとめちゃくちゃになる。

Makefileは依存関係と成果物を記述できるので、レシピをMakefileの形で書いたらおもしろいのでは、と思ったけど記述量が多い気がする。

.PHONY: お湯を湧かす 卵を茹でる 8分待つ ボウルに氷を入れる ボウルに水を入れる ボウルに卵を入れる 卵の殻を剥く ジップロックに日付を書く ジップロックにめんつゆを入れる ジップロックに卵を入れる 一晩寝かせる 味玉

お湯を湧かす:
   @echo お湯を湧かします

卵を茹でる: お湯を湧かす
   @echo 卵を茹でます

8分待つ: 卵を茹でる
   @echo 8分待ちます

ボウルに氷を入れる: 8分待つ
   @echo ボウルに氷を入れます

ボウルに水を入れる: ボウルに氷を入れる
   @echo ボウルに水を入れます

ボウルに卵を入れる: ボウルに水を入れる
   @echo ボウルに卵を入れます

卵の殻を剥く: ボウルに卵を入れる
   @echo 卵の殻を剥きます

ジップロックに日付を書く:
   @echo ジップロックに日付を書きます

ジップロックにめんつゆを入れる: ジップロックに日付を書く 卵の殻を剥く
   @echo ジップロックにめんつゆを入れます

ジップロックに卵を入れる: ジップロックにめんつゆを入れる 卵の殻を剥く
   @echo ジップロックに卵を入れます

一晩寝かせる: ジップロックに卵を入れる
   @echo 一晩寝かせます

味玉: 一晩寝かせる
   @echo 味玉ができました

実行結果は以下。まず最初にジップロックに日付を書いたらよいと分かって、それはそうだと思った。

% make 味玉
ジップロックに日付を書きます
お湯を湧かします
卵を茹でます
8分待ちます
ボウルに氷を入れます
ボウルに水を入れます
ボウルに卵を入れます
卵の殻を剥きます
ジップロックにめんつゆを入れます
ジップロックに卵を入れます
一晩寝かせます
味玉ができました

エピ

書きやすいところからちょっとずつ本文を書きはじめた。Re:VIEWの記法で書くのは初めてなので付属のマニュアルを読みながら書いていたけど、典型的な記法はだんだん身についてきた。だいたい書けたと思ってコンパイルしたら、インラインコード記法 @<code>{...}@<script>{...} と書いていてエラーになった。

エピグラフを書いてみたいのでちょっと調べたけど、PDFを生成するならLaTeXの機能を使うのが手っ取り早そうだった。epigraphっていうパッケージを読み込んでちょっとTeXを書いたらいけそう。

id.fnshr.info

TeXを書かずに済ませたいと言ったわりにはTeXのことを調べている気がする。

エピグラフです

//embed[latex]{
\setlength{\epigraphwidth}{.9\textwidth}
\epigraph{あれ……? 先生、もしかしてウェーブキャットさんをご存じないですか?}{阿慈谷 ヒフミ(ブルーアーカイブ)}
//}