2023年4月の日記

Unknown programmer's programming note.

2023年4月30日 (日)

曇り

今日の読書

Getting Started with V Programming (完了)

12、13、14章。
もうちょっと踏み込んだ内容にして欲しかった。
タイトルが「さあ、始めよう」のような感じなので、このくらいが適正なのかもしれない。
Vを覚えるのは難しくなさそうだ。
テストエディタのサポートがほとんどない。
使い続けるかどうかは微妙なところ。
Crystalの方がいいかなと思っている。

久々にブログを投稿した

4月1日に再開するといって、結局何も書かなかった。
今後どうするかについて書いた。
苦痛を伴う作業だった。
楽しんでやらなければならないという結論に行き着いた。

2023年4月29日 (土)

曇り、雨

今日の読書

Getting Started with V Programming

7、8、9、10、11章。

2023年4月28日 (金)

晴れ

本の整理中

100冊程度見繕った。

2023年4月27日 (木)

晴れ

本を購入

用事があって出かけたので、いつものように本屋に寄って帰った。
前回は何も買うものがなかった。
ポイントの期限が迫っていたので、何かしら使っておこうと思い、無理して選択した。
「なっとく!ディープラーニング」と「なっとっく!AIアルゴリズム」というのが目に止まったので、それにしておいた。

本の整理

もう思い切って不要なものを処分することにした。
押し入れに封印しておくこともできるが、頭の片隅にちらつくことで、雑念が入る。
プチ断捨離をすることにした。

2023年4月26日 (水)


何も覚えていない

何してたのだろう?

2023年4月25日 (火)

曇り、にわか雨

今日の読書

C++テンプレートメタプログラミングを読み終えた

10章、11章、付録を読み終えて、完了した。
難解という感触はなくて、面白いという感想を持った。
しかし、全く身についていないなという自覚がある。
コードも、解読するのが難しいのがちらほらある。
練習問題を全部スキップしてきたし、目標には達していない。
内容は素晴らしいので、もう1週する価値は十分にある。
しかし、訳がひどいので、その気にはならない。
幸い、原著を確保してあるので、そちらで再読することにする。
時期は未定。

Getting Started with V Programming

6章。
条件分岐と繰り返し。
解説があまりに初歩的過ぎる。
そして x := if b { 1 } else { 2 } のような書き方ができることに触れられていないなどと、中途半端なところが目立つ。

Ubuntu 23.04

リリースされたのは知っていた。
通知が来るのかと思って待っていたけど、何もない。
apt upgrade で、15件が保留となっていて、それが何かしら関係しているのかと疑っていた。
本当のところは分からない。

早く試してみたいので、手動でやることにした。
ここを参考にしながらやった。
特に問題なく終了した。
UIのフォントがいい感じになっている。

Spacemacsと格闘

Ubuntuのアップグレードによって、Emacsが27.1から28.2になった。
Spacemacsを起動してみると、パッケージのアップデートが行われる。
いくつか問題が発生した。

再起動が機能しなくなった

SPC q rSPC q R で再起動しない。
Fedoraの方でも発生していた問題だ。
ちらほら報告が見つかるが、有効な解決策はない。
なければないでいいかと、諦めることにした。

org関係のエラー

起動時にorg-rich-yankというのが、org-assert-versionが無効な関数だとエラーを吐き出す。
原因不明だったが、Spacemacsをインストールし直すことで解決した。

  1. .spacemacsのorgレイヤーを無効にしておく
  2. .emacs.dを退避 (privateレイヤーを間違って削除しないように注意)
  3. $ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
  4. 終わったら、orgレイヤーを有効にして再起動する

これで治ったようだ。
全く意味がわからない。

FF5 森まで

うーん、おもしろい。
不思議だ。

2023年4月24日 (月)

晴れ

今日の読書

C++テンプレートメタプログラミングを再開する。
5章を終えたところから1年以上空いたので、全く前の内容を覚えていない。
最初から読み直すか迷うところだが、とりあえず途中からでも1週回しておくことにする。
6章、7章、8章、9章を一気に読んだ。
6章と7章は流し読み。
8章は、エラーメッセージの問題について、真面目に検討している。
ここは前の章に依存しておらず、普通に読むことができた。
9章は、馴染みのあるテンプレートのパターンやイディオムと言うべきものを取り上げている。
ここも普通に読むことができた。

Getting Started with V Programming, 5章
スライスについて、元の配列を参照するのか、コピーとなるのか、重要な点に触れられていない。

2023年4月23日 (日)

晴れ

今日の読書

Getting Started with V Programming, 4章
特に何も言うことがない。

Solusのプロジェクトが再稼働したようだ

今年1月頃から、更新が途絶えていて、フォーラムもダウンしていた。
ようやく再稼働するようだ。
良いニュースだ。
アンインストールしないでおいてよかった。

2023年4月22日 (土)

晴れ

FF5を遊ぶ

バリアの塔を終えたところまで。
楽しい。
最初はフォントが今風すぎて違和感があったのだが、慣れると全然気にならなくなった。
というか、むしろ良い。

FFを作ることを考える

1から6まで順番に作っていけないだろうか。
基礎を作るだけならできなくもなさそうだ。
問題は、背景などのアート素材が膨大すぎることだ。
今やっている5だけでも大量に必要になる。
現実的な量だろうか。

2023年4月21日 (金)

晴れ

FF5を始めた

かなり進んだ。
めっちゃ楽しい。

2023年4月20日 (木)

晴れ

今日の読書

  • Template Metaprogramming with C++ 8章
  • Template Metaprogramming with C++ 9章 (完)

rangeとalgorithm。
ここでのrangeとは、C++20のrangeライブラリのことではない。
STLの範囲を表現するために利用されるイテレータのことを指している。
内容はSTLのコンテナ、イテレータ、アルゴリズムの要件に適応するものを自作するという内容だ。
テンプレートメタプログラミングの範疇なのかと疑問に思うところがあった。
普通のプログラミングに思えるところがある。
しかし、そうではなく、これはやはりテンプレートメタプログラミングなのであって、特殊な領域ではない身近なところで利用されているのだということかもしれない。

rangeライブラリはかなり期待できる。
次のようなコードが書けるようになる。

std::vector<int> v{ 1, 5, 3, 2, 8, 7, 6, 4 };
sort(v);
auto r = v
    | filter([](int const n) { return n % 2 == 0; })
    | drop(2)
    | reverse
    | transform([](int const n) {  return n * n; });
for_each(r, [](int const n) {  std::cout << n << '\n'; });

C++23でrangeアダプタがさらに追加される。
この章ではrangeアダプタを自作するところまでやっている。
難解で理解できない。
最後の最後になって、この本で唯一理解できないものが登場した。
テンプレートに対する理解が不十分というわけではなく、rangeの仕様を理解していないからだろう。
リファレンスと照らし合わせながら読めば、おそらくクリアできる。
今そうしようという気にならないのは、まだrangeを使ったこともないのに、過度な詳細にとらわれる必要性を感じないからだ。
ある程度慣れ親しんでからの方がいいだろうと判断した。

Template Metaprogramming with C++ を読み終えた

最後でちょっと不完全な形になってしまったが、これでこの本は完了となった。
とても良い本だった。
C++テンプレート入門の決定版と言える。

FFのピクセルリマスターを買った

今日、PS4版が発売した。
もとはスマホで売られていたもの。
スマホでゲームをする気にはならないので、嬉しい。
1から6までのセットを買った。
5と6だけでもよかったのだが、一応揃えておいた。

2023年4月19日 (水)

晴れ

今日の読書

  • Template Metaprogramming with C++ 6章
  • Template Metaprogramming with C++ 7章

C++20のconcept。
これによってSFINAEの出番はほとんどなくななるのではないだろうか。
厄介な問題があって、テキストエディタやフォーマットツールがまだ対応していない。
例えば、clang-formatは conceptrequires といったキーワードを認識しない。

テンプレートのパターンとイディオム。

  • CRTP
  • Mixins
  • Type erasure
  • Tag dispatching
  • Expression templates
  • Typelists

パターンを使いたいがために使うのはどこか間違っているのだが、使わなければ身につけることができない。
頑張って身につける必要があるものだろうか。
楽しみのために覚えるというのはありだ。

2023年4月18日 (火)

曇り、雨

cppreference.com がダウンしている 20:42:19 JST

conceptのページを見たいのだが、応答がない。
1時間ほど前までは普通に見れていたのに。
こんなこともあるものなのか。
めっちゃ不安になる。
いかに頼り切っていたかが分かる。

今日の読書

  • Template Metaprogramming with C++ 5章

伝統的なSFINAEと、それに変わる新しい手段。
static_assertとconstexpr if。

2023年4月17日 (月)

曇り

C++入門動画 #11 #12 投稿

#11は昨日撮ったもの。
撮り終わった後寝てしまって投稿するのが今日になった。
簡易的なエラー処理を追加。
Stroustrupの本が参考になる。

#12は開発環境の見直し。
PATHの設定とProgrammer's Notepadからコンパイルと実行をできるようにした。
これでかなり快適になった。

2023年4月16日 (日)

曇り

C++入門動画 #10 投稿

if文の導入。
式と文の正確な定義が欲しくて、色々参考にした。
結果、見つからなかった。
仕方なく、それっぽい感じでお茶を濁しておいた。
新たな発見も多かった。
まず、C++には代入文というものはない。
「=」は式であって、代入文ではない。
型の宣言は文となっている。
宣言文(declaration statements)という。
一方、Cでは文ではないという、微妙な違いがある。
これがどのように影響してくるのかはわからない。

2023年4月15日 (土)

曇り、雨

C++入門動画 #8 #9 投稿

およそ1週間ぶりの投稿。
前もこのサイトの記事に使ったBMIを計算する例題を採用した。
intより先にdoubleを使うことになった。
ちょっと変かなとは思う。

2023年4月14日 (金)

晴れ

本屋に行った

ちょっとした用事があったので出かけた。
ついでに、いつものように、ややでかい本屋に立ち寄った。
しかし、何も買うものがなかった。

PC購入の手伝い

家族が新しいPCを買った。
セットアップをすることになった。
富士通の高いやつだ。
Windows 11が入っている。
セットアップはなかなか面倒だった。
Microsoftアカウントを作らないといけない。
何事もなく終わった。
今まで使っていた古い自作PCとモニターとして利用されていたテレビが不要になったので、こちらに回ってきた。
何か活用できないか考えておく。

2023年4月13日 (木)

晴れ

今日の読書

  • 詳解UNIXプログラミング 第3版 4章
  • Getting Started with V Programming 3章
  • Template Metaprogramming with C++ 4章

Perfoect Forwardingのあまりの分かりやすさに感動すら覚えた。
少しだけC++に詳しくなれたかもしれない。

2023年4月12日 (水)

雨のち曇り

今日の読書

  • Template Metaprogramming with C++ 3章
  • Getting Started with V Programming Preface
  • Getting Started with V Programming 1章
  • Getting Started with V Programming 2章
  • UNIXパワーツール 第3版 2章

UNIXプログラミングの4章にも手を付けて、読みきれなかった。

2023年4月11日 (火)

晴れ

今日の読書

  • Template Metaprogramming with C++ 2章
  • UNIXパワーツール 第3版 1章

唐突にパワーツールを開く。
Unixに取り憑かれている。
1日1章ずつ読んでいく。
順番に読んでいくような本ではないので、興味があるところを好きなように読んでいけば良い。

テンプレートは、1章あたりの分量が多くて、かなり時間がかかった。
まだテンプレートメタプログラミングに入らず、基礎を固める段階だった。
次の章もvariadic templateの解説なので、基礎にとどまるだろう。
早く本題に入りたい。

本が届いた

A Tour of C++とLispの本。
状態は完璧。
C++の方はなるべく早く着手したい。
Lispはタイミングが難しい。

2023年4月10日 (月)

晴れ

今日の読書

  • 詳解UNIXプログラミング 第3版 3章
  • Template Metaprogramming with C++ 1章

UNIXでは、2章が退屈に思えたので、読み進められるかどうか不安だった。
3章は、入出力という興味のある内容で、関心を失わず読むことができた。

テンプレートメタプログラミングは、テンプレートの紹介といったところ。
ざっくりとどんなものなのかを紹介している。
ランダムに取り上げているのではなく、ポイントを抑えて、分類して、イメージしやすいようになっている。
この人は教えるのが上手だ。
安心して読み進めることができる。

2023年4月9日 (日)

雨、晴れ

初心者によるC++入門 #6、#7 をアップした

#6では、テキストエディタの紹介。
Geanyを使いたかったのだけど、Vistaでは起動できないので諦めた。
Notepad++もだめだった。
Programmer's Notepadが使えそうなのでこれにした。
外部コマンドにGCCやMakeを登録しおけば、エディタ内でコンパイルや実行が可能で、ビルドを統合できる。
簡単に設定できて、使い方も簡単。
結果的に良いところに辿り着いたかもしれない。

#7では、C++について喋ってみた。
もっと本音を喋っても良かったかもしれない。
無難な内容になってしまった。

Amazonで買い物

  • A Tour of C++ 3rd edition
  • Programming Algorithms in Lisp

C++は、入門動画を作ることになったので、どういう進め方にするか、参考にならないかと思って買うことにした。
まだ第2版を読んでから、そんなに日がたっていない気がするのだが、ちょっとのんびりしすぎていただろうか。

Lispのは、まったく予定になかったのだけど、比較的安かったのと、興味深いタイトルだったのでつい手を出してしまった。
Apressのだけど、この出版社もPacktのようにサブスクリプションがあるのだろうか。

今日の読書

  • 詳解UNIXプログラミング 第3版 1章
  • Test-Drie Development with C++ 6章

UNIXは、最初から読み直し。
以前、2章まで読み終えていたようだ。
ほとんど記憶にない。
やたら詳細で難解だった記憶がうっすらとある。
1章を読んだ感じ、そんなんでもない。
しかし、この章はこれから先の予備知識を共有しておくための、導入編で、ここで躓くようでは読み進めるのは無理だろう。
一応パスしたようで良かった。

2023年4月8日 (土)


C++入門動画をアップした

一気に5回分をアップした。
1回あたりに詰め込みすぎないようにして細切れにしていったら5回分にもなってしまった。
かなり丁寧にやったつもりだ。
MinGW-w64を使う入門動画は結構レアではないかと思う。
まだまだこれからだが、Unix偏重にならないようには気をつける。
w64devkitを使うとそれができてしまう。
しかし、便利なツールは紹介したい。
少なくともmakeやgdbは取り入れたい。
言語を覚えるだけでなく、現実のプログラミングを反映させたい。

2023年4月7日 (金)


久々にまともにWindowsを触る

C++入門の動画を作ってみたくなって、プログラミング環境を整える。
10年以上ぶりくらいだ。
Windowsが入っているノートPCが1台あって、Windows 10だ。
しかし、あまりに処理が遅すぎて、まともに使えたものではない。
OBS Studioなどとても無理だろう。

仕方がないので、最後に購入したWindowsであるVistaを仮想マシンで動かして、それでやることにした。
最後に購入したVisual Studioは2010で、今更これを入門として使うのは不誠実だろう。
入門であるなら、むしろ逆に最新のものを使うべきだ。
もともとVisual Studioを使いたいとは思っていない。
そこで、MinGW-w64を使うことにした。
特殊な入門として価値が出るかもしれない。

仮想マシンにVistaをインストールしたが、自動ライセンス認証で失敗する。
電話で認証をすることになった。
30桁くらいの数字を電話から聞きながら入力するというものだった。
初めてやったけど、なかなかおもしろい体験だった。
二度とやりたいとは思わない。

ノートPCでraylibが動作しない。
GLFWがエラーを吐き出す。
エラーメッセージで検索すると、Minecraftで多発しているようだ。
どうも、raylibが要求するOpenGLが3.3で、そのノートPCはIntel HD3000で、対応しているのが3.1までであることが原因のように思われる。
raylibをビルドするときに、使用するGLのバージョンを指定できる。
ここを1.1としても、やはりだめだ。
まだなにか見落としているだろうか。
SFMLは、ソースからビルドすれば問題なく動作した。
SDLもビルドは通った。

C++入門は、最終目標をテトリスの完成とした。
仮想マシンでは、ハードウェアによるレンダリングが期待できない。
実際、SFMLはまともに、期待通り動作しない。
SDLでレンダラにソフトウェアレンダラを指定すると、一応は動作するようだ。
確実なのはWin32 APIとGDIを使ったものにすることだろう。
そんなのは時代おくれだし、C++と相性も良くない。
FLTKかwxWidgetsあたりを使うのが無難ではなかろうか。

2023年4月6日 (木)

曇り

いろんなアプリを試す

MXでIDEとかを試している。
主にCode::BlocksとCodeLiteを試した。
もっと色々試すつもりが躊躇してしまった。

メイン環境のUbuntuでは、KDevelopを試すが、微妙な点がいくつかある。
まず、プロジェクトビューでアイコンが表示されないため、すこぶる見づらい。
あと、CMakeのQtプロジェクトで、自動生成されるuiファイルが認識されない。
ビルドは通るが、フライチェックでエラーになるのと、補完が聞かないのが残念だ。
これはKDevelopだけの問題ではない。
Emacsを使っても同じ問題が起きるだろう。
Qt Creatorは、ビルドディレクトリに.qtというディレクトリを作り、その中にcompile_commands.jsonを生成する。
その中には、自動生成するuiのヘッダのパスも含まれていて、正しく認識する。
この動作を真似できないだろうか。
できなければ、Qtアプリケーションの開発は実質Qt Creator以外ではまともにできないことになる。
そんなことないはずなので、なんとか解決策を見つけたい。

やはり動画が再生されない

Pythonでテトリスの動画をアップしたけど、再生回数0のままだ。
0回というのは、内容以前の問題になる。
何が悪いのだろう。

2023年4月5日 (水)

晴れ

今日の読書

  • プログラミングElixir 第2版 19〜25章、付録 (完了)

1周目完了。
ちょっと思っていたのと違っていた。
パート2から集中力が途切れてきて、練習問題もスキップして、手を動かさず読んでいるだけになった。
ほとんど身についていない。
1周目だからこんなものだろう。
今の所、採用したいとは思っていない。
もし、採用するなら再読すれば良い。

2023年4月4日 (火)

晴れ

テトリスの動画をアップした

1週間くらい前にアップした、CrystalでPongを1時間で作る動画は再生回数0回のまま。
逆にすごいんじゃないかと思えるくらい再生されない。
今回はPythonとCocos2dで作った。
3時間30分くらい。
少しは再生されると嬉しいが、どうだろう。

2023年4月3日 (月)

晴れ

Physically Base Rendering 4th が届いた

4月29日お届けとなっていたけど、今日届いた。
状態は、微妙だけど許容範囲なので良しとしよう。
改訂のサイクルが早めなので、次のが出る前に今度こそ読もう。

今日の読書

  • プログラミングElixir 第2版 16章
  • プログラミングElixir 第2版 17章
  • プログラミングElixir 第2版 18章

並行プログラミングのパートなのだけど、なんかやりたいのとちょっと違うような気がしている。
あまり入れ込まずに読み終えることを優先しよう。

2023年4月2日 (日)

晴れ

テトリスを作った

PythonとCocos2dで作った。
とりあえずCocos2dはこれで止めておいて、いろんな環境でやってみる。
その後に、エフェクトやサウンドや、完全なゲームのフローを作っていく。
一人テトリス祭りを始める。

2023年4月1日 (土)

晴れ

今日の読書

  • プログラミングElixir 第2版 14章
  • プログラミングElixir 第2版 15章

15章から並行プログラミングのパートに突入。
読んでるだけなので、全く身についていないのは間違いない。
関数型言語は、HaskellかClojureの方をメインにしたいと思っている。
今の所、Elixirをメインに使っていきたいとは思っていない。
しかし、並行プログラミングの基礎を学ぶには優れた環境だ。
きっちりやった方がいいかもしれない。
とりあえず1周目は今のままあまり入れ込まずに進めていくことにしておこう。

Created: 2024-02-07 水 06:06

Emacs 29.1 (Org mode 9.6.6)

Validate