Hatena::ブログ(Diary)

チラシ裏日記上等!! このページをアンテナに追加 RSSフィード Twitter

2013-02-18 はてなブログへ移転しました

はてなブログへ移転しました

| 23:28 | はてなブログへ移転しましたを含むブックマーク はてなブログへ移転しましたのブックマークコメント

題名の通りはてなブログに移転しました。ここに書くのはこれで最後になりますね。

ついでにと思い独自ドメインでこれからはブログを運営していきます。あと技術系のエントリを書くブログと日常系のエントリを書くブログも分けてみました。

よろしければ両方ともご贔屓にお願いいたします。

はてなブログ

チラシ裏日記上等!!新館

2012-09-18

onTouchEventを使ってタッチで画像を変えるコード

| 00:10 | onTouchEventを使ってタッチで画像を変えるコードを含むブックマーク onTouchEventを使ってタッチで画像を変えるコードのブックマークコメント

機種変をしてIS03がフリーになったのでこれをアプリの開発機にしてAndroidアプリ開発にチャレンジして見たいと思います。本当は仕事でやりたかったなぁと思いつつ、今後仕事でやることもあるだろうと思いレッツ勉強!

Androidといえばタッチなのでとりあえずタッチイベントで適当に画像が変わるコードを書きました。

package net.chirashiura.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.MotionEvent;
import android.widget.ImageView;

public class HelloWorld extends Activity{

	int imageID = R.drawable.theta;

	ImageView imgView = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		imgView = new ImageView(this);

		imgView.setImageResource(imageID);
		setContentView(imgView);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {

		if(event.getAction() == MotionEvent.ACTION_DOWN){
			if(imageID == R.drawable.theta){
				imageID = R.drawable.rena;
			} else {
				imageID = R.drawable.theta;
			}

			imgView.setImageResource(imageID);
		}
		return super.onTouchEvent(event);
	}
}

とても簡単にできました。ちょっとonTouchEventメソッドのeventのあたりで多少手間取ったぐらいです。

onTouchEventの引数として与えられているMotionEventのインスタンスからgetActionメソッドでどんなアクションをしたのか取得してそれがACTION_DOWN、画面が押されたかどうかで判定して画面が押されたようであれば画像を変える処理が走るという感じ。恥ずかしくなるぐらいしょぼいですね。

実際のスクリーンショットではこんなのがタッチをすると。

f:id:Tomato-360:20120919000657p:image

こんなのに変わります。

f:id:Tomato-360:20120919000658p:image

画像は気にしないでください。

IS03って結構しょぼい端末ですけど、タッチで画像を変えるぐらいならさくさく動きます。とりあえずIS03を基準にして開発を行っていけば他の端末では快適なのかなぁと思ったり。

しばらくは重いアプリは作れないとおもうけど少しずつできることを増やしてゆくゆくはゲームなんか作りたいですね。

2012-07-19

AspectJというものを触る

| 23:39 | AspectJというものを触るを含むブックマーク AspectJというものを触るのブックマークコメント

仕事でAspectJを使うことになったのでメモ。

AspectJ独自の構文を使ってアスペクトを作るのだけど、javaらしくない書き方というか、とにかく慣れないので普通のクラスをアスペクトにする。アノテーション@Aspectclassの前につけるとそのクラスがアスペクトになる。同じように@Pointcutと@Beforeや@Afterをメソッドの前につけるとAspectJ独自の構文と同じようにポイントカットとアドバイスを定義できる。

package com.rakugakicho.testaspect;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class MyAspect {

	@Pointcut("call(@MyAnnotation * *.*(..))")
	public void MyPointCut(){

	}

	@Before("MyPointCut()")
	public void beforeMethod(){
		System.out.println("before");
	}

	@After("MyPointCut()")
	public void afterMethod(){
		System.out.println("after");
	}
}

@Pointcutのなかのcallにはアスペクトを織り込むメソッドを書き込む。ここではワイルドカードである*をつけて全てのクラスの全てのメソッドを指定している。ただ全てのメソッドを指定すると自分のメソッドまで指定してしまって都合が悪いのでアノテーションを使って織り込むメソッドを限定している。このアノテーションでの指定がかなり強力だと思っている。指定したメソッドのログをとりたいと思ったらアノテーションをつけてやればいいという感じでいろいろできそう。

実際に織り込むクラスを以下に示す。

package com.rakugakicho.testaspect;

public class TestMain {
	public static void main(String[] args){
		TestMain testMain = new TestMain();

		testMain.testMethod();
	}

	@MyAnnotation
	public void testMethod(){
		System.out.println("test");
	}
}

package com.rakugakicho.testaspect;

public @interface MyAnnotation {
  //アノテーションの書き方実はよくわかってない
}

実行結果は以下のようになる。

before
test
after

ちゃんと織り込まれている。

いろいろできそうだけどいまいち使い方がわからない。でもちょっとおもしろいので仕事以外にも活用してみたい。

本もウェブ上にもあまり情報がないが、この本が役に立ちそう。

AspectJ in Action: Enterprise AOP With Spring

AspectJ in Action: Enterprise AOP With Spring

洋書で骨が折れそうだが、まぁ英語の勉強にもなると思って読んでみることにする。

2012-06-07

ドットインストールのステッカーを買った

| 23:47 | ドットインストールのステッカーを買ったを含むブックマーク ドットインストールのステッカーを買ったのブックマークコメント

プログラミングを学べるドットインストールがステッカーを売り出したということで買ってみた。

256times

3枚で1000円とちと高いけど、好きなWebサービスなので応援したいと思い購入に踏み切った。購入にはPaypalを使用しているので払いやすい。いずれPaypalを使うためにはどうすればいいかの講座も出してくれれば楽しいだろうな。

f:id:Tomato-360:20120607234534j:image:w640

ちゃんとドットインストールから届いている。

f:id:Tomato-360:20120607234535j:image:w640

こんな感じで届いた。何に貼ろうかな?そのうち新調するであろうノートパソコンに貼りたいところだ。

2012-05-27

Servletでsessionを管理するときのメモ

| 23:09 | Servletでsessionを管理するときのメモを含むブックマーク Servletでsessionを管理するときのメモのブックマークコメント

個人的メモ。Servletとかでsessionを管理するとき使うと便利なリスナ。session作成時と破棄時の処理が書けるのでいろいろと使い道がありそう。

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class MyWebListener implements HttpSessionListener{

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		//セッション作成時の処理を書く

	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		//セッション破棄時の処理を書く

	}

}

Servlet 3系列なのでアノテーションがついてる。このアノテーションをつけておくと自動的に判別してくれる。便利。

Connection: close