トップ 最新 追記

Days of Speed

過ぎゆく日々を書こう。忘れっぽい未来の自分のために


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」は利用規約に例外規定を設けてオープンソース・ライセンスの文書やオープンソース・ソフトウェア添付文書の翻訳に利用してもよいことになっています。 また、質問・要望のフォーラムでは、開発者の方が「利用してもよい」と明言されています。

フォーラムのスクリーンショット

また、翻訳ツールのOmegaT上から「みんなの自動翻訳@TexTra」を利用するプラグインも開発されています。

これと英辞郎辞書(英辞郎はテキストが販売されていて変換してOmegaTで利用できます)と組み合わせると、かなり効率が上がります。

オープンソース関連翻訳で以前、こういう騒動がありました

翻訳サービスを利用する上で大前提で当たり前の話ですが、翻訳サービスが利用できると言っても翻訳結果がそのまま利用できるような訳文は出てきません。訳文をそのまま使うことはできないし、使うこともありえませんが、参考訳文として利用すると文章のアタリ(文の概要を掴む感覚というのかな)をつける時間が大幅に短縮できるので、積極的に利用していきたいですね。


2019-09-18

_ 時代は変わる

ストールマンがフリーソフトウェア財団とMITを辞めたそう。

少女人身売買のジェフリー・エプスタイン事件でMITがエプスタインから裏金を貰っていることが発覚してJoi Ito(伊藤穰一)がMITを辞めたりしていたけど、Joiを擁護していたストールマンは、被害女性の年齢なら判断能力があって自発的に行ったものであり小児性愛ではない、とメーリングリストに投稿していたとのこと。

これは明らかにレイプ被害者への二次的な加害であり、いくらストールマンでも言ってはいけない事だと思う。

なんで、こんな事を書いたかというとPlanet Debianでanarcatさんの記事を読んだから。

これはとても納得がいく記事だった。

IT技術者やエンジニアの中には、自分たちが治外法権の立場にいるような発言をする輩がいるけれど、いくら業績や優れた技術を持っていたとしても今の時代は(いや、今の時代でなくても)ダメだと思う。

こういう事を書くと「寛容さガー!」というヤツが現れるけれど、己の満足のために自分の権利を差し出すほどお人好しの寛容さは誰も持っていないし、それは寛容の履き違えであることを自覚しろという話。

ストールマンも十分に仕事をしたのだから引退してもいいと思います。お疲れ様でした。

追記

GNOMEが、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

_ ルーターの設定でおかしなことをしてた

恥ずかしくて書けない。ずっと前から見れなかった人、これで見れるはず。

Tags: nofuture

_ vagrant-lxdを試したらかなり良かったのでメモ

tDiaryが嫌になってHexoに移行しようとしたけれど、インポートした過去の日記をビルドするだけで何十分もかかり移行計画は頓挫していました。しかし、夏に思うところあってTwitterを止めて、FacebookはFacebookでいろいろ問題もあり積極的に書く気にならず、結果的に自分のサイトに戻っています。

しかし、tDiaryから別のプラットフォームへの移行を含めたサーバーの刷新計画を諦めたわけではなく、時間を見つけてはVagrantで試しています。

そうするとVirtualBoxのリソースの消費が気になってきたりしたので、試しにlxdとVagrantにlxd providerを追加するvagrant-lxdプラグインを入れたところ、ほとんどハマるところなく動いて、なかなか良かったのでメモしておきます。

試している環境は、もちろんDebian Sid(amd64)です。Debian系なら、おそらく、そのまま使えると思います。

lxdのインストールと設定

当たり前ですがlxdが必要なのでインストールします。インストールは以下を参考にしました。

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を試してみます。

 $ 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翻訳者ツールキット終了

だからWebサービスは…。学習データがGoogle翻訳だけで事足りるようになったから、使う人が限られているGoogle翻訳者ツールキットは終了って事なのか?

とりあえず、OmegaTで翻訳してます。


2001|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|06|08|12|
2011|01|02|03|06|07|08|09|10|11|12|
2012|01|02|03|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|12|
2014|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|10|11|12|
2017|01|02|11|12|
2018|01|02|03|04|07|09|10|11|12|
2019|01|03|04|08|09|10|

クリエイティブ・コモンズ・ライセンス Jun NOGATA を著作者とするこの 作品クリエイティブ・コモンズの 表示 - 継承 4.0 国際 ライセンスで提供されています。