やる気がストロングZERO

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

作業メモ

Go echoでformのpost処理後のリダイレクトがうまく行かずにハマった

Go echoでformのpost処理後のリダイレクトがうまく行かずにハマったのでメモ やりたかったこと formデータをPOSTで受け取って処理したあと、一覧ページにリダイレクトしたかった。 func (w *WebApp) 登録処理(c echo.Context) error { // postパラメータを受…

Spring Bootでwebアプリケーションが動作する仕組みの概要を調査したのでメモ

spring bootの使い方を勉強しててざっくりの使い方は分かったが、印象としては黒魔術的というか「なぜこれでwebリクエストを受けられてレスポンスを返せるのか」が全くわからなかった。 全くわからなかった原因として、Spring Bootは構成としてかなり上部レ…

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の機能でテストコードから実行してデバッグしてたが、画面に近い部分のデバッグするの辛いなと思ってた。 以下のようにすれば動作中プロセスにデバッガをアタッチしてデバッグ可…

【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つだったけど、…

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

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

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…

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…

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

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

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 ユ…

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

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

こんなセッションIDは嫌だ

ログイン周りってだいたい既に出来上がってて自分で実装したことなかった。 知識としてはなんとなく知ってたけど「俺が考える最強の契約管理システム」でもログイン機能つけないといけないなーと思ってセキュリティを含めて改めて勉強したのでメモ。 参考)…

vimとtmuxの設定メモ

エンジニアになった当初からターミナル作業を華麗にやることに憧れている。 現状の設定と操作方法をメモっとく。 以下、参考にしました https://blog.craftz.dog/my-dev-workflow-using-tmux-vim-48f73cc4f39e マスタリングVim作者:Ruslan Osipov発売日: 202…

【Go】interface{}、reflectionについて調べたメモ

Goで「型は異なるが共通する処理(型が違うだけで、行いたいことは共通)」を書こうとしたとき、どうやればいいのかよくわからなかった。 C#だとジェネリクスとか使う感じのやつ。 Goだと引数をinterface{}でうけとって、reflectionを使ってなんやかんややる…

kubernetesクラスタで永続化データを扱うのは難易度が高いのでやめたほうがいい

仕事でkubernetesの本番運用を検討して思ったことをまとめる。 あくまで「kubernetesをとりあえず動かせる」程度の理解レベルにての話で、知識豊富な専門家が取り組むのであればこの限りではないと思う。 kubernetesクラスタで永続化データを扱うのは難易度…

scpコマンドの挙動でハマった(ちょっとだけGo)

Goを書いていてsshでファイル転送したかったが、Goでのいい感じのクライアントが見つからなかったので普通にscpコマンドを実行させることにしたが、 scpコマンドの挙動でハマった。 雑にメモ。 やりたいこと remoteの/var/data/ディレクトリの中身を localの…

【Go】gorpにdecimal型を認識させる

経緯 データベースライブラリにgorpを使ってみている。 gorpでは(gorpというより、database/sqlの範疇かも)Goのint型はDBのintと、GoのstringはDBのtextやvarcharと、みたいに自動的にマッピングされて意識しなくてもデータやり取りができる。 Goには標準…

Goのエラーハンドリングについて

したいこと なにかエラーが出た時に、ログから 「なにが発生したのか」 「どこで発生したのか?」 がわかるようにしたい。 Go標準のerrorはスタックトレース情報を持ってない errors.New("エラーメッセージ") これだとスタックトレース情報がない。 エラーが…

vimでyamlを書きやすくする:Vundle管理でvim-yamlプラグインを入れた

普段IDEを使ってるけど、プロジェクト外のyamlをちょっと編集したい時とかvimで編集することがある。 デフォルトだとインデントがいい感じにならないので設定した。 Vundle vimのプラグイン管理ツール。人気っぽいので深く考えず採用した。 GitHub - VundleV…

docker-compose.yamlのcommandで"&&"とか"&"をつかったコマンドを使いたい。

こんな感じでcommandを書くとコンテナ起動に失敗した。 version: "3" services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1 command: 'yarn install --check-files && bundle exec rails s & nginx -g "daemon off;"…

業務でTDDしにくいけどTDDしてみた

業務でもTDDをやるのは有用だと思ってる。 個人的には必須だと思ってる。 いままで数カ所の現場で働いてきたけど、なぜかTDDを導入しているところは無かった。 有用だと思う理由とか経験 実装完了し、コードレビューや開発内手動実行テストが通った後、最終…

【覚書】Ubuntuのシェルをfishにした

環境 Ubuntu 18.04.3 LTS デフォルトシェルをbashに戻した zshを使ってたけどとりあえず、bashに戻した。 fishをパッケージからインストール GitHub - fish-shell/fish-shell: The user-friendly command line shell. sudo apt-add-repository ppa:fish-shel…