星田オステオパシー

プログラミング日記 2022/02/11〜

2022/03/11
 big-bangの謎引数「w」。とりあえず放置してたけどcametanさんのババ抜き2に

 wを属性リストと考えるという部分が!schemeにはないという事だけど2htdpには(少なくとも)似た物が用意されてるという事か?クッ、見回りの時間だ。

 帰ってきました(^o^)
 以前、cametanさんに教えてもらったサンプル、この数値をリストとして渡すのはよく分かるんだけど今回は
(interval lower upper)
ここにstartで初期化される数値が入って、構造体
 (struct interval(small big))
が出来、、アッ!そうか、、定義のどこかにintervalがからんで来る場合は常に書くってことか? bigger プロシージャでwをoにしても動いたのは定義内に元のintervalがあるからか、、?って事はdeail-with-guessのところは変えると?明日帰宅したら試そう




2022/03/10
 RoRを少し。

 ライブラリ(?)「2htdp」のbig-bangではキー入力を利用した操作もできるってことでマニュアルと見比べてみる(RoRの文章だけだと説明不足・・と言うかマニュアルを併読する事を前提に書かれている)。このライブラリはサンプルも豊富で分かりやすいのう

 WIDTHやら定数の設定がRORには書かれてないので適当に数値を入れたらw けどまあ動く


 ふーむ、テキストも画像として表示するんすねぇ



 Overlay、後に書かれるほど背面に描画されるということ何ですね。ところで気になるのが各プロシージャの仮引数「w」。これなんなん?と。

 こっちはUFOの時のものですが、この時も「current-state」が謎だったんですよね。どこにも定義されてないし組み込みの定数とかでも無い。

 UFOの時のbig-bangの引数として「0」が置かれていて、これが怪しい・・。初期値として渡された後は、各プロシージャの実行ごとに変数として更新され続けるって事か?

 で、今回のGUI版GuessNumberのBig-bangだけど初期値として構造体「interval」を取り込むって事か・・? 「lower」 「upper」も。が、その後にあらゆるプロシージャで「w」ってがの出てるのが分からない。Racketの関連の矢印?で見てもプロシージャ内でしか線が繋がってないし。

 試しにbiggerだけ仮引数を「o」にしてみたけど別に何事もなく動くし。うーん・・?Big-bang内で実行されるプロシージャは引数を自動で(今回は構造体から)取り入れて動くって事・・なのか?
 まあ、RoRに詳しい説明が(多分)無いので、そこんところはとりあえず飛ばして次の章に行くか・・

 ところで宿直の待機時間でようやくCametanさんのババ抜きを写経するってのを実践してみたんですけど・・結局普通に読み込んでしまった。新しい考え方とかプロシージャとかが出てくるからしょうがないと思うんだけど、ただナニも考えずに写経って無理ですよね?全く知らんことをただ打っても意味があるとは思えない


 ここらへんの考え方は凄かった・・こういうのを思いつくのがプログラミングの醍醐味なんですかね!

2022/03/09
 RoRを少し。
 とりあえず書かれている通りに打ち込んで行きまして・・(WIDTHとHEIGHTは定義されてなかったので適当な数値を入れた)。おおっ!
 別のWindowが開いて画像では全然わからないけどUFOが上から下へと動いている!ほぉぉ

とりあえず全体のリストを見て


 見知らぬコマンドがあるのでとりあえず検索して調べる。なるほど「htdp」って公式のライブラリなんですね。


 Place-imageのサンプルを入れるとこうだから・・empty-sceneで新規のWindowを表示する、と。背景が白だとUFOのバックが浮くから背景を黒くしたい場合は"black"を追加すれば良いのか?


 おおっ!ちゃんとサンプルがついてりゃ理解が全然違いますよねぇ!

RoRを読み進めると「big-bang」自体が特殊なプロシージャ(?)らしい?

 この手続の中で時間ごとに画像を表示したりキー入力を受け付けたりってのが出来るのか!ほえ~・・その下ごしらえのプロシージャを事前に作っておけばUnlessとかでループ作って回さなくてもゲーム的なものが作れるってことなのか? と、ここで宿直バイトの時間となりました~

 あと、全然関係ないんですけど昨夜Youtubeでプログラミング関連のを見てたら無料の音声合成ソフトの話ってのがありまして。ニコニコで見てた「ずんだもん」とかって個人が機械学習で作った無料のプログラムってマジで!? ナニこれ超鬼ヤバ~って感じなんですけど~
 ボイスの種類は男性キャラも合わせて8体くらいあるのかな・・実際にDLして聞いてみたけどVoiceroidと比べても全然遜色ない!これが無料とか・・
 更にYMMってのがありまして。まあ動画編集のプラグインだった・・はずなんですが!YMM4はAviutlを導入(これが実に面倒だった)しなくても単独で動画出力まで出来るというのです(多分)!僕ら、なんて豊かな世界に生きてるんでしょうね・・感動してしまった(^_^;)



2022/03/08
 Kindle unlimitedの品揃えを見ていてビックリ

 バックアップ活用テクニック!いわゆるバッ活やん!まあ、読んだこと無いんですけどね。けど高校生の時分、その悪名だけは響き渡っていたのを覚えております。これがなんと(多分)全巻読み放題!これは値打ちがある!あ~ベーマガとかログインとかOh!MZとか当時のパソコン雑誌を同じ様に読み放題にしてくれたらKindle unlimited、キャンペーンじゃなくても入るんですけどねぇ。とりあえず第一号を読んだんですけど面白い!当時のオーナーのものであろう鉛筆での書き込みがそのまま収録されてて・・愛を感じる!

 RoRを少し。第5章、GUIを使ったゲームということでなんかUFOを撃ち落とすゲームなのかな?数当てゲームじゃなかったのか・・GUI用のライブラリをRequireして
 未定義の関数だらけなんだけど、なるほどまず大雑把な関数で骨組みを作って、実際の定義は後でやる・・と

 UFOの画像は時分で用意しろということだったのでグレンダイザーを・・

 ああ、面白くなってきたのにバイトだ~


2022/03/07
 RoRを少し。
 ふんふん、構造体のおさらい。分かるけど身につけるためには繰り返し使うしか無いな・・といつもと同じ感想。

 へぇ~こんな機能あったのか・・テストの話。前提としてeq? eqv? equal? = などの話。eq?って以前に「一番形がシンプルだから」って理由でとりあえず判定で使って駄目だったけど、一番厳密だったのかw これで4章終わり。

 そのまま4.5章でdefineの話。に併せてスコープの話。

 次回から第5章、ようやく久々に動くものを作るらしい。と言っても数当てゲームの・・GUI版だとか。すごく簡単だぜ!って事で楽しみだな!

 あと、Cametanさんが以前僕がPythonでテキトーに見つけてきて写経でもするか・・とか言ってた「ババ抜きゲーム」をRacketでリメイクしてくださってる記事が!!原作の「役割が別々のクラスに割り当てられていて(僕には)大混乱」だったのをシンプルな構造にしてくださっている! 早速Push to kindleでPWに飛ばして読めるようにしたので・・いつも後回しなので今日はこれからちょっと写経させていただこうかな・・確定申告も終わったし!

 ところで確定申告と言えばE-tax。使える状態にするまでが結構大変(マイナンバーカードを利用可能にする手続きがすごく分かりづらい)だったけど申告書の作成から提出の流れは去年よりも更にスムーズになってるじゃないかなぁ?これはホントに小規模な事業だったら税理士さんいらんのでは?


2022/03/04
 RoRを少し。

 再帰の説明。Length関数なんですけど、この説明がむちゃくちゃ分かりやすかった(^o^)

 条件式へ突入。orの場合、1つ目で満たしてたら2つ目は評価されない・・そうだったのか(今更?)!
 LoLも良かったけど、RoR良いんじゃないかなぁ~。まあ、なかなか次のゲームプログラムまで到達しないってのはあるけど


2022/03/03
 RoRをやってたんですが、いかん眠たい!となるとこれは一度仮眠を取ってMPを回復せねば、と思って寝たらもうバイトに行く時間でした(^_^;)
 チャプター4に入ったわけですが、構造体はこれから出てくるプログラムには全部使うようにしてるそうで、やっぱり重要なんすねぇ

 宿直バイト中、KindleUnlimitedで借りた本を読み始める。

 ちょっと古い本っぽい(CPUがPentiumとかな)んだけど

 こういうのが前書きで書かれてて期待させてくれるじゃないか。プログラミングが本当に面白いと感じられないのは(電子工作的なレベルからの)コンピュータの仕組みを知らないからだと言うのだ。ほぉ〜・・楽しみ



2022/02/25
 RoRの続き。構造体の入れ子・・?
 え?おっ!?初見では混乱した。freshman1ってなんやねん・・と思ったら前のセクションで作ったものだった


 なんで勝手にjuniorとか決まってんの?とか思ったらdefineで入れるだけで構造体の前から順番に格納されるのか!試しにやってみたがseniorはemptyなのでエラー。

 確かめるべく新たなのをsophomeresに追加でsecondで呼び出す。おお・・これ、理解してから見るとなんで分からなかったの?ってくらい時間かかりました(^_^;) というわけで、これだけで終わってしまいました(バイトなのだ)。いや、構造体、便利(そう)じゃないですか~!


2022/02/24
 ロシアのウクライナ侵攻にビビりながら夜にRoRを勉強。生産性の点から言うとこういう勉強は朝行うべきなのだが!明日からはそうしよう。
 なんといきなり序盤で構造体の話が出てくる。LoLとは構成が違ってきましたねぇ。何か実用的なものを作ろうと思ったら構造体は必要になりそうですもんね。なんとなく!


2022/02/23

Cametan42さんの記事を楽しく読ませていただく。

 いや、昔話とか好きなんですよねぇ。特にテクノロジー系のは大好物です!古いパソコンの話とか好きだなぁ・・ただ、不思議なことにファミコンゲームの思い出とかは全然燃えない。けど、オールドPCのゲームの話はすごくソソられる・・これはなんなんですかね?


 とりあえず折角なので僕も乗っかって「Lispを初めて知った時のこと」を・・・あ、「600こちら情報分」は僕も見てましたねぇ!六次郎こんなに目つきするどかったっけ?でも番組の内容までは覚えてないなぁ・・・


 僕のLispとの出会いというかニアミスは前にも書いたかも知れませんけど「苫米地英人さん」がらみでしたね(^o^)

 確か
「Lispってプログラミング言語があって・・これは数学そのものを記述できる言語なのね。まあ、ラムダ抽象ってのを調べてみてください」
 調べたけどほとんど引っかからなくて・・けどその「ラムダ抽象」って響きと、ラムだと言えば「フルメタル・パニック」の「ラムダ・ドライバ」のイメージがあったので、なんか未知のすごい言語・・空間を論理的に書き換えてしまうようなそんな神秘的なものを想像してましたねぇ~


 Cametanさんの「12歳からの~」は超力作なので、後でじっくりと「写経」のお手本にさせていただくつもりです。実際に動かさなくて良いので500円で買った中古ポメラが輝く(予定だ)ぜ!


 RoRを3章の「Nested list」まで読み進める。いや、結構復習になりますわ~(忘れ過ぎという話)。英語も強制的に読まないといけないし良いかもな・・と(プログラミングに一番大事な言語はなんですか?って質問に「英語」ってのよく聞きますもんね)。


 あと、Chromeの拡張「Up to kindle」ですが・・ああ・・この動きのしくみが分かったら自分でもなんとか頑張って(いつかは)作れるかも知れないのになぁ・・と思って検索してたら「拡張機能のソースを丸見えにする拡張機能」ってのがありまして(^o^) これ良いのかな?確かにソースが丸見えです!Javascriptなのでよく分からないんですが・・これもいつか挑戦してみたいっすねぇ・・あれ?けどソースの中で「Month」とかってのがあったらその周辺でカウンタがありそうなもんだよな?そしてもっと言うと、月20回までってのもどこに情報が保存されてるのか怪しい・・前にバイト先でChromeBookを使って入ったらまた残り20まで回復していたし、先程別のWindowsPCでやってみたら20に戻ってる・・IPアドレスなのかクッキーなのか分からないけど、これはわざわざ作らなくても無限Up to Kindle可能かも知れないなぁ・・




2022/02/22
 今更テキストエディタ「秀丸」が気に入ってしまったのですが、アウトラインモードで入力するのに毎回行頭で「.」を入力するのが面倒だ(「.」がアウトラインの項目であると言うマークになってる)。
 とりあえずダダダダ!と打った後にまとめて行頭に「.」を追加出来ればいちいち入力モードを変更しなくても良いのに・・まあ、そこで正規表現ですね!

 これで行頭全部に「.」が入るわけですが・・アウトラインの見出し行にぶら下がる本文部分が最初から入力されてる場合、そこにもついてしまうわけで・・

 例えばこういう状態であればスペースが入ってるところは本文なので、そこに入ると困ると。

 まあ、こうなってしまうわけですよね。
 更に一度行頭に「.」をつけた後に追加で文章を入力した場合に「..」になってしまうわけですよね・・じゃあマッチの条件で「行頭で」「.」ではなく、かつ「 (全角スペース)」でないってのにマッチすれば良いな!と思ってハタ!と気づいた。あれ・・?orはパイプで良いけどandってどう書くんだ?いわゆる論理積って奴ですか?ところがこれが出来ないというのだ!エエっ(・。・; ちょっと意外・・
 しょうがないので全部の行をアウトラインとして整形した後で本文を書くというルールにするか・・と一旦諦めてバイトへ。

 バイト中モップがけをしてるところで「あっ!」と気づく。秀丸マクロで二段階に分ければ行けるか!
 最初に全部の行に「.」をつけて、その後「. 」をマッチさせて「 」に変換すれば良いのでは・・

 バイト明けでイソイソとPC起動。マクロの記録を開始して

 これを連続で行って記録終了。マクロ保存をして、CTRL1に登録して実行すると・・・
 おお、これで良いのだ!・・まあ、だったら以前Pythonで作った例のOPML整形プログラムはなんだったんだwという話なんですけど(^_^;)

 「..」問題はもうひと動作入れれば良いだけなので、必要になったら・・。いや~しょうもないことだけど動くと嬉しいもんっすねぇ


2022/02/20
 昨日は結局「ハノイの塔」の挙動の事を結構な時間考え続けていた。なるほどな!と思うんだけど、こんなのを考えたりヒントも無しで思いついたり出来るだろうか・・とか。

 で、今日KindleUnlimitedで中島聡さんの本を読んでて
 えっ!?こんな「デキる人」でも分からないのに何度も繰り返して写経してるうちに分かる瞬間が来たりという体験があるのか・・と。結局、考えてばっかりで圧倒的に手を動かす時間が足りないって事なんですかね(何回この話題をするのかって感じだけど)。今までの方法は一旦置いといて、比較としてここは一発何も考えずに(ってのも駄目かw)、ひたすら写経ばっかりする時間を作ってみようかなぁ・・キーボードは引くほどあるわけだしコード打ち放題だしなw
 考える時間としてRoRの読書は別の枠を並行して設定するけど。


2022/02/18
 地元の図書館に本を取りに行ったら新着で並んでいた本。アルゴリズムか・・僕に足りないのはアルゴリズム的思考法だな?と思ったので借りて読む。


 最初にメモリ上の仕組みから見た配列とリストの違いの説明がある。噂に聞くポインタの意味がようやく分かったりした。
 リストってのは個数に制限が無いのが配列との違いなのか。それで可変長なんすね(超絶いまさら)。
 配列はメモリ確保の仕組み上検索が容易でデータの追加と削除が大変と。

 続いて再帰の解説でハノイの塔の課題を解くというのがあって・・Racketだとどうなるのだ?と検索すると

(define (towers-of-hanoi n source dest temp)
(cond [(= n 1)
(printf "Move the disk from ~a to ~a~n" source dest)]
[else
(towers-of-hanoi (sub1 n) source temp dest)
(printf "Move the disk from ~a to ~a~n" source dest)
(towers-of-hanoi (sub1 n) temp dest source)]))

 えっ!こんだけ!?表示の部分を除いた実質的なアルゴリズム部分はもっと少しなわけで・・これで動くとかちょっと見信じられん・・まあ、動くんですけど。
 うーん、しかしやっぱりちょっと理解できなかったのでまた最初から読む。で、一応理屈は理解できたんだけどこれで動くってことに驚く・・なんというかそんな都合の良い事になるとは?一言でいうと感動したのであった(^o^) 
 バイト行ってきますw


2022/02/17
RoRチャプター2「数当てゲーム」
RoR
(define (guess)
(quotient (+ lower upper) 2))


LoL
(defun guess-my-number ()
(ash (+ *small* *big*) -1))


 「ash」の方がオシャレですね(?)。ashは+の引数で左シフト-で右シフトってのは合理的っすね
RoR
(define (smaller)
(set! upper(max lower (sub1 (guess))))
(guess))


 むっ!「sub1」?ほえ~引数から1を引くとか・・えらい特化されてんなぁ。試しに「sub2」とか入れたら未定義と出たw


 あと、「set!」の読みが「セットバン」って・・知らなんだ


LOL
(defun smaller ()
(setf *big* (1- (guess-my-number)))
(guess-my-number))


 RoRの方は下限よりも小さくならないように、より厳密になってるって感じですか・・


LoL
(defun start-over ()
(defparameter *small* 1)
(defparameter *big* 100)
(guess-my-number))


RoR
(define (start n m)
(set! lower(min n m))
(set! upper (max n m))
(guess))


 おおっ!メイン部分が自分で設定できるようになっとる!maxとminで自動で割り振られるようになってるのも洗練されてる感じしますね!
 秀丸で打ったのをコピーすると先頭の半角が消されてしまう・・
 次回から3章となります

2022/02/15
 RoR(Realm of Racket)
 チャプター1へ。まだまだ背景説明なんですけどね!Racketが生まれた背景とかですか。
 LoLがぶっ飛んでたんで、極めてまともな解説だ!と思えてしまう。今回は主人公が設定されており、その子が悪のDrRacketのダンジョンに囚えられて、そこからどうやって脱出するか・・・というところから物語が始まります!
 まずは牢番を言いくるめて牢から出るのですが・・例の「数字当て」で勝負するわけですね。
 という訳で次回からチャプター2でようやくプログラミングです。僕は今から宿直バイトでちょっと一稼ぎしてきま~す。


2022/02/14
 
 中嶋聡さんの「プロセッサの地政学 オペレーティングシステムの地政学」を読む。これ、高評価でIT関係だったのでテキトーに選んで読み始めたのだけどむちゃくちゃ面白かった・・
 ジョブズはやっぱり嗅覚と言うか見る目があるんやな・・とか(MacOSの一件で)。あと、完成された形でないと発表しないってのも良いな。
 半導体関連の未来の話も良かったし、個人的には「昔話(正確には昔裏話)」が好きなので、古今東西のオペレーティングシステム栄枯盛衰は面白かったなぁ・・一気に読んでしまった。PalmOS、BeOS、WindowsCE・・懐かしい響きです。
 あんまりにも面白かったので他の著書を・・と調べたら以前に読んだことある本もあったわ。Kindle unlimitedで読んだこと無い本も対象になってるのでちょっと読んでみよう。


 Realm of Racketを読み始めたが・・これがなかなか進まへんねんな・・。PDFだったらMouse Dictionaryが使えるしコピペしてDeepLにかけることが出来るんだけどもKindleだとそれが出来ないのだった・・例によって肝心なところ以外も読まないと気がすまないのが影響してるんだけど。コーディングに関係するところだけ読み進めるべきかのう・・


 あと、やっぱり普段使ってるPCのブラウザから直接Kindleへと送る方法が欲しい。月に20本って制限はあるけどPush to kindleはやっぱり便利なので・・・。なのでもしも可能ならばChrome用の拡張機能を自分で作れたらそれが一番良いわけだよな・・と。ちょっとどうやって作るのかを調べてみるか・・実際、誰かが作ってるんだから必要な情報が分かれば作れない事は無いはずだ。個人で使う分には別にChromeウェブストアに登録しなくても導入できるようですし。とか・・夢がデカいぜ!


2022/02/13
 ちょっと悩んでいたRacketの書籍「Realm of Racket」だけど結局買ってしまった(^o^) どうせ復習をしないといけないと思ってたからちょうどエエやろ、と。というわけで悩みどころだけど一旦「Hunt the wumpus」は置いといて(ちょうど入ったばっかりだし)、RoRをやっていこうかな、と。

 ジョエルさんの記事、ビル・ゲイツの回を読む。やっぱすごいなビル・ゲイツ!
 ちなみに僕はスティーブ・ジョブズは嫌いでしてね!ウォズニアックと一緒にゲームを作って(と言うか実際作ったのはウォズニアックやろ?)売り込んだ時に折半すると言っておきながらこっそり大半を懐に入れてしまったエピソードでマジでブチギレですよ!マイクロソフトのやり口とかは言うてもビジネス上の戦争みたいなもんですから良いですけど、ジョブズのはウォズニアックの気の良さにつけ込みやがって・・。ま、ジョブズは早死にしウォズニアックは今でものんびり平和に暮らしてるって話だから・・まあ、そういうことですね。
 そもそもジョブズってプログラミングとか出来たんですかね?


2022/02/11
 折角書いていただいてるcametanさんの記事、ブログのままだと読み返すのが一手間かかるのでキンドルへ。以前はコピーしてテキストファイルとして読んでたんですがChrome拡張のpush to kindleでネットを介して送ると美麗で快適だ〜(^o^) ただこれ月に20回までの制限がある。Amazonにもページをキンドルに送るsend to kindleってあるんですけど、これ、いまだにアメリカAmazonで買ったキンドルにしか対応してないんですよね!何でやねん、、

 ちなみにこの2012年式のキンドルペーパーホワイト(反応もっさり、、中古で買うなら2013年以降のモデルにすべき)、加水分解でベトベト。そこでダイソーのミルクペイントですよ。触り心地よし!

 cametanさんからland of lispを買ってしまっては?という提案が。考えたんですけど日本語版はキンドルで出てないんですよね、、で、こちらのrealm of racketを発見。なんとracketの書籍が出てたとは!しかも内容はLoLをリスペクトしたものだと言う(著者が執筆に参加してるらしい)。

サンプルを見るとちゃんと電子化されてるみたいだし、こっちを買ってみようかな、、どっちみち英語で読まんといかんし、、

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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

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