之山

実践メモ

之山

実践メモ

マガジン

  • Monkey言語の拡張

    Go言語でつくるインタプリタ,で実装しているMonkey言語を拡張してみた経過のメモです.

  • Blockly

    Blocklyを使って独自のブロックを作成していく.

  • Go言語で音を鳴らす

    Go言語を使って音を鳴らしてみたい.

  • C言語で絵を動かす

    タイトル通り. ペンライトを左右に振れるようにしたい.

最近の記事

Monkey言語:冪乗の二項演算子"^"実装

目標「2^3」のような冪乗の演算をMonkey言語に実装する. 字句解析トークンの定義 token/token.go にHAT = `^`を追加.(p.4) const ( ILLEGAL = "ILLEGAL" //トークンや文字が未知であることを示す EOF = "EOF" //識別子,リテラル IDENT = "IDENT" //関数や変数など INT = "INT" //整数 STRING = "STRING" FLOAT = "FLOAT"

    • コードが反映されない問題

      目標ブロックを置いてもコードが表示されない問題の原因を探り,解決する. 現状自分が作ったブロックの中でコードで出力されるものとされないものがある この記事ではコードを反映させることが出来ている. しかし,新しく作成した,次の画像にあるようなrandom,gaussブロックではコードが出力されない. 原因究明入力方法の違い? 一目見てみて,明らかに違うところはplayがブロックの中に引数が埋め込まれているのに対して,random, gaussは外からブロックを当て

      • Blocklyで変数ブロックを作成

        目標ブロックで変数宣言,代入を可能にする. 実装実装はすぐに終わる. Toolboxに次のコードを挿入するだけ. <category name="Variables" colour="330" custom="VARIABLE"></category> 結果 注意点VSCodeのプレビュー機能にてindex.htmlを開くと,Create variableを押しても変数を作成出来ない.

        • CodePenを使わずにブロック追加

          前回の記事前回は,ひとまずBlocklyが動かせるか確認するために基本的な動きを確認した.ただ,ここからは実装の都合上CodePenを使わないこととする. CodePenのメリットとしては,index.htmlの結果を見ながら出来る,共有が楽というものであったが,VScodeのプレビューを使用すれば前者は問題ないし,共有もGitHubで十分である.ブラウザであるCodePenで行うとローカルのファイルを使うのが難しかったので手法を変更した. 今回の目標自分で設計した言語

        Monkey言語:冪乗の二項演算子"^"実装

        マガジン

        • Monkey言語の拡張
          11本
        • Blockly
          7本
        • Go言語で音を鳴らす
          17本
        • C言語で絵を動かす
          3本

        記事

          Blocklyで独自言語のピースを作成2:手法変更につき中断

          前回の記事ブロックをDeveloper Toolで作ってExportしたはいいものの,そのファイルへの参照方法に迷って迷走してしまったので,GitHub Pagesを用いてその解決をはかる. GitHub Pagesとは リポジトリのSettingsからPagesに行くとこのような画面になる(Public). Privateの時はGitHub Pagesを使えないので違う画面が出る. BranchのNoneとなっているところを使うブランチに設定. 今回はmain.

          Blocklyで独自言語のピースを作成2:手法変更につき中断

          Blocklyで独自言語のピースを作成(心機一転):失敗

          前回までの流れこんな感じでやってきたけど,GitHubから持ってきたものの中にサイトで指定されてたパスがないわ,ブラウザから手元のファイルを上手く使えないわで躓いたので,心機一転,やり直す. とは言っても,少し同じ作業はあるので,その部分は短くする. 今回の目標自分で設計した言語に合わせてBlocklyで置くことができるブロックを変更していく. 一旦は,"play(60, 0.5);" のようにplay関数を表現できるようなものを作成. ブロック作成今回参照する記事は

          Blocklyで独自言語のピースを作成(心機一転):失敗

          Blocklyで独自言語のピースを作成1:手法変更につき中断

          前回の記事前回は,ひとまずBlocklyが動かせるか確認するために基本的な動きを確認した. 今回の目標自分で設計した言語に合わせてBlocklyで置くことができるブロックを変更していく. 一旦は,"play(60, 0.5);" のようにplay関数を表現できるようなものを作成. ブロック作成このサイトを一旦参考にしてみる. Blockly Developer Toolsを使用するらしい. デベロッパーツールの説明とデモのURLがあったが,簡単に眺めても使い方がわか

          Blocklyで独自言語のピースを作成1:手法変更につき中断

          MacBook AirでBlocklyの使用

          目的自作のプログラミング言語をビジュアルプログラミング言語にしたい.ひとまず導入や簡単な操作確認を行う. 無料で Web アプリの画面 (フロントエンド) を作れるサービス CodePen と、JavaScript のライブラリーを配信している CDN の JsDelivr を使って、Blockly を動かす. 環境Apple M1: メモリ8GB Ventura 13.5 Google Chrome バージョン: 117.0.5938.149(Official B

          MacBook AirでBlocklyの使用

          DiscordにMusicGenのbotを導入(失敗)

          目標タイトル通り,DiscordのチャンネルにMusicGenのbotを導入し,DiscordからMusicGenを使えるようにする. 参考公式でやり方は載せてくれているので,これに則りながら進めつつ,わからないところを補強していく. Prerequisites(前提条件)Python 3.9.6 Terminal on Mac(M1: 8GB) macOS Ventura 13.5 python3のバージョンは次のように確認した % python3 -VPy

          DiscordにMusicGenのbotを導入(失敗)

          UnityのプロジェクトをGitHub, SourceTreeで管理

          目的UnityのプロジェクトをGitHubとSourceTreeで管理しようとしたらアクセス周りの話で色々問題が発生したので,対処法のメモ. 現状やったことリポジトリの作成 Unityでプロジェクトを作成(中身の変更はなし) Unityでignoreするとよいらしいものをまとめた.gitignoreをダウンロード SourceTreeにGitHubのアカウント追加 問題SSHキーがうまく設定できてなくて,リモートリポジトリからプルしたり,プッシュしようとすると怒られ

          UnityのプロジェクトをGitHub, SourceTreeで管理

          Mac VScode tex環境構築

          環境・MacBook Air M1, 2020 macOS Monterey ver. 12.6 ・VSCode バージョン: 1.72.0 (Universal) 参考 手順LaTeX Workshopのデフォルト設定ファイルを上書き (1)Tex作業用ディレクトリを作成. ここではtexWorkディレクトリを作成した. (2)texWorkディレクトリでVSCodeを開く. (3)VSCodeを開いた状態でcmd + , を押して設定画面を開く. (4)wor

          Mac VScode tex環境構築

          ブラウザ上で.wavをドロップ,再生

          目標タイトル通り,ブラウザ上に.wavファイルをドロップさせ,その音源が再生できるようにしたい. ドロップなしで音源を配置一旦,元から指定した音源を置いておき,再生できるようにしてみることにする. index.html <html> <head> <meta charset="utf-8"/> <script src="wasm_exec.js"></script> <script> const go

          ブラウザ上で.wavをドロップ,再生

          Monkey言語:サンプル音源の再生

          目標組み込み関数sampleを作成して,引数によって録音された音源を流せるようにしたい. この記事を参考に書いていく. テストケースを書くfunc TestSampleFunction(t *testing.T){ tests := []struct { input string expected interface{} }{ {`sample("drubase")`, "drubase"}, {`sample()`, "wrong number of argum

          Monkey言語:サンプル音源の再生

          Go言語のhttpパッケージ周りについて整理

          背景この記事で静的ファイルサーブをすることになったが,普通に localhost:8080 を開くのと同時にやる方法がわからなかったから整理する. localhost:8080開くだけのコードpackage main import ( "log" "net/http") func main() { port := "8080" http.Handle("/", http.FileServer(http.Dir("../docs/"))) log.Printf("Listen

          Go言語のhttpパッケージ周りについて整理

          XMLHttpRequestでブラウザからローカルファイルにアクセスしようとしたけど無理だった

          背景この記事で,ブラウザから,ローカルにあるテキストファイルを読み込む必要がでたので,XMLHttpRequestを使って実現しようとした. 行ったことこの記事の「読み込みのみなら」という部分に着目し,manifest.jsonを作ってやってみようと思う. HTMLファイルと同じ階層に作ればよいらしいのでdocsフォルダに作ることになる. ファイル構成 (+ manifet.json) ├── ast├── docs│ ├── build.wasm│ ├── i

          XMLHttpRequestでブラウザからローカルファイルにアクセスしようとしたけど無理だった

          Go言語:ファイル入出力

          環境・macOS Big Sur ver. 12.6 (21G115) ・MacBook Air M1, 2020 メモリ 8GB ・go1.18.3 darwin/arm64 目標main.goを実行したら指定したテキストファイルを初期化(白紙化)し,ある関数(play)を実行するとそのテキストファイルに文字列を書き込み,webassembly.goでそのテキストファイルを読み込む. ファイル構成├── ast├── docs│ ├── build.wasm│

          Go言語:ファイル入出力