Nextcloudの2要素認証が出来ないときに管理者が1度限りのワンタイムコードを発行できる「Two-Factor Admin Support」

Nextcloudユーザが2要素認証を出来ないときにNextcloud管理者が48時間有効な1度限りのワンタイムコードを作成することができる「Two-Factor Admin Support」を試してみました.

「Two-Factor Admin Support」install
$ sudo -u www-data php occ app:install twofactor_admin

occコマンドで導入しました.WebインターフェイスからでもOKです.

nextcloud towfactor admin01

導入後,管理者アカウントで「設定」→「管理」→「セキュリティ」の「Two-Factor Admin」が出来ています.この「User ID」のテキストボックスにワンタイムコードを発行したいユーザIDを入力して「Generate」を押すと48時間有効なワンタイムコードが発行されます.このコードをユーザに伝えてログインしてもらいます.

occコマンドでのワンタイムコードの発行
$ sudo -u www-data php occ twofactorauth:admin:generate-code $USERID
There is an existing code that will be overwritten.

Generated new one-time code for test01: 163929
This code is valid for 48 hours.

occコマンドでも発行できます.

nextcloud towfactor admin02

該当ユーザはユーザID/パスワードを入力した後の2要素認証で「Admin code」という選択肢が増えるのでそれを選びます.

nextcloud towfactor admin03

管理者に教えてもらったワンタイムコードを入力してログインします.

TOTPのデバイスを壊してしまったり家に忘れてきたとかいったときに便利そうです.(数が少なければ)

環境
$ sudo -u www-data php /var/www/files.matoken.org/occ app:list | grep twofactor_admin:
  - twofactor_admin: 3.0.0
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

Nextcloudのmailアプリのアップデートに失敗してNextcloudが使えなくなって困る

Nextcloudアプリのアップデートを行ったところmailの処理中にコケてしまったようです.

$ sudo -u www-data php occ app:update --all
richdocuments new version available: 3.7.17
richdocuments updated
forms new version available: 2.2.1
forms updated
mail new version available: 1.9.2
An unhandled exception has been thrown:
Error: Call to undefined method OCA\Mail\Db\MessageMapper::findWithEmptyMessageId() in /var/www/files.matoken.org/apps/mail/lib/Migration/AddMissingMessageIds.
php:55
Stack trace:
#0 /var/www/files.matoken.org/lib/private/Repair.php(112): OCA\Mail\Migration\AddMissingMessageIds->run(Object(OC\Repair))
#1 /var/www/files.matoken.org/lib/private/legacy/OC_App.php(1042): OC\Repair->run()
#2 /var/www/files.matoken.org/lib/private/legacy/OC_App.php(979): OC_App::executeRepairSteps('mail', Array)
#3 /var/www/files.matoken.org/lib/private/Installer.php(206): OC_App::updateApp('mail')
#4 /var/www/files.matoken.org/core/Command/App/Update.php(116): OC\Installer->updateAppstoreApp('mail', false)
#5 /var/www/files.matoken.org/3rdparty/symfony/console/Command/Command.php(255): OC\Core\Command\App\Update->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#6 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(1000): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(271): Symfony\Component\Console\Application->doRunCommand(Object(OC\Core\Command\App\Update), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(147): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 /var/www/files.matoken.org/lib/private/Console/Application.php(215): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/files.matoken.org/console.php(100): OC\Console\Application->run()
#11 /var/www/files.matoken.org/occ(11): require_once('/var/www/files....')
#12 {main}mk@www6073uo:/var/www/files.matoken.org

再度実行すると処理は進んだようですが,縮退モードのような感じになっています.この状態でNextcloudのWebにアクセスするとアップデートを求められて利用できません.

$ sudo -u www-data php occ app:update --all
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
files_linkeditor new version available: 1.1.4
files_linkeditor updated

どうしたもんかととりあえず原因であろうmailをアップデートしようとするとすでに最新のようです.
次にmailを無効化してみました.するとNextcloud Webが利用できるようになりました.
一旦削除してインストールし直したほうが確実だろうなと思いつつmailを有効化するとNextcloudもmailも利用できるようになりました.

$ sudo -u www-data php occ app:update mail (1)
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
$ sudo -u www-data php occ app:disable mail (2)
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
mail 1.9.2 disabled
$ sudo -u www-data php occ app:enable mail (3)
mail 1.9.2 enabled
  1. mailアプリをアップデートしても反応はない
  2. mailアプリを無効化してNextcloud復旧
  3. mailアプリを有効化

occ app:disable mail の後 occ app:remove mail && occ app:install mail したほうが確実だと思います.

ちなみにNextcloud Hub以外のあまりメジャーでないアプリなどをインストールしてうまく動かないときにもNextcloudが動かなくなることがあります.そういうときも occ app:disable で復旧できるので覚えておくと助かります.

環境
$ sudo -u www-data php occ app:list | grep \ mail:
  - mail: 1.9.2
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

Nextcloudの電子メール2要素認証の「Two Factor e-mail provider」

Nextcloudアプリの「A Two-Factor-Auth Provider for e-mail」を試してみました.これはNextcloud認証時にユーザID/パスワードで認証した後設定されたメールアドレスにワンタイムトークンが届いて,それを使って2要素目の認証ができるようになるものです.

$ sudo -u www-data php occ app:install twofactor_admin
twofactor_admin 3.0.0 installed
twofactor_admin enabled

まずは導入.occ コマンドでインストールしました.WebIFからでもOKです.

nextcloud towfactor email01

2要素認証を有効にしたいユーザでNextcloud Webにログインして,「右上のアイコン」→「設定」→「個人情報」の「メール」に正しいメールアドレスが設定されているのを確認して,「セキュリティ」→「二要素認証」→「Email verification」の「Enable」を押して有効にします.

Note
電子メールアドレスが未登録だと以下のようなメッセージとなりました.
Could not generate a code: user hoge does not exist

nextcloud towfactor email02

するとトークンがNextcloudに設定したメールアドレスに送信されるのでメールを確認してトークンをテキストボックスに入力して,「Veryfi」を押して確認します.

nextcloud towfactor email03

うまく行きました.
一旦ログアウトしてログインしてみます.

nextcloud towfactor email04

ユーザID/パスワードで認証した後,「Email verification」の画面になります.メールが送信されているはずかので確認してそこに書かれているトークンを入力してログインします.

2要素認証ではTOTP以外にもSMS, Telegram, Signalなどもありますがそれぞれ設定が面倒です.電子メールであればユーザの設定は少ないので良さそうです.

環境
$ sudo -u www-data php occ app:list | grep previewgenerator:
  - previewgenerator: 3.1.1
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

Nextcloudのファイルプレビューを少しカスタマイズ

Nextcloudでは画像ファイル,MP3ファイルのカバー,テキストファイルのプレビューを生成できます.既定値ではこの機能は有効になっていて,アクセス時にプレビューが生成されます.
Nextcloudを軽く出来ないかと config/config.php ファイルに 'enable_previews' ⇒ false, を設定して無効にしてみましたが不便です.

nextcloud preview false

ということで再度プレビューを有効にしました.ついでにプレビューサイズを4096から1024に小さくしてプロバイダーを少し増やしてみました.

config/config.php
  'enable_previews' => true, (1)
  'preview_max_x'  =>  1024, (2)
  'preview_max_y'  =>  1024, (3)
  'preview_max_filesize_image'  =>  50, (4)
  'enabledPreviewProviders' => [ (5)
        'OC\Preview\PNG',
        'OC\Preview\JPEG',
        'OC\Preview\GIF',
        'OC\Preview\HEIC',
        'OC\Preview\BMP',
        'OC\Preview\XBitmap',
        'OC\Preview\MP3',
        'OC\Preview\TXT',
        'OC\Preview\MarkDown',
        'OC\Preview\OpenDocument',
        'OC\Preview\Krita',
        'OC\Preview\PDF',
        'OC\Preview\Postscript',
        'OC\Preview\SVG',
        'OC\Preview\TIFF',
        'OC\Preview\Font',
  ],
  1. プレビューを有効にする,既定値 true
  2. プレビュー横サイズ,既定値 4096
  3. プレビュー縦サイズ,既定値 4096
  4. プレビュー対象の最大ファイルサイズ,これ以上のサイズのファイルはプレビューが作られない,単位はMB,既定値 50
  5. プレビューファイルプロバイダー,既定値は '' で内容は,

edit 2021-03-17)
スマホ写真やpdfはあらかた1MBを超えるので preview_max_filesize_image は1MBから規定値の50MBに戻しました.

OC\Preview\BMP
OC\Preview\GIF
OC\Preview\HEIC
OC\Preview\JPEG
OC\Preview\MarkDown
OC\Preview\MP3
OC\Preview\PNG
OC\Preview\TXT
OC\Preview\XBitmap
OC\Preview\OpenDocument
OC\Preview\Krita

その他の既定値以外のプロバイダー

OC\Preview\Illustrator
OC\Preview\Movie
OC\Preview\MSOffice2003
OC\Preview\MSOffice2007
OC\Preview\MSOfficeDoc
OC\Preview\PDF
OC\Preview\Photoshop
OC\Preview\Postscript
OC\Preview\StarOffice
OC\Preview\SVG
OC\Preview\TIFF
OC\Preview\Font

そして Preview Generator というプレビューを事前生成してくれるアプリを試してみようとしましたが,暗号化を有効にしていると利用できませんでした.パスワード入力してプレビュー生成ができると便利かもですがなんにせよ自分以外のデータは触れないので微妙ですね.

Known issues
The app does not work with encryption enabled

— https://github.com/rullzer/previewgenerator#known-issues
$ sudo -u www-data php occ app:install previewgenerator (1)
previewgenerator 3.1.1 installed
previewgenerator enabled
$ sudo -u www-data php /var/www/files.matoken.org/occ | grep preview$ -A4 (2)
 preview
  preview:delete_old                      Delete old preview folder (pre NC11)
  preview:generate-all                    Generate previews
  preview:pre-generate                    Pre generate previews
  preview:repair                          distributes the existing previews into subfolders
$ sudo -u www-data php occ preview:generate-all (3)
Encryption is enabled. Aborted.
$ sudo -u www-data php occ app:remove previewgenerator (4)
previewgenerator disabled
previewgenerator 3.1.1 removed
  1. Preview Generatorをインストール
  2. usage
  3. 暗号化が有効だとプレビューの手動生成に失敗する
  4. Preview Generatorを削除
環境
$ sudo -u www-data php occ app:list | grep previewgenerator:
  - previewgenerator: 3.1.1
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

Nextcloudで画像ファイルをURL共有してWebに埋め込んで利用したい

NextcloudでURL共有した画像をblogなどに埋め込む方法のメモです.今回はNextcloud 20.0.8ですが,Nextcloud 13.0.0から可能になった機能のようです.
共有単位は画像ファイル単体はOKですが,画像ファイルを含むディレクトリ共有ではうまく動かないようです.

20210311 18:03:55 252379

共有したい画像を共有

20210311 18:03:42 228558

「URLで共有」の右の「+」で共有

20210311 18:03:55 228828

URL共有されてURLがコピーされる

20210311 18:03:19 229349

既定値では共有有効期限が1週間に設定されているのでずっと公開したい場合は「有効期限を設定」のチェックを外す

20210311 18:03:02 234008

共有されたURLを開くとプレビューになる

画像をクリックすると,画像が開ける.
若しくは共有URLに /preview を追加する.
拡張子がないとうまく動作しないsiteなどの場合は,/preview?dummy.jpg などのように /preview の後ろにさらにそれらしい文字列を追加すると開けたりする.

https://files.matoken.org/index.php/s/bsaAdtxp8WgXLXE (1)
https://files.matoken.org/index.php/s/bsaAdtxp8WgXLXE/preview (2)
https://files.matoken.org/index.php/s/bsaAdtxp8WgXLXE/preview?/dummy.jpg (3)
  1. 共有URL(プレビューURL)
  2. URL末尾に /preview をつけると画像が表示される
  3. /preview の後ろにダミーファイル名をつける

後は普通に静的画像URLのようにして使えます.

$ wget -o /dev/null -O - https://files.matoken.org/index.php/s/bsaAdtxp8WgXLXE/preview | pee "file -" display
/dev/stdin: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90", baseline, precision 8, 512x342, components 3
preview

blogに貼り付けもできる :)

環境
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

ページャーのlv, less, moreからエディタを起動する

ページャーの lv でファイルを見ているときに猫がなにかキーを押してvimが起動しました.どうも何かのキーバインドで lv からvimが起動できるようです.

manを見ると v でエディタが起動するようです.

man lvより
v:     Launch the editor defined by option -E

そして -E オプションでエディタのコマンドがカスタマイズできるようです.

man lvより
-E'<editor>' (default 'vi -c %d')
       Editor name (default 'vi -c %d')
       ``%d'' means the line number of current position in a file.

しかし,lv起動時にこのオプションを指定するのは面倒.環境変数 EDITOR は効くかなと試すと効くようです.こちらで設定したほうがいいかもしれませんね.

$ EDITOR=ed lv ~/.bashrc

lvは環境依存が大きいのでもう少し汎用的なlessでも確認すると同じように v でviか,環境変数 EDITOR で指定されたものが起動するようです.

man lessより
v      Invokes an editor to edit the current file being viewed.  The editor is taken from the environment variable VISUAL if defined, or  EDITOR  if
       VISUAL is not defined, or defaults to "vi" if neither VISUAL nor EDITOR is defined.  See also the discussion of LESSEDIT under the section on
       PROMPTS below.

追記 2021-03-10)
moreコマンドも同様に v でエディタが起動します :)

man moreより
v         Start  up an editor at current line.  The edi‐
          tor is taken  from  the  environment  variable
          VISUAL  if defined, or EDITOR if VISUAL is not
          defined, or defaults to vi if  neither  VISUAL
          nor EDITOR is defined.
環境
$ dpkg-query -W lv less vim ed util-linux
ed      1.17-1
less    551-2
lv      4.51-8
util-linux      2.36.1-7
vim     2:8.2.2434-3
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Twitterクライアントsayakaちゃんの最新版(3.5.0)をLinuxでビルドする

追記2021-03-09)
Raspberry Pi OS buster armhf 及び Ubuntu 21.04 (development branch) amd64でも同様にビルドできました :)

ターミナルで動作するTwitterクライアントとしてsayakaちゃんというものがあります.NetBSDの入ったSHARP X68030でも動作するという軽量なクライアントで,SIXELで画像が表示できたりストリームモードがあってハッシュタグなどを垂れ流すのに便利に使っています.

今日オープンソースカンファレンス2021 Online/Spring 2日目があって @ebijunさんの「NetBSDのご紹介」 を視聴していたのですが,新しいバージョンの 3.5.0 がリリースされたとのことで試してみました.

twitter クライアント sayaka ちゃん version 3.5.0 (2021/03/03)
ターミナルに特化した twitter クライアントです。

フィルタストリームの垂れ流しが出来ます。
フィルタストリームによる疑似ホームタイムラインが表示できます。
mlterm などの SIXEL 対応ターミナル用です。
X68030/25MHz、メモリ12MB でも快適(?)動作。
更新履歴
3.5.0 (2021/03/03) … C++ に移行し vala 版廃止。 画像は現在のところ JPEG, PNG のみ対応。 ターミナル背景色の自動取得を実装。 --protect、--support-evs オプション廃止。 --noimg オプションを廃止 (--no-image に変更)。 userstream 時代の録画データの再生機能廃止。

watchしてたけどメール届いていないようです?

sayaka watch

現在のバーションを確認してみます.1つ前のバージョンぽいですね.

$ sayaka --version
sayaka.vala 3.4.6 (2020/11/10)

ビルドを試みます.

$ git clone https://github.com/isaki68k/sayaka/ (1)
$ cd sayaka
$ git checkout 3.5.0
HEAD is now at 958f630 ver 3.5.0 (2021/03/03)
$ ./configure (2)
  1. sayakaのsourceをclone
  2. configure

足りないものがパッケージ名で表示されて助かります :)

configure: error: *** mbedtls not found.
        On Ubuntu, sudo apt install libmbedtls-dev
configure: error: *** mbedtls not found.
        On Ubuntu, sudo apt install libmbedtls-dev

./configure が通ったらmake……失敗です.

$ make
(cd src; make all)
make[1]: Entering directory '/home/matoken/src/sayaka/src'
Makefile:3: *** missing separator.  Stop.
make[1]: Leaving directory '/home/matoken/src/sayaka/src'
make: *** [Makefile:2: all] Error 2

必要なものをよく見ると,GNU makeではなく BSD make が必要となっていました.(3.4.6を確認するとこのときはGNU makeなので今回変わったようです)

必要なもの
C++17 compiler
jpeg (libjpeg)
libpng
mbedtls (2.9.0 or later?)
BSD make (not GNU make)

BSD makeを導入してGNU makeではなくBSD makeを使います.

$ sudo apt install bmake (1)
$ bmake sayaka (2)
$ src/sayaka --version (3)
sayaka version 3.5.0 (2021/03/03)
$ install src/sayaka ~/bin/ (4)
  1. BSD makeを導入
  2. BSD makeでsayakaをmake
  3. 出来上がったsayakaを叩いてみる
  4. sayakaを適当な場所( ~/bin )にコピーにinstall

ということでsayaka 3.5.0 にできました :)

私はmlterm等のSIXEL対応端末で検索したいキーワードを繋げていってデスクトップの横においておくといった感じで使っています.

環境
$ sayaka --version
sayaka version 3.5.0 (2021/03/03)
$ ldd src/sayaka | cut -f1 -d"(" | cut -f3 -d" " | xargs -n1 apt-file search | cut -f1 -d: | uniq | xargs dpkg-query -W | grep amd64
libbsd0:amd64   0.11.3-1
libc6:amd64     2.31-9
libgcc-s1:amd64 10.2.1-6
libjpeg62-turbo:amd64   1:2.0.6-2
libmbedcrypto3:amd64    2.16.9-0.1
libmbedtls12:amd64      2.16.9-0.1
libmbedx509-0:amd64     2.16.9-0.1
libmd0:amd64    1.0.3-3
libpng16-16:amd64       1.6.37-3
libstdc++6:amd64        10.2.1-6
zlib1g:amd64    1:1.2.11.dfsg-2
$ dpkg-query -W bmake build-essential
bmake   20200710-7
build-essential 12.9
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

ZSTD 1.4.9でLong Modeが速くなったらしいので少し試す

ZSTD 1.4.9がリリースされていました.

今回 --long 利用時に最大2倍の高速化が売りのようです.それはすごいってことで少し試してみました.

>2x Faster Long Distance Mode
Long Distance Mode (LDM) --long just got a whole lot faster thanks to optimizations by @mpu in #2483! These optimizations preserve the compression ratio but drastically speed up compression. It is especially noticeable in multithreaded mode, because the long distance match finder is not parallelized.

現在のzstdのバージョンは1つ前の1.4.8でした.

$ zstd -V
*** zstd command line interface 64-bits v1.4.8, by Yann Collet ***

1.4.9をsourceからbuildします.

$ sudo apt build-dep zstd (1)
$ git clone https://github.com/facebook/zstd (2)
$ cd zstd
$ git checkout v1.4.9 (3)
$ make (4)
$ ./zstd -V (5)
*** zstd command line interface 64-bits v1.4.9, by Yann Collet ***
  1. zstdビルドに必要なパッケージの導入
  2. sourceのclone
  3. 1.4.9に切り替え
  4. make
  5. バージョン確認
ZSTD(1)
       •   --long[=#]:  enables long distance matching with # windowLog, if not # is not present it defaults to 27. This increases the window
           size (windowLog) and memory usage for both the compressor and decompressor. This setting is designed to  improve  the  compression
           ratio for files with long matches at a large distance.

           Note: If windowLog is set to larger than 27, --long=windowLog or --memory=windowSize needs to be passed to the decompressor.

--long は 31までのようです.32を指定するとこういうエラーになります.

zstd: error 11 : Parameter is out of bound

ちょうど大きめのtarがあったのでこれで試します.

$ ls -l ../linux-5.11.tar
-rw-r--r-- 1 matoken matoken 1064212480 Feb 15 18:18 ../linux-5.11.tar
$ grep -m1 ^"model name" /proc/cpuinfo (1)
model name      : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
$ nproc (2)
4
$ /bin/time -f"\treal\t%e" zstd -q -T`nproc` -1 --long=31 ../linux-5.11.tar -o /dev/null (3)
        real    8.10
$ /bin/time -f"\treal\t%e" ./zstd -q -T`nproc` -1 --long=31 ../linux-5.11.tar -o /dev/null (4)
        real    5.27
$ /bin/time -f"\treal\t%e" zstd -q -T`nproc` --long=31 ../linux-5.11.tar -o /dev/null (5)
        real    8.36
$ /bin/time -f"\treal\t%e" ./zstd -q -T`nproc` --long=31 ../linux-5.11.tar -o /dev/null (6)
        real    5.76
$ /bin/time -f"\treal\t%e" zstd -q -T`nproc` -19 --long=31 ../linux-5.11.tar -o /dev/null (7)
        real    388.15
$ /bin/time -f"\treal\t%e" ./zstd -q -T`nproc` -19 --long=31 ../linux-5.11.tar -o /dev/null (8)
        real    318.08
$ /bin/time -f"\treal\t%e" zstd -q -T1 --long=31 ../linux-5.11.tar -o /dev/null (9)
        real    11.81
$ /bin/time -f"\treal\t%e" ./zstd -q -T1 --long=31 ../linux-5.11.tar -o /dev/null (10)
        real    7.89
  1. CPUは Intel® Core™ i5-3320M CPU @ 2.60GHz
  2. プロセッサ数
  3. 圧縮レベル1(最低)の1.4.8で8.10s
  4. 圧縮レベル1(最低)の1.4.9で5.27s
  5. 圧縮レベル3(デフォルト)の1.4.8で8.36s
  6. 圧縮レベル3(デフォルト)の1.4.9で5.76s
  7. 圧縮レベル19(最高)の1.4.8で388.15s
  8. 圧縮レベル19(最高)の1.4.9で318.08s
  9. スレッド数を1にしたときの圧縮レベル3(デフォルト)の1.4.8で11.81s
  10. スレッド数を1にしたときの圧縮レベル3(デフォルト)の1.4.8で7.89s

2倍とまでは行きませんが速くなっているようです :)
マルチスレッドで聞きそうなことが書かれていますが,スレッド数を1にしてもあまり割合変わらない?

この環境はよくサーマルスロットリングしているので参考程度に…….

環境
$ ./zstd -V
*** zstd command line interface 64-bits v1.4.9, by Yann Collet ***
$ zstd -V
*** zstd command line interface 64-bits v1.4.8, by Yann Collet ***
$ dpkg-query -W zstd
zstd    1.4.8+dfsg-2.1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

インタラクティブバイナリエディタのGNU pokeをbuild

gnu poke

インタラクティブで拡張可能なバイナリエディタのGNU pokeの1.0がリリースされました.とりあえずビルドして使えるようにしてみました.

$ sudo apt install libgc-dev libreadline-dev build-essential (1)
$ wget https://ftp.gnu.org/gnu/poke/poke-1.0.tar.gz https://ftp.gnu.org/gnu/poke/poke-1.0.tar.gz.sig (2)
$ gpg2 --verify ./poke-1.0.tar.gz.sig (3)
gpg: assuming signed data in './poke-1.0.tar.gz'
gpg: Signature made Fri 26 Feb 2021 06:59:30 PM JST
gpg:                using RSA key BDFA5717FC1DD35C2C3832A23EF90523B304AF08
gpg: Good signature from "Jose E. Marchesi <jemarch@gnu.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: BDFA 5717 FC1D D35C 2C38  32A2 3EF9 0523 B304 AF08
$ tar tvf ./poke-1.0.tar.gz | lv
$ tar xf ./poke-1.0.tar.gz (4)
$ cd poke-1.0
$ mkdir build (5)
$ cd build
$ ../configure --help
$ ../configure (6)
$ make (7)
$ make check (8)
  1. 必要なパッケージの導入
  2. ソースファイルダウンロード
  3. 署名確認
  4. source展開
  5. ビルドディレクトリ作成
  6. configure
  7. make

必要パッケージについてはここではDebianで必要最小限の物です.その他の関連パッケージや環境は DEPENDENCIES に書かれています.

$ poke/poke ${FILE}
     _____
 ---'   __\_______
            ______)  GNU poke 1.0
            __)
           __)
 ---._______)

Copyright (C) 2019-2021 The poke authors.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Powered by Jitter 0.9.258.
Perpetrated by Jose E. Marchesi.

For help, type ".help".
Type ".exit" to leave the program.
(poke) .help TOPIC
Available help topics:

Commands:
        dump - display the contents of a range in the current IO space.
        copy - Copy a range of memory.
        save - Save a range of an IO space to a file.
        extract - Extract the contents of a mapped value to a mem IOS.
        scrabble - Scrabble part of an IO space based on patterns

To access the poke manual, type ".doc TOPIC".
(poke) dump
76543210  0011 2233 4455 6677 8899 aabb ccdd eeff  0123456789ABCDEF
00000000: 4d5a 7146 7044 3d27 0a00 0010 00f8 0000  MZqFpD='........
00000010: 0000 0000 0001 0008 4000 0000 0000 0000  ........@.......
00000020: 0000 0000 4a54 0000 0000 0000 0000 0000  ....JT..........
00000030: 0000 0000 0000 0000 0000 0000 500a 0000  ............P...
00000040: b240 eb00 eb14 9090 eb06 4883 ec08 31d2  .@........H...1.
00000050: bd00 00eb 05e9 a313 0000 fc0f 1f87 3ee0  ..............>.
00000060: bf00 7031 c98e c1fa 8ed7 89cc fb0e 1fe8  ..p1............
00000070: 0000 5e81 ee72 00b8 0002 5050 0731 ffb9  ..^..r....PP.1..
(poke) .exit

ちょっと起動してみましたが使い方がよくわからない……..docを読まないとかな?

$ sudo checkinstall \
--install=no \
--fstrans=no \
--maintainer='matoken@example.com' \
--pkgname='poke' \
--pkgversion='1.0' \
--pkgaltsource='http://www.jemarch.net/poke' \
make install
$ sudo apt install ./poke_1.0-1_amd64.deb

動くようなのでcheckinstallで一旦.debを作ってInstallしました.
活用できるといいな.

ちなみにいつもはbviを使うことが多いです.

環境
$ poke --version
GNU poke 1.0

Copyright (C) 2019-2021 The poke authors.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Powered by Jitter 0.9.258.
Perpetrated by Jose E. Marchesi.
$ dpkg-query -W libgc-dev libreadline-dev build-essential poke
build-essential 12.9
libgc-dev:amd64 1:8.0.4-3
libreadline-dev:amd64   8.1-1
poke    1.0-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

ビデオ会議システムのAroundを少し試してみた(Linuxウェブアプリ版)

多分backspace.fm #379で初めてAroundを知りました.

Podcastでは招待制と言ってたけどGet startedとあるからからメールアドレスを登録できるので参加できるのではと思ったらメールアドレスを登録しても何も起こりません.FAQページを見ると招待制で順番待ちになるよう.

How do I sign up for Around?
Around is currently in beta and invite-only. Please click “Get Started” on the upper right hand corner and enter your email to be added to our waitlist.

around auth

気長にまとうと思ったのですが,いつの間にか登録可能になっていました.Get startedからGoogle/Slack/Apple等で認証することで参加できました.

#この数日後に登録していたメールアドレスに参加メールが届きました.

鹿児島らぐのアフターや自分一人で少し試したのでメモしておきます.(2021-02-17〜2021-02-28頃試した内容です)

Linuxでの参加方法

WindowsとmacOS版アプリが存在しますが,Linuxの場合現在はウェブアプリ版でウェブブラウザで参加することになります.Google Chomreが推奨されますが,Chromiumでも参加できました.
Firefoxでアクセスするとこのようなメッセージが出て参加できません.

Around app for
Linux is coming soon
In the meantime, you can join the meeting in a Google Chrome or Microsoft Edge browser.

ちなみにFAQページを見るとmobileとLinux版アプリについては開発中のようでcoming soonとなっています.期待して待ちましょう.

Do you have a mobile app?
Our mobile app is coming soon – stay tuned!

Do you have a Linux app?
Our Linux app is coming soon – stay tuned!

Android のGoogle Chrome で参加してみると,「We are on mobile yet!」とか言われますが,「PC 版サイト」にすると利用できました.iOSは未確認です.

管理画面と部屋への参加

around lobby

アカウントを持っている方は https://meet.around.co/ からミーティングを開始したり部屋を作ったり出来ます.ミーティング中の部屋は参加者のアイコンが表示されていま人が要るなというのがわかります.

around room ng

部屋は複数作成(3つまでは確認)できて,URLも変更できます.流石にLinuxとかは無理でしたが,matokenは取得できました :)
この辺は早いものがちみたいですね.

部屋をクリックすると部屋に入れます.右上の「Copy Meeting Link」を押して https://meet.around.co/r/ルームID といったミーティングURLをコピーして参加者に伝えます.このときの参加者はAroundのアカウントを持っていなくても参加できます.

around join

IDを入力して参加します.

around roomlock

既定値では許可待ちになるのでしばらく待ちます.

around roomaccept

管理者は許可してあげます.(設定でいきなり参加できるようにも出来ます)

around createaccount

参加するとAroundに登録していない人は右下にアカウント登録のポップアップが出るのでそこから登録が可能です.

Echo Terminator

around echo terminator

同じネットワークから複数人で参加しようとすると「Echo Terminator」を使うか聞いてきます.これを有効にすると同じ部屋でマイクとスピーカーを有効にしてもハウリングなどが起こらずに利用できるようです.私は未だ未確認ですがちゃんと動けばとても有用そうな機能です.この機能は特許出願中のようです.

メニュー

around main

ミーティング画面の上の方にメニューがいくつかあります.「Fliating Mode」はWebアプリ版では利用できません.(これが使えるとサブモニタがなくても結構便利そうな気がします.)「Campfire Mode」は顔がサークル状に表示されるモード,「Notes」はみんなで1つのノートを編集するモード,「Image Sharing」は画像共有モード(画像以外も共有できた),「Screen Sharing」は画面共有ができます.

around settings

右上の歯車⚙アイコンから各種設定が出来ます.ショートカットも書かれているので便利です.

カメラ

自分のカメラの映像は各参加者に転送された後顔の周りが丸くくり抜かれて表示されます.顔の位置が変わっても自動的に追従してくれます.(素人考えではローカルで自分のかをくり抜いてそれを転送したほうが良さそうだけど転送先で追尾するみたい)

デスクトップアプリでは「Floating mode」でこのカメラアイコンをフローティング表示することが可能なようです.これを使えるとシングルモニタでも画面を広く使えて便利そうです.

自分のカメラ映像をクリックすると虹🌈のアイコンが表示されるのでそれをクリックして右側にポップアップする「Enable video filters?」の「Enable」でフィルタが有効になります.このあとアイコンをクリックしたり F keyでフィルタが切り替わります.フィルタなしを含めて軽いものから強いものまで12種類あるようです.(寝癖直してないとかお化粧してないとかいったときにも有効そう?)

絵文字

around emoji gif

around emoji

下のテキストボックスの横に🖐のアイコンがあります.これを押すと挙手で,自分のアイコン横に表示されます.テキストボックスをクリックすると他の絵文字もポップアップしてきて好きな絵文字を押すとビデオの上に 一時的に 表示されます.テキストボックスに単語を入力することで絵文字のインクリメンタル検索も出来ます.

Note
この手のアイコンの色はアカウントを作成して肌のトーンを設定することがえきます.(https://meet.around.co/ → 右上の自分の名前 → Prefarences )
around skin tone

アニメーションGIF

インターネットミーム的な画像がたくさん

around gif

テキストボックスをクリックすると他の絵文字の右にアニメーションGIFも表示されます.好きな画像をクリックすると ビデオの代わりに その画像が表示されます.ビデオ上にマウスカーソルを移動して表示される☓アイコンをクリックすることでビデオに戻ります.アニメーションGIFも文字列でインクリメンタル検索できます.

Note
このサービスは「GIPHY」というサービスを使っているようです.そして,DMCA受け付けてるようです.
GIPHY | Search All the GIFs & Make Your Own Animated GIF
GIPHY DMCA Copyright Policy – GIPHY

メッセージやリンクの投稿

around message

メッセージや,リンクを投稿できます.投稿した文字列は自分のアイコンの上に表示されます.過去の投稿はミーティング中には恐らく確認できません.
このとき投稿したメッセージの中でリンクの含まれているものについてはミーティング終了後にメールで届きます.

ノート機能

around note

参加者みんなで1つのノートを編集できます.編集中はカーソル位置に編集者の名前が表示されますが,その時以外は誰がどの部分を編集したかはわからないようです.
このノートはアカウント登録者にはミーティング終了後に投稿されたリンクと一緒にメールで送られてきます.

画像共有(ファイル共有)

around file shareing

「Image sharing」で画像に関わらずファイルの共有が出来ます.このファイルはミーティング終了後に破棄されてしまうようです.必要なファイルはダウンロードしておきましょう.

画面共有

around screenview

画面共有されると,自分の環境に合わせて共有サイズを変更できます.

around screenshare

画面共有者は,「See what I’m sharing」をOnにすることで現在共有している画面をプレビューで見ることが出来ます.間違った画面を共有してしまうといった事故が減らせそうです.

まとめメール

around note mail

ミーティング終了後にアカウント登録者にまとめメールが届きます.時間や参加者,ノートとコメントに書いたリンクURLが1通のメールにまとめられて届きます.
コメントに書いた文章は添付されませんが,URLやURLの含まれるコメントは添付されます.

招待コード

around invites

https://meet.around.co/ → 「Extra invites to Around」を見ると5つ持っているようです.今の時点では誰でも登録できるようだけどまた制限されたときに使えるのかもしれません.

もし招待コードが欲しい人が居たら以下のフォームから教えてください.

まとめ

大抵のビデオミーティングでは顔が大きく表示され結構疲れます.慣れてくるとビデオをOffにしがちですがそうすると反応がわからず辛いです.Aroundだとビデオがアイコンだったりフィルタを使うと顔出しの抵抗が薄れるけど反応はわかる感じがしてチームなどで日常的に使うのに剥いている気がします.デスクトップアプリ版だと顔がポップアップできるのでマルチモニタ環境でなくてもそんなにビデオが邪魔にならず作業しながら使えそうです.
Echo Terminatorを使うと難しい複数拠点間でのミーティングも楽にできそうです.

Linux対応もする予定らしいのでそうするとポップアップモードが使えるようになったり,PCへの負荷も低くなると思うので期待しています.(Linuxネイティブクライアントのあるビデオミーティングサービスは少ないです.現在よく使われるものはSkypeとZoom.usくらい?)
(後はベータが終わると有料になると思うのでその値段がどのくらいになるのか……)