2020年12月22日火曜日

[Linux] "System program problem detected"と表示されました

こんにちは、針山散策を今日もほのぼのと行います。


今日は、VMWare 環境のUbuntuを起動した時に、


"System program problem detected"と表示されました。


レポート読んでも分かった気になるだけなので、ググってみたところ

以下が参考になりました。


"Ubuntu/System program problem detectedの対処方法"

https://linux.just4fun.biz/?Ubuntu/System+program+problem+detected%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95


クラッシュした時に生成されるファイルがあるようで、

それがあると、上記メッセージが起動時に表示されるという流れなのですね。

なので、そのファイルを削除すれば、起動処理で引っかからずに済む。


理解しました。


[今日のひとこと]

大腸の内視鏡検査を昨日受診しました。

I had an endoscopy of the large intestine yesterday.

結果として、問題ありませんでした。

As a result, I'm glad I didn't have any problems.


2020年12月21日月曜日

[Android] 音声認識

こんにちは、針山散策を今日もほのぼのと行います。


音声認識してアプリを操作したいというユーザがいたので


音声認識の処理を実装すると、どういう振る舞いが発生するのかを調べてみました。


ソースは、以下のページが非常に参考になりました。


単発版 音声機能を追加する

https://akira-watson.com/android/recognizerintent.html


Android Developper Studio用

https://developer.android.com/training/wearables/apps/voice.html?utm_campaign=building-for-wear-215&utm_source=dac&utm_medium=blog&hl=ja


音声取得開始"startActivityForResult()"を実行すると、

「どうぞお話ください」に相当するメッセージが出ます。


java.utilパッケージにある言語種類を指定してあげると


音声取得で取り込んだデータがある程度正確にListに取り込まれます。


言語種類の指定例

    Locale.JAPAN.toString()


次に、連続で音声認識しようとしてみました。



[連続版 音声機能を追加する]

以下のページを参考にしました

https://kivantium.hateblo.jp/entry/2016/02/29/191901


単発ならよいのですが、言語取得処理を連続で呼び出そうとしてみましたが


連続だと、onError()メソッド(RecognitionListener()の継承クラス内で定義)


にERROR_INSUFFICIENT_PERMISSIONS(9)


が入ってきます。


AndroidManifest.xmlに

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

    <uses-permission android:name="android.permission.INTERNET"/>


としているからよいと思うのですが、一体何が原因なのでしょうか。


ちなみに、Android OS :8.0 (OREO)なのでApi Levelは26迄okです。


[今日のひとこと]

中国が、オーストラリアの石炭に多額の関税をかけることで輸入ストップ

しているようです。

それによって、中国が電力不足になっているらしいです。。

自国経済制裁ですか?(もしかして、既に財政破綻間際なのですか)

医療ひっ迫で、コロナ感染も前回を上回るんじゃないかと

危惧します。

日本が中国に菌をうつしたら悪いので来ないでくださいね。

2020年12月16日水曜日

[Java] クラスの静的フィールド、静的メンバはインスタンスなくてもアクセス可能

こんにちは、針山散策を今日もほのぼのと行います。


Java書籍を読んでいて、気になったのでメモ

しておきます。


気になったのは以下です。


1. クラス内(Testクラスとします)でフィールド(int test_fieldとします。)にstaticを付けた時

インスタンス化しなくてもアクセスできる。


2. クラス内(Testクラスとします)でメソッド(test_method()とします。)にstaticを付けた時

インスタンス化しなくてもアクセスできる。この時、そのメソッドで扱うのは静的なフィールドだけです。


---------------------------------------------------------

class Test()

{

    static int test_field;

    int dame;

   

    static int test_method(int i){

        dame= 1; ←static なフィールドではないので扱えない。

        test_field= 2;

        return test_field;

    }

   

}


public static main()

{

    int dummy;

    Test.test_field= 1;            // newせずに使える。

    dummy= Test.test_method();    // newせずに使える。

   

}


---------------------------------------------------------


[今日のひとこと]

Go to トラベルが全国一斉に停止になりました。

2Fの懐にお金が入ってこなくなるから激怒しているんだろうなと思ってしまいます。

旅行した時、お食事の時にお酒飲んではめを外してしまうがクラスタ発生の

原因なんだと思います。

お酒を一時的に廃止にして

酒メーカだけを支給対象にすればええんじゃないかと

思う。

2020年12月3日木曜日

[Java] const に相当するものはfinalか

こんにちは、針山散策を今日もほのぼのと行います。


書籍を読んでいて、さらっと書いてあったのですが、


Java入門者としては知らなかったのでメモしておきます。


finalを変数につけていたのですが、これはconstと同じで


固定値(定数)ということのようです。


待てよ?

他にも何か使い方があるのかな?と思って調べてみたところ、

ありました。


以下が参考になりました。


https://qiita.com/ryo2132/items/eb9a63f2b107c1d6b25c


→ 定数はすべて大文字で書くのが一般的ということは


"#define"みたいなもの?だと勝手に解釈します。


finalは"最後の"という意味だし、理解できました。


自分なりに以下のように覚えます。


・メソッドにつけるとそのメソッドが最後だから、加工禁止です。

→ オーバライドできませんよ。

・クラスにつけると、それが最後の末端クラスだから、もう充てにしないで

→継承しないでよ。

・フィールドにつけると、その値が最後の値なのだから、変更無理。

→定数


[今日のひとこと]

商店街にある唐揚げ屋さんに買いに行った時のこと、

おじいさんがたばこをふかしてスパスパ吸っていました。

周りにいる人はすごい剣幕でそのおじいさんを見ていました。

年をとると自分勝手になっていくのでしょうか?


2020年12月1日火曜日

[全般] タイマ割り込み処理の例

こんにちは、針山散策を今日もほのぼのと行います。


今回は、タイマ割り込みの定義の一例を記載します。


----------------------------------------------------

[ソース]

static unsigned long tau0_counter;


// function: タイマ割り込み処理

__interrupt static void timer_interrupt(void)

{

    if(tau0_counter!= 0)

    {

        tau0_counter--;

    }

}


// function: タイマを設定します。

void TIMER_SetTimer(unsigned long time)

{

   

    DisableInterrrupt();    // API名は変えてます。割り込み全体を禁止にします。

    tau0_counter= time;

    EnableInterrupt();        // API名は変えてます。割り込み全体を許可にします。

}


// function: 現在のタイマの値を取得します。

unsigned long TIMER_GetTimer(void)

{

    unsigned long result;

    result= tau0_counter;

    return result;

}


----------------------------------------------------

tau0_counter部分でいつもインクリメントをしていましたが、


今回はデクリメントすることでタイマを動作させています。


長所としては、tau0_counterがラップラウンドすることを

気にする必要がありません。


短所としては、複数のタイマ監視が同時に行えないことです。

(行う場合は複数個のtau0_counter相当を作っておく必要があります。)


イベントが必要なら、


tau0_counterが 0 になった時点でイベントフラグを立てて、

メインプログラムでそのフラグを見て処理を行えばよいです。


以上です。