Linux USER Manizx 2017冬号

コミックマーケット93 1日目「Linux Searhers」で頒布された「Linux USER Manizx 2017冬号」に1本記事を寄稿したのですが献本をいただきました :)

https://twitter.com/matoken/status/952848962137997312

ということでざっと一読した感想とか.

  • Raspbian の/rootをbtrfsにしてみた
    Btrfsが不安定ということですがamd64 環境では現在特に不安定には感じていないのでArmの問題かRaspberry Pi側の問題な気がします.
    Raspberry Pi 3 B + SSD 運用だと安定しそう?

  • microSD を複数同時に Copy!
    私は似たようなことにteeでddを繋いで利用しています.
    10portのセルフパワーのUSB HubにUSB-miroSD アダプタ8本刺しても問題なく動くんですね.

  • Raspberry Piを使った電子 FAX の試作
    以前は入会費,維持費0円でFax用の番号が貰えるサービスなんかもあったのですが最近は見当たらないのでFaxが必要な人にはとても良さそうですね.
    ハードウェアはRaspberry Piだけでmodem等も不要というのが魅力的です.
    #でもFax使う人には脱Faxしてほしかったり

  • UEFIで始める Linux From Scratch
    手持ちのマシンはUEFI未対応(ThinkPad X200)ですがこのQemuの手順だと遊べるのでは?と思ったので今度試してみようと思います.
    後,GNU corutilsのnproc知らなかったので参考になりました.

  • Linux ARMにVivaldiがやってきた
    自分の記事なので読んでませんが最近はARMではなくArmと表記するようです.
    それとVivaldiダウンロードページにUnsupportedとなっていますがArm版が記載されるようになりました.
    https://vivaldi.com/download/

  • PimoroniのpHATをプロキシ環境で使う
    Pimoroniは魅力的なpHATが色々あっていいですよね.
    このプロキシは環境によりつまずく人が多そうですね.参考になりました.
    #せめて自分のサービスにping飛ばしたらいいのに><

  • エアロジェルピザ窯DE-Aero(1/3)
    エアロゲル昔読んだ同人誌(つきなみCOMICS)に載って頭の片隅にかすかに…….
    今回のはコンパクトで(重量1/10!)予熱時間も短く普通のトースター的にも使えそうでいいですね.
    今庭のある家に住んでいるのでとりあえず持ち運びしない前提で耐熱レンガとピザストーンを買って積んでみたいなと.
    今度ホームセンターで探してみます.
    ところで電熱線はどのようなものを使ったのか気になりました.電気だと大分お手軽そう.

  • HeySiri!テレビつけて!
    前号と合わせて読むとGPIOやAC電源On/Off,赤外線制御と出来ていい感じですね.
    iPhone持っていないのでGoogle/Amazon辺りで真似してみたいです.
    #AGFAから逃れたいけどこの分野ではまだ無理かな…….

もしこれらの本が欲しい方は次は(受かれば)2018/04/22の「技術書典4」での頒布になると思います.

GNU social に Pleroma FE を導入してみる

OStatus の実装の一つに Pleroma というものがあります.

Mastodonともある程度APIの互換性があって一部のMastodon clientも利用できたりするらしいです. Elixir製で軽量,Raspberry Pi でも動くとのこと.ActivityPub に対応予定なのも良さそう.GNU social からの移行も出来るようになる予定とのことなのでこの辺りの実装が終わったら開発がとどおおっているように見える GNU social からの移行者が増えそうな気がします.( 自分はサブドメインに gnusocial とつけてしまったのを後悔.social とかにするんだった)

この辺の記事が参考になります.

Pleroma はバックエンドとフロントエンドが別れていて GNU social( + Qvitter Plugin ) と Pleroma FE(フロントエンド) という組み合わせが可能です.この Pleroma FE の導入は簡単そうなので既存の GNU social の上に導入してみました.

導入

導入は一番手軽そうな以下の手順を真似しました.

前提条件として,GNU social が動いていて Qvitter plugin が有効になっている必要があります.Qvitter は GNU social に含まれているので設定ファイルで有効にするだけでOKなはずです.

$ grep Qvitter /var/www/gnusocial.matoken.org/config.php 
addPlugin('Qvitter');

<追記>
Qvitter は GNU social に含まれているのは勘違いでした.以下から導入してください.

</追記>

次に以下の Pipelines から最新のzipを入手して展開します.

$ wget 'https://git.pleroma.social/pleroma/pleroma-fe/-/jobs/974/artifacts/download' -O pleroma-fe.zip
$ unzip pleroma-fe.zip 

展開してできたdistディレクトリ中の index.html を pleroma.html に変更します.

$ mv dist/index.html dist/pleroma.html

dist以下をGNU social のディレクトリにコピーして完了.

$ sudo -u www-data rsync -av dist/* /var/www/gnusocial.matoken.org/

導入した GNU social にログインした状態で /pleroma.html にアクセスすると Pleroma FE になります. / にアクセスすると元の Qviter なので併用可能です.

見た目は Qvitter とそんなに変わりませんがこの辺が気に入っています.

  • アイコンのアニメーション対応
  • 設定することでタイムラインの自動更新が可能(Enable automatic streaming of new posts when scrolled to the top)
  • ‘#NSFW’ が R18 注意の画像に差し替わってそれをクリックしないと表示されなく出来る 20180106_00:01:53-18586

縦長の画面にすると Qvitter と同じで Sidebar / Timeline に別れるので自動スクロールを有効にしてサブモニタに Timeline を表示するようにしています.

20180107_14:01:52-1314220180107_14:01:40-13089

Qvitter では自動更新されないし,自動更新可能なクライアントもいくつか試してみましたがいい感じのものが見当たらなかったので今これで落ち着いています.

ちなみに Pleroma FE だけだと API などは GNU social のままなので注意.

ちょっとしたカスタマイズ

static/config.json を修正することでデフォルトの壁紙やロゴ,テーマなどの変更が可能です. 壁紙は /static/bg.jpg /static/bgalt.jpg の2つが用意されています. NSFW 画像は static/img/nsfw.9399fe3.png のようです. static/styles.json でテーマが設定可能です.

不具合とか?

  • 非ログイン状態で /Pleroma.html にアクセスすると認証の窓が出てくるけど正しい認証情報を入力してもログインできない?一旦GSでログインしておくと良い.(GNU social は
    nightry だし 認証系の2FA plugin も入れているのでそのせいかも
  • タイミングにより通知が更新されないことがある?左側の「通知」を押すとmentionは全部取得する.(お気に入りの再取得は無理?)
  • 設定で「Enable automatic streaming of new posts when scrolled to the top」を有効にしているのに Timeline が自動更新されない.一番上にスクロールしている必要がある.上部のロゴ近辺をクリックすると一番上にジャンプする.

GNU socialに2要素認証を

Mastodonなどでは使える2要素認証ですが,GNU socialにはありません.
先日 GNU social を nightly にしたのでこれが利用できそうです.

Plugin形式で戻すのも簡単そうだし試してみました.

backup
dbとファイルをバックアップしておきます.

$ sudo -u www-data rsync -avv /var/www/gnusocial.matoken.org
rsync --stats -av --delete --link-dest=/export/backup/micro/gs/www/`/bin/date -d '1 day ago' +%Y%m%d`/ /var/www/gnusocial.matoken.org /export/backup/micro/gs/www/`/bin/date +\%Y\%m\%d`/
$ sudo -u www-data tar cvf - /export/backup/micro/gs/www/`/bin/date +\%Y\%m\%d`/ > /export/backup/micro/gs/www/`/bin/date +\%Y\%m\%d`-2fa.tar.xz
$ umask 0266 && /usr/bin/mysqldump --defaults-file=/export/backup/micro/gs/db/.my-backup.cnf --opt --all-databases --events | /usr/bin/xz -9 > /export/backup/micro/gs/db/`date +\%Y-\%M-\%d_\%H:\%m:\%S_\%s_$$`-master2nightly.sql.xz

GNU social の source ディレクトリに移動して 2fa を marge する

$ cd gnu-social
$ git fetch https://git.gnu.io/sstjohn/gnu-social.git 2fa-beta
$ git checkout -b sstjohn/gnu-social-2fa-beta FETCH_HEAD
$ git checkout nightly
$ git merge --no-ff sstjohn/gnu-social-2fa-beta
$ git push origin nightly

動いているGNU social環境にcopy

$ sudo -u www-data rsync -avv --omit-dir-times --exclude=".git*" ./ <GNUSOCIAL_PATH>/

config.phpに以下の行を追加してTwoFactorAuth pluginを有効にする

addPlugin('TwoFactorAuth');

動作確認
設定画面の左側に 2FA という項目が増える.

https://farm5.staticflickr.com/4588/39554232041_1d85c51a91_n.jpg

「Require secondary authentication upon login」のチェックボックスにチェックを付けて SAVE で2FAが有効になる.
Default provider で常用する2FA方式を選択しておくと便利です.

https://farm5.staticflickr.com/4633/39524857262_899ae15086_n.jpg

認証には,「FIDO 2.0」「TOTP」「U2F」が利用できます.
自分はTOTPを利用しています.TOTPの場合スマホアプリのGoogle Autharicatorなどが使えます.QR CodeやKEYを使ってアプリに登録します.

https://farm5.staticflickr.com/4589/38845402154_14ac40b77a_n.jpg

自分は信頼できるスマホを持っていないのでoathtoolを使って適当なscriptを書いて使っています.

$ oathtool --totp -b YJVHGFLJBWJAEROQVQ5MTIAKA2XVCUAH
148825

バックアップコードも保存しておきましょう.

https://farm5.staticflickr.com/4730/39554339271_99efd6658b_n.jpg

この状態で一旦GNU socialをログアウト,いつものID/PASSWORDでログインすると2FAの認証画面になるので,認証情報を入力してログインします.
既定値以外の認証情報を用いたい場合は「Try another way to sign in.」から選択可能です.

https://farm5.staticflickr.com/4587/39555314441_9b42544cc8_n.jpg

bug?
認証後真っ白な画面若しくは「Aythentication success!」と表示されるけど認証画面になります.多分バグです.URLを手動で編集したらログインできています.

https://farm5.staticflickr.com/4736/38658168725_4c15bc2765.jpg

サードパーティアプリケーションの対応
スマホアプリなどを利用している場合はパスワードを変更しなければいけません.
2FAの設定画面の「Application Passwords」の「ADD APPLICATION」ボタンから追加します.「Application name」に識別用の適当な名前を入れて,「Generate」ボタンでパスワードが生成されます.必要が無くなったら「Revoke」で消しましょう.

https://farm5.staticflickr.com/4637/27779332399_189cde7bdc_n.jpg
https://farm5.staticflickr.com/4590/27779333139_0753ed2c8e_n.jpg
https://farm5.staticflickr.com/4588/27779333639_68495ef93b_n.jpg

AndroidアプリのTwidereでは認証情報の変更画面が見当たりませんでした,アカウントの追加をして何時ものhost/id/新しい2faアプリケーションパスワードを設定するとすでにアカウントがあるとか言われて認証情報が書き換わりました.

という感じでとりあえず利用できるようになりました.
GNU socialでは結構長く放置されているので暫くは入らないような感じですかね.
バグはTOTP利用してる人が居ない?Ubico YubiKeyとかほしいですね.

Synergyでリモートから戻ってこれなくなって困る

Synergyというマルチプラットホームで利用できるキーボード,マウス,クリップボード共有ソフトがあってとても便利で常用しているのですが,今回ちょっとトラブルに合いました.

数日前にも起こったのですが,Synergyでリモートの画面からカーソル帰ってこなくなってローカルの操作ができなくなってしまいました.
初回はSynergyのバグとか踏んだ?と思いとりあえず Ctrl+Alt+F1 でローカルPCのコンソールに降りてSynergyをkillして起動し直したのですが,今回は猫がキーボードの上を横断した後に起こったのでキーボード・ショートカットではと調べてみました.

検索するとキーボード・ショートカットでロックされるよう

Solved my issue. Scroll lock stops the cursor from going to the other screen.

てことで ScrLk key を押して解決.

STDOUTからパイプで繋いでGoogle スプレッドシートに記録出来るtosheetsを試す

shellのSTDOUTからパイプで繋いでGoogle スプレッドシートに記録出来るtosheetsというものを見かけたのでちょっと試してみました.

導入はpipで入ります.

pip install tosheets

初回実行時には認証が走ってブラウザで許可すれば使えるようになります.

20171216_19:12:40-24220

以下の1つ目は新規にスプレッドシートをtosheet-testという名前でスプレッドシートを作りつつunix timeとcpuの温度を投げています.
2つ目,3つ目は1つ目で作ったスプレッドシートにunix timeとcpuの温度を投げています.

$ echo -n `date +%s`,`acpi -t|awk '{print $4}'|tr -s '\n' ','`|tosheets -c a1 --new-sheet='tosheet-test' -d ','
1dEv7l3FkxEM-NKlmPTdtfKq4aaemtdyHc1mlbAUOq3s
$ echo -n `date +%s`,`acpi -t|awk '{print $4}'|tr -s '\n' ','`|tosheets -c a1 --spreadsheet=1dEv7l3FkxEM-NKlmPTdtfKq4aaemtdyHc1mlbAUOq3s -d ','
$ echo -n `date +%s`,`acpi -t|awk '{print $4}'|tr -s '\n' ','`|tosheets -c a1 --spreadsheet=1dEv7l3FkxEM-NKlmPTdtfKq4aaemtdyHc1mlbAUOq3s -d ','

ちなみにこういう感じの出力が,

$ echo -n `date +%s`,`acpi -t|awk '{print $4}'|tr -s '\n' ','`
1513421821,48.0,47.0,

スプレッドシートを見るとこういうふうに記録されています.

20171216_20:12:07-28689

既存のスプレッドシートを使う場合はそのシートのURLからスプレッドシートIDを調べて spreadsheet optionで指定します.以下の例では 1y4qtUWqh6gSCUnEWkTcJX7y1k_1U0ph5ubdrxyUTXa4 がそれです.

https://docs.google.com/spreadsheets/d/1y4qtUWqh6gSCUnEWkTcJX7y1k_1U0ph5ubdrxyUTXa4/edit

お手軽に使えていいですね.Raspberry Pi等のSBCなんかからセンサの値を投げるとかのM2M的な使い方にも良さそうです.
Python3製でMIT Licenseです.

Googleドライブの写真を高画質に変換して容量を開放するメモ

Selection_006

Googleドライブの容量はほとんどgmailに利用しているのですが,たまに画像をアップロードしてしまい容量をいっぱいにしてしまいます.
画像サイズを小さく(現在は16MP以下)すると画像の容量がカウントされないのですが,サイズをオーバーしている画像を探して小さくするのはあまり現実的ではないです.
設定から自動的に縮小する方法があるのですが毎回やり方検索するのでメモしておきます.

設定 – Google フォト (https://photos.google.com/settings)

「アップロード サイズ(ウェブ上でアップロードする写真と動画のみ)
高画質 (容量制限なし、無料)」にチェックして
「容量を開放」でokです.数時間後には処理が終わっていると思います.

以下のページが参考になります.

容量を節約するために、写真が圧縮されます。写真のサイズが 16 MP を上回る場合は、16 MP まで縮小されます。
サイズが 16 MP の写真は、最大で約 61.0 cm x 40.6 cm まで高画質で印刷できます。
動画の解像度が 1080p を上回る場合は、1080p(高画質)まで縮小されます。動画の解像度が 1080p 以下の場合、保存された動画と元の動画の見た目の違いはほとんど生じません。

その他,
ドライブ ストレージ(https://drive.google.com/u/0/settings/storage?hl=ja)
にアクセスするとストレージの詳細が確認できます.

/proc/cpuinfoのSerialを詐称する

$ cat /proc/cpuinfo | sed -e 's/Serial.*/Serial\t\t: 00000000deadbeef/' > /tmp/cpuinfo_fake
$ sudo chmod 444 /tmp/cpuinfo
$ sudo chown root.root /tmp/cpuinfo
$ sudo mount -o bind /tmp/cpuinfo_fake /proc/cpuinfo
$ tail /proc/cpuinfo
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : BCM2835
Revision        : a01041
Serial          : 00000000deadbeef

JavaScript無効状態のブラウザでのDuckDuckGoカスタマイズ

DuckDuckGoをJavaScript無効にしたウェブブラウザで利用しようとすると以下で設定したカスタマイズが効かないようです.

これは以下のように設定していても

https://duckduckgo.com/?q=keyword&kp=-1&kl=jp-jp&kc=1&kf=-1&kh=1&k1=-1

JavaScriptが無効だと以下のページにリダイレクトされて,オプションが消えてしまうからのようです.

https://duckduckgo.com/html?q=KEYWORD

JavaScript無効環境では以下のようなURLを利用すると良さそうです.

https://duckduckgo.com/html?q=KEYWORD&kp=-1&kl=jp-jp&kc=1&kf=-1&kh=1&k1=-1

Joyfull Wi-Fi&電源利用可能に

IMG_20170126_000231

 

 

 

 

てことで九州民のオアシスJoyfullの一部店舗でWi-Fiが利用可能になっているようです.更に電源も利用可能とか.

鹿屋近辺の4店舗(高山店,肝付店,鹿屋北店,鹿屋店)を回ってみたところうち1件(肝付店)で利用可能なのを確認しました.

IMG_20170125_235917

Wi-FiはOPENで接続後認証が必要です.認証は以下のような感じで各種SNSやメールアドレスが利用できました.

Screenshot_2017-01-26-00-05-01Screenshot_2017-01-26-00-05-52

USENと株式会社ファイバーゲートのサービスのようです.

株式会社USENと株式会社ファイバーゲートが運営するWIFIサービスサポートセンター(以下「当社」といいます)が提供するインターネット接続等に関するサービス

回線はASAHIネットのようです.

$ traceroute-nanog www.google.com|head
traceroute to www.google.com (202.224.62.89), 30 hops max, 60 byte packets
 1  gateway (192.168.150.1)  2.994 ms  2.987 ms  2.968 ms
 2  kgsnik31.asahi-net.or.jp (202.224.38.216)  7.214 ms  9.284 ms  9.515 ms
 3  tkybi3-v7.asahi-net.or.jp (202.224.38.1)  32.352 ms  32.785 ms  32.584 ms
 4  tkycr2-v2.asahi-net.or.jp (202.224.32.182)  33.519 ms  33.885 ms  34.059 ms
 5  tkycr1-v1001.asahi-net.or.jp (202.224.51.1)  33.718 ms  33.835 ms  33.382 ms
 6  cs1cr1-v1002.asahi-net.or.jp (202.224.51.6)  34.042 ms  33.787 ms  33.502 ms
 7  cs1cdn2-v1023.asahi-net.or.jp (202.224.51.90)  33.597 ms  33.592 ms  34.722 ms
 8  cs1cdn1-v1031.asahi-net.or.jp (202.224.51.121)  32.347 ms  34.007 ms  33.860 ms
 9  * * *

速度は上下とも20Gbps前後

Speedtest by Ookla

1/26の時点では5GHz帯のみで珍しいなと思っていましたが,

1/30には2.4GHz/5GHz両方生きてるのを確認しました.

26日の時点ではAP落ちてたのかな?

大隅半島でWi-Fiが利用できてゆっくり出来る飲食店は他にマクドナルド西原店,自遊空間鹿屋店位だと思うのでかなり嬉しいです.

他の店舗にも速く導入して欲しい&電源席増強して欲しいとこです.

<追記>
モスバーガー鹿屋バイパス店にもFree Wi-Fiがあるようです.

</追記>

<追記2>
殆どの店舗への導入が済んだのか2017-03-29に「Free Wi-Fi はじめました!!」というメールが届きました.そして接続方法のドキュメントも.

20170329_17:03:39-18859
</追記2>