MacとJavaと映画と


最近のエントリー


最近のレスポンス
Re: 麗しのサブリナ
やっぱりヘップバーンはいいですねー

Re: 麗しのサブリナ
ひさしぶりに侍ズムを開いたら、私の入り込...

Re: ドコモが iモード ID 発表
おさいふケータイの iD と勘違いしました。まぎわらしい。

Re: ホームシアター建設記 - TVボード会計
持ってた?いやいや、家族ですから。 フツーに一緒に引っ越しましたよ!!!
3月 2008
       1 
 2  3  4  5  6  7  8 
 9  10  11  12  13  14  15 
 16  17  18  19  20  21  22 
 23  24  25  26  27  28  29 
 30  31      
2  |  今日  |  4





はてなブックマーク数

あわせて読みたい


follow yusukey at http://twitter.com


・ Java 屋が触る C# / その1 - Visual Studio Express で Hello World
Java屋が触る C# / その2 - コマンドラインでコンパイル・実行
その3 - Mono のインストール・実行

C# は Microsoft が主導して規格制定している Java によく似た言語です。
コンパイルされたクラスは Windows ネイティブではなく、.NetFramework 上で動作するための中間コードになります。
最近では Windows 以外の環境で .Net のコードを動作させる環境 - Mono が盛り上がっており、マルチプラットフォームのアプリケーションを開発する基盤として Java に次ぐ選択肢となり得ます。
それどころか Mono の上で Java や Python, Ruby を動かすこともできるようです。
言語に依存しない実行環境である .NetFramework の特徴をうまく利用していますね。
- http://www.mono-project.com/Languages

Mono の上で Eclipse を動かしているというスクリーンショットもあります。Java との互換性は相当進んでいるのではないでしょうか。


Mono を使ったマルチプラットフォームアプリケーションとしてはimeemがあります。
これは "Social Media" を謳うアプリケーションで、基本は Yahoo! Messenger、Windows Live Messenger、AIM といった各プロトコルに対応するチャットクライアントです。
面白いのはチャットクライアントをベースに写真や動画を共有することができたり、友達の友達、といった形で辿ったりすることができる新しいコンセプトのツールです。
もともと Windows 用に作ったアプリケーションですが、Mac 版を1から作らなくて済むよう Mono を利用してコードの大幅な共通化を図っているとのことです。
ダウンロードして動かしてみれば分かりますが、Cocoa のネイティブアプリケーションと変わらないルック&フィールで自然に動きます。

Mac OS X 上で動く imeem


というわけで、個人的に注目していたのですが、なかなか手がつけられないでいました。
そんなところ、ちょうど最近仕事で C# の API を触る機会があり、さらに Paralles Desktop 上で Windows XP が快適に動くという状況なので C# プログラミングを楽しんでみることにしました。
Java エンジニアの視点で、今回はひとまず Hello World を実行するところまでやってみたいと思います。

・Visual Studio Express のインストール
Visual Stuidio Express は Microsoft が提供する無償のプログラミング環境で、商用利用もできるそうです。

まず、ダウンロードしたのは CD イメージ。
- Visual Studio 2005 Express Edition - CD イメージからのインストール方法

上記ページには CD イメージを焼かずに Windows で直接マウントする方法が書かれていますが、今回は Mac 側に iso イメージをダウンロードして Parallels Desktop で指定してマウントしました。
インストール自体は特に迷うことなく簡単にできました。


・Hello World の作成
とりあえず Hello World を作ります。GUIを持たないアプリケーションを作るには[ファイル>新しいプロジェクト>コンソール アプリケーション] を選択します。
すると、以下のようなアプリケーションの雛形が作成されました。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
 class Program
 {
  static void Main(string[] args)
  {
  }
 }
}


Java との大きな違いは import が using に、package が namespace に、クラス名だけじゃなくメソッド名も大文字になっているといったところでしょうか。
Hello World とコンソールに表示させるのは簡単。
以下のメソッドを Main メソッドに追加するだけです。
System.Console.WriteLine("Hello World");
太古の昔にどこかの雑誌で読んだ記事の記憶を頼りに、特にリファレンスを見ることなく書けてしまいました。

実行ボタンを押すと・・・一瞬コマンドプロンプトが表示されたかと思うとすぐ消えてしまいますが、一応動いているようです。
あまりに一瞬なのでスクリーンショットは撮れませんでした。

Visual Studio で Hello World

とりあえず C# に触れることが出来ました。
最後に比較のため、C# と Java の同等のコードを載せます。

- C# のコード: Program.cs
namespace ConsoleApplication1
{
 class Program
 {
  static void Main(string[] args)
  {
   System.Console.WriteLine("Hello World");
  }
 }
}

デフォルトで宣言されていた using System; は省略してもコンパイルできました。
Java でいう java.lang.* のパッケージと同じく暗黙的に使えるようになっているようです。

- Java のコード: Program.java
package ConsoleApplication1;

 class Program
 {
  public static void main(String[] args)
  {
   System.out.println("Hello World");
  }
 }
}


なぜだかよく分かりませんが C# は Main メソッドは public でなくても良いようです。

次回はたぶんコマンドプロンプトからコンパイル・実行する方法を調べてみます。

タグ : , , ,

チュートリアルを最初から読んでいくのは早速飽きました。
まぁ文法さえわかればあとは API リファレンスを見れば良いだろうということでアンチョコ(Cheat Sheet)を探しました。
パッと見つかったのは以下の2つ。
・Python 101 cheat sheet
http://www-128.ibm.com/developerworks/library/l-cheatsheet3.html

・Python Cheat Sheet
http://www.yukoncollege.yk.ca/~ttopper/COMP118/rCheatSheet.html

ざっとコレを見ながら何か作ってみれば覚えも早いかな?

ついでに見つけたのが Java や HTML、vi、Oracle などエンジニアに役立ちそうなアンチョコへのリンクが 30 以上も掲載されているページ。
良く触る言語・製品のはプリントアウトして手元に置いておくと良いかもしれません。
・Cheat Sheet Roundup - Over 30 Cheatsheets for developers
http://www.petefreitag.com/item/455.cfm

タグ :

WebLogic Server 9.x には Java ベースの Python 実装、Jython が含まれています。
Jython は Python のコードを Java のバイトコードに変換して実行します。結果的には Python コードが (JVM の実装、判断次第では)ネイティブコードで動くことになります。
使い方は簡単、setEnv.sh/cmd で環境変数を整えて weblogic.WLST クラスを起動するだけ。引数を指定しなければインタラクティブモードになり、Pythonコードが書かれたファイルを指定すれば直接起動します。

~/bea92/weblogic92/samples/domains/wl_server$ . bin/setDomainEnv.sh 
-bash: Don't know how to set the shared library path for Darwin.
~/bea92/weblogic92/samples/domains/wl_server$ java weblogic.WLST

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

wls:/offline> 1+2
3
wls:/offline> _
3
wls:/offline> hello = "hello"
wls:/offline> hello[0:2]
'he'
wls:/offline> ^D
~/bea92/weblogic92/samples/domains/wl_server$ cat hello.py
print "hello"
~/bea92/weblogic92/samples/domains/wl_server$ java weblogic.WLST hello.py

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

hello$ cat hello.py
print "hello"
~/bea92/weblogic92/samples/domains/wl_server$ java weblogic.WLST hello.py

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

hello
~/bea92/weblogic92/samples/domains/wl_server$


Jython について詳しくはこちら。
http://www.jython.jp/
http://www.jython.org/Project/index.html
http://sourceforge.net/projects/jython/

タグ :

今回は 3. An Informal Introduction to Python
斬新な文法だらけでほとんど丸写しに近いメモになってしまいました。

インタラクティブモードでは式を評価した結果が即座に表示されます。

$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> "hello"
'hello'
>>>


最後に評価された値は "_" で参照できます。
>>> 2*3
6
>>> _*4
24
>>> "hello"
'hello'
>>> _+" world"
'hello world'
>>>


ダブル(シングル)クオーテーション3つで囲むと改行やダブル(シングル)クオーテーションをエスケープせずに記述できます。
>>> """
... This
... is
... "a"
... sentence
... """
'\nThis\n is\n "a"\nsentence\n'
>>> _
'\nThis\n is\n "a"\nsentence\n'
>>> print _

This
is
"a"
sentence

>>>


ダブルクオーテーションで囲むとシングルクオーテーションをエスケープせずに掛けます。逆も然り。
>>> "It's a SONY"
"It's a SONY"
>>> 'It\'s a "SONY"'
'It\'s a "SONY"'
>>> print _
It's a "SONY"


r" で始めると Raw text として認識され、エスケープが行われません。
>>> hello = r"This is a raw text\
... '\n' won't be converted."
>>> print hello
This is a raw text\
'\n' won't be converted.
>>>


サブストリングの抽出はこんな感じ。
>>> hello = "hello"
>>> hello[0]
'h'
>>> hello[10]
Traceback (most recent call last):
File "", line 1, in ?
IndexError: string index out of range
>>> hello[0:2]
'he'
>>> hello[:2]
'he'
>>> hello[2:]
'llo'
>>> hello[-2]
'l'
>>> hello[-2:]
'lo'
>>> hello[:-2]
'hel'
>>>

タグ :

Python に手をつけてみました。
とりあえず本家のチュートリアルベースに勉強しながら忘れそうなことをメモしていくことにします。
・Python Tutorial
http://docs.python.org/tut/tut.html

- Mac OS X の Python
Mac OS X は標準で Python がインストールされてます。

$ py[tab]
pydoc pydoc2.4 python2.3 pythonw
pydoc2.3 python python2.4 pythonw2.3
$ whereis python
/usr/bin/python
$ ls -la /usr/bin/python
lrwxr-xr-x 1 root wheel 9 May 1 2005 /usr/bin/python -> python2.3
$ python2.3
Python 2.3.5 (#1, Feb 19 2006, 00:26:06)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit
'Use Ctrl-D (i.e. EOF) to exit.'
>>> ^D
$ python2.4
Python 2.4.2 (#1, Feb 18 2006, 23:37:11)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

どうやら Python2.3.5 / 2.4.2 がインストールされていて、python は python2.3 へリンクが張られてるらしい。

というわけで 2. Using the Python あたりを実践。

- Python の実行方法
・インタラクティブモード
コマンドラインから python とうつだけ
$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello"
hello
>>> ^D

・ファイルに保存して
$ cat hello.py 
print "hello"
$ python hello.py
hello

・直接実行
$ cat hello.py 
#! /usr/bin/env python
print "hello"
$ chmod +x hello.py
$ ./hello.py
hello


- エンコーディングの指定方法
$ cat hello.py 
#! /usr/bin/env python
# -*- coding: Shift_JIS -*-
print "こんにちは"
$ ./hello.py
File "./hello.py", line 2
SyntaxError: 'unknown encoding: Shift_JIS'

そんなエンコーディングは知らないとエラーがでた。
"SyntaxError" ってのはなんかニュアンスがおかしいけど・・。
調べてみるとJapaneseCodecsっていうパッケージ(?)が必要らしい。
日本語環境でのPython (for Python 2.3 or later)
Python2.4 ではデフォルトで含まれているそう。
また、エンコーディングの指定はもうちょっとシンプルに、
# coding: エンコーディング名
で良いらしい。
使えるエンコーディングの一覧はこちら
http://docs.python.org/lib/standard-encodings.html

というわけで Python2.4 で動かしてみる。
$ cat hello.py 
#! /usr/bin/env python
# -*- coding: shiftjis -*-
print "日本語"
$ python2.4 hello.py
Bus error

バスエラーが発生。なんとなく euc にしてみたら・・
$ cat hello.py 
#! /usr/bin/env python
# -*- coding: eucjp -*-
print "日本語"
$ python2.4 hello.py
日本語

動いた。

タグ :