テック-scala
データのダウンロード 書籍通り、米国運輸省のサイトからダウンロードします。 https://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&DB_Short_Name=On-Time On-Time : Reporting Carrier On-Time Performance (1987-present)は Filter Geograph…
最近、Hadoop周りの学習を始めて、Sparkをもと思いこちらの書籍を購入。学習環境を構築しました。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.scripts[c.scripts.length-2];…
AWS Java SDK v2 を使用して、ScalaからAmazon SES( Simple Emai Service )を利用してメール送信を行います。 こちらのページにマルチパートのメールの送信方法も含めて詳細に記述されています。 AWS SDK を使用したメールの送信 - Amazon Simple Email Serv…
PlayframeworkからAWS SDK for Java 2.0を使用して、DynamoDBを利用したので記録しておきます。 といってもJavaのAWS SDKを使用するだけなので、Scalaはあまり関係ないかも(^_^;) 依存ライブラリ build.sbt libraryDependencies += "software.amazon.awssdk"…
環境ごとに異なる設定値をapplication.confに設けます。 OSの環境変数設定 ~/.bash_profileとかに、 export SECRET_KEY="****" と記述しておく。source ~/.bash_profileしておこう。 application.confの記述 環境変数は${?varName}で読み込めます。envvalの…
2.x系のAWS SDK for JavaでScala + Playframework + S3アップロードを行ったのでメモしておきます。 AWS SDK for Java 2.x AWS SDK for Java 2.0 開発者ガイド - AWS SDK for Java バージョン 2 依存ライブラリの導入 僕の環境では40分ほどbuildに時間を要し…
PlayでAnornを使用していて、RepositoryクラスをDIした時のメモ。といってもAnormは関係ない。 Repositoryクラス 差し替え可能であること前提で抽象化するようtraitを用意しておく。 Trait trait ShopRepositoryTrait { def withBegin():ShopRepository def …
WebAPIとして動作しているPlayframeworkにmultipartでJsonとファイルデータを送信します。 Vue側の実装 template axiosでPOSTするので、formにはmultipartをつけず、prevent指定でページロードしないように制御する。 <template> <form> <input type="text" v-model="shopMame"> <input @change="changeFile" type="file" name="upfile[]" multiple accept="image/*" /> </form></template>
WebAPIとして動作しているPlayframeworkのJsonデータのパースについて。 Jsonデータは、 { "shopName":"Let it Ride", "position":{ "lat":35.66530148846749, "lng":139.41634567694945 }, "testArray":[1,2,3,4] } のように入れ子、または配列のデータを含…
Akka Actorとは? Akka ActorはActorに対してメッセージを配信する仕組みを提供する。 messageの送信は非同期で送信され、透過的にキューイングされ、Actor側からはキューメッセージを取り出し同期的に処理を行う。 依存ライブラリ libraryDependencies ++= …
Futureは後から結果がわかるといったコンテキスト。スレッドをコンテキストの懸念に抽象化することによって、関数型プログラミングに沿ったコンテキストとしてスレッドを扱うことができる(説明が合ってるかは謎...)。 Futureを使ってみる import scala.concu…
今日もN予備校で学習 タイトルはJavaだけどScalaの勉強で必要になったので(^_^;) 記事内のコードはScalaです。 Fork/Join フレームワーク Executorフレームワークでは、スレッドは割り当てられたキューのタスク消化を行った(待機スレッドは他スレッドのタス…
この本読んでて、非同期処理についてもう少し知ってないと厳しいと感じて、N予備校で勉強した並行処理のことを忘れるのでメモしておく。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScr…
式評価のskip、実行について 式評価の基準について。 // falseで条件外となるので{println("!!"); true}は評価されない scala> false && { println("!!"); true } res1: Boolean = false // {println("!!"); true}が評価され、式結果はtrueとなる scala> tru…
この本を進めていて、途中、Eitherの実装の章でコンパイルが通らなくなった。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[])…
懸念を整理したので、自分なりの理解を記録しておきます。 おもちゃ箱、ToyBoxにおもちゃToyのサブクラス、MiniCarとCharacterCardインスタンスを格納するという実装で考える。 初期実装 型パラメータを使わない各初期実装は以下の通り。ToyBoxにはToyを抽象…
代数的データ型とは? 複数のデータコンストラクタ(Scalaではclassやobject)を取りまとめた型。オブジェクト指向の抽象クラスのような考えに近いと思った。 ただ、オブジェクト指向の抽象は、使い手が何のインスタンスであるか意識しなくて良いのに対して、…
無名関数、関数リテラルの定義 Scalaの無名関数、関数リテラルは以下のように記述することで定義できる。 val f = (x:Int, y:Int) => x == y これは引数2つの関数リテラルとなるので、Function2(2は引数2つの意味)のtrait実装の無名クラスの糖衣構文となる。…
自分のScalaの学習の経歴は N予備校のScala講座で学習 コップ本23章まで読んだ Haskellの入門書一冊を終了。型クラスやファンクター、モナドの概念は一応は理解しているつもり。 程度。ただし、学んだ端から忘れていってしまう(笑)ので、もう少し基本的なこ…
Playframeworkについての入門書は以外とあまり出てなくて、日本語で書かれた出版社から出版された書籍は多分この2冊になると思う。 しかしながら、徹底入門の方は2013年末出版のPlayのバージョンが低い & Javaベースで書かれた本なので、新しいバージョンに…
pac4jとは? pac4jはrubyでのOmniAuthのようなJavaで書かれた横断的なソーシャルログインライブラリ。 pac4j: security for Java https://github.com/pac4j/play-pac4j Scala + Playframeworkでも利用できるので、TwitterとGitHubのソーシャルログインを試し…
バリデーションの定義 Formオブジェクト生成の定義に記述する。 Form{ mapping( "password" -> nonEmptyText.verifying(passwordCheckConstraint), "mail" -> email, "tel" -> nonEmptyText(maxLength = 13, minLength = 10).verifying(error="不正な番号で…
PlayframeworkのControllerのメソッド、Action{}とはなんぞや?の整理。 def index() = Action{ implicit request => Ok("Hello World") } 自分なりの解釈なので、間違ってたらごめんなさい。 Actionの定義 Action.scalaのActionBuildertraitのapplyメソッド…
絶対忘れるので書いておく。 traitのメソッドのみ使いたい場合、無名クラスにtrait mixinすれば簡単に利用できる。 このように対象のtraitがあった場合、 trait Job { def p(str:String) = {println(str); str} } ダメなケース。 new Job() traitそのものは…
変数の遅延評価 lazyキーワードを使用するとその変数にアクセスするまで評価が遅延する。 scala> val date = new java.util.Date date: java.util.Date = Wed May 06 18:59:57 JST 2020 scala> lazy val date = new java.util.Date date: java.util.Date = <lazy> </lazy>…
例えば、各コントローラー、メソッド単位で認可の判断をする場合など、メソッド側にパターンマッチを書いてももちろんいいんだけど、以下のようにActionメソッドを拡張したメソッドに渡して透過的に確認することもできる。 def index() = SignedAction{ impl…
AnormはJDBCインスタンスを利用して、シンプルなDBレコード操作を提供する。 JDBCで書くSQLとの違いは、 ScalaオブジェクトにマッピングするParserを定義することで、ユーザが定義したcase class型のListを作成することが簡略化できる。 PreparedStatementの…
CSRFとプリフライトリクエスト PlayFrameworkは通常の入力フォームからのリクエストはCSRFFileterが常備されていてhelperでform生成している限り問題なく対策できるんだけど、JSからのPOSTメソッドなんかにCSRFTokenを付与して検証するのは結構手間。 いくら…
PlayFrameworkでWebAPIとして動作するJsonを出力する。 基本形 OkメソッドにJsonValueオブジェクトを渡せば、'Content-Type: application/json'が吐かれる。 Ok( data:JsonValue ) 以下、JsonValueの作成方法を紹介します。 文字列から生成 var jsonValue = …
データベースインスタンスを必要とするControllerのユニットテストとE2Eテストを作成する。 Controllerのユニットテスト Specクラスの前処理 テスト用データベースの定義を記述。 以下はh2のインメモリデータベースをPostgreSQLモードで起動したものをテスト…