PCのDNSキャッシュをクリアする方法

Webサイトの引っ越しなどで、DNSレコード設定を編集しました。こちらのPCでは新サイトを表示できました。しかし、隣のPCでは旧サイトのままで、なかなか新サイトを表示しないことがあります。そのPCのDNSキャッシュに、旧サイトの情報が残っているのかもしれません。

簡単な方法は、そのPCを再起動することです。PCを再起動するとDNSキャッシュがクリアされて、新サイトを表示できるようになります。ところが、再起動に時間がかかる、別のアプリケーションを開いているなど、なるべく再起動したくない場合があります。

ここでは、PCを再起動することなく、DNSキャッシュをクリアする方法を説明します。

Windows

コマンドプロンプトを開いて、次のコマンドを実行してください。

:DNSキャッシュをクリアする
C:\Users\taro>ipconfig /flushdns

:DNSキャッシュを表示する
C:\Users\taro>ipconfig /displaydns

macos

OS X で DNS キャッシュをリセットする
https://support.apple.com/ja-jp/HT202516

OS X v10.10.4 以降では、以下のターミナルコマンドを実行してください。

$ sudo killall -HUP mDNSResponder

Ubuntu

ターミナルを開いて、次のコマンドを実行してください。

# DNSキャッシュ状況を表示する
$ systemd-resolve --statistic

# DNSキャッシュをクリアする
$ sudo systemd-resolve --flush-caches

# network-managerを再起動 -> DNSレゾルバも再起動 -> DNSキャッシュクリア
$ sudo sudo systemctl restart network-manager.service

参考: dnsmasqのキャッシュ状況

$ sudo pkill -USR1 dnsmasq
$ sudo tail /var/log/syslog

Google Chrome

上記の方法でDNSキャッシュをクリアした後、さらにGoogle chromeのDNSキャッシュをクリアする必要があります。
chromeのアドレスバーに chrome://net-internals/#dns を入力してください。
「Host resolver cache [Clear host cache]」と表示されます。
[Clear host cache]ボタンをクリックしてください。

自炊pdfの余白を削除するツール scanned-pdf-margin-cutter

npm
https://www.npmjs.com/package/scanned-pdf-margin-cutter
github
https://github.com/ninton/scanned-pdf-margin-cutter 使い方 まず、本のカバーだけをカラーでスキャンして、pdfにします。
本体をカラーまたはグレースケールでスキャンして、pdfにします。 本体について、次の4つを定規で測ります。
1.上側から、切りつめたい長さ(ミリ)
2. 綴じていない側から、切りつめたい長さ(ミリ)
3. 残したい領域の幅(ミリ)
4. 残したい領域の高さ(ミリ) 左綴じで、幅160mm、高さ200mmの本とします。
上側から切りつめたい長さ=10mm
右側(綴じていない側)から、切りつめたい長さ=10mm
残したい領域の幅=130mm
残したい領域の高さ=170mm 整理すると、
左から、20mmカット、130mm残し、10mmカット、です。
上から、10mmカット、170mm残し、20mmカット、です。 すべてのページをこの数値で余白カットしていいでしょうか?
上下方向は問題ないのですが、左右方向は問題があります。 1ページ目は、
左から、20mmカット、130mm残し、10mmカット、です。
2ページ目は、左右を逆転して、
左から、10mmカット、130mm残し、20mmカット、です、
なぜなら、2ぺーじ目は、1ページ目の裏側に印刷されているからです。 つまり、左綴じの場合は、
奇数ページは、左から、20mmカット、130mm残し、10mmカット、です。
偶数ページは、左から、10mmカット、130mm残し、20mmカット、です。 このツールは、本体pdfは、左綴じ、右綴じ、奇数ページ、偶数ページを考慮して、左右余白を計算してカットします。 表紙pdfは、余白カットはせず、(残したい領域の幅)×(残したい領域の高さ)に縮小します。 最終的に、新規pdf(yyyy-mm-dd-HH-MM-SS.pdf)に結果を保存します。表紙pdfや本体pdfは変更しないので、余白の数値を変えながら、何回でも試すことができます。 重要な処理は、GhostScript、ImageMagick、PDFtkが処理しています。GhostScriptが、表紙pdfや本体pdfからページ画像を取り出します。ImageMagickが、ページ画像の余白カットや縮小をして、1画像ごとに1つのpdfに変換します。最後にPDFtkが、全ページpdfを1ファイルに結合します。

コマンドラインで自炊したPDFのページを並び替える

自炊した本を読んでいたら、ページの並びが間違っていることに気づきました。1〜160ページは正常、161〜270ページが逆順、271〜364ページは正常。つまり、160ページまで読み、270ページへ飛び、戻りながら161ページへ、そして271ページへ飛び、という順序の本になっていました。

実物の本は廃棄してしまったので、再スキャンはできません。そこで、PDFファイルのページ順序を並び替えることにしました。

pdftk

https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
pdftkをインストールします。(筆者の実行環境はUbuntu16)
$ sudo apt install pdftk
(1) まず、input.pdfファイルを1〜160ページ、161〜270ページ、271〜364ページの3つに分解します。
$ pdftk input.pdf cat 1-160 output part1.pdf
$ pdftk input.pdf cat 161-270 output part2.pdf
$ pdftk input.pdf cat 271-364 output part3.pdf
(2) part2.pdfを1ページ1pdfに分解します。
# part2_old_split.sh
mkdir part2
for ((i=1; i <= 110; i +=1)); do
pdftk part2.pdf cat $i output part2/$i.pdf
done
$ bash part2_old_split.sh
(3) 各ページのpdfを希望の順序で指定して、part2_new.pdfを作ります。
# part2_new_join.sh
echo "pdftk \\"
for ((i=110; i >= 1; i -=1)); do
echo "part2/$i.pdf \\"
done
echo cat output part2_new.pdf
$ bash part2_new_join.sh | bash
(4) part1.pdf、part2_new.pdf、part3.pdfを結合して、output.pdfを作成します。
$ pdftk \
part1.pdf \
part2_new.pdf \
part3.pdf \
cat output output.pdf
(5) 必要に応じて、ScanSnapオーガナイザーで、OCR処理して、検索可能なテキストを追加します。

ボツになった方法 ImageMagick convert

まず、convertコマンドpdfファイルをjpg画像に分解します。(自炊したPDFなので、1ページ1画像)
$ convert input.pdf page.jpg
次に、convertコマンドで、jpg画像を希望の順序に指定して、pdfに結合します。
$ convert \
page-0.jpg \
page-1.jpg \
省略
page-159.jpg \
page-269.jpg \
省略
page-160.jpg \
page-270.jpg \
省略
page-363.jpg \
output.pdf
ページ数が多すぎたようで、処理が進みません。システムモニターを見ると、CPUの1コアが100%、32Gのメモリも使いきり、システムモニターの表示もカクカクしていました。コントロールCで中止しました。

ubuntu16.04でAndroid StudioのEmulatorが起動しない

環境
ubuntu 16.04
Android studio 3.0.1

エミュレータを起動しようとすると、起動せずに終了してしまいます。

Event Log

17:49   Emulator: libGL error: unable to load driver: nouveau_dri.so

17:49   Emulator: libGL error: driver pointer missing

17:49   Emulator: libGL error: failed to load driver: nouveau

17:49   Emulator: libGL error: unable to load driver: swrast_dri.so

17:49   Emulator: libGL error: failed to load driver: swrast

17:49   Emulator: X Error of failed request:  BadValue (integer parameter out of range for operation)

17:49   Emulator: Major opcode of failed request:  155 (GLX)

17:49   Emulator: Minor opcode of failed request:  24 (X_GLXCreateNewContext)

17:49   Emulator: Value in failed request:  0x0

17:49   Emulator: Serial number of failed request:  58

17:49   Emulator: Current serial number in output stream:  59

17:49   Emulator: Process finished with exit code 1

調べた記事を参考に、ANDROID_EMULATOR_USE_SYSTEM_LIBS=1を設定してみました。

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Googleロゴまで表示されるようになりましたが、直後に終了してしまいます。

Event Log

17:51   Emulator: Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

「ubuntu Emulator: Process finished with exit code 139」で検索すると、次の記事が見つかりました。

ubuntuでAndroid StudioのEmulatorが起動しない問題
https://qiita.com/yuqengo/items/ffd7f916c276bd4f84ce

エミュレータ設定のGraphicsをAutomaticからSoftwareに変更したら、起動しました。

「export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1」を設定しなくても、起動しました。

JenkinsのAndroid emulator plugin

AMD PhenomII 945+6GメモリにUbuntu 14.04 LTSをインストールし、Oracle JDK、kvm、jenkins、android studioをインストールしました。
ところが、Android emulator pluginのRun emulator with propertiesで自動作成した仮想マシンが動きません。
ターミナルから同じコマンドでエミュレータを起動しても、ps -ax | grep emu では表示されますが、adb devices -l で一覧に表示されません。

Android studio>Tools>AVD Managerで作成した仮想マシンは、ターミナルからエミュレータを起動しても、adb devices -lで表示されますし、adb shellでログインできました。

試行錯誤して、次のような設定でJenkinsでandroidビルドとテストをできるようになりました。

ディレクトリ構成の概要
/home/jenkins/.android/avd
/opt/android-sdk-linux
/var/lib/jenkins

Jenkinsインストール前にjenkinsユーザを作成しました。

kvmとlibvirtdグループにjenkinsユーザを追加しました。

Jenkinsをインストールしました。

Jenkinsで使うandroid sdkは、SDK Onlyをダウンロードして、/opt/android-sdk-linuxに設置しました。

デスクトップでAndroid studio>Tools>AVD Managerを起動し、仮想マシンを新規作成します。
例えば api_19_720x1280という名前で作成すると、/home/jenkins/.android/avd/api_19_720x1280.ini と /home/jenkins/.android/avd/api_19_720x1280.avd/* が作成されます。
(これは他のPCで作成したものをコピーしても動きます。その場合はconfig.iniとhardware-qemu.iniを編集して、コピー元PCのパスをコピー先PCにあわせて修正してください。)

Jenkins>Hoge_project>設定で、
Run an Android emulator during buildにチェックをつけ、
Run exsiting emulatorにチェックをつけ、
AVD nameに api_19_720x1280 を入力しました。

今まで4GメモリのMacBookAirで20分以上かかっていたビルドとテストが5分でできるようになりました。

jpostal ver2.8

jpostalの設置方法を紹介してくださる記事を見かけるようになりました。ありがとうございます。

さてRailsにjpostalを導入する方法の紹介記事がありました。

Railsでjpostal.jpを使って住所を自動入力する
http://ruby-rails.hatenadiary.com/entry/20150112/1421029284
しかし、「都道府県」がうまく入力されていません。
これは、プルダウンのoptionのvalue属性がPrefectureのidを表示しており、jpostal.jsで取得した都道府県は文字列(東京都、埼玉県など)のため、value属性がマッチせず、自動で選択されません。

Railsの住所フォームはOPTIONタグのvalueに数値(おそらく自治体コード?)を利用しているようです。この記事後半では、Railsビューを修正して、<option value=”北海道”>北海道</option>と表示する方法が説明されていました。

そこで、jspotal ver/2.8で、次のどの場合でも選択できるようにしました。

 <option value="北海道">北海道</option>
 <option value="1">北海道</option>
 <option value="01">北海道</option>

サンプルページ
http://jpostal-1006.appspot.com/sample_1_b.html

設置方法やjavascriptの記述方法はこれまでと同じです。

jquery.jpostal.jsの新サーバ:jpostal-1006.appspot.com

jpostalの設置サーバをjpostal-1006.appspot.comに変更しました。
これからご利用の場合は、README.txtを読んでください。

すでにjpostal.googlecode.com/svn/trunk/jquery.jpostal.jsをご利用の場合、
HTMLを次のように修正してください。
修正前
<script src="//jpostal.googlecode.com/svn/trunk/jquery.jpostal.js">
修正後
<script src="//jpostal-1006.appspot.com/jquery.jpostal.js">

jpostal.googlecode.com は郵便データ2015-06-30版のままとし、GoogleCodeサービス終了まで継続します。

GoogleCodeサービス終了予定

2016-01-26 GoogleCodeがサービス終了するそうです。
http://google-opensource.blogspot.jp/2015/03/farewell-to-google-code.html

jpostalでは、jpostal.googlecode.comとして利用しています。
次のサーバが決まり次第、お知らせします。

Linux RAID-0, RAID-1, RAID-5 sysbench

80GB, 80GB, 500GB, 500GBの4台でRAID-0、RAID-1、RAID-5を作成し、sysbenchを測定した。
速度の違うディスクが混在したRAID-0のseqrdはどうなるか、RAID-1のseqrdがSimpleDiskのseqrdより速くなるか、に注目した。

(1) PC
MB: GA-MA78GM-S2H ver1.1 (AMD 780G, AMD SB700)
CPU: AMD PhenomII X4 945
MEM: DDR2-800 2GB x 2
OS: Ubuntu 14.04 32bit

(2) disk
/dev/sdb1: ST380815AS (80GB)に、20GB ext4 partition
/dev/sdc1: ST380815AS (80GB)に、20GB ext4 partition
/dev/sdd1: HDS721050CLA362 (500GB)に、20GB ext4 partition
/dev/sde1: HDS721050CLA362 (500GB)に、20GB ext4 partition

(3) simple disk (partition 20GB ext4)

--------------------------------------------------
         hdparm- t | seqrd | seqwr | rndrd | rndwr
--------------------------------------------------
#1 sdb1:  78         70      71      3.6     1.1
#2 sdc1:  68         73      68      4.3     1.1
#3 sdd1: 129        126     116      4.6     2.2
#4 sde1: 138        135     125      4.5     2.2
--------------------------------------------------

(4) RAID-0 (volume 40GB, partition 20GB ext4)

----------------------------------------------------------------------
                        hdparm- t | seqrd | seqwr | rndrd | rndwr
----------------------------------------------------------------------
#11 sdb1 sdc1          : 150        146     142     4.5     1.1
#12 sdd1 sde1          : 258        252     219     4.9     2.5
#13 sdb1 sdd1          : 154        151     142     4.8     1.2
#14 sdd1 sdb1          : 153        152     143     4.7     1.2
#15 sdb1 sdc1 sdd1 sde1: 300        285     272     4.9     1.7
#16 sde1 sdd1 sdc1 sdb1: 297        284     282     4.8     1.7
----------------------------------------------------------------------

#11: seqrdとseqwrは、Simple Diskの合計に近い結果となった。
rndrdとrndwrは、Simple Disk 1台より少し速い程度。

#12: seqrdとseqwrは、Simple Diskの合計に近い結果となった。
rndrdとrndwrは、Simple Disk 1台より少し速い程度。

#13: 80GBディスク+500GBディスクでRAID-1を作成。
#14: 500GBディスク+80GBディスクでRAID-1を作成。
処理時間は、80GBディスク+500GBディスクではなく、80GBディスクx2となった。

#15:
#16:
処理時間は、80GBディスクx2+500GBディスクx2ではなく、80GBディスクx4となった。

(5) RAID-1 (volume 20HB, partition 20GB ext4)

----------------------------------------------------------------------
                      hdparm- t | seqrd | seqwr | rndrd | rndwr
----------------------------------------------------------------------
#21 sdb1 sdc1          :  78       70      68     4.1     0.77
#22 sdd1 sde1          : 129      115     112     4.5     1.9
#23 sdb1 sdd1          :  78       68      71     4.3     0.90
#24 sdd1 sdb1          : 113      125      71     4.6     0.90
#25 sdb1 sdc1 sdd1 sde1:  71       70      68     4.3     0.69
#26 sde1 sdd1 sdc1 sdb1: 128      122      68     4.5     0.69
----------------------------------------------------------------------

RAID-1のseqrdがSimpleDiskのseqrdより速くなるか注目していたが、同じであった。
rndwrは、Simple Diskより遅くなった。

(6) RAID-5 (volume 60GB, partition 20GB ext4)

----------------------------------------------------------------------
                         hdparm- t | seqrd | seqwr | rndrd | rndwr
----------------------------------------------------------------------
#31 sdb1 sdc1 sdd1 sde1: 179         141      93     4.7     0.48
#32 sde1 sdd1 sdc1 sdb1: 173         137     102     4.7     0.56
----------------------------------------------------------------------

あえて比較するなら、#22(500GBディスク2台のRAID-1)より多少速い程度。

(7) mdadm
mdadm –create /dev/md0 –level=stripe –raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm –create /dev/md0 –level=mirror –raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm –create /dev/md0 –level=5 –raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

(8) sysbench
トータルファイルサイズ(既定では2048MB)を5000Mで測定した。
sysbench –test=fileio –file-total-size=5000M prepare
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=seqrd run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=seqwr run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=rndrd run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=rndwr run
sysbench –test=fileio –file-total-size=5000M cleanup

Linux暗号化パーティション sysbench

(1) PC
M/B: GigaByte GA-MA78GM-S2H ver1.1 (AMD 780G, AMD SB700)
CPU: AMD PhenomII X4 945
Mem: DDR2-800 2GB x 2
OS: Ubuntu 14.04 32bit

(2) ST380815AS (80GB)

通常ext4: /dev/sdc1に20GBのext4を作成した。
暗号化ext4: 通常ext4を削除し、/dev/sdc1に20GBの暗号化パーティションext4を作成した。(パスフレーズ長は32文字)

hdparm- t seqrd seqwr rndrd rndwr
通常ext4 68 MB/sec 73 68 4.3 1.1
暗号化ext4 69 73 68 3.5 1.1

暗号化後もほとんど違いはなかった。

(3) HDS721050CLA362 (500GB)

通常ext4: /dev/sdceに20GBのext4を作成した。
暗号化ext4: 通常ext4を削除し、/dev/sdceに20GBの暗号化パーティションext4を作成した。(パスフレーズ長は32文字)

hdparm- t seqrd seqwr rndrd rndwr
通常ext4 129 MB/sec 126 116 4.6 2.2
暗号化ext4 125 86 104 3.8 2.1

暗号化後、seqrdが86 MB/secと遅くなった。

(5) sysbench
トータルファイルサイズ(既定では2048MB)を5000Mで測定した。
sysbench –test=fileio –file-total-size=5000M prepare
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=seqrd run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=seqwr run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=rndrd run
sync; sysctl -w vm.drop_caches=3
sysbench –test=fileio –file-total-size=5000M –file-test-mode=rndwr run
sysbench –test=fileio –file-total-size=5000M cleanup