2020-04-01から1ヶ月間の記事一覧

PlayFramework JSからのプリフライトリクエストを検証する

CSRFとプリフライトリクエスト PlayFrameworkは通常の入力フォームからのリクエストはCSRFFileterが常備されていてhelperでform生成している限り問題なく対策できるんだけど、JSからのPOSTメソッドなんかにCSRFTokenを付与して検証するのは結構手間。 いくら…

PlayFramework API用Jsonの出力

PlayFrameworkでWebAPIとして動作するJsonを出力する。 基本形 OkメソッドにJsonValueオブジェクトを渡せば、'Content-Type: application/json'が吐かれる。 Ok( data:JsonValue ) 以下、JsonValueの作成方法を紹介します。 文字列から生成 var jsonValue = …

書籍:Docker/Kubernetes 実践コンテナ開発入門 感想

この書籍を購入する以前もDockerは触っていたんだけど、都度調べながらコマンドを実行したり、ymlを書いたりしてた。 基本を学びたいなー。が半分、Kubernetes触ってみたいなー(笑)。が半分で本書を購入。 Dockerの基本的なコマンドから始まって、DockerHub…

書籍:HTML5/CS3モダンコーディング 感想

僕は前職で一応は、10年以上Webサービスの開発や運用をしていたんだけど、仕事のメインは、 なんと管理職だったのでチームマネジメント スマートフォンのリクエストに応じたAPIの設計・開発 AWS・インフラの構築と運用 主にDBとキャッシュ周りのパフォーマン…

書籍:データ収集からWebアプリ開発まで 実践で学ぶ機械学習活用ガイド 感想

機械学習はUdemyのキカガクの講座を購入したり、オライリーのPythonではじめる機械学習でscikit-learnを触ってたりで軽く遊んでた程度。 機械学習したpredictしたものをどうアプリケーションと連携するか?が興味あって購入した。 購入して気がついたんだけ…

書籍:グラフ型データベース入門 - Neo4jを使う 感想

Neo4jで遊んでいるとどんどん興味が湧いてきて購入。というかNeo4jの日本語の書籍ってこれだけじゃないのかな? グラフ型DBとは? ちょっとだけ説明。 要はRDBのリレーションに 指向性を持たせることがでる リレーションにデータを持つことができる。 RDBで…

書籍:オライリー:シングルページWebアプリケーション 感想

こちらも終わらせていたので感想を。 ハンズオン形式でJS (Jquery) + Node.js (Express) + MongoDBでチャットアプリを構築する。 今だと、MongoDBなんかはDockerでサクっと用意できるので簡単に試せたりできた。 MongoDBにはユーザ情報とそのログイン状態が…

Vue.js ファイルアップロード前のイメージプレビュー

フォーム選択した画像をブラウザ上にプレビュー表示する。 アップロードフォーム <form enctype="multipart/form-data"> <div> <input @change="changeFile" type="file" name="upfile[]" multiple accept="image/*" /> <img v-for="(img, idx) in uploadedImage" :key="idx" :src="img.src" /> </div> </form> のようなマークアップを記述する。 accept="image/*"を指定しておくとスマートフォン…

書籍:オライリー:サーバレスシングルページアプリケーション 感想

書籍、オライリー サーバレスシングルページアプリケーションの感想 JS (Jquery) + ASW ( S3, IAM、Cognito, Lambda, API Gateway, DynamoDB )を使用した簡単なクイズアプリをハンズオン形式で作成していく。 また、本書ではフルスクラッチというわけけなく…

技術評論社:Vue.js入門 基礎から実践アプリケーション開発まで の感想

技術評論社 Vue.js入門 基礎から実践アプリケーション開発まで を完走した。 自分は以前に他の入門書一冊を済ませているので基本的な文法や考え方は理解していたつもり。反面、コンポーネントの設計や応用をもう少し勉強したかったので購入した。 (function(…

Vue.jsコンポーネントのvue2-google-mapsを使用する

Vue.jsコンポーネント化されたGoogleMaps、vue2-google-mapsを使用する。 github.com www.npmjs.com API Keyの取得 まずはgoogle developer console、 Google Cloud Platform からAPI Key取得する。 projectを作成、または選択して ライブラリ - Maps JavaSc…

PlayFramework テスト用データベースを使用したControllerユニットテストとE2Eテスト

データベースインスタンスを必要とするControllerのユニットテストとE2Eテストを作成する。 Controllerのユニットテスト Specクラスの前処理 テスト用データベースの定義を記述。 以下はh2のインメモリデータベースをPostgreSQLモードで起動したものをテスト…

PlayFramework JDBCとEvolutionsマイグレーションの導入

PlayFrameworkからデータベースを扱う為、JDBCドライバとマイグレーションツールEvolutionsを導入する。 依存ライブラリの導入 build.sbt libraryDependencies += jdbc libraryDependencies += "org.postgresql" % "postgresql" % "42.2.12" libraryDependen…

vue-cliのwebpack-dev-serveをプライベートIPアドレスで起動する

経緯 LAN内のスマートフォンなどの他の端末から開発中アプリに接続し、確認したかった。 デフォルトでの起動はlocalhostとなるので、例えば開発中PCのIPアドレスが192.168.0.1だったとして、http://192.168.0.1:8080としても起動しているサーバ名がlocalhost…

Vue 単一ファイルコンポーネントのユニットテスト

vue-test-utils を使用する テストモジュールと対象のコンポーネントのimport import { mount } from '@vue/test-utils' import hogeButton from '@/components/hogeButton.vue' テストケースの記述 describe() & it() describeに、テストの区分けやテストケ…

Chrome version must be between 71 and 75

Vue-cliでe2eのテストを実行した時、以下のエラーが表示された。 message: 'session not created: Chrome version must be between 71 and 75 表示の通り、起動対象のChromeとdriverが対応しているChromeのバージョンが合っていないので合わしてやる必要があ…

PlayFramework POSTのControllerテスト

PlayFrameworkのPOSTのControllerテストを作成する。 bodyはJSONではなく一般のkey=valueのフォームデータをPOSTした形式とする。 FakeRequest FakeRequestはwithBodyを追記してbuildする。 bodyの内容はcontrollerで受け取るrequest.bodyと同等の形式を渡せ…

PlayFramework cookie送受信のcontrollerテスト

PlayFrameworkのcontrollerテストでcookieの送受信を行う サーバからのset-cookieヘッダーを確認する。 レスポンスされたFutureインスタンスからcookies()でアクセスできる。get("cookie名")でOption[Cookie]が取得できるので、unwrapして値を確認することが…

Vue 単一ファイルコンポーネントから外部JSライブラリを使用する

例えば、古いJSライブラリでLint絡みなどでmodule exportが出来ない場合とか。 理屈はわからんが、出来ないことはない。publicにhtmlがある前提で。 解決方法 HTMLファイル public/html ファイル。通常通りscript srcで外部JSファイルを読み込む。 <html lang="en"> <head> <script src="hoge.js"></script> ... </head></html>…

関数合成について勉強したこと

Haskellの関数適用と関数合成の違いを整理したのでメモしておきます。 関数合成とは (.)という中置関数を使い2つの関数を結合して新しい関数を作成すること。 ghci> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c 上記のように、合成後の関数はaとなる引数…

Vue 子コンポーネントにHTML要素を渡す

勉強したことメモ。 子コンポーネントにHTML要素やinnerTextを渡したい場合、slotを利用できる。 例えば、 <header-component> <h1 slot="header">ここから<div>div要素も含めて</div>ここまで。</h1> </header-component> のように定義すると、子コンポーネントから<slot name="header"></slot>とすることで、要素を差し替えることができる。 Vue.component('hea…

IntelliJ Scala Java SDKのバージョンを変更する

いつも忘れるので備忘録。 File -> Project Structure... -> SDKから変更できる