WSL2のUbuntu 22.04 LTSにWineがインストールできない

$ sudo apt install --install-recommends winehq-stable
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 winehq-stable : Depends: wine-stable (= 9.0.0.0~jammy-1)
E: Unable to correct problems, you have held broken packages.

公式ドキュメントに従ってんのにこれ
解決策はこれ
https://askubuntu.com/questions/1502078/wine-installation-error-winehq-stable-dependent-wine-stable-9-0-0-0-0jamm

以下訳

sudo apt install aptitudeでaptitude入れてsudo aptitude install winehq-stable

で最初に出てくる↓に対してnで拒否ると色んなライブラリがずらーっと一杯出てくるのでy

     Keep the following packages at their current version:
1)     winehq-stable [Not Installed]

すると途中でもっかい確認が入る↓のでY

Do you want to continue? [Y/n/?] Y

で最新版が入る

カテゴリー: IT | コメントする

3線改造式AOM5024で本格バイノーラルマイクを作ろう with 3Dプリンタ

美耳・改

https://github.com/DrRoot-github/bimimi-5024

続きを読む

カテゴリー: 電子工作, 音響関係 | コメントする

Typescript + Sequelizeをちゃんと動かすには

typescriptでSequelizeを使う

概要

TypescriptにおけるORMの選択肢は俺の知る限り3つメジャーなものがある。
typeorm、Prisma、Sequelizeである。
何れも試した結果、一番マシなものはSequelizeという結論に達した。
軽く触れておくと、2023年11月現在、typeormには設定一つでデッドロックを起こして即死させる致命的なバグがあり、一回プロダクションでやらかしてえらい目にあった。
一方機能面で非常に優れているPrismaだが、何故かsqliteのmemoryモードが使えないという仕様があり、テストが非常に書きにくいという問題がある。
というわけで消去法的に選んだSequelizeだが、これもこれで中々問題があり、まともにCRUD操作ができるようになるまで苦労したので動くまでの記録を示す。

前提

今回試した環境は以下。

  • typescript 4.9.4
  • electron 22.0.0
  • vite 4.0.3
  • sequelize 6.33.0
  • sequelize-typescript 2.1.5
    electron-vue-viteライブラリでボイラープレートを生成しており、この他にもelectronなのでvueとか使ってレンダラープロセスを書いているが割愛。
    本体のsequelizeはjavascriptベースのライブラリであり、typescript向けのラッパーとしてsequelize-typescriptを用いている。
    この「sequelizeはなまじ古くてtsに対する対応が甘め」という欠点をラッパーライブラリでゴリ押しているのが2023年現在の現状である。tsの公式対応がアナウンスされている7系はまだalphaだ。

結論

ts-configのcompilerOptionsに"useDefineForClassFields": falseを追加する。
これはts 3.7から導入された機能で、現在ではデフォルトがtrueになっている。
これをしないとどうなるかというと、sequelizeでgetしてきたオブジェクトの中身がgetterの動的な注入を阻害してundefinedになる。
具体的に言うとこんなコード↓を書いても通らないということだ。

const res = await User.create({name: "testit"});
expect(res.name).toBe("testit");

思うこと

ts碌なORMが無い
sequelize 7系はよ
TypeORMは開発がやる気なくて駄目だ
あんなもんをNestJSは公式で推すなバカ

追記
色々試した結果体外Sequelizeもゴミだった
Typeormがマシとか思いもよらんかった

カテゴリー: IT | コメントする

CCFOLIAのカスタムCSSを書いた

https://github.com/DrRoot-github/ccfolia-css

あとでドキュメントもっとかく
ちなみに頼まれて作ったものなので俺は全くCCFOLIAを使っていない なんだそれは

カテゴリー: IT | コメントする

ロックマンエグゼ6 改造カードシミュレーターをつくってみた

gaiyou

エグゼ6の改造カードをがちゃがちゃ出来る

https://drroot-github.github.io/mmbn6-modcards/

こんごのかだい

保存と復帰みたいなのはできるようにしたい
バグがあったらこの記事にコメントよろしく
ナビカスシミュもつくりたい

リポジトリ
https://github.com/DrRoot-github/mmbn6-modcards
一番手っ取り早いのはPR出すこと

カテゴリー: IT | 8件のコメント

壊れたアケコンを修理してみた!

アケコンのレバーが効かなくなったので、レバー単体で交換してみました。
今回はそのレポート記事になります!

交換に用いるのはこちらのレバー。4000円とお高いですが、クリアなボールがかっこいい!
file

アケコンを分解してレバーをつけかえていくのですが、若干異なる規格に沿っているので一度お互い分解しないと取り付けができません。
分解中にネジがナメてしまったので、ネジ外し(1700円)と電動ドリル(6500円)を急遽発注。
file


分解したら機械油のついた部品が弾け飛んでホコリまみれになり元に戻らなくなる


不燃ゴミ

file

総評
4000円で買ったものをそのまま燃えないゴミにすると辛い
本来いらなかった余計な出費が2万近くなった
二度とやらない
カス

カテゴリー: 雑記 | コメントする

yarn devみたいなノリでts-node + watchを実現するには

英語が読める?じゃあこれ読んで終わりな!
https://stackoverflow.com/questions/58187115/typescript-paths-not-working-in-an-express-project

(っ◞‸◟c)

何が問題なのか

expressみたいな鯖をnode + tsとかで自前で環境入れていくと、vue-cliでやってくれるようなdevコマンド一発でホットリロードつきビルドが標準で出来ない。
でnodemon使って自前でそのあたりのスクリプト書くんだけど微妙にnodemonのドキュメントが不親切で情報がとっちらかってるのでまとめておく。

結論

devDepenciesにnodemon, ts-node, tsconfig-pathsを追加して、プロジェクトのルートにnodemon.jsonを作成する。
tsconfig-pathsはtsconfigでpathsを使わない(インポート時のパスを@/とかから始められるエイリアス的なやつ)ならいらないけどあると便利だよ
jsonの中身はこんな感じ

{
  "ignore": [
    "**/*.test.ts",
    "**/*.spec.ts",
    ".git",
    "node_modules"
  ],
  "watch": [
    "src"
  ],
  "exec": "node -r tsconfig-paths/register -r ts-node/register ./src/index.ts",
  "ext": "ts, js"
}

あとはpackage.json内のscriptで"dev":"yarn nodemon"とでも書いておけばよろし。

余談

nodemonは何処にも書いてないんだがどうも標準でts-nodeを使ってくれるらしく、前述のパスの問題が気にならないなら
yarn nodemon src/index.tsとかで一発らしいよ。びっくりだね。ドキュメント書いとけ。

カテゴリー: IT | コメントする

しばいぬAPI

https://drroot.page/wp/wp-content/uploads/2022/09/shibes.html

https://shibe.online/
しばいぬAPIのクライアントページを作成した。
公式サイトでも出来る事だが、ボタン一つで更新をかけられるようになっている。

カテゴリー: IT | コメントする

Youtubeの配信チャットを取得する(全体チャット編)

https://drroot.page/wp/?p=227
この記事でアプリケーション(Node.js)からブラウザのフリして配信のチャットを引っこ抜くコードを紹介したが、正規表現でContinuationを引っこ抜く処理に抜けがあり、上位チャットしか取ってこれてない状態だった。
というわけで上位でなく全体のコメント向けContinuationを取得するコードも書いた。以下でcontinuation keyがstringとして得られる。

// videoId=配信ページとかのURL末尾のID
const res = await axios.get('https://www.youtube.com/live_chat', {
  headers: "user-agent":
      "Mozilla/5.0 (Windows NT 6.3; Win64; x64) " +
      "AppleWebKit/537.36 (KHTML, like Gecko) " +
      "Chrome/86.0.4240.111 Safari/537.36",
  params: { v: videoId }
});

const html: string = res.data;
const matchedCtn = html.matchAll(
  /"reloadContinuationData":.*?"continuation":"(.+?)"/g
);
const matchedCtnList = [...matchedCtn];

// matched = Regex結果の集合 一個の結果が更に配列でマッチ結果を持つ
// Youtubeの場合matched[0]が上位チャット、matched[1]が全体チャットの筈
const continuation = matchedCtnList[1][1];
カテゴリー: IT | コメントする

AOM-5024L-HD-Rは3線改造可能だった

低コストな高音質マイクをつくろう

バラ売りカプセルのTier1襲来

AOM-5024は、一般向けにバラ売りされているマイクカプセルの中では最高音質のものだ。
https://www.marutsu.co.jp/RatedList.jsp?goodsClassCode1=15&goodsClassCode2=0062&goodsClassCode3=0005&ids=0&resultsMaxShowLine=100&resultsShowPageNumber=1&resultsSortColumn=ratedValue8%3ADESC&rohs=0&sdg=0&shopNo=3

以前(2年半も前!?)にファーストインプレッション記事を書いたのだが、この時は3線式改造ができないものだと思われていた。
https://drroot.page/wp/?p=119

3線式改造というのは、エレクトレットコンデンサマイク(以下ECM)の内蔵FETが通常ソース接地回路になっているのを、ソースフォロアに改造して歪み率や最大入力レベルを改善する改造だ。
細かい話はShinさんの~というブログの記事を参照すると良い。
https://ameblo.jp/shin-aiai/entry-11840658464.html

ところがこの記事にコメントをくださった謎の人物がおり、海外のフォーラムでこのマイクを分解している画像へのリンクをいただいた。感謝。
https://imgur.com/t/microphone/sEYEgP3

この画像はマイク本体を引っ剥がした裏面の回路まで載っており、何故3線改造が上手く行かなかったか、どうすれば出来るのかが分かる代物だった。

やってみよう


マイクカプセルの裏側をよーーーく見ると、個体にもよるんだがGND端子のすぐ上あたりに2つのスルーホールが見える場合がある(以下乳首)。
この2つを周囲のランドから切り離す事で、ソースとGNDを分離することができる。
乳首は上記画像の赤丸で囲った部分がそうなのだが、カプセルによっては透けて見える場合とそうでない場合があるので基本は決め打ちになる。
ソース端子を真上の空間ごとごそっと切り出す感じでランドを削ればうまくいくぞ。

ソース端子を削り出したところ。GNDははんだ付けする場所がないので、「+」とかかれているあたりをこれから削り出す。

GNDの削り出しまで行ったあと、配線したところ。そこそこのサイズなので、EM158とかとくらべりゃ遥かに作業しやすい。

実際どうなん?

ブレッドボードで組んだ感じは文句なしに過去最高のノイズ性能で、良質なファンタム電源があればバイノーラル音声作品とかにも耐えうる性能を確信している。
そもそもデータシート上でSN比80dBなので、Free Space(通称白耳)と同じ性能を持っている事はたしかなわけだ。
今の所あれこれ回路を組んでる状態なので、ちゃんとモノを作って上げるのは後日になる予定。

カテゴリー: 電子工作, 音響関係 | 1件のコメント