カレンダーは毎年週間の縦型のもので,自作のものを使っている. 市販品ではメモ欄が一番左にあるが,自分の好みである一番右にしている. また,定型の予定は事前にプログラムで書き込んでいた. 最近,Pythonを勉強しているので,TeX版をPythonに書き直した. だいたい求めるものができた.
さらに,streamlitというwebアプリ作成のライブラリがあるので,web版にしてみた. 個人の好みはそれぞれなので,1月始まり・4月始まり,レイアウトの左寄せ・右寄せ,日曜日・月曜日始まり,1日の開始・終了時刻はweb版ではカスタマイズできるようにした.
https://vercal.streamlit.app/
定型の予定は以下の形式のエクセルファイルを作れば,繰り返してくれる.
period_start period_end week_of_day event_start event_end event except 2025-04-10 2025-07-10 wed 10:30 12:00 数学 2025-05-07;2025-05-14 2025-04-10 2025-07-10 mon 12:30 12:30 開始のみの予定 定型予定のファイルの詳細は以下を参照してほしい. コードもすべて公開している.
https://github.com/matutosi/vercal
使い方は,なんとなくわかりそうだとは思う. でも,説明はまだ全然なので今後整理していこう.
pivoteaのPythonの関数自体はできてきた.
せっかくなので,Pythonの環境がなくても実行できるように,TkEasyGUIとPyinstallerを使ってexeにする予定.
pivoteaというRのパッケージをPythonに変換している. Geminiに相談してコードを変換したが,やはりそのままでは駄目で,エラーがでる. でも,Pythonにも少し慣れてきたので,ちょっとずつデバグしていったら,それなりには動くものになってきた. うまくできたら,“pivoteapy"として公開できるかもしれない.
Pythonののパッケージとしてまとめるだけでなく,さらにPythonからRに戻すと,言語の翻訳と同じでRのコードが簡潔になるような気がする.
例:不自然な英語 –(AIで翻訳)–> 他の言語 –(AIで翻訳)–> 自然な言語
Geminiにリファクタリングを頼むのとどちらがきれいなコードになるのか試してみよう.
https://cran.r-project.org/web/packages/pivotea/index.html
easypdfでPDFの文字列を強調表示するものを作成した.
https://github.com/matutosi/easypdf
easypdfというのを作った. 作ったというほどのものではないが,Windowsの .exe 形式の実行ファイルなのでプログラミングをせずとも使える.
とりあえずは,PDFの結合をするだけのものを公開した. 使い方は以下をご覧ください.
https://github.com/matutosi/easypdf
論文とか学会発表などの資料の公開ページへのリンク.
https://www.dropbox.com/s/wz0c13ksncvjh3k/link.txt?dl=0
textrarというRのパッケージを作った.
textrar: https://cran.r-project.org/web/packages/textrar/ みんなの自動翻訳という翻訳サービスをRから利用するものだ. APIは整備されているのだが,使い方がちょっとややこしいので,簡単に使えるようにした.
画像認識してクリックするパッケージとして,PythonではPyAutoGUIがある. 知っている範囲では,同じようなものがRではなかった. Rでは,マウス・キーボード操作の自動化パッケージとしてkeyboardsimulatorがあるが,画像認識の機能がなかった. そこで,その機能を補完するものとして,screenshotというパッケージをつくってCRANに登録した. なお,このパッケージには,Rからスクリーンショットをとる関数と,画像を元にスクリーン上での位置を特定する関数などがある. keyboardsimulatorと組み合わせると,便利なはずだ.
ちなみに,これまでCRANに登録したパッケージには以下のものがある.
moranajp: https://cran.r-project.org/web/packages/moranajp/ ecan: https://cran.r-project.org/web/packages/ecan/ clidatajp: https://cran.r-project.org/web/packages/clidatajp/ pivotea: https://cran.r-project.org/web/packages/pivotea/ screenshot: https://cran.r-project.org/web/packages/screenshot/
画像認識してボタンをクリックするのを自動化するために,Rでコードを書いていたら,やはり使いものにならないぐらい遅かった. そこで,Rcppを使ってC++で書き直した. 最低でも10倍,うまくいけば50倍ぐらいになると思っていたが,3倍ぐらいの速度にしかならない. しかも,場合によっては3倍ぐらい遅いこともある. たぶん,C++の書き方が良くないのだと思うが,別の方法で実装することにした.
同じような色だけの画像を認識するのは難しいが,通常
1 needle_imageとhaystack_imageの各ピクセルで共通する色を抽出
2 抽出した色のうちhaystack_imageで出現頻度の少ないものから1つ選んでneedle_imageでの位置を把握 3 needle_imageでの位置をもとに,haystack_imageの基準点(1,1)を抽出 4 出現頻度の少ないものから,順次2と3を繰り返し 5 haystack_imageの基準点が1つに絞れたら,それが探し出そうとしている画像の基準点と一致しているはず
全ピクセルの一致を目指しているのではないので,厳密な一致はしない可能性はあるが,画像があれば必ず一致するはずだ. 厳密な一致を求めるときは,最後にチェックを入れれば良い.
ということで,コードを書いたら結構速い速度になって,満足. 単一色の画像の中からその一部を特定するのは無理だが(このコードに限らず,そもそも無意味),実用的な範囲では使えそうな感じだ.
Windowsで画面のスクリーンショットをとるにはPrtScを押せば良いが,コマンドラインから取りたいときには不便. コマンドラインからできないか探したら,C# でつくったものがあった. .net frameworkは必要だが,“selfcompiled C# program"とのことなので,batを実行すれば勝手にexeが生成される. これはすごい.
https://superuser.com/questions/75614/take-a-screen-shot-from-command-line-in-windows#answer-943947 https://github.com/npocmaka/batch.scripts/blob/master/hybrids/.net/c/screenCapture.bat また,下のところにあるコードはマルチディスプレイにも対応している.
https://superuser.com/questions/75614/take-a-screen-shot-from-command-line-in-windows