2020年9月6日日曜日

apt upgradeしたら、mysqlがアップデートされて、epgrecでキーワード登録できなくなった

 表題どおりなのですが....

apt upgradeして、mysqlが更新されたらしくその影響かキーワード登録したら下記のようなエラーが出るようになりました

__query:DBクエリ失敗:UPDATE Recorder_keywordTbl SET keyword='test', kw_enable='1', typeGR='1', typeBS='1', typeCS='1', typeEX='', channel_id='0', category_id='0', sub_genre='16', use_regexp='', collate_ci='', ena_title='1', ena_desc='1', autorec_mode='1', weekofdays='127', prgtime='24', period='1', first_genre='1', priority='10', overlap='0', split_time='0', sft_start='0', sft_end='0', discontinuity='0', duration_chg='0', directory='', filename_format='', criterion_dura='0', rest_alert='0', smart_repeat='0' WHERE id=37

epgrecソースを見ると DBRecord.class.php で出している様子

動きから見て、キーワードの登録以外、過去のキーワードに基づく録画番組の自動登録は問題なく動いているみたい。

ソースを見ると発行している SQL 文そのものをエラーメッセージに表示してるようなのでコピペして実行します


hogehoge@foo:/etc/mysql$ mysql -u epgrec -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.31-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use epgrec;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> UPDATE Recorder_keywordTbl SET keyword='test', kw_enable='1', typeGR='1', typeBS='1', typeCS='1', typeEX='', channel_id='0', category_id='0', sub_genre='16', use_regexp='', collate_ci='', ena_title='1', ena_desc='1', autorec_mode='1', weekofdays='127', prgtime='24', period='1', first_genre='1', priority='10', overlap='0', split_time='0', sft_start='0', sft_end='0', discontinuity='0', duration_chg='0', directory='', filename_format='', criterion_dura='0', rest_alert='0', smart_repeat='0' WHERE id=38;
ERROR 1366 (HY000): Incorrect integer value: '' for column 'typeEX' at row 1
mysql>

これが原因ですね
Incorrect integer value: '' for column 'typeEX' at row 

値を厳密解釈するようになって、' 'はintegerじゃねぇ、って言っている模様。

このあたりを見ると STRICT_TRANS_TABLESっていうのが勝手に設定された、ということか。
ひとまずどう設定されているのかを見てみる

mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

しかし、/etc/my.cnfにはこの設定を行っているはずの sql-mode という項目がなかった。
defaultでこれらが設定されているということか。
ちゃんと各オプションを調べるべきなんだろうけど、えい、まぁーいいや

[mysqld]
 sql-mode = ''

のようにsql-modeを”なし”で設定してお茶を濁す

mysql再起動して動作確認 -> OK!

2020年5月10日日曜日

simulink external mode 通信設定備忘録

helpに書いてあるといえばあるのだけれど、matlab全般、”知りたいものがピンポイントでわかってないと”出てこない、だけでなく、”めっちゃ小さく書いてある”ためわからない。

書いてあるのはこのあたり。

https://jp.mathworks.com/help/rtw/ug/external-mode-simulation-with-tcpip-or-serial-communication.html#f996984

だけど、よく読まないとわからない。また省略されてるパラメータもある。
パラメータは MEX-file argument(MEX-ファイルの引数)





結論
  • tcpip
    •  接続先 表示するエラーレベル(Verbosity) ポート番号 タイムアウト時間
      • '192.168.10.199' 0 7777 5
        • Verbosity 0はなにも表示しない、1は接続状況を表示
        • タイムアウト時間 デフォルトよりも短くするとつながらないときに中止するまでの時間を短くできる
  • シリアル
    •  表示するエラーレベル(Verbosity) 使うシリアルポート ボーレート
      • 0 '\\.\COM4' 57600
        • 上記はwindowsでcom4を使う場合
        • linuxなら /dev/ttyS?? とかか。

2020年1月18日土曜日

2020年どうしよう

2020年になりました

なんとなく終わってしまうと一年がもったいない歳になってきたので
今年は何しよう、というのを書いておこうと思います.

1. OSSへの貢献
 今までもスポット的にGitHubへPR出したりはしておりましたが、
 もっと存在感を示せるような、そんな活動をしたいです
 具体的には
   a) 自分でhostingするコード
   b) OSSへのPRでの貢献の継続
 といったところで、特にa)についてはできていなかったところなので
 積極的に公開していきたいと思います。
 ただ、これには裏があり、なかなか自分のコードを公開する勇気がなかった、
 というのが実情ですので”汚くてもよいからまず公開”を念頭にやっていきたいです

2. プログラミング能力の向上
 昨年はなぜか、資格取りたいのスイッチが入ったのでそれが主になってしまい、
 特に年末の一陸技に向けての勉強で週末はそれで頭も時間もいっぱいでした。
 今年は少々それを控えつつ、能力向上に向け、コードをたくさん書いていきたいです。
 また人様のコードを見て盗んでいこうと思います。
 また、恥ずかしさを克服してプログラミングコンテストにも手を伸ばしたいです

3. でもやっぱり資格も...
 資格、というより”それができると幅が広がるもの”の結果が資格に
 つながるような資格、およびその資格が私の今までの知識・能力を表すような資格を
 実力試験で受けていこうかな、と。
 後者でいうとエンベッデッドシステムスペシャリストを考えています。

4. レーザー加工機のフル活用
 昨年、レーザー加工機を作りましたが、600x400mmのサイズが加工ができるように
 作ったにも関わらず、それを活かした加工、また、ディープな使い方を
 するには至りませんでした。(みら太さんの影響極大)
 コルクでコースター作るとか、MDFで看板作るとか、といった程度でしたので
 やはりアクリルを使った作品とか、立体的なものとかに挑戦していきたいです

5. 情報の発信
 どうもうまくいったものだけを出す、といった「いい格好したい」病が治らず、
 「うまくいったらblog書こう」とか思っているけど、結局面倒くさい、
 と思い何もしない、になっていました。
 失敗しても、誰かのためになるならそれもよし、と思いながら、
 アジャイルに情報発信していこうと思います。

6. 展示会への参加
 やっぱり、出したいですよね、Maker Faire。
 ネタを仕込んでいますが、一度は(かなうなら継続的に)参加してみたいです。
 で、twitterでフォローさせていただいている皆様に少しでも近づきたいです。

7. 技術セミナーへの参加
 今まで、”勉強は自分でしないといけないでしょ”とか、”お金もったいない”とか
 でセミナーへの参加をしたことはほとんどありませんでした。
 が、歳を重ねて、”教えるのがうまい人”がいること、
 ”自分の勉強・理解の時間のショートカット”のためにお金を払う価値があること、
 が分かってきましたので、良いものがあれば積極的に参加していきたいと考えています

8. 3D CAD/モデリング技術の向上
 自己流でやってきたところが大きいので、webセミナーや、上記のようなセミナーに
 参加して、よりよいやり方、を目指していきたいです。