2011-01-01から1年間の記事一覧

Eclipse.org 製の新言語? Xtend 文法(その1)

Xtend Reference Documentation をかいつまんで。 ファイル形式 Xtend ファイルの構成は Java と同じく package、import、class の順番に並ぶ。行末のセミコロンは不要。 package com.acme import java.util.List class MyClass { String ^Lrst(List<String> element</string>…

Eclipse.org 製の新言語? Xtend

Xtendとは Eclipse Xtext プロジェクトで開発されている新しい言語? Eclipse Xtext は DSL の開発を容易にするための各種のプラットフォームを提供しており、Xtext に 簡素な DSL の文法記述を与えるだけで、文字通り数クリックで、Eclipse によるコンテン…

フッターを画面下部に固定する CSS sticky footer の Step By Step

フッターを CSS で画面下部に固定したいのはよくあるケースなようで、『CSSStickyFooter』 とか、『A CSS sticky footer』とかが有名どころでしょうか。 CSSStickyFooter は昔は Clearfix Hack を使っていたようですが、今やシンプルなCSSでフッターの固定化…

分かりにくいCSS height のパーセント設定のまとめ

CSS にて、要素の height にパーセント値を指定した場合の表示について 分かりにくいので簡単にまとめておきます。 要素をウインドウ全体に表示したいけど上手くいかない 要素を画面全体に表示したい場合、「height: 100%;」と指定しても上手くいきません。 …

Java7からのNIO2で高凝縮のエコーサーバを書いてみた

単なるエコーサーバをScalaで凝縮してみると、、 import java.net.{InetSocketAddress, StandardSocketOptions} import java.nio.ByteBuffer import java.nio.channels.{AsynchronousSocketChannel, CompletionHandler, AsynchronousServerSocketChannel} ob…

HTML5 のカスタムデータ属性を使ってポップアップウインドウを制御する

よくあるポップアップ onclick イベントにて window.open 関数でポップアップを表示するよくある方法。 <a href='#' onclick="window.open('hoge.html', 'target', 'width=300, height=200');"> ポップアップ</a> この方法の問題点は、href にリンク先が設定されていないため、JavaScript を有効にしていない場合にリンク先のページを見るすべがないこ…

JavaScript のリテラルパターン

オブジェクトリテラル オブジェクトの作成はコンストラクタにて以下のように書けます。 var car = new Object(); car.goes = "far"; が、より簡素なオブジェクトリテラル表記を使うべきです。 var car = {goes: "far"}; オブジェクトコンストラクタに数値を…

JavaScript とかによるブラウザ判定方法のまとめ

JavaScript でのブラウザ判定について まとまった情報がサクッとヒットしないので、まとめ UserAgent によるブラウザ判定 よくある単純な例 var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf('opera') != -1) { return 'op…

Scala と ODBMS の合わせ技が効率的すぎる

Scala からオブジェクトDBの db4Object を使う blog1.mammb.comの記事でも取り上げた db4Object を Scala から利用してみます。 db4o-8.0.184.15484-all-java5.jar をクラスパスに追加して Scala から使うだけです。 エンティテイ として、Customer クラスを…

Java SE 7 で追加された NIO2 の非同期ソケットチャネル

Java7にて NIO2 として不完全だった NIO 系ライブラリが拡張されました。非同期 SocketChannel を使って簡単なサーバのサンプルをば。 Java6までの ServerSocketChannel と SocketChannel に対応する Asynchronous 系のクラスが追加されました。 Asynchronou…

Java SE 7 における Swing の変更点

Swing Enhancements in Java SE 7 の一覧をベースに Java SE 7 の Swing 変更点について書いときます。。 JLayer Class java.net. の JxLayer プロジェクトの成果物を元に Java 7 にレイヤー機能が追加されました。既存のコンポーネントを変更することなく、…

Jolt Awards の 20年

etc

最新版は blog1.mammb.com となります。 Jolt Awards の書籍部門の20年をまとめてみました。なお、邦訳優先で版数の新しいものを載せています。 20th Jolt Awards 2010 - 2011 全ての開発者が読むべき6つの良書として、例年のGeneral部門、Technical部門とい…

は ハ は は haskell

blog1.mammb.com からの続きです。 ラムダ式 まぁ、無名関数です はい。 引数を二乗する関数 square は以下のように定義できます。 square :: Num a => a -> a square x = x * x この関数には square という名前が付いていますが、名前を付けずに関数を定義…

は は ハ ハ haskell

blog1.mammb.com からの続きです。 条件式 Haskell の if 文は、多くの関数型言語と同じく式です。つまり、なんらかの値を返します。そして else 部がかならず必要です。 整数の絶対値を返却する関数は、条件式を使って以下のように定義できます。 abs :: In…

は は ハ は haskell

blog1.mammb.comの続きです。 パターンマッチ 関数型言語では一般的なパターンマッチが、当然ながら Haskell にもあります。 パターンマッチは、パターン式を並べて記述します。パターンは上から最初にマッチしたものが利用されます。 リテラルパターン Bool…

は は は ハ haskell

blog1.mammb.com の続きです。 関数の定義 2 つの数字を加算する add 関数を定義してみます。 add x y = x + y 実行すると、以下のように 2 つの数字を加算した結果が得られていることが分かります。 Main> add 2 3 5 この関数の型について調べてみましょう…

は は は は haskell

Haskell とは 純粋関数型のプログラミング言語 変数を扱わないため状態という概念がない 非正格の遅延関数言語 強力な型システム 名前は数学者であり論理学者であるハスケル・カリーに由来 実行環境 http://haskell.org/hugs/ から Hugs を導入するのが楽ち…

Scala で簡易 Web サーバのプロトタイプをリファクタしてみた(2)

前回 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…

Scala で簡易 Web サーバのプロトタイプをリファクタしてみた

前回 blog1.mammb.com の簡易 Web サーバのやっつけ実装を整理してみます。 Handler の依存が気に入りません Server クラスでは、ServerSocketChannel の初期化を行い、アクセプト要求にこたえる AcceptHandler の登録をしています。その後、selector のセレ…

Scala で簡易 Web サーバのプロトタイプ書いてみた

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…

Scalaを学ぶためのScala本の読み進め方 (10冊)

blog1.mammb.com から、さらに最近出た本を追加して加筆 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須のコップ本「Scala スケーラブルプ…

JavaFX2.0 を試してみませんか?

JavaFX2.0 は 2011 年下半期リリース予定 2010年 の JavaOne で 2011 年下半期リリースと発表された JavaFX 2.0。NetBeans プラグインもでてたので ちょっとだけお試し http://javafx.com/ ダウンロード http://javafx.com/downloads/ JavaFX 2.0 Beta SDK (…

関数型言語への注目とClojure

関数型言語は主流となりうるのか CPUのマルチコア化が進んだことで並列プログラミングへのニーズが高まり、関数型言語が注目されています。手続型からオブジェクト指向へのパラダイムシフトのように、関数型は主流となるのでしょうか? 純粋な関数型言語は、…

Scalaを学ぶためのScala本の読み進め方

内容が古くなったのでこちら blog1.mammb.com に新しく出た本を追加して更新します。。 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須の…

Java コレクションと Scala コレクションの相互変換

Java コレクションと Scala コレクションは、implicit により相互変換を簡単に、というか、意識せずに行うことができます。 以前は scala.collection.jcl でしたが、Scala 2.8 から scala.collection.JavaConversions としてコンバータが提供されています。 …

Scala の正規表現でマッチフラグを使うには

Scala での正規表現 Scala での正規表現は、scala.util.matching.Regex を使って、 val Decimal = new Regex("""(-)?(\d+)(\.\d*)?""") または StringLike の r を使って val Decimal = """(-)?(\d+)(\.\d*)?""".r のように指定できます。 scala.util.matchi…

TCP/IP におけるカプセル化・フラグメント・ヘッダ

etc

カプセル化 TCP/IP の各プロトコルは、上位のプロトコルのデータやパケットに、そのプロトコル固有のヘッダ情報を付加し、それを下位のプロトコルのデータとしてカプセル化して扱います。 受信時にはこの逆のプロセスを経て、下位のプロトコルのデータから、…

IntelliJ IDEA における SBT のセットアップ手順

ダウンロードとインストール 以下をダウンロードしてインストール。 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…

Javaにおける IPv4 と IPv6 (IPv4 アドレスが枯渇しましたが、)

JDK1.4 以降では、ホストのプラットフォームが対応している場合に IPv6 をサポートします。IPv6 をサポートするプラットフォーム上では IPv4 と IPv6 の両方を自動的にサポートし、これはプログラマから見て透過的に行われます。 IPv6 は「IPv4 互換アドレス…

Webページのレイアウトサイズ

etc

現在の主要なディスプレイの解像度。 この中で最も普及している解像度は XGA(1024 x 768) と言われており、最近では SXGA(1280 x 1024)が増えてきています。 ツールバーやタスクバー、スクロールバーを除くと、Web ページの表示領域は 980 x 590 程度をター…