やる気がストロング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…

windows wsl2側でGUIアプリケーションを起動し日本語入力ができるようにする

やりたいこと:windows wsl2側でGUIアプリケーションを起動し日本語入力ができるようにする wslを導入してGolandで開発作業をしようとしたらGolandの設定がうまくいかない。GoのSDKがどこか聞かれて、wsl側のそれっぽいものを指定しても拒否。Ubuntuで使って…

2020年活動まとめ

2020年も終わるので1年を振り返る。 去年立てた目標と結果 yaruki-strong-zero.hatenablog.jp

Go echoでPOST複数パラメータをsliceで受け取る方法

postでidを以下の様に複数送った時、 id = 1 id = 2 Go echoでスライスで取得するには以下のようにすると取れた func (cont *Controller) Create(c echo.Context) error { ..... params, err := c.FormParams() if err != nil { //パラメータ取得に失敗 c.Er…

重複Insertを防ぐ(postgreSQL)

例えばユーザー名の重複登録をNGとする場合、こんな感じでバリデーションと登録処理を書くことが多い。 ※疑似コードです begin name = "山田太郎" // dbからデータを取ってみて存在しないことを確認する user = getUserByName(name) if user != null { retur…

OSSコードリーディングをスムーズに進めるためのメモ

OSSのコードリーディングをしてみる中で、内容を把握するためにして良かったと思った事をメモっておく。 リーディング対象にしたもの: github.com ※主にはfilebeat

Filebeat + Logstashでrails6のログをElasticsearchへ取り込む設定

FilebeatとLogstashを使ってrails6のログをElasticsearchへ取り込もうとしたがなかなか難しかったので書く。 rails6のログをそのまま取り込んでもデータとして使えない 構造化されていない 複数行で意味をなしているものがある 対応設定(具体的な設定ファイ…

Elastic Stackのセッティングメモ

Elastic Stackのセッティングをしてみたのでメモ。 対象OSはUbuntu18.04 参考) www.elastic.co Elastic Stackで作るBI環境 Ver.7.4対応改訂版 (技術の泉シリーズ(NextPublishing))作者:石井 葵発売日: 2019/11/29メディア: オンデマンド (ペーパーバック)…

GKEからHerokuに引越したまとめ

実験・練習としてnekone.loveというtwitterに投稿されてる猫画像をひたすら表示しているサイトを運用している。 以前、k8sの使用感とかの確認のためにGKEを使って運用してたが、今回Herokuに移行したのでその時の作業メモなどを書く。 k8s(GKE)はなんだかん…

「シンプルな構造にすれば保守性があがる」わけではないという話

こんがらがったシステムの保守開発で苦労した経験から新規開発では「シンプルな構成・シンプルな実装にしよう」という話が出る。 目指す方向としては間違って無いように思えるのに、それだけだとうまく行かない。 「保守しやすい構造」とはそれなりに多くの…

gomockを使って「N回目呼ばれたらエラーを返す」を実現する方法

mockを使ってのテストは主に「起こしにくいエラーを再現する」場合にのみ使っている。 gomockにて、「N回目呼ばれたらエラーを返す(それ以外は実際の処理が実行される)」モックの用意の仕方をメモする。 スタブを使う。 github.com ctrl := gomock.NewCont…

やっぱり正規化をベースにしたテーブル設計しか勝たん

テーブル設計は正規化を基本にして設計する手法しか成功しない気がしてる。 DBやテーブル設計系の書籍を読むとどれにも「正規化」による設計手法が書かれているけど、現場ではなぜかあまり正規化に重きをおいた設計が行われていない場合が多かった。 先人の…

GoでもRubyのirbみたいにREPLを使いたい

Rubyのirbとか、rails_consoleが便利なので、Goでもそういうの出来ないか探したら作ってくれてた。 motemen.hatenablog.com インストールして、使いたいメソッドがあるパッケージをimportして使えば普通に使えた。 「実行したい処理のコードはあるけど、外部…

PostgreSQLでのトランザクション分離レベルの使い分けを考えた

標準としてのトランザクション分離レベルは一応把握してたけど、MySQLやPostgreSQLとか、実装によって結構事情が異なっててそのあたりあまり理解できてなかったのでPostgreSQLにおいてのトランザクション分離レベルを学び直した。 ※参考にしたのはこのあたり…

GROUP BYでまとめてそのLASTやFIRSTを取りたい場合のsqlの書き方(window関数を使う)

以下のような有効期間テーブルから、、 id ユーザーid 有効期間from 有効期間to 1 1 2020-6-1 2020-7-1 2 1 2020-7-1 2020-8-1 3 2 2020-5-1 2020-6-1 4 2 2020-6-1 2020-7-1 以下のようなデータ(ユーザー毎に最新の有効期間のレコード)を取得したい id ユ…

DDDのメリットを勘違いしてた件

僕はDDDで「俺が考える最強の契約管理システムを作る」というのをやってみている。 もう100回を超えた。 www.youtube.com 目的としては、外部からあれこれ言われず自分が思う通りに実装を進めて、自分だけの責任で躓いて、自分で「良い・悪い」を体験する事…

娘が生まれたメモ

8/26(水)に娘が生まれたのでメモ 本当は9/4くらいが予定日だったのだが、奥さんが病院に定期検査にいったらそのまま入院することになった。 コロナの状況下なので僕は入院している病院に入ることができず、入院したら次あえるのは出産して退院するとき。 主…

brew upgradeしたらrailsが起動しなくなったので対応したメモ

久々にbrew upgradeを実行したらopensslのなんかが読み込めなかっただかなんだか言われて、railsが起動しなくなった。 bundleもbrewも「ほしいライブラリを便利にインストールしてくれるツール」くらいの認識であまりどういう動きをしているか認識してなくて…

【DB設計】データ複製して持ちたくないと思ってる理由

僕はデータを複製して持ちたくないとずっと思っているけど、 色んな意見聞いてると自分でもそれが本当に良い事なのかわからなくなりそうだったので、 なぜ複製が嫌いなのか書きながら考えを整理してみた。 データを複製すると不整合が起きるから嫌だ 計算結…

SSHポートフォワードメモ

ローカルポートフォワード 参考) SSHポートフォワーディングを知った話 - Qiita serverAからしかアクセス出来ないserverBにあるhttpコンテンツをlocalからみたい場合 localマシンにて、 ssh serverA -L 8080:serverB:80 -N と実行してから、localマシンのブ…

意思決定を議論で導くのはよくない

意思決定を多人数で行う議論でするのは良くないと考えるようになったので、その理由を書く。 議論で意思決定を行うと方針に一貫性がなくなる。 議論は意思決定のための材料集めとして使い、意思決定は責任者が独断で行うべき 議論は背景やテクニックが占める…