LiuK

台湾・台北市在住。最近、Arduino UNO R3とRaspberry Pi 4 を…

LiuK

台湾・台北市在住。最近、Arduino UNO R3とRaspberry Pi 4 をいじり始めたので、それらの備忘録的にnote を使わせてもらおうかと思っています。

マガジン

  • Python関連

    Python関係の備忘録

  • 日台重籍問題関連

    日本の国籍法における台湾の扱いについての情報整理

  • 電子ピアノ関係

  • Delphi関係

  • Arduino関係

    Arduino、電子工作関連の自分の記事。

最近の記事

機能追加(7)VACUUM

 テストで単語データを千個単位で入れたり消したりしているうちに、SQLiteのDBファイルのサイズがだんだん大きくなってきてしまいました。  auto_vacuum という機能があるようで SQLで "PRAGMA auto_vacuum = FULL" を実行してみました。 だけど、ファイルサイズ小さくならない。どうやら、auto_vacuumは少し空き領域ができたからと言って、すぐに動作するわけではないようです。  すぐ効果を見たかったのでVACUUMコマンドを用意して、

    • 機能追加(6)単語プール

      (Python学習初心者の試行錯誤・備忘録です) 実際に使ってみるといろいろ気づきがあります。 「記憶定着レベル」を最初「レベル0」から始めて、記憶定着が確認できるたびに「レベル上げ」していくやり方。これ、テスト段階で10~20個程度の単語リストで試す分には非常にうまく行っておりました。 ・・よし、それじゃあ、1000個単語覚えるぞ、と大量の単語を投入して見たら困ったことになった。最初見た単語が覚えられなくて「まだ」ボタンをクリックして「流して」しまうと、次にその単語が表

      • 機能追加(5) キャンセル動作のバグ

        (Python学習初心者の試行錯誤・備忘録です)  気付いたバグについて。  このアプリ、最初に単語と訳語のセットをCSVで読み込むとき ここから「LoadCSV」とやると、ポップアップが開いて BrowseからCSVファイルを選んでOKとやると、 「今テーブルにあるデータを削除して、CSVファイルのデータを読み込む」 と言う流れでした。これはOKをクリックすれば問題なく動作していました。そして、この「読み込み」の操作はめったにやらないので問題に気が付かなかった。  そ

        • 機能追加(4)データベースのバックアップ

          (Python学習初心者の試行錯誤・備忘録です)  ここまでのところ、新しい教材(単語リスト)をCSVで読み込むと、テーブルにあるそれ以前のデータを削除してから新しい単語リストを読み込む処理にしています。 mvctest_controller.pyより #抜粋class Controller: def loadcsv(self, csvfilename:str) -> None: self.mycards.clear_table() se

        機能追加(7)VACUUM

        マガジン

        • Python関連
          46本
        • 日台重籍問題関連
          26本
        • 電子ピアノ関係
          12本
        • Delphi関係
          5本
        • Arduino関係
          48本

        記事

          機能追加(3)同じ単語が続く問題への対応

          (Python学習初心者の試行錯誤・備忘録です) グラフで「見える化」すると、アプリの「間抜け」な動作が目についてきます。学習が進んで、記憶定着レベルがだいぶ上がってきたときに、たまたま一つど忘れしてしまうと 「覚えた」 「覚えた」 と同じ単語ばかり続けて出てきてしまいます。出題の優先順位は、「習熟レベルが低い順」で「タイムスタンプが古い順」 >ORDER BY level ASC, timestamp ASC としているからです。これを避けるために、指定したレベル以

          機能追加(3)同じ単語が続く問題への対応

          機能追加(2)グラフ

          (Python学習初心者の試行錯誤・備忘録です) 学習進捗の「見える化」へ学習進捗状況について、「レベル0:16個、レベル1:3個・・合計19個」などと、文字でごちゃごちゃ書いてあっても、やる気にはつながらないみたいです。わかりやすい「見える化」のためには、やはり「グラフ」ですよね。以前、グラフの埋め込み関連でmatplotlibの利用を試みた際には「変な問題」が発生していたのですが、 すうちさんにアドバイスいただいて解決できました。 この時の経験を生かし、今回はグラフ

          機能追加(2)グラフ

          機能追加(1)テーマ切り替え

          (Python学習初心者の試行錯誤・備忘録です) 前回 までで、動作は基本的に変えずに、コード内容を整理する「リファクタリング」を試みました。MVCの役割ごとにファイルを分けたら、全体の見通しが良くなった(と思っているところ)。何のための作業かと言うと、その先の「機能拡張」をスムーズに行えるようにするためだろうと自分は思います。ここまではこんなアプリです。 「発声」をクリックすると、指定言語で読み上げる。「連想」をクリックすると、訳語(など、DBに読み込ませた二つ目のテキ

          機能追加(1)テーマ切り替え

          リファクタリング的な作業(5)

          (Python学習初心者の試行錯誤・備忘録です)  前回、データベースを操作する「モデル」のコード mvctest_model.pyが一段落したので、 で書いていたtest.pyを書き換えます。mvctest_model.pyをimport して、Cardsクラスを利用する形に置き換えます。  Cardsクラスに用意した関数は、これまでのところ __init__() _create_table() loadfromcsv(csvfilename:str)  loadfro

          リファクタリング的な作業(5)

          リファクタリング的な作業(4)

          (Python学習初心者の試行錯誤・備忘録です) からの続きです。  前回はSELECT文で、条件に合わせた要素数を求める select_count_where という関数を、Cardsクラス内に作ったところまで。  次はSELECT文で条件・優先順位に応じてカードを一枚取り出す、 select_topcard_whereという関数を考えます。結果は辞書型で取れるようにします def select_topcard_where(self, condition, *p

          リファクタリング的な作業(4)

          リファクタリング的な作業(3)

          (Python学習初心者の試行錯誤・備忘録です) 前回 で、AIのCopilot先生からは、 ・SQLでテーブル名や要素名を指定するのにプレースホルダは使えない ・「(pythonの)f-stringを使ってテーブル名をSQL文に直接埋め込」むことはできるが、「SQLインジェクションのリスクを高める可能性がある」 とアドバイスがありました。  ならば無理せず、テーブル名は固定でいい、と昨日の段階では思っていました。が、実際に始めて見るとSQL文中に「 t_cards 」と直

          リファクタリング的な作業(3)

          リファクタリング的な作業(2)

          (Python学習初心者の試行錯誤・備忘録です)  素人が「MVCモデル」などと、知ったようなことを言うと、笑われてしまうかもしれません。ただ、基本的な考え方は、「DBの操作」と「画面の操作」と「このアプリ自体のロジック」とは分離する、と言うことだろうと解釈しています。それを意識しつつソースコードをバラしてみます。 MVC分離 メインプログラムmvctest.py の外に、自作モジュールのファイル M: mvctest_model.py V: mvctest_view.py

          リファクタリング的な作業(2)

          リファクタリング的な作業(1)

          (Python学習初心者の試行錯誤・備忘録です) 半月ほど前に書いた が一応動いたことで、ちょっとした高揚感(笑)にしばらく浸っていました。少し時間が経って、冷静になってみると、コードの中身がひどいもんなので、初心者なりに「リファクタリング」的な作業をしてみようと思います。 test.py import csvimport sqlite3import TkEasyGUI as egfrom myspeech_lib import myspeechmydb = "mydb.

          リファクタリング的な作業(1)

          PythonからのSQLite操作についてCopilotが教えてくれた

          (Python学習初心者の試行錯誤・備忘録です) 昨日は と、「テーブルが無い時の自動作成」ができたことで、自分は大いに感激していたのでした。  その後、Copilotにリレーションのあるテーブルの扱い方を漠然と聞いたところ、(特に注文していないのに)「テーブル自動作成」をするサンプルコードを書いてくれました。自動作成は「当たり前」の話だったのか(^_^;) import sqlite3# データベースに接続するconn = sqlite3.connect('school

          PythonからのSQLite操作についてCopilotが教えてくれた

          SQLiteのテーブル自動作成が便利

          (Python学習初心者の試行錯誤・備忘録です)  今回のはやってみたところ、便利すぎて感動した件を書き留めておきます。経験値が上がった気がします(笑) 背景 Pythonのプログラムから、SQLiteを使う話は一月ほど前のこの記事で などと書いています。以来、自分は ・DBファイルと、中身のテーブルは別ツールの「DB Browser for SQLite」で、作成、準備する。 ・Pythonのプログラムからは、「お膳立てが整った」DBファイルにアクセスする。 と言うやり

          SQLiteのテーブル自動作成が便利

          with文と変数のスコープの勘違い

          (Python学習初心者の試行錯誤・備忘録です)  自分が大きく勘違いをしていたポイントを書き留めておきます。   たとえばテキストファイル"test.txt"があるとします。これを読み出すときwith文で with open("test.txt") as tempfile: temptext=tempfile.read() print(temptext) として実行すると、ターミナルにテキストファイル"test.txt"の内容が表示されます。これは直感的に分

          with文と変数のスコープの勘違い

          辞書パッケージを試す(3)

          (Python学習初心者の試行錯誤・備忘録です) 前回までで、英単語から、対応する訳語を取得する方法として 英⇒日 および、英⇒中(簡)の場合は、 ・PyDictionary・・・利点:速い。欠点:使えない時間帯がある。 ・PyMultiDictionary・・・利点:これまでのところ、いつでも使える。             欠点:遅い。 中(簡)⇒中(繁)には ・OpenCC ・chinese_converter いずれかを使うことで、実現できました。ただ、繁体字中文に訳

          辞書パッケージを試す(3)