C++でゲームボーイエミュレータを自作しています

今月から、C++とOpenSiv3Dでゲームボーイのエミュレータを作り始めてます。

エミュレータといえば、学生時代に友人がファミコンのエミュレータを自作していて、マッパーがどうのこうの言ってたのを思い出すのですが。そのころ自分はろくにプログラミングができなかったので、いったいどうやればエミュレータというものが作れるのか、資料を見せてもらっても何もイメージできなかったのを覚えています。

エミュレータ開発に少し興味はあったものの、それ以降はまったく情報収集せず時は過ぎ……。

そして最近になって、ゲームボーイエミュレータを自作している人の記事を見かけたのがきっかけになり、なんとなく自分でも作れるんじゃないかと思い始めて情報収集を始めました。

続きを読む →

Nuxt+ESLint+PrettierとVSCodeでいい感じにやりたい2021

以前書いた記事の内容が古くなっていたため、今のやり方をメモしておこうと思い、記事にしました。

前提

WindowsでNuxtによるWebアプリ開発をする。NodeはローカルにインストールしたくないのでDockerを使う。エディタとしてVSCodeを使い、コード整形や構文チェックもしたい。

続きを読む →

Apacheが起動しないときに確かめること

すこしハマりかけたのでメモメモ。

Apache を更新したあと起動しなくて、ログを見ると

...
(98)Address already in use: AH00072: make_sock: could not bind ...:443
...

となっていた場合。

/etc/httpd/conf/etc/httpd/conf.d のそれぞれで grep 443 * とやってみて、Listen 443 が複数個所に書かれていないか確かめる。

Nuxt.jsアプリをEdgeHTMLで動作確認しようとしてはまった話

お仕事で使うHTMLベースのアプリを趣味で(?)Nuxtで作ってたんですけど。私はChromeで動けばええやろという感じでいたんですが、Edge(レガシー)で動かんぞみたいな報告を度々されるんですね。しかし開発環境はすでに新Edgeになってしまっていて、動作確認できない。

というわけでMicrosoftのサイトにある動作確認用の仮想マシンを使うことに。今回はHyper-V版をダウンロード。

さて、仮想マシンを起動して、EdgeのアドレスバーにIPアドレス:ポートを入力してもなぜか繋がらない。これで1時間ほど嵌ってました。結局原因は、デフォルトではnuxtがローカルホストからの接続しか受け付けないようになっているからで、ちゃんとドキュメントに書いてあるんですね。ちゃんとドキュメント読もう。それかExpressとか他のサーバを立ち上げて接続確認していればもっと早く気付けたかもしれない……。しょうもないことで時間を浪費してしまったので反省の意味を込めて文章書いてます。

Hyper-Vの仮想ネットワークについてよくわかっていなかったこともあり、内部用の仮想スイッチやNICを追加したりしてたんですけど全部無駄で、標準の設定で大丈夫でした。

Windows エクスプローラのアドレスバーから Windows Terminal を起動したい

エクスプローラでフォルダを開いている状態で、アドレスバーに cmd と打ってエンターすると、そのフォルダがカレントフォルダになってコマンドプロンプトが開きます。これ便利でよく使ってます。

Windows Terminal でも同じノリでやりたいんですけど、アドレスバーに wt と打ってもカレントフォルダは変わらないです。

そこで、とりあえずこの一行を wtc.bat とかなんか適当な名前で保存します。

start wt -d .

で、パスを通しておけばいいです。

ですがこれだと毎回新規ウィンドウが開いちゃうので、タブの統合機能が待ち望まれるところです。一応 issue に上がっているみたいですが。Add support for tab tearoff and tab merge · Issue #1256 · microsoft/terminal

VSCode(win)でコンテナ内のNuxt開発環境のESLintでコード整形

※2021.8.3追記:本ページの内容は若干古くなってしまったので、別の記事に書き直しました。

とりあえずできたのでメモメモ。Remote Development (VSCode Remote – Containers) を使います。

続きを読む →

Gitのorphanブランチって初めて知りました

GitHub で README.md に画像貼りたいとき、いくつかやり方があります。(1) 外部サービスを使う、(2) GitHub の Wiki とか Issues にアップロードする、 (3) リポジトリ内で管理する・・・などなど。

個人的には、ドキュメントとかそれ用の画像もリポジトリに含めて管理したいので (3) かなと。それで master ブランチに全部突っ込んじゃっても別にいいんですけど、orphanブランチ(これまでの履歴を引き継がないブランチ)を作ってそこでドキュメント用の画像とかの資料だけ管理していくというやり方を知りました。全然知りませんでした。このやり方の方がすっきりしていて良いので使っていこうと思います。

続きを読む →