patorashのブログ

方向性はまだない

2020-01-01から1年間の記事一覧

2020年を振り返る

はい、というわけで、今年も振り返っていこうと思います。去年のはこれ。 patorash.hatenablog.com なんか、来年の目標は来年考えるとか書いてたけれど、それをブログにしてなかった。 2020年序盤 たしか、OpenID Connectの技術検証をしていたので、それをそ…

stimulus 2.0.0の進化が凄い件(サンプルコードあり)

仕事で、とあるRailsアプリを作っているのですが、そこでstimulusを採用していました。そうしたらちょうど少し前にstimulusのバージョン2.0.0がリリースされていました。このバージョンアップによって、かなり書きやすくなりました。 今までと何が違うのか?…

simple_formを使ってActiveStorageのダイレクトアップロードを行う

引き続き、ActiveStorageネタです。 simple_formを使ってActiveStorageのdirect_uploadの設定を書くと、うまくいきません…。 = simple_form_for(@post) do |f| / 略 .form-inputs / 動くけれどダイレクトアップロードにはならない… = f.input :images, as: :…

ActiveStorageで画像を追加アップロードする

さっきこんな記事を書きました。 patorash.hatenablog.com 今度は、更新で画像を追加しようとしたところ、上書きされてしまいました。 追加されると思っていたのでびっくりな挙動でしたが、その辺りはこのissueにあります。 github.com Rails5までは、追加が…

ActiveStorageで添付した画像をupdateで削除する

Rails 6.0でとあるアプリを作っているのですが、ActiveStorageを使って画像を添付しています。登録は比較的簡単に行えたのですが、画面から画像のみ削除する方法がいまいちわからなかったので調査しました。 コード(修正前) モデル 複数の画像が添付できる…

言葉の遅れが改善する方法を読んだ

長男が発達障害と診断され、療育手帳を取得していて、療育施設にも通っている状態です。 うちの子はまだ言葉の獲得ができていないので、それのヒントがあればと思い、購入。 小児科医が伝えたい言葉の遅れが改善する方法 自閉症スペクトラム、アスペルガー症…

Rails6.0にアップグレードしたらActiveStorageでハマった件(追記あり)

最近は担当製品の関連アプリを改修しているのですが、Railsのバージョンを5.2系から6.0にアップグレードしました。そのときにActiveStorageでハマったので備忘録を残しておきます。なお、担当製品は既にRails6にしてあります。ただし、まだActiveStorage使っ…

デジタル・ミニマリストを読んだ

丸善CHIホールディングスの株主優待を使って買った本。岡山駅に丸善書店があったのでよかった。この本を選んだ理由は、なかなかスマホから離れられないから…。デジタル・ミニマリストとはどういうものなのか知りたかった。この本の著者はコンピュータ科学の…

RSpecによるRailsテスト入門を読んだ

RSpecの本はすごく前にThe RSpec Bookを読んでいたけれど、もうすでにだいぶ古いし、他の人に薦められるかってのと自分が知らないことが書いてあるかもってことで、Everyday Rails RSpecによるRailsテスト入門を買って読んでみた。 leanpub.com とはいえ、買…

has_manyの最新のデータをhas_oneで関連付けする方法

元ネタはこのQiitaの投稿。 qiita.com この投稿のように、UserモデルとArticleモデルが1対多になっていて、ユーザーに紐づいた最新の記事を取得したいこととかはあると思います。私がやってるプロジェクトでも似たようなことがありました。ユーザーに紐づい…

開発環境で複数のRailsアプリを起動する場合はActiveJobのキュー名に気を付けよう

アプリ連携を作っていた時に起きた現象なので、複数Railsアプリを起動する場合は気をつけましょう。 FooアプリとBarアプリがあって、どちらもActiveJobを使っていました。どちらもqueueの名前はdefaultのままにしていました。そして、同じRedisを共有してい…

Herokuの環境変数MEMORY_AVAILABLEがなくなってた件

以前にこんな記事を書いていました。 patorash.hatenablog.com HerokuのDyno毎にMEMRY_AVAILABLEが設定されているから便利、と思っていたのですが、Herokuのログを見るとpuma_worker_killerが512MBを超えた時点でpumaのworkerを終了させまくっていたので、も…

sidekiqとactiverecord-session_storeを使っている場合はWeb UIが使えない

バージョン sidekiq: 5.2.7 activerecord-session_store: 1.1.3 何が起きたのか ActiveJobのアダプターにresqueを使っていたプロジェクトで、アダプターをresqueに変えようとしていました。そこで、諸所の設定を修正後、ActiveJobにキューイングしても、うん…

sidekiqでDBへのコネクションプールを使い切らないようにする

ActiveJobに大量に仕事を依頼するようにしたら、以下のようなログが出るようになりました。 could not obtain a database connection within 5.000 seconds 早速調査。 ActiveJobでsidekiqを使う場合、connection_poolの値はconcurrency + 1以上にしよう - r…

ActiveJobのコールバックは2系統に分かれている

ActiveJobの処理が時々コケることがあったので調査した。 Active Job の基礎 - Railsガイド を参照したところ、ActiveJobのコールバックは以下のようになる。 before_enqueue around_enqueue after_enqueue before_perform around_perform after_perform 問…

Elasticsearchを5.6から7.9にバージョンアップ

過去にElasticsearchのバージョンアップをしたのだけれど、そのバージョンも既にEOLとなり、早く最新のバージョンにしたいと思いつつも、なかなかできずにいた。 ようやくできるタイミングがきたので、取り組んでみた。まだステージング環境では検証が終わっ…

タブレット型Chromebookは実質Androidタブレットだった

先日、ふとChromebookが気になり始めてググっていたら、LenovoのChromebookでSurfaceみたいにタブレットにもなるタイプのやつを売っているのを見つけました。タブレットにもなるし、普通にキーボードも付いてくるのに4万円ちょいだったので、ボーナスが入っ…

CircleCIで使う処理をShellScriptにしていっている

CircleCIで時々思わぬところでライブラリ系のキャッシュがされずにエラーになってしまうことがあった。 処理を速くするために複雑なキャッシュをするようになっていたので、それが原因である…。久々に自分で見てみても複雑だなぁ〜と思う。 patorash.hatenab…

tmuxに慣れようとしている最中

便利なツールにも慣れていきたいなと思って、最近まで放置していたものにも挑戦していこうと思い、tmuxに再チャレンジしている。再チャレンジというのは、昔に使おうとして面倒になって断念していたからだ。 tmuxはターミナルの多重接続ソフトウェアである。…

ansibleでSSH接続時にToo many authentication failuresが出た場合の対処法

小ネタです。表題の通りですけど、エラーが出ました。 ちょうど他のサーバにSSHするときにも同じエラーが出ていました。 kou-i.hatenadiary.org 通常のSSHでは、.ssh/configの中でIdentitiedOnly yesを設定すれば、問題なく接続できるようになりました。 そ…

ansibleでheroku cli経由でherokuに自動ログインする方法

herokuへのメンテナンスを行うための中継サーバの構成をansibleで作っている最中です。 やりたいことはほぼできたのですが、1つだけ課題が残っていました。それは、ansibleでherokuに自動ログインできないことです。今回、それをなんとか自動ログインさせる…

isucon10の予選に参加しました。

いい感じにスピードアップコンテスト、略してisuconの第十回目の予選に参加してました。 実は初参加でした。メンバーは私と、上司の@kazuhisa1976の2名です。 isucon.net もう全然惜しくもないし、点数も800点くらいだったので全然ダメでした。あぁ~、技術…

スクラムで開発しようとしている

弊社の他のプロジェクトでスクラムを導入しているので、今期から、うちのプロジェクトでもスクラムやってみるか~と思って勉強中です。勉強中というかチケットの管理方法とかを本を読みながら模索してルールを作ったりしました。 元々ある課題 結論からいう…

aws-sdk-s3を使いつつ、timecopで時間をずらす

ストレージを伴うテストのためにminioを使うようにしようとしたのですが、設定をしただけではうまく動きませんでした。 timecopを使っているところで、aws-sdkがエラーを起こしました。timecopは時間を固定したり過去・未来に移動したりするライブラリです。…

UNIXという考え方を読んだ

タイトルと本の見た目から、なんとなく難しそうだからと読んでなかったんじゃないかと思うんだけれど、お薦めの本として紹介されていたので読んでみた。感想としては、もっと若い時に読んでおくべき本だったなぁ~と思った。私、もうオッサンなので…。いや、…

OSS-DB Gold Ver.2.0不合格体験記

OSS-DB Gold Ver.2.0を受けてきたのですが、落ちました完全に準備不足でしたが、まぁまぁ問題集が解けるようになってきていたので、運が良ければ合格するんじゃないかな?と思っていたのですが、蓋を開けてみると56点という超微妙なレベルで(ちなみに合格ラ…

コンテナのTimezoneは統一しよう

Railsアプリの開発中に、ちょっと物によっては時間がかかる処理があったので、ActiveJobに処理を移行させたのですが、perform_nowとperform_laterでデータを保存した時のcreated_at等が9時間ずれる現象が発生しました。 結論から書くと… 結論は、rails serve…

PITRを試してみた

PITRとは、ポイント・イン・タイム・リカバリーと言って、指定した時間まで遡ってリカバリすることができます。pg_dumpだとそのときのスナップショットになるので、実際に稼働しているサービスが突然落ちた時などに、直前まで復旧することができませんが、PI…

pgbenchでチューニング前後でベンチマークを取ってみた

PC Lenovo L380 yoga OS: Windows 10 Pro バージョン: 2004 CPU: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99GHz (4コア8スレッド) メモリ: 32GB PostgreSQLサーバ Hyper-VでVM上に構築した。 OS: Amazon Linux 2 CPU: 1つ メモリ: 1GB PostgreSQLのバー…

もう一つ仮想環境を作って、そこからpgbenchを実行してみた

Hyper-VでAmazon Linux2を立ち上げていて、前回はそこでpgbenchを実行してみていた。 patorash.hatenablog.com pgbenchでtwitterで検索していたら、pgbenchを実行するホストとPostgreSQLが動いているホストが同じ場合、pgbenchにCPUを使われるのでもっと正確…