サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
crimsonwoods.hatenablog.com
前回mrubyのことを書いてから既に1年以上が経ち、非常にいまさら感はあるのですが、 mrubyにGVL実装版のmulti-threadingのsupportを追加してみました。 ソースコードは下記で公開しています。 crimsonwoods/mruby at implement_multithreading_support_with_GVL · GitHub ベースにしているのはmruby 1.1.0のtagで、 下記のような変更を加えています。 mrb_stateをmrb_vm_contextとmrb_thread_contextに分割 GVLの実装用にmutexのAPIを追加 GVL用のAPIを追加 thread用のAPIを追加 atomic命令用のAPIを追加 threadのcontext-switch用にtimer threadを追加 Thread class実装用のmruby-
Android 5.0 (Lollipop) では64bitプロセッサへの対応が行われており、 Linux Kernelはもちろん多くのプロセスが64bitプロセスとして動作します。 また、DalvikVMに変わって採用されたARTランタイムにおいても64bitプロセッサへの対応は行われています。 さて、それでは64bitプロセッサで動作するAndroid上では全てのJavaアプリケーションが64bitとして動作するのでしょうか? その答えは「場合によっては32bitプロセスとして動作することもある」となります。 AndroidにおけるJavaアプリの起動 さて、ここからは実際にどういったロジックで32bit/64bitプロセスとして分かれていくのかを、順をおって見ていきたいと思います。 起動までの全体像 まずはおさらい的な内容になりますが、Javaアプリがどのように起動されるのか、 その
2013/06/15に開催された高専カンファレンス5周年記念パーティーに参加してきました。 高専カンファレンス5周年おめでとうございます! 運営にご尽力くださった@june29さんと@igaiga555さん本当に有難う御座いました。 そてお疲れ様でした。 私と高専カンファレンスの出会いは、2010/04/24に開催された高専カンファレンス in サレジオ(kosenconf-013salesio)でした。 この時から気づけば3年以上経っているんですね。 いやぁあっという間だなぁ。高専カンファレンスとの出会いはついこの間みたいな気がしますね。 せっかくなので、私にとっての高専カンファレンスを振り返ってみたいと思います。 高専カンファレンスと出会ってから3年、いろいろなことがありました。 私が参加したカンファレンスは、 高専カンファレンス in サレジオ - 高専カンファレンス Wiki 高専
文鎮化したWZR-1750DHP(Buffaloの802.11ac対応WiFiルータ)が手に入ったので修理してみました。 なぜ文鎮化したかですが、直接私が何かしたわけではないので詳しくはわからないのですが、 DD-WRTというCFW(Custom Firm-Ware)上でNVRAMいぢったりとかしたら文鎮化したらしいです。 簡単に手順を書いておくと、 殻割り(外装をバラして基板に直接アクセスできるようにします) UARTを探す(大抵デバッグとか修理用にUARTでconsole接続できるようになっている) UARTをつないでconsole出力を眺める(どんなブートローダーかなーとか) NVRAMをクリアする 再起動→NVRAMが修復される 再起動→DD-WRTが復活するやったー! という感じです。 殻割り 殻割りの手順としてはこんな感じです。 裏面のシール(USBとか書いてあるやつ)を剥がし
mrubyをAndroid用にビルドする方法として、以前は下記のような方法がありました。 自分でARM用のtoolchain (CodeSourceryとか) を持ってきてARM用にstaticビルド Androidのリポジトリをごっそりもってきて、その中のtoolchainでビルド Android NDKをもってきて、その中のtoolchainでビルド 最近のmrubyでは、Rubyのスクリプト(Minirakeと呼んでいるのかな?)を利用して、 ビルド時のtoolchainをカスタマイズできるようになっています。 この仕組を利用して、Android NDKだけでmrubyをAndroid用にビルドできるようにしました。 既にmruby本体の方に取り込まれている(commit ad11d3144efc34e6fdc6deb24fb073f1ccd99fdb)ので、 最新のAndroid
需要があるか判らないけど、自分のためにも書いておきます。 NDKとは? Androidでの開発において、プロセッサネイティブなコードを使用して処理の高速化などを行う場合、 Androidが公式に提供しているNDK(Native Development Kit)を使用します。 2012年12月31日現在での最新バージョンはr8dというものになります。 ダウンロードはこちらから行えます NDKで出来る事 CやC++でコードを書くことができます。 コンパイラとしてgcc-4.4.3, gcc-4.6, gcc-4.7, clang-3.1を利用できます。 プロセッサのアーキテクチャに依存した命令を書くことができます(NEONとか)。 JNIを通して、DalvikVMからコードを相互に呼び出すことができます。 armeabi, armeabi-v7a, x86, mips用それぞれのコードを生成す
「気をつけるべきこと」とか書きましたが、 ありていに言えば「自分がはまったのでくやしい!ぐぬぬ!」ってことですね。 ということでAndroidのセンサーから値を取得する上で、気をつけなきゃいけないこと書いておきます。 SensorManager取得時に指定したセンサーのタイプを信用するな。 SensorのResolutionはよくわからない。 具体的にどういうことかコードを見ていきましょう。 Androidでセンサーの値を取るときはこんな感じのコードを書きます。 @Override void onCreate(Bundle savedInstanceState) { ... final SensorManager mgr = (SensorManager)getSystemService(SENSOR_SERVICE); final Sensor acc = mgr.getDefaultS
Rubyを勉強するか!と思い立ったので、とりあえずmrubyをbuildしてみます。 <追記> ここにbuildに必要なものとか手順を公開しています。 </追記> gccのcross-compileで普通にbuildしても良いのですが、それは先人がすでにやっているようなので、 NDKに付属しているndk-buildでbuildできるようにしてみたいと思います。 ビルドに必要なものでgccとか以外だと、 Android NDK bison くらいでしょうか。 やることはこんな感じ。 mrubyのソースコード取得 android用のディレクトリ作成 ホスト用のbuild NDK用のAndroid.mk作成 NDKでbuild ということでやりましょう。 $ git clone https://github.com/mruby/mruby.git $ cd mruby $ mkdir -p an
OpenCV for Androidで特定の色領域だけ抜き出すコードを書きました。 OpenCV for AndroidではMatクラスのnative instanceはMat.nativeObjで取得できます。 ここには単純にOpenCV内部のMatクラスへのポインタが格納されているので、えいやっとそいつを取ってきて、あとはゴニョゴニョするだけですね。 処理自体はHSV色空間でやっているので、RGB(A)→HSV→RGBAと変換しています。 具体的には特定範囲の色相で、且つ一定値以上の彩度・明度をもった色を残してあとは黒で塗るということをしています。 #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <android/log.h> #define LOG_TAG "andr
このページを最初にブックマークしてみませんか?
『crimsonwoods.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く