slick-doc-ja 3.0 Slick 3.0 documentationの日本語訳です。 編集先: GitHub - krrrr38/slick-doc-ja 連絡先: @krrrr38 他のバージョンのドキュメント Slick 1.0 翻訳 Slick 2.0 翻訳 Slick 3.0 翻訳 API Documentation (scaladoc) Slick Core (slick) TestKit (slick-testkit) Code Generator (slick-codegen) Direct Embedding (slick-direct) (Deprecated) Slick Extensions (slick-extensions) Slick 3.0.0 documentation - 01 Introduction Permalink to Introdu
久々にPlay FrameworkいじっているついでにPlay-Slick導入して、ただJSONをPOSTしてJSONを返すだけの簡単なサービスを書いてみたら、変なところではまった。 // ユニークになるとは限らないクエリ val q1 = tbl.filter(_.name === name).map(_.color) val q2 = tbl.filter(_.name === name).map(_.color).take(1) // これは通る q1.update("#cccccc") // これは通らない q2.update("#cccccc") 更新したい行は一行なのでtakeしたのがまずかった様子。全部書き換えるのが普通だろうし、検索条件の時点で更新したい行しか取れないよう設定しておけということか。 ちなみに、後者を実行するとこんなスタックトレースを吐かれた。 私の英語力では
Even though it hurts my brain a little bit, learning Scala has been a pleasurable part of my job lately. It definitely isn’t for the faint-hearted but it has taught me a lot about thinking precisely about the topics of immutability and shared state. The functional mindset forces you to think mainly about input and output of functions and this training, I feel, makes me a better programmer even whe
val hello = Action { Ok("hello") } def echo = Action { request => Ok("Got [" + request.body + "]") } なお、対象のPlay Frameworkのバージョンは2.3.2。 はじめに Actionがやることは一言でいうとHTTPリクエストを受け取ってHTTPレスポンスを返す、要はこれ。 Play Frameworkでこれを実施するにあたってHTTPリクエストとHTTPレスポンスに該当するものを先に整理しておく。 HTTPリクエスト play.api.mvc.RequestHeader play.api.mvc.Request RequestはRequestHeaderを継承しており、両者の違いは前者がbodyなし、後者はbodyありということ。 以下のように記述した際のrequestの型はリクエ
はじめに DB(Scheme)マイグレーションツールを使うにあたって,いろいろ調べたことをまとめて置こうと思う. 基本的には,EvolutionsとFlyway焦点をあててます. この2つのどちらを採用すればよいかを考えるために調査しました. 実績や運用時の失敗などがあれば教えていただけると幸いです. DBマイグレーションツールとは何をするものなのか DBマイグレーションとはDBMSの移行をすることで(例えばMySQLからPostgreSQLへ移行するとか), それをサポートするツールのことを指す. この機能は,Railsでいち早く採用されたらしい(RubyにはMigr8というのがある). しかし,調べているとDBMSの移行という意味よりも, TABLEのSchemeマイグレーションのことを指して言っていることもあった. EvolutionsもFlywayもPlainなSQLファイルを使っ
紹介するプラグインについて この投稿で紹介するプラグインは何かのツール、言語、フレームワーク、サービスなどとintegrateする類のものは含まず、それ単体で便利に感じられるであろうプラグインに絞って紹介している。 (アルファベット順) A prevent pinned tabs from closing plugin - by momomo.com 固定したタブを閉じられなくするプラグイン。いらないタブを複数閉じようとすると間違って開いておきたいタブまで閉じてしまうことがある。それを防ぐことができるようになる。 AceJump 見えている範囲でカーソルを移動させたい場所にサッと移動させられるようにするプラグイン。慣れるとめちゃくちゃ速い。設定したショートカットで機能を起動すると1文字入力を求められ、入力するとその文字がある場所に飛ぶためのショートカットが画面に表れる(画像参照、これはst
はじめに 列挙型(Java の enum)を使いたいなあ。あれ、でも enum キーワードが無いみたいだぞ。 Scala を使いはじめた Java プログラマにとってはあるあるだとおもいます。 Scala で列挙型を表現する方法には、大きく分けて シールドクラス と Enumeration の二種類があります。字面だけを見ると Enumeration に飛びつきたくなりますが、一般的な用途には シールドクラス が多く使われます。今回はこのシールドクラスを使って列挙型を表現する方法を探っていきましょう。 目次 シールドクラスを使ってみよう sealed / case object による列挙型 値を持った列挙型 まとめ シールドクラスを使ってみよう シールドクラス は、次のように定義します。 sealed abstract class Idol sealed 修飾子がつけられたクラスは、同一
Ordered and Ordering Scalaには2値の比較を扱うtraitがあります。一つはComparable[T]を継承しているOredered[T]、もう一つはComparator[T]を継承しているOrdering[T]です。 Comparable[T]はjava.util.Comparable、Comparator[T]はjava.util.Comparatorに対応しており、前者はcompareTo(t)を、後者はcompare(t1, t2)を持っています。つまり自分と他のオブジェクトを比較するか、2つのオブジェクトを比較するか、という点が異なります。 Ordered[T]を扱っていると、たまにOrderingへの変換に失敗した、というコンパイルエラーが出ることがあります。これがどうも気になったので、今回はOrderedとOrderingの関係を調べてみました。 A
Google グループでは、オンライン フォーラムやメール ベースのグループを作成したり、こうしたフォーラムやグループに参加したりすることで、大勢のユーザーと情報の共有やディスカッションを行うことができます。
チームでプログラムを作る場合、コードがバラバラだと何かと問題が起きてしまいがち。バグが起きたり、独自解釈で進めてしまって取り返しのつかないことになったりなど… そこで今回は、ScalaプロジェクトにScalariformを導入して、自動的にチームのコードを美しく均質なものにする方法を解説します。 by 株式会社クラフトマンソフトウェア 野澤 秀仁 コードの書き方がバラバラだとバグを産む 多くのプログラマは自分なりのコードの書き方を持っていると思います。プログラムをひとりで作っているうちは、自分のルールに従ってコードを書いていて問題はないのですが、チームで取り組むとなるとコードの書き方で問題が起こることがあります。 コードの書き方が違うせいでバグを生むことがあります。例えば、C言語風のシンタクスを持つ言語で、Aさんは if–elseif–elseのブレースを欠かさないことを自分ルールにしてい
Many people who are coming in to Scala first encounter the Option type, which may be thought of (among other things) as a type-safe null. They also encounter pattern matching as both a new and (relatively) powerful concept, but also one that is easy to understand. This leads to quite a lot of use of pattern matching and often excessively so in what I have observed. Particularly with a type as triv
scala-loggingを使ってみる 概要 例外の取り扱いをする場合にどれを使うのが適切なのかわからなくなったので、scala.util.control.Exceptionとscala.util.Try、両クラスの各機能をざっと使ってみる。 前半はscala.util.control.Exception, 後半はscala.util.Try。 allCatch optでOptionを戻り値に とりあえずallCatchですべての例外をcatchする処理を書く。 最も手軽に使えそうなのがopt。例外だったらNone、成功すればSome(x)を返す。 import scala.util.control.Exception._ def divide(x: Int, y: Int) = allCatch opt { x / y } var result = divide(0, 0) printl
2.0からScalaに対応したWebアプリ開発の人気軽量フレームワーク「Play」について解説し、Webアプリの作り方を紹介する入門連載。 ※本連載をまとめて読めるKindle向け電子書籍もあります。 Scala+Play 2.0でWebアプリ開発入門(終): Play2プラグインのインストールと使用と新規開発 2.0からScalaに対応したWebアプリ開発の人気軽量フレームワーク「Play framework」について解説し、Webアプリの作り方を紹介する入門連載。最終回は、Playを使ったアプリケーションを拡張させる仕組み、プラグインの使い方および開発方法を紹介します。(2014/1/28) Scala+Play 2.0でWebアプリ開発入門(11): Play2+nginx/Akka/WebSocketで高速双方向通信 Play framework 2.xを既存のWebサーバーと連携
はじめに この記事ではEmacsのEnsimeのインストール手順を紹介します。使い方などについては公式のドキュメントを参照していただければと思います。私もインストールしたばかりで、ほとんど使ってはいませんが、リファクタリングツールやデバッガーがあるようです。 前準備 OS環境 この記事ではVagrantboxの'ubuntu/trusty64'を使います。Discover Vagrant Boxes Atlas by HashiCorpにあります。次のようなコマンドを実行して0S環境を導入しました。 $ mkdir ubuntu $ cd ubuntu $ vagrant add box ubuntu/trusty64 $ vagrant init $ vagrant up # starts and provisions the vagrant environment $ vagrant
これも、一年前くらいの下書きを放出。 sbt経由でIntelliJを起動する方法があったが、sbtの起動がおそいので辛い気持ちがあった。 d.hatena.ne.jp もう、直接起動すれば良いのではないかということで、以下の関数を bashrc なり zshrc なりに追加する。 idea () { /Applications/IntelliJ\ IDEA\ 14.app/Contents/MacOS/idea $(cd "${1}" && /bin/pwd) } すると、カレントディレクトリの場合は idea . 、対象のディレクトリにあるプロジェクトを開きたい場合は idea foo/bar とすれば起動できる。 相対パスを絶対パスに変換してやらないと、ideaコマンドのあるディレクトリを元に起動してしまう。
はじめに こんばんは! 突然ですが、 Scala における fold と foldLeft はほとんど同じものだ!と思っていませんか? また、Scala の Option#fold メソッドを使って、何か不自然に思ったことはありませんか? 先に結論を述べますと、 fold メソッドと foldLeft メソッドは異なります(もちろん foldRight とも違いますよ!)。 「ちょっとだけ挙動に差が…」的な違いではなく、根本的に違います。 たまたま、 List#fold と List#foldLeft が(例外的に)似たような定義で、かつ(例外的に)似たような挙動をするため、誤った通説(全てのfold≒foldLeft)があったりなかったりするようです。少なくとも僕は、Scala を書くようになってからある一定の期間、全ての fold と foldLeft は同じものだと考えていました。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く