u16suzuの blog

日々学んだことのメモブログです。

2022/11/5(sat)の日記

家族でカフェに行った

自転車で近くのカフェにみんなで行った。途中、くねくねした道で迷ったがなんとかついた。 近さを優先してわかりづらい道をいくよりも、多少遠くても大通りを経由したほうがハラハラしなくて好ましく思う。 公園の周りだと割とオシャレなカフェがあって、この辺だと住みやすそうだな〜と思う。

オーブントースターが活躍している

ガスコンロがちょっと使いづらいこともあり、最近はもっぱらオーブントースターで料理をしている。 サワラ、タイ、サンマなんかの切り身を買ってきて塩を振ったりオリーブオイルをまぶして5分ほど焼けば、手軽においしい魚をとれる。 自分はレアな焼き加減が好きなようで、ふわふわの前のとろとろのレベルのお魚を楽しんでいる。

吉田戦車の逃避飯を再読した

東京に住んでいたとき妻が図書館で借りてきた本。とても気に入り、その後Kindleでも買っていた。 仕事の合間の息抜きに料理をしたい、というヨシダサンにとても共感できる。 私の場合は仕事中は集中したいので、上がった後の深夜の開放感の中で一人で台所でゴソゴソしたい派。

amzn.asia

2022/11/7(mon)の日記

菊の蕾

息子が捕まえたバッタをこっそり逃した

年をとったせいか、子育てをしているせいか、最近は生き物の殺生が心苦しい。

夜中に食事をとると内臓に負担がかかる

遅い時間のアルコールや食事が翌日のパフォーマンス悪化につながることが多くなってきた。 最近は意図的に粗食をとるようにしている。 朝食に毎日飲んでいたレッドブルをやめて、オートミールにした。 昼食にはストレス発散の意味合いを込めてガッツリしたものを取っていたが、血糖値スパイクによるパフォーマンス低下が気になってきたので、パンなど軽食で済ませている。 昨晩、久しぶりに夜中にクリームパンを食べたら今日の胃の調子が悪かった。

仕事でカメラで顔出しをするようになった

何かの本で、顔を出すと心理的負荷が高まると読んだので、結構な割合でオフにしていた。 しかしながら、これが逆に自分がうなずいたりするリアクション表現のひとつを削ることになっており、 逆にストレスになっていることに気づいたため、有効にするようにしてみた。 人間、何かしらの自己表現をすると、ストレス発散になる気がする。

奥さんが作ってくれたご飯が美味しかった

平野レミさんのレシピから、豚眠菜園。味がしっかりめでよかった。

www.kyounoryouri.jp

ハンターハンター37巻を読んだ

字が多い。という感想。ほんとんど流し読み。 そして話を結構忘れてしまっている。

2022/11/6(sun)の日記

WEB+DB vol.122 の作って学ぶRDBMSのしくみを読んだ

システムプログラミングに興味があるので、2章まで読んだ。 Rustのカニ本を読んでおいたので、理解が早かった気がする。 技術書を読むときは、概要をざっとつかんでからあとはコードを読むほうが早い気がする。 書いてあることが想像つく部分は、読み飛ばすようになった。

仕事で使う資料を作った

仕事で仕様を決めるMTGに使う資料を作成した。図を作る際にkeynoteを使おうとしたがうまくいかず、結局いつも通りSkitchを使って作成した。 図を作るといっても、スクショをとってそこに矢印やコメントを追加する程度なので、Skitchでじゅうぶんなのであった。 オンラインMTGメインの働き方になり、文章化が大事なのはそうだが、理解を促進する図も適度に入っているほうが好みだ。

雰囲気で使わずきちんと理解する!整理してOAuth2.0を使うためのチュートリアルガイド を読んだ

仕事で使うので読んだ。今までOAuthを雰囲気で使っていたので、あらためて読んだ。 図に書きながら読み進めたら理解がはかどった。リフレッシュトークンそういうことだったのか。

雰囲気で使わずきちんと理解する!整理してOAuth2.0を使うためのチュートリアルガイド (技術の泉シリーズ(NextPublishing)) | Auth屋 | 工学 | Kindleストア | Amazon

家族で近所の公園に行った

家族でパン屋でランチをとった後、自転車に乗って公園に行った。 大きな森がある公園で、チェアリングをした。 息子はBurleyが出しているロードバイクに牽引するやつに乗せていったのだが、大きくなったのかちょっと窮屈そうだった。 調べたら耐荷重量 45kgまでなので、まだまだ楽しめそう。 その後はひとり時間をもらい、自転車で近くのカフェに行ってアイスコーヒーを飲みつつ読書をした。

ISUCON11 に出場した

ISUCON11に一人チーム「カフェでまったり」で出場した。 スコアは8300で予選敗退だった。言語は一番手に馴染んでいるRubyを使った。 本戦出場チームの9割がgoを使っていたので、来年からgoに鞍替えするかもしれない。

今回、初参加だったが、準備を全くせずに、ぶっつけ本番だった。

以下、つまずいたポイント。

  1. 初めから入っていたMariaDBのままだと、降順(DESC)のindexを貼れないことに気づかなかった。
  2. GUIツールで直接Indexを貼ってもデプロイすると、Indexが消えてる。 => 0_Schema.sql の最初で DROP TABLE されているので、その後で ADD INDEX する必要があった。
  3. slow log が出なくて、見れなかった。 => 設定ファイルにログの設定を書かなかったことが原因

よかった点は、今回 TablePlus を導入してDBのテーブル構成をスッと確認できたこと。 これのおかげでIndexが貼れてないことにすぐ気づけた。

今回、初めてISUCONに参加することができた。 一人チームでもOKだったので、気軽に参加することができてありがたかった。 ISUCONの良いところは、知っているだけの知識を強制的に実践する場を提供してくれるところだ。 好むと好まざるとにかかわらず、歳をとっていくと自分の思考が井の中の蛙になっていくので、 自分のコンフォートゾーンから出ていく動きを積極的にやって精進していきたい。

The file '/usr/local/bin/bundle' is marked as an executable but could not be run by the operating system.

最近は仕事では Docker 上で開発することがほとんどでローカルでRubyをいじらない。 いつからか ローカルでの bundle install が失敗するようになっていた。 bashshebangを実行ファイルに書くと良いという情報があったが、それでもなおらなかった。

$ bundle install
Failed to execute process '/usr/local/bin/bundle'. Reason:
exec: Exec format error
The file '/usr/local/bin/bundle' is marked as an executable but could not be run by the operating system.

とりあえずbundlerを入れ直そうと思い、削除したところなおった。

$ rm /usr/local/bin/bundler /usr/local/bin/bundle

削除後、以下のパスの bundler が使われるようになった。

$ /Users/suzuki_y/.rbenv/shims/bundle

/usr/local/bin/bundler のソースコードには、コメントで「この bundler は gem インストール時に作成したもの」と書かれていたので、 rubygems側で作ったbundlerを誤って使うようになっていたのかもしれない。

Alfredのメモ用のワークフローをかいた

DropboxとAlfred、Atomを組み合わせて自前のメモツールとしている。

find_fileのワークフロー

メモファイルをファイル名で検索し、検索結果をAlfredに表示し、選択してAtomで開く。

  • script filter languageはruby, with input as {query} を指定する。
require 'json'

files = `find -E ~/Dropbox/memoWork/ -type f -iregex \'.*{query}.*\'`

items = []

files.split("\n").each do |file|
  items << {
    title: File.basename(file),
    subtitle: file,
    arg: file,
    icon: 'some_icon.png',
  }
end

res = {
  "items" => items
}.to_json

print res

指定のハッシュ形式でprintすると、Alfredの中で一覧表示し選択することができる。選択した項目はハッシュの arg の部分が run script の {query} に入る。

  • run script
/usr/local/bin/atom {query}

memoのワークフロー

メモディレクトリを開きつつatomを起動 日付メモも開く

  • keyword

  • run script

/usr/local/bin/atom ~/Dropbox/memoWork

ruby ./main.rb daily

grep_fileのワークフロー

brew install pt しておく必要がある。 run script は find_file と同じ。

require 'json'

s =`/usr/local/bin/pt {query} ~/Dropbox/memoWork/ | grep -v 00_daily | grep -v 99_アーカイブ`

items = []

s.split("\n").each do |line|
  l = line.split(":")
  fname = l.first
  arg   = l.take(2).join(":")
  items << {
      title: File.basename(fname),
      subtitle: arg,
      arg: arg,
      icon: 'some_icon.png',
  }
end

res = {
  "items" => items
}.to_json

print res

Rubyで等差数列と等比数列を書いてみる

inject便利だ。

# 等差数列
def f(a, d, c)
  c.times.map{|i| a + (d * i)}
end
p f(1, 1, 5)

# 等比数列
def f2(a, r, c)
  c.times.map{|i| (a * r **i)}
end
p f2(1, 3, 5)

# 等比数列 DP ver
def f3(a, r, c)
  c.times.inject([]){|res, _| res << (res.last || a) * r}
end
p f3(1, 3, 5)

# 等差数列 DP ver
def f4(a, d, c)
  c.times.inject([]) do |res, _|
    if res.last
      res << res.last + d
    else
      res << a
    end
  end
end
p f4(1, 1, 5)

# 等差数列 Enumerator::ArithmeticSequence ver
# #stepがEnumeratorを継承したEnumerator::ArithmeticSequence を返す。
# Enumerator::ArithmeticSequenceは等差数列を表現するクラス
p 1.step(by: 3).take(5)