私が歌川です

@utgwkk が書いている

西荻窪の桜と鳩羽つぐちゃん

東京に来たついでに,鳩羽つぐちゃんに関する漠然とした何かを探しに西荻窪に来てみた. 西荻窪という地名は1970年に廃止されたらしいが,今でも駅名に残っているため,私はその周辺のことを西荻窪と呼ぶことにしている.

www.youtube.com

そもそも西荻窪という土地のことを知ったのは,鳩羽つぐちゃんの動画からである. そこが都区内フリーきっぷの範囲に含まれること,そして杉並区の西の端であるということは,東京に行ってから知った.

西荻窪に住んでいるとされる鳩羽つぐちゃんに関する情報は,結論から言うと,何も得ることができなかった. 数十分という時間ではそれが限界なのかもしれないし,あるいはそもそも初めからそこには何もなかったのかもしれない. 街ではおまわりさんが自転車でパトロールをしており,八百屋では新鮮な野菜が売っていた. ここが杉並区であるということを,ときおり見かける放置自転車の注意書きが思い出させてくれる.

動画をアップロードするという発信行為によって,自らの命を,視聴者の記憶に残りつづける永遠のものとすることに成功してしまったのだろうな,とふと思った. そこでは結論は語られておらず,あらゆる可能性はまだ収束していない. 人々は,行為に対する適切な解釈を用意することによって鳩羽つぐちゃんを理解しようとしており,そして私もその1人に過ぎないのである.

www.instagram.com

桜がもうだいぶ咲いていた. 4月を待たずに葉桜になってしまうかもしれない.

MySQL5.7のN-gramインデックスを用いた全文検索で絵文字単体が検索できない

LIKEによるマッチングには引っかかるけど,MATCHによる全文検索では引っかからないケースがある. ずっと困っているので,正しいクエリの書き方とか設定とかあったら教えてください.助けてくれ…….

mysql> set names 'utf8mb4' collate 'utf8mb4_bin';
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test_table;
+----+-----------+--------------------------------------------------+
| id | title     | description                                      |
+----+-----------+--------------------------------------------------+
|  1 | test      | test data.                                       |
|  2 | 日本語    | これは日本語のデータです                         |
|  3 | emojis    | there are various emojis such as 😇, 🙆 etc.         |
+----+-----------+--------------------------------------------------+
3 rows in set (0.00 sec)

mysql> select * from test_table where match (description) against ('😇*' in boolean mode);
Empty set (0.00 sec)

mysql> select * from test_table where description like '%😇%';
+----+--------+--------------------------------------------------+
| id | title  | description                                      |
+----+--------+--------------------------------------------------+
|  3 | emojis | there are various emojis such as 😇, 🙆 etc.         |
+----+--------+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from test_table where match (description) against ('😇,' in natural language mode);
+----+--------+--------------------------------------------------+
| id | title  | description                                      |
+----+--------+--------------------------------------------------+
|  3 | emojis | there are various emojis such as 😇, 🙆 etc.         |
+----+--------+--------------------------------------------------+
1 row in set (0.00 sec)

mysql>

my.cnf の内容です.

[mysqld]
character-set-server = utf8mb4
innodb_ft_min_token_size = 1
innodb_ft_enable_stopword = off
ngram_token_size = 2

query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 8M

innodb_buffer_pool_size = 256M
innodb_flush_log_at_trx_commit = 0
innodb_flush_method=O_DIRECT
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M

table_open_cache = 32
max_connections = 128

[client]

再現用のmysqldumpです.

gist.github.com

スライドをスライド共有サービスに置くのをやめることにした

いろいろな発表スライドを共有するためにSlideShareやSpeakerDeckなどのサービスを使っている人が多いと思うし,私も使っていたけど,以下の点が気にくわないのでこれからは自分のVPSマシン上にPDFを置くことにした. SlideShareやSpeakerDeckなどのサービスが潰れてほしいとはまったく思っておらず,サービスの方向性が私と合わなかっただけのことだと思う. 他のサービスは使ったことがないのでわからない.

  • SlideShare
    • スライド読もうとしてページを送るとページの再読み込みが走ることがある
    • LinkedInのアカウントと紐づいているので,油断すると本名と結びついてしまう
    • 自分でスライドのURLを制御できない
    • MacKeynoteで作ったスライドのフォントが正しく表示されない
      • これはフォント埋め込み設定ができていないからという気がするが検証してない
  • SpeakerDeck
    • 日本語を含むタイトルに対してのURLの生成方法が狂ってて,油断するとURLがめちゃくちゃ長くなる
      • 英語のタイトルを添えるなどでいちおう対策はできるが……
    • 自分でURLを制御する方法がスライドのタイトルしかない
    • スライドのタイトルを変更したらURLが変わることがある(!?)

そもそも何のためにスライド共有サービスを使っているのかよく考えてみたが,使う必要はないという判断になった. 別にページ送りができればいいし,モダンなブラウザやPDFビューワならそういった機能ぐらいは備わっているだろう*1し各自でPDFを見てもらえばいいと思う. SNS的側面*2は私個人にとってはノイズでしかないし,管理するアカウントが1つ増えてしまうのでむしろ大変. 必要なのはスライドの設置場所だけだったのではないか.

今後は私が公開するスライドは https://sugarheart.utgw.net/static/pdf/ に置いていくことにする. utgw.net というドメインは私が最低限の文化的生活を営めている限りは保持していくと決めているし,置き場所が変わろうともURLは変えないつもりである. また,先述したサービスが終了しない限りはそこにあるスライドも(法的な問題が発生しない限りは)消さずに残しておく.

*1:EdgeでPDFを開いたときに,左右キーでページ送りできないのは許していない.

*2:スターや閲覧数.

KMCの春合宿で「画像検索・閲覧システムの実装と全文検索SQL」の話をした

speakerdeck.com

スライド中のURLを踏んだりSQLをコピーしたりすることができるようにPDFも用意しました

(追記: SpeakerDeckのページにPDFをダウンロードできるリンクがあるのでそっちを使いましょう.クールなURIは変わらないのでこちらのURLも残しておきます.)

(追記: URLのフォーマットに一貫性を持たせるためにリンクを差し替えました.クールなURIは変わらないので前のURLも有効にしています)

内容

このブログでも度々言及している,自分用の画像保存・共有BOT,ならびに画像検索システム「救い」の話をしています. BOT部分の実装をざっと見たり*1全文検索SQLを検索窓への入力から組み立てる方法について言及したりしました. また,似たようなことをやっている人の様子や今後の課題についても言及しました. 最後に,Twitter Streaming APIの余命宣告や凍結騒動などを受けての代替としてのAccount Activity APIMastodonのStreaming APIについても軽く触れました.

反省など

  • 前提知識なしで作るのはめちゃくちゃ難しいので結局省略した
    • 裏番組も似たような話で初心者向けだったので助かった
    • ある程度の前提知識の説明を講座に詰めても時間は余った気がする
  • 60分枠だったけど45分ぐらいで講座が終わったので,もっと内容詰めてもよかったね
    • あるいはスライドを回すのや喋るのをもう少し遅くするか
  • 「画像をクエリとした検索」については一切触れてないが,触れてもよかったな?

質問・指摘されたこと

  • n-gramで検索できない文字」とは?
    • 私が引っかかったのは です
    • 誰か助けてくれ……
  • AWSにもCloud Visionのような画像認識APIがあるので,S3使ってるならそっちを使ったほうが便利そう
  • 料金について
    • ConoHaの1GB RAMインスタンス(900JPY/month)とS3(100JPY/month未満)で1,000JPY/monthも行ってない
  • ソースコード公開されてないの?
    • 検索部分は出てない
      • めちゃくちゃなコミットをしまくったので……
      • 整備されたら出るかもしれない
    • BOT部分は出てる

宣伝

KMCではコンピュータを使ったいろいろな活動がしたい部員を募集しています.KMCに入部制限はありません.どなたでも入部できます.詳しくは入部案内ページをご覧ください.

www.kmc.gr.jp

RDBMSのインデックスと全文検索SQLクエリの話がしたくなったらいつでも来てください.そうでない人もどんどん来てください.

最後に

Use the Index, Lukeは最高の文章なので読みましょう.

*1:検索システム部分の実装を持ってくるのを忘れたのでその話はあまりしていない.

YAPC::Okinawa 2018 ONNASON に参加した #yapcjapan

沖縄は恩納村で開催されたYAPC::Okinawaに行ってきました.

トーク

id:papixさんのWebサービス監視の話は,今までだいぶ雰囲気でメトリックを見てきたので,それぞれの数値の意味や注意点が的確に説明されていてとても為になりました. mackerelプラグインっていっぱいあるんだなーということも知りました.

@kazuhoさんのHTTP/2の話はかなり興味深かったです. HTTP/2が常に最速とは限らない,ということはよく聞いていたけど,どういう場合(ここではパケロスがある場合)に最速でないかについて対比検証されていて分かりやすかった.

id:t_kytさんのファイルストレージの移行の話も,規模は違えど万単位のファイルを抱えている身なので心当たりのあることが多く,身に染みました. 一貫性を保ちつつ移行するには多大なやっていきが必要で,いつか私もやっていくことになるのか…….

id:moznionさんのPerl内での他言語組み込みの話も面白かったです. C/C++拡張とかだとあらゆるプログラミング言語で確立された方法があるだろうけれど,それ以外の一般のプログラミング言語に対する方法がInlineモジュールという形で用意されているのはすごい. とはいえ環境構築が大変になりそうという気持ちもあり,パフォーマンス重視なら全部CかRustに収束しそうだなーという気持ちも出るなどしました.

沖縄

2/28に沖縄に渡ったのですが,えっ2月? というぐらいに暖かく,ずっと半袖シャツに薄めの上着で過ごしていて,これが沖縄か……と毎日言っていた気がします. 首里城を見たり,国際通りをぶらぶらしておみやげを買ったり,屋台やセンベロで泡盛オリオンビールを堪能したりしたので,思った以上に沖縄を満喫してしまいましたね.

OISTすごい場所にあるなーと思っていましたが,かなり綺麗でホールの設備も整っていてトークが聞きやすくてよかったです.

さいごに

登壇者の皆様,JPAの皆様,そしてYAPCにかかわっている皆様ありがとうございました.

ご家庭での紙ハンドタオルの運用

利点

  • 手拭きタオルの洗濯から解放される
  • (とくに一人暮らし,ユニットバスなどの環境において)タオルを取り替えるのを忘れて臭いがするという体験から解放される

欠点

  • ハンドタオルは有限なので,切らしたら手が拭けない

気持ち

いまは一人暮らしをしているけど,ユニットバスのせいなのか手を拭くタオルがすぐ臭くなることに悩まされていた. 紙のハンドタオルなら使い捨てだし臭いに悩むことはないだろうと思って導入したところかなり良さそうだった. あとは何かしらの方法で紙タオルを切らさないようにする必要がありそう. 買い物に行ったときに多めに買う運用をやるかダッシュボタンを導入するか?

モチベーションとしては,手からいやな臭いがするというのに耐えかねたというのが大きく,しかしタオルを取り替えるのは面倒なので,使い捨てならいいのではないか,というところ. その点では期待以上に成功しているので,あとは運用方法をしっかり考えておくところ.