Lambdaカクテル

Common LISPが好きなWeb屋さんです 自宅サーバやフロントエンドもできます

scala

情報科提督のための、艦これで理解する「オブジェクト指向」

艦これってオブジェクト指向を説明するのにかなり優れた教材なのでは!?と思ったので、艦これを用いてオブジェクト指向を説明したいと思います。内容は簡単にしているので正確には間違っている箇所があるかもしれませんが、ご容赦ください。 事の成り行き T…

Play framework 2.3.xでShift_JISのリクエストを扱う方法

要点 Play framework 2.3.xとUTF-8について解説します Shift_JISでパーセントエンコードされたデータを扱う事の困難性を解説します 実際にPlay framework 2.3.xで上記のデータを受け取る方法について解説します Play frameworkとUTF-8 Play framework 2.3.x(…

SBTプロジェクトのバージョンに"-SNAPSHOT"を付加する理由

SBTに限らないことかもしれないが、g8のようなテンプレートを利用してSBTプロジェクトを作成すると、バージョン名のデフォルトがX.Y.Z-SNAPSHOTとなっていることがある。この理由が分かったのでメモ。 要点 Ivy2はローカルなレポジトリのキャッシュを保有し…

ScalaからJGit経由でGitを叩く

ScalaからGitを触るには、Java用ラッパーのJGitを使うのがベストっぽいです。 勉強がてらサンプルを作ったのでおシェアします。 windymelt/exercise-scala-jgit windymelt/exercise-scala-jgit · GitHub 感想 jQueryを彷彿とさせるメソッドチェインでレポジ…

Scala開発を始める人におすすめのScala関連情報サイトをまとめてみた

id:masawadaにScala+Playのおすすめ情報サイトを聞かれたのでまとめてみる。随時追加の方針です。 @windymelt Scala+Playしたいのだけど、オススメの情報サイトとかありますか?なお、Scala未経験です。— Masayoshi Wada (@masawada) December 4, 2014 追記…

環境非依存のMacで動く艦これブラウザを作ることにした

あくまで実験として遊んでみる。公開はある程度形になったらしてみたい。WindowsにはKanColleViewerがあるが、Macでは動かないのでこちらでも劣らないものを作ってみたい。ついでにAngularJSも勉強する。

Scala+Sprayで簡易キャッシュ付きプロキシを作ってみた

先日書いた記事でプロキシを作ると言っていたが公開していなかった。 ScalaでHTTPプロキシを作ることにした - Lambdaカクテル ScalaでHTTPプロキシを作ることにした - Lambdaカクテル できた。 windymelt/lacquer windymelt/lacquer · GitHub デフォルトでは…

ScalaでHTTPプロキシを作ることにした

リバースプロキシに興味がある……というより、画像が含まれるサイトの表示を効率化したかったので作ってみることにした。HTTP proxy自体の仕組みは簡単で、ブラウザが本来の通信したいサーバに送られるはずのリクエストを代わりにproxyサーバに送るだけで実現…

私立プログラミングキャンプに行ってScala+PlayでWebSocket通信してみた

どうも。Windymeltです。 僕は今はてなサマーインターンで京都に滞在しており、id:masawadaが私立プログラミングキャンプのお誘いをしてくれて僕も参加してきたのでそのレポートです。 私立プログラミングキャンプははてなオフィスで行われたため迷わず会場…

Play 2.2.1でSlick 2.0.1を使ったときにつまづいた点など

先日P2P2chのデータベースフレームワークをAnormからSlickに移行した。 AnormはプレインなSQLを直接記述するスタイルで、O/Rマッパーの機能は有していないが、率直な記述が可能だ。 SlickはTypesafe社が主に開発していて、Scalaのコレクションのようにデータ…

play distで作成したartifactにtypesafe-configを注入する

ども。今回はPlay Framework 2.2.xのdistコマンドで生成される成果物の扱いに関してのお話です。 まとめると distすると後からconf/以下のファイルを編集しても意味無し -Dconfig.file=で指定すると読んでくれる 二つ以上の.confを読ませるとハマることがあ…

野良Play! FrameworkをPaaSにデプロイするはなし

おひさしぶりです。 さて、懲りもせずにP2P2chのコードを書いておりまして、デプロイとCIを自動化したいな〜などと思ったのでPaaSを色々と調べた。 昔Herokuで実験したが、向こうが用意したPlay frameworkしか使うことができず、こちらがコンパイルしたもの…

ScalaでDIしようとしたら早速つまづいた

Scalaで作成中のアプリケーションで、DI(Dependency Injection)をしようとしているという話。 簡単に書けるだろうと高をくくっていたら、無惨にも書けなくなってしまったという話でもある。 DIとは? DI -- Dependency Injectionとは、訳せば依存性の注入。…

scalazのunfoldで失敗漸化式

scalazではfoldの逆操作としてunfoldが用意されている。 この関数は初期値と B => Option[(A, B)]の関数を取り、そのタプルのB成分を再び関数に適用していくことで、Aから成るStreamを構成する。 Githubのscalaz/core/src/main/scala/scalaz/StreamT.scalaに…

ScalazのKleisliの★

最近やっとの事で@yuroyoroさんや@xuwei_kさん、そして@eed3si9nさんたち先人のブログをかじってMonadicな関数を合成するやり方が分かりました。とりあえず`A => M[B]`な感じの関数を`kleisli(function)`みたいに書くと`reduce(>=>)`みたいな書き方ができる…

Akka-remoteでNAT越え

Akka-remoteを利用して、NATを越えたメッセージングを実現するための方法。 Akka-remoteにおいてホスト名を指定するakka.remote.netty.tcp.hostnameには、マシンが認識する名前であるプライベートアドレスもしくはFQDNしか指定することができず、グローバル…

Herokuにplayアプリケーションをデプロイしたら色々つまづいた

#このエントリは書きかけです。自作のWebアプリケーションを公開・稼動させてはみたいが、自前でサーバを調達するのも嫌だし、LinuxだのJVMだのをインストールするのも嫌だという不精者の私であるが、そんな私のためのサービス..PaaS(Platform as a Service)…

State monad in Scala via Scalaz

ScalazのStateモナドを使う機会があったのでメモ。 Stateモナドとは? 状態を含む計算を簡潔に記述する方法 しかもモナド たとえばこのような処理があったとする。 def foo(arg: Int): Int = { val s1 = arg + 10 val s2 = s1 * 2 val s3 = s2 - 4 s3 } 何度…

ScalaでAkkaのSTMを使う その1(Agents)

Akkaでアプリケーションを開発していて、ついにSTMを使う機会があったので、メモを兼ねてこの記事を書きます。 AkkaのDocumentationを訳しました。

ENSIMEで(cyclic-function-indirection char-valid-p)エラー

Emacs用Scala入力支援ライブラリであるENSIMEをセットアップしていたら、Emacsが次のようなエラーを吐いた。 . . . (cyclic-function-indirection char-valid-p) 最初はENSIMEのバグかなにかと必死で考えてみたが、検索しても一件もヒットしないので困ってい…

Akkaのコンフィギュレーションについての覚書

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-basedなライブラリのコンフィギュレーションの場所

以前からAkkaを利用したアプリケーションを作成しているのですが、Configurationの概念をうまく理解できていません。 まず、DHT((分散ハッシュテーブル))を実現するためのライブラリをAkkaとScalaで作成しました。P2PChordというライブラリです。 これが…

Akkaは許してくれないが受け入れてはくれる

Actorの挙動が奇妙奇天烈(おまえがわるい)ので苦しんでいます。 状況 Actorにメッセージを送り、変数(ケースクラス)の内容の一部をごにょごにょして返す 症状 勝手にActorが分身してる インスタンスを生成してるから変数が初期化されてる 初期化されたケ…

なにもしないStateモナド

こんにちは。for式でStateをチェインさせたら面倒なことになりまして。 def proc: State[A, Unit] = { for { st <- get[A] _ <- someActor ! someMessage _ <- println("ほげほげ") st3 <- get[A] } yield st3 } ここの、 _ <- someActor ! someMessage _ <-…

implicit defでインスタンスを変換する

ある型Baseを引数に取るようなコンテクストで他の型のインスタンスを使おうとすると、当然、通常ならばコンパイラがエラーを吐く。 //example class DrinkContent(receipt: String) { val receiptVal = receipt def drink = {System.out.println(receiptVal)…