激務に追われつつも割と元気です。すごく元気ではないけれど。
一日を変え、一生を変えるコードを!
一日を変え、一生を変えるコードを!
2024年まとめ
コロナは終わったのだ。
2023年まとめ
私にとっては2年前の出来事だが、君たちにとっては、どうでもいい出来事だ。
2022年まとめ
2021年まとめ
どうも。お ひ さ し ぶ り 。
と言うわけで日記停滞中もちまちま続けていたMastodonの方を年ごとにまとめておきましょう。
今後この方式でいきたい。楽したい。
Pixel3スキーがPixel5をレビュー
毎回挨拶がこれで正直どうなんですか、と言う感じですが、あえて今回も「お久しぶり」。生存報告です。
さて、TAMはPixel3ユーザ*でした*。ほんの3日程前まで。
Pixel3ほんと気に入っていてPixel4シリーズもスルーキめたわけですが、まあ、直前まで使ってたのにある時いきなり動かなくなりました。その後電源入れ直そうと色々調べて試したのですが、どうも無理と言うことで、修理費用とかも調べた上でPixel5を注文しました。
と、言うわけで、おそらく誰も望まない(そして遅い)Pixel5のレビューを今更したいと思います。イエア。
chinachuの話と見せかけてlxcの話
お久しぶり(いつもの)。
皆様テレワークは如何で御座いましょうか。俺はそう言うお仕事では無いので普通に出勤しておりますが、出来る限りの防衛手段をとっているとは言えなかなか難しいもので御座います。
で。
見るかどうかは置いといて「やっぱTVくらい見れるようにしとくかなー」的な感じで今回さっくりchinachu環境を組みました。「だからなんだ?」で終わってしまうくらいにはchinachuに関しては色んなところで手順が説明されておりますので、当たり前のように割愛させて頂き、今回は「lxcコンテナでchinachuを動かす」と言う話で表題通りlxcの話メインで。
近況とPC組み換えた話
よっ!(簡潔挨拶)。
過去事例に違わず1年半程あいてしまいましたが、皆様お元気でしょうか。俺は全然元気ではありません、TAMでございます。
なんで元気ではないかっつーと、9月の末あたりでしょうか。ちょっとバイクで事故しまして生まれてはじめての骨折、入院、手術を体験しまして、鎖骨をネジ止めされてる状態がしばらく続くわけで、これが痛いとかはもう無いんですけど動かすとすこぶる気持ち悪い。
今回一人でこけてひとりで怪我したわけですけど、あれですねえ、バイクの場合しょうもない小さな事故でもダイレクトアタックですので怖いものです、身を以って知りましたよ。
さておき。
Sandyおじさんなんて揶揄される世代のPCを如何に駆逐するかと言うのは一つのテーマであったりしますが、「いやお前もSandyおじさんやん」だったわけでして、ようやくこの夏〜秋でメイン環境を一新しました。
Ryzen7 3700Xでございます。巷でも評判の良いCPUですが、本当は3950Xまで待つ、いや伸びそうだから3900Xで手打ち?、みたいな方向で考えていたのですけど、まず3900Xは品薄でプレミア価格状態であほらしかったのと、いつ出るか分からない3950Xは待てないなあ、と言うことで8C16T、充分だろーって感じで3700Xで組んだわけです。その後3950X発表されたのですが「水冷推奨(公式)」と言うことでまあ、うん、この選択でよかったんじゃないかな?。
んでまあSandy世代からの移行ですからCPU以外にもケース以外ほぼ全入れ替えになっちゃうわけですが、X570マザー、メモリもDDR3からDDR4になるし、ついでにHDDも3TBx2から8TBx1に、SSDもSATAからNVMeのものへ…と。しかしOSはそのままneonさんで。
で、組み上げて実際使ってみた感想はと言いますと、うん、快適でございます。快適でございますが、i7-2600K環境と比較してどう?、と言われると、あちらも結構快適な環境にしてあったからなあ…。とまあ、これがSandyじじいが減らない理由だと思います。やれやれです。
組んだちょっと後にRadeon RX480からRX5700XTに替えたのですが、こっちのがインパクトあったかなー。まあ、OpenCLとか使いたいならあまり向かないゲーム向けGPUではありますが、4KゲームやVRと考えるとこれくらいのGPU無いとあれかなーと言う感じではございます。
まあ、CPUに関してはI社とA社がバトルしてくれることが良いのだろうと思います。今後が楽しみですねえ。
QtとWindowsと流川ガールズと
Qtと沙織さんのお話。
Creatorも含めてQtでコードを書くと言うのは基本的にプラットフォーム依存を少なく出来る、と言う利点があると思うのだけど、実際は書いてると結構出てくる。別件で書いてるOpenGL周りのコードもQt+Creatorを使っているけど、そりゃあもうね。
なのだけど、saoriに関しては当初から「できるだけQtに依存して同一コードを以って特定環境で動かないところを無くしてみよう」と考えて書いております。まあ、いつまでこれ続けられるかは謎ですけどねえ。
結果、実は現状同じコードでWindows上でも動きます。
素敵ですねえ。
まあandroidは素晴らしいクライアントが存在するから試す気も無いし、アポー系は宗教上の理由で試す環境が無いのでWindowsしか試してませんが、Windwos10のノートPCで出先で思いついた修正をさくっと出来て試せるのはそれだけでも素晴らしいし便利ですねえ。
とは言え、既に問題は見つかっていて、例えばWindowsでQNetworkReply::readAll()が空な場合がある、とかね。色々調べた結果どうも一定データ量を超えるとダメっぽくて、最終的に落ち着いたのが「タイムラインの取得量(limit=で指定するんですが)を若干小さくすることで回避」だったりします。内部バッファ量の違いかなーと思ったりもするんですが、このへんはQtのコード見てみないとなんとも。Windowsの場合OpenSSL周りも別個用意してたりするわけだったりするのでこの辺の差もあるのかも。
もうひとつはまりかけたのが、変数長の違い。
statusのidを保存するのに最初longを使ってたのだけど、どうもWindowsだとおかしくなる、結局qlonglongに落ち着いたのだけど、後で気になってlimit.h見てみたら、linux(64)だとlong=longlong、Windows(64)だとint=long、うおおおい!って感じ。難しい。
まあどこまで頑張れるかは分かりませんが、一応Windowsでもコンパイルして動かしてみてますよと言うお話。
Qtとmastodonと糞コードと流川ガールズと
お久しぶりどころか、あけましておめでとうですが、すっかり春めいてといいますかやや暑い日もあったりする梅雨前のひととき、皆様いかがお過ごしでしょうか。
えーとりあえずmastodonクライアントを昨年から作ってて本当は年末には見せびらかす予定だったんですけど、色々バタバタしまして気がつけばゴールデンウィークですよ。まあいいんですけど。
と言うわけで、機能足らなすぎで作りかけ感満載ですが、
沙織さんです。見ての通りマルチアカウント対応のMDIクライアント。名前の由来は特にありませんが、俺は流川ガールズが大好きです。
現状できることと言うのは本当に少なく、インスタンスに接続して一部タイムラインや通知を読み出すくらいです。Tootもまだ出来ませんし画面には機能しないボタンが並んでいたりしますが、まあmastodonにおけるごくごく基本的な「認証してアクセストークンをゲットしてJSONデータを得る」は実装されております。
コード化結構簡単ですので是非皆さんも手作りmastodonクライアント挑戦して欲しい感じですかねえ。まあ色々勉強になったところもあるので、何回かに分けてこのへん日記にまとめようかな。
以下、認証まわりのコード的な話。
twitterクライアントもそうなんだけど、ぶっちゃけアクセストークンを取得してAPIに正しくアクセスできれば後はデータをいじるだけ、mastodonはJSONでデータくれるのでQtのQJsonDocument他をごっそり使うことで手軽に得たデータを利用できます。素晴らしいですねえ。
ポイントはどうやって認証するのって話ですが、saoriでは
- Saoridonクラスでクライアント登録。
- SaoriAddAccountDialogで認証、アクセストークン取得。
- SaoriAccountに情報を保存、アクセス時もここからAPIにアクセス。
こんな感じの流れになってます。
相変わらずコードにコメントを書かない糞コード書きなのでわかりにくいですが、Saoridon::clientRedistration()でクライアントをインスタンスに登録します。
若干ずるのようなイメージもありますがQEventLoopを回してQNetworkAccessManagerからのQNetworkReplyをその場でもらうと言うテク、これ便利で結構使ってしまいますがさておき。
登録が済んだらclient_secretとclient_idがJSONで帰ってきますので、今度はSaoriAddAccountDialogでアクセストークンを取ります。実際は上のクライアント登録もこのダイアログでやるんだけどね。
Saoridon::getAuthorizedUrl()でURLを作りWebブラウザで開いて認証、コードをコピーしてそれをSaoridon::getAccessToken()で渡すとアクセストークンが返ってくる、と言う手順ですねえ(grant_typeはauthorization_codeです)。SaoriAddAccountDialog自体はボタンを押せなくしたり複雑に組んでありますが、実際に必要なコードはSaoridonの方にほぼほぼまとめられています。
で、client_idとclient_secretからaccess_tokenとれたらそれをSaoriAccountに保存し、実際のAPIアクセスはこのクラスからアクセス、と言う感じです。
アクセストークンはヘッダにぶち込むだけでいいのでSaoriAccount::createHeader()を見てもらえば簡単かと。あとは、mastodonのAPIとにらめっこどぞー、って感じですね。
ここまでくればQNetworkReplyでJSON取れますからあとは煮るなり焼くなり。QJsonObjectで取得してHTMLに整形してQTextBrowserに流しこむ、と言うことをsaoriではやってますが、この辺はまた今度。