投稿

[無変換]を[Ctrl]にしたい(Kubuntu26.04 / Wayland)

イメージ
GMKtec EVO-X2(64MB)を買ったのだが、ずっと放って置いたからホコリまみれです(笑) このところの円安と物価高、特にメモリ関係やSSD等の異常な値上がりのせいで、今の価格は 買ったときより10万円も高くなってるよ!恐ろしや・・・ 128MB版を買っておけば良かったかもなぁ・・・ んで、Kubuntuも新しいLTS版になったので、やっと、新しいマシンをセットアップする気になったよ。 Kubuntu26.04ではWaylandが標準になったらしいので、xkbの設定をいじってもだめだろう。 で、Geminiくんに相談したら、Kanataという素敵なツールを紹介してくれたよ! さっそく、インストール開始です。 インストール $ sudo apt update $ sudo apt install kanata 設定ファイルは LISP風のS式で書く そうだ!ステキ(笑) 設定(/etc/kanata/config.kbd) (defsrc muhenkan ) (deflayer base lctl ) [無変換]キー を [Ctrl]に変更するだけ ならこんなに 簡単でした ! で、少し使ってて気づいたのだが、 トラックポイントの動作がもっさり になってしまた!! 実は Kanataはマウスもエミュレートできるようで、そのせいで、トラックポイントにも影響してしまうようだ。 なので、デバイスを指定してあげることに・・・ 設定(/etc/kanata/config.kbd) (defcfg linux-dev /dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd ) (defsrc muhenkan ) (deflayer base lctl ) これで、キーボードだけが対象になるので、トラックポイントに影響が出なくなった! めでたしめでたし★ ふんどしの持ち主 Kanaka

[無変換]を[Ctrl]にしたい(Kubuntu24.04)

イメージ
無変換キーは使いもしないのに "よい場所、取りすぎ問題" を解決しましょう! まあ、やることは簡単でした! xkbの設定を書き換えれば解決できます! キーコードと設定のシンボル名の対応は Honmushi blog さん が教えてくれています。 大変助かりました。 xev コマンドでキーコードを調べて、/usr/share/X11/xkb/keycodes/evdev  を見ればよいようですね。 無変換キーのシンボルを調べる $ xev|grep keycode state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES, state 0x0, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, state 0x0, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, $ grep 102 /usr/share/X11/xkb/keycodes/evdev <MUHE> = 102; // Muhenkan ここから、 無変換 キーはキーコードが 102 で、シンボルは <MUHE> だと言うことがわかります。 私の場合、自分でしかこのPCは使わないので、グローバル設定を書き換えることにします。 設定ファイルは /usr/share/X11/xkb/symbols/jp です。 まあ、バックアップをとってからいじりましょうね。 /usr/share/X11/xkb/symbols/jp ... xkb_symbols "common" { ... key <MUHE> {[ Control_R ]}; }; ... 設定を反映させる $ setxkbmap -layout jp <MUHE> を Control_R として設定するだけです! 本来は Control_L でもいいはずなのですが、私の環境ではうまく動作しませんでした!! なので、 Control_R にしたら、めでたく、[Ctrl]キーとして動...

親指シフト入力をサービスで使いたい!(oyainput / Kubuntu24.04)

イメージ
キー入力で親指シフト入力を使い始めて、2年目になりました。 ただ、あまり日本語入力をしないので、全く上達しませんが(笑) といっても、最近はローマ字入力より手が勝手に親指シフトにシフトしています。 つまり、ローマ字入力は遅くなったとも言える…… それはともかく、Linuxでは素敵な親指シフト入力ソフトがあります! INWORKSさんが公開してくれている oyainput(おやいんぷっと) です。 とてもありがたいことですな★(感謝) fcitx5-mozcを使っているなら、 KDEシステム設定 > 地域の設定 > 入力メソッド  で mozc を追加しましょう! oyainputはターミナル上で実行するだけで、親指シフト入力モードになってくれます。 これをサービスに登録して、ログイン毎にいちいち実行しなくてもいいようにしましょう! ただし、 現在はIMEがfcitxから、fcitx5に変わった ため、うまく動作しなくなっています。 ソースがgithubで公開されている ので一部を直せば動作できると burao mimaさんが修正 してくれています。 で、これを利用してしばらく使っていたのですが!!! なんと、IMEがONのままでロック画面になった時!大変なことに! oyainputはキー入力を横取りして、ローマ字出力に変えてくれるのですが、 パスワード入力画面でこれが有効のままだったため、パスワードが入力不可に! という悲惨な事故に会いました。 実は、oyainputには[PAUSE]キーでこのローマ字変換モードを一時停止できるのですが、今どきのキーボードにはそのようなキーがないのがほとんどです! と、いうわけで、 [PAUSE]でなく[CapsLock]を一時停止キーに変更してみました。 するとどうでしょう!快適です! mozcのキー設定で[CapsLock]を押すと、英数入力モードに切り替わるので親指シフト入力中にローマ字変換が停止され英数入力がスムーズに出来るようになりました。 パッチを作ってみたので、以下の手順を実行してね。 oyainput.patch ソースのコンパイル # コンパイル環境と日本語入力環境のインストール $ sudo apt-get install -y git gcc make fcitx5 fcitx5-...

TrackPoint Keyboard (トラックポイント キーボード)の中ボタンを無効化する

イメージ
分割キーボードなどの自作キーボード界隈にちょっと足を踏み入れたのですが、結局TrackPoint Keyboardを買ってしまいました。 とはいえ、無線ではなくUSBです! どうせ、デスクトップで使うし、無線はバッテリー 切れとか面倒くさいので…… Kubuntu24.04で利用し始めたのですが! スクロールする時に 例の 中ボタンでのペースト 機能がタイミングによっては働いてしまうことがあるのです。 で、 ノートパソコンと同様にxinputで、無効に しようとデバイスリストを表示させたら! なんと!  " Lenovo ThinkPad Compact USB Keyboard with TrackPoint " という同一デバイス名が4つもあるではないですか! 同一デバイス名が4つ $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ oyainput id=14 [slave pointer (2)] ⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=12 [slave pointer (2)] ⎜ ↳ ELECOM ELECOM BlueLED Mouse id=7 [slave pointer (2)] ⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=10 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard ...

Python venvで、pythonのバージョンを指定したい

Python3.3以降、仮想環境のvenvが導入 されています。 以前は virtualenv を使ってましたが、もうPython2とかを開発することはないので・・・ venvを使っていこうと心に決めました(笑) で、仮想環境を作ろうと思い次のようにコマンドを入れました。 仮想環境を作る $ python -m venv project $ cd project $ . bin/activate (project) $ python -V Python 3.10.12 もちろんうまく行きますよね!現在の環境はPython3.10.12ですから、これで正解です。 そんでもって、違うプロジェクトで、 Python3.4環境が必要 となりまして、 Python3.4をインストール後以下のコマンドを叩いてみると!! Python3.4の仮想環境を作る(失敗) $ python -m venv -p python3.4 project3.4 usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps] ENV_DIR [ENV_DIR ...] venv: error: unrecognized arguments: -p はい、エラーがでました!! ん?なんで、virtualenv時代はこれで良かったのに!! -p オプションがない なんて!! 使えないなぁ・・・virtualenvでは使えたのに・・・ なんて思った 私のほうが使えないやつ でした(笑) 年取ると頭が固くなるのだよ! よ〜く考えたら、-p オプションなんていらないのでした! だって、今は venvをモジュールから実行している のだから・・・ そう、ここでの python コマンドは python3.10.12 へのシンボリックリンクじゃん。 つまり、Python3.4環境が欲しければ、 python3.4上でモジュールを実行するだけだった のです!! 自分の頭の固さが嫌になりますな☆ Python3.4の仮想環境を作る(...

ファイルに行番号を付けて表示したい

行番号を付けてテキストを表示したいと思った! 特に意味はない。思いついただけ・・・ で調べてみると・・・ sed コマンドを使って出来るようです。 もっと調べたら、 cat コマンドに -n オプションをつければいいらしい・・・おわり。 で、これでは楽しくないので、車輪の再発明になるが、 sed コマンドを使ってやってみようと思います。 以下のファイルに行番号を付けてみる感じで・・・ 内容は気にしないことに。 test.txt [My favorite video games] * "Super Mario Bros." * "Legend of Zelda" * "Metroid" * "Castlevania" * "ASSASSIN'S CREED" * "Horizon Zero Dawn" * "Horizon Forbidden West" * "Ghost of Tsushima" * "Rise of the Ronin" * "WILD HEARTS" まずは、sed を使ってみる。    sedで行番号表示 $ cat test.txt|sed = 1 [My favorite video games] 2 * "Super Mario Bros." 3 * "Legend of Zelda" 4 * "Metroid" 5 * "Castlevania" 6 * "ASSASSIN'S CREED" 7 * "Horizon Zero Dawn" 8 * "Horizon Forbidden West" 9 * "Ghost of Tsushima" 10 * "Rise of the Ronin" 11 * "WILD HEARTS" 確かに表示できる! でも、行番号で改行されちゃう・・・ なので、sed のサブコマンド ...

調子にノって、gitを使う・・・(ブランチ名を表示したい)

今更ながら、gitですよ! 大昔にちょっと使ったんですが、一人で作って一人で遊ぶ分には、 バージョン管理いらないかなと思ってしまって・・・バカでした (笑) 結局、 OLDみたいなサフィックスがついたファイルが大量に作られていく。。。 この管理のほうが面倒になってきてしまった。 んで、やっぱり、要りますなバージョン管理・・・ というわけで、お家サーバにgitのリモートリポジトリを設定することにしました! GitHubじゃないところはご愛嬌☆ すっかり、コマンド等も忘れてしまい、この機会にうろ覚えだったgitの仕組みも勉強しようかと・・・ で、実際にシェルで作業していると、ブランチ名が表示されていると嬉しいなと・・・ まあ、世の中にはそんな人は居ることは百も承知ですが・・・ かる〜く調べてみると Ubuntuとかでgitをインストールすればbash用の__git_ps1関数も一緒に付いてくる らしいです。 でもこの関数は、ちょとリッチすぎました!書式を指定できたり、云々・・・ そんなに機能はいらないし・・・ まあ、なんだかんだで、 車輪の再発明をしようではないですか!! 勉強がてら・・・ gitのブランチ名を取得する まずは、gitのブランチ名を取得したいと思います! gitのbranchコマンドを叩けば、ブランチの一覧が表示され、カレントのブランチ名の前には'*'が付加されています。 ここを取り出したいので、ここは、sedコマンドに登場していただきます・・・ ブランチ名の取得 $ git branch --list dev * master $ git branch --list|sed -ne 's/^\*\s*\(\.*\)/\1/p' master めでたく、取り出せました! まあ、'\s'のあとの'*'は冗長かもしれませんが・・・ bashに設置する bashに設置しようしとして、初めはsedの出力をそのまま使ってみたのですが・・・ そりゃそうでしょ、という結果に・・・ .bashrc(失敗) branch=$(git branch --list | sed -ne 's/^\*\s*\(\.*\)/\1/p') PS1='\u@\h{$branch}...

Raspberry Pi Pico互換ボード - YD-RP2040

イメージ
とってもお安いRaspberry Pi Picoの互換ボードを買ったので、ここに記しておくこととする。 Aliexpressのセールで、YD-RP2040が250円で買えたよ! ラッキー! しかも、 Flashメモリが16MB版 ですぜ! 前に買ったときは、4MB版で330円でした! 今はドル高だから、Raspberry Pi Picoが800円ぐらいするからな・・・ Pico互換ボードなので、ピン互換性は完全ではありません!   Pin35 : ADC_Vref ⇒ GP29   Pin37 : 3V3_EN   ⇒ GP23 と、変更されてます。 あと、 USERスイッチ が GP24 に、 WS2812 (LED)が GP23 に割り当てられていて、GPIOが余すところ無く、全て使われています。 はっきり言って、Picoより使いやすい!! それと、デバッグポートに3V3が来ているのも非常によい★ すべてのピン配列は、 Googleでどうぞ ! WS2812はPin37とGP23を共用しているので、 WS2812を使うときは WS2812の右上の R7をジャンパ しましょう。(ロットによっては表記がR7じゃなく、RGBなものもある) まあ、互換性についてはPicoを買う予定はないので、気にしな〜い・・・ しかし、『 Raspberry Pi Pico 』って名称は何とかならなかったのかね〜 Raspberry Pi がかぶってて、検索しづらいって・・・ Raspberry Pico でよかったよなぁ〜絶対に・・・ では、PlatformIOでこのボードを使っていこうと思いますが、 それはまたのお話で・・・ おしまい

導通チェッカー (ATtiny13A使用)

イメージ
テスターが重いので、導通チェックだけのためにいちいち取り出すのが面倒になった私! ならば、導通チェッカーを作ろう!と思い立ち、トランジスタで簡単なものを組もうと思ったのだが・・・ 自分で作る前に、世の中の人に聞いてみることに! 簡単なものは、防犯ブザーを改良して・・・みたいなのがあったけど・・・ 測定電圧に何ボルトかかるかも怪しいので、逆電圧をかけた場合を考えると、これはやめたほうがいいだろう・・ 高機能なものになると、回路がやたら複雑になって、作るの面倒くさいなあ・・・ と思ってたら!! 素晴らしく簡単で、マイコン使ってて高機能で便利そうなものを発見!! ChaNさんの『回路内導通チェッカ』 です!! なんと!ATtiny13と工具箱にありそうな簡単な部品だけで出来そう!! しかも、 抵抗値によって音色が変化する とか最高ですか! というわけで、作ってみた! ChaNさんの回路やプログラムは 簡潔に書かれている ので、 とても勉強になります★ ありがたや〜 作ってみると、いろいろ改造したくなるのが人情です(笑) というわけで、改造することに! ※改良ではない 改造した点 手持ちの抵抗器で何とかなるように抵抗値を変更 2色LEDを使い、電源は 青 色、導通時に 赤 色LEDが点灯 導通時の音色を変更 導通抵抗値を500Ωまでに変更 スリープを1分に変更 プローブの接触で電源ON プローブの10秒以上の接触で自動電源OFF(プローブ起動を無効化) プログラムは全面的に書き直しました。 CPUクロック を 1.2MHz (9.6MHz 8分周)としましょ。 そうすれば、ヒューズビットの書き換えは不要なのです! オリジナルはATtiny13Vですが、ATtiny13Aしか持ってなかったので、変更しました。 手持ちの抵抗器の都合で、オリジナルは 27KΩ と 5.6KΩ ですが、 22KΩ と 3.3KΩ の抵抗を使ってます。 2色(赤青)LEDが、部品箱に転がっていたので、それを使うことに。。。 たぶん、 秋月電子通商で昔買った やつだろう・・・当時は 500円もしてた みたいだ(笑) 導通時の音色を自分の使ってたテスターの音に近づけるために変更しました。 それと、オリジナルは50Ωの抵抗値で停止するようになっているのですが、そんなに細かく音色が変化しなくてもいいので、1...

AVRISP markII・USBasp ピン配置

イメージ
最近、evernoteがめっちゃ使えなくなっちまった・・・ 無料版では、端末が1台までだし・・・ WEB版のevernoteはAndroidでうまく開けないぞ!! なので、AVRライタのピン配置をここに書いておこう! ※注 USBasp  でTPI書き込みを行う場合は TPI-DATA に MISO ではなく、 MOSI を使う!!

AVR ATtiny10 ベリファイエラー

イメージ
やっちまったので、書き残しておこう! AVR ATtiny10のシグネチャが一致しない・・・ う〜ん、これは 前とおなじ かな?と思って、avrdudeのビットクロックを変更してみるが・・・ 関係ないみたい・・・ 次にAVRライタを AVR ISP markII から USBasp に変更しようとしたら、 USBaspの ファームが古くて 更新したり ・・・ 配線をつなぎ直したり・・・ いろいろやったが、だめだった・・・ しばらくして、よ〜く確認したら、書き込み用の TPIDATA(PB0)の信号線への負荷が大きく て、うまく認識しなかったようだ!! 負荷になる回路から切断したらうまく行った★ これに気づくまで、何時間も格闘してしまった・・・ 書き込まれるんだが、ベリファイエラーが出てしまう。 verification error avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0024 0x0c != 0x17 avrdude: verification error; content mismatch という問題に遭遇してしまった・・・ これも、何時間も解決できず・・・ 世の中の人に頼ることに・・・ すると!! ねこめもさんのページ に書き込みが! なんと!電流不足とな!!! いつも実験用に、サンハヤトのICトレーナーを使ってるんですが・・・ 知ってます? ICトレーナー CT-311R ・・・ もう、 売ってない みたいですが・・・うん十年前に買いました(笑) 電池BOXが壊れたのですが、交換してでも使っている お気に入り です! そういえば、もう十年ぐらい乾電池を交換してないかも・・・ で、電圧を測ってみたら・・・4本で なんと! 3.518V ですって・・・ 6V程度は無くてはならないのに・・・ そりゃあ、電流も取り出せないわな・・・ ちなみにこのテスターも sanwa の PC101という、年季ものです(笑) CT-311R は、DCプラグもつなぐことが出来る優れものです! ただし!DCプラグは センターマイナスの罠 に注意!! 今どきは、ほとんどがセンタープラスですが、昔はセンターマイナスが主流でした・・・ ...

USBaspをLinux上でアップデートする

イメージ
USBaspって知ってますか?  AVRの書き込み器の一つで、avrdudeも対応しています!! これがあれば、AVR ISP markIIがなくてもAVRにプログラムをかけます! で、AVRライターの予備に大昔にamazon買って、放ぽってありました。。。 購入履歴をみたら、 2018年 に 287円 で購入! つまり、6年前に買ったようです(笑) 2018年は1ドル110円ぐらいだったので・・・安く買えたなぁ〜 で、早速、袋を破ってみると・・・ んん? 錆びてます!! 袋に入ったままだったのに、錆びてるって・・・ 気持ちわるいので、早速、修正しましょう!! ハンダごてでチャッチャッと新しいピンヘッダに・・・ 最近はRG(老眼)が進んで、手元がよく見えず・・・ チャッチャッととはいきませんでした★ まあ、なんとか、出来ました!! ついでにJP3にもピンヘッダを追加しておきました。 おそらく、この JP3 は SlowClock だと思います。 オリジナル はJP1の表記ですが、この互換品はJP3の様です。 で、こいつで ATtiny10をプログラムしようと思ったのですが!! ファームウェアが古くて avrdude avrdude: warning: cannot set sck period. please check for usbasp firmware update. という warningが出てしまいます。 しかも、ATtiny10の TPI方式での書き込み には 古いファームウェアでは対応していない ようです!! それでは!アップデートの準備です! こちらの DEKOさんのページで詳しく説明 してくれています★ が、Windows用に書かれているので、自分なりにまとめておきます。 必要なものは、 ターゲットのUSBasp(今回アップデートする機器) AVRライタ(USBasp上のAVRチップを書き換えるため) avrdude USBasp firmware (usbasp.2011-05-28.tar.gz) ここで、詰んでしまう人もいるかもしれません!! だって、USBaspに書き込むためのAVRライタが必要ですから(笑) でも、最近は ArduinoをAVRライタにできるようになった し、なんとかしましょう! 今回は、AV...

ATtiny10をPlatformIOで開発したい!

Windows11を使う気にならないし、 Windows10もほとんど使わなくなってしまった。。。 ただ、問題は LinuxでMicrochip Studioが使えない ことだ!! ATtiny10を使おうと思ったら、困ったことになる! 最近はもっぱらPlatformIOを使うようになったので、ATtiny10もできるんじゃないかと思ったら。。。  なんと!Board選択にATtiny10が無〜い!! 簡単にできると思ったのに。。。 仕方がないので、世の中の人に教えてもらおう!!! は〜い発見! bitbangingさんのページ を参考に・・・ ボード用の設定ファイルを作れば良さげ・・・ でも、ちょっと変更 私はAVR-ISP markIIを使っているので、" protocol "を" avrisp2 "に "extra_flags"に"-e"を指定して、書き込み前に消去するように "url"と"vendor"を今どきに ファイル名は適当につけられます。 私は、AVR ISP mkII と USBasp を持っているので、AVRISPの方は"attiny10-avrisp2.json"としました。 USBaspはファームウェアが古くて、アップデートしました。 その話はまた。。。。 てな感じで、こうなりました! ~/.platformio/platforms/atmelavr/boards/attiny10-avrisp2.json { "build": { "f_cpu": "1000000L", "mcu": "attiny10" }, "name": "ATtiny10 [AVR ISP mkII]", "upload": { "extra_flags": "-e", "maximum_ram_size": 32, "maximum_...

ILI9225の罠 - ILI9225Gとは!

イメージ
ずーっと前に買ってあった2.0"のLCDを使ってみようと思って、早速ESP32と接続してみた! Amazonで、なんとなく見つけて買っておいたのだ。 BODYA Arduino Nano UNO R3ボード5V / 3.3V用2.0 "SPI TFT LCDシールドブレークアウトモジュール ESP32用には、素敵なグラフィックドライバを開発してくれている方がいるので、早速、使わせていただくことに。。。  その名も LovyanGFX !! このグラフィックドライバがあれば、 ほとんど の液晶用のドライバICチップが動いちゃうすぐれものなのです。 しか〜し! 私が買ったこの液晶は全く反応しませんでした・・・ ドライバICは ILI9225 と液晶裏の基盤には印刷されています。 もちろん、LovyanGFXにも対応ICとして記載されています。 なのに!!動きません!! 初期不良品かもしれませんが、購入履歴を見たら、もう2年もほったらかしでした!!ので、交換できるはずもなく・・・ そういえば、この液晶2つ買ったのでした! 3.3V専用版 と 5V兼用版 を・・・ ではでは・・・もう一方に繋ぎ変えてみましょう!! いや〜、反応しません!!! 2つとも初期不良ということは無さそうですが、動かないのではわかりませんな。。。 何か無いかと、調べてみると、ILI9225はとてもマイナーらしく、情報があまりヒットしません。 他のグラフィックドライバ も試しましたが、同じく反応なし!! マイナーなドライバICには注意 しましょう!! でも、2つも買っちゃったのに・・・悔しいです(笑) 調べること小一時間!なんとか、それらしい情報をゲットしました!! "  ESP-IDFを使ってみる ー SPIのTFT  " なんと!!  ILI9225  には  ILI9225 G  なる 亜種 がある ようです!! やられた〜! 罠にハマって ました!! ILI9225 G  は LovyanGFX では対応していません!! 先程のページの nopnop2002さんが ドライバを開発 してくれているようなので、それを拝見してみます。 私はIDFで開発してないし、開発環境はArduinoに頼っちゃってるので、このままでは使い...

Kubuntu22.04 VirtualBox - 重大なエラー 〜 嘘でした"Document is enpty."なだけ

ある日突然! VirtualBox7.0が起動しなくなってしまった!!! VirtualBox - 重大なエラー VirtualBox COMオブジェクトの確保に失敗しました。 アプリケーションを終了します。 Document is empty. Location: '/home/aiue/.config/VirtualBox/VirtualBox.xml', line 1 (0), column 1. /home/vbox/tinderbox/build-VBox-7.0/svn/src/VBox/Main/src-server/VirtualBoxImpl.cpp[830] (nsresult VirtualBox::init()). 終了コード :NS_ERROR_FAILURE (0X80004005) コンポーネント:VirtualBoxWrap インターフェース:IVirtualBox {7682d5eb-f00e-44f1-8ca2-99d08b1cd607} 呼び出し先:IVirtualBoxClient {d2937a8e-cb8d-4382-90ba-b7da78a74573} NS_ERROR_FAILURE (0X80004005)を頼りに、世の中の人の情報をいろいろと嗅ぎ回ってみたものの・・・ MacOSでは、セキュリティがなんちゃらとかの情報はあるものの、UbuntuやKubuntuに関するものはなかなか無いのです・・・ 困った・・・ なので、ひとまず再インストールですな! KubuntuはDebian系なのでdpkgコマンドを使うけど、たまにしか使わないコマンドのオプションは覚えてないので、 日経クロステック さんを参照しました。 そして、VirtualBox7.0のパッケージの名前がわからないので、適当に「virtualbox」の名前で参照してみる・・・ パッケージの確認 $ dpkg -S virtualbox ・・・ virtualbox-7.0: /usr/share/doc/virtualbox-7.0/UserManual.qch virtualbox-7.0: /usr/share/virtualbox/src/vboxhost/vboxnetflt/include/ipr...

LS-GLがTFTPでしか起動しなくなったら・・・

LS-GLを久しぶりにセットアップしたい気分になったので、やってみたのですが・・・ なんと、TFTPモードでしか起動しなくなっちったよ??? 理由はわからんが起動しないものはしないので、世の中の人に聞いてみることに・・・ U-Bootで起動するための方法を調べてくれている人たちがいるではないですか!! R.Shingenさんによる と、LS-GLには前期型と後期型があるようで、HDDを指定する部分が違うようです! 家のはどうやら後期型らしいので ハードディスクの指定 は ide 0:1 みたい。 ちなみに前期型は ide 1:1 らしい。 で、R.Shingenさんのブログのように設定してみるものの家のLS-GLは言うことを聞いてくれな〜い! 仕方なく、さらに世の中の人に頼ることにした・・・ すると!「パソコンと会話ができる男 Livingston のブログ」という、まさに新人類(古)が残してくれた素晴らしい遺産を発見!! で、 パソコンと会話ができる男 Livingstonさんの言う通り にやってみたのですが!! どうしても、 ** Too many args (max. 16) ** となってしまって・・・うまくいかない・・ でも、R.Shingenさんのものとよく見くらべてみると、変数内で setenv している部分を発見!! んん? これって、中で設定しなくてもいいんじゃね? ってことで、外で設定したら・・・ パンパカパーン!! 大成功でした!! では、以下に方法を残すこととする。。。 まずは、シリアルコンソールで接続する。 速度は115200bpsですよ! 関係ないけど、速度で「通信速度はボーレートと呼び、単位は [bps] ・・・」とか、 平気で言ってるサイト とかがあるけど、どうなの? まあ、たまたまUARTなどでは同じなだけで、 ボーレートの単位は [baud(ボー)] だろ!!  ボーだ!ボーだ! 昔々カセットテープでデータセーブしてた データレコーダ をなめんな(笑) [Ctrl] + [c] などして、U-Bootのコマンドラインに入る。 環境変数を printenv コマンドで確認してみる。 U-BOOTの現状の環境変数(一部伏字) Marvell>> printenv bootargs=$(bootar...

PlatformIOでATTiny13A開発 (AVRISP mk II を使う)

久々にAVRマイコンを使って開発しようと思ったら!! 世の中の変化にびっくりです。 なんと!AVRのATTiny13Aの価格が!!秋月で150円になってる!! たしか・・・8年ぐらい前に60円ぐらいで買ったような気が!! いつの話だよってことですが(笑) その時、喜んで5個ぐらい買って、1個使って4個は大切にしまわれていました。 そんなこんなで、のんきに暮らしているうちに、AtmelはMicrochipに買収されちゃうし、 ATTiny202 とかの新しくて良さげなチップが70円 で買えるし・・・ なので、ATTiny13Aの在庫整理のために使うことにしたのですが・・・ 今どきはATTiny13AもArduinoとして開発できるらしいので、そうすることにする。 で、Arduino IDEは使いづらいので、いろいろ探してたら、流行りは PlatformIOらしいのですよ!! そういうわけで、VSCode上でPlatformIOを使うことにしたのですが、Arduino UNO とかの USBシリアル変換が載ってるボードは簡単に接続して書き込みできるんだけど・・・ ATTiny13Aは、書き込み装置が別に必要なので、虎の子の AVRISPmkIIを使う ことにしたのですが、そのままでは認識しないみたい・・・ 検索しても、日本語の記事はあまり見つからなかった。 でも、 公式ページ にはありました。 まあ、その通りに書けばいいのでしょうが、使うライターはAVRISPmkIIだとわかっているので、自分なりに書いてみました。 ようは、 avrudeに渡すパラメータ を upload_flags で指定 すれば良いようです。 platformio.ini [env:attiny13a] platform = atmelavr board = attiny13a framework = arduino upload_flags = -c avrisp2 -p $BOARD_MCU upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i こんな感じになりましたとさ・・・ 注意点として upload_flags = の次の行からの オプション指定時にオプション文字の後ろに空白を入れて ...

Python:全角文字でもPython書式を揃えたい

[ できるかな Python ] のコーナー ここでは 実用になるかはさておき 、Pythonで 出来たら楽しいって事をやってみる だけのコーナーです。 前回 、 前々回 と全角文字が揃わない問題を取り扱ってきたのだが!! とうとう、禁断のクラスを作ることに手を染めてしまった・・・ strをサブクラス化してみるという禁断の手に!! だって、 __format__()とかオーバーライドしてみたい じゃん! で、割とうまく言ったのだが!! 内部で使った正規表現が。。。いまいち自信ないね(笑) まあ、動いてるっぽいよ未来の俺! こんなに大袈裟なクラスがいらないなら、ワンライナーで書ける 前回版 をオススメするぞ私! で、今回のレシピはこれ! <材料> str型 east_asian_width() 特殊メソッド__format__() 特殊メソッド__add__() 特殊メソッド__radd__() <作り方のポイント> __format__()メソッドで全角文字の時に対応する __add__()および__radd__()をオーバーライドして文字列の結合に対応する east_asian_width()で全角文字を判断する formatを正規表現を使って上手に料理する  ※これは保証できない(笑) stringw.py from __future__ import annotations # 自分自身のクラスを型注釈できるように(必ずソースの先頭) from unicodedata import east_asian_width from functools import reduce from typing import TypeVar, Generic, Callable import re class StringW(str): @property def length(self) -> int: return len(self) @property def width(self) -> int: # Japanese wide-char size is calculated as 2 bytes. ret...

Python : 辞書(dict)をプロパティの様に参照したい

[ できるかな Python ] のコーナー ここでは 実用になるかはさておき 、Pythonで 出来たら楽しいって事をやってみる だけのコーナーです。 Pythonで辞書型を使ってる時に、ついつい、 Javascriptのように『.』で参照 しようとしてしまうってことあるよね。 ん?ない? まあ、そういう人もいるでしょう・・・ でも、 『 [ "  " ] 』をタイプするのは面倒 なことってあるよね。 ん?ない? じゃあいいです。そういう人はキライです・・・ なので、私は、あるということで話を進めるのです。 何がしたいかというと・・・ member = { "name" : "あいうえ", "height" : 177 } みたいな辞書があった時に、 Javascriptなら・・・ Javascriptの場合 member["name"] member.name 上記のどちらでも参照できるってことですよ! Pythonは上の方しかできないんだよね〜 そこで、Pythonも『.』方式で値が取れたら、うれしいなぁと・・・ といっても、やることは簡単なのですが(笑) では早速、今回のレシピです。 <材料> 辞書型のオブジェクト 特殊メソッド__getattr__() 特殊メソッド__getitem__() <作り方のポイント> __getattr__()メソッドの利用 [ ]でのアクセスもできるように__getitem__()も利用 Pythonで頑張る from __future__ import annotations from typing import TypeVar, Generic T = TypeVar("T") class Prop(Generic[T]): def __init__(self, param: dict[str, T]) -> None: self.param = param def __getattr__(self, key: str) -> T: if isinstance(key, str): ...

Python : 既存関数をカリー化

[ できるかな Python ] のコーナー 最近、Pythonにハマってるので、いろいろとやってみた! ここでは 実用になるかはさておき 、Pythonで 出来たら楽しいって事をやってみる だけのコーナーです。 今日は、関数のカリー化です。 カリー化については、 Wikipediaでも見て くださいね。 世の中の人に聞くと・・・ カリー化関数の作り方 ばかりが引っかかりますね。 でも、それは、別に うれしくはない はずです! だって、それでは使いみちがないから・・・ やりたい事は 既存の関数がカリー化関数になってほしい という事ではないでしょうか? では、いってみましょう! <材料> 引数を複数とる関数 lambda式 特殊メソッド__call__() <作り方のポイント> __call__()の利用 可変引数の利用 引数展開の利用 lambda式の利用 関数呼び出し時の引数エラー(TypeError)例外の利用 カリー化 from __future__ import annotations from typing import Callable import inspect class LikeCurry: def __init__(self, func: Callable[..., any], arglen: int | None = None) -> None: self.func = func self.arglen = arglen if arglen is None: argspec = inspect.getfullargspec(func) self.arglen = len(argspec.args) def curry(self, *args: any, **kwargs: any) -> Callable[..., any]: return lambda *a, **kw: self.func(*args, *a, **kw, **kwargs) def __call__(self, *args: any, **kwargs: any) -> any: ...