Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Golang】 関数引数 - 値渡しとポインタ渡しの指針

Golangでの値渡しとポインタ渡しの指針 Golang にはポインタの概念がある。なので、C/C++同様に関数引数型を値型・ポインタ型の2つが指定できる。 func print(s string) { fmt.Println(s) } func printPtr(s *string) { fmt.Println(*s) } 値型で引数を渡し…

【Golang】エスケープ処理とその解析

Golang の memory allocation Golang は C/C++などと異なり、いい感じに変数のメモリ領域を割り当ててくれる。例えば、以下のようなコードでも Golang は動作する。 type Hoge struct {} func NewHoge() *Hoge { h := Hoge{} return &h } NewHoge() 内で生成…

ブログ移転しました

ブログを移転しました。 ren.nosuke.me 追記(2021/01/02) もどってきました。 rennnosukesann.hatenablog.com

【Java】ByteArrayOutputStreamのclose()実装

Closable Java の Closable インタフェースを実装した具象クラスは、 close() メソッドを定義する必要がある。 Closable を実装した抽象クラスに Writer 、継承したインタフェースには OutputStream があり、これらの抽象 I/O を実装したクラスでは確保した…

【Nuxt.js/TypeScript】Nuxt.js/TypeScriptでimport エイリアスを有効化する 

Nuxt.jsでTypeScriptを使用した際、Webpackでよくやるimportエイリアスを適用したかったのでやってみました。 TypeScriptコンパイル時のエイリアスルールを設定 先ずはコンパイル時に怒られないよう tsconfig.ts にエイリアスを設定します。 tsconfig.ts { "…

【yarn】yarnのパッケージキャッシュを参照・削除する

yarnでインストールしたパッケージキャッシュを全て削除する場合、下記のコマンドを実施すればOK。 $ yarn cache clean 削除するパッケージキャッシュを指定する場合は以下。 $ yarn cache clean nuxt なお、キャッシュされているyarnパッケージは、記コマン…

コネクションプールサイジングでの適切な設定

DB

Hikari CPの本家Githubで良Wikiを見つけたのでメモ。 github.com コネクションプールの接続プール数は、以下の式で導出した数を初期値に調節していくのが良いとのこと。 プール数 = CPUコア数 * 2 + スピンドル数 スピンドル数は、HDDなどディスク型ストレー…

【Vue/Vuetify】Vuetifyのv-text-fieldのclearableを有効にすると、削除時のmodelにはnullが挿入される

VueのUIフレームワークVuetifyでは、テキストボックスである v-text-field に値削除ボタンを表示するオプションが clearable が指定できるのですが、この仕様が少し気になったのでメモします。 v-text-field に適当な文字列プロパティをバインドし、フォーム…

【Spring】Spring SecurityでCORS設定をする

Spring SecurityでCORSを使用した設定を行う方法を紹介します。 Spring Securityを導入することで、Springアプリケーションに手軽に認証・認可を仕組みを設定することができますが、認可の一環としてCORSの設定も行うことができます。 例えば、以下のような …

【Spring】Spring AOP - @AfterThrowing/@Around で例外を再スローする

Springアプリケーション内で発生する例外をSpring AOPでハンドリングする方法を紹介します。 ある特定の例外を別の例外として再スローするシーンがたまにあるのですが、SpringではこのようなときにAOPによる横断的な例外キャッチを使うと便利です。 例えばDD…

【Vue.js】$onによる同一イベントへのハンドラ登録は、上書きではなく追加形式になる

jQueryと同様に、Vueコンポーネントへハンドル可能なイベントを登録する組み込みのメソッド $on は、同一イベントに対し複数回ハンドラ登録を行うと、その全てがハンドラとして有効になります。 function hello () { console.log('hello.'); } function yee …

【Vue.js】Event Busによる親コンポーネントから子コンポーネントへのイベント伝播

vue

一般に、Vueで親コンポーネントから子コンポーネントへのプロパティ操作を行う場合、親コンポーネントの値を子コンポーネントにバインドします。 では子コンポーネントのメソッド操作を行う場合はどうするかというと、直接的には $refs を通して子コンポーネ…

【Vue.js】Vue + TypeScript + vue-property-decoratorでのクラスメンバの可視性はどうするべきか?

vue

Vue + Typescript + vue-property-decoratorでコンポーネントをクラス宣言的に記述する際、data はクラスのインスタンス変数として定義し、 method はクラスのメソッドとして記述できます。 <template> <p v-for="(b, i) in books" :key="i">{{b.name}}</p> </template> <script lang="ts"> import { Component, Vue } from 'nuxt-property-de…

【Vue.js】親コンポーネントから子コンポーネントへの基本型props値の動的伝播

vue

親コンポーネントから子コンポーネントへデータを受け渡す手段として props を使用できます。 これは非常にベーシックかつ便利な手段で、動的なデータであっても親コンポーネントの変更があれば子コンポーネントにその状態変化を伝えることができます。 (た…

【Spring】Spring BootでのデフォルトのConponent Scan

Spring Initializrで生成したばかりのSpring Bootプロジェクトからアプリを実行すると、Component Scanの対象となるパッケージがデフォルトでトップレベルから実行されていることがわかります。 これは、下記の様な @SpringBootApplication アノテーションが…

【Spring】@AuthenticationPrincipal経由でセッションユーザ情報を取得する際のチェック事項

@AuthenticationPrincipal Spring Securityでは、セッションユーザ情報をシンプルに取得できるアノテーション @AuthenticationPrincipal が存在します。 (Javadocより) メソッドのパラメーターまたはメソッドの戻り値に Authentication.getPrincipal()をバ…

【Cloud Foundry】Cloud FoundryアプリケーションのログをSyslog経由でLogDNAに転送する

Cloud Foundly上のアプリケーションログをLogDNAに転送し、可視化してみます。 1. LogDNAのSyslogパスを取得する LogDNAダッシュボードに移動し、「All Apps」->「Add apps」->「syslog」をクリックします。 するとSyslogのパスが表示されるので、これをコピ…

【JPA】@MappedSuperClassでEntityクラスの共通カラムプロパティをまとめる

@MappedSuperClass 主キー用IDや最終更新日時など、RDB上の各テーブルには同一定義のカラムが存在することが少なくありません。これがJPAのEntityにマッピングされると、複数のEntityクラスに同一定義のカラムプロパティが散在することになります。 (ソース…

【Golang】Goで画像処理: 画素勾配によるエッジ検出

画素勾配でエッジ検出 画像上に現れる物体の境界(エッジ)を検出する方法に、隣接する画素間の輝度の変化量を利用する方法があります。 この輝度の変化量が大きい部分をエッジとみなし、画像の分類や画像マッチングなどに使用できる特徴量として扱うことが…

【Golang】Goで画像拡張子を変換する

goで画像処理を行う場合、image パッケージを使用することができます。 image/jpeg image/png パッケージの Encode 関数で拡張子を変換します。 package main import( "os" "fmt" "bufio" "image" _ "image/jpeg" "image/png" ) func main() { // 入力画像パ…

【Spring】Spring Cache でキャッシュ機能を利用する

Spring Cacheとは Spring Cacheのアーキテクチャ データ読み込み時の流れ Spring Cacheを構成するコンポーネント Cache AOP CacheManager ハッシュテーブル 実装 キャッシュ無効 キャッシュ有効 Spring Cacheの主な機能 @Cacheable キャッシュキー KeyGenera…

【Spring】JSONリクエストのBoolean型以外のパラメータを暗黙的にBooleanに変換させない

Spring2ではJSONリクエスト/レスポンスボディのマッピングの際、Boolean型メンバに非Booleanの値をマッピングしようとしたときに正常に処理を終えてしまいます。 例えば、"1" や "true" という文字列を渡してもtrueに変換され、 "0" や "false" 文字列を渡す…

【Cloud Foundry】Cloud Foundryアプリケーションのインスタンスを明示的に指定してHTTPリクエストを送る

Cloud Foundryインスタンスを複数立ち上げたときに、特定のインスタンスにアクセスするやり方のメモです。 X-CF-APP-INSTANCE ヘッダーでインスタンスを指定 Cloud Foundry上にデプロイしたアプリケーションにアクセスするとき、 X-CF-APP-INSTANCE ヘッダー…

【Spring】Spring Sessionでセッション情報をDb2上に保存する

Spring でのセッション SpringではJava ServletのHttpSessionの仕組みを利用することができます。ServletのHttpSessionはSpringフレームワークの上に構築されたアプリケーション上でそのまま利用できるほか、Springの各種ライブラリによってラッピングされた…

【Grafana】Grafanaでアラート時通知を設定する

Grafanaで可視化対象になっている監視サーバが障害を検知したら、Grafana側でメールやWebhookなどの通知を行うための設定メモです。 Grafanaでメール通知を設定する ダッシュボード左上のGrafanaアイコンをクリックし、プルダウンから「Alerting」->「Notifi…

【Spring Security】セッションのデフォルト有効期限は30分しかない

というかServletの仕様ですね。 Spring Securityにおけるセッションの有効期限 Spring Securityでは、セッション情報をJava Servletで扱うようなHttpSessionとして扱えます。またセッションに紐づく情報は、クッキーであるHttpCookieオブジェクトとして扱え…

ブログタイトルとデザインを更新しました

突然ですが、本ブログのタイトルと、ブログ全体のデザインを更新させていただきました。 今までははてなブログで提供されていたデフォルトのブログテーマを使わせていただきましたが、そろそろデザインを変えたいと思い、またどうせ変えるなら自分でカスタム…

【Docker】ローカル環境上のイメージ/コンテナを全て削除する

ローカルにあるDockerイメージ/コンテナを全て削除するコマンド。メモ。 # Dockerイメージの全削除 $ docker rmi $(docker images -aq) # Dockerコンテナの全削除 $ docker rm $(docker ps -aq) DockerHubにあるイメージをいろいろ試していると、どうしても…

【Kotlin/Spring】Kotlin版SpringBoot開発環境を構築する

Kotlin版Spring Boot開発環境構築のメモです。 検証環境はMac OS X Mojave 10.14.2 になります。 IntelliJ IDEのインストール 今回はIDEとしてIntelliJを使用します。 IntelliJはKotlinの開発元であるJetbrain社が開発していることもあって、Kotlinのサポー…

【Docker】イメージビルド時にキャッシュを使用しない

メモ。 Dockerイメージ作成時、デフォルトだと過去のビルドキャッシュが存在する場合そちらを使用してしまいます。 $ ls Dockerfile $ docker build -t hoge . Step 2/20 : COPY entrypoint.sh /sbin/entrypoint.sh ---> Using cache ---> 5214f6bedefd これ…