最近はduckduckgoを使っています

エンジニア向けの検索エンジンほしい - willnetの日記の続き。3年半越し。

duckduckgoはデフォルトが英語の検索で、1クリックで日本語の検索に変換できる。

これはデフォルトである英語の検索結果

日本語に変えた結果

これだと技術用語を検索するときのノイズが減って便利。技術用語以外を検索するときはgoogleのほうが便利な気もするけど、これで数ヶ月運用して特段問題を感じていません。他の検索エンジンは全然試せてないのでオススメあったら教えてほしいです(\( ⁰⊖⁰)/)

2023/04/17のメモ

GitHub Sponsorsの最新情報 - GitHubブログ

  • へえ
  • 企業でスポンサーすると仕分けはどうなるんだろうな
    • 全額経費になる?

View Transitions API | Drifting Ruby

  • Smooth and simple transitions with the View Transitions API - Chrome Developers をstimulusで使うには、という話
  • こういうアニメーション系はあまり好きではないんだけど、こういうのがやりたいときに簡単にできるというのは良いですね
    • 実際現状ではchromeやedgeしか対応していないので、積極的には選択しづらいかも?
    • でも最新のchromeだけをサポート対象にしているところもあるし、chromeの割合が多いサービスであれば対応していない場合はアニメーションせずに普通に遷移する、としておけばいいのかも
  • stimulus的には特に見どころはないけど、turbo的には Custom Render を使っているのがなるほど感があった

config.rake_eager_load

2023/04/11のメモ

Rails 7 API Application | Drifting Ruby

slack-edge.com の証明書を許可してくれというslackからのメール

Mitigating Risk During the Request (HTTP to 3rd Parties)

  • 外部APIの実行はバックグラウンドジョブでやれ、はそうですね、となった
  • HTTPライブラリのタイムアウト時間を短くする、とサーキットブレーカーを設定する、はたしかにな〜となった

AWSに最適化された「Amazon Linux 2023」正式リリース。カーネルライブパッチなど新機能、今後は5年間無償サポート、2年ごとにメジャーバージョンアップ - Publickey

  • ようやくでたのか
  • EC2使ってるなら鉄板なのかなあ
  • 個人的にはubuntudebianの方が慣れてて好み

charkost/prosopite: Rails N+1 queries auto-detection with zero false positives / false negatives

Rust製の高速なwebpack互換バンドラ「Rspack」登場。現時点で5倍から10倍の性能向上 - Publickey

5/15~6/3のメモ

Active Storage: allow serving files by proxying · rails/rails@dfb5a82

  • cdnでactive storage使えるようになって素敵

バケットポリシー

バケットポリシーで有効であれば、ユーザのポリシーがなくてもアクセス可能

S3のアクセスコントロールリスト

画像アップロードして閲覧する、みたいなサービスのとき、バケットのアクセスコントロールリストの「オブジェクトの一覧」をチェックしていたのだけど不要だった

image.png (66.5 kB)

S3のバケットポリシーでハマったので、S3へのアクセスを許可するPrincipalの設定を整理する | Developers.IO

UPS

電気ケトルなどを使っているとルーターも属しているサブブレーカーがよく落ちてインターネット接続が死ぬので、VDSL装置とルーターUPSにつなげたいのだけどどれがいいのか全然わからない…。瞬断があると困るのだけど、瞬断がないやつはざっと見た限り10万くらいから。さすがに高い。

「UPS」を正しく選ぶコツ――容量の計算方法は? 給電方式とは? (1/3) - ITmedia PC USER

他の記事見た感じ、別に高いやつじゃなくても大丈夫そう?

savanna.io公式twitterアカウントをruby-jpのsavannaチャンネルに流すようにした

TwitRSS.me - rss of twitter user feeds by screenscraping with perl を使った

Add signed ids to Active Record (#39313) · rails/rails@1a3dc42

パスワードリセット機能なんかを作るときに便利そう

Rails Bytes

rails templates共有サイト。gemの導入に複数ステップ必要な場合にこれを活用すると一ステップに縮まるのでいいんじゃないかと思った

StimulusReflex

stimulusの拡張で、サーバが送ったHTMLを既存のHTMLといい感じにマージさせて更新させることで、jsを頑張らなくてもSPAできるぞ!というやつらしい。ちゃんと時間をとってドキュメント読んだり試してみたい

Each form gets its own CSRF token in Rails 5 | BigBinary Blog

  • formごとにCSRFトークンできたのってこういう理由だったんだっけ(忘れていた)
  • Rails 6.0.3.1でform用のCSRFトークンの生成方法がかわったのかな
    • グローバル用のCSRFトークンはランダム文字列だった記憶

YAMLやMarshalをロードするとRCEになる、みたいなの具体的にどういう感じなんだっけ

MarshalでRCEになるのはそれ使ってsendしてるコードがアプリケーション内にある、とかなのかなあ

The dash of sugar used to support the key architectural pattern in BC3 + HEY by dhh · Pull Request #39341 · rails/rails

Railsでクラステーブル継承機能ができそう。よいのでは

画像ファイルによるクロスサイト・スクリプティング(XSS)傾向と対策 | 徳丸浩の日記

  • nosniffつけない状態で脆弱性となる具体的なケース、よく忘れる
  • ↑はjsを画像と偽る例

https://qiita.com/noob1234/items/0d9e0f94eb26e4087d8e

aws cliでのログイン、profileごとに設定を分けられるのかな

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html

なるほど単に~/.aws/credentialsに規定の書き方で書いておけばいいかな(オプション覚えるのがだるい)。

AWS Chatbot(beta版)を用いたSlack通知 | SEEDS Creators' Blog | 株式会社シーズ

  • Chatbotなんとなく理解した
  • Chatbotで特定のSNSトピックにサブスクリプションを作るので、SNS側ではトピックだけ作っておけばよい

https://github.com/puma/puma-dev/blob/e264766d07b2c78e0e6f60b8219b9bb487b51f81/dev/resolver.go#L12

  • puma-devがmacDNS設定をどうやって変更しているのか気になっていたのだけどこういうことなのかな
    • "/etc/resolver"配下にDNSを変更したいドメイン名のファイルを作ってどのDNSを参照するかの設定を書けば良い?

macOS Catalina 10.15.4の不具合:Macがスリープから復帰後に強制再起動する問題が発生中 | ゴリミー

https://github.com/rails/rails/commit/6c4f3be929f1f427d6767050848f2fbee8c1f05f

コントローラ単位でraise_on_missing_translationsできるようになった

automatorで作業自動化したい

普段、自宅では縦2枚にしたディスプレイを使っているのだけれど、zoomなどで画面共有をするときには横にして使っている。毎回システム設定を起動してディスプレイを選択して、横(縦)にする方のディスプレイ設定を変更するというのが面倒なので、自動化設定したいな、と思いautomatorを試してみた。

automatorは操作を記録して自動化できるので一見できそうだったが、初期状態(例: システム設定が起動している、していない)やマウスクリックの座標が状況によって異なるのが影響しているようでうまく自動化できなかった。うまいやり方があるような気もするが、気力がないのでとりあえず今日はここまで。automatorの知見があるひとに話を聞いてみたい(ググっても簡単な使い方しか引っかからない)

deep-cover/deep-cover: The best coverage tool for Ruby code

ruby標準のcoverageを置き換えるgem。ぱっとみ良さそうではある

Dependabot

  • dependabot、web上からだけではなくてconfig.ymlで設定できる
  • 編集できる内容はwebで編集するのと変わらなそう

【新機能】Amazon CloudFrontに「Maximum TTL / Default TTL」が設定できるようになりました! | Developers.IO

それぞれどういうときに使われるかよくわかっていなかったので勉強になった

https://github.com/rails/rails/pull/39445

  • arelをwhereのブロック中で指定できる
  • べんりだけど、どんなクエリになるのかわかりづらくなりそうだなー

依存性の注入 - Wikipedia

rubyだとDI使うこと無いから、具体的にどんなんだったっけ?となってググった

Dockerのマルチステージビルドを使う - Qiita

イメージの大きさを小さく保つためのテクニック。本番環境でDocker使うなら積極的に使いたいところ

Understanding if your Deployment is CPU or Memory Bound

  • 参考になった
  • Railsは高トラフィックでもメモリ使用量はかわらない。時間経過でメモリが増えるのはある
  • CPUは逆に高トラフィック下でCPU使用量が増える。時間経過では変わらない
  • メモリは計測しやすいけどCPUは高トラフィックなときじゃないと計測できない
  • Railsのプロセスを1つ増やすか(もしくはunicornからpumaに移行するか)どうかは、1つ増やして高トラフィックなときにCPUとメモリを使い切っているかを考える
  • CPU使い切っていたらどうしようもない。pumaはメモリ効率よくなるけどCPUに関しては変わらない
  • メモリ使い切る(そしてCPUに空きがある)場合はunicorn→pumaにして、スレッド数を2以上にしてもうまくいくかも

2020/04/01~2020/05/13のメモ

👶生まれたりして忙しくて完全に習慣が途切れていた。メモ自体は時々取れていたので一度にコピペしておく

タブレットホルダー

やっぱりrubymineでfishのロードに失敗する

  • 失敗するときと成功する時がある。
    • PATHがターミナルで開いたときと違う
    • たぶんfishで特定のPATHを追加する前にエラーになっているのではないか
    • shell統合するとさらにPATHがへる。
  • ターミナル - 公式ヘルプ | RubyMine
  • ~/.config/fish/config.fishを読み込んだときに、パスがとおっていないコマンドを実行しようとしてエラーになる。
    • そもそも /usr/local/binをPATH登録している場所が見つからなかったので、ターミナルでfishを起動してhomebrewが使えるのがなにかおかしい気がしてきた
      • 特殊なことをしていそう
      • config.fishの先頭でbrew shellenvで表示した値をいれたらエラーが出なくなった
  • rubymineのときはfishの設定ファイルの読み込み順番がターミナルのときと違う、という推測

第2回 IDEF1XによるER図の記述:初めてのデータベース設計|gihyo.jp … 技術評論社

er図の書き方、いつも「これであってるんだっけ?」となる

macos - xcode-select active developer directory error - Stack Overflow

  • yarn installでgypのビルドに失敗した
  • xcodeコマンドラインツールを入れる
  • sudo xcode-select -switch /Library/Developer/CommandLineTools
  • yarn cache cleanしてからyarn install
  • で解決した

macmini 2011の電源が入らない

  • 電源をいれてもすぐ電源ランプが消失して電源が切れてしまっていた
  • もう使わないし修理にお金かけてもな…となっていたので捨てるかな、と思っていた
    • が、SSDを消去してから捨てないとなーとなり放置していた
  • https://support.apple.com/ja-jp/HT201295
  • macminiからSSDとりだすの、めんどくさすぎたので諦めてそのままリサイクルに出すことにした

less にパイプしても色が消えないようにする方法 - Qiita

less -R忘れがち

macbook pro 16インチ突然の死

  • PRAMリセットやSMCリセット、セーフブート実施済み
  • OSXの再インストール実施済み
  • しかし死
  • 別ユーザを作って様子を見るか、クリーンインストールするか
  • CalDigit Support Downloads ファームウェアあるけど10.15.4だと問題あるみたいなのでまだ入れないでおく
    • そもそもcaldigitとつないでいないときも死ぬので関係ないんじゃないかと
  • 一応周辺機器原因説あるかもしれないので、しばらくすべての周辺機器はずして作業してみようかなあ…→クリーンインストールしても再現してしまったので修理出した

MySQLの接続についてdatabase.ymlに書ける設定 - Qiita

variablesに書かれている設定をActiveRecordはセッションの設定として指定する。

へー

https://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html

rails newするとconfig/initializers/wrap_parameters.rbで↓の用に設定されている

ActiveSupport.on_load(:action_controller) do
  wrap_parameters format: [:json]
end

htmlとjsonとでリクエストを投げるとき、json側のリクエストのフォーマット側でいちいち{users: { ... } }みたいにしなくてよくて便利。ということかな

基本使わないけどたまになにかの表紙で見かけて調べる、というのを1年に一回くらいやっている気がする

Pipeline Variables - CircleCI

ハードコーディングで記述して、かつ何回も参照しているやつをparametersとして定義してやるとなにかあって変更するときによい

macOS Mojave cannot find /var/db/DetachedSignatures with Swift 4

macが突然再起動している問題を調べていたらコンソールでリンク先と同じエラーが出ていた

Model error as object by lulalala · Pull Request #32313 · rails/rails

  • Errorクラスを新設することで、Errorsに対してwhereなどのクエリっぽいメソッドを生やすことができるようになった
  • 複雑なモデルの複雑なエラーをゴニョゴニョしやすくなったのかな

https://qiita.com/bbapexx/items/208ded6064e8ae08294e

karabinerで権限を許可したいものが表示されなくて困ったけど、単に+を押してファイルを探しにいくだけでよかった

redisのメモリ消費量が大きすぎるので調査

ActiveStorageで削除する流れ

  • 「self.image = nil」とすると、ActiveStorage::Attached::Changes::DeleteOneが作られて保存後に実行される
  • ActiveStorage::Attached::Changes::DeleteOneはimage_attachment=nilを実行する
  • has_one :image_attachmentになっているのでAttachmentは保存のタイミングで削除される(はず)
  • attachmentでは、after_destroy_commitでpurge_dependent_blob_laterが実行されるようになっている
  • purge_dependent_blob_laterは↓なので、関連のオプションがpurge_laterだとpurge_laterされる
    def purge_dependent_blob_later
      blob&.purge_later if dependent == :purge_later
    end
  • purge_laterはデフォルトで設定されているので、明示的にそれ以外に変えない場合はpurge_laterでblobが消される
  • purge_laterの実態はActiveStorage::PurgeJob.perform_later(self)
  • ActiveStorage::PurgeJob.perform_laterはpurge_later
  • purge_laterはdestroyしてdelete
  • deleteは画像の削除(サムネイルも一緒に消す)

2020/03/31のメモ

Accurate Performance Measurement in Rails with a "Performance Environment"

  • パフォーマンスのボトルネックを調べるには、ローカルに本番相当の環境を作らないとだめだよね、という話
    • データを本番相当の量にする
    • 本番相当の設定にする
      • development.rb
      • gem
    • 実際のところはデータを用意するのが大変なんだよなー

Rescued Exceptions: A Silent Performance Drag in Ruby

  • 例外のハンドリングは遅いので、想定しているケースでの例外はやめようという話
    • 例外よりはthrow catchのほうがstacktrace情報持ってないので速い
  • rack-mini-profilerで例外をハンドリングしているかどうかがわかるらしい

Can I Switch To Puma? Thread-Safety, Rack, Constants and More

  • unicornからpumaに変えるとスレッドセーフでないアプリケーションのときに死ぬので変えづらい、という人向けの話
  • pumaを1スレッド運用にすれば安心
    • しかし1スレッド時のpumaとunicornってどっちがいいのだろ
  • 2スレッド以上にするときはグローバルな変数に気をつける、というのは定番だけど、rack middlewareにも気をつけろというのはなるほど感あった

config.action_view.raise_on_missing_translations

2020/03/09~2020/03/27のメモ

最近忙しいのかなかなかメモができない><

RubyMineのターミナルが壊れた話 - @ledsun blog

  • 同じ状況で、なんだろうなこれとなっている→shellのintegrationを外したりゴニョゴニョやっていたらなおった?

SSHサーバーの公開鍵管理を効率化するには? ssh-keyscanコマンド:ネットワーク管理の基本Tips - @IT

  • known_hostsの内容を一括で編集したいときにべんりそう

ジョブの実行を Workflow で制御する - CircleCI

  • このタグだったらこのジョブを実行する、みたいな設定ができる
  • リリース用のタグつけたらリリースする、みたいなのができるのかな…

CircleCIで同じHostnameのSSH鍵を複数追加したい - Qiita

  • circleciでGitHubへの鍵(ほどよく権限調整されたもの)を設定する方法についての考察
  • GitHubにはdeploy keyとuser keyがある
  • circleciで複数リポジトリを扱いたい場合はゴニョゴニョする必要がある
  • circleci推奨は、それ用のGitHubアカウントを作成しuser keyを使う、というものらしい

MySQLのencodingをutf8からutfmb4に変更して寿司ビール問題に対応する|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社

  • すでにutf8で運用している場合ってこの手順で良いのかな
  • rake db:migrate:resetしたらテーブル作り直されるので合ってるか
  • 単にalterしたらだめなのかな
    • ファイルフォーマットが違うから無理かな?

[CentOS] yumでhttp-develをインストール失敗と解決方法 | 迷走男子!!

yum downgradeしらなかった

MySQL 5.7のONLY_FULL_GROUP_BYはちょっと進化してた - かみぽわーる

GROUP BY句のカラムと関数従属性のあるカラムはSELECT句に書けるようになった

めっちゃ便利では。

アパートの大家さんにNURO光の工事許可をもらうコツまとめ

  • 家のインターネットおそすぎるのでNUROに変えたくなってきた
  • ダメ元で管理会社に言ってみようかな…

Imgbot - Automatic image compression

  • リポジトリ中の画像を自動で変換してPRだしてくれるサービスらしい
  • 画像を扱うことの多いサービスだと便利そう

Clockwise

  • googleカレンダーのスケジュールで予定を動かせるやつを自動で動かして、まとまった作業時間を確保してくれるサービスらしい

Asynchronous stand-up meetings in Slack | Geekbot

  • slackでの朝会とか振り返りとかをサポートしてくれるbotらしい
  • 一人$3/monthらしいのでちょっと高いような気がする

Time#localtime (Ruby 2.7.0 リファレンスマニュアル)

  • localtime
  • Time#localtimeはlocaltime(3)に依存してそう
  • TZ環境変数を編集するとRubyのTimezoneをいじれる、というのはTZ->localtime(3)->Time#localtimeのような流れなのかな

RailsでDBサーバのタイムゾーンってなにか影響するんだっけ

AWSのCloudFrontでアセットをHTTP2 & gzipで高速に配信する - Cluex Developersブログ

gzipにするのはやっておいたほうがいいですね