親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

MySQLで、先頭だけ大文字にしたい

先頭だけ大文字に UPPERとLOWERを使って結合 UPDATEも可能に 先頭だけ大文字に MySQLのあるカラムについてアルファベットなどが登録されている場合に、先頭だけ大文字に変換して取得する方法です。 例えば英単語を保存しているカラムからデータを取得したい…

さくらのメールサーバの容量を個別にチェックして通知メールを送信

メールサーバの容量チェック 使用している技術 スクレイピングツールの中身 cronの設定 メールサーバの容量チェック 以前会社でさくらのメールサーバを運用していた時、1人で大量に容量を使いすぎないように、定期的にチェックして容量が大きい人は容量を空…

気になる技術は即実施せよ!

新技術が飛び交うエンジニア業界 どんどん実践 漫然としたインプットでは意味がない 新技術が飛び交うエンジニア業界 Webの業界はとにかく進化が早く、エンジニア業界も次々と新しい技術が出てきますね。 私は情報収集をする場合に気をつけていることとして…

computedを利用してVuexのstoreをwatch

storeの変更を検知したいパターン computedを利用するやり方 storeの変更を検知したいパターン Vue.jsでは状態を管理するのに便利なVuexのstoreですが、storeの値が変更されたタイミングでイベントを実行したくなる場面はありませんか?例えば別なコンポーネ…

@Columnのlengthやnullableでエラー検知してくれない

Spring Bootのバリデーション Bean ValidationとJPA定義 Spring Data JPA (Hibernate)使用時のJPA制約 暫定対応 Spring Bootのバリデーション Spring Bootでは、フォームやエンティティクラスにおいて、アノテーションによる入力値チェックが可能なことはご…

はてなブログのAMPページで記事ごとに手動でAdsenseを設置!

はてなブログのAMPページ デザインのカスタマイズの設定が効かない Google AdsenseをAMPページで反映 はてな記法の場合 Markdown記法の場合 Headにamp-adのJavascriptは必要? はてなブログのAMPページ はてなブログでは、有料アカウントであるPROになるとペ…

Spring BootをIDEを使わずコマンドで実行

開発環境でのSpring Bootの実行 mvnコマンドで実行 開発環境でのSpring Bootの実行 でも記載している通り、Spring Bootは開発環境だとIDEなどで簡単に設定することが可能です。 ちょっとの設定でいつでも停止や実行ができるので楽ですよね。 ブレークポイン…

Tomcat+Nginx+Spring Bootで画像アップロードサイズを変更する方法

画像アップロード時には最大ファイルサイズが存在する Tomcat + Nginx + Spring Bootの場合のエラー 各種設定変更 Spring Bootの設定 Tomcatの設定 Nginxの設定 まとめ 画像アップロード時には最大ファイルサイズが存在する ファイルアップでは、サーバにフ…

object-fit-imagesをVue.jsで実装

object-fit ライブラリをnpmでダウンロード object-fit 画像を綺麗にトリミングしてくれるcssのプロパティにobject-fitがありますよね。 大きさが均一ではない多くの画像を扱うサービスでは非常に有用なプロパティです。 そんなobject-fitですが、全てのブラ…

SIerとして働くことの何が嫌だったのか…SIerを辞めた理由と私が経験した業界事情

今回は技術のお話ではありません! そもそもSIerって? SIerと私 SIer業界に入った経緯 当時の勘違い どんな会社だったのか 何が嫌だったか 他で通用するような技術を身に付けられない 実力主義ではなく、年功序列 ドキュメント作成にかける時間の比重が高い…

Tomcatのログファイルを整理せよ!

Tomcatのデフォルトのログ設定 Tomcatで出力されるログファイル catalina.outのローテート設定 ログファイルのローテート設定 logrotateの設定確認 logrotateの実行 localhost.YYYY-MM-DD.logのローテート設定 まとめ Tomcatのデフォルトのログ設定 タイトル…

Nginxでリバースプロキシ設定をしている場合のLet's Encrypt設定

リバースプロキシを設定している場合でも、サーバを停止させずに更新できる リバースプロキシを設定している場合、通常通りcertbotコマンドを実行すると。。。 今回の対応内容 リバースプロキシを設定している場合でも、サーバを停止させずに更新できる 以前…

Vue.jsでビルド時にgzipファイルを出力する方法

出力ファイルは極力圧縮したい Vue.jsでのnpmビルド時に同時に圧縮 手順 サーバ側でgzipを読み込む設定にする 出力ファイルは極力圧縮したい Webサービスにおいて、コンテンツ内容や機能面の充実度が重要であることは言うまでもありませんが、ページのパフォ…

Spring Data JPAでパラメータ以外でコロンを使いたい

RepositoryにSQLを直接記入 パラメータ以外でコロンを使いたい 解決方法はエスケープ RepositoryにSQLを直接記入 Spring Data JPAでORマッパーでは書けないようなSQLを実行したい場合、Repositoryに直接構文を書きますよね。 そんな時、パラメータで変数の値…

Spring Data JPA のfind+OrderByで、No property desc foundエラー時の対処法

Spring Data JPAでのOrderBy whereを指定しない場合、OrderByの前にByが必要 Spring Data JPAでのOrderBy Spring Data JPAでエンティティクラスにfindして複数のレコードを取得する場合、OrderByをつければ並び順を変更できることはご存知でしょうか? findB…

Vue.jsのv-ifやv-forで無駄にタグを増やしたくない時はtemplateで代用するのが便利

Vue.jsでの分岐やループ処理 templateタグを使う Vue.jsでの分岐やループ処理 Vue.jsでは分岐やループ処理で、動的にタグを描画したい場面がありますよね。 例えばリストを動的に増やしたい時は、liタグにv-forを付与したり、ある文言が特定の条件を満たした…

Spring Bootで実行SQLのログを取得する方法

アプリケーション開発でのSQLログ application.ymlでの設定 アプリケーション開発でのSQLログ アプリケーションの開発をしている時、実行されたSQLのログを参照したい場面がありますよね。 想定外のSQLが実行されていないか確認したり、ボトルネックとなって…

Vue.jsでURLの#(シャープ)を取り除く方法

URLの#(シャープ) historyモードにすることで解決 URLの#(シャープ) Vue-cliでvue.jsのセットアップを行った時、開発環境のURLを叩くと後ろに#(シャープ)が付いてしまいます。http://localhost:8080と入力しても、http://localhost:8080/#/ となってしまいま…

Spring BootでEntityオブジェクトのクローンをしてみる

Entityオブジェクトのクローン クローンをしたいEntityクラスにCloneableインターフェースを実装 クローンメソッドの呼び出し Entityオブジェクトのクローン SpringBootで機能の実装をしている中で、Entityオブジェクトのクローンを作りたくなることはありま…

SpringBootでローカルjarファイルをMavenで管理

ローカルjarファイルはどんな時に使う? 設定方法 ローカルjarファイルはどんな時に使う? 普段SpringBootで外部ライブラリを使う時、Mavenの設定ファイルであるpom.xmlを使う人が多いのではないでしょうか。Mavenのリポジトリにあり、誰でもインストールし…

ブロックチェーンってなんだ?

ブロックとは?チェーンとは? ブロックチェーンはデータを分散して管理している P2Pって具体的になに?どこで動いてるの? すべてのデータは公開されて誰でも見ることができる ビットコインを始めとした仮想通貨の登場により、名前を聞くことが多くなったブ…

safariでエンターによるformのイベントがうまく発火しない時の対処法

formのイベントをエンターで発火 他のブラウザでは上手くいくのにsafariだと上手く送れない buttonのスタイルを確認 formのイベントをエンターで発火 Webサービスにおいて、入力した値を処理するためにformタグを使うことは多いでしょう。 <form> <input type="text"> <button>送信</button> </form> 基本的に…

XSSってどうやって仕込まれる?

XSSについて どうやってタグを入れられる? GETパラメータにスクリプトを入れる方法 POSTでスクリプトを埋め込まれる方法 まとめ XSSについて このページを閲覧している方ならご存知とは思いますが、まずはXSSについて超簡単に説明します。この事象は入力フ…

SPAサイトのCSRF対策

CSRF対策について CSRFとは? CSRFによる被害 通常のCSRF対策 SPAサイトのCSRF対策 方法1 リファラで判断 方法2 ログイン時に発行したトークンを照合 方法3 CORSと組み合わせてOriginをチェック CSRF対策について CSRFとは? このページに来られた方ならもう…

Spring Boot + MySQLで絵文字を保存する

絵文字を保存したい MySQLの文字コードを変更 Spring Bootでデータベース接続時の文字コードを変更 まとめ 絵文字を保存したい スマホが普及してから絵文字を文中に入れるのはもはや普通のことですよね。 掲示板などでも絵文字を入力できるものは増えていま…

ユーザにSFTPの特定ディレクトリのみ操作できる権限を付与

一般ユーザは、SFTPで特定のディレクトリのみしか触れないようにしたい ディレクトリの作成 ユーザとグループの作成 ディレクトリの権限変更 sshd_configを変更して操作権限を付与 まとめ 一般ユーザは、SFTPで特定のディレクトリのみしか触れないようにした…

Vue.jsで配列の値をAPIでPOSTする方法

値を配列でPOST 方法1 dataで定義する変数を配列で初期化してv-modelに設定 チェックボックスの例) 複数のテキストフォームがある時の例) 方法2 POSTする前に配列にまとめてしまう方法 チェックボックスの例) 複数のテキストフォームがある時の例) まとめ 値…

Spring BootのFormクラスでIntegerの項目にNULLはPOSTできない

NULLをPOSTした時点でStringとして認識されてしまう 数値(Integer)型の項目で空の可能性がある場合 AjaxでPOSTする時の例 NULLをPOSTした時点でStringとして認識されてしまう Spring Bootにおけるフォームから値をPOSTする際の挙動になりますが、Integer型の…

amazletでAmazonアソシエイトリンクを簡単作成!

amazlet(アマズレット)とは Amazonアソシエイトアカウントの作成 amazlet設定方法 まとめ amazlet(アマズレット)とは amazletというツールは、Amazonアソシエイトリンクを簡単に作成できる便利ツールです。 普段アソシエイトのリンクを作る場合、Amazonアソ…

box-shadowを使ったなんちゃってオーバーレイ

オーバーレイの通常の設置方法 なんちゃってオーバーレイ なんちゃってオーバーレイの欠点 オーバーレイの通常の設置方法 webサイトでモーダルを使用する場合、併せて背景にオーバーレイを入れますよね。 オーバーレイの設置する方法は少々面倒です。 モーダ…