2019-09-03
_ Linuxのキーボード・マウス自動入力のxautomationを使ってTwitter検索に表示されるツイートを全削除を試した
最近、Twitterに思うところがあってツイートを削除しています。アカウントは残しておきますが、12年ほど使ってたし全データをダウンロードしたから、もういいかなと思って。
それで黒歴史クリーナーやツイートの一括削除ツール!を使って消したけど、なにかおかしい。 Twitter検索から、このような形「(from:ACCOUNT-NAME) until:2019-12-31」で日付を指定して検索するとツイートが出てくる!
とても気持ちが悪くなったので完全に削除できないかと調べると、ツイートの削除ボタンから削除すると出なくなることがわかりました。
対処方法はわかったけれど一つずつの削除は無理だし自動化をするかと考えても、ブラウザ操作の自動化はSeleniumを使ったり、拡張機能のGreaseMonkeyを使ったり、いろいろな方法があります。
それで、ちょっとお試しでできるものは無いかと調べたら、キーボード・マウスの自動入力をするxautomationというのがあったので試してみました。
xautomationは、Debianリポジトリにあるのでaptでサクっと入ります。
使い方はman xautomationに使い方が書いてあるので、それを見るとxte "mousemove 500 500"のような形で指定すれば操作を指定できるそうだけど、xteをつけるのが面倒なので、こんな形でシェルスクリプトにして試しました。 思いっきりbash構文依存なのでshebangはbashです。
#!/bin/bash tw_operation(){ while read; do xte "$REPLY" done <<EOL mousemove 500 500 mouseclick 1 みたいな形にxteの操作を「done <<EOL」から「EOL」の間に書く EOL } # bashなら500回繰り返すとき、{1..500}というふうに書けます。sh(dash)にない文法なので注意 for i in {1..500};do tw_operation done
キーボード・マウス入力の自動化なので、条件が変わるとおかしくなるな。
それと、話が横にそれるけれど、xautomation関係を検索してて思ったのが、スクリーンショットを撮って画像の差分を取るときにNetpbmやImageMagickを使ってスクリーンショットを撮ればいいのに、わざわざGUIのgnome-screenshotなんか使っていたり(それを使ったクソスクリプトが拡散されてる)、「Xが必要だからサーバーでxautomation使えなーい!」とか書いている人がいたけど「それ、xvfbで解決できんじゃん!」と思ったり。
Linux使う人も世代が変わりましたよね。
2019-09-15
_ Linux版WPS OfficeがMIME Typeを上書きしてdocx, xlsx, pptxのOOXMLファイルがZipファイルになってしまって困ったので対処した
最近、LibreOfficeの人なので、使えるオフィスソフトは大体、インストールして試しています。
いつの頃からdocx, xlsx, pptxのOOXMLファイルがDolphin(KDEのファイルマネージャー)からZipファイルとして認識されていて、なぜだろうと思っていましたが検索してWPS Officeが追加するMIME Typeのファイルが悪さをしているということが分かったので対処してみました。
諸悪の根源は、/usr/share/mime/packages/にある、この4つのファイルです。
- wps-office-et.xml
- wps-office-wpp.xml
- wps-office-pdf.xml
- wps-office-wps.xml
削除するのもアレだからdpkg-divertで退避してみるかと思ってみたけれど、アンインストールでエラーが出るのは目に見えてるので、結局、普通にリネームしてしまいました。
# cd /usr/share/mime/packages/ # for i in wps-office-*.xml; do mv "$i" "$i.disable";done # update-mime-database -V /usr/share/mime/
ま、いっか
2019-09-17
_ 「みんなの自動翻訳@TexTra」はオープンソース関連文書の翻訳に唯一使える機械翻訳サービス
ここに書いてなかったので書いておきます。 今年(2019年)の春に、こういうニュースがありました。
みらい翻訳には、NICTが開発した翻訳エンジンを使っていますが、NICTも語彙収集を目的として同じ翻訳エンジンのサービスを提供しています。これが「みんなの自動翻訳@TexTra」です。
- みんなの自動翻訳@TexTra: https://mt-auto-minhon-mlt.ucri.jgn-x.jp/content/menu/
多くの機械翻訳サービスは、利用規約で個人利用に限定をしていたり、生成された翻訳文の転載を禁じていたりするのでオープンソース関連の文書の翻訳に利用できませんが「みんなの自動翻訳@TexTra」は利用規約に例外規定を設けてオープンソース・ライセンスの文書やオープンソース・ソフトウェア添付文書の翻訳に利用してもよいことになっています。 また、質問・要望のフォーラムでは、開発者の方が「利用してもよい」と明言されています。
また、翻訳ツールのOmegaT上から「みんなの自動翻訳@TexTra」を利用するプラグインも開発されています。
これと英辞郎辞書(英辞郎はテキストが販売されていて変換してOmegaTで利用できます)と組み合わせると、かなり効率が上がります。
オープンソース関連翻訳で以前、こういう騒動がありました。
翻訳サービスを利用する上で大前提で当たり前の話ですが、翻訳サービスが利用できると言っても翻訳結果がそのまま利用できるような訳文は出てきません。訳文をそのまま使うことはできないし、使うこともありえませんが、参考訳文として利用すると文章のアタリ(文の概要を掴む感覚というのかな)をつける時間が大幅に短縮できるので、積極的に利用していきたいですね。
2019-09-18
_ 時代は変わる
ストールマンがフリーソフトウェア財団とMITを辞めたそう。
- Richard M. Stallman resigns — Free Software Foundation — working together for free software: https://www.fsf.org/news/richard-m-stallman-resigns
少女人身売買のジェフリー・エプスタイン事件でMITがエプスタインから裏金を貰っていることが発覚してJoi Ito(伊藤穰一)がMITを辞めたりしていたけど、Joiを擁護していたストールマンは、被害女性の年齢なら判断能力があって自発的に行ったものであり小児性愛ではない、とメーリングリストに投稿していたとのこと。
- Famed Computer Scientist Richard Stallman Described Epstein Victims As 'Entirely Willing' - VICE: https://www.vice.com/en_us/article/9ke3ke/famed-computer-scientist-richard-stallman-described-epstein-victims-as-entirely-willing
- Renowned MIT Computer Scientist Richard Stallman Defends Epstein: Victims Were ‘Entirely Willing’: https://www.thedailybeast.com/famed-mit-computer-scientist-richard-stallman-defends-epstein-victims-were-entirely-willing
これは明らかにレイプ被害者への二次的な加害であり、いくらストールマンでも言ってはいけない事だと思う。
なんで、こんな事を書いたかというとPlanet Debianでanarcatさんの記事を読んだから。
- FSF resignations - anarcat: https://anarc.at/blog/2019-09-16-fsf-resignations/
これはとても納得がいく記事だった。
IT技術者やエンジニアの中には、自分たちが治外法権の立場にいるような発言をする輩がいるけれど、いくら業績や優れた技術を持っていたとしても今の時代は(いや、今の時代でなくても)ダメだと思う。
こういう事を書くと「寛容さガー!」というヤツが現れるけれど、己の満足のために自分の権利を差し出すほどお人好しの寛容さは誰も持っていないし、それは寛容の履き違えであることを自覚しろという話。
ストールマンも十分に仕事をしたのだから引退してもいいと思います。お疲れ様でした。
追記
GNOMEが、GNUとFSFにストールマンが辞任しなければ関係を見直すとのメールを送っていたそう。
- GNOME relationship with GNU and the FSF – Liberal Murmurs: https://blog.halon.org.uk/2019/09/gnome-foundation-relationship-gnu-fsf/
_ HTMLテーブル(表)をLibreOffice Calcのodsに変換する
LibreOfficeのコマンドラインを使ってテーブル(表)を含んだHTMLをCalcのosdに変換するには、--convert-toオプションだけでなく、--infilterオプションにcalc_HTML_WebQueryを指定をする必要がある。
$ libreoffice --nologo --headless --infilter="calc_HTML_WebQuery" --convert-to ods (インポートするファイル).html
LibreOfficeで使える入力フィルターの種類はソースのxcuのnameに書いてある。
2019-09-19
_ ルーターの設定でおかしなことをしてた
恥ずかしくて書けない。ずっと前から見れなかった人、これで見れるはず。
_ vagrant-lxdを試したらかなり良かったのでメモ
tDiaryが嫌になってHexoに移行しようとしたけれど、インポートした過去の日記をビルドするだけで何十分もかかり移行計画は頓挫していました。しかし、夏に思うところあってTwitterを止めて、FacebookはFacebookでいろいろ問題もあり積極的に書く気にならず、結果的に自分のサイトに戻っています。
しかし、tDiaryから別のプラットフォームへの移行を含めたサーバーの刷新計画を諦めたわけではなく、時間を見つけてはVagrantで試しています。
そうするとVirtualBoxのリソースの消費が気になってきたりしたので、試しにlxdとVagrantにlxd providerを追加するvagrant-lxdプラグインを入れたところ、ほとんどハマるところなく動いて、なかなか良かったのでメモしておきます。
試している環境は、もちろんDebian Sid(amd64)です。Debian系なら、おそらく、そのまま使えると思います。
lxdのインストールと設定
当たり前ですがlxdが必要なのでインストールします。インストールは以下を参考にしました。
- Linux Containers - LXD - はじめに - コマンドライン: https://linuxcontainers.org/ja/lxd/getting-started-cli/
- 第521回 入門システムコンテナマネージャーLXD 3.0:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社: https://gihyo.jp/admin/serial/01/ubuntu-recipe/0521
lxdのインストールは、snapからのインストールが推奨されているようなのでsnapをインストールしてからlxdをインストールします。lxdのストレージプールにはbtrfsを利用するので一緒にbtrfs-progsもインストールしておきます。
$ sudo apt install snapd btrfs-progs
snapをインストールしたら、lxdをインストールします。
$ sudo snap install lxd
lxdがインストールできたら、snapでインストールされたパッケージのコマンドなどが入る/snap/binにパスを通しておきます。~/.bashrcの後ろにでも追記しておきましょう。
export PATH="$PATH:/snap/bin"
そして、ユーザー権限でlxd関係を使うのでlxdグループに利用する人を追加しておきましょう。
$ sudo gpasswd -a (ユーザー) lxd
ここまでできればパスとグループの設定を反映させるため、一度、ログアウトしておきます。また、ログインしたなら設定の続きです。 まず、lxdを初期化します。
$ lxd init
実行するといろいろ質問されますがVagrantで使うだけなので、必要ならストレージプールの容量だけ変更して、それ以外はデフォルトのままでいいと思います。
これでlxdのインストールは終わりです。
vagrant-lxdのインストール
Vagrantにvagrant-lxdプラグインを追加します。プラグインのインストールは、通常のVagrantプラグイン追加と同じです。
$ vagrant plugin install vagrant-lxd
Vagratのlxdプロバイダーを使ってみる
準備が終わったので、vagrant-lxd READMEにあるQuick Startに沿ってlxd providerを試してみます。
- Catalyst IT / Development Tools / vagrant-lxd · GitLab: https://gitlab.com/catalyst-it/devtools/vagrant-lxd
$ vagrant init --minimal debian/stretch64 $ vagrant up --provider lxd
使用するboxがbusterでなくstretchなのは、lxc/lxd用のboxがstretchしかないからです。 それはさておき、vagrant upを実行するとエラーが出ました。
$ vagrant up --provider lxd The LXD provider was unable to contact the daemon at https://127.0.0.1:8443. It's possible that LXD isn't installed, or that it isn't configured to accept HTTPS connections from your machine. You can check whether HTTPS access is enabled with the following command: $ lxc config get core.https_address If the result is empty or an error is shown, you will need to correct the way LXD is configured before Vagrant can use it. This can be done with the following command: $ lxc config set core.https_address 127.0.0.1 You can find more documentation about configuring LXD at: https://linuxcontainers.org/lxd/getting-started-cli/#initial-configuration
メッセージを読んでみると、ローカルホストに接続できなかったそうです。 lxc config get core.https_addressで確認して結果がエラーか空ならば、lxc config set core.https_address 127.0.0.1を実行してVagrantが使えるようにしてくださいとのことなので試してみます。
$ lxc config get core.https_address
なんにもなかったのでメッセージの指示通りに以下を実行します。
$ lxc config set core.https_address 127.0.0.1 $ lxc config get core.https_address 127.0.0.1
これで、もう一度vagrant upを実行します。
$ vagrant up --provider lxd The LXD provider could not authenticate to the daemon at https://127.0.0.1:8443. You may need configure LXD to allow requests from this machine. The easiest way to do this is to add your LXC client certificate to LXD's list of trusted certificates. This can typically be done with the following command: $ lxc config trust add /home/(ユーザー名)/.vagrant.d/data/lxd/client.crt You can find more information about configuring LXD at: https://linuxcontainers.org/lxd/getting-started-cli/#initial-configuration
今度は別のエラーが発生しました。 認証ができなかったそうで、lxdの信頼できる証明書リストにlxcクライアント証明書を追加してくれと対処法も出ているので実行します。
$ lxc config trust add ~/.vagrant.d/data/lxd/client.crt
そして、vagrant-lxd READMEのClient AuthenticationにVagrantfileに証明書を指定する設定もあったので書いておきます。
Vagrant.configure("2") do |config| config.vm.box = "debian/stretch64" config.vm.provider 'lxd' do |lxd| lxd.client_certificate = '~/.vagrant.d/data/lxd/client.crt' lxd.client_key = '~/.vagrant.d/data/lxd/client.key' end end
これでvagrant upを実行すると…起動しました!
$ vagrant up --provider lxd Bringing machine 'default' up with 'lxd' provider... ==> default: Machine has not been created yet, starting... ==> default: Box 'debian/stretch64' could not be found. Attempting to find and install... default: Box Provider: lxc default: Box Version: >= 0 ==> default: Loading metadata for box 'debian/stretch64' default: URL: https://vagrantcloud.com/debian/stretch64 ==> default: Adding box 'debian/stretch64' (v9.1.0) for provider: lxc default: Downloading: https://vagrantcloud.com/debian/boxes/stretch64/versions/9.1.0/providers/lxc.box default: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com ==> default: Successfully added box 'debian/stretch64' (v9.1.0) for 'lxc'! ==> default: The host machine does not support LXD synced folders. ==> default: ==> default: To use this feature, you must first configure ID mappings for the ==> default: current user in /etc/subuid and /etc/subgid. For more information, ==> default: refer to `vagrant lxd shadow --help`. ==> default: ==> default: Converting LXC image to LXD format... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 10.13.90.145:22 default: SSH username: vagrant default: SSH auth method: private key default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Installing rsync to the VM... ==> default: Rsyncing folder: /home/vagrant/lxd/ => /vagrant
lxcのボックスがあるとlxd用にコンバートしてくれるので便利ですね。 それとメッセージに出ていますが、共有フォルダが使えないので共有フォルダを使うには設定をする必要があります。
共有フォルダの設定
共有フォルダ/vagrantを使うには、ホスト側のsubuidとsubgidを設定します。
$ echo root:$(id -u):1 | sudo tee -a /etc/subuid $ echo root:$(id -g):1 | sudo tee -a /etc/subgid
これでvagrant reloadすれば、/vagrantフォルダが使えるようになります。
まとめ
文章にすると長くなってますが、エラーメッセージも親切でメッセージを読んでREADMEを読めば、ほとんどハマることなく使えました。 これから活用していきます。
2019-09-22
_ 12月4日でGoogle翻訳者ツールキット終了
- Google 翻訳者ツールキットは間もなく終了します - Translator Toolkit ヘルプ: https://support.google.com/translatortoolkit/answer/9462068
だからWebサービスは…。学習データがGoogle翻訳だけで事足りるようになったから、使う人が限られているGoogle翻訳者ツールキットは終了って事なのか?
とりあえず、OmegaTで翻訳してます。