shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

memo : JavaScript x Python ... iPython Notebook -> GitHub Gist

とりあえず、メモ

Python のコードを JavaScript で実行したいんだが、という調べ物
手軽にWebアプリ化できるといいのだが

Brython ... Pythonコマンドプロンプトを作っちゃう?
その実行ファイルの大きさとアクセスの負荷が心配
とりあえず Brython 本家のものが公開されていそうだが、使いまくるのは気がひける

www.brython.info

 

"nbconvertでhtmlファイルに変換する" というのが主
そのままWebアプリ化できるわけではない

qiita.com

futurismo.biz

 

とはいえ、最近の雰囲気としては iPython Notebook -> GitHub Gist ? が、良さそう
Webアプリにはならなさそうだが、やりたい人たちはすぐ Fork して使えるだろう

徳井先生 がやってるのがとても面白い

Spectrogram Phase Reconstruction Test - Comparison between LWS and GriffinLim · GitHub

https://towardsdatascience.com/neuralfunk-combining-deep-learning-with-sound-design-91935759d628

 

Simutransのセーブデータ (非圧縮xml のみ) の路線情報を編集してみた ~ 路線番号を各社ごとの数字に振り直し

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

路線情報を悪戯してみます。路線番号を各社ごとの数字に振り直します。
Simutrans本体にて新規路線を作ると、全社跨いで通しの数字が振られているようです。
そんな数字を、各社ごとでの通しの数字に置き換えます。[路線編集]ウィンドウで見た時に、ちょっと気持ちいい。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

                                   

 

 

本記事は、やっていることの整理のための脱線です。元々検討していた内容が泥沼にハマり、ディスプレイ上で燻り続けているわけです。
それは、xml形式のセーブデータ弄りではなく、binary形式、binaryのbzip2圧縮した形式のセーブデータの読み込み/書き出しでした。これが全然できない上に、どうも泥臭く元々のソースコードを丸々JavaScriptに移植する羽目になりそうでした。
そのサイズともなると、はてなブログの記事に書くのが怖くなりました。GitHubの出番でしょう。
そんなわけで、できる範囲の中で価値がありそうなネタを捻り上げてみたのでした。

 

なお、苦労。
xml の "CDATA" っていうのが、xmlでも特殊でパーサーがパースしてくれない!!

というわけで、以下のような置き換えを行なっています。

[読み込み時]

    var xml = e.target.result;
    // CDATA対策
    xml = xml.replace(/<!\[CDATA\[/g,'')
    xml = xml.replace(/\]\]>/g,'')
    // XMLのDOMをパースする
    var parser = new DOMParser();
    var dom = parser.parseFromString(xml, 'text/xml');

[書き出し時]

    var xmlString = serializer.serializeToString(dom);
    xmlString = xmlString.replace("><", ">\n<");
    // CDATA対策
    xmlString = xmlString.replace(//g,'<!\[CDATA\[')
    xmlString = xmlString.replace(/<\/CDATA>/g,'\]\]>')
    xmlString = xmlString.replace(/<CDATA\/>/g,'<!\[CDATA\[\]\]>')

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)

Simutransのセーブデータ (非圧縮xml のみ) を読み込み->書き出し ~ 「年代設定」をOFF

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

ちょっとしたエディットとして、「年代設定」をOFFにします。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

             

 

 

「年代設定」をOFFにする。これが一連のxml弄りonはてなブログの発端です。

ただし、非圧縮xmlでだけできるようなツールでは微妙。
アンケートを募ったところ、全然使われていないっぽい。

サーブデータ弄り本編には関係ないxmlをいじる準備は、まだまだ続きます。

 

なお、苦労。
xml の "><" の間にちゃんと改行がないと、 Simutrans 読んでくれない!!

というわけで、以下のような置き換えを行なっています。

var xmlString = serializer.serializeToString(dom);
// !!! this is the essential, 'cause Simutrans's xml-parser is pretty neat !!!
xmlString = xmlString.replace("><", ">\n<");

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)

Simutransのセーブデータ (非圧縮xml のみ) のversionとpakを取得してみた

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースし始めてみました。

パースといっても、一番上の階層のAttributeだけです、まずは。

ドラッグアンドドロップされたSimutransのセーブデータの、 version と pak を表示します。

Drop files here

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

デスクトップからファイルをドラッグする処理を、はてなブログに直接書いてみるテスト

Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

↑ こちらのページのソースをコピペしてみました ...

ドラッグアンドドロップされたファイルの、 name と type と size と lastModifiedDate を表示するサンプルであるようです

↓ 動きました はてなブログ 万歳!

Drop files here

memo : Google、歌詞->旋律の機械学習を特許出願

 機械学習するにあたり、「うわぁ」な記事がきました。

aidiary on Twitter: "グーグル、歌詞に合わせてメロディを自動作曲する機械学習システム--公開特許に https://t.co/Cl1oDVzNxT"

 

[公開特許]

「公開特許公報」って何? - 発明plus

特許申請された内容が公開された。まだ特許として認められてはいない。
特許になるにあたり、この内容より増えることはない。
... おそらく記事は日本での特許制度についてのものだと思いますが。

 

この手の「うわぁ」な話題としては、WaveNetがありました。

 


月刊パテントなる論文誌があるんですね。日本弁理士会だそうで。

CiNii 論文 -  ディープラーニングと著作物 (特集 次世代知財システム)

https://system.jpaa.or.jp/patent/viewPdf/2741

 

Simutrans OTRP を元に改造するリポジトリの作り方 備忘録

素敵な交通シミュレーション Simutrans !!
Simutrans - Transport Simulator ~ FrontPage - Simutrans日本語化・解説

の...日本発の素晴らしい本体改造 OTRP ... を元に改造するリポジトリの作り方 です
GitHub - teamhimeh/simutrans at OTRP
あくまでも私が試行錯誤しながらなんとかなった git のコマンドの備忘録です
あまり信用しないでください

git clone https://github.com/{アカウント名}/{リポジトリ名}.git {ディレクトリ名}
git remote add teamhimeh https://github.com/teamhimeh/simutrans.git
git fetch teamhimeh
git pull teamhimeh master
git reset --hard teamhimeh/master
git checkout -b OTRP teamhimeh/OTRP
git push origin OTRP

こんな感じです。

 

次に、元のOTRPのリポジトリの最新の状態をマージするコマンドです。
git fetch teamhimeh
git merge teamhimeh/OTRP
git push origin OTRP

 

OTRPには、私が考案した改造がいくつか採用いただいております!
おそろしや OTRPを導入した際には、それらの改造もご活用いただきたく ...

それにしても、Git / GitHub は難しい ...

 

以下、参考文献

git cloneしてきたプロジェクトの名前を変えてクローンしてくる方法
https://qiita.com/ko_coon/items/f7a555a1f57fa49e0ff9
[GitHub]別リポジトリの更新を取り込む
https://qiita.com/ktaguchi/items/e37d8807935ad4d94a86
gitでリモートのブランチにローカルを強制一致させたい時
https://qiita.com/ms2sato/items/72b48c1b1923beb1e186
リモートのgitブランチをローカルにチェックアウトする
http://sessan.hatenablog.com/entry/2012/11/04/132746
Gitでブランチをリモートに送る時の注意点
https://rcmdnk.com/blog/2014/01/31/computer-git/
リモートのブランチをマージする
http://kray.jp/blog/git-pull-rebase/