やる気がストロングZERO

やる気のストロングスタイル

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

2021年活動まとめ

思ったよりもあっという間だった。 仕事を通じて以前よりもよりエンジニア業について理解が進んだ一年だった。エンジニア業難しい。。 以下その他所感など。 アーキテクチャやコード・データの構造について考える事について 去年から引続き保守しやすいコー…

Hibernateでクラステーブル継承を実現する

spring bootでデータアクセスにspring-boot-starter-data-jpa(実装的にはHibernateが使われている)を使っている時、 クラステーブル継承の実現の仕方を理解するのに時間がかかったのでメモ。 [クラステーブル継承]については過去postの中で記載している 参…

ローカルとdockerコンテナ側のUID,GIDを揃える

dockerコンテナを使ってローカルで開発作業をするとき、local側のディレクトリとコンテナ側のディレクトリを共有してコンテナ側で生成されるファイルを永続化したりする事がある。 このとき、コンテナ側で生成されたファイルがroot権限で作成されたりするとl…

ウィザードUIのコード構成失敗して作り直した

rshinmemoというTUIメモアプリを作ってる。 github.com 操作がいわゆるウィザードUIの構成になっている。 メモを追加する際、[「新規追加」を選択する] => [日付を選択する] => [メモ名を入力する] (今思えばウィザードUIにせず、1画面で入力させればいい気…

dlvで実行中Processにアタッチしてデバッグ

Goでcuiアプリ作ってる。 ビジネスロジックはメソッドで切り出しているのでIDEの機能でテストコードから実行してデバッグしてたが、画面に近い部分のデバッグするの辛いなと思ってた。 以下のようにすれば動作中プロセスにデバッガをアタッチしてデバッグ可…

高トラフィックに耐える構成を考える

高トラフィックに耐える構成についてざっくり書いてみる。 インフラエンジニアでもないので間違いあるかも。 アプリケーションサーバー ステートレスに作っておいて、稼働台数を増やしてLBで振り分ける。 LBに対してはDNSラウンドロビンで負荷分散させる。 D…

行われている処理がイメージできるようなテーブル構造を設計したい

見れば行われている処理がイメージできるようなテーブル構造を設計するのが良いと思っている。 このテーブル構造で何が読み取れるか? user id state 1 active 2 active 3 disactive ... ... userはステータスを持っているのはわかる。 データを見るとほとん…

性別カラムを1,2で用意するとき、1が男, 2が女だという情報をどこに持つか

性別カラムを1,2で用意するとき、1が男, 2が女だという情報をどこに持つか。 user情報テーブルに性別カラムを用意して男女を1or2で保持させる場合、1が男、2が女である情報をどこに持つのがよいか以前議論になったのを思い出した。 システムで「性別」の情報…

テスト駆動開発の一番大きいメリットは「テストコードができる事」ではなく「システムの複雑性が下がる事」

僕はテスト駆動開発(以下TDD)の信者だ。 TDDを学びだした最初は「TDDのメリット」とは「テストコード」が同時に出来上がり回帰テストが可能になる事だと思っていた。 しかしすぐに「TDDで開発を行うとシステムの複雑性が下がりやすい」事こそが最大のメリッ…

俺専用の最強メモアプリを作ってる(メモった内容を後から探すのムズい問題の解消)

メモって難しい。 メモる事自体は難しくない。 メモった内容をあとから参照するのが難しい。 どこに書いたか忘れる問題 最近メモった内容であれば問題ない。 どこにメモったか覚えているのですぐ見つかる。 でも「1年前に着手していた作業の関連資料を置おい…

食洗機を買ってよかった

こちらの食洗機を買った。 シロカ 2WAY食器洗い乾燥機 [食洗機/工事不要/除菌率99.9%/分岐水栓対応/液晶表示付き/タイマー搭載/360℃キレイウォッシュ] PDW-5D (ゴールド)メディア: 前々から欲しかったが、買ってみてやっぱり食洗機は生活を変えるマストアイ…

開発作業でVimを普段使いするためにやったこと

Vim普段使いにトライしようとした理由 JetBrains製IDEだと別言語の複数プロジェクトを並行して扱おうとするとフラストレーションが溜まる VsCodeや各エディタのVimプラグインではなくVimを使いたい理由 過去にVim使いになろうとして失敗した原因と今回の対策…

【ssl/tls】ルート証明書がどこにあるのかちょっとわかったけど、まだよくわからんメモ

証明書がどういう仕組で機能を実現しているのかざっくりは理解していた(https(ssl)通信設定の概要 - やる気がストロングZERO)つもりだったが、改めて考えてみたら、ルート証明書がどこにあって、どうやって使われているのかいまいちよくわかってなかったので…

【Toggl track】と【todoist】と【Anki】で仕事を補助するとなかなか良い

最近仕事で以下ツールを使ってみている。 Toggl track: タイムトラッキングツール todoist: Todoツール Anki: 記憶補助ツール まだ本格的に使いだして間があまりないが、今の所凄く良いように感じているのでそれについて書く。 toggl trackで自分が何に時間…

【テーブル設計】削除フラグを使わず削除テーブルを使うべき

データの削除機能において、何らかの理由でデータは残しておきたい場合には「削除フラグ」が使われがちだが、これは絶対にやめたい。 この場合は「削除テーブル」を用意してそちらにデータを移し、元テーブルからはレコード削除を行うようにするべきだと思っ…

【Go】Gorpで[where in]をいい感じに書く方法

Gorpを使っていて以下のようなqueryを実行したい時がある。 select * from table where id in (1, 2, 4, 8); "1,2,4,8"は動的に変えたいのでプレースホルダーにしたい。 select * from table where id in ($1, $2, $3, $4); 今回指定したidは4つだったけど、…

システムドキュメントの管理方法のベストプラクティスを考える

システムドキュメントの管理って地味に難しい。 そもそもドキュメントが無かったり、どこにあるのか分からなかったり、あっても情報が古かったり、複数の場所や形式に分散していたりしていて、いざという時に全然使えないような状態になってしまってたりする…

プログラマー的厨二病の症状と処方箋

僕がそうだったのだが、プログラマーって厨二病を患っている時期があると思う。 厨二病の怖い所は、厨二病に侵されていると自分では気がつけない所だ。 だから、もしかしたら今も僕は厨二病なのかもしれないが、自分の過去を振り返って厨二病の症状とそうな…

【Golang】sql.Open(), Close()を呼ぶタイミング・場所について考えた

GoでDBアクセスする為のサンプルコードを探すとどこもこんな感じ func main() { # dbコネクション(pool)を取得 pool, err = sql.Open("driver-name", *dsn) if err != nil { // This will not be a connection error, but a DSN parse error or // another i…

アプリケーション要件に関わらずテーブルには事実を記録する

「このアプリケーションのこの機能は【年月日】までしか意識しない。【時分秒】はデータとして不要なのでテーブルにはdate型で【年月日】だけ持たせれば良い。」 と言われた事があったが例えアプリケーションにとって不要でもDBテーブルにはdatetimeとかtime…

扱いやすいテーブル・扱いにくいテーブル

システムのDBには様々なテーブルが定義されている。 色々作業していると「扱いやすいテーブル」「扱いづらいテーブル」がある事に気がつく。 なんとなく見えてきたパターンについて書いてみる。 ※もしかしたら当たり前の知識なのかもしれないが、自分の観測…

バッチ処理のベストプラクティスについて考える

みずほ銀行の本を読んでいて、バッチ処理は鬼門だなと感じた。 みずほ銀行システム統合、苦闘の19年史 史上最大のITプロジェクト「3度目の正直」作者:日経コンピュータ,山端 宏実,岡部 一詩,中田 敦,大和田 尚孝,谷島 宣之発売日: 2020/02/14メディア: Kindl…