2023年8月8日火曜日

MPLAB X IDEでProjectがLoadingのまま動かない場合

Projectが読み込めない!

 今回も超ニッチなネタです。PICの開発環境であるMPLAB Xで特定のプロジェクトが読み込めない現象に出くわし、(消極的方法で)自力解決できたので記します。
 PC新調に伴い環境を入れ直したのですが、なぜかPIC32系のプロジェクトがLoading...で固まって読込みできなくなりました。PIC16系は読み込めるので謎です。環境はMPLAB X 6.10です。
 

2023年4月24日月曜日

Bromiteの開発停止か?代わりのブラウザは…Cromite!


Bromite死す?

  ほぼChromeの使い勝手を踏襲しつつ強力な広告ブロックができるブラウザことBromiteですが最近開発が止まっています。公式には開発停止・中止の案内は出ていませんが、Chromiumのメジャーバージョン換算で3以上も古いバージョンで止まってしまっています。古いブラウザはセキュリティホールとなるので芳しくありません。Githubにも動きはありませんし、これは事実上開発停止しているとみていいでしょう。
 

代替ブラウザ

 ここでBraveとかを紹介しても望まれていないことは明らかなので、純粋なBromite後継を考えます。
Githubのissueを見るとAbandonedとかいうワードが踊っていますが、 ここでよく紹介されているのがuazo氏のbromite-buildtoolsです。これはBromiteを自分の環境で簡単にビルドするためのツール群です。「ビルドとか面倒くさい」と思われる方のために、Android用のapkはビルド済みのものが配布されています。もちろんBromite公式ビルドではないので自己責任にはなりますが。
2023/08/10追記:
 同uazo氏の非公式ビルドがBromiteフォークの「Cromite」として名前新たに継続するようになりました。以下のリンクもCromiteのものに差し替えました。
 

インストール

 apkを落としてきて インストールするだけです。詳細は割愛します。
 

 さて、インストールするとBromiteではなくChromium Cromiteとして認識されます。アイコンにもアプリ情報にもBromiteの影はありません。 つまり良くも悪くも既存Bromiteに上書きインストールされないので、併用できる代わりに設定類は一切引き継がれません。これが一番面倒くさい点でしょうか。これさえクリアしたらいつも通りに使えます。
 

おすすめ設定

特にいじらずとも使えますが、 利便性のために多少触りました。

・ 「検索候補の関連性を高める」をオンに
サーバーへの事前送信なのでプライバシーレベルは当然下がりますがどうせ検索するワードなので。
 
・「Allow custom tab intents」をオンに
 Web View的なやつです。

・「ホームページ」をオンに
・「Use for new tabs」をオンに
・「このページを開く」を「chrome-native://bookmarks/folder/1」に
※ブックマークのパスは希望のフォルダを表示して"i"アイコンを押すと見られます。
SpeedDial的にブックマークを頻用する場合はマストな設定。
 

良い点

 何と言っても開発が続いていることです。それにBromiteから多少の機能追加があります。
 
広告ブロックフィルタが複数選べるようになっている
好きなフィルタのURLを手動で追加できる 
広告ブロックを無効化するサイトを指定できる
 
 
 フィルターリストがこれだけありながら日本向けはありません。ですがフィルタの手動追加ができるので無問題。

 悪い点

アイコンがChromiumになって寂しい Cromiteで緑のアイコンになりました。
 
Bitwarden(パスワード管理アプリ)の自動入力が機能しない

→ Bitwardenに要望を出しました。反映されるかは開発側次第ですが。以下は詳しい内容です。

 Bitwardenはオートフィルの際に「アプリケーション名」「アプリケーション内のコンテンツ名」のいずれかを参照します。普通のアプリケーションに対するオートフィルでは前者で事足りるのですが、ブラウザのオートフィルはコンテンツ毎に提示内容が異なるため後者の必要があります。この2つを区別するため、Bitwardenではブラウザのパッケージ名をハードコードしており、これに合致するもののみブラウザと認識するようです。Githubでコードを読む限り。(BitwardenもGithubでホストされています)
 さて、今回の新生Bromiteはパッケージ名がorg.bromite.bromite.devであり、本家のorg.bromite.bromiteと完全一致しません。そのためブラウザと認識されず、どのサイトを見ても同一のオートフィル提示しかされないようです。
 解決方法としては、パッケージ名をオリジナルに揃えるか、Bitwardenに新しいパッケージ名を登録するかが考えられます。自分でBromiteのビルドをするならパッケージ名の変更でいいですが、そうでないならuazo氏に掛け合う必要があります。同じことが以前issueで提案されており、氏は「変更の予定はない」とのことでした。でしたら次はBitwarden側への要望ですが、こちらもissueに一度提案があったようです。その際は「再現性なし」で敢え無くCloseされていましたが、返答を見るに正しい意図が開発側に伝わっていない節があります。そのため、詳しい経緯を添えて新たに提案を送りました。「(知名度の高くない)フォークに対しても認めるのか」「そもそもリストインだけで解決するのか」など未知の要素も多いですが、対応を期待して待つことにします。

Hanye NVMe 2TB SSD HE70 のおみくじの結果は

巷で話題のSSD

 YMTCのハイエンドNANDフラッシュが制裁で流れて来て出来上がった、無名メーカーのハイパフォーマンスSSDが話題ですね。Amazonセールでひとつポチってみたので速攻分解してご報告します。
 買ったのは、Hanye社のNVMe SSD 2TB (HE70)です。SUNEASTHIKSEMIMonsterStorage あたりでも中身同じというか同じおみくじのSSDがありますね。
 

2023年4月21日金曜日

XOSS NAV のレビュー

XOSS G からの乗り換え

 2年間ほどXOSS Gを使っていましたが、GPSの初回取得が遅かったり一度GPSロストすると記録中止しない限り二度と拾わなくなってしまう場合がある不具合があったりで、わりと不自由していました。時刻表示が出ないのもイマイチでした。
 今回、XOSS NAVがセールで安かったので思い切って乗り換えてみました。
 

2023年2月12日日曜日

Visual Studioのnugetにプロキシを設定する

Visual Studio と nuget

 Visual Studio にプロキシを設定する方法としてはdevenv.exe.configファイルに直接記述する方法がありますが、これだけではnugetに設定が適用されません。というかnugetは別システムのため独立した他の設定が必要です。
 未設定で使用すると「nugetパッケージの管理」画面で「エラーが発生しました」「メタデータを取得できませんでした」と怒られます。ServicePointManagerのエラーになることもありました。
 ググっても解決法が見つかりませんでしたがNuGetの設定を直接適用することで動いたので記します。

2023年2月9日木曜日

業務スーパー「はちみつ ジンジャー」レビュー


はちみつ ジンジャー

 業務スーパーで300円台で売っていたので買ってみました。はちみつジンジャーが飲みたいから…ではなく酒の割材として。これがなかなかのヒット商品でした。
 
 以前このシリーズのレモネードを買ってみてハズレだったので抵抗がありましたが、物は試しと買ってみた次第です。 

2023年2月5日日曜日

HyperX Alloy MKW100 RGB レビュー

赤軸キーボード

 HyperX Alloy MKW100 RGB がAmazonタイムセール祭りで安かったので買ってみました。青軸にも飽きたので今回は赤軸で(赤軸も過去に使ったことありますが)。
 HyperXなので無名中華キーボードと違って作りも期待できますし、なんと2年保証もあります。
 

2023年1月18日水曜日

インターレースとプログレッシブの混成ファイルの扱い方

60i + 24p

 何とは言いませんが、30fps[29.97fps]インターレース(=60i)24fps[23.976fps]プログレッシブ(=24p)混成構成であるmpeg2を扱うことになりました※1。
 AviutlやAvisynthで普通に読み込みはできるものの、デインターレースや逆テレシネ化を行うとフレームレートないしビデオ長が狂って正しい成果物を得ることができずかなり悩みました。今回それを自力解決できたので記します。
 ちなみに下記の内容は「インターレース解除せずにプログレッシブにしちゃった」系のエセインターレースに対処するものではありません。
 
※1 正しくは今回の24pは48iの内部構造でありインターレースの一種と捉えられるが、実際の挙動と説明上の簡便さを踏まえプログレッシブと表現する。

対象とする環境

入力:
 60iと24pの混成mpeg2
 
動画編集ソフト:
 Aviutl、Avisynth
 
デコーダプラグイン:
 L-SMASH Works
 

原因

 デコーダ段階では混成フレームレートを正しく認識して処理されるものの、後続のフィルターではプログレッシブなのかインターレースなのか正確に判定する術がないため、フレームレートかビデオ長が狂います。フレームレートが狂うと言っても、可変フレームレートになるのではなく、少ないフレームを実ビデオ長に伸長するので音ズレが顕著になります。
 

対処法

Aviutl

「ファイル」「環境設定」「入力プラグインの設定」「L-SMASH Works... の設定」
Apply repeat flag」にチェックを入れる。ついでに「Field dominance」をTop->Bottomに。
そして動画を読み込み直す。

Avisynth

LWLibavVideoSource関数のパラメータに「repeat=true,dominance=1」を付与。

(RFF出てくる際のフィールドオーダーはどうせTFFなのでTopBottomで固定していいと思う)

詳しい解説

 MPEG2のフレーム(正確には拡張ピクチャヘッダ)にはプログレッシブをインターレースの形式で扱うためのRFF(Repeat First Field)というフラグがあります。
 通常、30pを60iにする際は1フレームを2フィールドに分割しますが、24pを60iにする際はそのまま2分割しても48iで足りないため、3-2プルダウンと言って各フレームを3フィールドないし2フィールドに分割して、2フレームから5フィールドを作ることで60iにかさ増しする戦法を取ります(テレシネ化)。なお、24pからかさ増しされた60iを再生機サイドでインターレース解除しても生成されるのは30pであり、24pにするには無駄なフレームを間引きしなくてはいけません。これが逆テレシネ化です。
 テレシネ化は、60iにするためだけに貴重なビットレートを割いて冗長なフレームを作り出す明らかに無駄な作業です。そこで、24pを実データ48iとして送出して、再生機サイドでテレシネ化して60iにするなり24pに戻すなりする方法があります。こういうフレームのマーカーとして機能するのがRFFです。
 RFFがついているフレームは、Repeat First Fieldの名前の通り、最初のフィールドを3フィールド目に転用します。フレームの半数にRFFがあると、ちょうど2フレームから5フィールドを生成できるので再生機サイドで60フィールド/秒を再現できます。また、RFFを無視すると2フィールドから1フレームを合成して24pに戻すこともできます。
 L-SMASH Worksのデフォルト設定では「Apply repeat flag」がオフになっているためプログレッシブにしてくれます。しかし60iと24pが混在して件のような困った状況になります。ゆえにオンにすることで、RFFのある区間も60iに変換され、全体が60iのごく普通の動画として扱えるようになるのです。結局24p化するので無駄な作業といえばそのとおりなのですが、扱いやすには天地の差があります。

2022年12月17日土曜日

TB62709をArduinoで動かす

TB62709とは

 TB62709は7セグメントLEDのコントローラ及びデコーダとして機能する東芝のICです。アノードコモンの最大4セグメントまでを制限抵抗なく1チップでドライブできます。データシートを見るに2008年かそれ以前に生産されたICで、今や単体では手に入らないと思われるものですが、このIC(TB62709NG)が搭載された7セグメントLEDボードを某所で入手したので動かしてみます。ポンバシのあの店です。
 

ICシリーズ

 今回入手したのはTB62709NGですが、非常にシリーズが多くややこしいです。調べてわかった範囲で記します。

TB62709

N, NG, F, FGがあります。GがついているとDINのみならずDOUTが使え、カスケード接続できるようですが詳細不明。NとFはパッケージ違いです。鉛フリー。

TB62785

パッケージ違いでNG, FTGがあります。TB62709と酷似しており、絶対Vddがやや低いことと、鉛フリーが記載されていない点しか違いが見つけられませんでした。少なくとも通信フォーマットはTB62709と同じなので、同一ライブラリで動くと思われます。

TB62705

パッケージ違いでCP, CF, CFNがあります。
8ビットシフトレジスタ+ラッチ+定電流のみです。62709のようにデコード機能や明度変更といった便利機能はありません。ロジックICらしく、CLK, DIN, LAT, ENピンがあります。

TB62706

16ビットシフトレジスタであり、それ以外は62705と同じ。
 

通信

 通信はCLK、DIN、LOADの3本。電源は5Vです。通信規格はI2CでもSPIでもないですが至極シンプル…というか古き良き普通のシフトレジスタ+ラッチです。当然ACKもエラー訂正もないので、向こうが正しくリッスンしてくれていると信じて一方的に送りつけるだけです。まあ古いICですし。
 お陰でクロックは16MHzまでOKらしいです。
 

Arduinoライブラリ

 マイコンは何で開発してもいいのですが、ライブラリ化することを考えてArduinoとしました。TB62709とTB62785に対応しています。カスケード接続には非対応です。
 
 
 大して複雑な操作もないので、Exampleで使い方を察してください。それなりに使える関数を作ったつもりです。
 
 

2022年8月6日土曜日

限界運用の記憶域プールでHDD交換する方法

HDD逝く

 2台で記憶域プールを構成しているうちの1台が死にかけなので交換しました。特殊構成のためか、やってみたら交換手順が想定と違って焦ったので備忘録として記載します。
 特に、HDDの台数が少なく(2台とか)、容量違いで、かつ余ってる記憶域も"シンプル"で活かして使ってる人は陥りやすい問題かと思います。