追記: 今はショート動画をPCからアップロードした場合、モバイルの編集画面からショート動画のサムネイルを設定できるようになっている。
このため、いちいちモバイルYouTubeを使ってアップロードする必要ない

以下のようにすれば良い。タイムコードが入っている動画ファイルはYouTubeアプリでは開けないらしい (Google Photos などでは普通に開ける)

ffmpeg -i '/mnt/c/Users/cho45/Desktop/doremi.mp4' -c:a copy -c:v copy -write_tmcd 0 '/mnt/c/Users/cho45/Desktop/doremi-removed-tmcd.mp4'

なんでPCからアップロードしないの?


PCからショート動画をアップロードする場合、なぜかサムネイルを指定できないという大きな欠点がある。なのでサムネイルが適切に設定されない場合、モバイル版の YouTube アプリを使ってアップロードする必要がある。

他の方法は?

Google Photos では開けるので、Google Photos で開いて、コントラストを1だけ変更したりなんでもいいのでちょっと編集して「コピーを保存」すれば YouTube で開ける動画にはなる。うまくはいくけど再エンコード走るのでだるい。

参考

日本語ではどうしても解決せず「android youtube unable to preview」で解決

ref.

  1. トップ
  2. tech
  3. DaVinci Resolve で作成した動画を Android YouTube でアップロードしようとすると「動画をプレビューできません」となる

症状としては

  • ファイル転送 / Android Auto モードで USB 接続し
  • Windows Explorer からコピーしたいデバイスのフォルダを開き
  • ほとんどのファイルのコピーは成功するが (jpg や txt など)
  • mp4 ファイルだけ転送することができない
  • エラーの表示などはまったくないが Explorer からエラー音はなる
  • 転送できないファイルを .txt に拡張子をかえると、コピーダイアログまでは出るようになるが、やはりコピーはできない

どうあがいても無理。MTP など他のモードでも無理。Android のファイル転送モードはやたら遅くて、なんか変な制御がかかっているんだろうけど、挙動がおかしすぎるのでできるだけ使わないほうが良い……

他の解決方法: Google クイック共有 / Quick Share / 旧ニアバイシェア

たぶん代替としてはこれが一番簡単かつ最速
https://support.google.com/android/answer/9286773?hl=ja

他の解決方法: Google Drive 経由

次点で間違いなく解決はできるがめんどくさい + Google Drive に保存する必要がなくても、一時的に保存する必要がある

  1. トップ
  2. tech
  3. Android と USB 接続したとき、どうあがいても一部のファイルを転送できない

基本的に毎回 (嫌々だけど) バリウムじゃなくて胃カメラ・上部内視鏡を選択していて、かつ2021年からは鎮静剤も使うようにお願いしている。健康診断自体は会社でうけてるやつだけど、内視鏡+鎮静剤でオプション代が15000円ぐらいの課金アイテムになってる。

鎮静剤をお願いしはじめてからはじめて、やってる途中 (喉を通過したあと) に若干意識が覚醒して、そのときのことを曖昧ながら覚えているという状況になった。いつもやってる医師と違うので、鎮静剤の量とか手技の精度とかでそうなったのかもしれない。

というかミダゾラム (ドルミカム 4.5mg と書いてあった) という鎮静剤を使っているみたいだけど、この薬は効いている間の記憶がかなり飛ぶらしい。なので今までも覚えていないだけで辛かったのかもしれない。その瞬間辛くても辛い記憶が飛ぶというのは素晴しいことなのだな。我々は記憶の中の辛さに生きているのだ。

とりあえず、今回は若干つらかった記憶が残っている。けど、無鎮静でやったときの辛さとは比べものにならないのでやはり鎮静剤ありを選ぶと思う。結果は去年より綺麗だった。なんでかはよくわからない。

あとの検査はなんかオマケって感じ。

肺活量検査が2回目で「前回数値より良いです!」と言われたけど、あれはなんかやりかたを理解するのに何回かやらないとダメなんだと思う。

全然日記書いてないことに気付いた。毎日なんかしらやってはいるけど、どうも書くモチベがかなり失われている。

面白いと思っていた人たちはいろんなSNSに散らばったり、あるいはポジショントークしかしなくなったり、あるいは……って感じで、自動的に入ってくるおもしろ情報というのがなかなか、なくなってしまった。インプットが減ってアウトプットも減ってるのだろうか? そもそもテイカーおじか???

今はフィードをつかってブログ見てる人なんてほとんどいないんじゃないか?

サブテク入りたい

だいぶ前にゆの in languageとかいうのをやってたなと思い返していたけど、ほとんど当時のリソースにアクセスできず何があったのかわからくなっていた。なんかゆるく知らん人同士で流行った楽しさがあったけど、そういうのって今はないなと思う。

テクいこと

技術的にどうこうっていうのも、最近ぱっとしない。ディープラーニングも最近はなんかやりたいことがなくてやってない。画像生成も夏にやるには罪悪感があってあまりやってない。

まったく趣味コード書いてないかというとそういうわけではない。配信用のペライチHTML+JSでOBS操作して喜んだりはしてる。自分が喜ぶすごく小さいツールを作るのはあいかわらず楽しいと感じる。

仕事はなんか、、、、

ウェブ系のITエンジニアはたいしたスキルセットもないのに恵まれすぎ、という話をみて、そうですねと思う。そして恵まれてても、うまくそれをこなせない自分というのが厳しい。なんか昨今のITエンジニアみんな優等生だもんな~ 居場所ないのあたりまえだわ~ 今の勤め先の採用過程を今やったら通らないだろう。そういう意味ではもはや既得権益おじといえる。

しばらく仕事で K8S さわってて、4割ぐらいはK8Sと和解してるけど、6割ぐらいは馴染んでない。コンテナとも8割ぐらいしか和解できてない。個人的に使うことがない技術スタックに強い興味が持てない。とかいいつつ、うまいことコンテナまわり整備したり、GitHub Actions でリリースプロセスいい感じにしたりとか、そういうの いじってるのは楽しいんだよな。

動画

だいぶ前から YouTube にチマチマ動画あげたりはしてるけど、マスにリーチしようがないコンテンツしか思いつかないし、動画作るというのが自分にとってはあまりに大変すぎて続いてはいなかった。

ただ最近、なんとなく上げたショート動画が急に400万再生ぐらいされたのをきっかけにして、また動画を作ってみてる。

いろいろ動画の作りかたを変えてやってみてる。自分にとって楽かつ、動画にして意味があるみたいな方法があればいいんだけど

  • スライド作って話すだけ
    • Pros 比較的慣れた形式なので楽 (うまくできるとはいってない)
    • Cons 喋るの下手で動画としてつまらない
  • 素材録りながら喋る
    • Pros 動画としては見栄えする
    • Cons セッティング大変。録るのも大変。なんか生でもないのに緊張してしまう
  • とりあえず録画しておく。アフレコでなんとかする
    • Pros ↑ よりは楽
    • Cons セッティングは大変
  • 素材+音声合成
    • Pros アフレコもプレスコも楽。キモい声を聞きながら編集しなくていい。基本的に耳に慣れてて聞きとりやすい。ずんだもん可愛い
    • Cons 量産型動画にしかみえない

ギター

とにかく基礎練習だけは毎日やってて、証拠残しと思ってこれはYouTubeで配信を残してる。ぜんぜん上達している感じがしなくて、ミスが減らない。前まで練習してた曲もちょっと練習しないだけで忘れていくし身になっているものがないように感じてつらい。

motemen さんの ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい を見ていいなと思ったので自分もやってみた。ただ、WSL 内で動く tmux の作業ディレクトリを Windows 側に同期したいので、若干ややこしいことをすることになる。

以下のように wsl-update-cwds をつくる。

#!/usr/bin/env ruby

is_wsl = ENV.has_key?('WSLENV')
if !is_wsl
    exit 0
end

# PWSH = '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe'
PWSH = '/mnt/c/Program Files/PowerShell/7/pwsh.exe'

dirs = `tmux list-windows -F '\#{pane_current_path}'`.split("\n").uniq

command = <<~CMD
$WshShell = New-Object -COMObject WScript.Shell
function Create-Shortcut($targetPath, $shortcutPath) {
	$Shortcut = $WshShell.CreateShortcut($shortcutPath)
	$Shortcut.TargetPath = $targetPath
	$Shortcut.Save()
}

Remove-Item -Path $env:USERPROFILE/cwds/*.lnk
CMD
dirs.each do |dir|
    basename =  File.basename(dir)
    win_path = `wslpath -aw '#{dir}'`.chomp
    command << "Create-Shortcut '#{win_path}' $env:USERPROFILE/cwds/#{basename}.lnk\n"
end

# Since pwsh takes a bit of time to start up, run it asynchronously using spawn.
pid = spawn(PWSH, '-NoProfile', '-NoLogo', '-Command', command)
  1. tmux から作業ディレクトリをひっぱってくる
  2. wslpath コマンドで Windows 側のパスに変換する
  3. ↑の情報から PowerShell のコードを生成し、pwsh でショートカットとして生成する

なんでショートカットなのか? というと Junction だと UNC パスにリンクを貼れず、Symlink だと管理者権限が必要になって嫌なので、ほかに方法がない。

あとは zsh の chpwd フックで実行させる。WSLENV 環境変数を見て、存在しないなら実行しないように

chpwd () {
	if [[ -n "${WSLENV+x}" ]]; then
		# in WSL
		$HOME/dotfiles/bin/wsl-update-cwds
	fi
}
  1. トップ
  2. tech
  3. (zsh/tmux/WSL) ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい

外で保管しているクロスバイクのタイヤが、だいぶ劣化してしまって不安なので交換した。バーテープも同時に交換

パナレーサー クリンチャー タイヤ [700×25C] クローザープラス F725-CLSP-W-2P ホワイト (ロードバイク クロスバイク/ロードレース 通勤 ツーリング用) 簡易包装2本入り 白ライン - パナレーサー(Panaracer)

パナレーサー(Panaracer)

3.0 / 5.0

チューブは交換しなくてもいいかと思ったけど、タイヤに貼りついてしまってとれなかった。無理にとって再利用もこわいので予備のものに交換した。

一応バックアップ

sudo parted -l
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 107GB
Sector size (logical/physical): 512B/512B                                                                                                                                                                                                                                     Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name              Flags                                                                                                                                                                                                        1      1049kB  51.5GB  51.5GB  ext4            Linux filesystem
 2      51.5GB  53.7GB  2145MB  linux-swap(v1)  Linux swap
 3      53.7GB  107GB   53.7GB  ext4            Linux filesystem


Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  982M     0  982M   0% /dev
tmpfs          tmpfs     200M   24M  177M  12% /run
/dev/vda1      ext4       48G   18G   28G  40% /
tmpfs          tmpfs    1000M     0 1000M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs    1000M     0 1000M   0% /sys/fs/cgroup
/dev/vda3      ext4       50G   17G   31G  36% /data
tmpfs          tmpfs     200M     0  200M   0% /run/user/1000

cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda1 during installation
UUID=bec2c6ce-a9f5-4ebf-a264-065bcd55f2d4 /               ext4    errors=remount-ro 0       1
# swap was on /dev/vda5 during installation
UUID=8efef618-8831-4075-aae1-1d95730b25e8 none            swap    sw              0       0
UUID=f1304b76-c52f-41c5-9770-f8fadcf2f2d8 /data  ext4  defaults 0 2


 swapon -s
Filename                                Type            Size    Used    Priority
/dev/vda2                               partition       2095100 2094876 -1


sudo blkid
/dev/vda3: UUID="f1304b76-c52f-41c5-9770-f8fadcf2f2d8" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="0b483f43-b168-4a48-bc64-13428db0f42b"
/dev/vda2: UUID="8efef618-8831-4075-aae1-1d95730b25e8" TYPE="swap" PARTLABEL="Linux swap" PARTUUID="707f15c7-5c40-4501-949c-218fd115e7d9"
/dev/vda1: UUID="bec2c6ce-a9f5-4ebf-a264-065bcd55f2d4" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="dae9a827-082d-4aad-9438-f2da8cc6f62c"
ssh cho45@stfuawsc.com -C -t 'sudo dump -0u -f - /dev/vda1' > sakura-dev-vda1.dump
ssh cho45@stfuawsc.com -C -t 'sudo dump -0u -f - /dev/vda3' > sakura-dev-vda3.dump

upgrade後

h2o の再ビルド再インストール (libc の更新による)
perl 関係

  • DBD::mysql
  • cpanm install Crypt::OpenSSL::Random

rabitmq-server
mqtt proxy として使ってるが、再インストールして設定しなおした。

  1. トップ
  2. tech
  3. Ubuntu LTS 16 → 18 → 20

こうする

async function loadAsImage(svg) {
	return new Promise((resolve, reject) => {
		const svgXml = new XMLSerializer().serializeToString(svg);

		const blob = new Blob([svgXml], { type: 'image/svg+xml' });
		const url = URL.createObjectURL(blob);

		const img = new Image();
		img.onload = () => {
			URL.revokeObjectURL(url);
			resolve(img);
		};
		img.onerror = (e) => {
			URL.revokeObjectURL(url);
			reject(e);
		};
		img.src = url;
		console.log(url);
	});
}

const img = await loadAsImage(svg);
ctx.drawImage(img, 0, 0);

ポイント

XMLSerializer を使っているところ。svg.outerHTML だと HTML 的に解釈された svg なので、xmlns が入らず、単体の SVG としては正しくないものになっている。

ただ、ブラウザ自体は HTML の svg が xmlns を持っていることは知っているため、XMLSerializer を使うことで正しい svg にできる。

  1. トップ
  2. tech
  3. HTML5 の svg 要素 を canvas に描く方法


今まではスプールの外周で支えるタイプを使っていたけど以下の点で問題があった

  • スプールが歪んでいるとスムーズにおくれない
    • 最近は紙製のスプールが多く、割と歪みやすい
  • スプールが軽くなってくると台から外れてしまう
  • そもそもあまりスムーズではなく吐出量が安定しにくい

ということで、スプールホルダを一新することにした。

スプールを固定するボルトとナットを作り、そこに固定軸を貫通させるようにした。

TR30x6 という台形ねじにした。早くねじこみたいと思うとピッチを広くしたくなるが、Fusion360 だとピッチが広いねじだと台形ねじになるようだった。デフォルトだと3Dプリントしたときキツいので、ねじの面をメス側で0.2mmオフセットさせている。


ところで Fusion360 だとねじの面取りがあまり直感的ではなく、先に穴に対して面取りをかけてからねじを作成し、面取りのフィーチャをねじの作成後に移動するという手順を踏まないといけない。

メス側を完全に貫通にすることで、ボルトをつけたままスプールホルダだけつけはずしできる。

ボルトをハメるだけの簡単な構造。

ボックス的にギリギリ3つのスプールが収められる感じなので、軸が干渉しないように工夫してある。軸の位置を、上下に若干ずらし斜めにすべらせて設定する構造に。


アスベル キッチンボックス 17L 「ウィル」 NF-45 - アスベル

アスベル

5.0 / 5.0

  1. トップ
  2. tech
  3. 3D プリンタのスプールホルダーを一新

パナソニック ドラム式洗濯乾燥機 幅63.9cm 洗濯12kg/乾燥6kg 左開き NA-LX125CL-W マットホワイト トリプル自動投入 スゴ落ち泡洗浄 はやふわ乾燥 ヒートポンプ - パナソニック(Panasonic)

パナソニック(Panasonic)

5.0 / 5.0

買ってから11年、これまで何度か修理してもらったり(最初の5年で2回)、自分で修理したり (排水モーター・給水弁) してきたが、買いなおすことにした。

故障

乾燥機のファンモーター異常で乾燥が不可能になった。ファンモーターは背面パネルを開けないとアクセスできない。本体を動かせない状態で、一人で修理するのはたぶん無理。十分使っただろうということで買い替えることにした。

故障中は

洗濯脱水は可能なので脱水までやって近所のコインランドリーで乾燥をかけた。コインランドリーだと乾くのがかなり早い。

買った

メーカーはパナソニックで、NA-LX125C にした。他のメーカーも検討はした (AQUAとかTOSHIBAとか) けど、結局以下の点でパナソニックにしてしまった

  • 使い慣れている
  • 乾燥経路が短い・ヒートポンプユニットにアクセスしやすい
  • 構造や分解方法がある程度わかっている
  • 細々と故障しつつも致命的にならず10年持った実績

進化しているか?

機能面では洗剤自動投入ぐらい。細かい設計が変わっているのは感じる。自動投入の位置にあった制御ユニットが下にきていたり、その関係か排水経路も変わって糸くずフィルタが右に移動していた。

10年前よりも全体のサイズが若干(数cm) 小さくなっていて、より直方体に近くなっている。

購入店

白物家電はサポートの充実度からケーズデンキで買うことが多いのだけど、今回も結局ケーズデンキで買った。

最初、納期ができるだけ早いところという基準でヤマダデンキで買った。しかし蓋を開けてみれば、ウェブサイト上に表示されている納期は全然嘘で、実際の納期が2週間ぐらいだったので、ほんとひどいなと思いキャンセルした。サポート返信も遅い。

そのあとすぐ納期遅めっぽい表示のケーズデンキで買ったけど、結局ヤマダで提示された納期よりもかなり早くなった。最初からケーズデンキで頼めばよかったので、こればっかりは本当に評判悪いところで買ってはいけないという教訓だった。

https://lowreal.net/2023/05/15/3 去年書いたこれと全く同じ状況が続いている。何も状況は変わってない。SNSの悪い部分だけをしばらく感じ続けている。

特に個人的に面白いことをしているわけでもないし、趣味が充実しているかというと、趣味って何だっけ?という気持ちになる。ギターやってるだろと言われそうだけど、ギターはすごく高いモチベーションがあるというわけではなく、あまりにも他に生産的なことに取り組めないので、せめてなんらかの手は動かしておこうという感じで、楽しんで取り組んでいるかというとかなり微妙なバランスになっている。楽しんでないわけではないけど、楽しくないことも多い。

写真も撮ってないし、特に撮ろうという気持ちがでない。外に出るモチベーションがかなり低い。