scala
艦これってオブジェクト指向を説明するのにかなり優れた教材なのでは!?と思ったので、艦これを用いてオブジェクト指向を説明したいと思います。内容は簡単にしているので正確には間違っている箇所があるかもしれませんが、ご容赦ください。 事の成り行き T…
要点 Play framework 2.3.xとUTF-8について解説します Shift_JISでパーセントエンコードされたデータを扱う事の困難性を解説します 実際にPlay framework 2.3.xで上記のデータを受け取る方法について解説します Play frameworkとUTF-8 Play framework 2.3.x(…
SBTに限らないことかもしれないが、g8のようなテンプレートを利用してSBTプロジェクトを作成すると、バージョン名のデフォルトがX.Y.Z-SNAPSHOTとなっていることがある。この理由が分かったのでメモ。 要点 Ivy2はローカルなレポジトリのキャッシュを保有し…
ScalaからGitを触るには、Java用ラッパーのJGitを使うのがベストっぽいです。 勉強がてらサンプルを作ったのでおシェアします。 windymelt/exercise-scala-jgit windymelt/exercise-scala-jgit · GitHub 感想 jQueryを彷彿とさせるメソッドチェインでレポジ…
id:masawadaにScala+Playのおすすめ情報サイトを聞かれたのでまとめてみる。随時追加の方針です。 @windymelt Scala+Playしたいのだけど、オススメの情報サイトとかありますか?なお、Scala未経験です。— Masayoshi Wada (@masawada) December 4, 2014 追記…
あくまで実験として遊んでみる。公開はある程度形になったらしてみたい。WindowsにはKanColleViewerがあるが、Macでは動かないのでこちらでも劣らないものを作ってみたい。ついでにAngularJSも勉強する。
先日書いた記事でプロキシを作ると言っていたが公開していなかった。 ScalaでHTTPプロキシを作ることにした - Lambdaカクテル ScalaでHTTPプロキシを作ることにした - Lambdaカクテル できた。 windymelt/lacquer windymelt/lacquer · GitHub デフォルトでは…
リバースプロキシに興味がある……というより、画像が含まれるサイトの表示を効率化したかったので作ってみることにした。HTTP proxy自体の仕組みは簡単で、ブラウザが本来の通信したいサーバに送られるはずのリクエストを代わりにproxyサーバに送るだけで実現…
どうも。Windymeltです。 僕は今はてなサマーインターンで京都に滞在しており、id:masawadaが私立プログラミングキャンプのお誘いをしてくれて僕も参加してきたのでそのレポートです。 私立プログラミングキャンプははてなオフィスで行われたため迷わず会場…
先日P2P2chのデータベースフレームワークをAnormからSlickに移行した。 AnormはプレインなSQLを直接記述するスタイルで、O/Rマッパーの機能は有していないが、率直な記述が可能だ。 SlickはTypesafe社が主に開発していて、Scalaのコレクションのようにデータ…
ども。今回はPlay Framework 2.2.xのdistコマンドで生成される成果物の扱いに関してのお話です。 まとめると distすると後からconf/以下のファイルを編集しても意味無し -Dconfig.file=で指定すると読んでくれる 二つ以上の.confを読ませるとハマることがあ…
おひさしぶりです。 さて、懲りもせずにP2P2chのコードを書いておりまして、デプロイとCIを自動化したいな〜などと思ったのでPaaSを色々と調べた。 昔Herokuで実験したが、向こうが用意したPlay frameworkしか使うことができず、こちらがコンパイルしたもの…
Scalaで作成中のアプリケーションで、DI(Dependency Injection)をしようとしているという話。 簡単に書けるだろうと高をくくっていたら、無惨にも書けなくなってしまったという話でもある。 DIとは? DI -- Dependency Injectionとは、訳せば依存性の注入。…
scalazではfoldの逆操作としてunfoldが用意されている。 この関数は初期値と B => Option[(A, B)]の関数を取り、そのタプルのB成分を再び関数に適用していくことで、Aから成るStreamを構成する。 Githubのscalaz/core/src/main/scala/scalaz/StreamT.scalaに…
最近やっとの事で@yuroyoroさんや@xuwei_kさん、そして@eed3si9nさんたち先人のブログをかじってMonadicな関数を合成するやり方が分かりました。とりあえず`A => M[B]`な感じの関数を`kleisli(function)`みたいに書くと`reduce(>=>)`みたいな書き方ができる…
Akka-remoteを利用して、NATを越えたメッセージングを実現するための方法。 Akka-remoteにおいてホスト名を指定するakka.remote.netty.tcp.hostnameには、マシンが認識する名前であるプライベートアドレスもしくはFQDNしか指定することができず、グローバル…
#このエントリは書きかけです。自作のWebアプリケーションを公開・稼動させてはみたいが、自前でサーバを調達するのも嫌だし、LinuxだのJVMだのをインストールするのも嫌だという不精者の私であるが、そんな私のためのサービス..PaaS(Platform as a Service)…
ScalazのStateモナドを使う機会があったのでメモ。 Stateモナドとは? 状態を含む計算を簡潔に記述する方法 しかもモナド たとえばこのような処理があったとする。 def foo(arg: Int): Int = { val s1 = arg + 10 val s2 = s1 * 2 val s3 = s2 - 4 s3 } 何度…
Akkaでアプリケーションを開発していて、ついにSTMを使う機会があったので、メモを兼ねてこの記事を書きます。 AkkaのDocumentationを訳しました。
Emacs用Scala入力支援ライブラリであるENSIMEをセットアップしていたら、Emacsが次のようなエラーを吐いた。 . . . (cyclic-function-indirection char-valid-p) 最初はENSIMEのバグかなにかと必死で考えてみたが、検索しても一件もヒットしないので困ってい…
Sometimes it can be useful to include another configuration file, for example if you have one application.conf with all environment independent settings and then override some settings for specific environments. Akka manual (2.9.4 Including…
以前からAkkaを利用したアプリケーションを作成しているのですが、Configurationの概念をうまく理解できていません。 まず、DHT((分散ハッシュテーブル))を実現するためのライブラリをAkkaとScalaで作成しました。P2PChordというライブラリです。 これが…
Actorの挙動が奇妙奇天烈(おまえがわるい)ので苦しんでいます。 状況 Actorにメッセージを送り、変数(ケースクラス)の内容の一部をごにょごにょして返す 症状 勝手にActorが分身してる インスタンスを生成してるから変数が初期化されてる 初期化されたケ…
こんにちは。for式でStateをチェインさせたら面倒なことになりまして。 def proc: State[A, Unit] = { for { st <- get[A] _ <- someActor ! someMessage _ <- println("ほげほげ") st3 <- get[A] } yield st3 } ここの、 _ <- someActor ! someMessage _ <-…
ある型Baseを引数に取るようなコンテクストで他の型のインスタンスを使おうとすると、当然、通常ならばコンパイラがエラーを吐く。 //example class DrinkContent(receipt: String) { val receiptVal = receipt def drink = {System.out.println(receiptVal)…