サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
www.limy.org
case class Scala では、特殊な class として case class というものがある。 case class は、いわゆるデータクラスを作るときに便利なクラス。 このクラスは定義されたフィールドに応じて自動的に equals(), toString(), hashCode() が生成される。 case class Person(first:String, last:String, age:Int) equals() は各フィールドをそれぞれ比較し、toString() は読みやすい形でPersonの内容を文字列化する。 また、変数の定義に val を書かなくても自動的に Getter が生成される。 もちろん var と書けば Setter も生成される。 このように何の関数も持たない純粋なデータクラスの場合、Scala ではクラス実体を省略できる。 つまり {} す
ファイルの変更 では、先ほどコミットしたファイルに変更を加えてみます。 $ echo "hello world2" >> file1 file1 の末尾に1行追加しました。 すぐコミットしてみましょう。 $ git commit -m "second commit" # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: file1 # no changes added to commit (use "git add" and/or "git commit -a") はて、変ですね。
リポジトリの新規作成 では早速新しいリポジトリを作って Git に触れてみることにしましょう。 何でもいいので、作業用ディレクトリを作成してみます。 $ mkdir prj1 $ cd prj1 ここで、リポジトリ新規作成コマンドを実行します。 $ git init 以下のようなメッセージが表示されるはずです。 Initialized empty Git repository in /path/prj1/.git/ これでリポジトリが作成されました。 メッセージからわかるように、リポジトリが今いるディレクトリと同じ場所に作成されています。 そう、Git はリポジトリを「作業ディレクトリ内」に作成します。 WORK_DIR |-- .git |-- file1 `-- folder `-- file2 これが SVN などとは大きく異なる点です。 ちなみに SVN では各ディレクトリ内(上で
Scala (SCAlable LAnguage) は、JVM 上で動く言語。 感じとしては Groovy などに似ているが、Scala の大きな特徴は「関数型言語」を取り入れていること。 この記事を作成するにあたって大いに参考にさせてもらったページが IBM developerWorks の技術文書である。 感謝したい。 [多忙な Java 開発者のための Scala ガイド] なお、この記事は Java の基本知識は持っているものとして話を進める。 最初に (2012/02/10) 文法 (2012/02/18) クラス定義 (2012/02/11) 関数 (2012/02/11) case class とパターンマッチング (2012/02/11) タプル(Tuple): 複数の値を返す (2012/02/11) Option と Some (2012/02/11) パッケージ宣言、
Android は独自の2Dグラフィックライブラリ、および OpenGL ES 1.0 を使ったハイパフォーマンスの3Dグラフィックをサポートしています。 二つの選択 2Dグラフィックを描画するとき、大きく分けて二つの方法があります。 View View オブジェクトにグラフィックやアニメーションを描画します。 この方法では、View が持つ一般的な描画規則に基づいて描画を行います。 Canvas Canvas に直接グラフィックを描画します。 この方法では、draw() や drawPicture() のメソッドを状況に応じて呼び出す必要があります。 View に描く方法は、動的に変化しないシンプルなグラフィックを描きたいときには最適な選択となります。 Canvas に描く方法は、アプリケーションが定期的な再描画を要求するときは良い選択となります。 一般的に多くのビデオゲームは Canv
Activity には、4種類の起動モードを割り当てることができます。 standard これがデフォルトです。 新しい Intent に応答するとき、新しいインスタンスが生成されます。 ※ 覚えていますか? Activity は常に Intent によって起動します よって、この Activity は、複数のインスタンスを生成することができます。 singleTop 新しい Intent に応答するとき、もし自身の Activity が「現在のスタックにあり、しかも最上位である」 場合に限り、そのインスタンスが再利用されます。 具体的に言うと、連続して同じ Activity を起動したときに、直前のインスタンスを再利用します。 現在のスタックに無かったり、あっても最上位に無い場合、新しいインスタンスが生成されます。 以下の重要な事を覚えておいて下さい。 いかなる場合においても、Inten
アプリケーションを起動すると、メインの Activity が起動します。 この Activity は Task と呼ばれる場所(スタック)に格納されます。 ※ Activity は UI を持ったコンポーネント 次にこの Activity が別の Activity を呼び出すと、その Activity は 同じスタック上に積まれます(PUSH)。 App-A Activity-A App-B Activity-B1 App-B Activity-B2 App-C Activity-C このように、スタックは異なるアプリケーションの Activity をまとめて持つことができます。 これによって、アプリケーションを使うユーザはそれらが別々のアプリケーションであることを 意識せずに作業することができます。 上の状態で Activity-C が完了する、もしくは [戻る] キーを押すと、最上位の
全てのアプリケーションは、AndroidManifest.xml ファイルを持っています。 ここに、アプリケーションのあらゆる情報を記述します。 <manifest> Manifest File のルート要素です。 package アプリケーションのパッケージ名を Full Qualified Name で指定します。 これは以下の用途で利用されます。 基準パッケージ名 コンポーネントのクラス名など、このパッケージからの相対パス名で記述できます。 プロセス名 アプリケーションが実行するときのデフォルトプロセス名として使用されます。 Affinity コンポーネントのデフォルト Affinity として使用されます。 android:sharedUserId 他のアプリケーションと共有したいLinuxユーザIDを指定します。 これによって、他のアプリケーションと同じプロセスでアプリケーション
ここは Android のページです。 導入 はじめに インストール、Hello World (2010/12/25) マニュアル 本家開発サイトの和訳です。 直訳ではない箇所もあるので、間違ってるところがあるかもしれません。 基本知識 Android 開発の基本 (2010/12/25) コンポーネントの基本 (2010/12/25) Task の基本 (2010/12/25) コンポーネントの Life Cycle (2010/12/25) Activity の起動モード (2010/12/25) プロセス、スレッドの基本 (2010/12/25) Intent について (2010/12/25) AndroidManifest.xml 詳細 (2010/12/25) UI UI の基本 (2010/12/25) UIイベントの基本 (2010/12/25) レイアウトの基本 (201
Android は、図形やイメージの描画およびアニメーションをするための カスタム2Dグラフィックライブラリを提供しています。 それらは android.graphics.drawable と android.view.animation パッケージにあります。 ここでは、Drawable オブジェクトを使った描画の基本を説明します。 移動・伸縮・回転を使ったアニメーション、および 「パラパラマンガ」の要領で作るアニメーションについても紹介します。 Drawables Drawable は「描くことができるもの」を表す抽象クラスです。 BitmapDrawable, ShapeDrawable, PictureDrawable, LayerDrawable など様々なものが使えます。 もちろん、あなたはこれらをさらにカスタマイズ(サブクラス化)して使うことも可能です。 Drawable イ
Intent について詳しく説明します。 Activity, Service, Broadcast Receiver の3つのコンポーネントは Intent と呼ばれるメッセージによってアクティブ化されます。 Intent によって同一、または異なるアプリケーションのコンポーネント同士を 動的に結びつけることが容易になります。 Intent はフィルタを持ち、これによって応答するコンポーネントを 動的に決定することが可能になります。 各コンポーネントへの Intent 配信メカニズムは、それぞれ独立しています。 Activity Context.startActivity() または Activity.startActivityForResult() によって Activity を起動、または既に存在する Activity を得ることができます。 ※ 後者の方法の場合、Activity.s
各レコードは、_ID という自身を識別するフィールドを持っています。 このフィールドは自身を識別すると同時に、他のテーブルとJOINする際にも利用されます。 問合せは、Cursor オブジェクトを返します。 これはJDBCで言えば ResultSet のようなものです。 ここから各行の値を取ってくることができるし、列の型を知ることもできます(ResulSetMetaDataのように)。 URI それぞれの Content Provider は、public URI を公開しています。 これが各データセットのユニークな識別子となります。 複数のデータセット(つまり複数のテーブルのデータ)は、それぞれが異なる URI によって公開されます。 URI は全て content:// から始まります。 この Scheme は、このデータが Content Provider によって提供されることを意
render ビューで似たようなHTMLを何度も記述する場合、それを テンプレートファイルとして分離することができる。 まぁこれはどのフレームワークにでもある当たり前の機能。 新規投稿画面を以下のように変更してみる。 app/views/posts/new.html.erb <h1>New post</h1> <%= render :partial => "form" %> <%= link_to 'Back', posts_path %> 2行目がその部分。 render :partial => "テンプレート名" とする。 実際のテンプレートファイルは、先頭に _ を付けて以下のように。 app/views/posts/_form.html.erb <% form_for(@post) do |f| %> <%= f.error_messages %> <p> <%= f.label
Natureについて Natureとは耳慣れない言葉かもしれません。 各プロジェクトには、そのプロジェクトが持つ属性のようなものが用意されていて それをNatureと呼びます。 例えば、Javaプロジェクトは org.eclipse.jdt.core.javanature というNatureを持っています。 このNatureによって、JavaファイルをSaveしたときに 自動的にclassファイルを作成したりしているのです(実際にはNatureが持つBuilder)。 Natureは属性ですので、一つのプロジェクトが複数のNatureを持つことが可能です。 Propertyについて Natureを作る前にまず、Property(プロパティ)の説明から始めます。 プロパティはPreferenceとよく似ています。 後者が「ワークスペース単位」の設定であるのに対して、 前者は「エレメント単位」
Eclipse を使いこなす上で重要なコマンド、それが Quick Fix(Ctrl-1) です。 これによりキータイプ数が減り作業効率がアップします。 サポートされているQuick Fixの種類は相当あるので、ここでその一覧を紹介します。 Package Declaration クラスの package 宣言がディレクトリの階層構造と合っていない時のサポートです。 Add missing package declaration or correct package declaration package宣言を、ディレクトリの階層構造に合わせて修正します。 簡単に言えば、クラスの配置位置 を正とするパターンです。 Move compilation unit to package that corresponds to the package declaration クラスをpackage宣
LFS (Linux From Scratch) に関する情報を載せていきます。 LFSって? (2010/01/27) LFSのインストール (2010/01/27) bash (2010/01/27) w3m, XFree86 (2010/01/27) zsh, screen, emacs, rxvt (2010/01/27) GTK (2010/01/27) fluxbox (2010/01/27) java, eclipse (2010/01/27) skkinput, skkserv2 (2010/01/27) proftpd (2010/01/27) gdm (2010/01/27) Firefox (2010/01/27)
Struts2を使った開発とはどんなものなのか。 まずはプロジェクトを新規作成してみよう。 なお、今後単に Struts と記述した場合には Struts2 を指すものとする。 明示的に Struts1 / Struts2 と記す場合もある。 今回は、JSPではなくVelocityを使う。 Struts2はどちらにも対応している。 参考ページ : Velocityのススメ Velocityで使用するテンプレートファイルのことを 以下VMファイルを記述する。これは Velocity Macro の略。 ダウンロード ダウンロードするファイルは以下。 Struts2 - Full Distribution をダウンロードしておけば問題なし Velocity - Engine, Tools の両方をダウンロード そしたら恒例のWebアプリケーション構成を作成。 これは自由だが、僕は大体以下のよう
ここは、僕がOracleを使いたくない理由をどんどん挙げていこうというコーナーです(笑)。 とはいっても僕は実際現場ではOracleを使う羽目になっているので 実際に使ってみて駄目だと感じた点について紹介していきます。 新しく書いたものが「上」になるように並べていきます。 PreparedStatement で CHAR 型を使うとき Oracle の JDBC でも当然 PreparedStatement は使えます。 SELECT * FROM XXX WHERE NAME=? のように、? を使ったバインド変数によるSQL文発行ができます。 ところが、この機能にとんでもないバグがあります。 NAMEカラムが CHAR(10) だったとしましょう。 PreparedStatement stmt = conn.preparedStatement("SELECT * FROM XXX WH
Mavenには、フィルタリング(Filtering)という概念があります。 簡単に言えば、ビルド時に動的なテキスト置換を行うことです。 例えば、リソースファイルに # application.properties application.name=${pom.name} application.version=${pom.version} のような形式の記述があった場合にそれを # application.properties application.name=Maven Quick Start Archetype application.version=1.0-SNAPSHOT に置き換えてビルドを行います。 もちろん、通常のファイルでフィルタリングをしては困るので デフォルトではこのフィルタ機能はOFFになっています。 フィルタ機能を有効にするには、pom.xml の resource
Builderについて Nature のところでちょっと説明した Builder についての詳細です。 あるプロジェクトの Nature 内で Builder を定義すると、 プロジェクト内のファイルが保存されるタイミングで毎回 Builder が実行されます。 また、プロジェクトのフルビルド時にも呼び出されます。 Builder の実装メソッドはたった一つです。 @Override protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException { } 色々引数が渡されてきますが、特に使わなくても大丈夫です(笑)。 通常使うのは、2つのメソッドだけです。 とりあえず簡単な例を載せてみます。 @Override protected IProject[] build(i
次のページ
このページを最初にブックマークしてみませんか?
『Unlimited Island』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く