Category:

slickにおけるトランザクション管理

scalaのデータベースライブラリとしてslickを業務で使ってみようと試していたが、ドランザクション管理に制限があり、最終的に取りやめることにした。調べたこと、試したことを備忘録的に残しておこうと思う。 slick version : 3.3.0 slickの基本 slickではクエリに相当するDBIOActionというものをまず生成する。以下の例だとinsertやupdateがDBIOActionに当たる。また、insertとupdateを合わせたactionもDBIOActionに当たる。 次に、db.run()でアクションを実行することにより、実際にSQLが実行される。 val insert = Hoge.map(h => (h.item1, h.item2)).++(Seq((11, 12), (21, 22)) val update = Hoge.filter(_.ite Continue Reading

Posted On :
Category:

DockerのTips

Dockerに関するTipsを気がついたら追記していく予定。 ちなみにDocker Composeに特化したTipsは こちら を参照のこと DockerコンテナのIPアドレスを確認 まずは、対象のネットワーク名を取得する。 docker network ls NETWORK ID NAME DRIVER SCOPE 1e1234536b95 sample_default bridge local 次に、ネットワークおよびそのネットワークに所属するコンテナの詳細情報を取得する。 この実行結果だと172.19.0.2が対象コンテナのIPアドレスとなる。 docker network inspect sample_default [ { "Name": "sample_default", "Id": "xxxxxx&quot Continue Reading

Posted On :
Category:

Vue.js+TypeScriptでフロントエンドアプリを構築時のTips

現在プライベートで作っているWEBサービスのフロントエンドを作るにあたって、Vue.js+TypeScriptを試してみることにした。 基本的には公式サイトを参照させていただいた。 作るもの メモを編集する画面を作成する。 初期表示 メモ表示欄とEDITボタンが表示されている メモ表示欄にはメモ取得APIで取得したメモの内容を表示する APIで取得する内容はこんな感じ。{ id: 123, body: "これはサンプルです"} EDITボタンクリック 表示欄+EDITボタンを非表示にし、編集欄(textarea)+SAVEボタンを表示する SAVEボタンクリック 編集欄+SAVEボタンを非表示にし、表示欄+EDITボタンを表示する メモ保存APIでメモを保存する プロジェクト作成 npmのインストール 以前記事を書いたのでこちらを参照のこと。 node.jsおよびnpm Continue Reading

Posted On :
Category:

Vue+TypeScriptのプロジェクトにVuetifyを導入

2020年6月追記:記事の内容がだいぶ古くなっていたので、最新の情報に見直しました。 Vue+TypeScriptで作ったフロントエンドアプリの見た目をよくしたかったので、Vuetifyを導入しました。 Quick Startにいっぱい書いてあって、どれをどうやればいいかが結構分かりにくかったので、導入手順を記載しておきます。 インストール こちら にしたがって導入をします。 VuetifyのUI Componentを利用する箇所で毎回moduleをimportしなくても、自動的にimportしてくれる vuetify-loader を利用するケースについて記載しています。 依存ライブラリを追加します。 npm install –save vuetify npm install –save-dev sass sass-loader fibers deepmerge -D npm ins Continue Reading

Posted On :
Category:

Docker Compose上のNginxをHTTPS対応する

ローカル開発用にDocker Comnposeで動かしているNginxをHTTPS対応する必要が出てきたので、自作のSSL証明書を使って対応することにした。 opensslで秘密鍵、署名リクエスト、SSL証明書を作成 sslというフォルダを作成する mkdir ssl cd ssl 秘密鍵(KEY)を作成する 暗号にはRSA 2048ビットを使用する。 openssl genrsa 2048 > server.key 署名リクエスト(CSR)を生成する SSLサーバ証明書発行に必要なテキストデータで、認証局はこのテキストデータを元に内容を精査してSSL証明書を発行するらしい。(今回は自作するので適当でOK) openssl req -new -key server.key > server.csr > Country Name (2 letter code) []:81 > S Continue Reading

Posted On :
Category:

たまに使うLinuxコマンドやbashスクリプトメモ

たまに使うLinuxコマンドやスクリプトを随時メモしていく予定です。 ターミナルからログアウトしてもコマンドを動かし続ける とても処理時間がかかる処理を実行する際に、ネットワークが切れたりして処理が停止するのを避けたいときに使います。 # nohupでhangupシグナルを無視し、バックグラウンドで実行させる nohup コマンド & nohup pg_dump -h localhost -p 5432 -U admin -Fc -f hoge.dmp hoge & # ジョブの確認・停止・再開などは通常と同じ バックグラウンド実行、フォアグラウンド実行 # バックグラウンドで実行する コマンド & sar 5 555 & > [2] 9095 > Linux 5.4.0-1025-gcp (stg-scraper01) 2020年10月01日 _x86_6 Continue Reading

Posted On :
Category:

Ktorで構築したAPIサーバのGoogle OAuth認証処理の全体像

最初は、KtorでAPIサーバを作るにあたり、公式ページ を参考にバックエンドでGoogle OAuth認証を行う実装を行なった。 しかし、フロントエンドからAPIを呼び出した際に、 フロントエンド => バックエンド => (redirect) => account.google.com の様な流れで、CORSエラーが発生することが分かった(詳細はこちら)。 リバースプロキシでフロントエンドとバックエンドのドメインを統一してみてもうまく解決できず、結局公式で紹介されているGoogle OAuth認証は諦め、自前で認証処理を実装することにした。 処理の流れ フロントエンド側の実装 package.json vue-google-oauth2の依存関係を追加する。 "dependencies": { "vue-google-oauth2&quo Continue Reading

Posted On :
Category:

ローカル環境で開発中の複数アプリサーバのドメインをNginxで統一する

ローカル環境で開発中の複数アプリサーバのドメインを統一する必要が出てきたので、Docker Composeを使ってNginxでリバースプロキシを立てることにした。 実現したいこと http://rinoguchi.io/hoge –proxy–> http://localhost:8080 http://rinoguchi.io/fuga –proxy–> http://localhost:8081 モチベーション Dockerで立ち上げた複数アプリサーバを、Docker Composeを使ってNginxでリバースプロキシする話は結構あるのだが、Dockerを使わず立ち上げたアプリサーバの話は発見できなかった。 個人的には、開発対象のアプリケーションはAutoReloadが効かなくなるのでDockerでは立ち上げない方が良いと考えている。なので、今回Dockerを使わず Continue Reading

Posted On :
Category:

別ドメインへの302 redirectを返すAPIを呼び出すとCORSエラー

別ドメインへの302 redirectを返す別ドメインのAPIを呼び出すとCORSエラーが発生することがわかった。 説明が難しいのだが、自分の具体的なケースを書くと、 ドメインA(フロントエンドサーバ)からドメインB(バックエンドAPIサーバ)のAPIを呼び出す APIがGoogle OAuth認証のためにドメインC(account.google.com)への302 Redirectを返す CORSエラー発生 という流れで、以下のエラーが発生した。 Access to XMLHttpRequest at 'https://accounts.google.com/o/oauth2/auth?client_id=**********.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F Continue Reading

Posted On :
Category:

node.jsおよびnpmのTips

npmを使う必要があったので、とりあえず調べて使い方をまとめた。今後もTipsを追加していく。 インストール方法 nodebrewをインストール brew install nodebrew Node.jsおよびnpmをインストール # インストール可能なバージョン一覧を取得 nodebrew ls-remote # install-binaryを配置するフォルダを作成 mkdir ~/.nodebrew/src # インストール nodebrew install-binary v12.2.0 nodebrew install-binary latest # 最新バージョン # インストール済みのバージョン一覧表示 nodebrew ls # 特定のバージョンのnodeを有効化する nodebrew use v12.2.0 # nodeコマンドにPATHを通す vi ~/.bash_prof Continue Reading

Posted On :