Nextcloud 16でActivityPub

Nextcloudを16にアップグレードしました.そういえば16にはActivityPub機能が付いたはずと探してみると social というアプリがあったので早速導入してみました.

(Nextcloud 16からの対応と思っていたけど15から対応していた)

Alpha版だけあって機能は少なくシンプルです.

20191017 17:10:00 7196 nextcloud social01

画像投稿位はしたいなと思うのですが無さそう.Nextcloud fileのURL共有機能で画像を一般公開してそのURLを張り付けたらどうだろうと試してみましたが駄目でした.少なくともNextcloud socialとMastodonでは展開されません.

20191017 17:10:27 12589 nextcloud social

他のサーバからfollowすることも出来ました.

20191017 17:10:17 5175 nextcloud social 03

occのサブコマンドもあります.

$ sudo -u www-data php ./occ list social

  :

Available commands for the "social" namespace:
  social:account:create     Create a new social account
  social:account:following  Following a new account
  social:cache:refresh      Update the cache
  social:check:install      Check the integrity of the installation
  social:fediverse          Allow or deny access to the fediverse
  social:note:boost         Boost a note
  social:note:create        Create a new note
  social:note:like          Like a note
  social:queue:process      Process the request queue
  social:queue:status       Return status on the request queue
  social:reset              Reset ALL data related to the Social App
  social:stream             Get stream by timeline and viewer

social:stream はストリーミングではなくストリームを読み込むだけのようでちょっと残念.

$ sudo -u www-data php ./occ social:stream matoken local
Account: matoken@files.matoken.org
Id: https://files.matoken.org/index.php/apps/social/@matoken

+-------------------------------------------------------------------------------+---------------------------+------+---------------------------+------------------------------------------------------------------+
| Id                                                                            | Source                    | Type | Author                    | Content                                                          |
+-------------------------------------------------------------------------------+---------------------------+------+---------------------------+-------------------------------------------------------+-------------------------------------------------------------------------------+---------------------------+------+---------------------------+------------------------------------------------------------------+
| Id                                                                            | Source                    | Type | Author                    | Content                                                          |
+-------------------------------------------------------------------------------+---------------------------+------+---------------------------+------------------------------------------------------------------+
| https://files.matoken.org/index.php/apps/social/@matoken/15713026201621139189 | matoken@files.matoken.org | Note | matoken@files.matoken.org | 画像の共有?https://files.matoken.org/index.php/s/pwBt2mrzRgzrCM9 |
| https://files.matoken.org/index.php/apps/social/@matoken/15712646582663693964 | matoken@files.matoken.org | Note | matoken@files.matoken.org | hello Nextcloud!                                                 |
+-------------------------------------------------------------------------------+---------------------------+------+---------------------------+------------------------------------------------------------------+

まだあまり機能がないですが,Nextcloud連携が出来るようになると色々と便利に使えるようになりそうです.

環境
$ sudo -u www-data php ./occ app:list|grep -i social:
  - social: 0.2.101
$ sudo -u www-data php ./occ status|grep version:
  - version: 16.0.5.1
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10

Ubuntu 19.10 Eoan Ermine リリース

Ermine lines by Gustavo Brenner

予定通り Ubuntu 19.10 Eoan Ermine がリリースされました.

個人的なトピックはi386 archtectureがサポートされなくなった,インストーラでのZFS root対応,Raspberry Pi 4対応辺り,環境があればWPA3対応,NVIDIA driverのインストーラー同梱も便利そうです.

問題点で気になるところはログイン画面でシャットダウン,再起動が出来ないところや Raspberry Pi 3 A+ が起動できなくなっているあたりでしょうか.どちらもバグ扱いになっているので近いうちに修正されるでしょう.

19.10は通常リリースでサポート期間も9ヶ月しか無いですし大体の人はLTSな18.04か20.04を待ったほうがいいでしょうが,新しい機能を試してみたい人は楽しめるのではないでしょうか.

ubuntu 19.10 neofetch

iCal形式の日本の休日を探す

Nectcloud holidays Calendar

最近カレンダーをNextcloudに移行しています.AndroidでもCaldav Sync Free Betaというアプリ経由で同期できています.

問題無さそうかなーと思っていたのですが,日本の休日が無くてちょっと不便です.外部カレンダーの読み込みは出来るのでiCal形式のものがあると良いはずです.

国民の休日は以下にあるのですがiCalは無く,自分で入力するのは面倒です.CSV形式での配布もされているので変換するのもありですが何度か仕様が変わっているのでまた仕様が変わると追従が面倒そうです.

iCal形式で配布されているものがないか探してみました.

yaml形式の世界の休日リポジトリもあった.date-holidays-icalと組み合わせてiCalも作れるよう.いざとなったらこれを使うと良さそう.

Apple謹製

AppleのiCloud向けのものですが,Nextcloudでも読み込めました.

  • webcal://ical.mac.com/ical/Japanese32Holidays.ics

Google謹製

以下はGoogle Calendar向けのものです.これもNextcloudで読み込めました.以前はGoogle Calendarの画面から各種フォーマットのアイコンがあってリンクの入手が簡単だったのですが今は隠されています.そのうち使えなくなるのかも?

余録

日本の休日を探しているときにライブドアのiCal天気というものを見つけました.これも便利そうです.Nextcloudでは数値文字参照はそのまま表示されてしまうようなのでそれ以外を選んだほうがいいです.

Nextcloud環境
$ sudo -u www-data php ./occ --version
Nextcloud 16.0.5
$ sudo -u www-data php ./occ app:list|grep -i calendar
  - calendar: 1.7.1
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10

Ubuntu 19.10 (Eoan Ermine)のインストーラにZFSの選択肢が

Ubuntu 19.10のインストーラでZFSを選択できるようになったと見かけて試してみました.

現在BETAのインストーラ( Ubuntu 19.10 (Eoan Ermine) Beta )には未だ入っていなくて,dailyのみのようです.
今回は daily-live 20191011 を利用しました.

イメージを入手して確認
$ wget -c http://cdimage.ubuntu.com/ubuntu/daily-live/20191011/SHA256SUMS \
          http://cdimage.ubuntu.com/ubuntu/daily-live/20191011/SHA256SUMS.gpg \
          http://cdimage.ubuntu.com/ubuntu/daily-live/20191011/eoan-desktop-amd64.iso
$ sha256sum -c SHA256SUMS
eoan-desktop-amd64.iso: OK
$ gpgv --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg ./SHA256SUMS.gpg ./SHA256SUMS
gpgv: Signature made Fri 11 Oct 2019 04:48:37 PM JST
gpgv:                using DSA key 46181433FBB75451
gpgv: Can't check signature: No public key
gpgv: Signature made Fri 11 Oct 2019 04:48:37 PM JST
gpgv:                using RSA key D94AA3F0EFE21092
gpgv: Good signature from "Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>"

インストーラを起動して画面を進めていくと,「インストールの種類」でZFSの選択がありました.
eaon zfs Screenshot ubuntu19.04 2019 10 13 00:55:43

EXPERIMENTAL: Erase disk and use ZFS
Warning: This will delete all your files on all operating systems, This is experimental and ma cause data loss. Do not use on production systems.

仮想マシンのテスト環境なのでZFSを選んで進めます.

eaon zfs 20191013 01:10:48 17155

確認画面のメッセージが ext4 になっていますがそのまま進めるとZFSになったのでメッセージの書き換えがまだされていないのでしょう.

よく見たら vda1 のことでここは /boot/grub に割り当てられていました.

$ mount |grep vda1
/dev/vda1 on /boot/grub type ext4 (rw,relatime,errors=remount-ro)

add)
解りにくからってことでバグとして上がっていました.20.04で修正されそう.

  • Bug #1847719 “zfs “Write to change disks” message prints that an…” : Bugs : ubiquity package : Ubuntu
  • インストールが終了してインストーラからの再起動でフリーズしたようで1時間ほど前っても進まなかったので強制再起動しましたが無事起動しました.

    eaon zfs 20191013 01:10:30 12924

    ファイルシステムもZFSになっています :)
    eaon zfs Screenshot ubuntu19.04 2019 10 13 01:35:03

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu Eoan Ermine (development branch)
    Release:        19.10
    Codename:       eoan
    $ sudo fdisk -l /dev/vda
    Disk /dev/vda: 15 GiB, 16106127360 bytes, 31457280 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xc32b4703
    
    Device     Boot   Start      End  Sectors Size Id Type
    /dev/vda1  *       2048   104447   102400  50M 83 Linux
    /dev/vda2        104448 31457279 31352832  15G  5 Extended
    /dev/vda5        106496  4300799  4194304   2G a5 FreeBSD
    /dev/vda6       4302848 31457279 27154432  13G a5 FreeBSD
    $ zfs list
    NAME                                               USED  AVAIL     REFER  MOUNTPOINT
    bpool                                             65.6M  1.69G      176K  /boot
    bpool/BOOT                                        64.9M  1.69G      176K  none
    bpool/BOOT/ubuntu_qblb6g                          64.7M  1.69G     64.7M  /boot
    rpool                                             3.31G  8.80G       96K  /
    rpool/ROOT                                        2.57G  8.80G       96K  none
    rpool/ROOT/ubuntu_qblb6g                          2.57G  8.80G     2.09G  /
    rpool/ROOT/ubuntu_qblb6g/srv                        96K  8.80G       96K  /srv
    rpool/ROOT/ubuntu_qblb6g/usr                       200K  8.80G       96K  /usr
    rpool/ROOT/ubuntu_qblb6g/usr/local                 104K  8.80G      104K  /usr/local
    rpool/ROOT/ubuntu_qblb6g/var                       486M  8.80G       96K  /var
    rpool/ROOT/ubuntu_qblb6g/var/games                  96K  8.80G       96K  /var/games
    rpool/ROOT/ubuntu_qblb6g/var/lib                   484M  8.80G      378M  /var/lib
    rpool/ROOT/ubuntu_qblb6g/var/lib/AccountServices    96K  8.80G       96K  /var/lib/AccountServices
    rpool/ROOT/ubuntu_qblb6g/var/lib/NetworkManager    136K  8.80G      136K  /var/lib/NetworkManager
    rpool/ROOT/ubuntu_qblb6g/var/lib/apt              75.8M  8.80G     75.8M  /var/lib/apt
    rpool/ROOT/ubuntu_qblb6g/var/lib/dpkg             29.9M  8.80G     29.9M  /var/lib/dpkg
    rpool/ROOT/ubuntu_qblb6g/var/log                  2.07M  8.80G     2.07M  /var/log
    rpool/ROOT/ubuntu_qblb6g/var/mail                   96K  8.80G       96K  /var/mail
    rpool/ROOT/ubuntu_qblb6g/var/snap                  112K  8.80G      112K  /var/snap
    rpool/ROOT/ubuntu_qblb6g/var/spool                 112K  8.80G      112K  /var/spool
    rpool/ROOT/ubuntu_qblb6g/var/www                    96K  8.80G       96K  /var/www
    rpool/USERDATA                                    2.93M  8.80G       96K  /
    rpool/USERDATA/matoken_vyi27f                     2.72M  8.80G     2.72M  /home/matoken
    rpool/USERDATA/root_vyi27f                         112K  8.80G      112K  /root
    rpool/swap                                         758M  9.54G       92K  -
    $ dpkg -l|grep -i zfs
    ii  libzfs2linux                               0.8.1-1ubuntu13                      amd64        OpenZFS filesystem library for Linux
    ii  libzpool2linux                             0.8.1-1ubuntu13                      amd64        OpenZFS pool library for Linux
    ii  zfs-initramfs                              0.8.1-1ubuntu13                      amd64        OpenZFS root filesystem capabilities for Linux - initramfs
    ii  zfs-zed                                    0.8.1-1ubuntu13                      amd64        OpenZFS Event Daemon
    ii  zfsutils-linux                             0.8.1-1ubuntu13                      amd64        command-line tools to manage OpenZFS filesystems

    実機のeaon環境が1つあるのでこれをインストールし直してZFSを試すのもいいかもしれません.でもその環境はRAMが少ないので辛いかな?

    可愛いシステム情報表示ツールのpfetch

    screenfetchやneofetchと同じようなものですが,shell script 1本で動いてロゴが可愛いです.

    $ git clone https://github.com/dylanaraps/pfetch
    $ pfetch/pfetch
      _____      matoken@t430s
     /  __ \     os     Debian GNU/Linux bullseye/sid
    |  /    |    host   23533KJ ThinkPad T430s
    |  \___-     kernel 5.2.0-2-amd64
    -_           uptime 8d 3h 7m
      --_        pkgs   5796
                 memory 13560M / 15924M

    fpetch

    現在のバージョンではロゴはこれだけあるよう.

    $ grep PF_ASCII: pfetch -A999|grep \*\)
            [Aa]lpine*)
            [Aa]ndroid*)
            [Aa]rch*)
            [Aa]rco*)
            [Aa]rtix*)
            [Cc]ent[Oo][Ss]*)
            [Dd]ebian*)
            [Dd]ragon[Ff]ly*)
            [Ee]lementary*)
            [Ff]edora*)
            [Ff]ree[Bb][Ss][Dd]*)
            [Gg]entoo*)
            [Gg]uix[Ss][Dd]*|[Gg]uix*)
            [Hh]aiku*)
            [Hh]yperbola*)
            [Ll]inux*[Ll]ite*|[Ll]ite*)
            [Ll]inux*)
            [Mm]ac[Oo][Ss]*|[Dd]arwin*)
            [Mm]ageia*)
            [Mm]anjaro*)
            [Mm]inix*)
            [Mm][Xx]*)
            [Nn]et[Bb][Ss][Dd]*)
            [Nn]ix[Oo][Ss]*)
            [Oo]pen[Bb][Ss][Dd]*)
            [Oo]penSUSE*|[Oo]pen*SUSE*|SUSE*|suse*)
            [Pp]arabola*)
            [Pp]op!_[Oo][Ss]*)
            [Pp]ure[Oo][Ss]*)
            [Ss]lackware*)
            [Ss]un[Oo][Ss]|[Ss]olaris*)
            [Uu]buntu*)
            [Vv]oid*)
            *)

    環境変数 PF_INFOPF_ASCII で指定したものを表示できるようです.そこでこういうscriptで表示して,

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Time::HiRes 'sleep';
    
    my @LIST=('alpine','android','arch','arco','artix','centos','debian','dragonfly','elementary','fedora','freebsd','gentoo','guixsd','haiku','hyperbola','lite','linux','macos','mageia','manjaro','mint','minix','mx','netbsd','nixos','openbsd','suse','parabola','pop!_os','pureos','slackware','sunos','ubuntu','void');
    
    foreach my $dist ( sort @LIST ){
      my $pfetch = `clear`;
      $pfetch .= "$dist\n";
      $pfetch .= `PF_INFO=ascii PF_ASCII=$dist pfetch`;
      print $pfetch;
      sleep(0.5);
    }
    `PF_INFO=ascii pfetch > /dev/null`;
    print "done\n";

    asciinemaへのアップロード……に失敗したのでttyrecして,ttygifしてみました.

    pfetch logos
    $ ttyrec pfetch.tty # 録画開始
    $ perl pfetch-logo.pl # logo表示
    $ exit  # 録画終了
    $ vi pfetch.tty # テキストエディタで頭と最後のゴミ削除
    $ resize -s 11 25 # terminalを小さくしておく
    $ ttygif -in pfetch.tty # gifに書き出し
    $ WINDOWID=`xdotool getactivewindow` ttygif -in pfetch.tty # `cannot get screenshot` と言われる場合

    元のロゴはこの ufetch の一部が使われているよう.こちらにはRaspbianもありますね.

    ufetch raspbian

    余録:ufetchのロゴを楽しむ
    $ git clone https://gitlab.com/jschx/ufetch
    $ find ./ufetch/ -name "ufetch-*" -executable \! -name "*.png" -print0 | sort -n | xargs -0 -n1 -I{} sh -c "{} 2>/dev/null; sleep 0.5"
    環境
    $ git log -1
    commit 1ff17055b958fb2436bb9810bfba0d97c64390a4 (HEAD -> master, origin/master, origin/HEAD)
    Author: Dylan Araps <dylan.araps@gmail.com>
    Date:   Tue Oct 1 15:09:43 2019 +0300
    
        pfetch: fix bug
    $ ttygif -v # https://github.com/sugyan/ttygif
    0.0.3
    $ ls -l `which sh`
    lrwxrwxrwx 1 root root 4 Jul 19 03:15 /usr/bin/sh -> dash
    $ dpkg-query -W dash perl ttyrec
    dash    0.5.10.2-6
    perl    5.28.1-6
    ttyrec  1.0.8-5+b2
    $ lsb_release -dr
    Description:    Debian GNU/Linux bullseye/sid
    Release:        unstable
    $ uname -m
    x86_64

    localeが足りなくてmcomixが起動しなくなっていた

    mcomix が起動しなくなりました.こないだのエンバグ?と思ったけど

    エラーが違う.

    $ mcomix
    Traceback (most recent call last):
      File "/usr/bin/mcomix", line 11, in <module>
        load_entry_point('mcomix==1.2.1', 'console_scripts', 'mcomix')()
      File "/usr/lib/python2.7/dist-packages/mcomix/run.py", line 127, in run
        i18n.install_gettext()
      File "/usr/lib/python2.7/dist-packages/mcomix/i18n.py", line 71, in install_gettext
        locale.setlocale(locale.LC_ALL, '')
      File "/usr/lib/python2.7/locale.py", line 581, in setlocale
        return _setlocale(category, locale)
    locale.Error: unsupported locale setting

    localeぽいので適当に指定してみると起動.

    $ LC_ALL=C mcomix

    しかし,C だと日本語ファイル名などでエラーとなる.

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-27: ordinal not in range(128)
    Traceback (most recent call last):
      File "/usr/lib/python2.7/dist-packages/mcomix/file_chooser_base_dialog.py", line 215, in _response
        if os.path.isdir(path):
      File "/usr/lib/python2.7/genericpath.py", line 49, in isdir
        st = os.stat(s)
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-27: ordinal not in range(128)

    en_US.UTF-8 だととりあえず利用できるけど,ja_JP.UTF-8 とかで日本語を指定すると……うまく行かない?

    $ export LC_ALL=ja_JP.UTF-8 mcomix
    bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)

    localeを確認するとインストール時に設定していたつもりの ja_JP.UTF-8 がありません.

    $ grep -v ^# /etc/locale.gen |uniq
    
    en_US.UTF-8 UTF-8

    /etc/locale.gen を編集して,ja_JP.UTF-8 のコメントを外して locale-gen コマンドで生成したら動くようになりました.

    $ sudo git diff HEAD~~ /etc/locale.gen
    diff --git a/locale.gen b/locale.gen
    index c432a9a..afb6141 100644
    --- a/locale.gen
    +++ b/locale.gen
    @@ -287,7 +287,7 @@ en_US.UTF-8 UTF-8
     # it_IT@euro ISO-8859-15
     # iu_CA UTF-8
     # ja_JP.EUC-JP EUC-JP
    -# ja_JP.UTF-8 UTF-8
    +ja_JP.UTF-8 UTF-8
     # ka_GE GEORGIAN-PS
     # ka_GE.UTF-8 UTF-8
     # kab_DZ UTF-8
    $ sudo locale-gen
    Generating locales (this might take a while)...
      en_US.UTF-8... done
      ja_JP.UTF-8... done
    Generation complete.
    環境
    $ dpkg-query -W locales mcomix
    locales 2.29-1
    mcomix  1.2.1-1.1
    $ lsb_release -dr
    Description:    Debian GNU/Linux bullseye/sid
    Release:        unstable
    $ uname -m
    x86_64

    略語郎のサンプルテキストをstardict形式に変換してGoldenDictで利用

    過去に購入したことのあるEDPさんが新しいその他書籍を公開しました!

    略語郎 Ver.144(2015年3月20日版)のテキストデータ
    その他書籍 略語郎 Ver.144(2015年3月20日版)のテキストデータ ¥ 150

    EDPの英辞郎はStarDict形式に変換して辞書閲覧ソフトのGoldenDictで利用していおます.
    略語郎も同様に利用できないかとサンプルテキストで試してみました.

    以前英辞郎を変換したときと同じ手順で試しました.

    $ time perl eiji2sd-text.pl ryakugoro-sample.txt
    
    Sorting...
    
    Done.
    
    real    0m0.277s
    user    0m0.178s
    sys     0m0.017s

    20190906 21:50:35 8570

    変換した辞書ファイルをGoldenDictに設定して試してみるとうまく動いているようです.
    150円だし買ってもいいかも.

    環境
    $ dpkg-query -W perl goldendict
    goldendict      1.5.0~rc2+git20181207+ds-1
    perl    5.28.1-6
    $ lsb_release -dr
    Description:    Debian GNU/Linux bullseye/sid
    Release:        unstable
    $ uname -m
    x86_64

    awesome wmでパスを追加する

    bashだと~/bin とかにパスが通っているのにawesomeからmod4 +r で起動しようとするとコマンドが見当たりません.

    20190830 14:08:46 21926

    AppImageやFlatpakなんかのアプリを格納したりしているのですがこれだと /home/user/bin/command とかフルパスで書かないと駄目です.

    bashだとパスが通っています.

    $ type -a MQTT-Explorer
    MQTT-Explorer is /home/matoken/bin/MQTT-Explorer
    $ ls -l /home/matoken/bin/MQTT-Explorer
    lrwxrwxrwx 1 matoken matoken 71 Aug 25 21:22 /home/matoken/bin/MQTT-Explorer -> /home/matoken/opt/AppImage/MQTT-Explorer-0.3.6-no-delete-limit.AppImage

    awesomeで,mod4 + r して sh -c "$PATH >> ~/tmp/awesomepath" とかして PATH を確認してみるとこれだけしかパスが通っていません.

    $ cat ~/tmp/awesomepath
    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

    ~/.xinitrc でパスを追加してみましたが反映されません.
    多分lightdm経由で起動しているので関係なかった.

    $ ps auxf|grep -B3 awesome
    root     32202  0.0  0.0 309612  5532 ?        SLsl  8月29   0:00 /usr/sbin/lightdm
    root     32208  1.2  0.5 430424 82396 tty7     Ssl+  8月29  10:48  \_ /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
    root     32283  0.0  0.0 163604  5856 ?        Sl    8月29   0:00  \_ lightdm --session-child 12 21
    matoken  32293  0.1  0.6 350760 99060 ?        Ssl   8月29   1:18      \_ awesome

    ~/.Xsession に`PATH=$HOME/bin:$PATH` のような感じでパスを追加するとパスが通りました.でもパスの追加しか書いていないと色々と起動しないサービスがあります.
    大本の`/etc/X11/Xsession` をcpしてきてそのファイルにパスの設定を追加したらOKでした.

    $ cp /etc/X11/Xsession ~/.Xsession
    $ echo 'PATH=$HOME/bin:$PATH' >> ~/.Xsession

    これパスの管理一緒にしたいですね.

    環境
    $ dpkg-query -W awesome lightdm
    awesome 4.3-4
    lightdm 1.26.0-5
    $ lsb_release -dr
    Description:    Debian GNU/Linux bullseye/sid
    Release:        unstable
    $ uname -m
    x86_64

    OsMo.mobiがDownしたのでPhoneTrackを使う

    近頃はOsMoで検索すると,DJIのドローンやジンバルが出てくるようになっていますがOsMoはそういうものではなく,位置情報共有サービスです.スマートフォンにアプリを導入して共有URLで今自分の居る場所を共有できます.Glympseなどが類似サービスになると思います.

    このOsMoですが,最近サーバがダウンして利用できなくなりました.(一応オフラインでローカルにログを取得することは可能)
    OsMoのアプリ(OsMoDroid)を導入していると,telegramに誘導するメッセージが表示されるようになりました.

    IMG 20190821 235148

    20190824 20:08:03 4249

    このチャンネルを覗くとサーバが(物理的に?)失われて,更にバックアップが05/15のものしか無いようで,そのデータで復旧を試みようとしているけど未だホスト先を探している状態のようです.
    復旧までにはまだまだ掛かりそうなです.

    Константин Гам, [22.08.19 02:57]
    Что произошло? Сервер приложения OsMo и сайта повреждён, сгорел диск. Потеряны все данные пользователей. Из-за несработавшего бекапа, последняя полная копия проекта датируется 15 мая 2019 года.
    Диск заменили, но требуется много работы по запуску проекта с нуля и дальнейшее накатывание копии от мая…​

    Собираем на восстановление сервера осмо (часы + сервера + тонна кофе), 5200/60000 руб

    VISA: 4083 9720 5573 2954
    QIWI: +7 (921) 426-74-00

    В комментарий указывайте email аккаунта, если есть или будущего. Всем кто донатит 1500+ рублей, максимальный PRO пожизненно.
    Если комментарий недоступен, кидайте время и место платежа в почту osmo.mobi@gmail.com

    OsMoが使えない間の代替サービスを探そうと思いましたが,そういえば以前PhoneTrackというアプリケーションを導入していたのを思い出しました.

    PhoneTrackはNextcloudのアプリケーションとして導入して,位置情報アップロード用のURLを発行して各種アプリケーションで位置情報をアップロード,この情報を共有URLで共有することも出来ます.
    対応アプリケーションも色々あります.私はOsmAnd+,Uloggerを利用しています.
    以下はOsmAnd+での設定例です.

    IMG 20190827 084323
    IMG 20190827 084402

    位置情報共有用のURLは長いのですが,QRcodeで読み取ることも出来ます :)

    20190827 08:08:46 30083

    長時間動かすことが多いので消費電力の少ない設定やアプリを探そうと思います.

    API経由でpocketに投稿した記事を取得してみたけどRSSで十分だった

    最近放置がちだったpocketを活用し始めました.Android端末で隙間時間にRSS消化して気になったものをpocketに投げておいて後でPCで読むという感じのブックマーク代わりな感じです.

    ここに投稿したものを日毎に保存しておくと便利かもと試した記録です.

    アプリケーション登録

    まずはアプリケーション登録をする

    記事が読めればいいので,permissionsは`Retrieve`
    にした.登録すると,CONSUMER KEY が入手できる.

    REQUEST TOKENを入手する

    $ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \
       https://getpocket.com/v3/oauth/request \
       -d '
    {
      "consumer_key" : "XXXX-XXXXXXXXXXXXXXXXXXXXXXXX",
      "redirect_uri":"http://matoken.org/"
    }
    '

    結果

    code=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXX

    アプリケーションをアカウントに紐付ける

    ウェブブラウザで
    `https://getpocket.com/auth/authorize?request_token=&redirect_uri=http://matoken.org/’
    にアクセスしてアカウントにリクエストを許可する.urlは適当.

    20190816 01 08 26 22616

    アクセストークンを入手する

    $ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \
    https://getpocket.com/v3/oauth/authorize \
    -d '
    {
      "consumer_key":"<CONSUMER_KEY>",
      "code":"<REQUEST_TOKEN>"
    }
    '

    結果

    access_token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXX&username=user%40example.com

    投稿を取得する

    application/json で求める.とりあえず1件だけ(count'':1”)

    $ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \
    https://getpocket.com/v3/get -d '
    {
      "consumer_key":"<CONSIMMER_KEY>",
      "access_token":"<ACCESS_TOKEN>",
      "count":1
    }
    ' | jq
    {
      "status": 1,
      "complete": 1,
      "list": {
      "2692971736": {
        "item_id": "2692971736",
        "resolved_id": "2692971736",
        "given_url": "https://www.patreon.com/posts/29180933",
        "given_title": "DUVET | 1041uuu on Patreon",
        "favorite": "0",
        "status": "0",
        "time_added": "1565885008",
        "time_updated": "1565885011",
        "time_read": "0",
        "time_favorited": "0",
        "sort_id": 0,
        "resolved_title": "",
        "resolved_url": "https://www.patreon.com/posts/29180933",
        "excerpt": "",
        "is_article": "0",
        "is_index": "0",
        "has_video": "0",
        "has_image": "0",
        "word_count": "0",
        "lang": "",
        "domain_metadata": {
        "name": "Patreon",
        "logo": "https://logo.clearbit.com/patreon.com?size=800",
        "greyscale_logo": "https://logo.clearbit.com/patreon.com?size=800&greyscale=true"
        },
        "listen_duration_estimate": 0
      }
      },
      "error": null,
      "search_meta": {
      "search_type": "normal"
      },
      "since": 1565886741
    }

    application/x-www-form-urlencoded で求める.結果は同じでjson形式で帰ってくる.

    $ curl -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST https://getpocket.com/v3/get -d \
      "consumer_key=<CONSUMER_KEY>&access_token=<ACCES_TOKEN>&state=all&sort=oldest&detailType=symple&since=`date -d'1days ago' +%s`" | jq .

    引数の意味はこんな感じ

    • state=all : 全ての投稿形式(既読未読の両方)

    • sort=oldest : 古いものから順に

    • detailType=simple : 基本的な情報

    • since=date -d'1days ago' +%s : 指定したUNIX
      Time以降の記事を取得.取得する開始UNIX TimeをGNU coreutilsのdate
      commandで過去1日(-d’1days ago’)時点のUNIX Time(+%s)を取得して指定

    毎日前日分のpocket投稿titleとurlをDokuwikiに書き込み(Markdown形式)

    $ sudo -u www-data crontab -l | grep wiki
    0 0 1 * *       mkdir -p /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/%m`
    2 0 * * *       curl -s -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST https://getpocket.com/v3/get -d "consumer_key=87275-eea7fa53556961262450492d&access_token=27847a46-0ff9-f9a3-ea7f-31279b&state=all&sort=oldest&detailType=symple&since=`date -d'1days ago' +%s`" | jq -r '.list[] | [.given_title,.given_url] | @csv' | sed -e 's/^"/* [/' | sed -e 's/","/](/' | sed -e 's/"$/)/' | sed -e 's/^\[]/\[null]/' | sed '1s/^/\n/' >> /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/\%m/\%F`.txt

    1行目

    • 0 0 1 * * : 毎月1日の00:00に実行

    • mkdir -p /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date
      +%Y/%m`
      : 月のディレクトリを掘る.%がエスケープされているのはcrontabの使用に合わせて.

    • 1 0 * * * : 毎日 00:01 に実行

    2行目

    • jq -r '.list[] | [.given_title,.given_url] | @csv' :
      pocketからの結果からtitleとurlを抜き出してcsv形式で出力

    • sed -e 's/^"/* [/' | sed -e 's/","/](/' | sed -e 's/"$/)/' | sed -e 's/^\[]/\[null]/'
      : markdownのリンクに変換

    • sed '1s/^/\n/' :
      先頭行を空けないとmarkdownを認識しないようなので改行を入れる

    • /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/\%m/\%F`.txt`
      : 保存先,dokuwikiでは memo:2019:08:2019-08-16 のようになる

    実はRSSで吐き出せる……

    pocketのオプションのプライバシー管理の中にRSSフィードの項目が!

    20190816 12 08 10 2311

    これを公開にして「すべてのアイテムフィード」を取得すればやりたかったことが出来た…….

    細かい制御をしたいならAPIのほうがいいと思いますが,今回自分がやりたかったのは毎日のバックアップだったので…….もう設定終わったからこれは見なかったことに.

    $ rsstail -l -1 -n5 -H -u "http://getpocket.com/users/*sso1456706866592e34/feed/all"
    Title: エロの秘密結社 ドシコルド EP.38 夢現のエモーション - 無料コミック ComicWalker
    Link: https://comic-walker.com/viewer?tw=2&dlcl=ja&cid=KDCW_MF00000086010039_68&bs=1
    Title: 次世代衛星向け「グリーン燃料」 月探査でも使用か 日米が開発競争
    Link: https://sankei.com/life/news/190815/lif1908150010-n1.html
    Title: ArchiveBox
    Link: https://archivebox.io
    Title: セキュリティ企業が管理する約2800万件の生体認証記録が流出していたことが判明
    Link: https://gigazine.net/news/20190815-data-breach-biometric-security
    Title: DUVET | 1041uuu on Patreon
    Link: https://patreon.com/posts/29180933

    環境

    $ dpkg-query -W curl sed jq rsstail dokuwiki
    curl    7.64.0-4
    dokuwiki        0.0.20180422.a-2
    jq      1.5+dfsg-2+b1
    rsstail 1.8-1+b1
    sed     4.7-1
    $ lsb_release -dr
    Description:    Debian GNU/Linux 10 (buster)
    Release:        10
    $ uname -m
    x86_64