2023年8月の日記

Unknown programmer's programming note.

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から始めることにした。

Created: 2024-02-07 水 06:05

Emacs 29.1 (Org mode 9.6.6)

Validate