2018年11月1日木曜日

ESP32 にて謎のエラー

ちょっと前に ESP32 を使った Blynk アプリを作りました。
久しぶりに動かすことになったのですが一部仕様追加があったので修正してコンパイルしようとしたら謎のエラーが><;

Traceback (most recent call last):
  File "/home/kiya/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 34, in
    import serial
ImportError: No module named serial
「WiFi.h」に対して複数のライブラリが見つかりました
使用済:/home/kiya/.arduino15/packages/esp32/hardware/esp32/1.0.0/libraries/WiFi
未使用:/usr/local/arduino-1.8.7/libraries/WiFi
exit status 1
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。

え〜。WiFi.h が複数あったっていいじゃん!で、調べてみるとこのメッセージは関係ないようです。

ESP32 ( ESP-WROOM-32 , M5Stack )自分的 トラブルシューティング まとめ

警告をすべてオンにして再コンパイルしても何も変わらず…で、エラーメッセージをしげしげ見るとどうやら esptool.py がエラーを出しているよう。

ということで下記を実行して無事コンパイルできました。

$ sudo apt install python-pip
$ pip install pyserial

Ubuntu 17.10 を 18.04 にアップグレードしたのですがどうも調子が悪いのでクリーンインストールしたのでその際必要なモジュールが不足してしまったようです。

Visual Studio Code にて C++ の { を単独行にしない

大昔から C++ のプログラムを書いている人間だと { を単独の行に書きたくなります。うろ覚えですが確か MFC(Microsoft Foundation Library) のソースがそうなっていたと思います。

私も以前はそう書いていたのですが、最近の多くの言語は { を生業分の末尾に書くことが多いようです。

C++ なんてほとんど使わなくなっていたのですが、最近 IoT なるものに手を染めまして、マイコンとかではやはり速度とサイズの問題で C++ が多く、使う機会が増えました。

Visual Studio Code は Microsoft製なので、自動書式整形を使うと { が単独行になってしまいます。これを変える方法はないかなと思って調べたところ設定をちょっといじれば変わるということがわかりましたので備忘録です。

C_Cpp.clang_format_fallbackStyle: "Visual Studio",

となっているところを

C_Cpp.clang_format_fallbackStyle: "Google",

なんてやってやるといい感じになります。

C_Cpp.clang_format_fallbackStyle の説明のところには下記のような記述があります。

Name of the predefined style used as a fallback in case clang-format is invoked with style "file" but the .clang-format file is not found. Possible values are Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, none, or use "{key: value, ...}" to set specific parameters, e.g.: "{ BasedOnStyle: LLVM, IndentWidth: 8 }"

Google翻訳に機械翻訳させると下記のようです。

スタイル "file"でclang-formatが呼び出されたが、.clang形式のファイルが見つからない場合のフォールバックとして使用される定義済みスタイルの名前。 指定可能な値は、Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit、noneです。たとえば、「{BasedOnStyle:LLVM、IndentWidth:8}」などの特定のパラメータを設定するには「{key:value、...}」を使用します。

参考リンク

clang-format について日本語でざっくり書かれているページ
ClangFormatスタイルオプション

英語だけど詳しく書かれたページ
CLANG-FORMAT STYLE OPTIONS

2018年10月11日木曜日

Ubuntu 18.04 に WPS Office をインストール

以前インストールしたときはなんの問題もなくさっくり入ったのですが、アップデートで起動しなくなった Ubuntu をクリーンインストール後、再インストールすると言語設定に英語と中国語しか出てきませんでした。いろいろ調べてうまく行ったので備忘録です。

インストール


下記のページよりダウンロード後インストール
Downloads - WPS Office Community

日本語化


$ git clone git://github.com/wps-community/wps_i18n.git
$ sudo apt install libqt4-dev
$ cd wps_i18n/ja_JP
このままでも使えるのですがタイトルが Kingsoft xxxx 2013 となっているのでこれを WPS に変更します。
$ grep -Erl "Kingsoft.*2013" ./

上記の grep で「Kingsoft xxxx 2013」となっている部分が見つかるので vi などを使って修正する(タイトルが違っていても気にならない方はそのままでOK)

私は下記の3ファイルを修正しました。
  1. ./ts/etresource.ts
  2. ./ts/wppresource.ts
  3. ./ts/wpsresource.ts
$ sudo make install

起動時にフォントが見つからないと警告が出る


単なる警告なので無視しても大丈夫ですが毎回うるさいのでフォントをインストールします。
git clone https://github.com/iamdh4/ttf-wps-fonts.git
cd ttf-wps-fonts
sudo ./install.sh

下記のフォントがインストールされます。
$ ll /usr/share/fonts/wps-fonts/
合計 408K
-rw-r--r-- 1 root root 119K 10月 11 11:16 WEBDINGS.TTF
-rw-r--r-- 1 root root 65K 10月 11 11:16 WINGDNG2.ttf
-rw-r--r-- 1 root root 35K 10月 11 11:16 WINGDNG3.ttf
-rw-r--r-- 1 root root 27K 10月 11 11:16 mtextra.ttf
-rw-r--r-- 1 root root 69K 10月 11 11:16 symbol.ttf
-rw-r--r-- 1 root root 82K 10月 11 11:16 wingding.ttf

2018年10月5日金曜日

ANYCUBIC I3 MEGA フニャフニャ事件

「酔いどれプログラマーの不定期日記」と称しながら日記らしい記述がないですw

今回も日記というよりは顛末記。トラブルが別のトラブルを呼び、その修理対応でさらに別のトラブルを引き起こすということを繰り返して2週間ほど悩みまくったのでその次第を記します。

フィラメントが折れる


最初のトラブルは ABS フィラメントに変えたときに発生しました。ABS は難しいと聞いていたので PLA を使っていました。PETG が ABS と PLA のいいとこ取りみたいなことが書かれているのを見て試してみたのですが、糸引きが激しくサポートも取りづらかったのでお蔵入り。

いま、めったに使わない大型バイクとキャンピングトレーラーのバッテリーを維持するため 13.6V/1Aで充電し続ける細流バッテリー充電器を作っていまして、それのケースを PLA で作ったところ面取りがうまくゆかない><;ヤスリをかけても粉にならずに残ってしまうんです。

そこで、ABS を試してみるかと購入、寝ている間に印刷させたところ 1.5 センチ位しか印刷されていない!しかし崩壊したときのようなマリモができていない???なんだ?と思いエクストルーダーを見るとフィラメントがポッキリ折れている><;「あらら」なんて気楽に考えていたのですがこれがトラブル開始の合図でした。

折れたフィラメントを引き抜き再度設定、filament in では問題なく吐出してたのでノズルの詰まりはないと確認。230℃で印刷したのでちと温度が低かったかな?と 250℃に変更。しかし、また、ほぼ同じ位置でフィラメントが折れる><;

う〜ん何が悪いのだろ?ふと思ったのは  ANYCUBIC I3 MEGA はフィラメントをしたから吸い込むようになっているので本体と同じ高さにフィラメントホルダーを置くとどうしても斜めに吸い込む形になってしまいます。そこに無理があってフィラメントが折れるのか?早速、本体をラックの端に置き床にフィラメントホルダーをおいてフィラメントが垂直に吸い込まれるようにしてみました。結果は効果なし、またまた同じような位置でフィラメントが折れます。

う〜ん、困った。なんてここでもまだのんきに構えていたのですが、折れたフィラメントを抜き取ろうとしたところ短い切れ端しか出てこない!ゲゲッ!チューブの中にフィラメントが残ってしまった!これを抜かないことには何もできないじゃないか!

幸いプリントヘッドASSY がおまけで付いてきたのでこのチューブに交換しよう。ん、エクストルーダー側の(のちにワンタッチ継手という物だということ知る)金属製のネジが付属していません。なんとかこれをチューブから外そうとしたのですがチューブに噛み付いているようで抜けない><;ちと強引に抜いてやったのが失敗でした。組み付けて印刷しようとするとチューブが抜けてしまってフィラメントが入っていきません><;

この金属のネジを手に入れなければならないのでネットで調べてみると、ワンタッチ継手というもので抜く際には上部のプラスチックを押し込んでやらないといけないらしい><;更に引き抜く方向に力をかけるとチューブに爪が食い込んで抜けなくなるらしい!?って、フィラメントをエクストルーダーで押し込んでいるわけだから印刷中は常に引き抜く方向に力がかかっているわけで基本的に抜くことはできないものなのね…

いずれにしてもこのネジがないとどうにもならないのでアマゾンで検索、ワンタッチ継手2個付きのチューブが見つかったの早速注文、プライムなので1日で来るらしい。翌日、このワンタッチ継ぎ手を使って組み立て ました。ABS はもう懲りたので封印し PLA に戻しました。また、念の為、ノズルも新品に交換しました。

印刷物の硬度が低くフニャフニャ

早速印刷、よしちゃんと印刷できるじゃないか\(^_^)/と喜んだのもつかの間、印刷物に力をかけるとなんか柔らかい???壁が2層に分離してしまう…何だこりゃ!

まずは、インフィルの問題かと思い 100% にするも効果はありません。考えてみれば外壁の厚さは 1.5mm で設定の壁の厚さは 1.2mm なのでインフィルにはならないw

そこで外壁の厚さを 2mm に変更して印刷すると壁が3層に分離してしまいます…

次に考えられるのは温度の問題です。とりあえず 200℃から 230℃に上げて印刷してみたところだいぶ固くなりました。 250℃にすると以前と遜色ない強度が出ました。でも、そうすると今度はサポートがガッチリ張り付いてしまって取り除きにくい><;困った…

とりあえずサポートに問い合わせてみるかと思い、説明用に小さな箱を 200℃ 〜 250℃まで 10℃刻みで印刷して写真を取りました。その際 200℃〜230℃まではエクストルーダーから「カッ」と時々音がすることに気づいたのですが、この時点では別のことに気が向いていてあまり意識しませんでした。

この時点での私の予想は、温度が上がれば印刷できるので温度センサーが壊れたのではないかということで、取り敢えず現状とその説明の写真及びムービーをサポートに送りました。

翌日には返事があり、エクストルーダのネジの緩み、ノズルの詰まり、テフロンチューブをチェックしろとのことでした。ノズルは交換したとメールに書いたのに…ここのサポートってほんと送られてきたメール読んでないんだよなぁ。

とりあえず、ネジの増し締めとチェックを済ませて印刷するも状況を変わらずで、その旨を返信しました。更に返信がありエクストルーダーのムービーを送れとのことだったので、撮影して送りました。更に返信があり、サーミスタは正確に実際の温度を示しているかとの質問…それを計る手段を私は持ちません…正直なところ Pxmarion のトラブルのときはこういったメールを送ると疑わしい部品をすぐに送ってくれたのでそれを期待する気持ちもあったのですが、ANYCUBIC はそういうことはしないらしいです…とするとメールによるサポートはこの辺が限界かな?

ということで予備のプリントヘッドASSY からサーミスタとカートリッジヒーターを取り外して交換しましたが状態変わらず…

エクストルーダーギア交換


そういえばサポートはエクストルーダーだと言っていたなぁと思いだしまして、さらにネジの増し締めをしてみても効果なし、とりあえずバラしてみるかとギアを外してみると…

あちゃ〜、ギアの歯にはフィラメントがつまり、歯そのものも鈍ってしまっている。こりゃ滑って駄目だ。とりあえず、精密ドライバーを使って歯の間に詰まったフィラメントを取り除き、なまった歯も砥いでやる。これでどうだ!印刷してみると…

やった、200℃印刷できる!治った〜と思ったのもつかの間、その日、寝る前に印刷開始して翌朝見るとフニャフニャ><;ギアを見るとなまってる…アマゾンにギアを注文しました。

フィラメントが出ない!


あれ?フィラメントが出てこない!エクストルーダーはどんどん送り込んでいるのにフィラメントがどこかに消えてしまう…ノズルが詰まったか?ホットエンドからチューブとノズルを取り外し、針金を上から突っ込んでみても入りません。下から精密ドライバーを突っ込むとフィラメントが付いてきます。ホットエンドのヒーターをオンにし 230℃にあたためて下から精密ドライバーを突っ込み上から針金が貫通するまでフィラメントを絡め取りました。

しかし、組み立てて印刷しても現象は変わらずでした…

この時点でトラブル発生から8日経過、毎夜毎夜の修理に嫌気が差してきて買い換えようかとも考えたのですが、これ購入したの7月末。まだ3ヶ月しか遊んでないじゃん。ということで買い替えは思いとどまり、プリントヘッドASSYをまるごと交換することにしました。付属のものは諸々の部品を取ってしまったのでアマゾンで注文、プライムだけど残念ながら到着は翌々日…で、まるごと交換してみると…

復活\(^_^)/ 正常に印刷できるようになりました。

なんか、10日ほど3Dプリンターが使えない日々を過ごして感じたのは、私、3Dプリンター中毒になっているのかもしれません^^;

2018年10月2日火曜日

電卓キーで Gnome 電卓を起動

Ubuntu 18.04 をクリーンインストールしたら電卓キーで電卓が起動しなくなった><;
なんでか理由はわからないけど不便なので設定変更。

  1.  「設定」アプリ
  2.  「デバイス」左ペイン
  3.  「キーボード」左ペイン
  4.  「+」ボタン(右ペイン一番下)
  5.  「名前」→「Gnome電卓を起動する」
  6.  「コマンド」→「gnome-calculator」
  7.  「ショートカット」→「Calculator」(電卓キーを押す)


2018年10月1日月曜日

mozc 用「カナ英辞書V2」の変換

Ubuntu にて「カタカナ英語変換」を使うにはコンパイルが必要とのことでちょっと面倒、「Google日本語入力強化辞書」というものが公開されておりこの中に入っている「カナ英辞書v2」をユーザー辞書として登録してやるのが一番かんたんなのですが、文字コードが UTF-16 LE だったり、「ゔ」が文字化けしていたりとそのまますんなり使うというわけにも行かないようです。そこでそれらを変換する PHP スクリプトを作成しました。

機能

  1. 文字コードを UTF-16 LE から UTF-8 に変換
  2. 「?」に化けた「 ゔ」を置換
  3. よみが記号や漢字などひらがな以外で始まる単語を除去
  4. よみ、単語、品詞が一致していてコメントだけが違っている単語を1つにまとめる
  5. よみの先頭に@を追加

使い方


カレントディレクトリに「カナ英辞書v2.txt」をおいて実行すると UTF-8 に変換した辞書を標準出力に出力しますのでリダイレクトして好きなファイルに保存してください。

$ php カナ英辞書v2-utf8.php > カナ英辞書v2-utf8.txt

ソース

/**
 * 使い方
 *
 * カレントディレクトリに「カナ英辞書v2.txt」をおいて実行するとUTF-8に変換した辞書を出力
 * $ php カナ英辞書v2-utf8.php > カナ英辞書v2-utf8.txt
 */

// ファイルを読み込む
$file = file_get_contents('カナ英辞書v2.txt');

// UTF-16 LE → UTF-8
$file = mb_convert_encoding($file, 'UTF-8', 'UTF-16LE');

// 文字化けした'ゔ'を修正
$file = str_replace('?', 'ゔ', $file);

// 行で分解
$lines = explode("\n", $file);

// よみ、単語、品詞が一致するものを除外して出力
$last = ['', '', '', ''];
foreach ($lines as $line) {
    $cols = explode("\t", $line);

    // ひらがな以外で始まるよみは無視
    $c = mb_substr($cols[0], 0, 1);
    if (($c < 'あ') || ($c > 'ん')) {
        continue;
    }

    // 前回の出力と一致しているか調べる
    for ($i = 0; $i <= 2; ++ $i) {
        if ($last[$i] != $cols[$i]) {
            break;
        }
    }
    if ($i > 2) {
        // よみ、単語、品詞が一致しているので無視
        continue;
    }
    $last = $cols;

    echo "@{$cols[0]}\t{$cols[1]}\t{$cols[2]}\t{$cols[3]}\n";
}

2018年9月3日月曜日

Ubuntu 18.04 にて FreeCAD で .scad ファイルを読み込む

Thingiverse などにてダウンロードできる3Dモデルって大抵が .stl ファイル。3Dプリンターで印刷するもの特に実用品は自分用のサイズで作られているものが多いのでなかなかしっくりこない。でも、.stl ファイルを編集というのはちと厳しい。なんだかなぁと思いながら日々使えそうなモデルを探していたのですが、検索に Customizable というのがあることに気づきました。

もしやとこれで出てくるモデルのファイル一覧を見ると .scad というファイルが含まれています。グーグル先生に聞くとこれは OpenSCAD というモデリングツール用のデータ(ソース)。

やった、これで編集できると!と思いきや OpenSCAD ってプログラム組んでモデリングするんだ…なんか、36年ほど前、PC-6001を買って BASIC にて画面にグラフィックを表示させて喜んでいた時代を思い出した^^;

方言はきつそうだけどなんとなく使い方はわかるのですが、いまはやっと FreeCAD の使い方がわかってきたところなので2兎を追うものになりたくない。ということで FreeCAD にインポートしようとしてちょっとハマったのでその話。(前置き長すぎるw)

まずは、ハマった記から。

とりあえずグーグル先生に「freecad import openscad」で聞いてみるとすぐに説明ページが見つかりました。
Import OpenSCAD code

このページによると下記のようにすれば良いことになっています。
  1. OpenSCAD をインストール
  2. FreeCAD を開く
  3. OpenCAD ワークベンチに切り替える
    ※これをやらないと設定画面に OpenSCADがでてこない
  4. 編集 → 設定 → OpenSCAD 
  5. OpenSCAD の実行ファイルを設定
  6. ファイル → 開く で .scad ファイルを開く
ということでまずは OpenSCAD のインストール
ソフトウェアを開き openscad で検索(この時点でハマっていたわけですがw)opescad-plars と openscad-nightly という2つが出てきます。どちらにしようか迷ったのですがとりあえず上にある openscad-plars をインストール、起動してみると正常に開きました。

次に FreeCAD を開き OpenSCAD の実行ファイルを設定…ん、実行ファイルはどこにあるんだ?だいたいアプリケーション一覧にも出てこないし…

$ whereis openscad-plars.openscad
openscad-plars: /snap/bin/openscad-plars.openscad

ほほう、そこか。ということで /snap/bin/openscad-plars.openscad を設定、.scad ファイルを開こうとするが、ファイル一覧に出てこない。仕方ないのでファイルタイプを All(*) にして選択するが対応していないと怒られる><;

う〜ん。仕方がないのでグーグル先生で見つかったサイトをあちこち見てみるけどどこも同じようなことが書いてある><;OpenSCAD って 2015年で開発止まっているみたいなんでダメなのか?と諦めかけましたがふと格納ディレクトリが気になった!?

/snap ってなんだ?ということで snap を調べると 18.04 から実用的に使えるようになった機能らしい。

$ snap list
Name            Version     Rev   Tracking  Publisher   Notes
core            16-2.35     5328  stable    canonical✓  core
openscad-plars  2016.06.02  1     stable    pwlars      -

ありゃ? openscad くらいしかこの機能で入っているアプリ無いじゃん!これが原因だなとソフトウェアからアンインストール。OpenSCAD の公式サイト に書いてあるとおりにインストールしました。

$ sudo add-apt-repository ppa:openscad/releases
$ sudo apt update
$ sudo apt install openscad
$ whereis openscad
openscad: /usr/bin/openscad /usr/share/openscad /usr/share/man/man1/openscad.1.gz

これでインストール完了、再度同じ手順をするもやはりファイル一覧に .scad というものが出てこない…

しばし考え込んだのですが、もしかして mime タイプが登録されていないとかか?とりあえず OpenSCAD を起動して、FreeCAD を起動し直すとファイル一覧に .scad ファイルが出てきました\(^_^)/サンプルを開くとちゃんと見れた〜

ということで、公式からのインストールと、上記の手順の 1. と 2. の間に OpenSCAD を起動というスッテプが必要なようです。

あと、設定について他のサイトに書かれていたのですが、OpenSCAD import 欄の Use ViewProvider in Tree View と Use Multimatrix Feature はチェックを入れておいたほうがいいらしいです。

2018年8月7日火曜日

ANYCUBIC I3 MEGA で木製フィラメント

今回この木製フィラメントを使ってみようと思い調べたことの備忘録。
※未検証です。

Pxmalion Wood ウッド 3Dプリンター用木造フィラメント素材 マテリアル木材木質材料 1.75mm径 正味量1KG(2.2LB) 精確度+/- 0.03mm だいぶの3Dプリンターと3Dプリントペンが適用 (原木色)
\2,980

木質フィラメントを使用する際はノズル径を 0.5mm 以上にしなければならないらしく、推奨は 0.6mm とのこと。ANYCUBIC I3 MEGA のノズル径は 0.4mm なので詰まりやすいらしい。
# 別の製品のレビューではとにかくつまりまくると書かれているものもあった

ノズルは互換性があるようなのでこんなのを買って付け替えれば良いらしい。

Comgrow (5個セット)3Dプリンター 交換 ノズル MK8押出機 押出ノズル プリントヘッド メイクボット (0.3/0.4/0.5/0.6/0.8)
\850

実際にノズル径を変更した人の記事を見ると印刷品質について書かれていることが多くあまり細かい情報がないんだけど、ある記事に「ノズル径を変えたときはスライサーの設定変更をお忘れなく」という記述があった!

これこれ、ノズルの径が変わればフィラメントの吐出量も変わりそうなのでそのままでは印刷できない気がしていたのです。

さてと、ではどこを変えればいいんだ? Cura を開いてみてもそれらしき設定が見当たらない…ググってみると??? なんか違う…

そういえば、メーカーサイトで配布している Windows 版は 15.04.6。私がインストールした Linux 版は 3.4.1。

もしかして別物かな? ということで「Ultimaker Cura ノズル径」で検索したら有りました。プリンター設定に入っていました。

  1. 画面右上の「プリンター名」の右側をクリック
  2. 「プリンターを管理する」をクリック
  3. 「+追加」ボタンを押す
  4. 「Other」をクリック
  5. 「Anycubic i3 Mega」を選択
  6. プリンター名を「Anycubic i3 Mega 0.6mm」などに変更
  7. 「プリンターについて」ボタンをクリック
  8. 「プリンターの設定」ボタンをクリック
  9. 「Extruder」タブを開く
  10.  ノズルサイズを 0.6 などに変更

ノズルと木製フィラメントが来たら早速試してみようっと。

2018年7月15日日曜日

Ubuntu 18.04 サスペンド後 有線ネットワークが繋がらない

自宅のPCの Ubuntu を 17.10 から 18.04 にバージョンアップしたのですが、なかなか手ごわいw

スタンバイから復帰させるとインターネットに繋がらない><;え〜!と調べてみると有線ネットワークが「非接続」となっている!?ネットワークケーブルを抜いて再度挿してみても状況は変わらず、NetworkManager を再起動してみるも影響なし><;

いやはや、こりゃやっぱクリーンインストールしなきゃだめかと、/home /etc /var /opt をバックアップ後にクリーンインストール。

起動後に Chromium をインストールして起動したけど Gnome Shell Extention Web Site が Chrome 拡張機能やらなんやらをインストールしてもちゃんと動作しない><;とりあえず本家 Google Chrome をインストールすると正常動作…(まったく、手間かかるよなぁ)

と、それは置いておいて、諸々再設定後にスタンバイ、復帰させると…ネットワークが繋がらない><;オイオイと思いながら検索してみるとどうやら特定の NIC で発生する不具合らしい…

Ubuntu 18.04 その105 - 一部のRealtek Semiconductor製ネットワークカードで、サスペンドから復帰時にネットワークに接続できなくなる不具合

このページよると、対応方法は2つで、「PCを再起動」するか「ドライバーを読み直す」らしい。どちらの方法でも正常動作\(^_^)/

「PCを再起動」って…スタンバイの意味ないじゃんw ということで「ドライバーを読み直す」で対応することに、とりあえずシェルスクリプト書いて ~/bin に放り込んでおいた。

~/bin/net_restart.sh
sudo modprobe -r r8169
sudo modprobe r8169

2018年7月14日土曜日

Ubuntu 18.04 Apprications-menu が開かない

会社のPCはとっとと 18.04 にアップグレードして問題なく使えるようになったので、自宅の PC もアップグレード。公開されてからそれなりに日も経っているのですんなり行くかと思ったのですが、そう甘くないのがオープンソースw

いきなり来たのがトップバーの左端に出る gnome-shell 拡張機能の Apprications-menu。これがクリックしても開かない><; TweekUI でみるとビックリマークの付いた三角が表示されている。クリックすれば情報が出るかと思えばソフトウェアは開くが単なる灰色画面で何も表示されない><;

こりゃ同じ症状の人もいるだろうとグーグル先生に聞いてみると、いました!w

Ubuntu 18.04 Application menu not showing after clicking

で、このページを見ながらやったら直ったのでそのメモ
# 最近は老化が進んでとにかく忘れてしまうので何でもメモするようにしています^^;

$ sudo gnome-shell --version
GNOME Shell 3.28.2
$ sudo vi /usr/share/gnome-shell/extensions/apps-menu@gnome-shell-extensions.gcampax.github.com/metadata.json 

"shell-version": [ "3.28" ],
    ↓
"shell-version": [ "3.28.2" ],
再起動するも変化なし><;

Tweeks を起動(以前は TweekUI という名前だった気がするけど気のせい?)

「トップバー」の [Activities Overview Hot Corner] を「オン」に変更して再起動

これで直りました\(^_^)/

実際には何度も試行錯誤を繰り返したので、もしかすると上記だけでは手順が足りないかもしれませんがそのへんは割愛しましたm(_ _)m

2018年7月3日火曜日

Digistump の Digispark Kickstarter という ATTINY85 を使った安価で小さなマイコンがあります。これの上位互換品で Digispark Pro というのを試してみたところ、ちょっと悩んだので備忘録。

プレス機のカウンター信号(単なるオン/オフスイッチ)をスマホで受け取るというセンサーを作成することになりどうしようかなと思ったのですが、信号そのものが出ていない機械だとホール効果センサーを付けるとか、将来的にはその他のセンサーもつなぎたいとのことだったので間にマイコンをかますことにしました。

とりあえず、Pro Micro という Arduino Leonardo 互換のちっちゃいやつで試してみまして、簡単にできました。これでもいいのですが Digispark Kickstarter でも十分かなと思い試そうとしたのですが、部品箱を見ると在庫切れ><;

よく見ると似て非なるものが何個か出てきた。なんかピンが多い…で、調べてみると Digispark Pro という Digispark Kickstarter の上位互換品。んじゃ、取り合えずこれで試すかと簡単なプログラム書いて書き込もうとしたらわけのわからないワーニングが大量に出て書き込めない><;

最大14844バイトのフラッシュメモリのうち、スケッチが958バイト(6%)を使っています。
グローバル変数は9バイトのRAMを使用しています。
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)Warning: device with unknown new version of Micronucleus detected.
This tool doesn't know how to upload to this new device. Updates may be available.
Device reports version as: 2.0

いろいろ調べてみたところ、下記のページに解決策が書かれていました。
(私の環境ではライブラリのヘッダが足りなくてコンパイルが通りませんでしたが…)

Warning: device with unknown new version of Micronucleus detected.


1. 書き込みツールのダウンロード


$ cd ~/temp
$ wget https://github.com/micronucleus/micronucleus/archive/master.zip

2. 展開


$ unzip master.zip

3. コマンドラインツールのソースフォルダに移動


$ cd micronucleus-master/commandline/

4. コンパイル


$ make
make: libusb-config: Command not found
Building library: micronucleus_lib...
gcc  -Ilibrary -O -g -D LINUX -c library/micronucleus_lib.c
In file included from library/micronucleus_lib.c:30:0:
library/micronucleus_lib.h:32:10: fatal error: usb.h: そのようなファイルやディレクトリはありません
 #include <usb .h>
          ^~~~~~~
compilation terminated.
Makefile:55: recipe for target 'micronucleus_lib' failed
make: *** [micronucleus_lib] Error 1

# usb.h が見つからないというエラーが出ました><;

5. usb.h の含まれるパッケージを探す


$ sudo apt-get install apt-file
$ sudo apt-file update
$ apt-file search /usr/include/usb.h
libusb-dev: /usr/include/usb.h

6. libusb-dev をインストール


$ sudo apt install libusb-dev

7. 再度コンパイル


$ make
Building library: micronucleus_lib...
gcc  -Ilibrary -O -g -D LINUX -c library/micronucleus_lib.c
Building library: littleWire_util...
gcc  -Ilibrary -O -g -D LINUX -c library/littleWire_util.c
Building command line tool: micronucleus...
gcc  -Ilibrary -O -g -D LINUX -o micronucleus micronucleus.c micronucleus_lib.o littleWire_util.o -L/usr/lib/x86_64-linux-gnu -lusb
rm -f *.o

8. 出来上がったファイルの確認


$ ll micronucleus
-rwxr-xr-x 1 kiya kiya 55K  7月  3 11:05 micronucleus

9 .複写先の確認(すでに存在したらリネームするため)


$ ll ~/.arduino15/packages/digistump/tools/micronucleus/2.0a4
-rwxrwxrwx 1 kiya kiya 19K  2月 13  2016 launcher
-rwxr-xr-x 1 kiya kiya 55K  7月  3 11:10 micronucleus

10. すでに存在するのでバックアップ


$ mv ~/.arduino15/packages/digistump/tools/micronucleus/2.0a4/micronucleus micronucleus.2.0a4

11. 複写


$ cp micronucleus ~/.arduino15/packages/digistump/tools/micronucleus/2.0a4

これで書き込めるようになりました。

2018年6月28日木曜日

Ubuntu 18.04 Line入力をスピーカーへ

Windows 時代はごく普通にスマホなどを Line 入力につなぎ Bluetooth ヘッドホンで聞いていたのですが、Ubuntu に変えてからこれができなくて悩んでいました。

PulseAudio 音量調整をいじってみると Line 入力にはちゃんと音が来ているようなのになぜかスピーカーやヘッドホンなどからは音が出ない…

1. arecord でループバック


$ arecord -r 44100 -c 2 -f S16_LE | aplay

2. PulseAudio ループバックモジュール読み込み


一時設定

$ pactl load-module module-loopback

恒久設定

$ sudo vi /etc/pulse/default.pa

末尾に追加
load-module module-loopback

2018年6月27日水曜日

M5Stack m5cloud を試してみた。その3

ちょっとしたテストも兼ねて HTTP にて Google のホームページの読み込みを行ったあと、何かボタンを押すまで待ち、5秒毎に内蔵の磁気センサーを読んで10回分をまとめて Ambient に送信するコードを書きました。

センサーを読んでクラウドに送ると言った基本的な部分は抑えられたかと思います。

from machine import I2C, Pin
import machine, utime, time
from m5stack import lcd
import urequests
from mpu9250 import MPU9250
import ambient

def format(n, length):
    n = int(n)
    n = str(n)
    l = len(n)
    if l < length:
        n = " " * (length - l) + n
    return n    

def isPushAnyKey():
    if buttonA.isPressed():
        return True
    if buttonB.isPressed():
        return True
    if buttonC.isPressed():
        return True
    return False

def push_any_key():
    lcd.print("Push Any Key.¥n")
    while not isPushAnyKey():
        utime.sleep(0.01)

def lcdPrintln(str):
    print(str)
    lcd.print(str + "\n")

# Fit watch
rtc = machine.RTC()
lcdPrintln("Synchronize time from NTP server ...")
rtc.ntp_sync(server="ntp.nict.jp", tz='JST-9')


# init LCD
lcd.clear()
lcd.setBrightness(200)
lcd.font(lcd.FONT_Default)
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)

# get google 
lcdPrintln("get http://www.google.com")
response = urequests.get("http://www.google.com")
lcdPrintln("status: " + str(response.status_code))
#print(response.text)
push_any_key()

# read gyro
lcd.clear()
lcd.setCursor(0, 0)

am = ambient.Ambient(チャンネルID, "ライトコード")

i2c = I2C(scl=Pin(22), sda=Pin(21))
imu = MPU9250(i2c)
while True:
    data = []
    lcd.clear()
    while len(data) < 10:
        g = imu.magnetic
        x = format(g[0], 6)
        y = format(g[1], 6)
        z = format(g[2], 6)
        lcdPrintln(x + " " + y + " " + z)
    
        dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        data.append({"created": dt, "d1": g[0], "d2": g[1], "d3": g[2]})

        utime.sleep(5)
    
    r = am.send(data)
    lcdPrintln("http-status: " + str(r.status_code))


このコード特に問題ないように見えますが、延々と走らせておくと Ambient オブジェクト内でエラーを起こしてプログラムが停止してしまいます。このままでは実用にならないので、自前サーバーを立てることにします。

ちょっと話がそれますが、m5cloud を使わずにオフラインでの開発方法について備忘録。

1. アップロードツールのインストール

$ sudo pip install adafruit-ampy

2. ソースコードのアップロード方法

$ ampy -p /dev/ttyUSB0 put ./flash/main.py /flash/main.py

この方法だと、デバッグ情報などを見るシリアル通信と交互に行う、言い換えるとファイルをアップロードするたびにシリアル接続を切断して、アップロード後につなぎ直すというとてもめんどくさいことになります。

しかし、m5cloudのソースエディタは最少機能なので Visual Studio Code などの使いやすいエディタが使いたいです。なので、ソースの編集は Visual Studio Code で行い、ソースをまるごと m5cloud の IDE にコピペして m5cloud から実機にアップロードというやり方が良い気がします。

ANYCUBIC i3 Mega 3D 付属の Cura を Ubuntu にインストール

3D プリンター「ANYCUBIC i3 Mega 3D」というものを購入しまして、早速組み立てテスト印刷まで行いました。


で、早速 WeMos D1 Mini を収めるケースを作ろうと、「Thingiverse」にいってモデルを物色「WeMos D1 Mini + PIR case」というのを発見。


早速これを印刷してみようと、.stlファイルを SDカードに入れたのですが印刷メニューに出てこない…

よく調べてみると、.stl から .gcode というファイルを作らなければいけない。.gcode というファイルを作るには付属の SDカード内に格納されている Cura というソフトを使う。

なら、インストールしようと SDカード内を見ると… MAC 用しか入っていない><;せめて Windows 用があれば仮想マシン上で走らせることもできるのに…
# 2018年1月のMacの世界シェアはわずか10%

もしかしてと思いメーカーのサポートページを開くと、Cura_15.04.6_Win というのがありました。 う〜ん、Linux 版を期待したのに…

で、「Cura Ubuntu」で検索してみたところ「Ultimaker Cura 3.4」というものを見つけました。バージョンが全然違うので一抹の不安を覚えますが、とりあえずやってみようとダウンロードしファイルをダブルクリックするとパスワードを求められたのでインストールが始まるかと思いきや何もおきず???

なんだと思ってあちこち開いてみると AppImage というものがマウントされている…その中に AppRun というファイルがあるのでこれをダブルクリックすると起動した\(^_^)/

ん?!でもこれじゃぁこのアプリを使うたびにマウントしてから起動するの? で、再び検索、とりあえず 「cura appimage ubuntu」 を調べると「AppImage形式のインストール方法は?」というページが出てきました。

なるほど、実行権を付けてからダブルクリックすればいいのね。

ということで無事インストール完了し自動的にアプリが起動しました。とりあえず終了して、再度起動しようとしたけどアプリケーションメニューのどこにもそれらしきアプリがない><;

cura* で find してみたけど何も出てこないし…

そこで何気に Cura-3.4.0.AppImage をダブルクリックすると Cura が起動…あ!これってインストーラーじゃなくてアプリそのものなんだ!

念の為、Windows に Cura_15.04.6_Win をインストールして起動すると「New version available」 インストールをクリックすると、「Ultimaker Cura 3.2」をダウンロードw

ということは、Ubuntu用で問題ないのね\(^_^)/

2018年6月25日月曜日

M5Stack m5cloud を試してみた。その2

前回の記事では、ハードウェア(ファームウェア)のセットアップをしました。今回はソフトウェア(ウェッブアプリケーション)の設定を行います。

1. m5cloud に登録


http://cloud.m5stack.com/ にアクセスします。

[Register] ボタンを押します。

メアドとパスワードを入力して[Register]ボタンを押します。

Chrome だとレイアウトか崩れてパスワード入力欄の上に[Login]ボタンがかぶってしまっています。私の場合は Chrome に ID とパスワードを記憶させたのでこのまま[Login]ボタンを押しました。

2. デバイスの登録


デバイス・マネージメントが表示されたら [Add] ボタンを押します。

M5Stack の電源を入れ、チェックコードを表示させます。(チェックコードは一定時間ごとに変わります)

チェックコードを入力します。

IDEを開きます。

デバイス選択画面です。まだ1つしか登録されていないのでそのまま [OK] ボタンを押しました。

[File Syncing] と表示されて、サンプルアプリがデバイスにアップロードされます。

サンプルアプリは中身がすべてコメントアウトされているため、デバイスで実行されているにもかかわらず「Run:"main.py"」と表示されるのみです。とりあえずコメントを外して、画面右下の「Upload  & Run」ボタンを押します。

画面に 「Hello World!」と表示されました。

さ〜てと、Python か〜。インデントが段落を表すとかあんまり好きになれそうもないけど頑張ってみるかな…

ということで今回はここまでです。

次回は、加速度センサーの値を読み込んでサーバーに送信させようと思っています。ただ、RFタグを読ませてほしいなんて話が出ているのでもしかするとそちらが先になってしまうかもしれません。(予定は未定w)

2018年6月19日火曜日

M5Stack m5cloud を試してみた。その1

M5Stack という5センチ角ほどのマイコンを試してみました。今回は M5Stack GRAY という加速度、ジャイロ、磁気を計測可能な9軸センサ、MPU9250を搭載したモデルを使用しました。


ILS - M5Stack ESP32 MPU9250 9Axies Motion Sensor Core Development Kit Extensible IoT Development Board

※ Ubuntu 18.04 での記録です。

MCU には技適取得済みの ESP-WROOM-32 が搭載されているので日本でも合法的に使えます。また、フルカラー液晶、3ボタン、microSDカードスロット、スピーカー、バッテリーまで搭載されています。

ESP-WROOM-32 という MCU は 32Bit デュアルコアCPU、 SRAM 520KB、 FLASH 4MB、 Wi-Fi、Bluetooth、タッチセンサー、ホールセンサー、温度センサーを内蔵しています。

普通に Arduino として使えるのですが、今回は microPython が使えるクラウドベース開発環境の m5cloud を試してみました。

1. esptool.py のインストール


ESP32 を Arduino で使っとことがあれば Arduino/IDE/hardware/espressif/esp32/tools/esptool.py などにすでに入っているかもしれません。
また、ESP Easy などを使うためにすでにダウンロードしてあればそれを使ってください。
初めて使うなら下記のコマンドでインストールできると思います。

$ pip install esptool

上記で ~/.local/bin にインストールされると思います。

2. ファームウェアのダウンロード


github に置かれていますのでダウロードしてください。

https://github.com/m5stack/M5Cloud/raw/master/firmwares

私は v0.4.0 というものを入れてみました。

$ wget https://github.com/m5stack/M5Cloud/raw/master/firmwares/m5cloud-20180516-v0.4.0.bin

3. ファームウェアのインストール


$ esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
$ esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash --flash_mode dio -z 0x1000 m5cloud-20180516-v0.4.0.bin

4. 起動


起動すると下記のような画面になりました。



Cボタンを押しながら起動すると WiFi 設定モードになると書かれているようです。

5. スマホにて Wi-Fi 接続


スマホの Wi-Fi 一覧を開くと「M5Stack-xxxx」といった SSID があると思いますのでそれに接続します。

6. 設定画面

ブラウザにて 192.168.4.1 を開くと M5Stack が接続する…はずなのですがしばらく待たされたあと「[504] Gateway Timeout」と表示されてつながりません><;

う〜ん、なんだろうとあれこれいじりまわしてみるた結果、モバイルデータ通信をオフにしてやると設定画面が表示されることがわかりました\(^_^)/

Wi-Fi アクセスポイントの設定画面が表示されますので、M5Stack がインターネットアクセスに利用する SSID とパスワードを入力します。


[Configure] ボタンを押すと設定が保存され M5Stack はその Wi-Fi アクセスポイントに接続するのでスマホが接続されていた [M5Stack-xxxx] というアクセスポイントはなくなっていますので、スマホのブラウザにはエラーが表示されますが M5Stack の画面の「Check Code: xxxxxx」と表示されていれば完了しています。

SSID やパスワードを間違えたときは、M5Stack の C ボタン(右端のボタン)を押しながら起動すれば [M5Stack-xxxx] のアクセスポイントが現れて再度設定できます。

今日はここまで。





2018年6月14日木曜日

新デザインのGmailでビューを選択し直す

ちょっとわかりにくかったのでメモ

1. 画面左上のが歯車ボタンを押す


2. メニューから「表示間隔」を選択


3. ビューの選択が表示される




2018年6月11日月曜日

ionic3 で HTTP 通信

基本的なことは下記のページに書かれています。


$ ionic cordova plugin add cordova-plugin-advanced-http
$ npm install --save @ionic-native/http

これで準備は完了。

let url = 'http://hoge.hoge.com/test.php';

let body = {
  'sid': this.data.server.siteID,
  'tac': this.data.terminal.account,
  'tpw': this.data.terminal.password,
};

let headers = {};

this.http.post(url, body, headers).then((res: HTTPResponse) => {
  // 成功
  console.log(res);
  resolve(res);
}).catch((res: any) => {
  // エラーが発生した
  console.log(res);
  resolve(res);
});

利用も簡単!

なんて楽ちんなんだろうと思ったら大間違いでした…

Android ではなんの問題もなく通信できたのですが、iOS では then() にも catch() にも来ません???

XCode のコンソール出力を見ると、cordovaHTTP is not defined と出力されています???
なんでだろうと散々調べたのですがさっぱりわからず。念の為 cordova-plugin-advanced-http をremove 後に、再度 add。
cordovaHTTP is not defined は出なくなり、http.post() 呼び出し後リクエストの送信は行われるのですが、相変わらず then() にも catch() にも来ません><;

先に種明かしすると、この原因は content-type でした。

クライアントからのリクエストもサーバーからのレザルトも単なるテキストなので、plain/text を返していたのですが、application/json を返さないとサーバーからのレザルトを受け取らないようです。

いやはやマイナーOSは情報少ない上に癖が強くてホント苦労させられる><;

シャープ SH-M05 レビュー 使用開始22日目

だいたいわかってきました。

悪口ばかりかいているのでまず良い点を^^;

「エモパー」なかなかいい感じです。
夜間は枕元に置いて充電しているわけですが、朝起きて充電ケーブルを外すと「おはようございます」に続けて今日の天気とかちょっとした情報を話してくれます。これはなかなか便利です。

時間や位置情報、日々の行動などを学習しているようで「そろそろ出かける時間ですね」とか言ってきます。

ダメなのは、指紋認証とカメラです。

指紋認証は指が乾いているときは7割程度の確率で認識しますが、濡れていると完全にアウト!ちょっと汗ばんでいる程度でも認識率は3割以下に落ちてしまいます。Huawei P10 Lite ではほとんど認識ミスすることはなかったので、まるっきりダメダメです。2013年に発売されたソフトバンクの F301 は当時としては最先端の指紋認証を搭載していましたが、それよりはちょっとマシかなという感じです。

カメラはとにかくメシマズ、食べ物の写真が汚らしいです。また、画面を横にして撮影しようとすると「本体上端の近接センサーが…」となっがたらしい文章が出てきたあとブラックアウト、指紋センサー認識率悪くてロック解除にアタアフタ…シャッターチャンスを逃すのなんの><;

スイカはモバイルだと自動チャージできて便利だけどカードでもそれほど困らないから、防水なしの恐怖に耐えられれば、P10 Lite から SH-M05 に機種変してもメリット全然ないです…

これはダメではないのですが不便な点。

P10 Lite や nova2 lite だと、スタンバイになった際に終了させるアプリを選べる、逆の言い方をすると強制終了させないアプリを選べるのですが、SH-M05 ではその設定がどこにあるのかわかりません。おかげで Kindle を起動するたびに本選ぶところから始めなくてはならず不便です…

ionic3 で iOS 版のアプリタイトルを日本語にする方法

config.xml にて設定してやると *-Info.plist を書き換えられると書かれているページが複数あり、よく見かけるタイプは config-file というタグでした。それを加工して下記みたいにしてみたわけですが、全く効果なし…

<config-file parent="CFBundleDisplayName" platform="ios" target="*-Info.plist">
    <string>アプリ名</string>
</config-file>

何だろうなぁと思っていましたが、動かないものは仕方ないので、トランスパイル後 XCode でコンパイルする前に *-Info.plist を手動で書き換えていました。(操作性最悪の iMac でこれやるのってほんとめんどくさい)

例によって Android では問題なく動くものが iOS で動かない現象に遭遇しまして、あれこれ調べていると下記の edit-config というタグの説明を発見!

お!っと思い下記を試すと大成功でした\(^_^)/

<edit-config file="*-Info.plist" mode="merge" target="CFBundleDisplayName">
    <string>アプリ名</string>
</edit-config>

ちなみに Android では、 ./platforms/android/app/src/main/res/ に values-ja というフォルダーを作り、 ./platforms/android/app/src/main/res/values/string.xml をコピって、書き換えてやれば多言語対応できます。


2018年6月4日月曜日

Arduino Uno の電源

Arduino Uno を使った場合は基本的に実験が主になるので、いままで電源はほとんど USB からの供給でした。なので全然気にしていませんでしたが、先日、プラレールのRC化をした際電池駆動を試してみたところ VIN への 5V 供給ではうまく動かなかったので調べてみた備忘録です。

Arduino への電源供給


1. USB 端子

こいつは何も考える必要はないかな^^;

2. VIN

DCコネクタと同じ回路に繋がっていて、7〜12V の電源を供給する。
ここの電圧が 6.6V 以上だと USB の + と +5V の間にある FET がオフになって USB からの電源供給が止まる。

恥ずかしながら VIN なのでここに 5V 入れてやれば動くと思っていたのですが、うまく行きませんでした^^;

3. +5V

USB端子からの電源または VIN の電圧を降圧して 5V にしたものが繋がっている端子。

実は私はこの端子は出力専用だと思っていたのですが、ここに 5V を接続してやって電源を供給することができます。

公式ではおすすめしないとのことになっているようですが、それはおそらく「電圧が違っていると壊すからやめといたほうがいいよ」ということらしいです。

参考ページ



2018年5月31日木曜日

シャープ SH-M05 レビュー 使用開始11日目

SH-M05 を使い始めて11日目、そろそろ慣れてきましたが、素のAndroidに近いHuawei P10 Lite に比べると未だにどこに設定があるのかわからない機能が多く不便な思いをしています。

下の2枚の写真を見比べれば一目瞭然ですが、SH-M05 はもう使い物にならないレベルのメシマズ写真になっています。

これ、120℃に予熱したオーブンで25分焼いたあとフライパンで30秒ほど裏表に焦げ目を付けたものです。きれいなピンク色になりとっても美味しかったのですが、写真にするとこの有様><;

SH-M05

Huawei P10 Lite

仕方がないので現在は料理の写真を撮るときには P10 Lite を使っています。

2018年5月22日火曜日

シャープ SH-M05 レビュー 使用開始2日目

シャープの格安スマホ SH-M05 を購入しました。

Huawei の P20 lite が発売になるまで待つつもりだったのですが、楽天に移管されたフリーテルがとにかく遅くて使い物にならない><;おそらく楽天の嫌がらせなんだとは思うのですが、お店でクーポンを開こうとしたりポイントを使おうとしても延々待たされてしまうので仕方なく他の格安SIM業者に乗り換えることにしました。

最初は mineo 一択だったのですが、最適化騒ぎの記事を見てちょっとなぁと思っていたところへ OCN が端末値引きキャンペンーをやっているとのことなのでそちらにしました。

前回購入した Huawei P10 lite も アマゾン経由で OCN から購入したもので、OCN には交換を持っていたましたので早速申し込み、最初は nova2 lite (\8,800) にしようかなと思ったのですが、もうちょっと出せば防水とおサイフ携帯がついてくるということで SH-M05 (\15,800) にしました。

前置きが長くなりました^^;

2日ほど使っての最初のレビューを書きます。主にこれまで使っていた P10 lite との比較になると思います。

※いまのところ、P10 lite に比べてこれは良い!と行ったところが見当たらないので悪い点ばかりになってしまいますがご容赦ください。

1. 設定画面が使いにくい

これが厳しいです。最近のスマホはきちんとしたマニュアルはまずないのでネットで検索するか直感で使わなければならないのですが、マイナー機種なのでネットの情報は少ないです。そして設定画面がめちゃめちゃカスタマイズされているので何がどこにあるのかさっぱりわからないです。

さらに、アイコンも独自のものが使われていますし、言葉も違っていたりします><;

2. 指紋認証の感度が悪い

全面にある指紋認証はボタンが押しにくく感度もあまり良くありません。

P10 lite では汗をいっぱいかいたりすると認識できないことがありましたが、SH-M05普通に認識できないことが5回に1回位あります。

3. 電池の減りが速い?

まだ2日目なので設定をいじったりして使用率が幾分高いのかもしれませんが、P10 lite では寝る前に充電にかけるとだいたい50%くらいだったのですが、SH-M05 は帰宅時20% で寝る前に充電が必要となりました。これはもう少し使ってから結論出したいです。

4. 音量が小さいし音も悪い

これはかなり不満に思った点です。

P10 lite のときにははっきりと聞こえていたテキスト読み上げ音声が聞き取りづらいです。低音域が出ないのは仕方ないとして中音域もなくなってしまって、高音とノイズばかりが目立ちます。千円以下の安物ヘッドフォンを使ったときのような感じです。

音量も小さく最大にしても、スーパーでの買い物中に着信音を聴き逃しました。

更に不便なことにバイブの振動も弱いです。Yシャツの胸ポケットに入れていても振動に気づかないことがあります。というか、あれ?もしかして振動してる?と言うくらい弱いです。

5. WiFi が 2.4GHz のみ

これが一番困った点です。

2.4GHzの場合はチャンネル数が少ないので混信せずに通信できるのは上手に設定しても3台程度じゃないかと思うんですが、我が家の場合は、自宅の前後をアパートに挟まれているため、WiFiルーターがいっぱい設置されており、ざっと20個位 SSID が並んでいます。

とう頑張って設定しても被らないようにはできません。実際に使っていても 2.4GHz は切れたり通倫エラーを起こすことが多いです。

できるだけ有線を使うようにしてはいますが流石にスマホを有線で使うのはナンセンス、そこで 5GHz 対を使っているのですが、なんと SH-M05 は 5GHz 非対応><;いやはやこれは困った…

2018年2月14日水曜日

xubuntu 17.10 にリモートデスクトップをインストールして Windows 10 からつながるようにする

xubuntu 17.10 に xrdp にてリモートデスクトップ接続できるようにしました。
いくつかのページを見てやってみたのですが、xrdp のインストールのみと書かれているものや、vnc4server + xrdp と書かれているものが多かったのですが、これだと Windows からは接続できないようでした。
  • vino を入れて暗号化しないようにしないと Windows からの接続でエラーになってしまうようです。
  • linux からの接続のみならば xrdp だけで問題ないようです。

vino のインストール

xubuntu には標準では vino はインストールされていないようなのでまずはインストールから。
$ sudo apt install vino

設定画面を開く

$ vino-preferences
チェックを入れる
  • [x] 他のユーザーが自分のデスクトップを表示できる
  • [x] 他のユーザーがデスクトップを操作できる

自動起動設定

  1. [設定] → [セッションと起動] → [自動起動アプリケーション]
  2. [テスクトップの共有] のチェックを入れる

暗号化を停止

$ gsettings set org.gnome.Vino require-encryption false

参考URL

Windows10とUbuntu16.04をリモートデスクトップ接続で行き来する

xrdp のインストール

$ sudo apt install xrdp

設定ファイルを作成

※接続を許可するユーザーにて実行
# ~/.Xclients ファイルを作成
cat > ~/.Xclients <<EOF
#!/bin/bash
exec xfce4-session
EOF
chmod +x ~/.Xclients
# xfce4 を RDP 接続のデフォルトのウィンドウマネージャーにします。
echo xfce4-session > ~/.xsession
# 新規作成するユーザーにも適用
sudo cp ~/.Xclients /etc/skel
sudo cp ~/.xsession /etc/skel

console 以外を有効にする

$ sudo vi /etc/X11/Xwrapper.config
#@@mod allowed_users=console
allowed_users=anybody
これをやらないと接続しようとしても真っ黒画面

再起動

$ sudo service xrdp restart

ログの位置

$ tail /var/log/xrdp-sesman.log
[ERROR] X server for display 10 startup timeout

接続してみる

ちなみに初回接続時はなぜか真っ黒画面ですが、一旦切断して再度つなぐとちゃんと表示されました。(これ何回インストールし直しても同じ現象が発生しました)

Windows 10 からの接続

  1. リモートデスクトップを起動
  2. IP を指定
  3. [接続ボタンを押す]
  4. [Login to xxxx] ダイアログが表示される
  5. Session: Xorg
  6. username: ユーザー名を指定
    自動で入っているかもしれません・その場合はドメイン名(\の前)を \ も含めて削除
  7. password を入力
  8. [OK] ボタンを押す

2018年2月6日火曜日

ionic ビルド時に大量のエラー><;

開発も順調に進みそろそろ実機で動かしてみるかと試してみると

$ ionic cordova run android
Running app-scripts build: --platform android --target cordova
--中略--
:compileDebugJavaWithJavac
/home/kiya/JobFiles/mieta1/platforms/android/src/com/tangide/statusbar/StatusBar/StatusBar.java:76: error: cannot find symbol
--以下大量のエラー--

げげ!エラー!何が起きたんだろうとあれこれ調べてみると

$ ionic cordova plugin list
cordova plugin ls
com.tangide.statusbar 1.0.0 "StatusBar"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-device-motion 1.2.5 "Device Motion"
cordova-plugin-ionic-webview 1.1.16 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"

??? com.tangide.statusbar 1.0.0 "StatusBar" ってなんだ?

どうやら、cordova-plugin-statusbar をインストールする際に間違えて入れてしまったようだ

$ ionic cordova plugin rm com.tangide.statusbar
> cordova plugin remove com.tangide.statusbar --save
--中略--
Removing com.tangide.statusbar from package.json

無事ビルドできました。

2018年1月23日火曜日

AndroidStudio を Ununtu 17.10 にインストール

インストール

1. 公式ダウンロードページ から .zip ファイルをダウンロード

2. 適当なフォルダーを作って展開

~/ の下のほうが良い気もしたけど、公式の例に従いました…

sudo mkdir /usr/local/android-studio/ cd /usr/local/android-studio/ unzip ~/Downloads/android-studio-ide-171.4443003-linux.zip

3. ライブラリの追加

注: 64 ビット版の Ubuntu をご利用の場合は、以下のコマンドで 32 ビット用のライブラリをいくつかインストールする必要があります。

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 64 ビット版の Fedora をご利用の場合は、以下のコマンドを実行します。

sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686

公式のインストールマニュアルには64bitの場合上記を実行しろと書かれているがエラーになる。

kiya@kiya-ubuntu:~$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2.1.0 lib32stdc++6 -- 中略 -- E: パッケージ lib32bz2.1.0 が見つかりません E: 'lib32bz2.1.0' に一致するパッケージは見つかりませんでした E: 正規表現 'lib32bz2.1.0' ではパッケージは見つかりませんでした

4. lib32bz2.1.0 はなくても行けそうなので除外してインストールする。

kiya@kiya-ubuntu:~$ sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6

5. PATH の設定

vi ~/.profile
# Android SDK export ANDROID_HOME=${HOME}/Android/Sdk if [ -d "${ANDROID_HOME}/platform-tools" ] ; then PATH="${ANDROID_HOME}/platform-tools:$PATH" fi

エミュレーターを起動しようとするとエラーになる

9:24 Emulator: libGL error: unable to load driver: i965_dri.so 9:24 Emulator: libGL error: driver pointer missing 9:24 Emulator: libGL error: failed to load driver: i965 9:24 Emulator: libGL error: unable to load driver: swrast_dri.so 9:24 Emulator: libGL error: failed to load driver: swrast 9:24 Emulator: X Error of failed request: BadValue (integer parameter out of range for operation) 9:24 Emulator: Major opcode of failed request: 152 (GLX) 9:24 Emulator: Minor opcode of failed request: 24 (X_GLXCreateNewContext) 9:24 Emulator: Value in failed request: 0x0 9:24 Emulator: Serial number of failed request: 56 9:24 Emulator: Current serial number in output stream: 57 9:24 Emulator: Process finished with exit code 1

デバッグ表示付きでエミュレーターを実行してみる

※ -avd 仮想端末名 (スペースを含む場合は _ に置き換える)

kiya@kiya-ubuntu:~/Android/Sdk/tools$ LIBGL_DEBUG=verbose ./emulator -avd 'Nexus5X' libGL: Can't open configuration file /home/kiya/.drirc: そのようなファイルやディレクトリはありません. libGL: pci id for fd 17: 8086:5912, driver i965 libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/i965_dri.so libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/i965_dri.so libGL: dlopen /usr/lib/x86_64-linux-gnu/dri/i965_dri.so failed (../emulator/lib64/libstdc++/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/lib/x86_64-linux-gnu/dri/i965_dri.so)) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/i965_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/i965_dri.so libGL: dlopen ${ORIGIN}/dri/i965_dri.so failed (${ORIGIN}/dri/i965_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません) libGL: OpenDriver: trying /usr/lib/dri/tls/i965_dri.so libGL: OpenDriver: trying /usr/lib/dri/i965_dri.so libGL: dlopen /usr/lib/dri/i965_dri.so failed (/usr/lib/dri/i965_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません) libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missing libGL error: failed to load driver: i965 libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so libGL: dlopen /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so failed (../emulator/lib64/libstdc++/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/swrast_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/swrast_dri.so libGL: dlopen ${ORIGIN}/dri/swrast_dri.so failed (${ORIGIN}/dri/swrast_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません) libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so libGL: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません) libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 152 (GLX) Minor opcode of failed request: 24 (X_GLXCreateNewContext) Value in failed request: 0x0 Serial number of failed request: 56 Current serial number in output stream: 57

どうやら、../emulator/lib64/libstdc++/libstdc++.so.6 のバージョンが違うと言っているらしい。

インストール時に入れたライブラリへのリンクを貼る

# 念の為保存 cp /home/kiya/Android/Sdk/emulator/lib64/libstdc++ /home/kiya/Android/Sdk/emulator/lib64/libstdc++.bak # 公式の指示でインストールしたライブラリへのリンクを貼る ln -sf /usr/lib32/libstdc++.so.6* /home/kiya/Android/Sdk/emulator/lib64/libstdc++/