2013年05月23日

Groovyを使ってみました(6)


例外処理
−−−−−−−−−−−−−−−−−−−−−−−−
■記述例
−−−−−−−−−−−−−−−−−−−−−−−−

try {
Integer x = Integer.parseInt("どーだろ")
println("答えは" + (100/x))
} catch(ArithmeticException e) {
println("ArithmeticExceptionをキャッチ")
} catch(NumberFormatException e) {
println("NumberFormatExceptionをキャッチ")
} catch(e) {
print(e)
} finally {
println("This program was finished")
}

<出力結果>
NumberFormatExceptionをキャッチ
This program was finished
posted by rururu at 00:09| Comment(0) | TrackBack(0) | Groovy

2013年05月22日

Groovyを使ってみました(5)


Groovyでクラスを書いてみました。
クラス変数の宣言時にアクセス修飾子を省略した場合、
publicなsetter/getterメソッドを持つprivate変数とみなされます
(アクセス修飾子を指定した場合は、その修飾子どおりのスコープになります)

------------------------------
■サンプル
------------------------------

class Product {
String code
String name
Integer price
}

def a = new Product(code:"0001",name:"パソコン",price:50000)

println(a.code)
println(a.name)
println(a.price)

------------------------------
■実行結果
------------------------------
0001
パソコン
50000
posted by rururu at 01:44| Comment(0) | TrackBack(0) | Groovy

2013年05月21日

Groovyを使ってみました(4)


――――――――――――――――――――
配列
――――――――――――――――――――
def a = new Integer[5]
a[0] = 10
a[1] = 30
a[2] = 50
a[3] = 70
a[4] = 100
for (x in a) {
println(x)
}
<実行結果>
10
30
50
70
100

――――――――――――――――――――
リスト
――――――――――――――――――――
def list1 = []
list1.add(10)
list1.add(30)
list1.add(50)
list1.add(70)
list1.add(100)
for (x in list1) {
println(x)
}

――――――――――――――――――――
マップ(連想配列)
――――――――――――――――――――
def map = [name: "sakai", location: "Japan"]
for(e in map) {
println "entry $e.key is $e.value"
}
<実行結果>
entry name is sakai
entry location is Japan

――――――――――――――――――――
レンジ
――――――――――――――――――――
range1 = 0..5
for (x in range1) {
println x
}
<実行結果>
0
1
2
3
4
5
posted by rururu at 02:42| Comment(0) | TrackBack(0) | Groovy

2013年05月19日

Groovyを使ってみました(3)


・分岐(if、switch)
・繰り返し(for、while)
→Groovyには、doがない。
・繰り返しの制御(break, continue)

――――――――――――――――――――――
■if (分岐)
――――――――――――――――――――――
if (条件式) {
// 処理1
} else {
// 処理2
}

if (条件式1) {
// 処理1
} else if (条件式2) {
// 処理2
} else {
// 処理(条件式1,2以外の時)
}

<例>
def a = 5
def b = 5
if( a == b ) {
println "equal"
}

――――――――――――――――――――――
■switch (多重分岐)
――――――――――――――――――――――
switch 変数 {
case 1:
// 処理
case 2:
// 処理
case 3:
// 処理
default:
}

<例>
def a = 3
switch (a){
case 1:
println "1 desu"
break
case 2:
println "2 desu"
break
case 3:
println "3 kayo"
break
default:
println "1,2,3 igai"
}
―――――――――――――――――――――――――――――
■for
―――――――――――――――――――――――――――――

<例>・・・掛け算九九の結果を表示

def tmpValue = new StringBuilder()
def keisan
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
keisan = i * j
if (1 >= keisan || keisan <= 9) {
tmpValue.append(" " + keisan)
} else {
tmpValue.append(" " + keisan)
}
}
tmpValue.append("\n")
}
println(tmpValue.toString())

―――――――――――――――――――――――――――――
■while
―――――――――――――――――――――――――――――
<例>・・・掛け算九九の結果を表示
def tmpValue = new StringBuilder()
def i = 1
def j = 1
def keisan = 0

while (i <= 9) {
j = 1
while (j <= 9) {
keisan = i * j
if (1 >= keisan || keisan <= 9) {
tmpValue.append(" " + keisan)
} else {
tmpValue.append(" " + keisan)
}
j++
}
tmpValue.append("\n")
i++
}
println(tmpValue)

―――――――――――――――――――――――――――――
■break, continue
―――――――――――――――――――――――――――――
break文が実行されると、ループが終了していなくてもループから抜けます。
continue文が実行されると、いったんループの先頭に戻ります。

<例> (break)
def tmpValue = new StringBuilder()

for(j=1;j<=10;j++) {
for(i=j;i<=10;j++) {
tmpValue.append(i + " ")
if (i == j) {
break
}
}
}
println(tmpValue)

<例> (continue)
for(i=1;i<=10;i++) {
if(i % 2 == 0) {
continue
} else {
print(i + " ")
}
}
posted by rururu at 23:23| Comment(0) | TrackBack(0) | Groovy

Groovyを使ってみました(2)


―――――――――――――――――
■括弧やセミコロン
―――――――――――――――――
・省略可能です。

―――――――――――――――――
■コメント
―――――――――――――――――
(1) 1行のコメント
(「//」より後の文字がコメントとなります。)
// コメント
(2) 複数行のコメント
(「/*」と「*/」で囲んだブロックがコメントとなります。)
/*
コメント
*/

―――――――――――――――――
■変数
―――――――――――――――――
defキーワードはどんな型でもよいということを示すために使われます。
明示的に型を指定してもよい。

(例)
def a = 1
def b = 1.0f
int c = 1
float d = 1
Integer e = 1
String f = '1'

―――――――――――――――――
■定数
―――――――――――――――――
finalという修飾子を付けて宣言した変数は変更できません。
一度だけ値を代入できます。
(例)
final b = 20

―――――――――――――――――
■インクリメント(++)、デクリメント(--)
―――――――――――――――――
(例)
def a = 1
def b = 2

a++
println(a)
++a
println(a)
b--
println(b)
--b
println(b)

<実行結果>
2
3
1
0
posted by rururu at 12:54| Comment(0) | TrackBack(0) | Groovy

Groovyを使ってみました(1)


Groovy(グルービー)は、Javaプラットフォーム上で動作するアジャイルな動的プログラミング言語。
オープンソース。

日本語の本も何冊か出てるみたいです。
・プログラミングGROOVY
・Groovyイン・アクション
・Grails徹底入門
・はじめてのGrails―「Ruby on Rails」風の「フレームワーク」をJavaで使いこなす!

ちなみに、Grails(グレイルズ)は、Groovy を使用するオープンソースのWebアプリケーションフレームワーク。
NTTソフトウェアで使われてるようです。http://www.ntts.co.jp/products/grails/

■HelloWorld

println "hello world"

■Groovy CodePad(http://groovycodepad.appspot.com/)で実行

hello world
posted by rururu at 02:03| Comment(0) | TrackBack(0) | Groovy

2013年05月18日

Go言語を使ってみました(6)


Javaのthrowに当たる構文は、panic関数。
goでは、Javaのcatchに直接対応する構文は存在しない。
recover関数と、 deferを組み合わせて類似した動作を実現するっぽい。

<使用例>
package main

import "fmt"
impott "os"

func Muri() {
defer func() {
cause := recover()
fmt.Fprintln( os.Stderr, cause )
}()

panic( "エラーですかぁ" );
}

func main() {
Muri()
}
posted by rururu at 13:21| Comment(0) | TrackBack(0) | Go

2013年05月17日

Go言語を使ってみました(5)


Goでクラスを書いてみました。
------------------------------
■サンプル
------------------------------
package main

import "fmt"

type Product struct {
code string
name string
price int

}

func NewProduct(pcode string, pname string, pprice int) *Product {
obj := new(Product)
obj.code = pcode
obj.name = pname
obj.price = pprice
return obj
}

func (self *Product) getCode() string {
return self.code
}

func (self *Product) getName() string {
return self.name
}

func (self *Product) getPrice() int{
return self.price
}

func main() {
product := NewProduct("0001","パソコン",50000)
fmt.Println(product.getCode())
fmt.Println(product.getName())
fmt.Println(product.getPrice())
}

------------------------------
■実行結果
------------------------------
0001
パソコン
50000
posted by rururu at 01:58| Comment(0) | TrackBack(0) | Go

2013年05月16日

Go言語を使ってみました(4)


――――――――――――――――――――
サンプル1
――――――――――――――――――――
package main

import "fmt"

func main() {
a := make([]int, 5)
a[0] = 10
a[1] = 30
a[2] = 50
a[3] = 70
a[4] = 100
for i := 0; i < len(a); i++ {
fmt.Printf("a[%d]:%d\n", i,a[i])
}
}

<実行結果>
a[0] : 10
a[1] : 30
a[2] : 50
a[3] : 70
a[4] : 100

――――――――――――――――――――
サンプル2
――――――――――――――――――――
package main

import "fmt"

func main() {
moji := []string{"PHP", "Java", "Servlet", "Webアプリケーション", "SQLインジェクション対策"}
for i := 0; i < len(moji); i++ {
fmt.Printf("%s\n", moji[i])
}
}
<実行結果>
PHP
Java
Servlet
Webアプリケーション
SQLインジェクション対策
posted by rururu at 02:11| Comment(0) | TrackBack(0) | Go

2013年05月15日

Go言語を使ってみました(3)


・分岐(if、switch)
・繰り返し(for)

――――――――――――――――――――――
■if (分岐)
――――――――――――――――――――――
if 条件式 {
// 処理1
} else {
// 処理2
}

if 条件式1 {
// 処理1
} else if (条件式2) {
// 処理2
} else {
// 処理(条件式1,2以外の時)
}

<例>
import "fmt"

func main() {
var a = 5
var b = 5
if( a == b ) {
fmt.Println( "a と bは同じ値" )
}
}

――――――――――――――――――――――
■switch (多重分岐)
――――――――――――――――――――――
switch 変数 {
case 1:
// 処理
case 2:
// 処理
case 3:
// 処理
default:
}

<例>
import "fmt"

func main() {
var a = 3
switch (a){
case 1:
fmt.Println("1ですか")
case 2:
fmt.Println("2ですね")
case 3:
fmt.Println("3かよ")
default:
fmt.Println("1,2,3以外ですけど")
}
}
―――――――――――――――――――――――――――――
■for
―――――――――――――――――――――――――――――
// Cのforに相当する形式
for init; condition; post { }

// Cのwhileに相当する形式
for condition { }

// Cのfor(;;)に相当する形式
for { }

<例>・・・掛け算九九の結果を表示
package main

import "fmt"
import "bytes"
import "strconv"

func main() {
var tmpValue bytes.Buffer
var keisan int
for i := 1; i < 10; i++ {
for j := 1; j < 10; j++ {
keisan = i * j
if 1 >= keisan || keisan <= 9 {
tmpValue.WriteString(" " + strconv.Itoa(keisan))
} else {
tmpValue.WriteString(" " + strconv.Itoa(keisan))
}
}
tmpValue.WriteString("\n")
}
fmt.Println(tmpValue.String())
}

posted by rururu at 01:30| Comment(0) | TrackBack(0) | Go

2013年05月14日

Go言語を使ってみました(2)


―――――――――――――――――
■文の末尾
―――――――――――――――――
・「;」が不要です。
ある単純なルールに基づき自動的にセミコロンを
付け加えているらしいです。

―――――――――――――――――
■コメント
―――――――――――――――――
(1) 1行のコメント
(「//」より後の文字がコメントとなります。)
// コメント
(2) 複数行のコメント
(「/*」と「*/」で囲んだブロックがコメントとなります。)
/*
コメント
*/

―――――――――――――――――
■変数
―――――――――――――――――
・var [変数名] = [値]
・[変数名] := ([値])

(例1)
var a = 1;

(例2)
a := (1);

―――――――――――――――――
■定数
―――――――――――――――――
constという修飾子を付けて宣言した変数は変更できません。
一度だけ値を代入できます。
(例)
const b = 20

―――――――――――――――――
■インクリメント(++)、デクリメント(--)
―――――――――――――――――
(例1)
var a = 10
a++

(例2)
var a = 10
a--

----------------------------------
aの値|11
----------------------------------
bの値|9
----------------------------------
posted by rururu at 00:05| Comment(0) | TrackBack(0) | Go

2013年05月12日

Go言語を使ってみました(1)

Go言語を使ってみました(1)


Googleの開発者によってBSDライセンスの元に公開されたプログラミング言語
本も何冊か出てるみたいです。

■インストール方法は以下のサイトに載っています。
 ・インストーラをダウンロードしてインストール
http://golang.jp/install

■HelloWorld
(1)ファイル作成(hello.go)

  package main

  import "fmt"

  func main() {
  fmt.Printf("hello, world\n")
  }

(2)次に、コマンドプロンプトを起動し、go ツールを使って実行します。

go run hello.go


(3)以下の内容が表示されれば成功です。

hello, world
posted by rururu at 23:30| Comment(0) | TrackBack(0) | Go

2013年05月01日

セミナー情報(2013/05/01)


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
「Community Open Day 」
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

■日時 2013年5月11日(土) 10:00 – 16:50 (9:00受付開始)
懇親会:17:15 – 18:30
■東京会場 日本マイクロソフト株式会社品川本社 31Fセミナールーム
東京都港区港南2-16-3 品川グランドセントラルタワー
* JR 品川駅 港南口よりスカイウェイにて直結 徒歩3分
* 京浜急行 品川駅より 徒歩6分
■エリア会場 全国 7 か所(札幌、仙台、名古屋、石川、大阪、広島、沖縄)同時開催
■主催
マイクロソフト技術コミュニティ supported by
■参加費用 無料
■参加対象 IT業界に興味のある18歳以上の方(社会人、学生問わず) 300名
http://cod.ms/Pages/career.aspx

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
LPICレベル2 技術解説無料セミナー
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 ≫≫ 浜松町 / コンベンションルーム AP浜松町〔開催日:2013年5月18日(土)〕
 http://www.lpi.or.jp/m/news/event/2013/05/event_20130518_01.shtml

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
第163回 初心者歓迎!DB2の使い方【管理管理編】
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

時間 5月24日(金)19時 〜 21時
場所 IBMイノベーション・センター 18Fセミナールーム(渋谷)
東京都渋谷区道玄坂1-12-1 渋谷マークシティ・ウェスト18F
JR/東京メトロ銀座線・半蔵門線・副都心線/東急東横線・田園都市線・京王井の頭線
渋谷駅徒歩5分
https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/ClubDB2/page/%E7%AC%AC163%E5%9B%9E

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
LPICレベル1 技術解説無料セミナー
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 ≫≫ 浜松町 / コンベンションルーム AP浜松町〔開催日:2013年5月25日(土)〕
 http://www.lpi.or.jp/m/news/event/2013/05/event_20130525_01.shtml

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[大阪] オープンソースカンファレンス2013 Cloud@Osaka
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年5月25日(土)
http://www.ospn.jp/osc2013.cloud-osaka/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
PHPカンファレンス関西2013
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年6月1日(土)10:30-16:40(10:00開場)

■開催場所
大阪産業創造館イベントホール

■テーマ
「PHPの未来を関西から」

■参加費用
無料

■定員
200名(予定)
http://conference.kphpug.jp/2013/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
OSS-DB Gold 技術解説無料セミナー
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
≫≫ 浜松町 / コンベンションルーム AP浜松町〔開催日:2013年6月15日(土)〕
http://www.oss-db.jp/news/event/2013/06/event_20130615_01.shtml

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[名古屋] オープンソースカンファレンス2013 Nagoya
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年6月21日(金/午後のみ開催)・22日(土)
http://www.ospn.jp/osc2013-nagoya/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[沖縄] オープンソースカンファレンス2013 Okinawa
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年7月6日(土)
http://www.ospn.jp/osc2013-okinawa/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[京都] オープンソースカンファレンス2013 Kansai@Kyoto
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年8月2日(金)・3日(土)
http://www.ospn.jp/osc2013-kyoto/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[島根] オープンソースカンファレンス2013 Shimane
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年8月24日(土)
http://www.ospn.jp/osc2013-shimane/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[北海道] オープンソースカンファレンス2013 Hokkaido
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年9月14日(土)
http://www.ospn.jp/osc2013-do/

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
PHPカンファレンス2013
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■開催日時
2013年9月14日(土)
http://phpcon.php.gr.jp/w/2013/
posted by rururu at 08:09| Comment(0) | TrackBack(0) | セミナー情報