アットウィキロゴ
leba @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

leba @ ウィキ

Programming

最終更新:

leba

- view
メンバー限定 登録/ログイン

プログラミング

現ハード:富士通LH55/C2、2TのUSB外付けHDD、USB外付けDVD書き込みも可。CPUはCeleron 3865U 2コア Kaby Lake-U (第7世代Intel Coreプロセッサ)、HD610内蔵GPUが一応あるが、GPUありとは認定されない悲しきGPUであり (Windowsではそうだったが、LinuxのOpenGLベースならGPUとして認識されるかもしれない (BlenderのLinux版の前提条件を見たら、要4コア以外の最低条件はすべて満たしていた); しかし、FirefoxでGPUモードにすると不安定になる (YouTubeで一旦再生が止まると回復しなくなる。GPU無しに設定しておけばそんな場合でもしばらくすれば回復する) のでGPU無しモードで使ってはいるのだけれども)、Windows11非対応。メモリ4GB。

現回線:BIGLOBE光 (フレッツ、実質上下230Mbps程度)。

完習済みプログラミング言語:旧C (ANSIより前、アドレス定数値を利用した「黒魔法」が駆使できた頃の仕様)、Java1.2前後 (含全クラスライブラリ)、ECMAScript初版

ソースが読める程度には会得済みのプログラミング言語:Z80A用マクロアセンブラ、(MSX)BASIC、ObjectPascal (最初に完読したクラスライブラリ体系がTurboPascal用Turbo Visionなので、Apple Pascal系の簡潔さを極めた頃の、で、現在の複雑化したものは知らない)、Python (2.1あたり)

Debian 13 trixieベースのLMDE7にした (安定状態へ持っていくまでが (私が昔sarge前後を使っていた頃に比べればはるかに簡易になったとは言え、それでもなお) 結構大変なので、Linux初心者は極めて安定かつ堅牢なMint22 (この本はCinnamonの他、WINEにもいくらかは詳しい) 自体の方でおとなしくUNIX・Linuxを勉強研究するのが吉ではあろう)。Debian Xfceに比べ完全フリーには限定されずまたMintスタッフの努力によってずっと扱いやすくなっており、またMintに比べればUbuntuの拘束下には無く、かつこれら3つの中ではデフォルトのパッケージ数が最も多い (Snapが使えないように初期設定されているMint22と異なり、こちらは普通に使える)。

GnomeとKDEにおける最低限の一貫性 (Gnome/Gtkは迷走気味であり、KDE/Qtの方が一貫性は高い; 前者は既に枯れて安定したC言語ベースで後者は未だ発展途上なC++言語ベースではあれども) のためにfreedesktop.orgが組織され、xfceはその規格を非常に尊重しているので、xfce専門本が無くてもそちらを参照すればおおよそ事足りる (もっとも、Qtベースへの移行を受けて、現在はLXQtを研究中であり、いずれはそちらがメインとなろうが、LXQtは足りない部分をKDEで補う形なので、KDEの研究はしておいた方が良さそうだ)。とりあえず簡単に言えば、外部から導入したアプリは、メニューエディター (menulibre) で適切な.desktopファイルを作ってやれば、パッケージ版と同様にメニュー等で取り扱えるようになる。Linuxの諸文書 (poteximan等) のフォーマットの概要は「Inside Linux」にそれなりに記述されている (makeconfigureについてもそれなりに記述されている)。xfceのセッション機能は、位置等は保存できてもアプリを自動的には起動しないので、セッションと起動の自動起動アプリに手作業で登録しておく必要がある (mintupdate (トレイの盾アイコン) 側で再起動すると起動中のアプリがすべて自動起動に登録されてしまうが、「/home/ユーザー名/.cache/sessions/xfce4-session-システム名:0」テキストファイルからそれら追加分の行群を削除すれば回復できる)。ウインドウボタンの並び順を事前に定める方法は不明なので、DnDでいつでも手動で並び順を入れ替えられるようにするのが妥協点だろうか。

Thunarの「コピー」はコピー先に応じて本体かパス名かが変わる; 端末やテキストエディタへ貼り付けるとパス名コピーの意味になり、他のフォルダへ貼り付けると本体コピーの意味になる。

外付HDDは、MyHDDの名前で/etc/fstabでuid=1000,gid=1000を指定して巨大な自分のhomeディレクトリ拡張として使えるようにした。その上で、~/.wineをそこの専用ディレクトリWineDriveへのリンクとして設定した。この他、BlenderやOpenUtau等、サイズの大きいあるいはファイル数の多い外来的なものはそちらへ展開することにして、自分のhomeディレクトリ自体はバックアップしやすいようにスリムさを維持したい (システムのバックアッパーTimeshiftはext4を要請するので、本来NTFSである外付HDDから200GBをext4な別パーティションに切り離して領域を割り当てた (Dropboxの配置先もext4を要請するので、そのパーティションにしている)。トータル2TBの超巨大ドライブなので、それでも全然余裕ではある。まあそんなわけで、自分のhomeディレクトリ自体のバックアップにはNTFSにも対応する別のバックアッパーFreeFileSyncを使うことにした (使い方初級上級秘伝))。

日本語入力は、Schemeベースのuim、Cベースのibus、C++ベースのfcitx5から、Qtに合わせてfcitx5のanthyにした (辞書登録できないときはここを参照; 権限は.anthyフォルダごと644で); キー設定は、EGBridgeを参照しつつもより単純化した、Filesに置いたMyAnthyEGBkeys.txtの通りに替える。

テキストエディタには、Lua5.4でのスクリプティングに対応しているtextadeptのQt版を使うことにした (init.luaを例の場所に置いておく)。また、XMLベースのアウトラインプロセッサFeatherNotesを自分用メモシステムとして併用する (システムトレイに格納できるので、ログイン時に自動起動するようにした)。これまでテキストエディタのセッション機能で扱っていた最重要諸情報テキストファイル群は、それの単一ファイルのノード群へと作り替えた。

IDEは、同じくLua5.4でのスクリプティングに対応しているQt Creatorを使うことにした (下で紹介しているQt6用の本に簡単な入門編が載っている)。キーバインドもそれに合わせるようにしたい。MakeGDBの参考書も一応は研究しておく。

いわゆるプラットフォームには、Qtを使うことにした。4基本とし、4ベースのソースは5ではincludeを少し調整するだけでよく、そうしてQt5対応としたソースはQt6でもそのまま流用できるようだ (大きな違いはQmakeからCmakeへ切り替わったことぐらいで、ゆえにこの本はCmakeの参考本にもなる; なお、QmakeもCmakeも、その名から連想されるような「Makeの代替」では無く、configureの方を代替して適切なMakefileを生成するものである)。Qtは元よりQtScriptというECMAScript系スクリプトエンジンを (少なくともQt4の頃は) 持っていて、JavaScriptとのバインディングに隙は無いはずだ。

Qtのベース言語であるC++は、まずC++03の入門書で概要を把握し、C++03のリファレンス (Qt4はこれで良い)、C++14と17に関する追加情報 (Qt5の後半からC++14ベース、Qt6はC++17ベースになる)、と順を追って会得していこうと思う。

翻訳ソフトとして、Lokalizeを導入。様々な文書をpo化できるpo4aも研究しておく所存; .moと.poとの相互変換法 (これらのコマンド群はDebianではgettextパッケージに入っている)。QtのLinguistも研究しておきたい。また、会計ソフトとしてKMyMoneyを導入 (MSMoneyに似せてあるので、その書籍を参考書とできようが、英米の会計ソフトは簿記方式なので簿記の仕方を会得しておくとなお良いだろう。簿記の英語については、ここが良いだろうか)。

マイ本格言語は、CoffeeScriptを、その本に合わせてバージョン1.2.0で用いる (日本語訳された言語リファレンスもある)。Debian13でパッケージとして用意されているCoffeeScriptは2.7.0なので、導入には一工夫して次のコマンドで入れなければならない。

sudo npm install -g [email protected]

古いと文句は言われるが、一応使えるようにはなる (当時のnode.jsのAPI的本も入手しておく。最近の情報はとりあえずはECMAScript5.1JavaScriptまわりの2023年的諸情報の参考書で充分だろうか; 少なくとも私は、コマンドライン対話環境インタプリタとしてのみ用い、WEB開発する気は毛頭無い)。LuaにはCoffeeScriptのLua版であるMoonScriptで対応するが、もしMoonScriptがより新しいCoffeeScript2に追随していなかったなら、そのまま1.2.0で使い続ける (TypeScript等の型付け拡張と異なり、CoffeeScriptもMoonScriptも対話環境インタプリタが普通に使える)。Python3.11も補助的に用いるが、言語的に枯れているCoffeeScriptやMoonScriptの方が私的には破壊的バージョンアップの不安に苛まれること無く絶対的安心のうちに使い続けられるだろう (言語処理系の簡単な作り方も、PythonベースならCoffeeScriptへの移植はより容易なのではないかと思う)。シェルスクリプト代わりとしても、CoffeeScriptをそのまま用いる。

他言語で記述されたソースを移植するために、Perl5.8Gtk+参考書 (Gtk+英語ドキュ。この本の対応バージョンは2.12.9。Gtk3に対応させたPDFが読める)、Win32API参考書、も揃えておきたい。

オフィススイートは、LibreOfficeを使うことにした; その本自体はOpenOffice3.3用だが、マクロBASICの型や制御構造も載っている。より安い3.0用ガイド本でも同様と思われ、どのみち古い文書なのでこれから入手したい人はそっちの方が良いだろう (自分の3.3用は送料込みで718円とはるかに安いときに買った)。データベースは、より簡易には (表計算レベルの外観で済むものなら)、DB Browser for SQLite (Debian13にはsqlitebrowserパッケージとして入っている) をとりあえずは使うことになろう (SQLite入門DB Browserの使い方)。

DebianのデフォルトブラウザはFirefoxなので、そのまま使う (Chromeのデベロッパーツールも参考)。userChrome.cssを例の場所に置いておく。

メーラーもDebianデフォルトのThunderbirdを使用 (GMailについては、Google自体にログインする形で対応できる)。トレイアイコン化はBirdTrayを利用 (IMAPメールボックスの更新も確認してくれる)。

RSSリーダー (私自身は専門的書籍も持っているほどのRSS推進派だ; 近似した技術ということでXMPPも研究してはいるが) はRSS Guardを使用。

ヴァージョン管理にはGitとGitHubを使うことにした。

軽量マークアップ言語は、一番シンプルで汎用性も高いMarkdownがもっぱらになろう (日本語基本文書 (オリジナル版の範囲のみ解説; GFMも解説しているものはしかし残念ながら版が大き過ぎて本棚に置きづらいし、やはり解釈に一番悩むのはオリジナル版の範囲なので、それで充分ではある)。reStructuredTextやAsciidocほどではないが、よりシンプルでも簡易な本のソース程度には対応できるtxt2tagsを、我が本用マークアップ言語としたく思う。

MyWikiは現状のまま@WikiをMarkdownモードで用い、Obsidianをバックアップ兼エディタとして使おうと思う。MyBlogも現状のままはてなブログMarkdownモードで使い続ける。ミニブログはXに代わってMastodonを使いたいが、どこに寄生するかは悩ましいところ。

画像処理は、Blender2.71; 大元のlinux用を持って来れば、解凍するだけで起動できる (うちのマシンスペック的に、このあたりのバージョンが使用可能な上限だと思われるので、Debian13のリポジトリにあるそれよりはるかに新しいものはCPUコア数の制約からおそらくに使えないだろうと思う)。2D用はKritaで済ませたい。動画編集はShotcut、3DアニメはBlender2.7でいずれは済ませるようにするつもり (MMDおよびPMXは、それらを使って作ったものの商用利用が一切禁じられているので、いつか商用利用せんとする際に心許ない)。

マインクラフトのようなボクセル系が、GPUへの負荷も少なくWEB版も作りやすいなど良さげなので、3D系はその研究をメインにしようと思う (Linuxでは、WINEを要するMagicaVoxelよりネイティブ版があるvengiの方が良いが (オリジナルのdebセットは、0.0.25以降はbinutilsのバージョンが違うと怒られてインストールできない; 大人しく0.0.24のdebセットにとどめておこう)、YouTubeでのアニメ動画を探すとMagicaVoxel系が圧倒的に多いので、そちらを使い慣れてからvengiへと移行するのが良いのかもしれない。ただし、アニメ機能等はvengiの方が簡単そうではある)。LinuxではLuantiがLuaJitで記述できるボクセルエンジンであり、そのマインクラフトクローン実装が名高いが、MMORPGとしてVelorenも注目に値しよう。また、ボクセルでは無いが簡易なゲームシステムとして、Lua (に加え現在ではMoonScriptやPythonにも対応) でゲームを記述できるTIC-80研究する。

Kindle Readerは、WEB版のみを使用することにした。アカウントからコンテンツライブラリを開き、表示をコレクションにすれば、新しいコレクションもWEB版から作成できる。

WINEの文字化け問題は、Windowsのフォントを持って来ずとも簡易に解決できる。

WINEはもはやMMDとPMX用にしか使わないので、より問題が少ない32ビットモードオンリーで使うことにした (今やSDLさえもがGPU前提となっており、WINEの64ビット版も例外ではないようだ。逆に、GPUが胸を張って使えないうちの環境では、GPUに依存しようがない32ビットモードの方がより安定的ではないか、と思われるのである)。最初にコマンドラインで、

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

とすれば32ビット版用システムしか作らないので、そこを使う限り32ビット専用になる。

PMXエディタが起動時に「DirectX初期化失敗」エラーを出したが、コマンドラインから起動させてログを取るとd3dcompilerエラーなようで、winetricksでその系を全部入れたら解消された。

MMDは、複雑なステージはロードしただけで落ちるので、できる限りシンプルなステージを選ぶようにする (画面サイズも、これまで通りの640x360にした)。MMEはオンでAutoLuminous4とExtendShadowは常に使用、AVI化は非圧縮で。タイトル等はShotCutで入れ、MP4化もそれのYouTube設定で済ませる (対応するGPUの有無をチェックしてくれるメニューがあって、使えるのがあったのでShotCutではGPUを積極的に使う)。

シミュレーション的なゲームは、案外 (ここの作るものはほとんどが同一の世界観に依拠しており、その世界観は二次創作自由だそうだ) NScripter で作れるようだ (書籍版のNScripterバージョンは2.82とかなり古めだが、ONScripterなら古いバージョンにも対応しているかもしれない)。

AIは、お試し的にOllamaのqwen3:0.6bで適当に遊んでみることにした (スマホローカル用の極小モデルなので、メモリ4GBでGPU無しに等しいうちの2コアノートパソコンでも高速に日本語で(も)返してくれる)。クラウド版はより高機能ではあっても設置側の都合で新しいものに随時差し替えられてしまい、従って使用期限が自ずと生じるが、ローカルAIならずっと同じモデルを使い続けられる、という半永久的な一貫性が私の性に合っているので、クラウド版を使うことは、これまではもちろんこの先も無いだろう。

最近更新されたスレッド
人気記事ランキング
ウィキ募集バナー