ネコと和解せよ

Android用の音波通信アプリβテスター募集

TbskModemをAndroidで使えるようにしたアプリTBSKIOを作りました。しかし、テスターさん20人以上集めて2週間テストしないと公開することができません。そんなわけで、しばらくの間アプリをしばき倒してくれるテスターさんを募集しています。募集要項は以下…

kotlinでシリアライズするクラスにはデフォルト値を指定してはならぬ

kotlinでシリアライズするクラスにデフォルト値をつけると、頭のいいコンパイラが余計なことをして設定値を書き出さないことがある。次のコードを実行すると、a,bは意図したとおりになるが、それ以降は値が書き出されない。 @Serializable data class HasDef…

実験用にEthereumノードを立てる2023

久しぶりにEthereumのプライベートネットを建てたい。以前は適当にGethをセットアップしてgenesis.jsonを書いてPOAで立てればポンとできたが、最近はどうなのだろうか。こちらの記事を見ながら学んでいこうと思う。 geth.ethereum.org 最近のEthereum PoW時…

TBSKmodemの信号規格を書いた

TBSKmodemの信号規格を文章化しました。 github.com 見どころをいくつか紹介します。 もくじ この文章は変復調の方式とか、実際の手順などを図表を交えて書いてあります。 みたいなことがわかりますね。 信号型式 トーン信号とはなんぞやみたいなことが書い…

Forthを作ろうとする

TBSKmodemの開発がひと段落したので、制御ソフトを書くことにした。マイコンで動作する簡単なスクリプト言語を実装しようということで、調査をしていると、TinyBasicとForthが候補に挙がった。Basicは人間が親しみやすい言語ではあるが、規格と仕様の境界が…

マイクロチップ向けのTBSKmodemをリリースしました(半二重通信OK)

先日作ったラズピコ用受信専用モデムの続きです。 双方向の半二重通信ができるようになりました。nyatla.hatenadiary.jp 細かいチュートリアルはRaspberryPi Picoとブラウザで通信するに書きましたので、手っ取り早くでON/OFFリモコンを体験する手順を書いて…

WALKMAN戦記②

NW-S744の分解と、NW-S765の調達。nyatla.jpnyatla.jp

WALKMANを分解した記録を書いた

昨年の暮れにはじめたWALKMAN漁りの記録が溜まってきたので、公開することにしました。WALKMAN戦記 - ウォークマンのストックか? 今のところ、30台あるぞ きっかけはAGPTECKのMP3プレイヤー。 タッチパネルな使用感に馴染めなかったので現行品のWALKMANを見…

TBSKmodem製の音波通信トランシーバーアプリ

nyatla.jp以前作ったTBSKmodemのパケット送受信プログラムをスマホ向けに作り直しました。最終的には通信ソフトになる予定ですが、GUIにてこずったのでとりあえずパケットの送信とキャプチャ機能のみです。動作環境は、(Vue.jsがギュンギュン動く程度の)スマホ…

簡易翻訳用スクリプト

ちょろっとした手書き用のHTMLを国際化するためのスクリプトを書きました。大体の事はGithubとZennに書いてしまったので、設計思想の話とかを少し。zenn.dev github.com 開発動機 このスクリプトを作る直前、TBSKmodemのウェブアプリ実装でVue…

Vue3でwasmを含んだnpmモジュールを使う

サンキューChatGPT! pic.twitter.com/PbgrjyvTK0— にゃとらん&& (@nyatla) 2023年4月18日 どうにもならなくてChatGPTさんに聞いたら1発でした。 Vue 3でWebAssemblyを使用するには、まずwasmファイルを読み込むためのローダーが必要です。Vue CLIを使用している…

TBSKmodemJSを更新しました

TBSKmodemJSを更新しました。github.com今回の更新の目玉は、TbskSocketクラスです。 以前のバージョンはとりあえず動かすことが目的でAPIが謎に満ちていましたが、今回実装したTbskSocketクラスはWebsocketライクなAPIですんなり使える特徴があります。例え…

マイクロチップ向けのTBSKmodemをリリースしました(ただし送信のみ)

先日作ったMicropython向けのTBSKmodemの続きです。Arduinoでも動くようにしました。github.com MicroPython TBSKmodemMicro/README.ja.md at main · nyatla/TBSKmodemMicro · GitHubコードからライブラリを分離しました。 セットアップがチョットめんどくさくな…

Raspberry Pi Picoが届いたので音響通信はじめました。

スイッチサイエンスさんからRaspberry Pi Picoが届いたので、準備しておいたTBSKmodemMicroで音響通信(送信のみ)を試しました。事前実験に協力してくれたたけぞうさん、有難うございます。 実験結果 ✨なんとか成功✨らずぴこのMicroPythonからすまぽのWebau…

TBSKmodemをProcessingでも使えるようにしました。

Processingからもワイヤレス音響通信接続ができるようになりました。 公開済のPython,C#,C++,Javascript版とも相互に接続ができます。Processing単体でも、コンテンツをスマホで操作したり、コンテンツ同士を連携させたり、そんな使い方で遊べるかなーと思っ…

自作processingライブラリのハマり所2023

Processingのライブラリ自作するために便利なこのプロジェクト。 今どきのEclipseでビルドするともりもりエラーが出ます。github.com ここからバッドノウハウ集 javacで(UTF-8のソースが)コンパイルできない。 build.xmlのtarget name="compile"のjavacタ…

TBSKmodemをブラウザ他でも使えるようにした。

オーディオモデムのTBSKmodemをブラウザでも動くようにしました。 お試しはこちらから。スマホ・タブレットなどでも動きます。 PCとスマホを用意して、PCから送信→スマホで受信のようにするとスムーズに遊べます。ライブデモ → https://nyatla.jp/tbskmodem/…

C++(MSVC)で仮想継承したクラスのスマートポインタをダウンキャストして返すとCRTがエラーを吐く。。

C++

表題通りのめんどくさいエラーに遭遇したのでメモ書きです。開発環境はMSVCのMicrosoft Visual Studio Community 2022 (64 ビット) - Current Version 17.3.5です。以下のように、仮想継承したクラスのunique_ptrをキャストして返すと、ヒープエラーを起こし…

空中で音波通信できるオーディオモデム

簡単に出来そうでなかなかむずかしい、空気中で安定して通信できるオーディオモデムを作りました。開発用のライブラリと、コマンドライン用のアプリケーションのセットです。www.youtube.com名前をTBSK modemといいます。通信速度は最大1kbpsと低速ですが、…

3GケータイからiPhoneに連絡先をコピーしたメモ

今月で3Gケータイが終了するのでiPhoneに機種変更しました。が、連絡先をiPhoneに自力でコピーするのがめんどくさかったのでメモを残します。 準備 microSDカードとリーダー、またはbluethooth対応のパソコン。3GケータイからvCardファイルを回収るためにつ…

argparseのhelp引数に%を書くときの注意

Pythonの引数解析ライブラリのargparseでhelp引数に%を書くと、特定条件下でパーサーが正常終了しなくなりました。例えば、次のコードはValueErrorを出して異常終了します。 import argparse parser = argparse.ArgumentParser(description='%%') parser.add…

json-schema-coreのメモ

JSON Schema: A Media Type for Describing JSON Documents全然わからんので必要なところだけ拾い読み。 1. Introduction 2. Conventions and Terminology 3. Overview 4. Definitions 4.1. JSON Document 4.2. Instance 4.2.1. Instance Data Model 4.2.2. …

LoRaWANゲートウェイLPS8をTTNv3に接続する

LPS8をTTNv3へ接続する方法です。事前に以下の以下の手順を済ませてください。nyatla.hatenadiary.jp nyatla.hatenadiary.jpTheThingsNetworkV3にLoRaWANゲートウェイLPS8を登録するで取得したTTNクラスターのGateway Server addressを準備してください。 レ…

TheThingsNetworkV3にLoRaWANゲートウェイLPS8を登録する

The Things Network(TTN)のアカウントを作成し、そこにLPS8ゲートウェイを登録する手順です。www.thethingsnetwork.orgTTNへ登録するためには、デバイスやゲートウェイが持つ固有の64bit値であるEUIが必要です。EUIの例: 0011223344556677 00:11:22:33:44:55…

LoRaWANゲートウェイLPS8-JPの初期設定

DRAGINO社のLoRaWANゲートウェイLPS8-JPの初期設定方法です。 www.dragino.com購入したり、譲り受けたりした機器を安全に使用するための準備作業になります。(TTNなどのネットワークサーバに接続する前の下準備です) この手順書では、バージョン1.3.1のユー…

ブラウザ用の計算ドリル

めずらしく最近お勉強に励んでいます。 ・・・が、手計算が信じられないくらいできない。これはまずいということで、練習をするためにオンライン計算ドリルを作りました。 PC,タブレット、スマートフォン、ドリームキャストで使えます。nyatla.jp整数の掛け…

クレカの電子明細PDFをCSVに変換する

確定申告時期ですね。 クレジットカードの電子明細pdfからデータを転記するのがめんどくさかったので、pdfminerを使ってCSVに変換するpythonスクリプトを作りました。イオンカードと楽天カードの形式に対応してます。github.com イオンカード $ python3 ./ap…

Ethereumのウォレットを大量生産する

KeyStoreファイルをいちいち作るのがメンドーなのでたくさん作るスクリプトを書いた。 function a(s){ var a=web3.sha3(s); var p=a.substring(2,2+16); n=personal.newAccount(p); return [n,p]; } var seed="ジャッジメントですの!"; var keys=[]; for(va…

非上場の鉄道株を買った話

今時珍しい、生きている紙の株券を手に入れました。 東証などで売買されている株券は電子化されているので、物理的な”株券”というものは存在しません。非上場の株式会社については、いまだに電子化されていない紙の株券を発行している会社があります。こうし…

pythonの符号なしintとバイナリをいい感じに相互変換する

pythonでint128やらint256を扱ったときに、JsonやDBへそのまま書き出せない。 blobに変換して書きだすとよろしいようなので、関数を作った。 import math def toBlobUint(n): """uintをバイナリに変換 """ if n==0: return int.to_bytes(n,1,byteorder="big"…