2023年8月の日記
2023-08-31 (木)
曇り
COMのコードを書き始めた
実際にやってみるとなかなか楽しい。
インターネットには解説や断片的なコードはたくさんあるのだが、完成された形のサンプルががあまりない。
本をを頼りに、一つずつ積み上げていかないといけない。
Essential COMのサンプルコードがなぜかダウンロードできなくなっているのが痛かった。
2023-08-30 (水)
曇り
少し涼しかった
曇りだったのもあって、ようやく夏の終りらしい暑さの引いた1日となった。
今年の暑さは異常だったらしい。
ほぼ1日中エアコンをつけっぱなしだったので、そこまで影響があったわけではなかった。
外に出るとたしかにあぢーとなるのは体感していた。
COMやめたい
前回の動画で、VBAでCOMを使うと予告してしまったので学習している。
勝手に言っただけなので、別に強制ではない。
今やらなかったらもうやることないだろうなとも思い、少しずつ進めている。
昔やったときほど難解には感じなくなっているものの、やはり難しいところがある。
まだ全然コードを書いていない。
それがよくなさそうだ。
実際に書いてみれば、改善されそうな気がしている。
2023-08-29 (火)
晴、曇
Essential COMを読んでいる
4章。
まだ基本ではある。
というか、この本が基本を教える本になっている。
真面目にCOMをやるのなら、最良の本ではあるだろう。
すべての皮を剥ぎ取って、スクラッチからCOMを理解していくやり方で、好みにもあっている。
今やりたいのは、VBAでCOMを扱うサンプルをさらっと作りたいだけだ。
本格的にCOMに入門したいとは思っていない。
そんなに分厚い本ではないので、最後まで読んでしまうことも可能なのだが、4章を終えたら、一旦閉じようと思う。
この程度の習熟度で動画にしてしまっていいのか、ためらいもある。
2023-08-28 (月)
晴
ぼっち・ざ・ろっく!を見終わった
すごくよかった。
不思議な感覚になる。
シーズン2が待ち遠しい。
2023-08-27 (日)
晴
洗濯機の修理依頼完了
脱水に不具合が出た。
先週のことなのだが、家族がもう少し様子見するといってるうちに、修理を依頼するのが延びてしまった。
ようやくWebから申請した。
訪問可能な日が来週まで待たないといけない。
もうちょい早かったら今週中に行けたのにと思う。
費用の相場もなかなか高額だ。
かといって直さないわけにはいかない。
おとなしく待つことにしよう。
Essential COM 3章を読んだ
VBAでDLLを使う動画で、次にCOMをやると予告してしまったので、勉強している。
なかなか難しくなってきた。
動画では、ここまで詳しくやる必要はなさそうなのだし、その時間もない。
個人的にも興味があるから、読んでおきたい。
まだ全部を読む必要はないだろう。
あと4章だけ読んだら、コーディングしてみて、その上で動画を撮ろうと思う。
2023-08-26 (土)
晴、一時雨と雷
ぼっち・ざ・ろっく!見てる
Amazon Primeで見れるうちにと思い見始めた。
表紙を飾っているギターマガジンを購入してあり、思い入れがある。
ハイスコアガールのレンタル期限が迫っているので、そちらも見ないといけない。
2023年8月25日 (金)
晴
EXLSQLITE3のコードに説明を加えた
VBAとDLLの動画 #3 のために作成したVBAかからSQLite3を利用するプログラム。
動画の中でほとんど触れることができなかったので、ソースをアップしてあるところに説明を書いた。
ソースコードの中に冗長すぎるほどに書いていった。
かなり大変な作業だった。
プログラム本体のコーディングよりも大変だった。
しかし、その過程でコードを見直して良くないところを直すこともできて、結果には満足している。
2023年8月24日 (木)
雨のち曇り
本を買った
久々の遠出。
本屋によっていった。
ポイントが溜まっているので、消化するつもりでいた。
電子書籍への移行を進めたいので、あまり買うものはないだろうと思っていた。
プログラミング、数学、物理のコーナーをざっと眺めて、これはぜひ読みたい、というようなものはなかった。
何も買わないわけにはいかないので、なんとなく読みたいもを見繕っていた。
すると、徐々にこれは良いかもと思えるものが増えてきて、結局かなりの額の買い物になってしまった。
いくつかは予算オーバーであるか、電子書籍のほうが良さそうなので買わなかった。
- アルゴリズムデザイン
- 作って理解するOS x86系コンピュータを動かす理論と実装
- 自作OSで学ぶマイクロカーネルの設計と実装
Amazonで追加購入
Amazonで今日の見直しをしていた。
次に目をつけている本を見ていた。
- The Art of 64-Bit Assembly, Volume 1: x86-64 Machine Organization and Programming
ここから誘導されて、良いものを見つけた。
- Write Great Code, Volume 1, 2nd Edition: Understanding the Machine
異様なほど安くなっていたので買っておいた。
オブジェクト設計スタイルガイドを読んでいる
久しぶりに本を読んでいる。
今日買ってきた本。
なんとなく興味を惹かれて買った。
1章はさほど新しいこともなく、さらっと読み終わって、特に手応えはなかった。
しかし、2章がすごく良い。
まったく新しいことではないのだけど、なんとなくでしか自分の中で形になっていなかったことが、はっきりと整理された形で示されている。
こうあるべきだと断定されていて、もやもやしていた霧が晴れていくようだった。
まだ2章にも関わらず、これだけでも値段分の価値はあったと思える内容だ。
2023年8月23日 (水)
晴、夕立
VBAとDLLの動画 #3 投稿
自作DLLの関数を呼び出すという内容。
このタイトルはあまり適切ではない。
自作DLLの役割は、新たな機能を提供するものではなく、SQLiteのDLLが32ビットExcelで使えないから、中間で橋渡しをする仕事をするだけのものだからだ。
本来は必要のないもので、仕方なくそうせざるを得なかったという、消極的な理由になっている。
間接参照を利用すれば解けない問題はないといわれる、そのケースに当てはまるかも知れない。
力技で無理矢理感はあるが、いろんなことが可能になることを示す一例としては、無価値ではないかも知れない。
2023年8月22日 (火)
VBAとDLLの動画 #2 投稿
DLLについての説明、のはずだったが、要点を得ないわかりにくい動画になってしまった。
VBAで利用するのを中心に据えているため、本来のDLLの役割から外れたところに向かっているようだった。
MinGWとMSVCの混在しているのもややこしい。
事前に準備している段階では、色々と知ることができて、収穫は豊富だった。
それをうまく伝えられればよかったのだが、そうはなっていないだろう。
自作のDLLを呼び出すところまで手を出してしまったのも、話が広がりすぎて良くなかった。
次回にもっと大掛かりなプログラムを扱いたかったので、今回やってしまうことにした。
5回で終えるという予定通りにやりたかった。
予定を変更してでも、自作のDLLを作るのは単体の動画にしたほうが良かったように思う。
2023年8月21日 (月)
VBAとDLLの動画 #1 投稿
できるだけシンプルにしたかったのでWin32 APIのMessageBox関数を呼び出すだけの内容にした。
Declare文がほとんどすべて。
あとはモジュール内に閉じ込めて、利用する側では直接扱わずに、モジュールが提供する関数を利用するという形にした。
このパターンは本来のモジュールの役割に適合しているようで、悪くないと思えた。
2023年8月20日 (日)
晴れ
記録なし
何をやっていたのか不明。
2023年8月19日 (土)
晴れ
奇妙な雷の夜空
19時から20時頃、5秒程度の周期で東の空が光り続けていた。
ぱっと光って線が走るのは雷そのものだった。
雷鳴はまったく轟かない。
それが、かえって不気味で、怪しげな雰囲気だった。
2023年8月18日 (金)
Excelの調査
DLLをExcelで使う動画の準備。
以前に少しやっていたので、その続きとなる。
COMまで手を伸ばすことも考えている。
まずは基本となる、DLLについて色々調べてきた。
一筋縄では行かないところがある。
主にエクスポートされる関数の名前に問題がある。
- extern “C”
- declspec(dllexport)とdeclspec(dllimport)
- stdcallとcdecl
主にこれらが影響してくる。
さらに、コンパイラによる違いもある。
少なくとも、Mingw-w64のGCCの場合とMSVCの場合を見ておいたほうがいい。
そこから発展させる形で、COMにつなげていくと良さそうだ。
以前、MIDLを利用するためにインストールしたWindows SDKには、C++コンパイラも含まれているのだが、64ビットのバージョンしか使えないようだ。
仕方ないので、最後に購入したVisual Studioである2010をインストールした。
ディスクスペースを大量に消費するので、VirtualBoxのディスクイメージのサイズを増やす必要があった。
欲を言えば、Excelも同時期のものが欲しいのだが、無理だろう。
2000という20年以上前のバージョンでやることにする。
ともあれ、環境は整ったので、これでやってこうと思う。
2023年8月17日 (木)
Mojo🔥を触ってみた動画 投稿
🔥は名前の一部らしく、さらには、ソースファイルの拡張子にも使える。
こういう、気の利いた遊び心は大好きだ。
まだ正式のリリースには至っておらず、オンラインの環境でしか試すことができない。
アカウントも必要となる。その手続きは簡単だった。
マニュアルを読みながら、コードを走らせていった。
今の段階では、それほど際立った特徴も感じられず、なんて喋ろうか、筋書きがうまく建てられないでいた。
やはりAI開発者のための言語であることにフォーカスして話してみることにした。
アップしてみたところ、思いもよらない好評価のコメントをを頂いた。
嬉しい限りで、これからもぽつぽつ頑張っていこうと思えた。
2023年8月16日 (水)
雨
Python連携動画 #10 最終回 投稿
PYÖVEは目標としていたものに到達できた。動画の内容は、ちょっと退屈なものになってしまったかも知れない。
次はリクエストをもらっていた、mojoかVBAに着手する。
気になる
Packでmojoで検索したら出てきた。
- Monkey Game Development: Beginner's Guide
2023年8月15日 (火)
曇り、雨、台風
PythonとC++/Rustの動画 #9 投稿
PyO3でLÖVEもどきを作る、2回目。
main.pyを読み込んで走らせる骨格はできた。
あとはウィンドウとグラフィクスの機能をもたせれば完成。
このときは、SDL2などを使えば簡単だろうと思っていたが、思わぬ困難が待ち受けていた。
2023年8月14日 (月)
晴
何もしてなかった?
昨日と一昨日は親族の行事に参加していて、大変疲れていたのだろう、おそらく何もしていない。
2023年8月13日 (日)
晴れ
PythonとC++/Rustの動画 #8 投稿
PyO3でLÖVEもどきを作ることにした。
概要だけ喋って終わり。
2023年8月12日 (土)
晴
ハイスコアガール シーズン1をレンタルした
Fire Maxタブレットを買ったときにもらったAmazonのクーポンの期限が14日までなので、使っておいた。
前々から見たかったし、ちょうどよかった。
デジタルビデオを利用するのは初めてだ。
シーズン2、3もあるので、おそらくまた利用することとなるだろう。
2023年8月11日 (金)
晴
RustのPythonライブラリを調査
もうRustに入ってしまうことにした。
どういうのが使えるか検索していた。
PyO3が有力だ。
「rust python」で検索すると、RustPythonというのがヒットする。
これは、RustによるPythonの実装で、JythonやIronPythonのようなものだ。
連携するというよりも、完全に統合してしまう、より強力な選択肢と言える。
動画で扱うかどうかは微妙なところではある。興味はある。
2023年8月10日 (木)
晴
PythonとC++/Rustの動画 #6 投稿
pybind11。
WIndowsで動いたので、そちらでやった。
いくつかのバグがあった。
venvのactivate.batの、Unicodeにコードページを切り替えるところを消さないといけない。
コードページ65001にすると、バッチファイルが動かなくなる。
Vistaのバグといっていい。
pybind11.hをインクルードする前に、#define _hypot hypotを書かないといけない。
pyconfig.hの中で、#define hypot _hypotとされていている。
その結果、hypotが見つからないとなる。
MinGW-w64の特定のバージョンと、Python 3.6の組み合わせで発生する、レアなバグ。
2023年8月9日 (水)
曇り
何もしてない
ビデオが停滞気味だ。
もうちょっと店舗よくやらないと、8月もYouTubeだけで終わってしまう。
2023年8月8日 (火)
曇り
PythonとC++/Rustの動画 #5 投稿
Boost.Pythonを使ってみる。かなりつまらない内容担ったのではないかと危惧している。
2023年8月7日 (月)
曇り
Boost.Pythonを試す
動画用にやってみた。公式のドキュメントのチュートリアルをベースにやっていた。
全体的にはさほど扱いが難しいわけではない。
一つだけ、どうしても腑に落ちないところがあって、試行錯誤していた。
デフォルトの実装を持つpureではない仮想関数をオーバーライドするときのサンプルに謎があった。
もう解決したが、かなり時間をかけてしまった。
b2/bjamをビルドツールとして利用した。
もしかしたら直接Python/C APIを使わないなら、Windows Vistaでもいけるのでは、と思い、試してみることにした。
まず、BoostのビルドにMinGW-w64であるためか、苦戦した。次に、b2でBoostを利用可能にするのに苦戦した。
まだ解決していないところもある。import boostとして、Boostのモジュールでライブラリの設定を行う。
ここで苦戦した。最終的に完全な解決には至らなかった。
architecture=x86、address-mode=32と指定しても、x32のサフィックスがつかない。
また、肝心のBoost.Pythonはやはりリンクエラーになる。
Python36がMSVCによってビルドされていることは承知していたので、だいたい予想はしていた。
驚くべきことではない。
2023年8月6日 (日)
晴れ
COMについて勉強
だいぶ前に購入した、Essential COMを読んでいた。
これはとても良い本だ。
C++のプログラムを配布するときに問題になる、バイナリの互換性について学ぶことができる。
内容も完璧で、信頼の置けるテキストだ。
MIDL
COMのプログラムを書きたいのだが、MinGWにはMIDLコンパイラが付属していない。
Visual Studioは2010を持っているのだが、仮想マシンにインストールするにはディスクスペースを食いすぎることが予想されるので、避けたかった。
「windows vista sdk」辺りで検索して、ちょうど良さそうなものが見つかった。
インストーラーで必要なものだけに絞ってインストールしたら、300MB程度で収まった。
MIDLもちゃんと使える。C++コンパイラまで入っている。だが、バージョンが古い。
VS2005辺りのもののようだ。C++11にも対応していない。
もう少し新しいバージョンのSDKもVistaで使えることが後で分かった。
MIDLとそれに関連するツールが使えればいいので、このままいくことにした。
2023年8月5日 (土)
晴
DLLの実験していた
VBAの動画に備えて、DLLをいじっていた。
__stdcallをつけると、エクスポートしたとき、引数の情報も名前にエンコードされて付加される。
VBAでは、これが問題になる。
かといって、引数の情報がまったくない__cdeclでもだめだ。
解決策は、エイリアスを定義してやることだ。
これは、モジュール定義ファイル (.def)をリンク時に渡してやるか、オプション–add-stdcall-aliasを指定してやることで可能となっている。
問題はそう単純ではなく、他にも考慮すべき点があるだろう。
もう少し正確に理解しておきたい。
2023年8月4日 (金)
晴れ、夕立
晴れ、夕立
久々に外に出た
7月はずっと引きこもっていて、地元から一歩も出なかった。
今日、久々に少し遠出をした。だからといって特に何かを思うことはない。
久々の雨
ここしばらくずっと日差しが強い日が続いて、雨が降っていなかった。
この日もずっと暑い晴れ日だったのだけど、夕方頃、ちょうど外にいたときに急な雨が降ってきた。
恵みの雨と言った感じで、気持ちが良い感触だった。
2023年8月3日 (木)
晴
Pythonと外部言語の動画 #2、#3 投稿
PythonからCの関数を呼び出す。
15分内に収めるのが難しい。
どうしても収まりきらない。
まだ20分ちょっとなので、許容範囲だとは思う。
時間がないので、急ぎ足になって雑になっているところがある。
無理に1本に収めようとしないで、もっと余裕をもった方が良さそうだ。
2023年8月2日 (水)
晴
ひたすら寝ていた
眠かった、というわけでもないけど、なぜかずっと寝てた。
18時間位寝たと思う。
おかげで、すっきり頭が冴えている。
2023年8月1日 (火)
晴
Pythonと外部言語の動画 #1 投稿
前置き。
Pythonから外部言語を利用する形態は2つあるという話。
いきなりC++やRustのライブラリを使うのではなく、まずは基本のC APIから始めることにした。