LiuK
Python関係の備忘録
日本の国籍法における台湾の扱いについての情報整理
Arduino、電子工作関連の自分の記事。
テストで単語データを千個単位で入れたり消したりしているうちに、SQLiteのDBファイルのサイズがだんだん大きくなってきてしまいました。 auto_vacuum という機能があるようで SQLで "PRAGMA auto_vacuum = FULL" を実行してみました。 だけど、ファイルサイズ小さくならない。どうやら、auto_vacuumは少し空き領域ができたからと言って、すぐに動作するわけではないようです。 すぐ効果を見たかったのでVACUUMコマンドを用意して、
(Python学習初心者の試行錯誤・備忘録です) 実際に使ってみるといろいろ気づきがあります。 「記憶定着レベル」を最初「レベル0」から始めて、記憶定着が確認できるたびに「レベル上げ」していくやり方。これ、テスト段階で10~20個程度の単語リストで試す分には非常にうまく行っておりました。 ・・よし、それじゃあ、1000個単語覚えるぞ、と大量の単語を投入して見たら困ったことになった。最初見た単語が覚えられなくて「まだ」ボタンをクリックして「流して」しまうと、次にその単語が表
(Python学習初心者の試行錯誤・備忘録です) 気付いたバグについて。 このアプリ、最初に単語と訳語のセットをCSVで読み込むとき ここから「LoadCSV」とやると、ポップアップが開いて BrowseからCSVファイルを選んでOKとやると、 「今テーブルにあるデータを削除して、CSVファイルのデータを読み込む」 と言う流れでした。これはOKをクリックすれば問題なく動作していました。そして、この「読み込み」の操作はめったにやらないので問題に気が付かなかった。 そ
(Python学習初心者の試行錯誤・備忘録です) ここまでのところ、新しい教材(単語リスト)をCSVで読み込むと、テーブルにあるそれ以前のデータを削除してから新しい単語リストを読み込む処理にしています。 mvctest_controller.pyより #抜粋class Controller: def loadcsv(self, csvfilename:str) -> None: self.mycards.clear_table() se
(Python学習初心者の試行錯誤・備忘録です) グラフで「見える化」すると、アプリの「間抜け」な動作が目についてきます。学習が進んで、記憶定着レベルがだいぶ上がってきたときに、たまたま一つど忘れしてしまうと 「覚えた」 「覚えた」 と同じ単語ばかり続けて出てきてしまいます。出題の優先順位は、「習熟レベルが低い順」で「タイムスタンプが古い順」 >ORDER BY level ASC, timestamp ASC としているからです。これを避けるために、指定したレベル以
(Python学習初心者の試行錯誤・備忘録です) 学習進捗の「見える化」へ学習進捗状況について、「レベル0:16個、レベル1:3個・・合計19個」などと、文字でごちゃごちゃ書いてあっても、やる気にはつながらないみたいです。わかりやすい「見える化」のためには、やはり「グラフ」ですよね。以前、グラフの埋め込み関連でmatplotlibの利用を試みた際には「変な問題」が発生していたのですが、 すうちさんにアドバイスいただいて解決できました。 この時の経験を生かし、今回はグラフ
(Python学習初心者の試行錯誤・備忘録です) 前回 までで、動作は基本的に変えずに、コード内容を整理する「リファクタリング」を試みました。MVCの役割ごとにファイルを分けたら、全体の見通しが良くなった(と思っているところ)。何のための作業かと言うと、その先の「機能拡張」をスムーズに行えるようにするためだろうと自分は思います。ここまではこんなアプリです。 「発声」をクリックすると、指定言語で読み上げる。「連想」をクリックすると、訳語(など、DBに読み込ませた二つ目のテキ
(Python学習初心者の試行錯誤・備忘録です) 前回、データベースを操作する「モデル」のコード mvctest_model.pyが一段落したので、 で書いていたtest.pyを書き換えます。mvctest_model.pyをimport して、Cardsクラスを利用する形に置き換えます。 Cardsクラスに用意した関数は、これまでのところ __init__() _create_table() loadfromcsv(csvfilename:str) loadfro
(Python学習初心者の試行錯誤・備忘録です) からの続きです。 前回はSELECT文で、条件に合わせた要素数を求める select_count_where という関数を、Cardsクラス内に作ったところまで。 次はSELECT文で条件・優先順位に応じてカードを一枚取り出す、 select_topcard_whereという関数を考えます。結果は辞書型で取れるようにします def select_topcard_where(self, condition, *p
(Python学習初心者の試行錯誤・備忘録です) 前回 で、AIのCopilot先生からは、 ・SQLでテーブル名や要素名を指定するのにプレースホルダは使えない ・「(pythonの)f-stringを使ってテーブル名をSQL文に直接埋め込」むことはできるが、「SQLインジェクションのリスクを高める可能性がある」 とアドバイスがありました。 ならば無理せず、テーブル名は固定でいい、と昨日の段階では思っていました。が、実際に始めて見るとSQL文中に「 t_cards 」と直
(Python学習初心者の試行錯誤・備忘録です) 素人が「MVCモデル」などと、知ったようなことを言うと、笑われてしまうかもしれません。ただ、基本的な考え方は、「DBの操作」と「画面の操作」と「このアプリ自体のロジック」とは分離する、と言うことだろうと解釈しています。それを意識しつつソースコードをバラしてみます。 MVC分離 メインプログラムmvctest.py の外に、自作モジュールのファイル M: mvctest_model.py V: mvctest_view.py
(Python学習初心者の試行錯誤・備忘録です) 半月ほど前に書いた が一応動いたことで、ちょっとした高揚感(笑)にしばらく浸っていました。少し時間が経って、冷静になってみると、コードの中身がひどいもんなので、初心者なりに「リファクタリング」的な作業をしてみようと思います。 test.py import csvimport sqlite3import TkEasyGUI as egfrom myspeech_lib import myspeechmydb = "mydb.
(Python学習初心者の試行錯誤・備忘録です) 昨日は と、「テーブルが無い時の自動作成」ができたことで、自分は大いに感激していたのでした。 その後、Copilotにリレーションのあるテーブルの扱い方を漠然と聞いたところ、(特に注文していないのに)「テーブル自動作成」をするサンプルコードを書いてくれました。自動作成は「当たり前」の話だったのか(^_^;) import sqlite3# データベースに接続するconn = sqlite3.connect('school
(Python学習初心者の試行錯誤・備忘録です) 今回のはやってみたところ、便利すぎて感動した件を書き留めておきます。経験値が上がった気がします(笑) 背景 Pythonのプログラムから、SQLiteを使う話は一月ほど前のこの記事で などと書いています。以来、自分は ・DBファイルと、中身のテーブルは別ツールの「DB Browser for SQLite」で、作成、準備する。 ・Pythonのプログラムからは、「お膳立てが整った」DBファイルにアクセスする。 と言うやり
(Python学習初心者の試行錯誤・備忘録です) 自分が大きく勘違いをしていたポイントを書き留めておきます。 たとえばテキストファイル"test.txt"があるとします。これを読み出すときwith文で with open("test.txt") as tempfile: temptext=tempfile.read() print(temptext) として実行すると、ターミナルにテキストファイル"test.txt"の内容が表示されます。これは直感的に分
(Python学習初心者の試行錯誤・備忘録です) 前回までで、英単語から、対応する訳語を取得する方法として 英⇒日 および、英⇒中(簡)の場合は、 ・PyDictionary・・・利点:速い。欠点:使えない時間帯がある。 ・PyMultiDictionary・・・利点:これまでのところ、いつでも使える。 欠点:遅い。 中(簡)⇒中(繁)には ・OpenCC ・chinese_converter いずれかを使うことで、実現できました。ただ、繁体字中文に訳