Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

2008-10-01から1ヶ月間の記事一覧

ScalaのジェネリックとVariance

プログラミング言語 Scala Wiki 8.2 Variance Annotations とても勉強になる。 翻訳してくださった方、ありがとうございます。 Scalaの公式サイトのドキュメント、どこに何が書いてあるかまだイマイチわからないから。。 Varianceは共変ってことなんだけど、…

この2つができれば洋書が読める!

僕は年2、3冊洋書の技術書を読む程度なので、読むのが速いわけではないんですが。 洋書に対してアレルギーはないです。 洋書の翻訳はどうしても売り上げの問題で、有名な本か初歩の本しか対象になりません。 そして翻訳には期間がどうしてもかかり、その間に…

ScalaのAdvanced Exampleを写経する(11)-property

の謎が解けた。 timeofday.scala | The Scala Programming Language package sample.snippet object timeofday { class DateException extends Exception /** Simulating properties in Scala. */ class TimeOfDayVar { private var h: Int = 0 private var …

ScalaのAdvanced Exampleを写経する(10)-functional quicksort

クイックソートの関数スタイル版。sort1.scala | The Scala Programming Language package sample.snippet /** Quick sort, functional style. */ object sort1 { def sort(a: List[Int]): List[Int] = { if( a.length < 2) a else { val pivot = a(a.length…

Scalaの「::」と「:::」

package sample object Sample { def main(args: Array[String]): Unit = { val a = List(1,2,3) val b = List(4,5,6) println(a :: b) println(a ::: b) } } List(List(1, 2, 3), 4, 5, 6) List(1, 2, 3, 4, 5, 6)JavaでいうList#add()とList#addAll()だね。

Finderの代わりにmuCommander

mac

macにして何一つ後悔はないし、 むしろ普段からUNIXベースでエンジニアとして少し基盤ができてきたとか思うくらいだけど。 ただFinderはイマイチな気がする。 まあターミナルでやるんだけど。 でもまあマウスでやりたいときもあるし。 MOONGIFTでこんなファ…

ScalaのAdvanced Exampleを写経する(9)-imperative quicksort

クイックソートのimperativeスタイル。 imperativeは命令的。逐次ってことかな。 要は関数的でない従来の方法でのソート。 関数的なサンプルは別に用意されているので、次の機会でもやってみる。 sort.scala | The Scala Programming Language package sampl…

ScalaのAdvanced Exampleを写経する(8)-socket

Javaのソケット通信を使ったクライアント/サーバーアプリ。 random.scala | The Scala Programming Language package sample.snippet import java.io._ import java.net.{ InetAddress, ServerSocket, Socket, SocketException } import java.util.Random /*…

ScalaのAdvanced Exampleを写経する(7)-custom 'apply/update'

Scalaでは値を取り出すときはapplyメソッドが、値を設定するときはupdateメソッドが呼び出されるらしい。 それらに任意の処理を設定するサンプル。 properties.scala | The Scala Programming Language package sample.snippet /** Illustrate the use of cu…

若手に覚えてほしい質問への答え方

「第一声で質問への答え/結論を述べること」質問するとこういう人がいる。 「○○はスケジュールどおりですか?」 ↓ 「○○は今ここをやってまして、ですが先に××の作業がありまして・・・」 この答え方は完全にアウト。 質問した人が聞きたいのはあなたの状況で…

ScalaのAdvanced Exampleを写経する(6)-extractor

ScalaのAdvanced Exampleを写経する(5)-case class - Fight the Future じゅくのblogを変更したソース。 extractorPatterns.scala | The Scala Programming Language パターンマッチングはケースクラス使わなくてもobjectでもできる。 ただしapplyメソッドと…

ScalaのAdvanced Exampleを写経する(5)-case class

またまたパターンマッチング。 それだけこの概念が大事だってことなんだろうね。 package sample.snippet /** Illustrate the use of pattern matching in Scala. */ object Patterns { /** We need an abstract base class for trees. * Subclasses with th…

消せる紙

昨日のワールドビジネスサテライトのトレたまでやってた。普通の紙に特殊なニスを塗ったもので、持ち運びのホワイトボードとして活用できるらしい。まだ東京のハンズでしか販売してない。 仕事耕具:あの“持ち運びできるホワイトボード”が発売 欧文印刷の「…

ScalaのAdvanced Exampleを写経する(4)-lazy evaluation

いわゆる遅延評価ってやつ。 package sample.snippet object LazyLib { /** Data type of suspended computations. */ abstract class Susp[+A] extends Function0[A] class SuspImpl[A](lazyValue: => A) extends Susp[A] { private var maybeValue: Option…

Cedricは日本が好きだね〜

CedricさんがAndroid Marketに翻訳アプリを出したみたい。Android Translate « Otaku, Cedric's blog サンプルが馬だもんなあ。

ScalaのAdvanced Exampleを写経する(3)-Guarded Algebraic Data Types

Guarded Algebraic Data Types = 保護された代数データ型?検索するとヒットした。 Guarded algebraic data types, which subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, and phantom types, an…

ScalaのAdvanced Exampleを写経する(2)-for comprehension

for文もJavaとは違ってるね。 Advanced Exampleになってコードが長い! 理解したり試したり、時間がかかります。 fors.scala | The Scala Programming Language package sample.snippet object Persons { var persons = List( new Person("Bob", 17), new Pe…

プロパーも協力会社も目的を同じくした同志では?

プロパーも協力会社も、目的を同じくした同志なんじゃないかなあ。 「プロジェクトを成功させる」という。。。 そりゃ責任の所在とか契約形態とか各々に視点の違いがあるのは間違いないけど。 でもみんなプロジェクトのメンバーである以上、 すべての行動は…

Scalaのmainメソッド実行

こういうScalaプログラムがあるとして、 Dのメインメソッドはどういうコマンドで実行できるんでしょう? package a.b; object C { object D { def main(args: Array[String]) { print("テスト") } } } 「$ scala a.b.C」ではダメでした。。。 わからないので…

ソフト開発の生産性は新メンバーの生産性と足手まとい率によって変わる

「要員を増やす」ことにどんなトレードオフがあるか、しっかり理解しとかないと。 メリットがデメリットを上回るとそのときに限り、要員は増やすこと。 ご存知のようにブルックスの法則とは「遅れているソフトウェアプロジェクトへの要員追加はさらに遅らせ…

Windows XP SP3を入れるとPallarelsが動作しない

mac

Boot CampではWindosは正常に動作するけど、 Pallarelsで起動できなくなった。 このエラーが出て、 起動が無限ループする。 原因はSP3でした。 対処法は下記にあります。 ってかアンインストールして再インストールです。ページが見つかりません | 株式会社…

Scalaのfor文はシンタックスシュガー

次のExampleはforのことみたいだったけど、コードが長いので少し自分で調べてみた。 forループは文法ではなく,for-comprehensionという一種のシンタックスシュガーして定義され,map, filter等に変換される。 第3回 Scala言語を探検する(1):ITpro という…

continuation monadのコードが読めない(Scala)

モナドってだけで若干引き気味だけど。 モナドにもいろんな種類があって、その1つがcontinuation monadらしい。 で、サンプルを動かそうとしたけど、ソースの意味が理解できない。 いかん。実力がないのがバレバレだ。。。 type Answer = Value; /** * A con…

ScalaのAdvanced Exampleを写経する(1)-XML Processing

Snippetは終わったので、今回からAdvanced Example。 addressbook.scala | The Scala Programming LanguageScalaはXMLをリテラル(表現あってる?)として扱える。 文字列にする必要がない。 さらにXMLのリテラルの中にScalaコードを直接記述できる。 package …

ScalaのSnippetを写経する(11)-可変長引数

Javaの可変長引数もそのまま使える。Scala Snippets | The Scala Programming Language package sample.snippet object VarargsSample extends Application { val message = java.text.MessageFormat.format("At {1, time} on {1, date}, there was {2} on p…

ScalaのSnippetを写経する(10)-try catch

try-catchはJavaとほぼ一緒。 でもcatch句でcase使ってるってことはパターンマッチングなのかな??Snippet: Sum Arguments | The Scala Programming Language package sample.snippet object TryCatchSample extends Application { var array = Array("1", …

ScalaのSnippetを写経する(9)-for文の応用

Scalaではfor文に条件を書いてfilterかけれる。 Snippet: Primes | The Scala Programming Language Primeってのは素数のことね。まだ学術的段階だから?複素数とか素数とか数学のサンプルとか多いね。 package sample.snippet object Primes extends Applic…

ScalaのSnippetを写経する(8)-パターンマッチングその2

パターンマッチングのサンプルその2。Snippet: Match Arguments | The Scala Programming Language package sample.snippet object PatternMatchSample2 extends Application { var verbose = false val array = Array("-h", "-verbose", "aaa") for (a <- a…

ScalaのSnippetを写経する(7)-パターンマッチング

パターンマッチングのサンプル。実におもしろいw Snippet: Maps | The Scala Programming Language package sample.snippet object PatternMatchSample { val colors = Map("red" -> 0xFF0000, "turquoise" -> 0x00FFFF, "black" -> 0xFFFFFF, "orange" -> …

ScalaのSnippetを写経する(6)-Implicit Conversionその2

ScalaのImplicit Conversionを使うサンプルその2。Snippet: Implicits | The Scala Programming Language package sample.snippet object ImplicitSample extends Application { implicit def arrayWrapper[A](x: Array[A]) = new { def sort(p: (A, A) => B…