2019年7月11日木曜日

MyLife

僕の趣味は、こんな感じ、、、
この為に、働いているのだぁ、、、はず (^^)
Kayak, Climbing, Music, Skateboard, Airplane

Kayak

いきててよかった。良い子は真似しないようにね。

ハンドロール

2019年 春遠征

古い写真

2014/9 奈良吉 増水

Climbing

前穂高岳登頂(徳沢ー奥又白池泊ーA沢ー前穂高岳)

僕が前穂高岳に登った理由など、、、(^^)

Music

Please wait!!

Skateboard

Please Wait!!

Air Plane

Soon!!

Peace!!

Robotics

僕が開発してるロボットについて、要素技術も含めてまとめ?
いえ、自分の整理用

1.開発ポリシー、概要

自律搬送クローラロボットの開発情報のまとめページ

2013年に最初に書いたロボットの 考え方
基本は変わっていません。

2.RDCS


3.要素技術

3.1 SLAM関係
Raspberry Piで、低コスト Lidar SLAMTEC RPLIDAR A2 を使う

3.2 OpenCV


An Installation of OpenCV4 on Raspberry Pi 3B+ & 4B

Java がインストールされている事が前提。

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0 python3


Peace!!

はじめに、、、再出発

再出発します。。。

2019国際ロボット展に出展するので、、、
超バタバタ、、、

少しづつ書きます。



昔の "はじめに" は  こちら

Peace!!

Install

インストール関連をまとめました。

1. Lighttpd

インストールShell

2. MySQL ans MariaDB

Raspberry Pi に インストール

X. 本を書いたときのインストール関連

こちら、、、

Peace!!

Raspberry Piで製造業向け業務システム開発

主に製造業の業務システムをRaspberry Piを使って開発しています。
それに関係する情報をまとめている

<特徴>
・倉庫管理、製造現場への払いだしをAIAGVを活用し統合的に行うシステムです。
・生産管理システムと連動し、実棚管理を行います。在庫評価シミレーションも行えます。
・各種伝票、倉庫内の部品のシールをスマフォ上でAIを使った自動認識し他システムと連します。
     受注管理システムへの手入力
     従来の棚卸(棚卸表→EXCEL→システム取込み)工程を無くします。
・倉庫管理(受入れ、入出庫:棚管理、製造計画に基づいた払出し)をAIを搭載したスマフォを使って効率的に行います。
AGVとの連携も行い、複数の払出を同時に行います。
・払出し、出庫は最小経路を算出し、スマフォに画面に表示、もしくはAGVのコンソールに表示します。
・電脳(株式会社エクサ)と連携可能です。
・サーバはRaspberry Piを業務システム用にハードウェア面を補強し活用しています。それにより圧倒的なコストパフォーマンスを実現します。

こんな感じかなぁ(笑)
以下は、その為の要素技術の忘備録、、、

1.MariaDB

コマンドをまとめた
テスト用DBを初期化し作成するシェル
      開発中は、繰り返し使うので便利
shell script で MariaDBにアクセスする
mysqlでインポートしたDBのユーザのパスワード再設定

MariaDB 思いっきりドーンと シェルでtable 作成

2.Android

僕的には超重要 AsyncTaskによるDB非同期処理をListenerを使ってクラス化
重要 Android 非同期処理でサーバサービスを利用する
Android Studioの小ネタ
mlkit#901をシンプルに動かすためのメモ
mlkit#901 シンプルに動かす 変更編
mlkitのPackageを変える(意外と手間)

3. lighttpd

インストール

4. Oracle

SQL*Plusをバッチで自動実行させる為にMinGW環境でsql文を自動生成する

5. VMware

Raspberry Pi 開発をVMwareで行う


Peace!!

MariaDB memo

開発で、日常的に使うのでメモ

2019-07-10-raspbian-buster-lite より
インストールは、mysql-server ではできない。
sudo apt-get -y install mariadb-server

status;  で表示される情報
mariadb  Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2


(1) 検索について

結局大事なのは検索で、メモとして追加
NULL 検索をするとKeyも無視するらしいので、NULLを使ってはならない。

棚番号にXXXXが入って無く、かつdataに20%の値が設定されている。
select tana,hinc from zaiko where tana != "XXXX" and date like '20%';

カラムをグレイヴ アクセントで囲み検索条件をシングルクォーテーション
select count(*) from zaiko
where `tana` like '%CHC%' and `data` like '20%';


(2) Login

mariadb -uroot db -pxxxxx
mariadb -uroot -p -h ホスト名


(3) DB処理

select * from zaiko;
select * from zaiko where id = 10;
select * from zaiko where hinc like('% style="font-size: 10pt;"%');
insert into counters values('payouts', 0);
insert into counters values('seibans', 0);i
nsert into users (name) values ('かばかば');
insert into user (id, name) values (2, 'kaba');
insert into profiles (name) select users from users where users.id = 1;
update users set name='kayak', status=3 where id=1;
delete from wakuwaku where kimoti like "waku%" and fuku <> "hadaka";

・例)検索してREPLACEで置換
update ship set post_kayakp = replace(post_content, 'style="font-size: 12pt;"', '') where kayak like('% style="font-size: 12pt;"%');


(4) DB import export


・import
入力ファイルはテーブル名
mysqlimport -uthn -pxxxxux --fields-terminated-by="|" 
 --lines-terminated-by="\n" --local test /home/pi/tmp/t1.csv
test.t1: Records: 21  Deleted: 0  Skipped: 0  Warnings: 0

mysqldump -uuser  -p -t database table1 table2 ... > backup-file.sql

DBの場合
mysql -uuser -p database < backup-file.sql

・export
出力先は/tmpにしないとエラーになる。
DB名test, DB内にはtable名t1のみ、結果は  /tmp/t1.txt  となっている。
sudo rm /tmp/t*; mysqldump -uroot -pxxxxx --tab=/tmp  
 --fields-terminated-by='|' test

・コマンドライン
load data local infile “./test.csv” into table t1
 fields terminated by “,” lines terminated by “\r\n”;
出力先は/tmpにしないとエラーになる。
select * fromt1 into outfile ‘/tmp/te.csv’ 
 fields terminated by ‘|’ lines terminated by ‘\n’;


(5) DB, Table 作成、管理


・DB作成
create database DB名称;

・DB削除
drop database DB名称;

・例)DB作成とテーブル作成
create database wm;
create table wm.zaiko(hinc CHAR(32),
 hin CHAR(35),
 kazu int(6),
 hink CHAR(3),
 kata CHAR(200),
 hin2 VARCHAR(300),
 tana CHAR(32),
 yearin char(4),
 monthin char(2),
 date char(14),
 koushin datetime,
 other VARCHAR(256)
);
Query OK, 0 rows affected (5.89 sec)

・例)テーブル作成
cretat table t1(id int, name varchar(128), atr varchar(128));
  `id` int(11) default null,
  `name` varchar(128) default null,
  `atr` varchar(128) default null,
  `txt1` varchar(128) default null,
  `txt2` varchar(128) default null
) engine=InnoDB default charset=utf8mb4;

・テーブル確認
describe t1; 

・プライマリーキーの追加
alter table テーブル名 add primary key (カラム名);

・カラム名と型を変更
alter table `posts` change column `txt` `caption` varchar(255);

カラムの名前だけを変更する場合でも、上記のように型指定が必要
not null制約を追加する場合です。カラム名の制約を追加

alter table `posts` change column `txt` `caption` varchar(255) not null;

・カラムの型を変える
alter table `comments` modify column `post_id` bigint not null;

・カラム追加
alter tableとADDを使用してカラムを追加。
after 指定でpasswordカラムの後ろに、kayak_idカラムが追加
先頭に追加する時は、first  を指定する。

alter table users add kayak_id int(11) default null;
alter table users add kayak_id int(11) default null after password;
alter table users add kayak_id int(11) default null first;
alter table t1 addtxt2 varchar(128);
alter table t2 addtxt1 varchar(128) after txt1;
alter table seibans add fjkn char(4) after hd_kpn;
alter table hd add payout_flag char(7) after total_members;

・カラム削除
alter table hd drop payout_flag;

・テーブル内のデータを削除する。データだけの削除。
truncate t1;

・テーブルを消す
mariadb -uuser database -p 
drop table if exsts table1, table2,,,,;


(6) Utility


status;
show databases;
show columns from zaiko;
select count(*) from zaiko;
select version();
show variables;
show variables like "char%";
show variables like 'slow%';

use mysql;
select * from user;


(7) ユーザ管理


・ユーザー確認
select user from mysql.user;

・ユーザ追加とパスワード設定
create user 'ユーザ名'@'localhost' identified by 'ここにパスワード';
create user 'kayak'@'localhost' identified by 'password';

・ユーザーのパスワードを変更
set password for kayak@localhost=password( 'kayakPassword' );

・ユーザーを削除
drop user ユーザー名@ホスト名;

・ユーザー権限を確認
show grants for wordpress@localhost;
show grants for 'kayak'@'%';

・権限を追加 
grant all privileges on DB名.テーブル名 to 'ユーザ名'@'localhost';
mariadb 10.1.37では、上記のDB名.テーブル名は、シングルコーテーションで
囲むとエラーになる。従って、下記のようにする。
grant all privileges on TESTDB.* to 'user'@'localhost';

grant select on `kayakdb`.`users` to 'kayak'@'%'
grant file on *.* to kayak@localhost;

まとめると、、、
・グローバルレベル.sql
全DBの全テーブルに対して、与える権限を与える
grant 与える権限 on *.* to user名;

・データベースレベル.sql
指定したDB名の全テーブルに与える権限を与える
grant 与える権限 on DB名.* to user名;

・テーブルレベル.sql
指定したDB名の指定したテーブル名に与える権限を与える
grant 与える権限 on DB名.テーブル名 to user名;

・変更を反映さえる
flush privileges;


(8)開発環境を作る


sudo apt-get install default-libmysqlclient-dev
gcc slct01.c -o slct01 -lmysqlclient -L/usr/lib/arm-linux-gnueabihf

libmariadbclient-dev は、必要無いのかしら、、、


 Peace!!

2019年6月30日日曜日

mlkit#901 シンプルに動かす 変更編

Google FireBaseは、凄いスピードで進化している。
サンプルプログラムも、どんどん変わっている。
ただし、どんどん洗礼化されているので、コードを見ることはMlKitを活用する上では
欠かせない。
そして、それをベースに検証もするのだけど、新しい依存するモジュールが動かなくなっていたりと、、、
今回は、ビデオ画像を認識の元データとして使う場合の設定と、
Version Controlのメモ

(1)ビデオ画像を使う

カメラとGraphicのオーバーライト処理が必要になるわけで、
それは、プログラムをガンガンいじるイメージではなく、
カメラとオーバーライトを、Layoutで設定し
IFを使って取得して処理をする感じ。
その全体像が分かる写真がした。僕は、わかる。メモだからいいでしょう(笑)
オッチョコチョイナ僕が時間を使ってしまったのが、
#901が、カメラとオーバーライト処理のモジュールがcommonにまとめられた事に
頭がついていかず、以前の場所を指定したまま処理をしたので、落ちまくり。
プログラムの方ばっかりを見ていたけど、実はレイアウト定義だった。

(2) Version Control

Android Studioにクラスを作るのだけど、階層構造で表示される画面には、
クラスが赤くなったまま。かつクラスを活用することができない。
これも、数時間使ってしました。

File > Setting > Version Control 
あれ? Gitになっている。これをnoneの指定にするとお見事!
 
 Androidのプログラムばっかり作っているわけではなく、
物忘れも早くなり、こんな事を繰り返しながら進んでいます。
#901になって認識速度、むっちゃ早くなった。

で、良いアイデアが下りてきたのだぁ (^^)/

AndroidManifestも今回は、理解できてうれしかったなぁ。
モジュールを沢山作っても、交通整理して使える。
これは楽しいのでした。



追記

(3) Android 9(Pie)のセキュリティ

実は、セキュリティが厳しくなっており、HTTP通信を使う場合には、
セキュリティ設定をしないとならないのだぁ
いろいろなセキュルティ指定の方法があるけど、一番簡単なでも推奨されないやり方で一応、一応、一応の設定。
おまじないは、、、
android:usesCleartextTraffic="true"

Peace!!