2019年7月22日月曜日

MySQL 自動バックアップ

MySQLバックアップの忘備録

1.バックアップ用シェル

#!/bin/sh

# Set mask for other user cann't read
#umask 077

# backup file
# Retention period
period=31

# directory for backup files
dirpath='/home/pi/backup/mysql'

# backup file naming
filename=`/bin/date +%y%m%d%H`

# excute
/usr/bin/mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=xxxxx| /bin/gzip > $dirpath/$filename.sql.gz
#/usr/bin/mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=xxxxx > /tmp/filename.sql

/bin/cp $dirpath/$filename.sql.gz $dirpath/today

# delete old backup files
oldfile=`/bin/date --date "$period days ago" +%y%m%d%H`
/bin/rm -f $dirpath/$oldfile.sql.gz

2.crontabの設定

0 2 * * *  /home/pi/prj/sql/mysql_backup.sh > /tmp/cron-bk.stdout 2 > /tmp/cron-bk.stderr || [ $? -eq 1 ]
15 12 * * *  /home/pi/prj/sql/mysql_backup.sh > /tmp/cron-bk.stdout 2 > /tmp/cron-bk.stderr || [ $? -eq 1 ]

Peace!!

2019年7月15日月曜日

テスト用DBを一発で初期化するbash

自分の忘備録

開発しているときは、テスト用DBを繰返し初期化する。
そのシェル。でも、僕以外にはほとんど利用価値はないかも、、、
ポイントは、DBにインポートするデータを集めたdirectoryを指定し
その中から、ファイル名だけを抽出してDB登録するシェルに渡す処理かも

自分用だから、説明はなし。

Peace!!

#!/bin/bash

# テスト用データのディレクトリー
files="../../data/*"
fileary=()
dirary=()

DB=DB名称
USER=ユーザ名
PW=パスワード

# DBのデータを削除して初期化する
mysql -u$USER $DB -p$PW << EOS
truncate hd;
truncate seibans;
update counters set value=0 where name='seibans';
EOS


for filepath in $files; do
    if [ -f $filepath ] ; then
        fileary+=("$filepath")
    elif [ -d $filepath ] ; then
        dirary+=("$filepath")
    fi
done

#echo "ファイル一覧"
for i in ${fileary[@]}; do
    qq=$i
    # pathを削除
    qqq="${qq##*/}"
    # ファイル名の拡張子を取る
    FILE=${qqq%.*}
    # テストデータDB登録
    ./reg.sh $FILE
done

#echo "ディレクトリ一覧"
#for i in ${dirary[@]}; do
#    echo $i
#done

2019年7月13日土曜日

Android studio 小ネタ

Android studio の備忘録、特に小ネタ
メモ代わりに追加していきます。

(1)既存のProject/Packageを利用して新しいPackageのProjectを作る


(2)既存のProjectを、OneDriveにコピーして利用する

Android Studioで開いて、build > Clean Project
そのまますると、スマフォへのインストール時に、古いWindows Pathを使おうとする。
そのエラーでインストールできなかったけど、このを実行したあとはインストールできた。コンソールに出るメッセージでも変わった事は確認できた。
これで、OneDriveを介して複数のPC間でプロジェクトを共有可能となった。
便利便利 (^^)/

Peace!!


2019年7月12日金曜日

Firebase ML KitのSample Package名を、新たなPackage名に変更する

あくまでも、忘備録

何を言っているかというと、、、まぁ、うまく伝えられないので、、、
簡単にいうと自分のPackage名(com.futureagri. )にしたい。
com.google.firebase.samples.apps.mlkit というながーいPackage名
それに、google さんのsamplesと入るのは、嫌だなぁ

Firebaseのプロジェクトもっており、アプリの登録もできるている事



ベタベタだけど、、、

(1) Package 名を決める
com.futureagri.app.xxx.hd
その名前で、Firebaseにアプリの登録を済ませる。

(2)ソースコードの修正
quickstart-android\mlkit\app\src\main\java\com\google\firebase\samples\apps\mlkit
のmlkitをコピーする。
この中にあるソースコードのPackage名を変更する。

com.google.firebase.samples.apps.mlkit を
com.futureagri.app.xxx.hd  に変更する。

(3) Android Studioで新規プロジェクトを作る
Start a new Android Studio project  を選び
Activityは、Add No Activity
次の画面にPackageの情報を入れれば取り合えず終わり。
Package名で指定したディレクトリーができている。

(4) 編集したソースコードをコピー
上記で出来たディレクトリーに(2)で編集したソースコードを入れる。

(5) いろいろなファイルのコピー
元々のmlkitのモノが使える。package名に対応した変更は必要。
ただし、mlkitのモノをそのまま全部入れない。
AndroidManifest.xml、\res以下のリソースファイルを確認しながら内容や、ファイルをコピーした。

(6) Android Studio立上げ
syncやBuildなどを行う。エラーがでてくるのでよく見ると、
比較的容易に集積できる。
build.gradle は2つあるが、それぞれの確認も必要です。

ここは少し時間がかった。エラー修正を少し繰り返し30分程度試行錯誤。

(7)BuildとInstall
数回繰り返して、Android デバイスにインストール。
File > Invalidate Cashes /Restart.... も行い。
Buildしなおして、OK

obsolete とwarningがでるけど、、、なんでだろう?

packageを変える方法は、他にもWebに載っているので、、、

これで、楽しい事がいろいろできる。(^^)/

Peace!!


2019年7月11日木曜日

MariaDB 思いっきりドーンとtable 作成


#!/bin/bash

DB=DB名
USER=ユーザ名
PW=パスワード

#CLMS1="tana, date, hinc, kata, katad"
#select count(*) from $TBL1 where $1 like "$2";
#select $CLMS1 from $TBL1 where $1 like "$2";
#show columns from zaiko;

mysql -u$USER $DB -p$PW << EOS
create table counters (name char(16), value int);
create table seibans (
seiban_id int,
seiban char(8),
seiban_name varchar(120),
hd_kpn int,
hd_end_id char(5),
hd_end_at char(14),
person_id char(5),
create_at char(14));
create table units (part_number int,rev_cnt int,hinc char(32),hink char(3),updata_header_count int,update_data_count int,drawing_name char(30),parts_numbers int,effect_records int,model_name varchar(120),unit_name varchar(120),model_code char(12),target_roth char(10),drawing_number_old char(30),quantity int,approval_id char(5),approval_at char(14),update_design_id char(5),update_design_at char(14),drawer_id char(5),update_drawing_at char(14),start_at char(14),end_at char(14),disabled_at char(14),regist_id char(5),regist_at char(14),update_id char(5),update_at char(14),delete_id char(5),delete_at char(14));
create table hd (
seiban char(8),
seiban_id int,
pos int,
update_info varchar(120),
code char(10),
layout_no varchar(120),
sharp varchar(6),
name varchar(120),
kata varchar(120),
spec varchar(120),
maker varchar(60),
members int,
total_members int,
payout_flag char(1),
remarks varchar(120),
update_reason varchar(120),
del_flag char(1),
kpn int,
tana char(32),
part_number int,
hinc char(32),
hink char(3),
regist_id char(5),
regist_at char(14));
insert into counters values('payouts', 0);
insert into counters values('seibans', 0);

EOS

Peace!!



unit 無い場合 changed 190722


#!/bin/bash

DB=DB名
USER=ユーザ名
PW=パスワード

#CLMS1="tana, date, hinc, kata, katad"
#select count(*) from $TBL1 where $1 like "$2";
#select $CLMS1 from $TBL1 where $1 like "$2";
#show columns from zaiko;

mysql -u$USER $DB -p$PW << EOS
drop table counters, seibans, hd;
create table counters (name char(16), value int);
create table seibans (
seiban_id int,
seiban char(8),
seiban_name varchar(120),
hd_kpn int,
hd_quantity int,
hd_dest char(64),
hd_fjkn char(4),
hd_end_id char(5),
hd_end_at char(14),
person_id int,
create_at char(14));
create table hd (
seiban char(8),
seiban_id int,
pos int,
update_info varchar(120),
code char(10),
layout_no varchar(120),
sharp varchar(6),
name varchar(120),
kata varchar(120),
spec varchar(120),
maker varchar(60),
members int,
total_members int,
payout_flag char(1),
remarks varchar(120),
update_reason varchar(120),
del_flag char(1),
kpn int,
tana char(32),
part_number int,
hinc char(32),
hink char(3),
regist_id char(5),
regist_at char(14),
regist_end_at char(14));
insert into counters values('payouts', 1);
insert into counters values('seibans', 1);
EOS



Shell scripts for MariaDB


1.mariaDBをログインしないでShell Scriptで使う例


#!/bin/bash

# variable check
if [ $# -ne 2 ]; then
    echo -n "Usage: "
    echo -n `basename $0`
    echo  " target-clolumn target-word"
    exit 1
fi

DB=データベース名
USER=ユーザ
PW=パスワード
TBL1=テーブル名
#CLMS1="tana, date, hinc, kata, katad"
CLMS1="tana, hinc, kata, katad"

mysql -u $USER -p$PW $DB << EOS
#select count(*) from $TBL1 where $1 like "$2";
select $CLMS1 from $TBL1 where $1 like "$2";
#show columns from zaiko;
EOS

上記を呼び出して使うShell Script

#!/bin/bash

DT=`cat ./target1.txt`
while read line
do
    #echo -------------------------------------------------
    tt=$line
    echo ">>> $tt"
    ./slct01.sh kata $tt
    #echo $line
done << FILE
$DT
FILE

2.バックアップ用のShell script

#!/bin/sh
# Set mask for other user cann't read
umask 077

# backup file
# Retention period
period=31

# directory for backup files
dirpath='/home/pi/backup/mysql'

# backup file naming
filename=`date +%y%m%d`

#DB=データベース名
USER=ユーザ
PW=パスワード

# excute
mysqldump --opt --all-databases --events --default-character-set=binary -u$USER --password=$PW | gzip > $dirpath/$filename.sql.gz

# delete old backup files
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql.gz

3.テストデータを insert する時の例

例は、2つのテーブルにテスト用の値を設定している。
テーブルのデータを削除するのは、

truncate seibans;
truncate  counters;

#!/bin/bash

DB=データベース名
USER=ユーザ
PW=パスワード
TBL1=seibans
TBL2=counters

# 配列宣言(-a)
declare -a sbn=()
# 初期化
declare -a sbn=("11111-11" "12345-76" "88888-99" "12345-56" "12345-89" "99999-00" "12345-66" "19625-01" "12345-67" "19625-02")

i=0
j=0
for e in ${sbn[@]}; do
    #echo "sbn[$i] = ${e}"
    let i++
    let j++
    aa=`date '+%s' | awk '{print strftime("%Y%m%d%H%M%S", $1)}'`
mysql -u $USER -p$PW $DB << EOS
insert into $TBL1 values ($j, '${e}', '${e}', 0, '11111', '$aa', '11111', '$aa');
EOS
done

mysql -u $USER -p$PW $DB << EOS
insert into $TBL2 values ('payouts', 1);
insert into $TBL2 values ("seibans", 1);
EOS

Peace!!

MyLife

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

Kayak

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

ハンドロール

2019年 春遠征

古い写真

2014/9 奈良吉 増水

Climbing

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

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

Music

Please wait!!

Skateboard

Please Wait!!

Air Plane

Soon!!

Peace!!