【2021年1月版】API無しでYoutube Liveのコメントを取得する

https://github.com/taizan-hokuto/pytchat
本記事で書いたコードは、ほぼ上記Pythonリポジトリの劣化品だ。

続きを読む

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

Electron-Builder (Vue-CLI-Plugin Electron Builder) エラーもないのにアプリが起動すらしなくなる問題

クソ悩んだ

https://drroot.page/wp/?p=201
この記事は、上記記事の続きだ。

概要と症状

2021年1月末現在、こんな感じで再現できる。

vue-cli-pluginでプロジェクト作成

vue add electron-builderコマンドでElectron-builderブチ込む

yarnなりnpmなりでserialportを入れる(というか、ネイティブ向けパッケージを入れる)

electron:serveすると普通に動く

electron:buildしたexeを実行しても即座に終了してなんも起きない

気づいたらelectron:serveも即終了するようになってる

エラーコードも何も起きず、正常終了するフリして即落ちするからマジで何かと思った。

原因

electron-builderが、buildコマンド時にネイティブパッケージを変なふうにリビルドするのが原因
どうもこの時おかしなリビルドをするらしく、起動後即座にbindings(ネイティブバイナリと橋渡しするやつ)を掴み損なって落ちるらしい。
これもビルド時のログを5千億回くらい読み直してようやく理解できたんだが、どうも「electron-rebuild -f -w serialport」すべきところを「npm-rebuild」してるらしく…
もしかしたら、electronにバンドルするnodeではなく、開発で使ってるnpm向けにビルドしちゃってるんじゃないだろうか。

直し方

electron-builderに、ビルド時の余計なネイティブパッケのリビルドやめろと伝えれば良い。
ドキュメントによれば、npmRebuildをfalseにすればいいとある。
https://www.electron.build/configuration/configuration#configuration

electron+vue構成の場合、プロジェクトのルートにvue.config.jsを作り、そこにbuilderへ渡すオプションを書ける。
https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/configuration.html#configuring-electron-builder

今回はserialportを使っているので、こいつをビルドから除外するコードも含めると(前回記事参照)こんな感じだ。

module.exports = {
  pluginOptions: {
    electronBuilder: {
      externals: ["serialport"],
      builderOptions: {
        npmRebuild: false
      }
    }
  }
};

で、もしこの症状に陥った場合、既にBuilderがゴミをリビルドしてしまっているので、もっかい手動でネイティブバイナリのリビルドをする必要がある。
即ち、「electron-rebuild -f -w serialport」を叩き直せばいい…このあたりは前回記事の内容を参照だ。

ちなみに

yarnを使ってるだけでも、何かしらaddした時この余計なリビルド処理が発生しやがるぞ。どうしろってんだ。
今の所気付き次第Rebuildする以外に思いつかんね。

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

ゲームのメモリを監視する ~ ASLRが有効な場合

メモリを監視する

もくてき

ゲームのHPとかを監視するプログラムを作る。
今回はSONIC MANIAを対象に、ゲーム内のデータを取得してみよう。

続きを読む

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

VSCodeでデバッグしようとしたら「パラメーターの書式が違います /d」とか怒られる

VSCodeの進化は早いので(?)、VSCodeのcmdをUTF-8で使うみたいな古めの記事を参考にして、

"terminal.integrated.shellArgs.windows": [
        "/k",
        "chcp",
        "65001"
    ]

とかSettingsに書いてるとデバッグ走らせようとした時変なコマンド叩きに行ってコケるぞ
1日溶かした ファッキン

カテゴリー: 雑記 | 1件のコメント

【DEPRECATED】ニコニコ動画に対応したYoutube-dlをリビルドした(チャンネル限定動画もDL可能)

2022年追記

ニコニコ側の仕様が変わったのかyoutube-dlの対応が間に合ってないのかわからんが、この方法は使えなくなった模様。
恐らくyoutube-dlのログイン周りの挙動を改めれば元に戻せそうなんだがようわかんね。

がいよー

早い話が、有料のチャンネル限定動画も含め、ニコニコから、動画を落としてこれるよと。
そういう記事だ。

続きを読む

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

Electronでserialportを使おうとするとあれこれエラー

App threw an error during load
TypeError: Cannot read property 'indexOf' of undefined
    at Function.getFileName (webpack:///./node_modules/bindings/bindings.js?:178:16)
    at bindings (webpack:///./node_modules/bindings/bindings.js?:82:48)
    at eval (webpack:///./node_modules/@serialport/bindings/lib/win32.js?:1:91)
    at Object../node_modules/@serialport/bindings/lib/win32.js (path\to\your\project\dist_electron\index.js:261:1)
    at __webpack_require__ (path\to\your\project\dist_electron\index.js:20:30)
    at eval (webpack:///./node_modules/@serialport/bindings/lib/index.js?:6:22)
    at Object../node_modules/@serialport/bindings/lib/index.js (path\to\your\project\dist_electron\index.js:173:1)
    at __webpack_require__ (path\to\your\project\dist_electron\index.js:20:30)
    at eval (webpack:///./node_modules/serialport/lib/index.js?:2:17)
    at Object../node_modules/serialport/lib/index.js (path\to\your\project\dist_electron\index.js:1517:1)

環境はwindows8.1、electronが9.0.0、serialportも9.0.0。
実行時に上記エラー。だいぶハマったので解決策を残す。

続きを読む

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

WordPressにファイル上げようとしたら413 Request Entity Too Largeエラー

タイトルはんそです

ワープレの画面では「謎のエラーでこけました」みたいな事言われるんだが、実際はHTTPレベルで蹴られている。
原因はNginxのデフォ設定においてボディが1MB以上あるリクエストを蹴っている為。

何で起こったか

当ブログ、Dockerを使ってhttps-portal+docker-php+mysqlの3コンテナ体制で運営している。
で、https-portalはいい感じにSSL証明書を取ってきてサイトをHTTPS化してくれるリバースプロキシなんだが、中身がNginxなのでこの段階でリクエストを蹴られる。
そのためWordpress(PHPコンテナ上の)でいくらアップロードの許可設定周りを書いても前段のHTTPS-Portalが蹴るので到達しない。

なおす

https://github.com/SteveLTN/https-portal#configure-nginx-through-environment-variables
コンテナ入って設定書き換えるんじゃDockerの意味あんまねーよなーとか思いながら公式のDoc読んでたら普通に設定あった。
docker-composeの環境変数で幾つかのnginx設定を編集できるんだが、その中にリクエストサイズの設定も含まれている。

てなわけでdocker-compose.ymlのhttps-portal内ENVIRONMENT欄に

CLIENT_MAX_BODY_SIZE: 128M

とか書いてdocker-compose up -dすりゃ勝ち。

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

TypeScript+Electronでビルドかけると大量のエラーが出るやつ

ERROR in C:/PATH/TO/YOUR/PROJECT/node_modules/electron/electron.d.ts(****,**):
****:** Cannot extend an interface 'NodeJS.EventEmitter'. Did you mean 'implements'?

こんなのがぶぁーっと出てくる奴。
最初なーんでnode_modules以下は自動でLintかからないはずなのに?って思ったんだけど、
エラー吐いてるのはアンビエント宣言の部分であって実際にエラーが起きてるのは実装部分(Lint対象のコード)って事っぽいね。

解決策は@Typesのバージョンを変える事。
Electronが9.0なのに対し、@Typesが12じゃないといかんところを14とか入ってるのが原因やった。
コマンドで下記をぼーん。

npm i @types/node@12

以上

参考
https://github.com/electron/electron/issues/21612

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

ゲーム(Undertale)のメモリを覗いてHP値を監視する

【追記】この記事はクソだ

http://cheatwhatever.com/blog-entry-20.html
Cheat Engineには、下記手順を自動でやってくれるポインタスキャン機能がある。
あくまで以下の内容は「こういう事をやってるんだ、へー」程度にとどめてほしい。

がいよう

エミュレータで動作するゲームと違い、PCゲームのチートは読み出したいメモリアドレスが一意である保証は無い。
これはただ一度だけ数値を書き換えたい場合と違い、「常にHPの値を監視して変動があったか判定する」ようなケースで問題になる。

今回はPCゲーム「Undertale」を例に、この問題を解決する。
具体的には、

  1. HPを指す動的なメモリを指す、静的なメモリを見つける
  2. 別Processのメモリを読み出すようなプログラムをC++で書く

の2ステップだ。

続きを読む

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

youtube-dlでYoutubeチャンネルの動画を一括DLする

がいよう

Youtubeとかいうクソはいつわけわからん理由で動画やらチャンネルやらが消されるか分かったもんじゃないので、
自分のチャンネル含め公開されている動画を一括で保存する方法を書く。

内容としてはyoutube-dlのちょっと突っ込んだ使い方なんだけど、英語読めるんなら大本のDOC読んだほうが良い。
https://github.com/ytdl-org/youtube-dl

続きを読む

カテゴリー: 雑記 | 2件のコメント