scala
Scala Advent Calendar 2017の24日目、クリスマス前夜です。 前日はiTakeshi@githubさんのScalaメタプログラミング今昔物語 - 本編でした。 私はドラクエ11をプレイしており、今クリア後の世界を楽しむというクリスマス感が全くない日を過ごしています。 さ…
今更ペルソナ5を始めました。 背景 MySQLのカラムに予約語を使う場合、バッククオートで以下のように囲むことが一般的です。 create table log(id int auto_increment, user_id int, from datetime, to datetime); insert into log(`user_id`, `from`, `to`)…
本題の通りAWScalaを使っていて、IAMRoleを適用したかったんですが、InstanceProfileCredentialsProviderを埋めたS3Clientが作れず、困っていました。 やりたかったこと local環境ではcredentialKeyを使い、prd環境ではIAMroleを使う ただし、複数のアカウン…
概要 以前GlobalSettingの撲滅に関してブログを書きましたが、言語対応に関して書いていなかったので、続編ということでブログにまとめました。 yuutookun.hatenablog.com 概要 前提 根本対応 1.コントローラーをInjectionの形に移行 2.DefaultMessageAp…
みなさんいかがお過ごしでしょうか? 最近NierAutomataクリアしました。 今回はSprayからAkkaHTTPへの移行に関して紹介します。 SprayとAkkaHTTPとは? SprayとはシンプルなScalaのHTTPフレームワーク(というよりモジュール)。すでに開発がストップしてお…
タイトルの通り、Scala用のコレクション操作の拡張ライブラリを作りました。 名前はsansyoです。 意味としては、 「山椒は小粒でもぴりりと辛い」 から来ていて、コレクションの拡張ライブラリのため、小さいですが便利になるものとして作りました。 ライブ…
Play2.4で非推奨、かつPlay2.5ではなくなっているGlobalSettingの消し方を紹介します。 なかなか大変なので、ブログにまとめておきました。 Global.scalaで書いていたコード Play2.3で書いていたGlobal.scalaのコードを記載します。 object Global extends W…
fileを開いて、指定行数の分だけ取得するというロジックを作成していたのですが、 そもそもinputが指定行数以上あるかどうかを知りたかったので、そこもうまく取得できるような実装にする必要がありました。BufferedReaderで最後の値が、nullになるので、nul…
値クラスを使っていて不可解な挙動があったので、まとめたのとその対処法をメモしておきます。 値クラスとは 値クラスとはIntやStringが継承しているAnyValを継承させたクラスです。 一つの値しか持ちませんが拡張メソッドを実装できるため、DDDなどを実現す…
sprayフレームワークを使っていると、HTTPリクエストの部分はspray-canを利用すると思います。しばらく、spray-canを使っていたのですが、いくつか重い処理を走らせるとCPUを使い切っていないのに、sprayがリクエストを受け付けなくなってしまい、502 BadGat…
takezoeさんがquillを紹介していたので、 Scalaの新しいデータベースアクセスライブラリ「quill」を試してみた - たけぞう瀕死ブログ 実際にどんな感じで使えるのかを試してみました。http://getquill.io/getquill.io結論、Slick2系から置き換えるのはなかな…
sbtと打つとREPLが起動し、runしたりtestが走らせられたり色んな挙動をさせられる。しかし、自分でコマンドを作ろうと調べてみると、案外出てこない。ということで最短でコマンド作成を紹介します。 最短でHelloという文字を出力させる Helloという文字列を…
Scalaにもnumpy, scipyのような数値計算ライブラリがあります。ScalaNLPというレポジトリで登録されています。 github.comでは、どんなものがあるか調べてみます。 breeze Breezeは、数値計算ライブラリです。 numpyのようなもので、行列計算などを操作する…
scalaでは他の言語でもできるように、コマンドを叩くことができます。実際に色んな方が、Processの仕方を紹介をしています。 scala.sys.process | Scalaの標準ライブラリを使ってみる | mwSoft Scala 2.9.0のscala.sys.processパッケージが便利過ぎる件につ…
重回帰とは 重回帰は色んな所に転がっているので今更書かなくてもって感じですが、簡単に。 ある地域の住宅価格を求めたいとなった時に、ランダムで価格を当てるよりも何かの影響を受けて価格が変動すると考えるのが自然です。そこで上のような住宅価格は色…
slickのcase classをつくるのがめんどかったので、SQLを投げればcase classとTableを生成するスクリプト作りました。 (すでにslick-code-generatorとかある。車輪の再発明。。) Schema code generation — Slick 2.0.0-RC1 documentation 作った経緯として…
Slickにおける動的where句の作り方 現在最新は3系ですが環境としては、Slick2.1での書き方での紹介です。 Documentation | SlickSlickにおいて動的にwhere句を作るのは、案外Scalaを始めたばかりだとうまくいきません。以下の様なクラスに対して複数の検索を…
久しぶりに実装してみました。 多分実装できていると思います。。実装に関してはPythonと同じ位簡単なんですが、 Scalaでやる場合は、データセットの読み込みとかランダムデータを作るのが結構めんどいんで、どうするのがいいのかってところが困りますね。以…
Scalaにおける一つ目の関門は、forやmapを使ってOption型を操作することだと思います。そこで、forやOptionやFutureを理解しやすいようなイメージを共有したいと思います。 Scalaでのmap 「Scalaの型でのラッピングは同じ扱い」 これは何かというと、Seqであ…
今回はflywayに関して、発表しました。flywayとは、DBのマイグレーションツールです。マイグレーションツールというと、RailsのActiveRecordが一番有名かと思いますが、 言語を問わず、存在します。今回は、ScalaやJavaなどのJVMと親和性が高いflywayに関し…
少し偉そうなタイトルをつけてしまったのですが、Playを使っている方はぜひやるといいなーと思ったことを紹介します。それは・・・・、 PlayFrameworkの翻訳 です。あんまり気づかないかもしれませんが、じつはプルリクで全て管理しています。 (別に自分は…
Slickでのトランザクション Slickでトランザクション処理を行うとすれば、公式のドキュメントに載っているように以下の様な処理を書けば良いと思います。 db.withTransaction{ implicit session => // your queries go here } 一般的にDB間をまたいでトラン…
人生で初めてLT発表をしてきました。今まで、研究室や社内の勉強会では積極的に発表はしていたのですが、 いざ外部となると、ものすごく緊張しました。やはり、社内などの小さいコミュニティであれば、 聴講者のレベル感などがだいたいわかるので、それに合…
scalaでssh処理をしたい!ってなった時に、まず思いつくのは、sys.processだと思います。 sys.processを使えば、生のコマンドが実行できますので、自由にsshだったりなんだったりできます。しかし、sprayやAkkaのコミッターである sirthias (Mathias) · GitH…
一応、slickとタイトルに書いてありますが、ハマったのは、specs2の仕様に対してです。 やってたこと specs2を使い、Model周りのテスト。 該当クラス以外のメソッドに対しては、Mockを差し込んでテスト。 ハマったこと その1 【謎のエラー】 [error] Invali…
slickでコネクションプーリングを使おうとしても、slick自体ではサポートしていない。 Connections / Transactions — Slick 2.0.0-M3 documentationそこで、リンク先にも書いてあるように、Javaの資産であるコネクションプーリング用ライブラリが必要になる…
slickでは、SQLを書かずにクエリを投げられます。その書き方に関しては、 Coming from SQL to Slick — Slick 2.1.0 documentationに書いてあります。ただ、少し違ったことをしようとするとなかなか実現できません。 今回実現しようとしていたこと update文で…
slickのcode generatorを使ってみました。code generatorとは、DBの接続するscalaファイルをsbtコマンドを使うことで作成してくれるものです。slick/slick-codegen-example slick/slick-codegen-example · GitHub では、H2Driverを使っての例なため、MySQLDr…
ScalaBlitzの使い方をめちゃくちゃ簡単にまとめてみました。 ScalaBlitzとはなんなのか? ユーザが何も気にすることなく、並列化を行えるライブラリ、それがScalaBlitzである。 なんで作った? Scala2.9で並列コレクションがリリースされた。 ネイティブに並…
ScalaBlitzというライブラリがあります。 ScalaBlitz | ScalaBlitzScalaBlitzはどういうライブラリかというと Use ScalaBlitz optimize block, to make collection operations faster! Simply import the scala.collection.optimizer package, and take full…