ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

RSpecのmatcherについて軽いメモ

雑メモです。 あるモデルにデータを追加したか確認するテスト expect { subject }.to change { ModelA.count } 変更しているなら change でおk もし、変更なしを確認したい場合は、 not_change を用意すると良い RSpec::Matchers.define_negated_matcher :n…

PHPカンファレンス沖縄2023に参加&登壇しました

登壇資料はこれ speakerdeck.com 様子はこれ togetter.com ぼくの発表の様子はこれ 大物が出てきたwww #phpcon_okinawa pic.twitter.com/cUW30zKWnK— カンボ沖縄 (@kanbo0605) 2023年9月16日 なんでコスプレしたの? 今回のイベントは結局ギュッとタイムテー…

「エンジニアのためのドキュメントライティング」読書メモ

ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング作者:ジャレッド・バーティ,ザッカリー・サラ・コーライセン,ジェン・ランボーン,デービッド・ヌーニェス,ハイディ・ウォーターハウス日本能率協会マネジメントセン…

「どん底から生まれた宅急便」を読んだ

ひさびさのブログです。 どん底から生まれた宅急便作者:都築 幹彦日経BPマーケティング(日本経済新聞出版Amazon 物流Techな会社に就職したので、せっかくだから物流の歴史とかノウハウとか身につけたいなーと思い、いくつか購入してて積読してたやつ。 ちょ…

Nuxt3で nuxt3 ferenceError: ${composable_name} is not defined が発生したとき

ファイル修正してもなおんないので、地味にだるい。 僕の環境はDockerで立ち上げているので、コンテナ落として立ち上げるってのがだるいのでなんとかならんかと、ちょっと手漉きになったので探してみたら、キャッシュ削除なるコマンドがあった。 $ docker co…

Flutter.Okinawaを立ち上げました&開催しました

とても久々のイベント参加記事です。どこに書けばいいのかわからなくなりましたが、とりあえず自分のブログにPostした。 立ち上げました 以前これらのイベントに参加しました。(登壇者として) frontend-conf.okinawa.jp conf2022.pwanight.jp *1 イベント…

GitHub Actionsのキャッシュを削除する

qiita.com Macで動いた $ brew install gh $ ORG=オーガナイズ名? $ REPO=リポジトリ名 $ gh api -X GET repos/${ORG}/${REPO}/actions/caches | jq '.actions_caches[].id' | xargs -L1 -I{} gh api -X DELETE repos/${ORG}/${REPO}/actions/caches/{}

Nuxt3のcreate-nuxt-appでカレントディレクトリにプロジェクト作りたい場合

概要 gitリポジトリを先に作ると、ネストしてプロジェクトが作成されるので嫌だった なんかないかなって下記眺めてたらいけそうだったので試した github.com コマンド $ yarn create nuxt-app . --overwrite-dir --overwrite-dir とプロジェクト名をいれると…

Rails5.2でjoins後にselectでaliasで変更したフィールドが取れない

バグらしい qiita.com github.com Rails6系だと治っているらしい

m1 macでschemaspyをdocker composeで動かす

概要 参考にしてた記事で動かんくなってたので辛い 改めて整理して色々試して動くようになったのでそれだけ貼り付ける ディレクトリ $ tree . ├── Dockerfile ├── docker-compose.yml ├── initdb.d │ └── 01-init.sql ├── mysql │ └── custom │ └── my.cnf ├…

Railsでのデバッグ

これまでprintデバッグプログラマだったが、さすがに辛いということでPythonのipdbみたいのないかなってぐぐってみたらあった。 techracho.bpsinc.jp あったけど、どうせControllerのデバッグとかめんどいでしょ?とか思ったんだけど、RSpecで試したらちゃん…

サブクエリの結果とjoinする

概要 SQLだったら、2つのサブクエリの結果をjoinして結果を出したかった Railsでのやりかたわからんかったので色々試す 目的 TableAのvalueをidごとに集計するんだけど、①全集計と②とある条件で集計した結果をidごとに紐付けて差分とる。というようなSQLを書…

ぼくたちに旅行はまだ早かった

概要 4歳と2歳つれて初めて家族旅行しました(僕の両親+弟付) 正直、旅行どころではなかった ぼくたちにはまだ早かったかもしれない 旅程 大阪観光 USJで遊ぶ 京都観光 淡路島でゴジラ!! 急遽旅程変更して海遊館へ 前知識 長男は療育をうけている子。1年…

Railsのassociationでaliasをつける方法とFactoryBotのassociationでaliasをつける方法

概要 ハマったので調べたメモ Rails qiita.com ~/app/models/user.rb ~/app/models/book.rb user:bookは 1:N とする user側はhas_manyになるが、book側はbelongs_toになる。 belongs_to :user, foreign_key: 'user_id' aliasに変更したい場合は、こう belong…

M1 MacでtfjsのWASMをビルドする旅(失敗しました)

概要 m1 mac使っているんだけど、tfjsのwasmビルドを試みたら色々死んだ 僕の中の結論はうまくいかない 試みたログ $ docker run --rm --platform linux/arm64/v8 -it ubuntu:latest /bin/bash $ apt update -y && \ apt install -y gcc python3 nodejs npm …

DOMException: play() failed because the user didn't interact with the document first

なんかChromeだと <video> タグを動的に再生するとたまに失敗が続くようなことがある。 というわけで、こうする <video id="video" muted /> こいつをつけるとうまくいきました。</video></video>

Cannot use import statement outside a module

import * as scatter from 'scatter-gl' ↑のように該当 モジュールをimportすると下記エラー [nuxt] [request error] [unhandled] [500] Cannot use import statement outside a module at Object.compileFunction (node:vm:352:18) at wrapSafe (node:inter…

Component inside <Transition> renders non-element root node that cannot be animated.

Nuxt3でwarningがでてたので、対応してみた。 www.memory-lovers.blog マルチルートノードコンポーネントがサポートされたけど、直下はダメらしい。。 なるほど〜〜 というわけで、記事と同様に単一要素に修正したところ消えた。よかった

RailsのN+1対策の話

zenn.dev Rails初心者マンの僕がこの記事をみて思ったこと joinsは? キャッシュの有効期限はどこで設定するんじゃろうか qiita.com 他の3つとの違いは、associationをキャッシュしないこと。 なるほど serip39.hatenablog.com qiita.com なるほど〜〜〜 あ…

Railsの日付操作が面白い

RuboCopにこんな怒られ方しました。 C: [Correctable] Rails/DurationArithmetic: Do not add or subtract duration. Time.new - 30.minutes これ以外にどんな方法が???と思っていたのですが、同僚から教えてもらいました。 qiita.com おもしろい。 記事…

RuboCopさんに怒られたメモ

概要 意味調べて修正しているので、せっかくだからメモする Rubyなれなさすぎてもあり、めっちゃ怒られた(修正箇所いっぱい) 怒られたメモ C: [Correctable] Style/MutableConstant: Freeze mutable objects assigned to constants. 定数は freeze してね…

物流について調べているメモ2

www.aipacommander.com 前回 続き読んでいる。 読んでいるんだけど、IoTはともかくAIの期待値が大きくてもっとがんばらんと。という気持ちにはなる。 あと、AIがまじで頑張ってコスト削減ーってなると、極論人がいらなくなるということになると思うので、そ…

Nuxt3.0.0-rc.11が動かない

結論からいうと、Nuxt3.0.0-rc.10で動きました。 環境 $ sw_vers ProductName: macOS ProductVersion: 12.6 BuildVersion: 21G115 $ docker --version Docker version 20.10.17, build 100c701 m1 macです(m2でも試しました) 試したこと だいたいはドキュ…

物流について調べているメモ

今これを読んでいる 日本型ロジスティクス4.0-サービス多様化、物流費上昇、人手不足を一挙解決-作者:㈱クニエ ロジスティクスグループ日刊工業新聞社Amazon 今思ったけど、全く知らない業界を知るために本を読むのは僕は向いていないかも知れない。本ででて…

DatePickerのformに空文字をSetValueすると 「Invalid time value」 になる

react-hook-formを使ってました。 nullはおkらしい setValue('date-input-form', null) // ok // setValue('date-input-form', '') // invalid time value

Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.

useEffectを削除したら消えた。なるほど。 const { setValue } = useForm() // 省略 useEffect(() => { // 省略 setValue('variable.hoge', hoge) }, [storeVariable]) こんな感じの処理を書いてた。 次に、useEffectを消さずに、setValueだけ消したらエラー…

error TS2538: Type 'string[]' cannot be used as an index type.

なんじゃろ?ってぐぐってみると下記がわかりやすかった qiita.com bobbyhadz.com 要は動的に用意した変数の型がわからんままObjectの要素を指定しようとするとだめということらしい。 // だめ // const key = Object.keys(current)[0] // OK const key: str…

8月は有給消化だったけど家族のコロナリレーで無事消化されました

実は転職するんですが、8月まるまる有給とれたので 実はもっと余ってたけど 、僕の人生の中では一大イベントになりました!!! なにしようかな〜〜〜統計検定リベンジするのもいいな〜〜〜次の現場(?)に向けて勉強するのもいいな〜〜〜〜、前からやりた…

【わからない】react-hook-formとYupで複数フィールドの重複をチェックするバリデーションとエラーを表示するフォーム

ほぼ1日かけて探したけどわからないので供養 const uniqueId = (value, context) => { const [_, parent] = context.from const filedNames = ['hogehoge1', 'hogehoge2', 'hogehoge3'] const list = [ parent.value.hogehoge1.id, parent.value.hogehoge2.i…

【Jest】テスト実行時にテスト名をconsole.logで表示する

describe('useHogehogeHook', () => { beforeEach(() => { console.log(expect.getState().currentTestName); }); // 省略 これで、各テスト実行時にテスト名を表示してくれるようになる。 デバッグしているときに、どのテストでデバッグようにhookに追加し…