2011-01-01から1年間の記事一覧
Xtend Reference Documentation をかいつまんで。 ファイル形式 Xtend ファイルの構成は Java と同じく package、import、class の順番に並ぶ。行末のセミコロンは不要。 package com.acme import java.util.List class MyClass { String ^Lrst(List<String> element</string>…
Xtendとは Eclipse Xtext プロジェクトで開発されている新しい言語? Eclipse Xtext は DSL の開発を容易にするための各種のプラットフォームを提供しており、Xtext に 簡素な DSL の文法記述を与えるだけで、文字通り数クリックで、Eclipse によるコンテン…
フッターを CSS で画面下部に固定したいのはよくあるケースなようで、『CSSStickyFooter』 とか、『A CSS sticky footer』とかが有名どころでしょうか。 CSSStickyFooter は昔は Clearfix Hack を使っていたようですが、今やシンプルなCSSでフッターの固定化…
CSS にて、要素の height にパーセント値を指定した場合の表示について 分かりにくいので簡単にまとめておきます。 要素をウインドウ全体に表示したいけど上手くいかない 要素を画面全体に表示したい場合、「height: 100%;」と指定しても上手くいきません。 …
単なるエコーサーバをScalaで凝縮してみると、、 import java.net.{InetSocketAddress, StandardSocketOptions} import java.nio.ByteBuffer import java.nio.channels.{AsynchronousSocketChannel, CompletionHandler, AsynchronousServerSocketChannel} ob…
よくあるポップアップ onclick イベントにて window.open 関数でポップアップを表示するよくある方法。 <a href='#' onclick="window.open('hoge.html', 'target', 'width=300, height=200');"> ポップアップ</a> この方法の問題点は、href にリンク先が設定されていないため、JavaScript を有効にしていない場合にリンク先のページを見るすべがないこ…
オブジェクトリテラル オブジェクトの作成はコンストラクタにて以下のように書けます。 var car = new Object(); car.goes = "far"; が、より簡素なオブジェクトリテラル表記を使うべきです。 var car = {goes: "far"}; オブジェクトコンストラクタに数値を…
JavaScript でのブラウザ判定について まとまった情報がサクッとヒットしないので、まとめ UserAgent によるブラウザ判定 よくある単純な例 var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf('opera') != -1) { return 'op…
Scala からオブジェクトDBの db4Object を使う blog1.mammb.comの記事でも取り上げた db4Object を Scala から利用してみます。 db4o-8.0.184.15484-all-java5.jar をクラスパスに追加して Scala から使うだけです。 エンティテイ として、Customer クラスを…
Java7にて NIO2 として不完全だった NIO 系ライブラリが拡張されました。非同期 SocketChannel を使って簡単なサーバのサンプルをば。 Java6までの ServerSocketChannel と SocketChannel に対応する Asynchronous 系のクラスが追加されました。 Asynchronou…
Swing Enhancements in Java SE 7 の一覧をベースに Java SE 7 の Swing 変更点について書いときます。。 JLayer Class java.net. の JxLayer プロジェクトの成果物を元に Java 7 にレイヤー機能が追加されました。既存のコンポーネントを変更することなく、…
最新版は blog1.mammb.com となります。 Jolt Awards の書籍部門の20年をまとめてみました。なお、邦訳優先で版数の新しいものを載せています。 20th Jolt Awards 2010 - 2011 全ての開発者が読むべき6つの良書として、例年のGeneral部門、Technical部門とい…
blog1.mammb.com からの続きです。 ラムダ式 まぁ、無名関数です はい。 引数を二乗する関数 square は以下のように定義できます。 square :: Num a => a -> a square x = x * x この関数には square という名前が付いていますが、名前を付けずに関数を定義…
blog1.mammb.com からの続きです。 条件式 Haskell の if 文は、多くの関数型言語と同じく式です。つまり、なんらかの値を返します。そして else 部がかならず必要です。 整数の絶対値を返却する関数は、条件式を使って以下のように定義できます。 abs :: In…
blog1.mammb.comの続きです。 パターンマッチ 関数型言語では一般的なパターンマッチが、当然ながら Haskell にもあります。 パターンマッチは、パターン式を並べて記述します。パターンは上から最初にマッチしたものが利用されます。 リテラルパターン Bool…
blog1.mammb.com の続きです。 関数の定義 2 つの数字を加算する add 関数を定義してみます。 add x y = x + y 実行すると、以下のように 2 つの数字を加算した結果が得られていることが分かります。 Main> add 2 3 5 この関数の型について調べてみましょう…
Haskell とは 純粋関数型のプログラミング言語 変数を扱わないため状態という概念がない 非正格の遅延関数言語 強力な型システム 名前は数学者であり論理学者であるハスケル・カリーに由来 実行環境 http://haskell.org/hugs/ から Hugs を導入するのが楽ち…
前回 blog1.mammb.com の続き。 エントリポイント Main.scala package etc9.aokan object Main { def main(args: Array[String]):Unit = new Acceptor(8900, new IoHandler[HttpRequest, HttpResponse] with HttpReadChannel with HttpProcess with HttpWrit…
前回 blog1.mammb.com の簡易 Web サーバのやっつけ実装を整理してみます。 Handler の依存が気に入りません Server クラスでは、ServerSocketChannel の初期化を行い、アクセプト要求にこたえる AcceptHandler の登録をしています。その後、selector のセレ…
Httpd.scala NIO 経由でのリクエストとレスポンスの処理。 package etc9.aokan import java.nio.ByteBuffer import java.io.{File, FileInputStream} import java.nio.channels._ import etc9.aokan.HttpDef._ import collection.mutable.{ListBuffer} impor…
blog1.mammb.com から、さらに最近出た本を追加して加筆 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須のコップ本「Scala スケーラブルプ…
JavaFX2.0 は 2011 年下半期リリース予定 2010年 の JavaOne で 2011 年下半期リリースと発表された JavaFX 2.0。NetBeans プラグインもでてたので ちょっとだけお試し http://javafx.com/ ダウンロード http://javafx.com/downloads/ JavaFX 2.0 Beta SDK (…
関数型言語は主流となりうるのか CPUのマルチコア化が進んだことで並列プログラミングへのニーズが高まり、関数型言語が注目されています。手続型からオブジェクト指向へのパラダイムシフトのように、関数型は主流となるのでしょうか? 純粋な関数型言語は、…
内容が古くなったのでこちら blog1.mammb.com に新しく出た本を追加して更新します。。 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須の…
Java コレクションと Scala コレクションは、implicit により相互変換を簡単に、というか、意識せずに行うことができます。 以前は scala.collection.jcl でしたが、Scala 2.8 から scala.collection.JavaConversions としてコンバータが提供されています。 …
Scala での正規表現 Scala での正規表現は、scala.util.matching.Regex を使って、 val Decimal = new Regex("""(-)?(\d+)(\.\d*)?""") または StringLike の r を使って val Decimal = """(-)?(\d+)(\.\d*)?""".r のように指定できます。 scala.util.matchi…
カプセル化 TCP/IP の各プロトコルは、上位のプロトコルのデータやパケットに、そのプロトコル固有のヘッダ情報を付加し、それを下位のプロトコルのデータとしてカプセル化して扱います。 受信時にはこの逆のプロセスを経て、下位のプロトコルのデータから、…
ダウンロードとインストール 以下をダウンロードしてインストール。 IntelliJ IDEA Community Edition(Version:10.0.3 Build:103.255) http://www.jetbrains.com/idea/download/index.html Scala(2.8.1) http://www.scala-lang.org/downloads simple-build-t…
JDK1.4 以降では、ホストのプラットフォームが対応している場合に IPv6 をサポートします。IPv6 をサポートするプラットフォーム上では IPv4 と IPv6 の両方を自動的にサポートし、これはプログラマから見て透過的に行われます。 IPv6 は「IPv4 互換アドレス…
現在の主要なディスプレイの解像度。 この中で最も普及している解像度は XGA(1024 x 768) と言われており、最近では SXGA(1280 x 1024)が増えてきています。 ツールバーやタスクバー、スクロールバーを除くと、Web ページの表示領域は 980 x 590 程度をター…