最近は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で使うには、という話
- こういうアニメーション系はあまり好きではないんだけど、こういうのがやりたいときに簡単にできるというのは良いですね
- stimulus的には特に見どころはないけど、turbo的には Custom Render を使っているのがなるほど感があった
config.rake_eager_load
- ドキュメントの修正コミットで気付いた
- rakeでenvironmentタスクを実行する時に、アプリケーション全体をロードするか否かの設定で、
config.eager_load
より優先される(かつデフォルトはfalse) - 6.1で入っていたみたい
2023/04/11のメモ
Rails 7 API Application | Drifting Ruby
- Rails7 API modeでユーザ登録と認証をフルスクラッチで作る話
- has_secure_tokenとhas_secure_passwordを使う
- せやな、という内容
- has_securet_token使ったことなかったのでドキュメントを見た
- http://api.rubyonrails.org/classes/ActiveRecord/SecureToken/ClassMethods.html#method-i-has_secure_token
- regenerate_tokenできるの便利ですね
slack-edge.com の証明書を許可してくれというslackからのメール
- slackから来ていたけど、これ対応必要なやつなのかな…?
- しばらく様子見
- 関連redditスレ
Mitigating Risk During the Request (HTTP to 3rd Parties)
AWSに最適化された「Amazon Linux 2023」正式リリース。カーネルライブパッチなど新機能、今後は5年間無償サポート、2年ごとにメジャーバージョンアップ - Publickey
charkost/prosopite: Rails N+1 queries auto-detection with zero false positives / false negatives
- へえ、と思ってみたらすでにスターを付けていた :star:
- zero false positive / false negativeってホントかな
- flyerhzm/bullet: help to kill N+1 queries and unused eager loading と比較してみたい
Rust製の高速なwebpack互換バンドラ「Rspack」登場。現時点で5倍から10倍の性能向上 - Publickey
- デファクト決まったら起こしてほしい
- Rspackチームはwebpackの性能向上にも取り組み、将来はwebpackの中にRspackを組み込んでいく試みも表明 - Publickey
- webpack自体が速くなるなら乗り換えコストが掛からないのでうれしい
5/15~6/3のメモ
Active Storage: allow serving files by proxying · rails/rails@dfb5a82
- cdnでactive storage使えるようになって素敵
バケットポリシー
バケットポリシーで有効であれば、ユーザのポリシーがなくてもアクセス可能
S3のアクセスコントロールリスト
画像アップロードして閲覧する、みたいなサービスのとき、バケットのアクセスコントロールリストの「オブジェクトの一覧」をチェックしていたのだけど不要だった
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
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 | 株式会社シーズ
https://github.com/puma/puma-dev/blob/e264766d07b2c78e0e6f60b8219b9bb487b51f81/dev/resolver.go#L12
macOS Catalina 10.15.4の不具合:Macがスリープから復帰後に強制再起動する問題が発生中 | ゴリミー
- 完全に一致
- comboってなに?と思ったので調べたMacのcombo(統合)アップデートと通常のアップデートの違い | MacRuby
- 普通にアップデートするのとなにか違うんかな
- とりあえずpowernapをオフにしておいた→改善した
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のメモ
👶生まれたりして忙しくて完全に習慣が途切れていた。メモ自体は時々取れていたので一度にコピペしておく
タブレットホルダー
- 縦2枚の外部ディスプレイで画面共有すると他の人にも縦長に映ってしまう
- ipadをつないでそれを共有すればよいのでは?となったがそれにはipadをいい感じの場所に配置する必要がある
- しかしどれを注文したらよいのかわからない。アーム形式が一番良さそうだけど、きちんとホールドできるのか、すぐに配置を変更できるのかは触ってみないとわからない。
- スタンドタイプでも別にいいのかな、という気がする(移動自体はよいしょ、と脇にどけるだけでいいし)。が、足場がじゃまになったりするかな…
結局画面共有するときは外部ディスプレイを横にする、で対応している
Amazon | 改良型 耐荷重3kg ピタッと止まり、ケーブルもすっきりのフレキシブル マジック アーム (標準アーム1組) | Sincerus | スタンド 通販
- Amazon | タブレット スタンド 卓上 Klearlook【揺れず頑丈な金属製台座・12.9インチ程対応・360度回転可能】スマホホルダー iPad スタンド アーム 横/縱/仰向け 持ち運び易い For iPad/Kindle/Nintendo Switch/android/iPhone多機種対応 ‐ブラック | KlearLook | スタンド 通販
やっぱり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のメモリ消費量が大きすぎるので調査
dbsize
コマンドでキーの数がわかるredis-cli --bigkeys
で大きいサイズのキーを一覧表示してくれる- dump.rdbのような名前のバックアップファイルを解析すると内訳がわかる
- sripathikrishnan/redis-rdb-tools: Parse Redis dump.rdb files, Analyze Memory, and Export Data to JSON
- pipがはいっていなかった
sudo easy_install pip
pip install rdbtools python-lzf
- sripathikrishnan/redis-rdb-tools: Parse Redis dump.rdb files, Analyze Memory, and Export Data to JSON
- メモリレポートが役に立った
- Redis Desktop Manager on the Mac App Store
- 1840円
- 買ってみたけど結局使わなかった
- あとでmaxmemoryを設定しておきたい
- rdbtoolsを使ってredisのデータの内訳を調べた - blog.tkeo.info
- Redis 本番障害から学んだコードレビューの勘所 - Qiita
- Redisのメモリ検証 - Qiita
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にも気をつけろというのはなるほど感あった
- rackアプリをあらかじめfreezeすることで破壊的な変更を検知することができる
- ioquatix/rack-freeze: A policy framework for implementing thread-safe rack middleware.
config.action_view.raise_on_missing_translations
- config.i18nになくてあれれ?と思っていたらaction_viewの下にあった
- Configuring Rails Applications — Ruby on Rails Guides
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がある
- 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のような流れなのかな
- Man page of TZSET
- そのようだ
RailsでDBサーバのタイムゾーンってなにか影響するんだっけ
NOW()
は影響するよねNOW()
使わないほうがいいな
- MySQLのタイムゾーン - @tmtms のメモ
- MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.6 MySQL Server でのタイムゾーンのサポート
- mysqlであればtimestamp型のカラムをつかわなければ特にどのタイムゾーンでも大丈夫かな…
AWSのCloudFrontでアセットをHTTP2 & gzipで高速に配信する - Cluex Developersブログ
gzipにするのはやっておいたほうがいいですね