ラベル 技術 の投稿を表示しています。 すべての投稿を表示
ラベル 技術 の投稿を表示しています。 すべての投稿を表示

2013年11月11日月曜日

【Mac Spotlight】ChromeのブックマークをSpotlightの検索結果に出す方法

今日は一段と寒いですね><
そろそろ鍋が恋しくなります。

そんな中、自分の中で一つ熱い思いが芽生えました(笑)
私はメインのブラウザとしてChromeを使っています。

理由は、速いなどもあるのですが何より一番、ブックマークの
同期があるからってのがあります!

コレ意外と便利で、どのPCでも同じブックマークが見れるって
凄く便利なのです。
ちなみに、スマートフォンも同じブックマークです!

いつも検索はGoogle先生にお世話になっているのですが、次々と
ブックマークしていく癖があり、いつの間にか自分でも探せない
状態となりつつあります。

そんな状況でふと、ブックマークの検索がSpotlightに出てきたら
いいよね!

なんて思っており、Google先生に聞いてみると、Browなるアプリが
ありました。

んんん、Sandbox化されているようなのですが、ちょっと不安が
あったりしたので、自分で作ることにしたんです!

で、ちょろちょろと昨日と今日で作っちゃいました!
それがコレです!

https://github.com/developerwaiwai/BookmarkSpotlight


皆さんに使ってもらおうと思っているので、オープンソースに
しました!

一応、GPL で公開しました!

コマンドライン形式のアプリとなります!
なぜコマンドライン形式にしたか?

それは、後で定期実行させようと思っているからです!

実はOS Xにはlaunchctlという定期実行の仕組みがあります。
それを利用して定期実行すればスマートにシステムに
組み込めるんじゃないかと思ったからなんです。

ということで、オープンソースなのでコンパイルできる方は
どんどん使っていただければうれしく思います!

もし、コンパイルできないけど使ってみたいという方は、
おっしゃっていただければ、コンパイル後のアプリを実行
できる形で送付させていただきます!

使いたい方は是非!!!

ということで、熱い思いを実らせたわいわいでした〜^^

2013年11月4日月曜日

整いました!

自分の開発環境の保存のため、家のMac Serverに
NetBootをたてて、いつでも起動できるようにしています!

それがこれ!










Lionでの開発環境
Mountain Lionでの開発環境
Mavericksでの開発環境(今の環境の元)

特にLionの開発環境は、開発を始めてから2年間ずっと使い続けた
環境です!
とても大事です!

今はMavericksに移行しましたが、一つ前の環境を残しておいて
不具合が出たらいつでも戻れるようにしています!


開発者って意外と保守的というか、開発上不具合が出て開発
できなくなるのがとても嫌なことなので、
開発環境を最低一つ前のものを残しておくものなんです!


まぁ実際には、今まで使用していたマシンのHDDやSSDを残して
使わないようにしていますので、NetBootは万が一の万が一
っていったところでしょう!

とはいえ、HDDやSSDももったいないので、
少しして、環境が落ち着いてきたら使おうと
思っています!

まぁ、最悪NetBootできるのでいいっちゃいいのですが、
何しろNetBootは起動等が遅いもので^^;;;

といった感じで、開発者の変態と思われるほどの
開発環境に対するこだわりの一端をお見せしました!(笑)

ディスクをそのまま(一つのファイル等で)アーカイブ
できるものがあればいいんですがね;;;
ディスクユーティリティでいけるのかなぁ?

あ!あとTimeMachineもあるか!

2013年10月20日日曜日

iOSで作り始めました!

最近iPhone 5sが発売されましたね!

iPhone戦場にdocomoも参戦して三つどもえの様相になっていますが、
auがプラチナバンドでのLTEをいち早く普及させていたため、
一歩リードといったところでしょうか!

さて、ぱすわ〜ど帳も3年目を迎えていますが、
5sの発売もあってか最近iOSへのぱすわ〜ど帳の要望が多くなって
きました!

ぱすわ〜ど帳の最大の魅力は、日本語入力と連携して、自動入力を
するところですが、その機能をiPhoneで実現する事はシステム的に
難しいので、今まで躊躇してきました。

ところが、 上記のように、要望が大きくなってきましたので、
少しずつですが、iOSのぱすわ〜ど帳を作り始めました!

今日はデータベースの部分を実装しました!
まぁエンジン部分や足回りの部分でしょうか。

この部分は重要なところですから念入りに作っています!


まだいろいろとUI部分で練らなくてはいけない部分がありますので、
今すぐにって訳ではありませんが、出来れば今年中にはリリース
したいですね!

そうそうぱすわ〜ど帳と言えば、なんとなんと!!!
Androider+ 12月号に記事が掲載されました!!!

Androider+限定という事で特別バージョンを提供させて
いただいています!!!

是非お手に取ってご覧頂ければきっといい事があります!

Androider+ 12月号

ということで、引き続き頑張っていきます!

2013年10月3日木曜日

遂にあの機能が!

ぱすわ〜ど帳を今週金曜日にアップデートしようと思ってます!


今回は公開当日まで言えないですが、ある機能を搭載します!
待ち望んでいた方もいらっしゃるかもしれませんね!


その全容は当日のお楽しみとして、ちょっとだけ!


















ほら!
何かが変わってますよね!

ね!
ね!

変わったでしょ?

2013年9月18日水曜日

ただいま検討中!

少し前にぱすわ〜ど帳のユーザーさんからご要望を頂きました!
そのご要望を、今、検討しています!


















こんな感じです!
先頭の文字のセパレータが見えるかと思います!

日本語の場合は、
















こんな感じです!
より整理しやすくなると思いますので、お楽しみに!!!


2013年9月6日金曜日

【Androidシナリオテスト】Androidのテストを完全自動化する方法

AndroidをPCにつなぐ事で、シナリオテストが出来るようになります。

まずはその仕組みについて、調査してみましょう!
AndroidSDKをDLし、SDKにパスを通します!
そして、コマンドラインで

adb shell getevent

と打ってみましょう!
その動画がコレです。



ん?ちょっとわかり辛いですが、
タッチした瞬間、何か変化が現れて流れていきましたね!

それではコマンドラインのログを見てみましょう!














おお!
/dev/input/event0
のイベントが流れているのがわかります!

それでは、このイベントでフィルタリングしてみましょう!
単純にgrep でフィルタリングしてみます。

adb shell getevent | grep event0



おお!
タッチした瞬間に何かイベントが起きているという事がわかりますね!

実はAndroidは、タッチしたイベントをadb経由でこのように取得する事も
可能ですが、さらに送信する事も可能です!

ただし、送信イベントは先ほどみたログとはちょっと形式が違ってきます。
ログは、

/dev/input/event0: 0000 0000 00000000

という感じですが、Androidにタッチイベントを送信する場合、

adb shell sendevent /dev/input/event0 0 0 0

という風になります。
大雑把に言うと、


  1. 先頭に「adb shell sendevent」がくっついて、
  2. コロン「:」がなくなり、
  3. 3つの数字が16進が10進

の3点の違いがあります。

うーーーん、どうしようか???

ピコーーーーン!!!
そんなときの頼みの綱!!!
目の前にPCがあるではないか!!!

そうだ!!!
PCでフォーマット変換をしよう!!!

ということで、フォーマット変換のプログラムを作りました!

皆さんに使って欲しいのでオープンソースにしてあります!
ご自由にお使い頂いてどうぞ!


使い方は簡単!
/tmpにevent.txtというファイルをおきます!
そのファイルは、上のようなコマンドでとったイベントのログを
貼り付けます。
そして、上で取得したプロジェクトをビルドして、ソフトを起動します!
そうすると、/tmpにevent_c.txt
というファイルが出来上がります!

それを、

chmod +x /tmp/event_c.txt

として実行権限をつければOK!!!

後は、コマンドラインでSDK_ROOT/platform-toolsにディレクトリを移し、
/tmp/event_c.txtとコマンドラインで実行してください!

そうすれば、複数のアプリにまたがった、あるいは、複数のActivityに
またがった、トータルテストが出来るようになります!

あ!
ちなみに、これで作ったシナリオで私も「ぱすわ~ど帳(SA)」を
リリース時にテストしています!
そのときの動画がコレ!




ぱすわ〜ど帳はこういったテストを繰り返し1000回以上行って
リリースしています!


2013年8月13日火曜日

JavaからJS(JavaScript)を実行する方法

ども(^^)/ 結構久しぶりのブログになっちゃった;;;

いやー、仕事がなんだかんだで忙しくて;;;
今日は、その仕事から得られた知識として、JavaからJSをコールする方法について 書いて行きます!


Javaからスクリプト言語をコールする方法については、Java 1.6から導入されています!

具体的には、

ScriptEngineMangager
ScriptEngine

の二つのクラスを使います! 
ScriptEngineを使用するといとも簡単にJavaScriptをコールできます!
ではそのソースです!


はい!
コレだけです!

ちょっと説明を!

print('Hello')

わかり辛いですが、という部分がJavaScriptになります!

基本的には、

ScriptEngineManagerとScriptEngineのインスタンスを作って

ScriptEngine#eval

とすることでJavaScriptを実行できます!

他にも、引数等を渡す事も可能です!
まぁ、サーバー再度の話などになりますので、いろいろと制約は
ありますが;;;


とりあえずこれで、Javaからスクリプトをコールする事が出来るように
なります!

JavaとJSを混合なんて事も可能になりますね!
やったー!

2013年5月19日日曜日

なかなかだね!

今、あるiOSアプリをAndroidに移植する作業を行っています。

開発する上で、iOSとAndroidでは大きな違いがあります!
(個人的には一番大きいかななんて思っています)

Objective-CとJava?

いあいあ、言語の違いなんてたいした事ないです!
慣れです!

framework?

いあいあ、それも慣れです!


実は大きな違いって、画面サイズなんじゃないかななんて
思ってます!

iOSでは丁度だったものがAndroidでは画面が広いので、
全体的にパラパラとしたUIの印象になってしまったり
します><

そして、一番大きいのが、画面サイズが多岐にわたる事です><


ここが一番大きい差かなぁなんて思います!


iOSはiPad,iPad mini,iPhone4系,iPhone5の4種類
ですから!




2013年5月8日水曜日

【iOS,Android】信じがたい! うっそ! ゼロ除算の考察の行方!

結論から言います!

ARMアーキテクチャでは、ゼロ割(0除算)のエラーはおきません!


事の発端は!

@hamakendevelopさんのこの発言!

コレを偶然みて、そんなバカなぁ!
なんて思ってサンプルを作ったのが発端です!




まず、サンプルをMac OS Xで作ってみました!

結果は予想通り、
c = a / b;
のところで、Exception発生!




やっぱそうだよなぁ・・・
なんて思いつつ、一応、iOSのサンプルも作ってみました!

コレをiOSシミュレータで起動!
結果は予想通り、
NSLog(@"%d", a/b);
のところで、Exception発生!


そりゃそうだ!
と思って、同じソースコードをiPhone5にて動作させてみました。

ほんまや!
(明石家さんまさん風)

結果は予想に反して、iPhone5で例外が発生しませんでした!

うげ!
まじか!!!
なんて思っていたところ、

@sakiraさんが参戦!!!





ちょっと調べたところで、





と言った返信をした訳です。
あ!ちなみに、
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205hj/CJADECCJ.html

ここを添付しました。

この時点で、もう既に、かなりの時間になっていたので、一旦休憩(笑)

その次の日。

@sakiraさんから信じがたいツイートを頂いた訳です!










まじか!

AndroidでもJavaではなくて、Native C言語をコンパイルした
実行ファイルでは、エラーが発生せず、さらに、
iOSではsignal()でのハンドリングも効かないとのこと・・・

そんな・・・そんな・・・バカな・・・なんて調べ、
いろいろと議論したところ、以下のサイトに行き着きました!

http://blog.kmckk.com/archives/4047024.html

うっそ!!!
libgccでの事だったんだ!!!

Xcodeも元々はgccが発祥なので、可能性は多いにあるとの結論に
なりました!


サイトを参照するに、

・ARMには除算命令がない

ために、libgccで除算をするしかなく、libgcc内で除算を行っている。

とのことでした!!!

とりとめのない書き方になりましたが、結論通り、

ARMアーキテクチャは除算命令がないために、libgccで除算を
行っており、libgcc内で、raise()を行っていないため、
Exceptionが発生せず、そこでCPUがストップするため、
除算結果の変数を参照すると、不定になる!

と言った事がわかりました!
(推測も入ってますが^^;;;)

最後に、@sakiraさんの言葉がカッコいい!!!










2013年5月5日日曜日

【C# LINQ】りんくっ! リンクッ! LINQ!

えー、先日よりWindows版ぱすわ〜ど帳を作っています!
C++で作っても良いのですが、せっかくなので、最新技術を
利用して作ろうとしています!

ぱすわ〜ど帳のバックアップデータは、CSV形式のデータに
なっています。

C#でどうやってそのCSVファイルを読み込むかを検討しました!
その結果、LINQという技術を使う事で簡単に読み込める
事がわかりました!

せっかく得た知識ですので、オープンにしていきたいと思います!
まずはソースから!



はい!
コレだけ!
File.ReadAllLines()
で、CSVファイルを読み込みます!
その結果を、
linq構文に食わせるだけ!

itemAには最初の列
itemBには2番目の列
itemCには3番目の列
itemDには4番目の列
itemFには5番目の列

が入ります。

で、LINQの戻り値
resultOfLinq
には、上のものを1行とした、IEnumerable<T>
のオブジェクトが返されます!

resultOfLinq.ToList()

とすれば、Listへも変換できます。

あとは煮るなり焼くなりご自由に!(笑)

ほらー!表示できるでしょ? 〜ただいま検討中〜

まずはコレを見てください!

Twitterでもちょっとお話しましたが、













以前の記事のコメントにてご要望がありました、ぱすわ〜ど帳の
Windowsプレビュー版です!

こんな感じで、ぱすわ〜ど帳のデータを、Windowsでも見れる様な
アプリを今検討中な訳です!

ぱすわ〜ど帳のバックアップデータファイルをWindowsのこのアプリで
読み込んで、それをWindowsのデータベースに登録して表示している
画面です!

ここから、クリップボードへコピーしたりする処理を入れこみます!

そして、ここから、セキュリティレベルと高めるために、マスターパスワード
機能や、暗号化、復号化の処理を入れこんでいきます!

ちなみに、これWindows8にて動作させてますが、.NET framework4.5を
インストールすれば、Windows7でも動作すると思います!

あれ?
.NET framework4.5って、Win7にインストールできたよね?
そういえばVistaは出来るのかな?

4.0に下げようかなぁ

WPFのバインディングがなかなかわかり辛かった><
でも、なんとなくわかってきた^^

もう少し精進すれば、C#、WPFもわかるようになるから、
今度はSilver LightやWindows Phoneにも挑戦できるかも!


なんかわくわくしてきた!

2013年4月30日火曜日

下準備進行中!

以前の記事のコメントにて、ぱすわ〜ど帳ユーザーの方から
是非、パソコン版のぱすわ〜ど帳が欲しいとのご要望を
いただきました。

で、そのPC版を実現すべく下準備をしていました!

昨日のBootCampの記事もその一環です!


で、ようやくエンジン周りの下準備というか調査に
終わりが見えてきました!

エンジンは、SQL Server Express Compactという
組み込み型のSQL Serverを使おうと思います!

データファイルは、CSVなので、LINQにてCSVを読み込み
LINQの機能でList > DataSetを作って、エンジンにインポート
しようと考えてます!

暗号化をどうするかなどまだ課題はありますが、着実に
進んでます!

という事で、PC版ぱすわ〜ど帳の進捗具合をお伝えしました!

ある程度まとまったら、その技術についても記事に
したいと思います!

2013年4月29日月曜日

Boot Camp!

今まで、VirtualBoxを使用して、Windows8をインストールし、
Visual StudioをそのWin8にインストールして使用していました。

コレでも十分なのですが、やっぱり速度的に厳しいななんて
思っていましたので、コレを機に、Boot Campにて直接
MacにWin8をインストールしました!

私のメインで使用しているMacBook ProはまだLionマシンで、
Windows8は入らないかななんて思いながらインストール
しました!

でも、意外とすんなりWindows8が入り、難なくインストールできました!

ほら!
この通りBootCampのドライブが出ています!




サポート外のOSなので、インストールが心配でしたが無事
インストールできました!

ついでに、VMWare Fusion5の無料評価版をインストールして、
このBootCampのドライブでVMを構築しました!

やっぱり、直接起動は速いですね!!!
感動です!!!

Visual Studioがサクサク動きます!
MacBookProのハードの良さに感動した一日でした!

2013年4月27日土曜日

検討中その2

今、PCでぱすわ〜ど帳データを読み込もうとしています!

読み込みや書き込み等は全然問題なくできる方法はあるのですが、
どうせなら最新技術を使おうと思っています!

ADO.NETを使用して、可能ならEntity frameworkを使おうかなと!

いろいろ調査しているのですが、調べれば調べるほど
頭がぐちゃぐちゃになっていきます!

いいね〜!
頭がぐちゃぐちゃになっているのは、理解の上で必要なプロセス
ですので、しばらくはこんなかんじかなぁと!

このぐちゃぐちゃが整理されたとき、理解が深まります!

さてと、またVisual Studioに戻りますか!

2013年4月24日水曜日

検討中のこと!

現時点でも、ぱすわ〜ど帳のデータはSDカードやDropboxなどを 経由する事でも、生データを参照できます。 でも、やっぱりぱすわ〜ど帳のデータをPCでも便利に見たりしたい という要望はありまして、それを実現すべく今検討しています! Win,Macの同時にリリースしたいのですが、時間が^^;;; Macは既に大方の想定使用技術はわかっています。 Winは・・・C++で書けばだいたいの事はわかっているのですが、 Win App Sroreへの登録も視野に入れると、C#の.NETで記述 するのが良い選択だと考えられますので、その技術調査を しています! C#自体は、初めてではないにしろ、あまりなじみがなかったのですが、 結構面白い仕様で、新しい考え方等がふんだんに盛り込まれて いるので、なんか触っていると、ワクワクします!!! C#でWinのいいアプリつくるぞ!!! って今、調査をしていますので、今しばらくお待ちくださいね^^

2013年4月22日月曜日

Javaの関数の引数について ーJavaの値渡しと参照渡しの誤解ー

昨日Twitterで宣言しましたが、Javaの引数について書きたいと思います。

Javaの引数は基本的に、

プリミティブ型=Call By Value = 値渡し
オブジェクト型=Call By Reference = 参照渡し

になります。

で、Call By Referenceの説明で
String型を使って以下の説明をしているのが多くあります。

さあ、ここで問題です!
出力は何になるでしょうか?

答えは、
”before method call”
です。

当たり前です(^^)/

C言語で書くと、


こうやってるのと同等です。

それ、C言語で言うと、ポインタのポインタを使わないと
出来ませんよ^^;;;

あと、



これも同じです!
これも同じC言語のポインタのポインタ使わないと^^;;;

Call By Referenceの説明で、上の例を使って、Call By Referenceだけど・・・
なんて説明しているのは間違いです!

C言語でいう、ポインタの概念をちゃんと理解しないと実は
この辺りって理解が難しいかもですね!

あ!
constじゃないととか、そういうツッコミはなしね^^
あくまで例なので!

2013年4月21日日曜日

Javaのデストラクタ?


メモリリークはいつ直すの?
今でしょ!!!



よくJavaにはデストラクタがないと言われます。

確かに、Javaは明示的なメモリ解放がないため、
デストラクタが必要ないとまことしやかに噂されています。

でもね!
メモリ解放はJavaの

System.gc();

をコールすれば明示的に解放できるんです。
ただ、メモリ解放は時間的コストが高いってのはあると思います。


デストラクタという意味ではないですが、Javaでも似た様な
機構が備わっているのはご存知でしょうか?

それは、


protected void finalize() throws Throwable {};

です!

このメソッドをオーバーライドしてあげれば、そのオブジェクトの
ファイナライズ(解放処理)を実装できます!

例えば、

protected void finalize() throws Throwable {
    super.finalize();
    myMember = null;
}

なんてやってあげれば良い訳です!

これで、メモリリークともおさらばですね!
(あれ?大げさ過ぎかな?)

2013年4月14日日曜日

ぱすわ〜ど帳SAアップデート!

ぱすわ〜ど帳SAを本日アップデートしました!

本日のアップデートは、まだごく一部のユーザーで
不安定になってしまう現象が発生しているとの事で、
その原因の対応です。


ちょっと難しいこというと、おそらくActivityの
ライフサイクルが原因かと思われます。

なので、Contextが必要なデータファイルの読み書きを
ActivityからApplicationへ変更したのが主な変更です。

これで大丈夫なんじゃないかと考えています。


ところで、Twitterではつぶやいているのですが、今回より、
新しい自動テストを行うことにしました!

マッシュルーム(IMEからの起動)機能のテストになります。

自動テストその1

自動テストその2

Nexus7 & Xperia Zにてマッシュルーム機能をテストしています!

このテストを繰り返し1000回以上行って耐久試験を
しています。

このテストで一切落ちる事がない事を、がっちりと確認しています!

どうぞ安心してお使いください!

ちなみに・・・
このテストだけで、数時間かかります;;;
でも、このテストは、ユーザーさんにご迷惑をおかけしない
ようにする必要なテストです!!!
外せません!!!

いじょ、わいわいでした^^


2013年3月26日火曜日

お勉強ちぅ

今、seasar2ってのを勉強しています!
これjavaのフレームワークなのですが、いろいろと面白い
機能があったりで結構便利そうだなぁなんて思ってます!


あとは、Tomcatとかサーバー系の勉強に手を付けています(笑)


アプリ関連で、幸いな事に、こんな私にこういったものが欲しいなど
アプリ等を依頼頂く事があります!

ただ、やはりというかなんて言うか、外部サーバーとの連携であったり
というのが普通になっていますので、ここはやっぱり技術者としては
サーバー周りも得意分野にしていきたいところだななんて思っています!

最近凄く思うのが、新しい分野や技術を勉強するとき、
頭が混乱しますよね?

混乱していろいろ調べたり方向を見失ったりするのですが、
その頭が混乱している感じが自分でとても好きなんです!!!

なんていうかな、新しい技術や分野を身につける上でとても
重要で、その通り道として混乱があるという事がわかっている
からかもしれないですね!

混乱を乗り越えた先に、自分の知識や経験として
頭に入る瞬間がとても気持ちよく、ワクワクしてくるんです!

混乱最中は、もちろんイライラしたり、余裕がなくなったり
するのですが、その先にある理解する瞬間がとても楽しみ
なんです!!!

私って変でしょうか?

変態なわいわいが近況をお伝えしました(笑)

2013年3月24日日曜日

メンテナンス!

うわぁ><
結構記事さぼっちゃった><

約1週間ぶりです・・・
ども!
わいわいです!


今日は普段使っているPCのメンテナンスについて書きたいと思います!
あ!
PCと言ってもMacのお話です(笑)

Macも毎日使っていると、だんだん遅くなってきます><
そして、XCodeやEclipse立ち上げも遅くなってきてイライラ・・・
なんて事がありますよね・・・

あれ、Windowsもそうなのですがなんで遅くなるんでしょう?
原因ははっきりしないですが、おそらくキャッシュやVM(Virtual Memoryです)
の関係かと思います。

そんなときMacには必殺技があるんです!

キャッシュ一掃作戦!
まず、前に書いたのですが、

1.カーネルキャッシュの再構成
sudo kextcache -system-prelinked-kernel
上のおまじないをコマンドラインで行います!
そして再起動!

再起動したら、
2.フォントキャッシュや各種キャッシュの再構成
SHIFTを押しながらMacを再起動します!
SHIFTを押しながらMacを起動すると、セーフモードと呼ばれる
モードでブートします!
このブートのなかで、キャッシュの再構成が行われます!

セーフブートは起動にちょっと時間がかかります。
そして、アクセラレーションがかかっていないので、超遅いです><

セーフブートで起動したら、後は、何もせずに再起動!

以上です!
これで、元も爆速Macに戻ります!

Macが遅くなってきたなぁと感じたら是非試してみてください!