( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

scala

(もりそば)Scalaによる高階型変数 - Higher-kind Generics

「ハイヤーーーーーッッ!!!」 と気合いを入れたところで、今日はScalaのコレクションライブラリで多用されている、Higher kind genericsについて軽く解説したいと思いハイヤーーーーーッッ!!! Higher-kind Generics(type constructor parameter)って? …

Scalaのバージョンを簡単に切り替えられる"svm"ってヤツ作った (冷やし中華終わりました)

まぁタイトルの通りなんですが(冷やし中華は終わってます)、RubyだったらrvmとかPythonだったらvirtualenvとか、使うバージョン切り替えられるヤツあんじゃないスカ? Scalaでもあったらいーなーと思ってシェルスクリプトで書きました。Scalaの場合は、依存ラ…

Scalaのtrunkをビルドする

「あばばばばばばばば」この記事は、Scala Advent Calendar jp 2010 : ATNDの17日目です。 今日は、Scalaそれ自身をソースからコンパイルする方法を紹介します。やりかたは簡単で、Scalaのソースコードを持ってきて、antコマンドでビルドするだけです。 Scal…

JRebelを使った動的クラスリローディング

「あばばばばばばばば」 はい、この記事は、「じゃば あばばばば かれんだー - 邪 2010」の9日目、12/21日のものですのよ? 昨日は、id:nekopのBytemanによるJava黒魔術 - nekopの日記でした。このBytemanが利用している「Java(TM) java.lang.instrument」を…

自動的に閉じるSource

テキストファイルをオープンして内容を出力する - ブログタイトル入力 を読んで。 自分ならLoanPattern使ってこう書くかな? type Closable = { def close():Unit } def using[A <: Closable,B]( resource:A )( f:A => B ) = try { f(resource) } finally { resource.close } こんなかんじで使う。</:>…

Scalaの抽象構文木(abstract syntax tree、AST)をグラフィカルに表示するオプション

「そんなASTで大丈夫か?」 ということで、ほとんどの言語はプログラムの内部表現として抽象構文木(abstract syntax tree、AST)を作ると思います。Scalaももちろんコンパイルするときに作ります。 で、Scalaコンパイラが生成してるASTを見るオプションがあ…

「HTMLスクレイピング in Scala」を改造しながら俺流Scalaコーディング手法を紹介してみる

短い中にいろいろなエッセンスが詰まったよいサンプルだと思ったので、id:noire722さん(@noire722)が書いた「HTMLスクレイピング in Scala」を、俺流に書き直してみました。 HTMLスクレイピング in Scala その2 - cignoir の日記 書き直す過程でどういう考え…

Scalaで&lt;:&lt;とか=:=を使ったgeneralized type constraintsがスゴすぎて感動した話

Scala2.8から、Predefに

Scala座#01で「これまでのScala これからのScala」という発表をしたんだぜ

名古屋で開催された第一回Scala座に酸化してきました。 俺は最初の発表で、「これまでのScala これからのScala」というタイトルでScalaの紹介とか2.8で追加された機能とかScalaの今後とかcase classと寧々さんとか#librabackとかについて話しました。 これま…

ATNDでTwitter連携を設定している人のTwitterIDを抜き出すスクリプト書いたよ

ATNDがTwitterと連携できるようになりましたね。そこで、イベントの参加者のTwitterIDを抜き出すスクリプト書きましたよ。 object ATNDEventTwitterList { def main( args:Array[String] ) = { args.headOption.foreach { eventId => ATNDApi.event( eventId…

LL TigerのLanguage UpdateでScalaの話をしてきました

はい こんにちわ。ゆろよろです。LL TigerのLanguage UpdateでScalaの話をしてきました。スライドはこちらっす。 20100731 LL Tiger Language Update ScalaView more presentations from yuroyoro. 2.8.0.finalでの機能追加について詳しく説明してもよかった…

Scalaでの例外処理 - Either,Option,util.control.Exception

今日はScalaの例外処理について解説しますよ。 基本 - try,catch,finally 例外処理の基本は、try,catch,finallyです。これはJavaと同じですね。 ただし、Scalaでのtry,catch,finallyは値を生成します。つまり、実行されたブロックの値が評価されます。 scala…

ScalaのOptionステキさについてアツく語ってみる

今日は、ScalaのOptionの使い方について解説しますよ。OptionはScala使いにとってはなくてはならないものです。これを覚えてしまうと他の言語でもOptionを作りたくなる、かもしれない? Optionってなに? Option型は、値があるかないか分からない状態を表すも…

パターンマッチをもっと便利に - extractor(抽出子)による拡張

パターンマッチは便利すぎてこれを覚えてしまうと他の言語でも欲しくてたまらなくなりますね。 Scalaのパターンマッチは、実はユーザーが独自のパターンを定義することが可能になっています。 extractor(抽出子)によるパターンの拡張 簡単な例を紹介します。…

Scalaの奇妙なFizzBuzz - PartialFunctionとimplicit conversionを添えて

前回書いたPartialFunctionの利用例として、奇妙なFizzBuzzを書いてみましたよ。 // PartialFunction[A,B]を "A --> B"のように書けるようにしておく type -->[A,B] = PartialFunction[A,B] // FizzBuzz用のPartailFunctionを生成するユーティリティ def toP…

ScalaのPartialFunctionが便利ですよ

Scalaには、PartialFunctionというものがあります。 直訳すると部分関数ですが、これはなにかっていうと「特定の引数に対しては結果を返すけど、結果を返せない引数もあるような中途半端な関数」です。 どうやって使うのん? まぁ、ちょっと例を見てましょう…

プログラミング言語 「天使ちゃんマジ天使」と「ブブゼラ」を作ってみたよ

今AngelBeats!見てます。天使ちゃんマジ天使でいいと思います。 で、だいぶ前に作ったScala版のちょっと草植えときますね型言語 Grassを改造して、プログラミング言語 「天使ちゃんマジ天使」とプログラミング言語 「ブブゼラ」を作ってみたよ。 Grassは、id…

1階マルコフ連鎖で奇声を発するジェネレータ

今日は、とうとつについったーに奇声をポストしたい気分だったので、1階マルコフ連鎖で奇声を生成するジェネレータを書いてみました。 奇声なんで意味のある文章ができなくても充分なので、1階マルコフ連鎖で充分。マルコフモデルを研究していた元首相のご意…

ついったーのStreaming API ChirpUserStreamとWebSocketを組み合わせてみた

最近の流れでは、時代はHTML5なんですかね? そんなわけで、前にちょっとやってみたJetty7のWebSocketと、ついったーのStreaming API ChirpUserStreamを組み合わせて簡単なWebベースのついったクライアントを書いてみました。 スクリーンショット: 動いている…

GAE/JでのScalaのSpinUp時間を計ってみた

GAE/JでのScalaのSpinUp時間を計ってみました。appengine ja night #6 Beer Talk : ATNDでLTしたときに言っちゃいましたのでね。 java-ja温泉第2回の成果その1ですお。 測定方法 測定パターンは以下の4パターンです。 simplescala Scalaで書いた単純なFilter…

Slim3をScalaで動かすためのいろいろ

「EXILEはクラウド!」 ではなく、appengine ja night #6 Beer Talk : ATNDで発表した内容です。 Slim3をScalaで動かすためのブランクプロジェクトと、ScalaのController/Serviceを生成するSlim3-gen-scalaを作りました。 yuroyoro/slim3-scala-blank · GitHu…

Scala的な考え方 - Scalaがとっつきにくいと思っている人へ

Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやって…

Jetty7のWebSocketをScalaから使う

HTML5っ!WebSocketっ!サーバーからプッシュでっ! やりますよscalaで。とはいえ、Javaでも同じなので、Javaでやってみようって人にも参考になるかも? サーバーの実装 サーバ側の実装は、要点をまとめるとこんな感じです。 org.eclipse.jetty.websocket.WebSoc…

GAE/JでScalaとSlim3使って恵方を知ることができるサービス作ったよ(誰得?)

Google App EngineでScalaとSlim3使ってヘンなサービス作りました。 恵方's - 恵方ってどっちよ? なんと! 今年の恵方だけでなく、去年や来年の恵方までわかってしまう画期的なサービスです!! Google App EngineでScalaとSlim3の話は、appengine ja night #6 …

NetBeansとScalaを使ってAppEngineたんといちゃいちゃする方法

俺「新しいアプリだよ。さぁ、デプロイするからAppSlotを解放するんだ…!」 appengineたん「で、でぷろい…ですか…?こんなおっきなあぷり…は、入るかな…?」 俺「今日はScalaを使ったアプリケーションなんだよ」 appengineたん「Scalaなんて…そんな変態的なこと…

Scala hack-a-thon #2 開催しました。

Scala hack-a-thon #2、無事終了しました。 参加された皆さん、本当に有り難うございました。 やっぱり、誰もしゃべらず黙々とコード書いたり資料読んだりで、まじで「絶対にしゃべってはいけない Scala hack-a-thon」でした。 しかし、みなさんそれなり楽し…

Scala hack-a-thon #2に参加される皆様へ

えと、もう明日なんですが、2月20日(土)に、Scala hack-a-thon #2が開催される予定となっております。 Scala Hack-a-thon #2 : ATND つきましてはですね、主催である私目から皆様へ、どのような趣旨のイベントなのかと、いくつかのお願いをこの場を借りてさ…

草生やす関数

草生やしたいときに def www( s:String ):String = { import scala.util.Random val rnd = new Random( ) val ws = List( "w","W","w" ) def w(n:Int):String = ( 0 - n) until rnd.nextInt(3) map { i => ws( rnd.nextInt( ws.size -1 ) ) } mkString ("ち…

ちょっとした問題。Listから要素を検索して残りの要素数を返す。どう書く?

ちょっと面白い問題を見つけたので、俺も解いてみました。 Blog not found 仕様はこうです。 あるListから要素を探し、該当する要素を除いた残りの要素数を返す。 ただし、要素がListに存在しない場合は-1を返す。 1の仕様だけなら、単純にList#dropWhileし…

恵方を算出するScalaライブラリ

もう誰得よ?って感じですが作りました。恵方って、4パターンしか無いんですね。 // http://ja.wikipedia.org/wiki/恵方#.E6.81.B5.E6.96.B9 object 恵方{ import java.util.{Date,Calendar} def 今年の恵方 = この年の恵方は_?( Calendar.getInstance ) def …