星田オステオパシー

プログラミング学習日記 2022/10/29〜

2022/11/15 
話題1 Cametanさん
 うおーっ!これはスゲェ!ありがとうございます(^o^)
 何が凄いって・・これ、MP3が再生できるということはMP4も出来ますよね?ということは・・ムービーが再生できる!戦闘時も0.5秒ほどのムービーを用意して再生するようにするとしたら・・一気に迫力アップですよ!

 依存関係についてですが・・例えば誰か知人にプレイさせるとして、その人がWindowsだったりでプレイヤーに対応してない場合には「例外処理」でプレイヤーが必要な部分を飛ばす関数を作ってしまえば依存度を下げることが出来そうですよね?これは楽しみすぎる!何でも書いてみるもんだなぁ・・


話題2 Scratch関係
 毎回、始める前は「ダルいなぁ」とか思うんだけど一度触り始めると結局楽しんでしまうという不思議な魅力のScratch。ブロックの入れ替えが面倒、コードが長いと見通しと操作性が強烈に悪い(縦長モニターだと楽かも?)・・ってのが嫌なところかなあ。

 昨夜でいよいよ「反射衛星砲」は完成の目処が立ったので次に何を作るか・・って感じかな。一応「万引少年ゲーム」か「美味しんぼ版ハンバーガーショップ」あたりかな・・とは思ってます。

 お世話になってるお宅のお子さんが小6と小2なんだけど「なんかこういうゲーム作りたいっての無い?」とインタビューしたところ
 小6「あ〜・・Scratchか〜 もう飽きたわ〜」
 小2「飽きた飽きた」

 とのこと、ガーン!どうやら学校の小6は学校の授業で使ってるらしい。小2はWEBで公開されてるゲームをプレイした感想らしい。
 うぬぬ・・小6はどんなゲームを作って飽きたとか言ってるんだ?小2は自分で作ってないだろう?

 言い返したかったけど僕のも完成してなかったし・・小6、すごいの作ってたら笑うけど。



2022/11/14 プログラミングの基礎の続き

 最短を分離の改造版。リストでひとまとめにして受け取るのではなくて、引数を2つにしてfirst restに分けて受け取るようにする(ダイクストラメイン関数ではmatchで分けてるので)。matchの復習も兼ねて書いてみる


 FOLD版も。最初エラーで悩んだけどfirstのekiをリストにしないといけなかったか!これはしっかり理解しておかないと・・

 同じ方法でminimumの書き直し演習。match-lambda*もようやく理解したので比較的すんなり。個人的に気をつけるのは返り値の書式かな・・これちゃんとやっとかないとエラーの時にmatchのパターンが悪いのか値が悪いのかでエラい苦労するからなぁ

 18章突入、どんどん行こう。オプション型ってのが出てくるんで面白そうなのでレコード型で作ってみる。なるほど、型で返すようにすればmatchで判定することが出来るわけか・・(今更w)

 対象が無かったらNone、あったらSome(n)で返す型を作って0円なのか売り切れなのかのチェックが可能に。八百屋リスト内に特定のアイテムが売られていればSome(値段)で返すPriceを作って・・・

 Priceを使って買い物リストと八百屋リストを照合、買い物リスト中で実際に売られているものを買い集めた場合の合計金額を出すtotal_priceを書く。
 おおっ!?matchの対象として関数からの返り値を指定できるのか・・いや、まあ考えたら「そりゃそう」なんですけど、改めてこの形で見ると感動する。なるほどぉ・・そしてNoneとSomeで分けてリストとリストのすり合わせ?が出来る・・二重ループにするしか思いつかなかったけど、こういう書き方が出来るとは・・。ちょっと今回は感動した!面白いのう(^o^)


2022/11/13
話題1 Racketでゲーム作り関連

 うーん、データ作りがダルい!ゲーム会社でデータ作る人って大変だなぁ・・これを1日中やるんでしょ?知らんけど・・と。

 後はCametanさん情報でやっぱりMP3などの音声再生は出来ないと判明。なんか意外な感じだなぁ・・GUIのBig-bangだったら行けるのかな?とか思ってたんですけど。島本須美ボイスとか家弓家正ボイスとか入れまくってやろうと思ってたんですがw


話題2 Spacemacs


 以前どうしてもまともに入れられなかったんで諦めてたんですけど、今回調べてみるとまさしくMX-Linux21で入れてる方が解説ページを作ってて、そのとおりにやったらアッサリ成功しましたやったぜ!いや、デザインが良いよデザインが。
 昨夜は入れただけで満足してしまったので、今度はちょっとチュートリアルでもやって、Cametanさんの過去記事を読み返していじってみようと思います(^o^)


2022/11/12 C言語をちょっと触ってみる
 Bulid your own Lispのページを見ながらPaizaで打ってみる。おっ、表示できた!コンパイルしなくて良いから楽で良いなあ・・ま、コンパイルした事なんて無いんですけどね。

 が、演習をしようと思ったらいきなり詰まる。
 これって int main( の中に入れたら良いのか?とか基本が分かってないもんで・・

 こういう演習も面白そうなんだけどうーん・・

 そんな中、「新明解C言語」が届いたので、全部の例題で丁寧にincludeから書かれているこっちでやろか、と。


2022/11/10
話題1 プログラミングの基礎
 ダイクストラ検索の赤黒木版を作ってエラーが出ないようになったんですが・・またしてもタイムアウト。うーん・・Paizaでやってる限りどこまでのリソース使用(←ぼんやりとしか理解してない概念)が許されてるのか分からないので、もうRacketでやるわ!という決意をした。どっちみち復習でやろうと思ってたし。
 もしくはGaucheに組み込みで
 ってのがあるようなので(赤黒もあるけどtree-mapが推奨とあった)試してみてもいいかな・・。とりあえず教科書を進めて次は例外処理をやるか・・

話題2 細切れ時間ではQuoraを読んでます
 なるほど・・実は「写経(ただ打ち込むだけ)」って意味無いだろとは思ってましたけど、修正後をイメージして検証するってまでセットでやるのが正しいプログラミングの写経って事かな(文字通りノートに書き写すとか・・はイメージしてなかったなぁw)。
 自分でゲームを作ろうとか思うと必然的にアレンジと予想と検証が行われるので良いんすかね

 C言語で関数型プログラミングが出来るか?という話題の解答。なるほど・・え?じゃあ高階関数とかどうすんの?これは興味が湧いてまいりました。


話題3 Cametanさん
 今更ですけど「プログラミングは独学」との事。えっ・・?多大な労力と時間をかけて学ばれたことを惜しげもなく教えてくださってるんですね・・ありがたい事ですm(_ _)m

 Racket開発陣とのエラー報告とか要望とかありがとうございます(と言うのは自意識過剰かも知れませんが)。
 要望か〜・・CLIで画像が使えるってのが楽しいので音声ファイルも使えたら更に楽しそうですよねぇ。ドキュメントを見るとsoundとか名前のついたモジュールとか出てくるんですけど、ネットでの質問&解答を見てるとMP3などの再生は(簡単には)出来ないっぽいような事も書かれてるような・・画像と同じノリで音声もチョイチョイっとお手軽に挿入できたら良いなぁ!とは思いますねぇ



2022/11/08
話題1 antiX22の導入
 どうせ導入するなら色々と実験してみようということで全種DL。一番サイズの小さい32BitのCoreからスタート。あ、CoreってCLIなのか・・で、次はBase。これはGUIで欲しい機能はちゃんと揃っていたのでBaseを使う。次に32Bitと64Bitだけど・・

 
 LIVE-CDの起動時間はほぼ一緒(60秒くらい)。
 ところが使用メモリは・・何故か差がある。32は110Mで64は150Mくらいなのだ。うーん・・これ悩むなぁ・・PCは4GB搭載なんだけ、32版だとどうも3GBしか認識できてない一方64版だと4GBフルで認識できている(普通32ビット版って4GBまで認識できると聞いたのだが?)。結局、バイト先のパソコンはメモリが2GBと3GBしかないし、ちょっとでも軽く動きそうな32版をチョイス。例によってUSBにインストールしました。結果・・
 ・Racketは7.9に上がった
 ・心配していた起動時間はAntix19とほぼ一緒で40秒くらい
 ・日本語設定などは面倒だったが成功(ここを参考にした
 というわけで一件落着!いや〜こんなことならとっとと21にしておけば良かったな。

話題2 Cametanさん
 ループ構文の話がむちゃくちゃ面白かった!いや〜・・こういう探求モノ好きなんですよねぇ・・(^o^)

 そして
 例のMember問題、述語じゃないのは進化の結果だったのか・・・!面白いなぁ。

話題3 Racketの画像データ取り扱い問題
 Cametanさんに再びアドバイスいただいたので、リンクを張る方式を試してみる事に。
 うわー!最初にアドバイスいただいた時にヤッてりゃ良かった!すごく分かりやすい書き方で済むんですねぇ・・


 こんなにも見易くなりました(もちろんモジュール化出来る)


 ただ、分割されてるページをリストとして読み込む方法は(色々と試したんですけど)無理っぽかったので画像ソフトを使って合成して1枚にする必要がある模様。ま、言うてもそんなに手間でも無いし()も消えてスッキリ、これで行かせていただきます。 

話題4 Scratch学習
 ハンターハンター読んでてサボってしまいました(^_^;) 正直な話、なんかコード打ちこむプログラミングほど燃えないんですよねぇ・・・


2022/11/07
話題1 Racket関係の調査
 自宅の最新版Racketでは画像を使ったファイルをモジュールとしてRequire出来るか?の調査。結果!出来ません!となると・・これはデータファイルの構造をちょっと変えないといけないな。
 実験を終えた後に思いついたのが、今の構造体に直接画像を持たせる方式をやめて、画像のみをリストにして本体に持って来てページ数とリストのN番目をリンクさせる方式。これならページ構造体の見通しが良くなり別モジュールに出来るし、画像のみをリストに出来るなら画像が「超縦長」という性質なのでもっと詰めて配置することが出来る。ただ、mapが効かなかった事を考えるとlist-refで取り出せるかが不明。明日試す!

話題2 Antix関係の調査
 USB起動のAntixにRacket最新版が入れられたら言うこと無しなのでネット見ながら実践。SH形式で配布されているファイルをSUDO権限で何種類かの方法で行う。どれもアンパックまでは問題なく進むが最終的に失敗メッセージが。どうも・・推測だけどAntix19のファイルシステム?みたいなのが対応してないっぽいエラー(formatなんとかエラー)。普通にAntixでインストールすると7.2が入るのもその対策なのかも(MXだと7.9が入る)。
 とか思ってたら・・最新のAntix22がリリースされたとのニュースを発見。10月20日の事らしい。これはお導きかも知れないので明日試す!

話題3 Bulid your own Lispをちょっとだけ読む
 C言語の学習を兼ねながらLispの仕組みが分かってついでに英語力のアップにもなるかも知れない!という百目鬼幻也斎もニッコリの一石三鳥プランじゃないか!ということで読むことにしました。

 えっ!?まさかのScratchの文字が。Scratchのチュートリアルって「たったこんだけかよ」って感じだったけどなぁ・・
 KindleUnlimitedで書籍として出てるんですけど、ネットだとザックりであればページまるごと翻訳で大意を掴めますもんねぇ


 翻訳と言えばコード部分も翻訳されてしまうかな?と心配してたんですけど、うまく出来ていてそこはちゃんと独立してるんですよねぇ・・ありがたい!

 そして環境としては・・Paizaだとコンパイルしないで良いんで楽チンで良いなぁ。とりあえずC言語はBYOLやって行きますか!Racketのドキュメントも読みたいし・・これは長生きせねば


 これも気になる記述ですよね。Cametanさんが何度か「自分版LISP」について言及されてましたけど、そっちへの道筋をほのめかして下さってたのはこういう事だったのか?とか。


 

2022/11/06
話題1 Racketでのゲームブックゲームプログラミングを楽しむ。いくつか問題点が出る。
 ・画像を大量に使うコードのせいかバイト先のゾンビパソコンでは無理
 ・USBで寄生Antixを使おうとするとも入ってるRacketが7.2で無理

話題2 実はバイトに行くまでにも図書館でプログラミングの基礎
 相変わらずダイクストラの木版への変更をSchemeに移植作業。

2022/11/05
 プログラミングの基礎でダイクストラの「木」版をやってました。普通にOcaml版をSchemeに直していくってだけの作業だったので・・

2022/11/04 Cametanさん
・ドラクエ風文字表示関連

 うおお!コレです、コレ!なんとなくBig-bangの方だったら出来そうかな?という感じで放置だったんですけどCLIでも出来るとは!これで随分見栄えが変わると思います、ありがとうございます!
 しかし、「まぁ無理かな?」と思うようなことでもちゃんと用意されてるんですねぇ・・・いよいよ本当にドキュメントを読んでみることにしますm(_ _)m

・Git関連
 動作確認のためにちょっと触ってみました。フォルダ内の何も無いところを右クリックで別メニューが出るとはちょっと意表を突かれましたけど、ブランチ作成と切り替えを体験。えっ!?フォルダの対象ファイルが本当にまるごと変わった(そりゃそうなんですが)。なんか不思議な感じだ・・
 非常に便利そうだけど、水曜日と日曜日のRacketはバイト先のLinuxPCでやってるんでサーバーへのプッシュはいらないけど、USBメモリに本体を入れて管理できるとこの上なく便利なんだが!

 と、思ったら可能っぽい。これは是非活用しよう!



2022/11/03
話題1 プログラミングの基礎の続き

 駅間ツリーに複数の駅間リストを受け取って新たなツリーを作成するというもの。ああっ!なるほど、こういう時にFOLDって使うのか!なんかすごくしっくり来た!


 ラベル版も。ラベル版は結果が見て分かる形で出力されるので良いなぁ

 get_ekikan_kyori関数を木方式で書き直すというもの。とりあえず流れの確認は移植して動いてからだな!ということで木版を移植途中です。木構造の出力はラベル版が良いけど入力はレコード版が楽な印象

話題2 C言語
 例によってCametanさん情報。えっ?そうなんですね・・うーん、こっちは基本が知りたいので基本を教えてくれる本が良いなぁ。

 じゃあPaizaは何を使ってるのか?って事なんで調べるとC17ってバージョンらしい。

 Wikipediaによるとこの前がC11、その前がC99というらしい。

 これらをキーワードにしてアマゾンで検索しても規格対応とかって明示されてないんですよねぇ(僕もC言語規格に色々とあるとか知らんかったし)。
 となると、ここは英語からの翻訳、それもオライリーかな?ということで調べると牛の表紙のがあったんだけどC99で古いという意見もある模様。

とりあえず
 これを図書館で予約しておきました

 日本人作者なんですがこういう表記があったので(^_^;)
 もしくはPaizaのC言語入門が全部無料で見れるので、久々に動画で勉強ってのもありかも知れんな!とも思ってます。

話題3 Git
 Cametanさんから「個人で使うならプッシュとか不要」という事を教えていただいたので速攻でGitデスクトップを削除してTortoise入れ直しましたw


2022/11/02
話題1 Cametanさん

 うわ〜コレは大変ですね。枝分かれした先がどんどん洗練されてったら決まっても戻ってこないだろうし・・。Racketが分かれたのも「なんで」と思ってましたけど、ちょっと納得です

 

 なるほど、加えてCarで取るってのをCdrの再帰で回したら全部取り出せますしね・・。ラピュタではちょっとやってみようかなあ


 今まで一度も「一覧」を押したことが無かったので試しに押してみましたところ・・いつの間にか34個もファイルが出来てしまってました

 こちら記念すべき最古のファイルなんですが・・なんと3年前(^o^) まあでもLisp系始めるまではプログラミング学習歴に入れないことにしてるんで。
 位置で表示されるのはいわゆるmainファイルのみなんですが、一度閉じて呼び出すとちゃんとサブファイルも再現してくれるので感動。すごく便利じゃないか!C言語も最低読めるようにということなので今後もPaiza.ioのお世話になりそうです。

 後はバイト出発までタグ版を試させてもらってました

話題2 「猫でもわかるC言語プログラミング」を借りた
 ボチボチ読み始めてます




2022/11/01
話題1 Cametanさん
 うおー!これさえあれば!いや毎度毎度なんですけど・・本当に助かります。math-lambdaのところで「あ、なるほどそう言えばゴッチャになってたな」と分かったつもりだったんですが全然分かってませんでした(^_^;)

 早速まずはラベル方式を写経して動かしてみる・・・が・・あれ?Nodeの引数の数が合わないが?
 もしかしてNodeはNodeでもレコード型の内容が変わってるのか?


 変わってるやん!動かないわけだ


 という訳でRecord型だとこれで行けるかなぁ・・



 行けた!そこから間違っていたとは・・これでようやく次回からラベル方式とレコード型方式の比較学習ヤッていきます。match-lambda*関連についてはちゃんと腰を据えてやりたいので一時保留しております。

話題2 プログラミングの基礎
 コードの方はラベル方式とレコード型方式でいっぱいいっぱいだったので、気分転換に先を読み進めてみました。内容は「例外処理」と「モジュール関連」。モジュールについては・・Lisp系はメインをRacketでやりたいのでGuacheはCametanさんに教えてもらったので十分かな。例外処理はかなりネットリと説明されていて、ようやく便利さが分かった気がした。Racketで製作中のゲームブックゲーム、折角なのでどこかで一つくらいは例外処理を使ってみようかなぁ。

話題3 Paiza.io
 例によってCametanさん情報なんですけど!


 えっ!?

 全然知らんかったw 全部テキストエディタに保存して管理してました(^_^;)
 いや〜結構長いこと使ってますよ? モジュール関連も「便利だけど状態の保存が複数出来ないから別のプロジェクト作るの大変じゃないか」とか思ってました(mainにだけ書いてれば一括コピーでテキスト保存して管理できるので)。なんだPaiza.ioちゃんとしてるんじゃないか!活用させていただきます〜


2022/10/31
話題1 入門Git
 大枠は読めたので後は実際にリポジトリなるものを設定して見るか・・と開始。


 さすがにコマンドオンリーは・・・って感じだったので簡単と評判のtortoiseなるものを導入。ファイラーに統合されるので使いやすい(一度再起動しないとアイコンの表示が適用されない)。
 で、早速ヤッてみたんだけど・・プッシュで絶対にエラーが出るんですよね。エラーメッセージで調べて色々と試すけど駄目。うーん?判明、サーバーって自分で用意しないといけないのかw なんだ「ネットストレージまで無料で使わせてくれるなんてGitって太っ腹だなぁ」と思ってたんですけど、そりゃそうかw 当たり前すぎる事だからかあんまり書かれてないんですよね・・

 調べるとGit-hubで無料で使えるみたいだったので昔に作ったアカウントで入って設定。無事にプッシュもプルも出来ました!けど、毎回パスワードを要求される(厳密には二度目以降はGit-hubにアクセスするだけで良いけど)。これは実に面倒くさい。
 どうやら通信のプロトコルがHttpだと駄目だという。SSHに変更すると今後はまた別のエラー。クキぃ!と横を見ると「Git-hubデスクトップって手もあるぜ?」という表示が。ん?専用のデスクトップアプリがあんのか・・じゃあもうそっちで!結局そっちかいって感じだけど(^_^;)
 普通にブランチも使えるし、概念に慣れるまではコッチで良いか・・と。


話題2 プログラミングの基礎の続き
2022/11/01現在、Cametanさんのおかげで解決済みです(毎度お手間おかけします)が

 うーん、なんで?と煩悶しておりました


話題3 RoRをちょっと読む
 久々にお風呂に入ったので(普段はシャワーなのです)、Kindleに入れたRealm of Racketを読む。ちょうどStructを使った「Orc battle」のところが途中だったので頭から読み始めたのですが・・すごくよく分かる。なんでかって言うと、すでにStructを使いまくって「既にある程度分かってしまっている」からなんだけど。
 Struct関係で言うと継承?を全然使ってないな。今から思うとクシャナとか特殊バトル持ちに使えたかも知れないけど・・次回作のラピュタで意識してみるか。
 あとは・・リラックスしたせいかPage構造体のフラグ管理についてイメージが浮かぶ。バトルフラグとかショップフラグとか別のスロットで管理しようかと思ってたけど、イベントスロット1つでbとかsとかで場合分けすれば良いではないか。戦闘が終了した場合、Page構造体のフラグをオフにした構造体を新たに生成しないといけないか・・と思ってたけど、Master構造体で使わなくなったPphpスロットをEventスロットに改名してそこでオンオフを管理すれば手間が省けるな!とか。ふひひ、水曜日が楽しみだ。


2022/10/30
話題1 Scratchプログラミングの本をちょっと読む
 図書館に寄るついでがあったのでパソコン関係の棚を見たらあったのでつい・・。困ったらネットで調べて・・という話をしてましたけど、結果読んでます。読んで良かったですね。「新しいブロックをつくる」(局所関数を作るような感じ)とかスプライトの移動ルールにイベント連絡の受け渡しとか、知らなかったら苦労してたであろう事満載でした。公式のチュートリアルは全然駄目ですねアレ。火曜日と金曜日の宿直が楽しみだ!

話題2 プログラミングの基礎の続き
 ほぼ最後の試練?赤黒木を使った get_ekikan_kyoriを作るための関数、木に要素を追加するinsert_ekikan関連に苦戦中。Empty型はこれでオッケイか?

 それともこっちか・・Nodeの節部分の(起点駅名 (list 終点駅名 距離))の表記法かパターンがよく理解できてないのが問題だな!その上レコード型とタグ型で書き方が混ざってしまっていたのもあって・・これはもう明日の月曜日は時間があるのでイチからじっくり理解しようと言うことで。

 テスト用のデータがよく出来ていて、1つ目のテストで使った木データを次のテストに次々使うようになってるのでテストは思ったより手間では無いですねぇ!

話題3 Racketプログラミング
 いよいよアイテム関係のシステムも終わって、次回から基本のシステムを作ることになるわけですが!
 今回データを別モジュールするというのをやって書きやすさに愕然としましたね。どんだけ無駄な動きをしていたのかと(Cametanさんありがとうございます)。特に次回からのページデータは全ページに画像を挿入するってことでコードの高さ(長さじゃなくて)がとんでもない事になるはずなので、知らなかったらと思うとゾッとします(-_-;)
 そう言えば・・挿入した画像データって埋め込みを行った時点でコピーされるのか?それとも相対パスでリンクが張られてる感じになるのか・・予想ではリンクが張られる気がするので画像用フォルダを作って画像をキャプチャする作業を最初にやらないといかんなぁ。




2022/10/29
話題1 Emacsのダンジョンゲームをちょっとやってみる

 CLIスタイルの、しかもコマンド入力型のアドベンチャーゲームなんて実はやったことが無かった(ミステリーハウスとか広告で見たことはあった)のでどうなることか・・少々不安に思いながらも始めてみました。マップとか書かずに頭に思い浮かべてやってるとちょっと厳しくなりそうだな・・ってのと、コマンドの時って冠詞がいらないんだ(アメリカ人ってやたらと冠詞にうるさいイメージがあるのに)・・って所ですかね。クマの撃退方法が腐ったエサを食わせるとか笑ったけど。
 あと!古い建物の一室にコンピューターがあるんですよ!これは・・きっとEVALかなんかを使ってLispでプログラミングとか出来るんじゃないか!?と思って試しに計算させてみたけど駄目だった・・というワンシーンです、上の画像。

話題2 「入門Git」到着す
 早速読み始めてみました。リーナス・トーバルズやっぱりスゲぇんだな!ってのと、Chromebook環境だとWEBアプリケーション版みたいなのが欲しいなぁ・・とか(多分Git hubで出来るような気がするが調べてません)。

話題3 Cametanさん
 え・・・?ホンマや!今まで5回くらいは見てるけど完全に見落としてました(^_^;) いや〜自分でもびっくりしました。違いがあると思ってもう一度見ればもっと理解が深まるかも知れない、ありがとうございます!

 あと、match-lambda関連。おっしゃる通りで最初盛大にこんがらがってましたわ〜。最初は文字列内のキーワード(タグって言うんですね)で場合分けするんだ〜とか思ってたのにレコード型をやったらすっかり忘れてマゼコゼになってました。
 あと、match-lamabda形式もレコード型形式もどっちも書けるようになっておこうと思ってまして、差し当たってお手本が充実してるレコード型方式でやってるって感じです。いずれRacketでも書けるようにしたいと思ってますし〜

 で、リンク貼っていただいたPaizaのページ拝見しました。うーん、これは便利ですね。僕も今後張るようにしようかなぁ・・とか思いました。内容についてはmatchで全部書かれているのでmatch-lambdaじゃなくても良いんだ?というのがあるのでまた比較して理解したいと思うとります。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事