Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
![[PlayFramework]フォームをJSONでPOSTし、バリデーションエラーをJSONで返す - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/67fc9ffb1068fe85aca866be82a6e96f1872b637/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTUxNzMwJTJGcHJvZmlsZS1pbWFnZXMlMkYxNTc1NzI4NDYyP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTNiOThjOGI5NjBjZTU1MDVhODgzMDBlOTE4NjFlNDEy%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253Ddb34870dbf3d64edf85b3e3735dd243e%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCUGxheUZyYW1ld29yayU1RCVFMyU4MyU5NSVFMyU4MiVBOSVFMyU4MyVCQyVFMyU4MyVBMCVFMyU4MiU5MkpTT04lRTMlODElQTdQT1NUJUUzJTgxJTk3JUUzJTgwJTgxJUUzJTgzJTkwJUUzJTgzJUFBJUUzJTgzJTg3JUUzJTgzJUJDJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgyJUE4JUUzJTgzJUE5JUUzJTgzJUJDJUUzJTgyJTkySlNPTiVFMyU4MSVBNyVFOCVCRiU5NCVFMyU4MSU5OSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPWQ2NTE3MjE4MTg5YWZjMTQxMDE2MmZkYWY5ZTMwNjQx%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBhZ29ldGMmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz1mYWFhMWE0OTNjOGVmMzI1YWVmNjhjZjBkNTc1NDlkNw%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3De6a64670c14d1ee223a8133e32238042)
目標 Scala の implicit (暗黙的な型変換)があるとどううれしいか紹介する. implicit の簡単な紹介 型の不一致を解消するための型変換の操作が繰り返し実装に現れると,コードのシンプルさが失われ可読性が落ちる.そこで, implicits を用いることで暗黙的に型の不一致を解消でき,シンプルでわかりやすいコードを記述することができる.さらにこれを応用させて,組み込み型のクラスに対してあたかも新しいメソッドを追加したようにメソッドを呼び出すことができる. 使用例とメリット 異なる複数の通貨間で加算と減算を実行するコードを書く場合を取り上げて, implicit により実装がシンプルになる例を紹介する.ここでは 100 円 + 1 ドル (= 111円) = 211 円 などの演算を想定する.円,ドル,ユーロ,それぞれの貨幣を示すクラス, Yen, Dollar, Euro
package com.example.common import play.api.mvc._ import play.api.libs.json._ import scala.concurrent.Future abstract class JsonValidatedController(cc: ControllerComponents) extends AbstractController(cc) { def async[A](request: Request[AnyContent])(async: A => Result)(implicit reads: Reads[A]) = { Future.successful { val json = request.body.asJson.map(_.validate(reads)) json match { case Some(s: J
こちらで、Spark StreamingからRDBへのデータ書き出しの作業の流れ(Spark Streaming / JDBC連携)を確認した上で、Spark StreamingによるTwitter構文解析※データを、PostgreSQLに格納した手順をまとめます。 実行環境は次の通りです。 ・CentOS 7.5 ・PostgreSQL 9.2.23 ・Apache Spark 2.3.1 ・Scala 2.12.6 ・kuromoji 0.7.7 ・Spark Streaming Twitter 2.10 rev 1.1.0 ・Twitter4J 3.0.3 PostgreSQL : 格納用テーブルの作成 目的)60秒毎に「iPhone6」が含まれるTweet中に出現する単語とその頻度をカウントし、先頭10件の単語情報を格納対象とする psql -d mydb -U postgres
package com.exsample import _root_.controllers.AssetsComponents import play.api.ApplicationLoader.Context import play.api._ import play.filters.HttpFiltersComponents import router.Routes import com.exsample.controllers._ class MyApplicationLoader extends ApplicationLoader { def load(context: Context) = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment,
Scala & Play2 学習ノート(1) ここ4,5年C#&Azureマンでやってきましたがこの度転職する運びとなり、新しい職場ではScala&AWSが中心と聞いているので集中的に勉強してみようかと思い学習の経過・メモを記事に残していくつもりです。 ちなみにScala自体は全くの未経験というわけではなく、個人的に勉強して納品とは関係の無い業務ツールを作っていた時期(ソースを見るとScala 2.10.2時代)があります。 かなり忘れている部分もあるのでリハビリを兼ねつつボチボチ画像少なめメモ中心でやっていきます。 環境作成 sbt インストール なにはなくとも sbt。Macならbrewでinstallするだけ。 $ sbt about [info] Loading project definition from /Users/xxxx/project [info] Set curre
Scala & Play2 学習ノート(2) Scala 学習ノート二回目。やっぱWebアプリを作らなきゃということで PlayFramework を使っていきます。 Play2 を使う bizreach のハンズオンが良さげなのでとりあえず流しでやってみます。 プロジェクトの作成 プロジェクトを作る 既にsbt、IntelliJは入っているので新規プロジェクトを作る所から。 bash-3.2$ sbt new playframework/play-scala-seed.g8 --branch 2.6.x [info] Set current project to ideaprojects (in build file:/Users/yossy6954/IdeaProjects/) [info] Set current project to ideaprojects (in build f
package controllers.presenters import models.domains._ import play.api.libs.json._ import play.api.libs.functional.syntax._ trait JsonPostsPresenterImpl extends PostsPresenter { implicit val postWrites = ( (__ \ "id").write[String].contramap((postId: PostId) => postId.toString) and (__ \ "user_id").write[String].contramap((userId: UserId) => userId.toString) and (__ \ "text").write[String].contram
Scala & Play2 学習ノート(3) 前回作った play2-hands-on をAWSで動かします。 Beanstalk 使った事なかったので Beanstalkで、DBもせっかくなのでRDSで作ります。 AWS RDS を使用する まず DB だけ AWS RDS で作成し、ローカルで RDS上のDBに繋いで動くようにします。 RDS 作成 AWS コンソールに繋いで MariaDB を作ります。当然無料利用枠オプションON。 ローカルから繋ぎたいのでパブリックアクセシビリティだけ"はい" に変更し、インスタンス作成。 DB作成 ハンズオンの h2 DBに含まれる create.sql を元に MariaDB用の DDL を作成し、テーブルと初期データを作成します。 MySQL使うのが久々すぎてヤバい。 create table COMPANIES ( ID INT NOT N
基本的にはこちらのページの手順を再現するだけで良いので簡単でした。 環境: - Mac OS Sierra - JDK 1.8.0_171 - Scala 2.12.6(brewでインストール) Graal VMをダウンロードして適当に展開する https://www.graalvm.org/downloads/ バイナリはLinux 64bit版とMac OS 64bit版しかないので注意 ~/graalvm-ce-1.0.0-rc5 に展開したことにする 環境変数JAVA_HOMEを設定する(Java 8でないと動かない?(要確認)ので注意) $ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
きっかけ 僕がscalaを書くたびにコピペしてるutilツールの一つにtap関数があります。 ScalaでRubyのObject#tapがぽぽぽぽ〜ん。っていうかいつでもmapしたい - ( ꒪⌓꒪) ゆるよろ日記 たぶんもう10回以上コピペしていて、いい加減ライブラリ化したいと思っていたところ次のツイートが流れてきました。 https://t.co/uc5KXSOgeI Scalaにtap入った — Kenji Yoshida (@xuwei_k) 2018年8月9日 2.13でtap関数が標準ライブラリで正式採用、めでたい! でも僕明日からでもこの標準のシグネチャで使いたいんだよなあ。 しかも2.13はRC1の締め切りが2018/9月末になってる。うーん。 というわけで、scala 2.12用に2.13で導入されるtap/pipeと全く同じものをライブラリで用意しました。 いわゆるバッ
概要 Play FrameworkとNuxt.jsで環境構築をおこない、SSRするまでの例を紹介する 構成 サーバーサイド:Play (Scala) v2.6.15 フロントエンド:Nuxt (Typescript) v1.3.0 環境構築 まずはPlayをインストールします。 $ sbt new playframework/play-scala-seed.g8 This template generates a Play Scala project name [play-scala-seed]: playframerowk-with-nuxt.js organization [com.example]: com.flatgela play_version [2.6.15]: sbt_version [1.1.6]: scalatestplusplay_version [3.1.2]: T
AWS SQS + Lambda を利用した Slack 通知アプリケーションを Scala で実装して Serverless Framework でデプロイするScalaAWSlambdasqsServerlessFramework 社内ブログを書いたのでその転載です。 AWS SQS + Lambda を利用した Slack 通知アプリケーションを Scala で実装して Serverless Framework でデプロイする 表題の通り AWS のサービスを活用した Slack 通知アプリケーションを 開発する機会がありましたのでアウトプットです。 尚、今回はイベントソースについて詳細には触れませんのでご了承ください。 こちらについてはまたの機会に。 アプリケーション概要 SQS に溜めたメッセージを Lambda がポーリング 読み込んだメッセージを Slack に POST 通
概要 ScalaのPlay Frameworkで遊んでみようと思ったのですが、まず環境構築で仕様変更等あり、どれが2.6で使えるのか分からなかったので、素人ながら情報整理をしてみました。 前提 よくネットにある手順のactivatorコマンドはsooogleさんのEclipseでPlay Framework 2.6 (Java) の環境構築に記載の通り、2.5でEOLをむかえてしまっています。したがって2.6以降はsbtコマンドを使って、環境構築等を行っていく必要があります。 ちなみに、私が今回試した環境は以下の通りです。 ・Java 1.8 ・sbt 1.1.6 ・Scala 2.12 ・Eclipse 4.7 Oxygen やったこと ※JavaとEclipeはインストール済みの前提とします。 1.sbtのインストール まずはこちらよりsbtをダウンロードしインストールします。 2.P
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く