Androidで通信できなくなってしまい困る

手元の端末(CyanogenMod 11)をいじって使わなさそうなアプリケーションを無効にしていたのですが,再起動したら3G通信ができなくなってしまいました.とりあえずそれっぽい物を有効化していったけど1つを除いて有効化しても通信できない.そしてその残り1つは有効化がグレーアウトして押せないボタンになっています. アプリケーションは「電話/SMS用ストレージ com.adnroid.providers.telephony」というもの.

Screenshot_2018-01-09-19-43-11

これはもしかしてファクトリーリセットしないといけない?と思ったのですが,「設定」->「アプリ」の右上の「︙」->「アプリの設定をリセット」->「アプリをリセット」で元に戻せました.

Screenshot_2018-01-09-19-43-53Screenshot_2018-01-09-19-44-01

またやりそうなのでメモ.

WordPress Disqus Pluginのエラーを修正

このblogの下の方にこんなエラーが出てコメントのフォームが出てきません.
hostのOSをDebian jessieからDebian stretchにdist-upgradeしてWordPressのVersionが上がったせいでしょう.

4.1+dfsg-1+deb8u15 → 4.7.5+dfsg-2+deb9u1

Notice: get_currentuserinfo の使用はバージョン 4.5.0 から非推奨になっています! 代わりに wp_get_current_user() を使ってくださ
い。 in /usr/share/wordpress/wp-includes/functions.php on line 3830

spamが酷くてDisqusのコメントシステムをつかっているのですがそれがコケているような感じです.
Plugin の version が古いのかと確認してみると最新の 2.87

とりえずエラーメッセージのとおり修正したら動きました.

diff

$ sudo -u www-data diff -u plugins/disqus-comment-system/disqus.php.org plugins/disqus-comment-system/disqus.php
--- plugins/disqus-comment-system/disqus.php.org        2017-10-04 06:16:02.520645362 +0900
+++ plugins/disqus-comment-system/disqus.php    2018-01-08 02:00:35.729022200 +0900
@@ -1382,7 +1382,7 @@
         return array();
     }
     global $current_user, $dsq_api;
-    get_currentuserinfo();
+    wp_get_current_user();
     if ($current_user->ID) {
         $avatar_tag = get_avatar($current_user->ID);
         $avatar_data = array();

利用者多いしDisqus公式のものなので別のもっといい方法がある気がします.

DNAとかをbashでくるくる表示

動画を見ると楽しそうだし真似してみようと.scriptを入手.中を見ると .fa というファイルが必要なよう.

$ wget http://biosyntax.org/drawHelix.sh
#!/bin/bash
#
# drawHelix.sh <input.fa>
#
# Reads a fasta input file and stream a B-Form DNA
# helix with the sequence to STDOUT
#
##    __     __   __           ___
###  |__) | /  \ /__` \ / |\ |  |   /\  \_/
#### |__) | \__/ .__/  |  | \|  |  /~~\ / \

*.fa は FASTA というソフトウェアの形式らしい.FASTA はシーケンスアライメントを行うソフトウェアらしい.
ソフトウェア自体もヴァージニア大学のsiteから入手できるようだけどWikipediaにページに例があったので今回はそれを使ってみる.

$ echo '>gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus]
LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV
EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG
LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL
GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX
IENY' > test.fa
$ bash drawHelix.sh test.fa

そしてこんな感じに.

macOSの場合は要patchだそう

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とかほしいですね.

bash製横スクロールシューティングゲームのpiu-piuで遊んでみる

matsuuさんのpostで知ったのですが,bash製横スクロールシューティングゲームのpiu-piuというものがあるそうです.

うおおおおってことで遊んでみました.

遊ぶにはgit cloneしたり,

$ git clone https://github.com/vaniacer/piu-piu-SH && cd piu-piu-SH

実態は1つのscriptなのでそれだけDLしたりして

$ wget https://raw.githubusercontent.com/vaniacer/piu-piu-SH/master/piu-piu

実行すればokです.

$ bash ./piu-piu

手元のTilixでは ambiguous-wide charWide だと崩れたので Nallow に変更しました.
Gnome-Terminalの日本語訳だと多分「曖昧幅の文字」の部分を「半角」でokじゃないかと(未確認)

20171230_16:12:49-24830

遊び方はWASDで移動,pでshotです.ライフが0になったらゲームオーバー.弾薬ははじめ100あります.敵を倒したときに弾薬やライフ回復アイテム,パワーアップアイテムを入手できるのでそれで回復しましょう(はじめアイテム類を敵の破片かと思って避けて弾薬が付きてた).100体の敵を倒すとボスも出現(今のとここのボスに負けたところまでしか勧めていない)とはじめ思っていたより凝っている感じ.

co-opモードというネットワーク経由での協力/対戦プレイモードもあるようです.とりあえず1台のマシンで2つの端末を開きlocalhostや127.0.0.1で試したところ接続できない感じ?

20171230_21:12:35-26211
20171230_21:12:54-26490
20171230_21:12:14-28842

ただ,手元の環境(Core2Duo)では操作すると1桁とか0fpsになりあまりゲームにならず遊ぶのは辛い感じ解像度?(行x桁)も落としてみたりしたんですが,ある程度以下まで下げると崩れて遊べなくなってしまいます.遅いだけならどうにかありそうですが,キー入力がバッファに溜まってしまいまともに操作できないのでちょっとつらいです.
いつもならこの手のものはasciinemaで録画しておくんですが今回は快適な環境で動かすまで見送りです.

ちなみに以前こんなのでも遊びました.awk製のターン制3Dシューテングです.こちらは確かRaspberry Piでもさくさく動いたと思います.

GNU socialをnightlyにしてみる

GNU socialは以前はloadaverage.orgにアカウントを持っていたのですが,現在は自分用に自宅PCで動かしています.同じOStatusのMastodonは開発が活発ですが,GNU socialはそれに比べると大分静かです.新しい機能も試してみたいしnightlyに上げてみました.

実際試してみるといつものUPGRADEと同じ手順でトラブルもなくnightlyにできました.

動いている GNU social をバックアップする

導入ディレクトリ以下(ここでは /var/www/gnusocial.matoken.org )とdbをバックアップしておく.
デイリーでバックアップしているので今回はそれを手動で回してtar ballにしておいた.

$ sudo -u www-data rsync -avv /var/www/gnusocial.matoken.org 
ionice -c2 -n7 nice -n19 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`-master2nightly.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

nightlyを導入する

前もってgit loneしてあったところに移動.cloneしてなかったらする.

$ git clone https://git.gnu.io/gnu/gnu-social.git
$ cd gnu-social

git pullしてnightlyをcheckoutする.

$ git pull
$ git checkout nightly

nightlyをcpする.sudo -u www-data は httpd がそのユーザーで動いていてファイルもその権限になっているので合わせている.

$ sudo -u www-data rsync -av --exclude={.git,.gitignore,.htaccess,config.php,file,avatar} ./ /var/www/gnusocial.matoken.org/

upgrade

ここでは GNU social の scripts/startdaemons.sh をmonit で監視しているので一時的に停止しておく.monitやそれに類するものを動かしてなければ無視して次へ.

$ sudo service monit stop

UPGRADE ファイルに書かれているとおり,デーモンを停止して,アップグレードスクリプトの実行を行い,デーモンを再開する.

$ cd /var/www/gnusocial.matoken.org/
$ sudo -u www-data bash scripts/stopdaemons.sh
$ sudo -u www-data php scripts/upgrade.php
$ sudo -u www-data bash scripts/startdaemons.sh

これで動作確認がとれたらOK
monitも再開しておく.

$ sudo service monit start

GNU socialのフッターのバーションはこうなった.

It runs on GNU social, version 1.2.0-beta5

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です.

RaspberryPi向けのサービス公開サービスPiTunnelを試そうとした

PiTunnelをちょっと試そうとする.
Raspberry Pi向けのngrok的なもののよう.家庭内のLAN内のRaspberry Piのサービスを外部に公開しようと思うとルーターのポートを開けたりDDNS設定したりとちょっと面倒.これをお手軽に公開できるようになるサービス.

PiTunnelでアカウント登録をすると,Device管理画面に遷移するのでここでAdd Devides ボタンでinstall scriptのコマンドが表示される.

こんな感じだけど XXXXXXXX 部分はtokenのようなので注意.

curl https://pitunnel.com/install/XXXXXXXX | sudo python

とりあえずダウンロードして中見てから実行.

$ wget https://pitunnel.com/install/XXXXXXXXXX
$ lv XXXXXXXXXX
$ sudo python XXXXXXXXXX
   :
Configuring Startup   
Register the device   
OK
Starting PiTunnel


## All done!! ##
Please visit www.pitunnel.com to access your device!

www.pitunnel.comにアクセスしてねって見に行くと,

STATUS: Due to unprecedented high demand, we're currently having connection issues. Please sit tight and we'll have this resolved within the next 24 hours.

とかなっている.今使えなくなっているようです.

とりあえず少し叩いてみます.

$ pitunnel -h
usage: pitunnel [-h] [--port PORT] [--host HOST] [--name NAME] [--token TOKEN]
                [--http] [--register] [--type TYPE] [--private]
                [--http-auth HTTP_AUTH] [--quiet]

optional arguments:
  -h, --help            show this help message and exit
  --port PORT           Port Number
  --host HOST           Hostname or IP Address (default: localhost)
  --name NAME           Display name, for reference and subdomain creation.
  --token TOKEN         Optinal user tunnel token. Not required if installed
                        from website.
  --http                Indicates that a tunnel is for a HTTP service. Will
                        create http links on tunnels list and subdomains for
                        named tunnels.
  --register            Register a new device. Only needs to be called on
                        first use by install script.
  --type TYPE           Used to identify system tunnels like device_monitor.
  --private             Specifies that the tunnel wont except external
                        connections. It can only receive connections from
                        localhost. E.g. for device_monitor.
  --http-auth HTTP_AUTH
                        Add HTTP authorization to external access for this
                        tunnel: 'user:pass'
  --quiet               Quite Mode. Doesn't output messages to standard out.
$ pitunnel --register
OK
$ pitunnel --port 22
Trying to connect to pitunnel.com
Trying to connect to pitunnel.com
Trying to connect to pitunnel.com
Trying to connect to pitunnel.com
Trying to connect to pitunnel.com
^CTraceback (most recent call last):
  File "tunnelling/python/tunnel_client.py", line 139, in <module>
KeyboardInterrupt
[9305] Failed to execute script tunnel_client

て感じでやっぱ動かないようですね.1,2日待ちましょう.

今のところRaspbian最新用だけど,Ubuntu 16.04 TLS aarch64にも入った.
まだPiTunnelは使えてませんが,無料で1ポートだけだとバイナリ一個でokだしngrokの方がいいかなて感じがします.
でも少なくとも機能の多さはこっちが上そう.

VivaldiにVimiumを入れてキーボード操作

最近Linux ARM版のVivaldiをarm64環境に入れていい感じです.

しかし,ポインティングデバイスが使いづらい端末なのでちょっと面倒.これまではAwesome wmにqutebrowserの組み合わせが主でした.この組み合わせはタイル型WM+キーボード操作に特化したウェブブラウザでマウスなどのポインティングデバイスをほとんど使わずキーボードのみで操作できていい感じでした.

Vivaldiにqutebrowserのような操作を実現できそうなVimiumを入れて試してみることに.

導入は アプリ(vivaldi://apps) にアクセスしてVimiumを検索して導入するだけ.
操作は以下のようなショートカットを使います.

Selection_012

リンクの指定もこの通りキーボードだけでOK

Selection_013

いい感じそうです :)