STARTTLS と TLS(SSL)

メールの設定の際に STARTTLS と TLS が出てくるが,どうなっているのか,とてもよくわかる解説記事があった.

乱暴に結論づけると次のようになるか:

  • SMAPは465ポートでTLSを指定,だめだったら587ポートでSTARTTLSを指定.
  • IMAPは993ポートでTLSを指定,稀な例外では143でSTARTTLSを指定

keyword: mail, email

macos での pdf のプレビュー (for tex)

MacOS に付属している pdf のビューワ (preview とかいうらしい) は,pdfファイルを作り変えた時に,フォーカスを切り替えないと再読込みしてくれないらしい.adobe acrobat では,全然再読込がおこらない.latexでpdfを作る時に,これでは困る.Windowsでは,SumatraPDFが完璧に動作していた.
MacOS にも,Skimというビューワがあって,これはちゃんと動くようだ.ちょっと設定が必要.この記事を参照.
keyword: auto reload, automatic reload, reread

emacsで,gpg暗号化ファイルの鍵をminibufferから入力

emacsで,gpgで暗号化されたファイルを find-file するとき,今までは minibuffer から鍵を入力できていたのに,なぜか pinentry というウィンドウが出るようになってしまった.
このページに対策が書いてあるが,最後の (pinentry-start) のところで,/tmp/emacsXXXXX が安全でないというエラーになってしまった.
しかし,どうも,そこに書かれていることのうち,(setq epa-pinentry-mode ‘loopback) を .emacs に書く」ということだけ実行すればちゃんと minibuffer から入力できるようになるようだ.
環境は,emacs 25.3.1 を cygwin で動かしている.gpg と gpg2 が入っている.(この違いもわかっていない…)

python から mysql にアクセス

pythonからmysqlを使う.とりあえずcygwinは後回しにして,Windowsで.
python3では,mysqlclient が良さそうだというようなことが stack overflow に書いてあったので,それを使う.
pypiのサイト から,wheel ファイル (mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl) を持って来て,

pip3 install wheel
pip3 install --use-wheel --no-index mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl

で入った.
こんな感じで実行できる.

import MySQLdb
from MySQLdb.cursors import DictCursor 

db = MySQLdb.connect(
    host="localhost",
    user="root",
    passwd="",
    db="dbe1",
    charset='utf8'
)

c = db.cursor()
c.executemany(
    "INSERT INTO 家計簿 VALUES (%s, %s, %s, %s, %s)",
    [('2018/03/15', '食費', 'スターバックスでコーヒー', 0, 420),
     ('2018/03/16', '光熱費', '3月水道料金', 0, 3510)]
)
db.commit()

c = db.cursor(DictCursor)
sql="""SELECT * FROM 家計簿"""
c.execute(sql)
for x in c:
    print(x)
print('---')
c = db.cursor(DictCursor)
c.execute('SELECT * FROM 家計簿 WHERE 費目 = %s', ('食費',))
for x in c:
    print(f"{x['日付']}の日付で,「{x['メモ']}」")

iptablesの編集

CentOS6 の firewall である iptables で,ポートを新たに開く際の設定.仮に,3456 を開きたいとすると,

$ sudo iptables -A INPUT -p tcp -m tcp --dport 3456 -j ACCEPT
$ sudo /etc/rc.d/init.d/iptables save

とすれば良い.最初のコマンドで,運用中のファイアウォールにルールを追加する.次のコマンドで,ファイル /etc/sysconfig/iptables に,現在のルール (というよりも,現在運用中のルールを実現するためのコマンド列) が書き込まれ,次の起動の際にも同じルールが適用できるようになる.
なお,現在のルールを表示したければ,

$ sudo iptables -nL

とすれば,標準出力に出てくる.

keyword: firewall ファイアウォール port

python の http ライブラリ

httplib, httplib2, urllib, urllib2 などいろいろある.比較もいろいろされている.
他に Requests というものがあるらしい.
この前書いた dive into python に紹介されていたこともあって,また,google calendar API のサンプルプログラムで使われていたこともあって,httplib2 を使っていたのだが,python3 での proxy がうまく動かない.まだそんなに調べた訳じゃないが,どうもサポートがあやしい.
Requests のほうは,python3 と proxy のサポートはちゃんとしているそうだ.ただ,キャッシュが使えない.実運用と言うよりも,テストの時にキャッシュがほしいのだ.
検索したら,CacheControl というのがあって,Requests に,httplib2 のキャッシュ機能を加えるものだそうである.ドキュメントを読んでみると,テストのために1日間はヘッダにかかわらずキャッシュする,などという例が載っていて,まさに欲しいもののようだ.
導入してみますかね…

[追記] 残念ながら動作していないようにみえる.http://cachecontrol.readthedocs.io/en/latest/custom_heuristics.html に書いてある例をそのまま動かして,assertion error (キャッシュされない) となる.

keywords: cache

mu4eでの日本語検索

mu4eは検索用のindexを作成するのに,xapianというサーチエンジンライブラリを使っている.環境変数 XAPIAN_CJK_NGRAM を空でない値に設定すると日本語検索ができる,と,いろいろなところに書いてあるのだが,私の環境では,これを空でない値に設定すると,マッチしなくなってしまう.設定しないと,なんとなく動いているように見えるのだが.もう少し実験してみると,2文字までなら検索できるが,3文字になるとだめなようだ.たとえば,「情報」かつ「報学」を含むものを探せ,というとたくさん出てくるのだが,「情報学」を含むものを探せ,というと,何も出てこない.
環境は mac os で,homebrew で, brew install mu としてインストールしたものだが,パッケージングの問題なのかもしれないな.