長崎国体・大会アプリがリリースされました!

長崎がんばらんば国体・長崎がんばらんば大会実行委員会様提供、弊社設計・開発による長崎国体アプリがリリースされました!
競技の日程や組合せ、会場付近の施設など、観戦をトータルにサポートするアプリになっております。
5月24・25日はリハーサル大会も開催されますので、是非ダウンロードしてください!

Facebooktwitterlinkedintumblrmail

Selenium IDEを使った手入力の半自動化

随分と前回から空いてしまっているので、日頃考えていた妄想でも一つ。

目的: ブラウザから手入力で写していたデータをなるべくシステムを触らずに半自動化するサービスサーバを提供する。
利用者はSelenium IDEで記録して、定型に従って修正すれば低コストで複数の自動化が可能。

例えばサイトAで入力された内容を、人力でサイトBに後で入力し直す必要が有る場合等。

  • サイトBはOSSのアプリケーションで、改修するコストが見合わない
  • markdown形式に変えて記入する必要が有る
  • etc…

1. Selenium IDEでサイトBの入力用のテストケースのテンプレートをRecording等で作成しておき、
サービスサーバはサイトAのデータから、テストケースに穴埋めして自動的にファイルを作成できるようにします。
※複数有る場合は、適度にテストスイートにまとめる。

2. 利用者はFirefoxのSelenium IDEからテストを開いて、実行するだけになります。
Selenium Serverなり別のテストツールなり使ってここも自動化出来るかも知れませんが、ログインとか考えると面倒が増えそうです。
※ログイン部分の切り貼りを出来るようなプログラムを別途提供する事で対応可能かも。

まぁデータのやり取りが有るので、サービスサーバにするには向いていないかと思いました。
(Selenium IDE依存になるのも)

Facebooktwitterlinkedintumblrmail

HaxeUIをWindowsターゲットで日本語表示

HaxeUIはWindowsターゲットでビルドすると、日本語を表示してくれませんでした。
そこで、IPAフォントを埋め込みフォントとして使って表示させました。
http://ipafont.ipa.go.jp/

IPAフォントをどれか一つダウンロードしたら、適当な箇所に設置します。
※今回はIPA Gothicをダウンロードして(assets/fonts/ipag.ttf)に設置。

HaxeUIは、

Macros.addStyleSheet("styles/gradient/gradient.css");
Toolkit.init();

のように呼び出しているので、Macroを追記します。

Macros.addStyleSheet("styles/gradient/gradient.css");
Macros.addStyle("Text", "fontName:'assets/fonts/ipag.ttf';fontSize:14");
Toolkit.init();

これで、Textを使っているListViewやTableViewにも日本語表示出来ます。

2013/12/10 追記:
フォントを指定無しにしても表示出来るようです。
Macros.addStyle("Text", "fontName:'';fontSize:14");
日本語フォントの入ってるWindowsなら、これで良いかも知れません。

Facebooktwitterlinkedintumblrmail

「CEATEC JAPAN 2013」 2日目

CEATEC JAPAN 2日目です!!

本日は他のブースを色々と見て回ることができました。
面白そうなものが沢山展示されています。

中でも私の興味を引いたのがこちら、LEDスイッチ!!

LEDスイッチ

あらゆるボタンが ズラッと並んでるのがとても綺麗で、無駄にカチカチ押してきました(笑)
画像が動くボタンがあったので、テンション上がって動画を撮影したのですが
うまく撮れていませんでした…明日リベンジです。

本日のランチ、みそ焼き鯖ずし。

みそ焼き鯖ずし

衝撃の美味しさでした(´∀`)
もうこれはお取り寄せ決定です!

Facebooktwitterlinkedintumblrmail

Android Bootstrapを試してみた。

Android Bootstrapを試してみたので、忘れないように手順をメモとして残しておきたいと思います。

(1)
  環境変数は以下のようにしました。
    export JAVA_HOME=/Library/Java/Home
    export ANDROID_SDK=$ANDROID_HOME
    export ANDROID_TOOLS=$ANDROID_SDK/tools

    export PATH=${PATH}:${ANDROID_TOOLS}
    export PATH=${PATH}:${ANDROID_HOME}/platform-tools

(2)
  下記のサイトからandroid-bootstrapをダウンロードします。
  http://www.androidbootstrap.com/

  アプリ名とパッケージ名を以下のように入れて「Generate Your App」ボタンを押します。

(3)
  (2)でダウンロードした、android-bootstrapのディレクトリで
  「mvn clean package」コマンドを実行します。
  mvnコマンドがない場合は、「brew install maven」

(4)
  Android Studioを起動します。
  もっていない場合は、以下のサイトからダウンロードしてください。
  http://developer.android.com/sdk/installing/studio.html

(5)
  Open Projectを選択します。

(6)
  android-bootstrapのpom.xmlを選択します。

(7)
  SDK Managerを起動します。

(8)
  APIレベル14、16をダウンロード・インストールします。

(9)
  maven projectで「Reimport All Maven Projects」ボタンを押します。

(10)
  FileメニューのProject Structureを選択します。

(11)
  Projectを選択肢、Project SDKでAndroidを選択します。

(12)
  Modulesを選択し、「~apklib-com.viewpagerindicator_library_2.4.1」を選択します。
  下部の「+」ボタンを押して、Jars or directoriesを選択します。

(13)
  「com.viewpagerindicator_library_2.4.1」の中にあるandroid-support-v4.jarを選択します。

(14)
  CMD+F9でrebuildingします。

(15)
  RunのEdit Congifrationsを選択します。

(16)
  「+」ボタンを押してAndroid Applicationを選択します。

(17)
  Nameに「BootstrapTest USB」と入力します。
  Moduleでcom-lancard-testを選択します。
  Target DeviceでUSB deviceを選択します。

(18)
  com.lancard.test.ui.view.CapitalizedTextViewの下記の行が、通らなかったのでひとまずコメントアウトしました。

  //setTypeface( Typeface.createFromAsset(context.getAssets(), “fonts/Roboto-Regular.ttf”) );

(19)
  携帯とPCをつなぎ、メニューのRunからRun ‘BootstrapTest USB’を選択します。

(20)
  下記の内容を入力してテストできます。
  Email Address:demo@androidbootstrap.com
  Password:android

  こういう感じのものがAndroid2.3などでも動くというのは嬉しいですね。

Facebooktwitterlinkedintumblrmail

「CEATEC JAPAN 2013 」1日目

やって参りました!CEATEC JAPAN 2013 in 幕張メッセ!!
今年も長崎県のブースで共同出展させて頂いております。

nagasaki_ken

通路を挟んで向かいのブースにdocomo様がデーンと構えておりますので、会場にお越しの際はそれを目印に、ぜひぜひお立ち寄り下さい(^_^)

LANCARD.COM

出展製品はこちらからご覧下さい!

昨年に引き続き、有安オートさんの電気自転車の無双っぷりが半端なかったです(^_^;)老若男女、国籍を超えて大人気!!
以前出展していたものより更にかっこ良くなっていました。

有安オート

CEATEC JAPAN 2013は10月5日(土)まで開催しております。
出店でグルメも楽しめますので、ランチついでにぜひ遊びに来て下さい!!

本日のランチ、タコライス。

タコライス

美味でした!

Facebooktwitterlinkedintumblrmail

IronPythonとジェネリックと初期値わたし

C#勉強会に行って自己紹介で「MVVMパターン用のフレームワーク使ってViewとViewModelはC#、ModelはIronPythonで書います」と言ったら微妙な空気になりました、夏。

muraveです。

というわけでC#とIronPythonを組み合わせて書いてます。基本的に配列や辞書は便利なのでPythonのモノ使ってましたがパフォーマンス・チューニングやっててジェネリック使ったほうがいいところもあるかな、と。

IronPython側でのジェネリックの書き方は知っててたまに使ってたんですが(C#での<>が[]になります)、試したら普通に初期値も与えられるのにちょっと感激。

C#で書くとList<string>の場合

>>> import site
>>> import clr
>>> from System.Collections import Generic as DotNetCollectionsG

>>> dot_l = DotNetCollectionsG.List[str]()
>>> print dot_l
List[str]()

>>> dot_l = DotNetCollectionsG.List[str](['a', 'b'])
>>> print dot_l
List[str](['a', 'b'])

C#で書くとDictionary<string, int>の場合

>>> import site
>>> import clr
>>> from System.Collections import Generic as DotNetCollectionsG

>>> dot_dict = DotNetCollectionsG.Dictionary[str,int]()
>>> print dot_dict
Dictionary[str, int]()

>>> dot_dict = DotNetCollectionsG.Dictionary[str,int]({'a':1 ,'b':1})
>>> print dot_dict
Dictionary[str, int]({'b' : 1, 'a' : 1})

ね♪

helpみたら普通に書いてありました。

>>> help(dot_dict)
Help on Dictionary[str, int] object:

class Dictionary[str, int](object)
 |  Dictionary[str, int]()
 |  Dictionary[str, int](capacity: int)
 |  Dictionary[str, int](comparer: IEqualityComparer[str])
 |  Dictionary[str, int](capacity: int, comparer: IEqualityComparer[str])
 |  Dictionary[str, int](dictionary: IDictionary[str, int])
 |  Dictionary[str, int](dictionary: IDictionary[str, int], comparer: IEqualityComparer[str])
 |
以下略

えらいなぁ。

Facebooktwitterlinkedintumblrmail

COBOLエディタを作成してみる。

EclipseプラグインとしてCOBOLエディタを作成してみます。

1.org.eclipse.jdt.uiのソースをインポート
  Eclipseでエディタと言えばJavaEditorですので、これを参考に作ってみます。
  JavaEditorはorg.eclipse.jdt.uiの中にあるので、
  ここのソースをインポートします。

(1)インポートを選択します。

(2)Plug-in DevelopmentのPlug-ins and Fragmentsを選択します。

(3)Import AsのProjects with source foldersを選択します。

(4)IDに「org.eclipse.jdt.ui」を入力し、Addします。
  あとはFinishすればソースがインポートされます。

2.COBOLEditor
COBOLEditorはシンプルに以下のように書きました。
JavaEditorは色々な機能が実装されていますが、ひとまず予約語の強調表示のみということで
このようにしています。

import org.eclipse.ui.editors.text.TextEditor;

public class COBOLEditor extends TextEditor {

private COBOLColorManager colorManager;

public COBOLEditor() {
super();
colorManager = new COBOLColorManager();
setSourceViewerConfiguration(new COBOLSourceViewerConfiguration(colorManager));
}
public void dispose() {
colorManager.dispose();
super.dispose();
}

}

3.COBOLSourceViewerConfiguration
SourceViewerConfigurationは次のように実装しています。
予約語と文字列に色をつけるところまでで、コメントについては処理はしていません。

public class COBOLSourceViewerConfiguration extends TextSourceViewerConfiguration {
private COBOLCodeScanner fCodeScanner = null;
private SingleTokenCOBOLScanner fStringScanner = null;
public COBOLSourceViewerConfiguration(COBOLColorManager colorManager){
fCodeScanner = new COBOLCodeScanner(colorManager);
fStringScanner= new SingleTokenCOBOLScanner(colorManager, ICOBOLColorConstants.COBOL_STRING);
}

@Override
public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
PresentationReconciler reconciler = new PresentationReconciler();

DefaultDamagerRepairer dr = new DefaultDamagerRepairer(fCodeScanner);
reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);

dr= new DefaultDamagerRepairer(fStringScanner);
reconciler.setDamager(dr, ICOBOLColorConstants.COBOL_STRING);
reconciler.setRepairer(dr, ICOBOLColorConstants.COBOL_STRING);

return reconciler;
}
}

4.強調表示
JavaEditorは設定画面(PreferenceStore)から何色にするかを取得しています。

以下はその部分

if (fColorManager != null && colorKey != null && fColorManager.getColor(colorKey) == null) {
RGB rgb= PreferenceConverter.getColor(fPreferenceStore, colorKey);
if (fColorManager instanceof IColorManagerExtension) {
IColorManagerExtension ext= (IColorManagerExtension) fColorManager;
ext.unbindColor(colorKey);
ext.bindColor(colorKey, rgb);
}
}

今回は、設定画面はあとで作るとしてソース上に直書きします。

if (fColorManager != null && colorKey != null && fColorManager.getColor(colorKey) == null) {
RGB rgb = null;
if(colorKey.equals(ICOBOLColorConstants.COBOL_KEYWORD)){
rgb = new RGB(139, 32, 82);
}else if(colorKey.equals(ICOBOLColorConstants.COBOL_STRING)){
rgb = new RGB(63, 44, 250);
}else if(colorKey.equals(ICOBOLColorConstants.COBOL_DEFAULT)){
rgb = new RGB(0, 0, 0);
}else if(colorKey.equals(ICOBOLColorConstants.COBOL_KEYWORD_RETURN)){
rgb = new RGB(139, 32, 82);
}else if(colorKey.equals(ICOBOLColorConstants.COBOL_OPERATOR)){
rgb = new RGB(0, 0, 0);
}else if(colorKey.equals(ICOBOLColorConstants.COBOL_BRACKET)){
rgb = new RGB(0, 0, 0);
}else{
rgb = new RGB(0, 0, 0);
}

if (fColorManager instanceof IColorManagerExtension) {
IColorManagerExtension ext= (IColorManagerExtension) fColorManager;
ext.unbindColor(colorKey);
ext.bindColor(colorKey, rgb);
}
}

5.動かしてみる。
  ちゃんと予約語が強調表示されました。
  文字列も青色になっていてます。

次回は色を設定画面から取得するようにしてみます。

Facebooktwitterlinkedintumblrmail

AutoLayoutをiOS5にbackportするRRAutoLayout

iOS6で導入されたAutoLayout。正しく使えば3.5inchでも4inchでも怖くない!しかし当然iOS5以前では使えません。。。2013年7月現在でも、iOS5を使用されてるユーザは全体の1割程はいるようで、切るにも切れないこともあるかと思います。

そこでRRAutoLayout、素晴らしすぎます。

RolandasRazma/RRAutoLayout 

セットアップにはハマりませんでしたが、思ったような表示にならなかったので色々触っていると、次のようなことに注意すれば良いことが分かりました。

Storyboard上で、例えばViewの最上部に置きたい画像がある場合、通常ImageViewをドラッグして、Viewの最上部に置くと思いますが、この際自動でConstraintsが設定されるかと思います(SuperviewとのVertical Spaceが0など)。この自動でできるConstraintsだとRRAutoLayout は認識してくれないので、あくまでも手動でのConstraintsに変換してやります。(ImageViewのHeightなども含め)

まだ多くのViewを定義してみたわけではありませんが、これで効率よく開発できそうです。

Facebooktwitterlinkedintumblrmail

CentOS6でchef-soloを9手でインストールして実行する

chef-soloで(一例として)PostgreSQLサーバをインストールして起動するまで。
上手い人はもっと短く出来るんだろうなーと思いつつ。
それと、あわよくばchef-serverを誰か最短手で書いてくれないかなーと思いつつ。

この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail