Skip to content

Posts

Parcelを使ってみる

久しぶりにJavaScript(TypeScript)を書こうとしたら、何から始めてよいかわからなくなっていた。

あまり環境構築に手間をかけたくなかったので、parcel-bundler/parcel: The zero configuration build tool for the web. 📦🚀を使ってみた。

Building a web app with Parcelを見ながら

npm init
npm install --save-dev parcel

src/index.htmlを作って、

npx parcel src/index.html
/home/umemak/workspace/mdmml_js/node_modules/@parcel/core/lib/Parcel.js:150
  #requestTracker
  ^

SyntaxError: Invalid or unexpected token
    at new Script (vm.js:83:7)
    at NativeCompileCache._moduleCompile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:240:18)
    at Module._compile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:184:36)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at Object.<anonymous> (/home/umemak/workspace/mdmml_js/node_modules/@parcel/core/lib/index.js:81:39)
/home/umemak/workspace/mdmml_js/node_modules/@parcel/logger/lib/Logger.js:41
  #logEmitter
  ^

SyntaxError: Invalid or unexpected token
    at new Script (vm.js:83:7)
    at NativeCompileCache._moduleCompile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:240:18)
    at Module._compile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:184:36)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at _logger (/home/umemak/workspace/mdmml_js/node_modules/parcel/lib/cli.js:54:16)

うーん。。めんどくさい。。

Read more

Magenta.js

昨日のcifkao/html-midi-player: 🎹 Play and display MIDI files on the webの使い方見ようとして、magenta-js/music at master · magenta/magenta-jsを使っているのを知った。

Magentaは出始めのときにそんなのがあるのか、って思って深くは見ていなかったのだけど、今度はちゃんと使ってみようかな。

html-midi-playerではSMFファイルを渡して初期化しているところを、 textboxに書かれたマークダウンをSMFに変換してblobToNoteSequenceに渡せばよいのかな。 JavaScriptでテンポラリファイルとか作れるんだっけ・・?それなら無改造で行けそうだけど。

Read more

MDMMLのJavaScript移植

Rust移植は未完だけれどもいい勉強になった。

今度はJavaScript(TypeScript)に移植しようと思う。 というのもcifkao/html-midi-player: 🎹 Play and display MIDI files on the webと連携してブラウザで完結出来たら良さそうなので。

もともとのGoの実装でも、サーバー立てるなりローカルにバイナリ置くなりすればできそうな気もするけど、それはそれとして。

Read more

GitHub Actionsのmatrix

GitHub Actionsのワークフロー構文 - GitHub Docs

このjobs.<job_id>.strategy.matrixは、jobに含まれるstepsをmatrixの組み合わせでループ実行するという理解。

同じようなことを、step単位でやりたいときにうまい方法がないかなぁ、と。

jobs:
  example:
    steps:
      - name: example begin
        run: echo "begin"
      - name: example A
        run: echo "A"
      - name: example B
        run: echo "B"

こんなイメージのフローがあったとして、beginは共通で一度だけ実行したくて、AとBは記述をまとめて省略したい、みたいな。

Read more

ginkgoの特殊機能とは?

昨日の調べもので出てきた、

Ginkgo has several capabilities that can only be accessed via ginkgo.

(Ginkgoには、ginkgoを経由してしかアクセスできない機能がいくつかあります。)

そのいくつかの機能を知りたい。

https://onsi.github.io/ginkgo/#ginkgo-cli-overview には、コマンドライン引数について書かれているが、むしろginkgoでサポートしていないものがあるという記述なので、思っていたのとは違う感じ。

Read more

ginkgoとgo test

GinkgoのV1とV2のテストケースが混在しているときに、V2のCLIでV1用のコードをテストしようとすると、ginkgo.timeoutが定義されてい内的なエラーになってしまう(うろ覚え)。

importをv2にすれば多分良いのだけれど、そうしなくても、テストの実行をgo testに任せれば、importで指定しているバージョンで実行してくれる気がする。

Read more

Screeps: Arena体験

Steam:Screeps: ArenaのDemo版をやってみた。

チュートリアルの途中までやったけど、普通に何か自分で開発してたほうが良いかな。

ノートPCで1画面でやってると、VS CodeとScreepsの行き来が面倒だったので、エディタは内蔵されていたほうが良いと思った。

HugoにAlgoliaを導入してみる

Hugo + Algolia + Instantsearch.jsで静的サイトに全文検索を導入 - OTTANXYZを見ながらやってみた。

とりあえずローカルでできることを確認してから、GitHub Actionsに組み込もうかと。

で、上記サイトは設定ファイルがYAMLだったのでTOMLで書くところで躓いた。

[outputFormats.Algolia]
  baseName = "algolia"
  isPlainText = true
  mediaType = "application/json"
  notAlternative = true

これで動いた。

Read more