5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

プログラミング言語 Scala 3冊目

1 :デフォルトの名無しさん:2009/12/26(土) 07:24:16
The Scala Programming Language
ttp://www.scala-lang.org/

リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99

前スレ
プログラミング言語 Scala 2冊目
http://pc12.2ch.net/test/read.cgi/tech/1246289771/


834 :デフォルトの名無しさん:2010/05/15(土) 12:43:25
Scalaの話からめてるだろ。
バカなのか?

835 :デフォルトの名無しさん:2010/05/15(土) 12:51:27
今までよく頑張った
もう休め

836 :デフォルトの名無しさん:2010/05/15(土) 19:26:19
>819

高速Scalaコンパイル fsc を使ってみてもだめ?

837 :デフォルトの名無しさん:2010/05/15(土) 22:11:36
ワンライナーなので、インタプリタだと思ってみた。

ワンライナーにはならないけど、コンパイルすると、
fscでソース読み込みの時点で(windows 2GHz 1coreで)1秒以上はかかるかな。

ただ、コンパイル後は、そんなに気にしないでいいから、
やっぱり、立ち上げたままのREPL環境とコンパイル組み合わせるのが、向いてると思う。

ワンライナーで使うなら、lispみたいに起動時のメモリイメージから再開とか、
REPL起動まで先読みしきったAOT環境が、あればいいんだろうな。

838 :デフォルトの名無しさん:2010/05/15(土) 22:30:11
GAEは使えるとして、GAE以外にもっといい動作環境ないかな?
「GAEは不安定で使えない」、「GAEはお勧めしない」とかいう批判は出てくるんだけど、具体的な代案が出てこないんだよね。
Opera UniteってServletコンテナじゃないよね。 >>830
みんな何で動かしてんの?ローカルのTomcatで自己満足?

839 :デフォルトの名無しさん:2010/05/15(土) 22:43:46
VPSでTomcatって出てきてるのはスルーなのか

840 :デフォルトの名無しさん:2010/05/15(土) 23:07:57
Scala\(^o^)/オワタ

841 :デフォルトの名無しさん:2010/05/15(土) 23:46:12
そもそもタダでServletを常時オンラインにしておける環境なんてものは基本的にない。
GAEは初期費用はいりませんてビジネスモデルなだけ。

842 :デフォルトの名無しさん:2010/05/15(土) 23:56:58
http://www.stax.net/

843 :838:2010/05/16(日) 00:11:09
>>839
VPSでTomcatって、かなり抽象的だよね?

具体的には、ググってみると
http://www.zone-express.jp/order
このへんか?(宣伝ではない。たまたま日本語で読みやすかっただけ)
月¥2,600円(3ヶ月間限定¥1,300/月)
256MだからDBとか考えるとヒープは64mぐらいか。
うーん。運用するんだったら、もう一ランク上のプランか。
月5000円ぐらい払えば自由なScala環境が手に入るということだね。

また荒れちゃうかもしれないけど、貧乏性な俺はGAEで研究して、サービスもGAEでリリースすることにしよう。

844 :デフォルトの名無しさん:2010/05/16(日) 00:13:28
VPSなら月額1200円年額12000円とかあるしな。

845 :デフォルトの名無しさん:2010/05/16(日) 00:19:19
いまどき450円/月だよ

846 :デフォルトの名無しさん:2010/05/16(日) 00:20:39
実験するだけならEC2を一時的に立ち上げるとか
そもそも、自宅サーバでいいし、いろいろ分けたいなら仮想化すればいい。

ttp://www.mochahost.com/java.php
なんかあるなとおもったら、たいへんだね。最近はどうなんだろう。
ttp://blogs.yahoo.co.jp/girafflex/1069442.html

847 :デフォルトの名無しさん:2010/05/16(日) 00:29:50
http://dream.jp/vps/
メモリ256MB HDD10GB 490円/月 3か月無料
http://www.saases.jp/hosting/hos_006.html
メモリ512MB HDD50GB 450円/月 初期費用3000円

ほんとだ。

848 :838:2010/05/16(日) 00:46:39
GAEを使う宣言したばかりなのだが、かなり安いVPSあるんだね。これなら小遣いから出せるかも。
stax.netはどうやって使うのか、いまいち、わからなかったが、scala liftという選択肢があった。料金が従量制のようだが。

849 :デフォルトの名無しさん:2010/05/16(日) 02:47:53
GAEは知ってるのにVPSって聞いてググらないとわからない人いるのか

850 :デフォルトの名無しさん:2010/05/16(日) 03:01:37
可用性のことを考えるとやっぱりGAE

851 :デフォルトの名無しさん:2010/05/16(日) 09:30:43
>>842

レジストして、新規アプリケーション作ると、「Scala and Lift」があった。

内部で、mavenリポジトリがあって、scalaとlift追加してあるのか。
http://developer.stax.net/profiles/blogs/new-stax-maven-archetype-for
http://wiki.stax.net/w/index.php/Maven_Scala

http://www.atmarkit.co.jp/fjava/rensai4/devtool05/devtool05_1.html

StaxはEC2ベースなんだね。Morph AppSpaceってのは終了したのか。
VMforceは秋から開発者向け用意するけど、ミニマムの無償版はあるんかな。

852 :838:2010/05/16(日) 10:51:10
>>849
>GAEは知ってるのにVPSって聞いてググらないとわからない人いるのか
俺に言ってんの?VPSの言葉の意味ぐらい俺だって知ってるよ。
VPSとGAEて言葉の抽象度のレベルが違うよね?GAEはGoogleが出しているサービス名だよね?VPSは各社が出しているサービスの総称だよね?
だから具体的じゃねぇっていったんだよ。分かった?
ググったのはServletが使えるVPSのサービスの価格を調べるため。

あーまた話がずれてきた。こういう発言は通常スルーすべきなの?

853 :デフォルトの名無しさん:2010/05/16(日) 11:09:57
>>852
お前は少し落ち着いて半年ROMるべき

854 :デフォルトの名無しさん:2010/05/16(日) 12:22:24
>>853
てかお前は何様だ

855 :デフォルトの名無しさん:2010/05/16(日) 12:30:22
VPSの意味やっぱ解ってなかったようだな。

856 :デフォルトの名無しさん:2010/05/16(日) 13:41:11
ここ最近スレの質が大きく下がったな
子供が触る言語じゃないだろうに・・・

857 :デフォルトの名無しさん:2010/05/16(日) 13:42:45
Twitterに採用されたって報道されて荒らしに来た奴がいるんだろ。

858 :デフォルトの名無しさん:2010/05/16(日) 16:23:20
> あーまた話がずれてきた。こういう発言は通常スルーすべきなの?

ごめんな。俺たちがお前をスルーすべきだった

859 :デフォルトの名無しさん:2010/05/16(日) 17:19:52
matzはオブジェクト指向とか関数型以前に動的なことを重視してるみたいだから
話すだけ無駄だと思うんだけどな
動的言語原理主義なのにちょくちょくScalaの文句を言うのはどうかと思うけど

860 :デフォルトの名無しさん:2010/05/16(日) 17:33:29
>ググったのはServletが使えるVPSのサービスの価格を調べるため。

VPSなんだから勝手にTomcatインストールすればいいだけだな。
メモリ128Mみたいな極端に少ないサービス以外なら普通に動くし。
しかしまたマイナーなサービス引っ張り出してきたもんだな。
ZoneExpressなんて初めて見た会社だわ。

861 :デフォルトの名無しさん:2010/05/16(日) 23:32:16
Googleまた個人情報の不始末かよ

862 :デフォルトの名無しさん:2010/05/17(月) 02:12:51
>>859
動的な言語ってそんなにいいかねえ
ちょっとスペルミスっただけでわかりにくいバグになるって印象しかないわ
今だと静的に型が決まる言語だと、IDEが発達しててスペルミスしても
赤く表示してくれるしね
それになれちゃうと、動的言語はとてもじゃないけど使えない

863 :デフォルトの名無しさん:2010/05/17(月) 02:27:57
動的か静的かはもう宗教論じゃね
唯一神なのか多神教なのかみたいな

864 :デフォルトの名無しさん:2010/05/17(月) 03:30:02
ちょっと前までは、言語オタク的には動的言語マンセーな流れだったけど
Eclipseが登場して流れが変わったな
IDEが静的言語のデメリットを覆して、強力なメリットを付加したからな

865 :デフォルトの名無しさん:2010/05/18(火) 21:10:41
>862
テスト時間がコンパイル時間より長くなったりするしな

866 :デフォルトの名無しさん:2010/05/19(水) 00:25:17
動的言語だと、適当に始めてリファクタリングしてって進めたいのに、
リファクタリングの面倒くささが、静的言語の比ではないってのが。

867 :デフォルトの名無しさん:2010/05/19(水) 01:40:57
置換サイキョー

868 :デフォルトの名無しさん:2010/05/19(水) 20:52:22
Dir.glob "*.jpg"

ってScalaでどうかくの

869 :デフォルトの名無しさん:2010/05/19(水) 23:02:30
>868

たしかにglobは欲しいな。

たとえば、こんなかなぁ

def glob(pathStr:String, reStr:String) =
for {
file <- new File(pathStr).listFiles
if (reStr.r.findFirstIn(file.getName) != None)
} yield(file)

使い方はこう
glob(".", ".*\\.jpg")

870 :デフォルトの名無しさん:2010/05/20(木) 15:08:22
f.listFiles.filter(...) のほうが好き。

871 :デフォルトの名無しさん:2010/05/20(木) 18:24:23
Optionとmatchで次のコード実行したら変な挙動するんだけど、
つまりどういう事だってばよ

scala> val l = List("hoge","fuga")
l: List[java.lang.String] = List(hoge, fuga)

scala> Some(List("fuga","fuga")) match{
| case Some(l) => println("NG")
| case _ => pritnln("OK")
| }
NG

scala> Some(List("fuga","fuga")) match{
| case Some(List("hoge","fuga")) => println("NG")
| case _ => pritnln("OK")
| }
OK

872 :デフォルトの名無しさん:2010/05/20(木) 19:00:56
むしろどう変なのかわからないけど、
matchの中のlはローカル変数になってるよ
比較したいならガードを使わなきゃ駄目

873 :デフォルトの名無しさん:2010/05/20(木) 19:02:58
>>871
case Some(l)で、Someで中身がlと同じってのを書きたかったんだろうけど、残念ながら、これだと、
任意のSomeにマッチして中身がlに束縛される、という意味になる。意図通りのことを書きたいなら
scala> val l = List("hoge", "fuga")
l: List[java.lang.String] = List(hoge, fuga)

scala> Some(List("fuga", "fuga")) match {
| case Some(`l`) => println("NG")
| case _ => println("OK")
| }
OK
みたいにする必要がある(変数名の部分を``で囲む)。

874 :デフォルトの名無しさん:2010/05/20(木) 19:13:04
バッククオート!そんな記法があったのか

875 :デフォルトの名無しさん:2010/05/20(木) 22:52:18
for(i <- 1 to 100)

みたいな式で、INT_MAX 回よりも多くループを回したいときどうすりゃいいの?
Seq の実装上の制約で 1 to 100 で作られる Seq の要素数は INT_MAX 個を超えられないっぽいのだけれど。
Stream[Long] を使うしかないの? Project Euler の Probrem 3 で早速つまってしまった。

876 :デフォルトの名無しさん:2010/05/20(木) 23:34:18
>>875
INT_MAX回を超えるようなループ回したい場合にStream使うと
ものすごい量のゴミが発生しそうな気がするので、性能考えると、
自前でIterableとかのサブクラス作った方が良いんではないかなあ。

877 :デフォルトの名無しさん:2010/05/21(金) 00:11:07
RichLongにto無いのか。

878 :デフォルトの名無しさん:2010/05/21(金) 00:25:43
>>876
なるほど、どうりで遅すぎるわけだ。

>>877
わかってるかもしれないけど、 RichLong に to あっても一緒のこと。
それで生成される Seq の要素数が問題で、要素の値が問題ではない。

879 :デフォルトの名無しさん:2010/05/21(金) 01:45:42
>>878
遅すぎるって事は、やり方が間違ってると思う。
そこそこ古いマシンだが、Streamでも再帰でも20ms位で終わったよ。

そもそも、その問題の空間計算量はO(1)だから、Seqの要素数は関係ないよ。

880 :デフォルトの名無しさん:2010/05/21(金) 02:23:45
>>875
自分ではProject Euler の Probrem 3をどうやってたかを見直してみたけど、
基本的には、
 Stream.from(3,2).takeWhile(_ < limit).map(_.toLong)
ってやってた。

>>876
REPLで試してみると、どんなに大きなlimitでも一瞬で返るし、
(実際に必要なものしか生成されないはずなので)無駄は無いと思う。

881 :デフォルトの名無しさん:2010/05/21(金) 03:11:10
√600851475143 < INT_MAXだから、Stream[Int]で足りる。

882 :876:2010/05/21(金) 09:43:36
>>880
Procject Eulerの問題が実際にStreamで事足りるかどうかは
実際にその問題を解いてないからわからないんだけど、原理的には
Streamを使うと大量のゴミが発生する。というのは、Streamって
要は

hd: A
tl: => Stream[A]

みたいな感じのtailの部分が遅延評価されるリストになってるわけ
だけど、ここからn番目の要素を取ってこようとすると、このhdとtl
を持ったセルn個分のゴミが発生する。どっかの変数がうっかり
Streamの先頭を指していない限りガベージコレクタによって回収される
はずなので、メモリ消費量のオーダが即座にO(n)になるわけじゃないけど、
とにかく大量のゴミが発生する事は間違いない。もちろん、tl部分が
評価されなければそのセルは生成されないわけだけど、今回の話だと
ループをn回ぶん回すというのが前提だったようなので。
一方、Iteratorなら(適切にspecializedアノテーションが付いてる
事を前提にすれば)、ゴミはほとんど発生しない。ということが
言いたかった。

883 :876:2010/05/21(金) 09:49:14
ちょっと追記。
>>880
の例
>Stream.from(3,2).takeWhile(_ < limit).map(_.toLong)
みたいな場合で、Streamの最初の方の要素しか使わないんだったら、
もちろん無駄な要素は生成されないので、Streamで十分というか
Streamの方が良いね。どういう問題だったかは見てないので、
それで良いのかは知らないのだけど。

884 :880:2010/05/21(金) 11:20:56
>>882

なるほど、Streamの途中を欲しい場合は、
{そこまでの)不要なものがゴミとして生成されちゃうんだね。
確かに、
 Stream.from(1).takeWhile(100000000).reverse.head
だと、OutOfMemoryになる。

ちなみに、さっきの
Stream.from(3,2).takeWhile(_ < limit)
だけど、Problem 3的にはlimitは√nのつもりだから
正しくは、
Stream.from(3,2)).takeWhile(_ <= limit)
です。><

あと881が行ってるように、
「√600851475143 < INT_MAXだから、Stream[Int]で足りる」ので
Streamを使ってProblem 3の答えはでるんだけど、

実際のところ
これって、本当にLong領域まで生成されるのか不安になってきた、
きちんと対応する場合は
Stream.from(3,2).map(_.toLong).takeWhile(_ <= limit)
なのかなぁ・・・?

Stream.from(1).map(_.toLong).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
を実験中だが、まだ処理が終わらない・・・

885 :デフォルトの名無しさん:2010/05/21(金) 13:52:59
>>884
> Stream.from(1).map(_.toLong).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
> を実験中だが、まだ処理が終わらない・・・

それは桁あふれで無限ループになるよ。
俺も、Eulerでは良くやる……


886 :880:2010/05/21(金) 15:30:24
>>885

あぁ・・やっぱり・・・
ということは、結局LongなStreamではないってことだね、
やるには、自前で作るしかないと。

せっかくなので、初めてIteratorを作ってみた。
こんな感じでいいのだろうか・・・

class LongStream(init:Long) extends Iterator[Long] {
var counter = init
def hasNext = true
def next = {
counter += 1L
counter
}
}

scala> new LongStream(0).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
res23: Long = 4500000001500000000

どうしてもStreamにしたければ、Stream.fromItaratorが使えそう。

887 :デフォルトの名無しさん:2010/05/22(土) 22:31:44
>>886
Stream.fromの実装を見ると早いと思うけど、こんな感じになってる。
#実際はオーバーロードがあるからちょっと違うけど。

def from(n:Int) = Stream.cons(n, from(n + 1))

なんで、MAX_INTまでいったら、次のtailはfrom(MIN_INT)になっちゃう。

単純にLongのStreamが欲しいなら、次のコードで良いんじゃない?

def from(n:Long) = Stream.cons(n, from(n + 1))


888 :デフォルトの名無しさん:2010/05/23(日) 02:01:40
scalaはbreakがない糞

889 :デフォルトの名無しさん:2010/05/23(日) 07:37:45
scalaって、なんでtraitがclassを継承できるようになってるんだ?
たとえば、

class a{}
trait b extends a{}

みたいに。

でも以下のようになるとコンパイルエラーになるから、
もちろん間接的に多重継承をしようとしてもできないようになってるわけだが・・・

class a{}
trait b extends a{}
class c{}
class d extends c with b{}

いまいち利点というか、使う場面がわからない・・・




890 :880:2010/05/23(日) 07:41:20
>>887

なるほど〜、その通りだった。
Stream深いな・・・

scala> def from(n:Long):Stream[Long] = Stream.cons(n,from(n+1))
from: (Long)Stream[Long]

scala> from(1)
res0: Stream[Long] = Stream(1, ?)

scala> from(1).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
res1: Long = 4500000001500000000

891 :デフォルトの名無しさん:2010/05/23(日) 19:02:14
たまにドキュメントにでてくる
トランポリンってどういうときに使うもんなの?

892 :デフォルトの名無しさん:2010/05/23(日) 19:07:37
>>891
Scalaでは、たとえば相互再帰する関数をStackOverflowすること
無しに扱いたい(末尾再帰にしたい)場合とか。2.8では
scala.util.control.TailCallsを使うと実現できる。

893 :デフォルトの名無しさん:2010/05/23(日) 21:54:38
>> 892
ありがとうございます。
トランポリンは末尾最適化の名前?という理解で正しいですか?
末尾再帰で相互再帰を使っており、末尾最適化するときにトランポリンを使うということですか?


894 :デフォルトの名無しさん:2010/05/24(月) 00:42:11
scalaはインタプリタとしても使えるようですけど、
liftのプロジェクトって mvn packageとかしてコンパイルしないと実行できないんですかね??
ソース変更する毎にコンパイルせずにそのまま走らせることできたらいいなと思うんですが・・

895 :デフォルトの名無しさん:2010/05/24(月) 01:40:15
ScalaでLift以外のWebアプリケーションフレームワークでいいのある?

896 :デフォルトの名無しさん:2010/05/24(月) 01:55:47
サーブレットで動かすのが前提の現状だと既存のFWのロジックを勝手にScalaで書けば?みたいな感じかな
Playとかそうだけど
コアの部分もScalaで再発明するメリットあんまないからね
ScalaがCGIで楽に動くようにでもなれば変わるだろうけど

897 :デフォルトの名無しさん:2010/05/24(月) 09:23:04
>>893 トランポリンは末尾呼出しの実現でも使われるけど、
特定のテクニックの名前。
http://en.wikipedia.org/wiki/Trampoline_%28computers%29

898 :デフォルトの名無しさん:2010/05/25(火) 01:16:56
>>◆ueEP8Ean2lqc
Scalaの本って厚すぎて・゚・(ノД`)・゚・。な感じに陥るんだけど。
もっとシンプルで簡潔に書いた読みやすい本だしてよ。

JavaScript: The Good Partsみたいな本。
170ページ1,800円くらいの。


899 :デフォルトの名無しさん:2010/05/25(火) 01:24:55
あるよ
あるけどこのスレでその話しちゃ駄目らしいよ

900 :デフォルトの名無しさん:2010/05/25(火) 01:33:39
>>899
作者乙

901 :デフォルトの名無しさん:2010/05/25(火) 12:17:42
公式サイトのドキュメントのpdf印刷で
いいじゃない

日本語が良ければ翻訳版かWeb連載記事の印刷で

902 :デフォルトの名無しさん:2010/05/25(火) 12:41:21
>>898

このスレの 100から120くらいを読め。

内容は薄いので、1時間くらいで読めるぞ!

でも、本自体は厚い。
紙質が厚いから厚い。
文庫本サイズで600円だったら、買う価値のある本。

903 :デフォルトの名無しさん:2010/05/26(水) 20:37:37
2.8.0 Finalまだ〜 待ちくたびれたぁ〜チンチン

904 :デフォルトの名無しさん:2010/05/28(金) 01:16:51
(残念?) 2.8.0.RC3 キタ

905 :デフォルトの名無しさん:2010/05/28(金) 17:12:53
http://codezine.jp/article/detail/5103?p=2
ここのページの下まで行って、サーバ立ち上げてみたんですが、
トップにアクセスすると
http://192.168.0.4:8080/_ah/login なんたら
にリダイレクトされて

The requested page was not defined in your SiteMap, so access was blocked.

とエラーが出てしまいます・・。

web.xmlで
<filter-class>bootstrap.liftweb.LiftFilter</filter-class>
みたいに設定してるんですが、これだけだと何か足りないんでしょうか。

gae混ざっててすいません。どなたか教えていただけると嬉しいです。

906 :デフォルトの名無しさん:2010/05/28(金) 22:51:03
ScalaよりもJavaScriptの方が関数脳になる近道じゃね?

907 :デフォルトの名無しさん:2010/05/28(金) 22:57:26
ttp://www.j2js.com/scala-demo/index.html

908 :デフォルトの名無しさん:2010/05/28(金) 23:31:13
>>906
本当に関数脳を鍛えたいなら
それこそ関数型言語が本筋だろう

909 :デフォルトの名無しさん:2010/05/29(土) 00:25:56
だって敷居高いじゃん

910 :デフォルトの名無しさん:2010/05/29(土) 00:29:52
結論:手続き型なOOで充分。

911 :デフォルトの名無しさん:2010/05/29(土) 14:59:04
Schemeなら覚えるべき文法が少ないから、敷居も低いな。

912 :デフォルトの名無しさん:2010/05/29(土) 21:58:35
Schemaとかカッコ多すぎてゲロ吐くレベル

913 :デフォルトの名無しさん:2010/05/29(土) 22:41:13
スキーマ?

914 :デフォルトの名無しさん:2010/05/30(日) 00:25:26
>>912
関数型言語向いてなさ過ぎだろ
Schemeやったら死ぬぞ

915 :デフォルトの名無しさん:2010/05/30(日) 00:37:10
>>911
386アセンブラなら覚えるべき文法が少ないから、敷居も低いな。

916 :デフォルトの名無しさん:2010/05/30(日) 02:59:02
そもそもSchemeは関数型じゃないし

917 :デフォルトの名無しさん:2010/05/30(日) 15:15:16
本当の関数型は、HaskellとかConcurrent Cleanとかだな。

918 :デフォルトの名無しさん:2010/05/30(日) 21:18:10
>>905
とちょっと違うけど自分もそのページの見てやってて、
4ページまで行ったんだけどコンパイルしてブラウザからアクセスしたら
Message: java.lang.NullPointerException
ってエラーが出ました。
コンパイルが通ってるのにエラー出るってどういうことなんでしょう?
Javaやったことないのでエラー文もよくわからないのです・・

919 :デフォルトの名無しさん:2010/05/30(日) 21:27:02
ぬるぽがわからんやつには早いって

920 :デフォルトの名無しさん:2010/05/30(日) 21:28:10
>>919
ガッ!

921 :デフォルトの名無しさん:2010/05/30(日) 23:00:06
> コンパイルが通ってるのにエラー出るってどういうことなんでしょう?

これに少し感動。
初心者がこんな風に思う時代になったんだ

922 :デフォルトの名無しさん:2010/05/31(月) 01:40:56
いや、Haskell使いかも知れん。

923 :918:2010/05/31(月) 01:54:30
アドバイスいただけると嬉しいです。。

924 :デフォルトの名無しさん:2010/05/31(月) 06:31:55
エラー名でググれ

925 :デフォルトの名無しさん:2010/05/31(月) 09:11:58
>>918
値が入っていない変数に、メソッドを発行するとよく出るよ。
変数の初期化し忘れとか確認してみな。

926 :デフォルトの名無しさん:2010/05/31(月) 18:42:54
Scalaでnull使ったら負けでしょ。
OptionかBox型を使うべき。


927 :デフォルトの名無しさん:2010/05/31(月) 22:52:07
>>923
> アドバイスいただけると嬉しいです。。

codezine の記事書いている作者にメール送るのも手ですよ。

読者からの反応はうれしいものなんです。


928 :デフォルトの名無しさん:2010/05/31(月) 23:06:30
>>927
大事なのは私が嬉しいかどうかです。。

929 :デフォルトの名無しさん:2010/05/31(月) 23:17:14
yuroyoroさん降臨か
微妙にScala界隈の著名人が集まるスレになっとるな

930 :デフォルトの名無しさん:2010/05/31(月) 23:19:57
Scalaの本売れすぎだろ
八重洲ブックセンター行ったらコップも入門も売り切れだったぜ

あっちの方の入門は残ってたけど

931 :デフォルトの名無しさん:2010/05/31(月) 23:31:50
オアゾの丸善の方が良くない?

932 :デフォルトの名無しさん:2010/05/31(月) 23:45:57
えーだって俺会社八重洲だもん

933 :デフォルトの名無しさん:2010/06/01(火) 01:50:28
八重洲ブックセンターちょくちょく行くが売り切れとかありえんだろ
なんの自演だそれは

934 :デフォルトの名無しさん:2010/06/01(火) 02:53:12
いやコップといい方の入門は先週は平積みだったのに今日行ったら1冊も無かったんだよマジで

935 :デフォルトの名無しさん:2010/06/01(火) 03:20:18
売れないから返品されただけじゃないか。

936 :デフォルトの名無しさん:2010/06/01(火) 08:57:30
昨日日本橋の丸善でコップ買ったよ。
あと3冊ぐらいあった。
オアゾは売りきれてたよ。在庫検索では。

937 :デフォルトの名無しさん:2010/06/01(火) 12:45:54
なんで2種類だけそんなに売り切れてんの
工学社のも買ってやれよw

938 :デフォルトの名無しさん:2010/06/01(火) 20:56:26
>>934

ブレークするような出来事あったっけ?

なんかいまいち、盛り上がりに欠けると思うのだが。


939 :デフォルトの名無しさん:2010/06/01(火) 21:15:50
新人にjavaで何か新しいもんさわってみろ
でscalaという流れとか

androidとかgae/jとかもあるけどな

940 :デフォルトの名無しさん:2010/06/01(火) 23:41:27
まぁ八重洲あたりはIT企業が多いからそこだけの地域特需かもな
オー○ックとかリク○ートあたりが採用したのかもしれんと妄想

941 :デフォルトの名無しさん:2010/06/02(水) 12:09:45
liftでプリントデバッグに使える関数ってありますか??
printlnだとサーバのログには書き出せるんですがブラウザで確認するにはどうすればいいかなと・・

942 :918:2010/06/02(水) 12:53:45
色々教えていただきありがとうございます。
ちょっとずつ分かってきましたがまだ疑問点があります・・

http://codezine.jp/article/detail/5103?p=3
ここのページの通り、
case class Event(
id:Option[Long],
name:String, description:String,
fromDate:Date, toDate:Date, place:String,
join:Long, count:Long, user:User, members:List[User] )
が定義されているのですが、

entityValueメソッド
-----定義-----------
def entityValue[T]( e:Entity, name:String ) =
e.getProperty( name ).asInstanceOf[T]
--------------------
を使って、のちに

entityValue[User]( e, "user" ),
entityValue[JList[User]]( e, "members" ).toList
(eはgoogle app engineのEntityクラスオブジェクト)

などとしているところがありまして、ここの
entityValue[JList[User]]( e, "members" ).toList
の部分でmembersプロパティに値がなかった場合、entityValue関数内の e.getProperty( name )で nullが返ってきて
null.asInstanceOf[JList[User]]
が実行され、
java.lang.NullPointerException
となるようです。
(分けます・・)


943 :918:2010/06/02(水) 12:55:58
しかしエラーが出る上の行の
entityValue[User]( e, "user" )
では、たとえuserプロパティの値が空であったとしても、
entityValue関数内の e.getProperty( name ) でnullではなく空文字が返ってくるようで
"".asInstanceOf[User] となり、この場合はNULLエラーにならないようです。

userプロパティ、membersプロパティ共に値が空であることには代わりが無いのに
e.getProperty("user")では空文字列が返り、
e.getProperty("members")ではNullが返ってきてしまう理由がよくわからないのですが、
これはなぜなのでしょうか?
[User]と[JList[User]]の違いなのか、それとももしかするとapp engine sdkの仕様なのでしょうか。
度々質問ですいません。アドバイスいただけると嬉しいです。

944 :デフォルトの名無しさん:2010/06/05(土) 00:56:58
blogの話題解析ページ見ると、"scala"で4〜5月に大きな盛り上がりの山があったようだ。
Software Design誌の影響?

945 :デフォルトの名無しさん:2010/06/05(土) 09:39:31
はてなで話題になったからだろ

946 :デフォルトの名無しさん:2010/06/05(土) 11:28:34
>>944-945
ブックマーク数から判断すると火元は下記記事ですね。

RubyからScalaに乗り換えた15くらいの理由 - ヽ( ・∀・)ノくまくまー(2010-04-26)
http://wota.jp/ac/?date=20100426#p01
http://b.hatena.ne.jp/entry/wota.jp/ac/?date=20100426%23p01 (759 users)
http://b.hatena.ne.jp/entry/wota.jp/ac/?date=20100426      (138 users)

947 :デフォルトの名無しさん:2010/06/06(日) 00:40:29
想像以上にひどい提灯記事w

948 :デフォルトの名無しさん:2010/06/06(日) 00:44:07
AKBヲタかよw
頼むから公表しないでくれマイナス要因になるから
握手が生き甲斐でプログラム組んでると思われるぞ

949 :デフォルトの名無しさん:2010/06/06(日) 00:55:07
ベリーずからAKBに乗り替えクマー

950 :デフォルトの名無しさん:2010/06/06(日) 01:03:00
もうGOと一緒でScalaも下火だな。
D言語まっしぐらだわ。

951 :デフォルトの名無しさん:2010/06/06(日) 01:09:53
>>950
次スレ頼んだ。

952 :デフォルトの名無しさん:2010/06/06(日) 10:14:42
そもそも、ScalaとRubyは比較対象になるのか。
使い道が違うと思うんだけど。

953 :デフォルトの名無しさん:2010/06/06(日) 12:08:21
>952
上記エントリから関連記事を辿るとさんざん指摘されてる。
動的言語と静的言語は違うからな。
もともと静的言語が好みで、しかしJavaみたいに煩雑な記述はしたくない、という話だろう。
まあ、そういう層は潜在的に多そうに感じるけど。

954 :デフォルトの名無しさん:2010/06/06(日) 12:36:27
逆にJavaからRubyへって本だと静的言語終わったこれからは動的って書いてあるから
お互い様だよそこは

955 :デフォルトの名無しさん:2010/06/06(日) 12:51:17
scalaとrubyって使い途ちがうの?

956 :デフォルトの名無しさん:2010/06/06(日) 13:29:18
同じだよ

957 :デフォルトの名無しさん:2010/06/06(日) 13:56:11
ていうかScalaが動的型付け言語の中ではRubyにかなり似てるからじゃね?
SS本の中でもやたらRubyとの比較がでてくる

じゃなければ普通PHPやPythonと比較するだろう

958 :デフォルトの名無しさん:2010/06/06(日) 14:25:09
Twitterがらみで比較されてんじゃないの?

959 :デフォルトの名無しさん:2010/06/06(日) 14:29:30
全然似てないよ

960 :デフォルトの名無しさん:2010/06/06(日) 15:34:43
ただ単にあの人がrubyの人だったってだけじゃない。
pythonと比べても大してかわらん。
scalaはユニークだ。

961 :デフォルトの名無しさん:2010/06/06(日) 23:24:00
はじめてのプログラミングじゃなくて、cかjavaあたりの既習者向けかな

http://www.pragprog.com/titles/btlang/seven-languages-in-seven-weeks

Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate

962 :デフォルトの名無しさん:2010/06/06(日) 23:41:15
ちなみに>961の著者は>954の著者だとおもう。

963 :デフォルトの名無しさん:2010/06/07(月) 15:24:20
ちょっと次スレ立ててくる

964 :963:2010/06/07(月) 15:27:28
プログラミング言語 Scala 4冊目
http://pc12.2ch.net/test/read.cgi/tech/1275891974/

965 :デフォルトの名無しさん:2010/06/09(水) 23:39:19
rubyでいうところのDatetime型ってScala/liftではないんですかね?
Dateならあるみたいなんですが・・

966 :デフォルトの名無しさん:2010/06/09(水) 23:45:26
えっ

967 :デフォルトの名無しさん:2010/06/10(木) 01:17:39
みんなJoda Timeとか使ってんの?
俺もJavaのライブラリあんまよく知らないんだけど
こうやっていちいち調べなきゃいけないのが面倒くさいよね

968 :デフォルトの名無しさん:2010/06/10(木) 01:30:24
ふつー、Joda Timeじゃないの?

969 :デフォルトの名無しさん:2010/06/10(木) 01:34:11
java.sql.Timestampでも使ってろよw

970 :デフォルトの名無しさん:2010/06/10(木) 22:54:14
スレ違いだろうが他に聞けそうなところも無いので聞かせてくれ。

Scala 向けのテンプレートエンジン Scalate を
http://github.com/scalate/scalate/tree/scala_next
から DL してきてsbt か mvn でビルドしようとしている。
どうやら CLASSPATH に jar が追加されていないようで、
コンパイルに失敗する。

どうしたらコンパイルド通るの?

ってか、Scalate のソースから一発でまともにコンパイルできた
覚えがないのだけど、そういうもんなの?
Scalate の公式に載っている通りだと思うのだが、俺の手順がいけないの?

971 :デフォルトの名無しさん:2010/06/11(金) 00:34:39
全然スレ違いじゃないけど多分答えられる人もいない気がする

972 :デフォルトの名無しさん:2010/06/11(金) 02:54:06
>>970
よくわからんが
mvn -Dtest=false install -Pdownload
でいけた

973 :デフォルトの名無しさん:2010/06/11(金) 22:52:40
>>972

やってみたら、だいぶエラーが減った。次の 1 つだけになった。

(略) scalate-core/src/main/scala/org/fusesource/scalate/filter/MarkdownFilter.scala:19: error: value petebevin is not a member of package com
[INFO] import com.petebevin.markdown.MarkdownProcessor
[INFO] ^
[ERROR] one error found
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR

だけどやっぱり CLASSPATH に追加されてない気がする。

974 :965:2010/06/12(土) 13:14:03
ありがとうございます!

975 :デフォルトの名無しさん:2010/06/12(土) 14:01:24
liftのShtmlとStatefulSnippet ってどう違うんですかね?

976 :デフォルトの名無しさん:2010/06/12(土) 14:27:29
>>973
ウチじゃコンパイルエラーは出ないな。テスト通らないけどな!

977 :デフォルトの名無しさん:2010/06/12(土) 15:38:12
>975
むしろ、何が同じなの?

978 :デフォルトの名無しさん:2010/06/13(日) 02:37:10
RC4 キタ! http://www.scala-lang.org/node/6668

979 :デフォルトの名無しさん:2010/06/13(日) 02:45:35
2.8は、何でこんな難航してるの?

980 :デフォルトの名無しさん:2010/06/13(日) 19:53:41
大幅修正があったものをイベントあわせで、リリース候補にしたように見えたから、
RC3が本来のRC1ぐらいなんじゃね?

We are now getting really close to the final release! って、大きなバグ無ければ最終候補かな?

981 :デフォルトの名無しさん:2010/06/13(日) 23:45:54
>>980
たぶんそうだろうねえ。Scala DaysでRC1出すために
スケジュールが前倒しされてるのだと思う
本来よりも差し引いて考えるべきだろね

982 :デフォルトの名無しさん:2010/06/14(月) 07:43:33
RC4キタと思ったら、即座にRC5がきた。


983 :デフォルトの名無しさん:2010/06/14(月) 12:13:33
tag一覧を見ると2.7.2や2.8.0Beta1も2ヶ月ぐらいRCが続いているので
それがScalaプロジェクトのいつものやり方なのではないでしょうか。

root/scala/tags
http://lampsvn.epfl.ch/trac/scala/browser/scala/tags
Scala 2.8.0 RC5
http://www.scala-lang.org/node/6684

223 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)