大雪
大阪では、かなり珍しい、朝から大雪でした。
いや、雪国からしたら、それぐらい普通や!と怒られそうですが、久しぶりに、Σ(゚д゚lll)ガーン と言う感じでしたね。汗
交換しておいてよかったです。もし、夏タイヤだったら、「いけません」と言っていたと思いますが。。汗
途中、道の選択を間違って、道が車で詰まっていたのは誤算でした。
当然、迂回したのですが、遅れてしまいました。汗
冬タイヤしていることもあり、そこまで怖くなかったです。ドライと勘違いするほどでしたが、確かに、道は銀色に輝いていますし、コンビニの中で、一瞬空回りしたのと、停止しながら、ハンドルを切ると、やけに軽かったのと、降りた時の踏み締めた感覚で、雪を実感しました。
これが踏み固められて、夜まで残ったり、二日目に持ち越して、凍結??
なんてなってしまうと、どうなるかは、不明ですが。。
がーん
大阪で積もるのは1シーズン1ー2日あるか?と言う感じで、多くても4日ぐらいだと思われます。そして、翌日も道路に雪があることはあまりありません。冬の装備を、用意している率はかなり低いと思います。。
教訓としては、遠回りになろうが、道の選定は慎重にする。11月終わりの方になったら、冬タイヤに交換する。冬タイヤでも過信せずに、車間距離をあけてゆっくり走る。などでしょうか。。
ぶっちゃけ、冬は来てほしくないですが。。。汗
本当に気をつけたいです。。ただ、こっちが対策していても、周りがしているとは限らないので、基本的に、周りの車には近寄らないことが鉄則ですね。。。
Rust で、SDL2 使いたい
sdl2_image を使う場合、下記のように記述したら、うまくいきました。
main.rs
Cargo.toml
[dependencies]
sdl2 = "0.9"
sdl2_image = "0.3"
ソースリスト整形ソフト
ソースリスト整形ソフトで、iP6 Plus とか整形したいです。有名なのは、Clang-Format というのらしいです。どのフォーマットにするのがいいのでしょうか?
それにしても、オプションが多すぎます。。
とりあえず、下記を実現してほしいです。
これを、
if( hoge == 123)
{
printf("hogehoge");
}
これにしてほしい
if( hoge == 123) {
printf("hogehoge");
}
他にも、コメント書いてないのを書くようにするとかもありますが。。
ただ、clang-format は、Macには入っているのを確認しましたが、Windowsは入ってませんでした。(MSYS2 + mingw には入ってませんでした。)
→llvm を入れる必要性があるそうです
Visual Studioのコード整形にClang Formatを適用してみた | ぺんぎんや
*****************************************************************
追記1
Windows のMsys2 で使う場合は、
% pacman -S mingw-w64-x86_64-clang
で入れるようです。
うーん。
Windows (Msys2)でclang-formatを使う | うどんコード
*****************************************************************
追記2
どうしても、下記のよう(関数の後は改行して、制御ぶんの後は、改行入れない)にならなかったのですが、
int func1(void)
{
func2();
if( true) {
....
}
}
下記のページを見てようやくわかりました。
"BreakBeforeBraces: Custom" が必要なようです。
# { } の位置 # "BreakBeforeBraces: Custom" の場合に有効となる # true なら独立行にする BraceWrapping: AfterControlStatement: false # 制御文の後 AfterEnum: true # enumの後 (単一行にしないため) AfterFunction: true # 関数の後 AfterStruct: true # structの後 (単一行にしないため) AfterUnion: true # unionの後 (単一行にしないため) AfterExternBlock: false # externの後 BeforeCatch: false # catchの前 BeforeElse: false # elseの前 # { } の位置をカスタム設定する BreakBeforeBraces: Custom
Visual Studio Code で clang-format を使用する - suimin-busoku
とはいえ、ある程度形ができてしまっている、某 iP6 Plus に適用するのは問題がありますね。。もしやるなら、いじり出した2002年頃、最初にやるべきでした。。
二つ問題があります。一つは、バグが出た場合、普通はいじったところを見るわけですが、今から整形ソフトを全部適用すると、どこが原因か分かりにくくなる。。。
それから、clang-format だけではできないことがあって、たとえば、下記のformat 変更をしてほしいのですが、
(こうなっているのを)
if( true) // comments
{
.....
}
(こういうのにしてほしい)
if( true) { // comments
.....
}
clang-format では、語句の入れ替えとかはしてくれないので、変化なしになります。
つまり、上記の変更をしたい場合は、手作業で全部書き換えるとかになります。。。汗
一部は変更したのですが、(buffer.c とか)基本的には、今後の課題ということになりますね。。。汗 今度から気をつけましょうということでしょうか。。。
iP6 Plus
終了したいと思って、幾星霜
「オープンソース」だと思っていたが、ソースリストの状態がオープンなだけで、(自由ソフトウエアとしての)オープンソースではなかったでござる。。で、やる気が減退。。汗
「無料だといいけど、有料だと契約してね。」という、大昔だとよくあるパターンらしいが、そういうので縛られているらしい。。
何か面白いのを追加しても、オープンソースじゃないとか。。
クローズどソースにすればよかった。。今からでも、クローズどにするとか。。?
(でもここだけの話、エミュレータでそういう縛りをするのって、どうなんだろうか?事実上の有償使用禁止。某帝国が黙っているとは思えないが。。。 ((((;゚Д゚))))ガクガクブルブル)
最初は、ソースリストの先頭に書いてある文章(もちろん全部英語)が目に入っていたが、「無料」ならいいんでしょ? 有料で使わないから大丈夫ぐらいにしか思ってなかったが。。汗
それに、みんな、PC6001V か、PC6001VXか、PC6001VWを使うでしょう?と。。
テープの読み込みに失敗する?あれは、p6top6t を使わないと、いけないが。。。コツがいるので、大変なのはわかる。。。
が、Un*x系だと、ソースリストで互換性を維持しているので、ソースリストがないと困るんだ。
Windows系は、20年前のバイナリーでも、涼しい顔をして走ったりするが、あれは変態的だと思う。。滝汗 互換性をなかなか切れないので、変な仕様が残っていたりするが。。
(Windowsだと、マウスのホイールスクロールが、ガタッガタッと、行単位でしかスクロールしないとか、ドライブ指定(c:、 d:)、オーディオが旧態依然すぎるとか。。汗)
Macなんて、すぐに仕様が変わるし、Xcode変わりまくるし、CPUのアーキテクチャーが変わるし、なんなら、メインのプログラミング言語ごと変わったりする。。数年前のiOS 簡単にできます本が、ゴミになったりする。。(滝汗)
だから、ソースリストは絶対に必要だと思う。
でも、Appleの場合は、公証というので、どこそこのだれべえが作りました。という署名をして、Appleに提出しないと、いけない。まだ、公証しなくても、Macだと、実行する穴は開いてはいるが。。。いつまで開いているんだろう? 謎
エミュレータが、iPhone やiPad で動かないの?ということだけど、普通に、Objective-Cや、Swiftで組めば、動くのは動くが、手元では、短期間しか動かせない。AppStoreに出したいが、おそらく、審査で落とされるだろう。。 なので、個人的には、Emscripten などで、Web化して、実行するという、パターンを考えてしまう。
ただし、Web化するときに、不特定多数の人に公開する場合、実機のROMファイルを入れるのはまずくて、Webなので、ダウンロードできてしまう? 互換ROMを使わせてもらうのが安全か?
というわけで、ソースリストがないと、未来の人は困ってしまう。。。
ただ、すごく未来の人が、1980年台のパソコンのエミュレータで遊ぶのか?というと、かなり謎な気がするけど。。。
iP6 Plus は、変な機能を入れたかった。。が、
自分で好き勝手いじれるエミュレータはすごくいい。
C言語なので、すごくいい。どこからでもその関数を呼べる。。
C++だと、オブジェクトを渡しておかないと、呼べない。。。
ちなみに、iP6 Plus をC++化するのは、骨が折れるというか、それにコミットしても、オープンソースじゃないしな。。。汗
クローズドにしたら、別に自分しか見ないので、動けばいいということになる。汗
骨の髄までC言語なので、多分無理で、処理とデータを同じソースに固めて記述して、どうしても、ソースを跨らないといけないところだけ、ゲッター、セッターなどで受け渡しして、extern を減らす方向性とか??
そこまでやるなら、作り直すとか、もっとクリエティブなことに使った方がいいかも。。
過去記事に追記する方法
記事を書くを押す
左上の、< 文字を押す
最近書いた記事が、表示されるので、その下の、目的の記事タイトルを押す
これで、過去記事が編集可能になるようです。汗
いつも、悩むので、メモ
って、ここにメモしてもしょうがないような。。。汗
PC6001V をWindows でビルドしようぜ (失敗の巻)(追記あり)
あまりいらっしゃらないと思いますが、一応メモっておきます。
下記を参考にして、MSYS2 と、mingw を入れます。
下記を参考にして、x86_64 のミラーを Jaist に変えます。
変えなくてもいけるかもしれませんが、私の環境では、ffmpeg を入れるときに、通信が遅すぎるなどの理由で、途中で止まってしまったので、変えた方が良さそうです。
上記のURLを参考にしながら、c:¥msys64¥etc¥pacman.d¥mirrorlist.mingw64 ファイルの先頭に、下記の文言を挿入します。(vim からは挿入できなかったので、Windowsのテキストエディタで変更)
Server = https://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
先頭から順番に使われるためらしいです。
必要なライブラリを入れます。
$ pacman -S mingw-w64-x86_64-ffmpeg
$ pacman -S mingw-w64-x86_64-libpng
$ pacman -S mingw-w64-x86_64-SDL2
PC6001V のソースリストを落としてきて、適当なディレクトリに展開します。
Makefile のあるところで、make します。
。。。が、なぜか、リンクエラーになりますね。。(´・ω・`) ショボーン
-lrav1e とか、-ld1 などが見つからないそうです。。
大体は、あっていると思うのですが。。
なぜ?
ちなみに、1年前も、同じようなことをやっていたようですが。。この時も同じだったのかな?(´・ω・`)
追記
-lrav1e は、スタティックリンク用の、librav1e.a というファイルを探しているようです(後ろから二文字目は、数字の1)が、ffmpeg を入れても、入ってくれません。ダイナミックリンク用の、librav1e.dll.a ならあるので、とりあえず、リンカーに渡しているオプションから、-static-libgcc -static-libstdc++ --static を削除します。
あと、-ldl というのが何回も出てきますが、なくても通るようなので、これも削除すれば、通るように成ります。
私は、make -n >ld.sh とやって、ld.sh を編集しました。make でリンクに失敗しますが、そのあと、sh ld.sh とやると通るようになります。
ただし、制限があります。起動するときは、Windows のエクスプローラーから、起動しようとすると、dll などが見つかりませんエラーになります。mingw64 のターミナルから、./PC6001V とする必要性があります。
または、必要になるDLLファイルを、実行ファイルと同じところに、全部コピーしておくかですが、それも面倒ですね。
おそらく、ゆみたろさんは、なんらかの方法で、librav1e.a ファイルを作成して、リンクしているのか。。。?わかりませんが、ようやく、とりあえずの回避策は、見つけられました。。
ブランチを切る
ブランチを切って、いじって、マージするのは、下記の記事がすごくわかりやすかったです。
なかなか、覚えられないが。。
新しいブランチを作る
$ git checkout -b feature-create-api
いじって、リモートに反映
git add .
git commit -am "commit message!"
git push origin feature-create-api
(マージする前に)マージ先のブランチに切り替え
git checkout develop
マージするgit merge --no-ff feature-create-api