今日、窓を開けていても少し暑いと感じました。梅雨っぽいはっきりしない天候で終始曇っていたと思うのですが、風が冷たくなくなったのでしょうか。少し湿気も感じます。やれやれ、もう夏はすぐそこなのですね。
今日、窓を開けていても少し暑いと感じました。梅雨っぽいはっきりしない天候で終始曇っていたと思うのですが、風が冷たくなくなったのでしょうか。少し湿気も感じます。やれやれ、もう夏はすぐそこなのですね。
Android SDKのコマンドラインを使ったAndroidアプリプロジェクトの作成方法を記しておきます。しばらく離れているとすぐに忘れるので備忘録として(というかこうして書くことでより記憶に定着させるため)。
前提: SDK, JDK, ant等必要な物をインストールしてパスを通してあること
android --help create project
で、ヘルプが出るので参考に。
android※1 create project -n MyAwesomeApp -t 10※2 -p ./MyAwesomeApp※3 -k com.example.my_awesome_app -a MyAwesomeApp※4
参考: http://developer.android.com/tools/help/android.html
コンパイルは次のようにする。
cd MyAwesomeApp
ant debug
インストールはAVDか端末を接続した上で ant debug install とする。
バージョン管理では次のファイルを無視する(.gitignore等)。
リポドシリから取り出したときはlocal.propertiesが無いので生成する必要がある。
cd MyAwesomeApp
android update project -p .
キーストアの情報が必要ならlocal.propertiesへ追記する。
キーの生成は次のようにする。(keytoolはJDKのbinの中)
keytool -genkey -v -keystore my_awesome_app.keystore -alias my_awesome_app -keyalg RSA -keysize 2048 -validity 10000
local.propertiesにキーの情報を追加する。
key.store=my_awesome_app.keystore key.alias=my_awesome_app
次のようにしてリリースビルドできるようになるはず。
cd MyAwesomeApp
ant release
参考: http://developer.android.com/tools/publishing/app-signing.html
NDKを使いたい場合はjniディレクトリを作る。NDKのsamplesディレクトリを参考にすると良い。
プロジェクトディレクトリ下にjniディレクトリを作り、次のファイルを配置する。
ビルドはプロジェクトディレクトリトップで ndk-build とし、成功したら、普通に ant debug 等。(参考: https://developer.android.com/ndk/guides/ndk-build.html)
AndroidManifest.xml は必要に応じて修正すること。特にNativeActivityを使う場合は修正が必要。
各ファイルの例を次に記す。(android-ndk-r10e時点。バージョンによってオプションは変わっていくかも?)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_CPP_FEATURES += exceptions LOCAL_CPP_FEATURES += rtti LOCAL_MODULE := my-awesome-app-jni LOCAL_SRC_FILES := my-awesome-app-jni.cpp include $(BUILD_SHARED_LIBRARY) # include $(BUILD_EXECUTABLE) ←main()から実行する場合はこちら。
例外やRTTIのないC++なんて98年以前の感じですね。今更耐えられないので有効。(r10e現在デフォルト無効)
現在のバージョンではC++11はデフォルトで使えるらしいです。ライブラリはまた別の話ですが。
参考: https://developer.android.com/ndk/guides/android_mk.html
APP_ABI := all APP_STL := c++_static
stlport(stlport_static)にはstd::to_stringが無かったのでclangのライブラリ(c++_static)を指定しました。
参考: https://developer.android.com/ndk/guides/application_mk.html
#include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_example_my_1awesome_1app_MyAwesomeApp_nativeExampleFun( JNIEnv *env, jobject thisj, jstring exampleStr, int exampleInt, jobject exampleObj) { struct UTFChars { JNIEnv *env; jstring str; const char *chars; UTFChars(JNIEnv *env, jstring str):env(env), str(str), chars(env->GetStringUTFChars(str, nullptr)){} ~UTFChars(){if(chars){env->ReleaseStringUTFChars(str, chars);}} const char *get() const {return chars;} }; const std::string result = UTFChars(env, exampleStr).get() + std::to_string(exampleInt); return env->NewStringUTF(result.c_str()); }
関数名はパッケージ名やクラス名に合わせる。パッケージ名に_(アンダースコア)が入っているときは_の後に1が必要なので注意。_のままだとランタイムでエラーになる。
JNIに詳しくないんですが、こういうことをするための文字列ライブラリってないんですか?
//...略... import android.graphics.Bitmap; import android.widget.Toast; public class MyAwesomeApp extends Activity { //...略... // ネイティブ関数の宣言 static { System.loadLibrary("my-awesome-app-jni"); //LOCAL_MODULEで指定した名前 } native String nativeExampleFun(String exampleStr, int exampleInt, Bitmap exampleObj); //...略... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ネイティブ関数を呼び出してみる String result = nativeExampleFun("test", 123, null); Toast.makeText(this, result, Toast.LENGTH_LONG).show(); //test123と表示される } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.my_awesome_app" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="14" /><!--←SDKのバージョン--> <uses-feature android:glEsVersion="0x00020000"></uses-feature><!--←OpenGL ESを使う場合、そのバージョン--> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hasCode="false"><!--←Javaのコードを使わない場合はhasCodeをfalseにすること--> <activity android:name="android.app.NativeActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"><!-- nameはNativeActivityを使うならこの値で固定。configChangesは端末回転時にActivityを破棄しない設定らしいけど、APIレベルによっては効かないらしい? --> <meta-data android:name="android.app.lib_name" android:value="my-awesome-app-jni" /><!-- ←valueはAndroid.mkのLOCAL_MODULEで指定したモジュール名 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
$.fileName で現在のスクリプトへのパスが得られるらしい。
Extendscript current script path - Stack Overflow
古いPhotoshopではこの手は使えないらしいので、わざと例外を発生させてファイル名を得る方法もあるらしい。すげぇ。
JSX(Adobeの方)でスクリプトファイル自身のpathを求める - Qiita
ちなみにFileやFolderのプロパティ、メソッド一覧はこちら。
昨日から日中部屋が暑くなってきました。閉めきっていると30度近くまで行きます。でも窓を開けると涼しい風が通り抜けて気持ちいいですね。このくらいの気候が一番過ごしやすいかな。外出するなら今の時期ですね。どこか行きたいなぁ。
1~2話程度見終わったので。今期はどうですかね。
今期も今のところコレといったものは無く。テキトーに見てます。最初から見ないもの、最初の数分だけ見てやめるものもずいぶん増えました。歳ですかね。
「俺物語!!」は良さそうなロマンスものですね。ちょっと面倒くさいなぁと思わないでもないけど。
セーラームーンを見て、そういえばこんな話だったなぁと懐かしんでいます。やっぱり私は戦う魔法少女があまり好きじゃないんだなぁと再認識。
「シドニアの騎士」は1期が良かったのですが、今期はどうでしょうね。
最近全然書いてませんね。色々書きたいのですが、なかなか書けないでいます。何ででしょうね。
先日とある人と話をしたときに、その人が「インターネットは変わってしまった。もっと閉じた世界で、気軽に何でも書ける、あるいは、書いてある場所だったのに」と言うようなことをおっしゃっていました。他の人でも「昔は実名で日記が書けたけど、今は怖くなってしまったな」と言うのも聞いたことがあります。
それを聞いて私は共感するとともに、それだけではないかなぁという気もするのです。
確かにインターネットは誰でも使うものになりました。誰が見ているかわかったものではありません。うかつなことを書こうものなら、それが馬鹿発見器によって拡散される。そんなことが日常的に起きている世界でもあります。実際この私も、誰が見てるか分からないしなあ、あの人に見られてしまうかなあ、これがばれるとまずいなあ、などと考えると、書くのを控えてしまいます。SNSなどはそういう意味では良いですよね。共有範囲を適切に絞れば、だいぶ書きやすくなります。
世界が変わった。確かにそうですが、書きにくくなったのはそればかりではないでしょう。
私はその話を聞きながら、老いというものを感じました。
昔は良かった的な老い。すでにやったことがあることに対する飽き。情熱の低下。
おそらく若い人はこんな世界でも抵抗なく色々書けると思うんですよね。それは視野が狭いからかもしれない。知識や経験が少ないからかもしれない。私たちだってたいした経験や知識があるわけではないくせに。実際トラブルになる例はありますが、全体から見たらごく一部でしょうに。
多くはたいした反応も得られず、または、得られたとしても一過性のもので飽きてしまうといったところでしょうか。書いても何も起きなければ、書けば書くほど寂しくなっていきますからね。何の影響も期待しないのであればリスクを負ってまで公開する意味はありませんからね。その点やっぱりSNSはよく出来てるなと。いいね!、+1、リツイート、おきにいり、手軽に反応を返せるようになっている。ちょっと簡単すぎる気はしますが。リアルで会ったときに、あの投稿見たよ……とか、そういうのでも良いと思うのですけどね。
などと当たり障りのない一般的なことを書いてみました。
マクドナルドでAndroidのWordpressアプリから書いてます。PCのEmacs上から書くのが面倒というのも少しはあるのでしょうね。まとまった文書を書くならPCの方が良いですが、こういった気軽な文の場合は特に。
こんな文でも書くのに意外と時間がかかるものです。そこまでして書きたいと思えなくなってきているというのも大きいのでしょうね。
キッチンタイマーが壊れたので新しいのを探しています。
壊れたのは数年前に購入したTANITAのテンキータイプ(TD-379)。冷蔵庫に貼り付けて使っていたのですが、マグネットが弱く、何度も落としているうちに音はすれど何も表示されなくなってしまいました。
近くのホームセンターでまた適当なのを買っても良いのですが、このタイマーには不満があったのでもう少し良い商品は無いものかと探しています。
不満な点:
マグネットが弱いのは、たびたび冷蔵庫から滑り落ちてイライラさせられるだけならまだしも、結局壊れる原因になってしまったことを考えると思っていたより重要な点なのかもしれません。マグネットシートで改善することも出来たのかもしれませんが、まぁ、面倒くさいですよね。
音がうるさくて苦痛でした。大きな音量、甲高い音程、音の密度、とにかくやかましい。1秒くらいで自動的に止まってくれるならまだ良いのですが、もちろんそんな事はありません。耳が多少遠くても別の部屋にいても確実に気がつく、そんな用途を想定しているのでしょう。私はできるだけ鳴る前に止めていました。
というわけで、代わりを探しているのですがなかなか難しいですね。特に音量は鳴らしてみないとなかなか分かりません。店頭だと勝手に開けて電池入れて鳴らすわけにもいきませんし。Amazonのレビューを見ても「音が大きくて良い」という感想は分かりやすいですが、「音がちょうど良くて良い」という感想では私にとってちょうど良いのか分かりません。Youtube等で動画を見るのが一番分かりやすいでしょうか。音量は分かりませんが鳴り方は分かります。
「セロテープでふさげ」というような意見も見かけました。安いのを購入して自分で加工して使うという手もあるのでしょうね。
うーん、幸腹グラフィティかな。
CM見るとたまゆらの劇場版が気になる。
日常生活には支障がないくらいには治ったかな。右の後ろはまだ痛くなるケースがあるけど、このくらいなら何とか。これほど長く日常生活に支障があるくらいに痛くなったのはちょっと記憶に無い。
腰痛が始まってから一週間、今日ようやく症状の改善を感じました。
寝返りや起床をそれほど痛くならずに出来るようになりました。
立っていたりイスに座っているとまだ痛いのであまり活動する気にならないのですが、こういうときは休んだ方が良いのか動いた方が良いのかよく分からないですね。