学習備忘ログ

よく使うコードや設定のメモ

【Golang + Echo + go-playground/validator】アップロードした画像の幅や高さのバリデーションを実装

go

課題 アップロードした画像の幅や高さのバリデーションしたい サンプル実装 画像の幅が1000以下でない場合はエラーを出す。 type SampleRequest struct { File File } type File struct { Width int `json:"width" validate:"lt=1000"` Height int `json:"he…

【Golang + go-playground/validator】DBを含めたバリデーションの実装

go

課題 DBを含めたバリデーションを実装したい サンプル実装 userテーブルのemailに同じemailがあったらバリデートする。 type DBAbstraction struct { db interface{} //ここは実際のコードの型に合わせる } func (a *DBAbstraction) ValidateExistsEmail(fl …

【Golang + go-playground/validator】他のフィールドの値を含めたカスタムバリデーションの実装

go

課題 他のフィールドの値を含めたカスタムバリデーションの実装をしたい サンプル実装 AフィールドとBフィールドの値を比較してバリデーションする方法。こちらはそもそもカスタムせずに gtecsfieldを使用すれば実現できる。 type SampleStruct struct { A i…

【Golang + Sqlx】リレーション先も含めて構造体へのbindを一度でする方法

go

前提 groupテーブルとcategoryテーブルがあり、groupテーブルにcategoryを参照する外部キーが存在してる。 構造体定義 package model type Group struct { ID int `json:"id" db:"id"` Name string `json:"name" db:"name"` GroupCategoryId uint64 `json:"g…

【Golang + http/test】リクエストのbodyにjsonを渡す方法

go

サンプルコード bodyJsonにjsonの文字列を代入し、strings.NewReaderで読み込んであげる。 package handler_test import ( "net/http" "net/http/httptest" "strings" "testing" "github.com/labstack/echo/v4" "github.com/stretchr/testify/assert" ) func…

【Golang + Echo】カンマ区切りのクエリパラメータを構造体にBindする方法

やりたいこと 下記のようなUrlで companyIdsを配列として受け取りたい。 companies/pageSize=10&page=1&companyIds=22,23,21 コードサンプル ポイントは BindWithDelimiterの部分。ここで,区切りの数値を CompanyIdsに格納してる。 type getCompanyRequest s…

ElasticSearch

概要 スケーラビリティに優れた全文検索エンジン ログ集約のLogstashやfluentd、可視化ツールのkibanaと一緒に使われることが多い 複数のデータベースを横断して検索することが、ごく当たり前の用途として提供されている 全文検索 大量にあるドキュメントデ…

DynamoDB

DynamoDBの概要 qiita.com RDSとの比較 dev.classmethod.jp 使い所 RDSよりも早いレスポンスが要求される場合 スケールアウトすることにより、リクエスト数の増加に対応もできる。RDSだとスケールアップでの対応になり限界がある。 サービスを一時的に止めた…

form外にあるbuttonからpostする方法

課題 form内にsubmitするbuttonを設置することができない 対処法 buttonのform属性に以下のように指定する <form action="{{ route('brands.pages.edit', ['id' => $brand->id]) }}" method="POST" id="page-edit-all-tabs-form" //idの指定をする enctype="multipart/form-data"> {{ csrf_field() }} <div class="tab-content"> @include('admin.store.modal.faceboo…</div></form>

複数のワーカで処理する際の最後の処理をredisで制御する方法

課題 ワーカを利用し分散処理した際し、最後の処理が終わったタイミングでメールを送信したい場合 対処方法 jobId)->has($this->storeId); if ($isExecuted) { Log::info('isExecuted')…

【Laravel】バッチ処理の結果をDBに保存する方法

課題 各バッチ処理が成否を素早く確認したい またサーバが落ちてしまった場合に何が処理できていなかったのかの確認も素早くしたい ログ出力だと確認に時間がかかる。 対処方法 バッチ処理結果を保存するDBを作成。今回はJobsLogとする 以下のようなクラスの…

【Docker】Mysqlを使用中にThe table '' is fullと出た場合の対処法

課題 mysqlにdumpファイルをインポートしようとすると、The table '' is fullやGot error 168 from storage engineとエラーが出て先に進まない。 対処 dockerのmysqlが使用してるボリュームを確認 docker volume ls ※大体 project名_db-dataという名前で存在…

【CSS】クラスの部分一致

css

html <ul class="list_nav_header"> <li><a href="#">ABOUT.</a></li> <li><a href="#">FEATURE.</a></li> <li><a href="#">PROFILE.</a></li> <li><a class="btn_ico_mail" href="#">CONTACT.</a></li> </ul> css [class*="btn_ico"] { display: block; height: 36px; display: flex; align-items: center; padding: 0 30p…

【CSS】文頭にアイコンを表示

css

方法 ①擬似要素の利用 html <ul class="list_nav_header"> <li><a href="#">ABOUT.</a></li> <li><a href="#">FEATURE.</a></li> <li><a href="#">PROFILE.</a></li> <li><a class="btn_ico_mail" href="#">CONTACT.</a></li> </ul> css [class*="btn_ico"] { display: block; height: 36px; display: flex; align-items: center; pa…

【CSS】下線部を追加

css

方法 ①擬似要素の利用 html <div class="head_home"> <h2 class="ttl">ABOUT.</h2> </div> css .head_home .ttl { font: 500 56px/1em "Futura PT"; line-height: 1.28; position: relative; } .head_home .ttl:after { content: ""; display: block; position: absolute; width: 100%; height: 5px; background…

【CSS】要素を右端に持っていく

方法 ①flexの利用 See the Pen abBLWGm by コウ@リモートエンジニア (@programmerkou) on CodePen.

【CSS】コンテナについて

css

コンテナ のメリット まず、コンテナのメリットについては以下を参照 note.com 方法 ①全セクションにコンテナを使用 See the Pen gOLGReV by コウ@リモートエンジニア (@programmerkou) on CodePen. ②部分的にコンテナを使用する See the Pen gOLGxaP by コ…

ajaxでhtmlレスポンスを取得する方法(ページングも)

コントローラ側の処理 public function viewB(Request $request) { if (!$request->ajax()) { // ajax以外は許容しない。元の画面にリダイレクト return back(); } return response(view('b', [ 'var' => '変数' ])->render()); } jsの処理 $(document).on('…

Sqs及びSupervisorの設定

基本操作 停止 `sudo supervisorctl stop 【worker名】 再起動 sudo supervisorctl reread で .conf の再読み込み sudo supervisorctl update で supervisor 自体に最新の conf 情報を反映させる sudo supervisorctl start canly-localposts-worker:* で開始…

全てのモデルに対して共通の処理をいれる

user()) { $model->updated_by = auth()->user()->id; } }); self::creating(function ($model) { …

動的に作成した変数をpostする方法

let cbRowsBtn = $('.custom-table').find('tbody input[type=checkbox]'); $(function(){ $('.update-btn').click(function(){ //.update-btnは送信ボタン的なやつ mail = []; //動的に作成した変数 cbRowsBtn.each(function(index, row){ //関数内で変数に…

laravel、ボトルネック 調査

課題 ボトルネック の箇所を特定したい 対処 index.phpに以下を埋め込む define('LARAVEL_START', microtime(true)); 速度を測定したいコントローラ に以下のようにlogを仕込む。 $to_controller = microtime(true) - LARAVEL_START; Log::info("コントロー…