Mavenで指定したクラスを実行する

Maven

mvn test -Dtest=org.sample.Hoge

とするとテストファイルを実行してくれます。
main/javaの中にあるファイルを指定して実行したいと思ってたらあった。

http://mojo.codehaus.org/exec-maven-plugin/
pom.xml編集して

mvn exec:java -Dexec.mainClass="com.example.Main"

みたいにやるとできるみたい。
test/javaの中にあるファイルはテストファイルとして実行されるけど普通のファイルのみたくmainメソッド呼べないのかな

GALAXYS IIをUbuntuで認識させる

GALAXYS II側の設定

設定>アプリケーション>開発>USBデバッグ

を有効にする。これだけです

android-sdkの導入

Download Android Studio and SDK tools からandroid-sdkを取得し、適当な所に解凍しパスを通します。

export PATH=$PATH:/android-sdkまでのパス/android-sdk-linux_86/tools

よくわからないけど

/etc/udev/rules.d/51-android.rules

を開いて以下を追加します。

SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"

USBデバイスのベンダIDを登録しないといけないらしくSamsungは"04e8"となります。

これらの設定をしたらUSBで銀河2とPCをつないでターミナルで

adb devices

と入力すれば銀河2が認識されているのがわかるとおもいます。

IS04(REGZA Phone)で実機テストする方法

自分の環境では
adakoda.com - 

Android biboroku;): IS04に開発アプリを入れてみる - HelloWorld
の記事通りにやればできた。

後輩の環境構築でつまったのでその時のメモ。
とりあえず

adb devices

で確認したがどうも認識されていないっぽい
windowsXPでコントロールパネル→システム→ハードウェア→デバイスマネージャ、からデバイスマネージャを開く。
AndroidPhoneみたいな項目があるはずなので右クリックでプロパティ→ドライバタブ→ドライバの更新、でドライバの更新を行った。
「今インストールされているのよりいい感じのソフトがみつかんねーよ」みたいなこと言われて変化なし。
なのでデバイスマネージャ上で右クリックして削除して再起動。
もう一度インストールをしようとした、するとインストールの途中に

WinUSBCoInstaller.dllがあるフォルダどこや

というウィンドウが表示された。いまいちどういった文章がでてたか覚えてない…
なのでIS04開発用USBドライバ(下記からダウンロードできる)の中に
http://www.fmworld.net/product/phone/sp/android/develop/is04_usb/download.html

usb_driver_IS04/i386/WinUSBCoInstaller.dll

あった。
これを指定してあげたらインストールできた。正しく認識されてる!!adb devicesって叩くとリストに表示される!

JavaのHTMLパーサー色々

Java HTML

あるページの画像とリンクのURLをすべて取得するサンプルを書いてみる。
大体一緒だから他のサンプルも後で書くか…

import java.io.IOException;
import java.net.MalformedURLException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SampleJsoup {
	
	public static void main(String[] args) {
		String url = "ゆーあーるえる";
		try {
			Document doc = Jsoup.connect(url).get();
			Elements links = doc.select("a[href]");
			Elements imgs = doc.select("[src]");
			
			for(Element img : imgs){
				if(img.tagName().equals("img")){
					System.out.println(String.format("%s : <%s>",img.tagName(),img.attr("abs:src")));
				}
			}
			
			for(Element link : links){
				System.out.println(String.format("%s : <%s>",link.tagName(),link.attr("abs:href")));
			}
			
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch bklock
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
import java.io.InputStream;
import java.net.URL;

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class SampleCyberNekoParser {

	public static void main(String[] args) throws Exception{

		URL url = new URL("ゆーあーるえる");
		DOMParser parser = new DOMParser();
		InputStream is = url.openConnection().getInputStream();
		try{
			parser.parse(new InputSource(is));
		}finally{
			is.close();
		}
		
		Document doc = parser.getDocument();
		NodeList linkList = doc.getElementsByTagName("A");
		NodeList imgList = doc.getElementsByTagName("IMG");
		
		for(int i = 0;i < linkList.getLength(); i++){
			Element elm = (Element) linkList.item(i);
			System.out.println(String.format("%s : <%s>", elm.getTagName(),elm.getAttribute("href")));
		}
		
		for(int i = 0;i < imgList.getLength(); i++){
			Element elm = (Element) imgList.item(i);
			System.out.println(String.format("%s : <%s>", elm.getTagName(),elm.getAttribute("src")));
		}
	}
}
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;

public class SampleJerichoHTMLParser {
	
	public static void main(String[] args) throws MalformedURLException, IOException {
		Source source = new Source(new URL("ゆーあーるえる"));
		List<Element> linkList = source.getAllElements(HTMLElementName.A);
		List<Element> imgList = source.getAllElements(HTMLElementName.IMG);
		
		for(Element link : linkList){
			System.out.println(String.format("%s : <%s>" , link.getName(), link.getAttributeValue("href")));
		}
		for(Element img : imgList){
			System.out.println(String.format("%s : <%s>" , img.getName(), img.getAttributeValue("src")));
		}
	}
}
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;

public class SampleHTMLCleaner {
	
	public static void main(String[] args) throws MalformedURLException, IOException {
		CleanerProperties props = new CleanerProperties();
		HtmlCleaner htmlCleaner = new HtmlCleaner(props);
		
		TagNode tagNode = htmlCleaner.clean(new URL("ゆーあーるえる"));
		
		List<TagNode> linkList = tagNode.getElementListByName("a", true);
		List<TagNode> imgList = tagNode.getElementListByName("img", true);
		
		for(TagNode link : linkList){
			System.out.println(String.format("%s : <%s>",link.getName(),link.getAttributeByName("href")));
		}
		
		for(TagNode img : imgList){
			System.out.println(String.format("%s : <%s>",img.getName(),img.getAttributeByName("src")));
		}
	}
}

GoogleAppEngineで形態素解析器Igoを使う

IgoというJavaで書かれた形態素解析器があるらしくさらにPython用のIgo-pythonというモノがあるみたいなのでGoogleAppEngineで利用してみる

導入としてはここのIgo-pythonの作者様のサイトを見て行ないましょう。
メモ: Igo-pythonの導入メモ

Flaskを使いたいのでここからファイルを落としてきて適当な場所に解凍します。
GitHub - gigq/flasktodo: Example of using Flask on App Engine to make a simple todo list.

このフォルダの中にIgo-pythonを解凍して作成されたフォルダと、解析用の辞書フォルダを突っ込みます。
両方のフォルダに適当な名前を付けといてください。私は「igo」と「igodic」というフォルダ名にしました。

で、application.pyを編集します。

# -*- coding : utf-8 -*-

from flask import Flask
app = Flask(__name__)

from google.appengine.ext import db
from google.appengine.api import users

from flask import redirect, url_for, request, render_template, abort, flash, get_flashed_messages
from igo.Tagger import Tagger

@app.route('/parse/')
def markov():
    if request.args['sentence'] != None:
        parseword = request.args['sentence']
        parsedword = Tagger('igodic').parse(parseword)
        hoge = '<parsewords>'
        for i in parsedword:
            hoge += '<surface>' + i.surface + '</surface>'
        hoge += '</parsewords>'
        return hoge
    else:
        return None



# set the secret key.  keep this really secret:
app.secret_key = '適当な文字列'

if __name__ == '__main__':
    app.run()

こんな感じに編集して動かしてみましょう。

PATH/google_appengine/dev_appserver.py ../flasktodo

http://localhost:8080/parse/?sentence=沢城みゆきちは天使です

これでこのままGAEに上げれば使えるんじゃないでしょうか

バレンタインチョコ欲しい!

バレンタインチョコ欲しい!
欲しいプレゼントは…

Apple MacBook Air 1.86GHz Core 2 Duo/13.3

Apple MacBook Air 1.86GHz Core 2 Duo/13.3"/2G/128G/802.11n/BT/Mini DisplayPort MC503J/A

やっぱりMacBookAirで快適インターネット生活を楽しみたい

mkvirtualenvコマンドでエラー

python ubuntu
新しくPC買ったので
http://www.doughellmann.com/docs/virtualenvwrapper/ja/
を見ながら設定してた
適当なプロジェクトつくろうとしたら

w1mvy% mkvirtualenv fuga [~]
New python executable in fuga/bin/python
Installing setuptools............done.
Complete output from command /home/w1mvy/.virtualenvs/fuga/bin/python /home/w1mvy/.virtualenvs/fuga/...stall /usr/local/lib/python2.6/dist-...ar.gz:
/home/w1mvy/.virtualenvs/fuga/bin/python: can't open file '/home/w1mvy/.virtualenvs/fuga/bin/easy_install': [Errno 2] No such file or directory

                                                                              • -

Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 9, in
load_entry_point('virtualenv==1.5.1', 'console_scripts', 'virtualenv')()
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 558, in main
prompt=options.prompt)
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 656, in create_environment
install_pip(py_executable)
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 415, in install_pip
filter_stdout=_filter_setup)
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 624, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command /home/w1mvy/.virtualenvs/fuga/bin/python /home/w1mvy/.virtualenvs/fuga/...stall /usr/local/lib/python2.6/dist-...ar.gz failed with error code 2

というエラーがでた。

easy_installがうまくコピーできてないのかしら…

いまのところ

mkvirtualenv --python=/usr/bin/python2.6 --no-site-package fuge

で自分のsite-packageの環境を受け継がないようにして回避してる