それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換

bash のbrace 展開で文字列を置換する

文字の置換は、bashはとても楽ちんである。

NAME=www.example.com
echo ${NAME//./_} # www_example.com
echo ${NAME//./_} # www_example_com

これをもう少し掘り下げる。

bash でファイル名から拡張子を取出す方法

ファイル名から拡張子を取出すのはカンタンでした。

path=/etc/apache2/httpd.conf
extension=${path##*.}  #=> conf

魔法の記述方法 ${varname##*.} を使うと 手軽に拡張子を取得できる。

拡張子を書き換える方法

拡張子を書き換えるには、変数の書き換えを使えば直ぐ出来る。

f_name=httpd.conf
txt_name=${f_name/.*/.txt}   #=> httpd.txt

basename / dirname の取得

basename や dirname も文字列マッチで行うことが出来る。

path=/etc/apache2/httpd.conf
basename=${path##*/} #=> httpd.conf
dirname=${path%/*} #=>/etc/apache2

拡張子だけを取り除く

path=/etc/apache2/httpd.conf
basename=${path%.*} # /etc/apache2/httpd

仕組みについて

何でこんな不思議な事が出来るのか ${varname##*.} のような記述方法は何のか。

http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html によると パラメータの展開 と呼ばれる機能だとわかった。

パラメータ展開について

bash には 変数の展開で、アレコレできるような機能が備わってる

記述方法 意味
${parameter%word} 後方マッチ削除
${parameter%%word} 後方マッチ削除(最長マッチ)
${parameter#word} 前方マッチ削除
${parameter##word} 前方マッチ削除(最長マッチ)
${parameter/search/replacement} マッチ置換

わかりにくいので、正規表現と対表作ってみる(bashはglobマッチなので厳密には一致しないがイメージとして覚えておくために)

記述方法 意味
${parameter%%word} parameter.replace( /(word)(.*)/ , '$1' )
${parameter##word} parameter.replace( /(word)(.*)/ , '$2' )
${parameter/search/replacement} parameter.replace( /word/ , replacement )

マッチの順番と考え方

パターンに依るパラメータ展開に目を通したので、冒頭の記号だらけの置換処理を見直してみる。

拡張子にマッチさせたときの bash の展開の流れ

最初の例の拡張子にマッチさせたときのbash展開の考え方について

path=/etc/apache2/httpd.conf
extension=${path##*.} #=> conf
  1. /etc/apache2/httpd.conf場合
  2. /etc/apache2/httpd.conf は *.とマッチさせる
  3. [ '/etc/apache2/httpd.' , 'conf'] に分割される
  4. マッチした前方は消される
  5. conf が残る

basenameと同等の文字列マッチの場合の考え方

冒頭の basename を擬似的に文字列マッチで行った場合の例は

path=/etc/apache2/httpd.conf
basename=${path##*/} #=> httpd.conf
  1. /etc/apache2/httpd.conf場合
  2. /etc/apache2/httpd.conf*/と先頭から最長マッチさせる
  3. [ '/etc/apache2/' , 'httpd.conf'] に分割される
  4. マッチした前方は消される
  5. httpd.conf が残る

次と同等になる。

'/etc/apache2/httpd.conf'.replace(/(^.*\/)(.*)/,'$2')

dirnameと同等の文字列マッチの場合の考え方

冒頭のdirnameと同等の文字列マッチの考え方。

path=/etc/apache2/httpd.conf

dirname=${path%/*}
echo $dirname #=>/etc/apache2
  1. /etc/apache2/httpd.conf場合
  2. /etc/apache2/httpd.conf/*と末尾からマッチさせる
  3. /httpd.confがマッチする
  4. [ '/etc/apache2' , '/httpd.conf'] に分割される
  5. マッチした後方は消される
  6. /etc/apache2 が残る

次と同等になる。

'/etc/apache2/httpd.conf'.replace(/(^.*\/)(.*)/,'$1')

変数展開で文字列を分割する

これらは、パスやファイル名の扱いというよりは、bash変数の文字列から部分文字列を取出す基本セットです。

man によると他にも

記述方法 意味
${parameter:offset} 部分文字列 ( 開始位置 )
${parameter:offset:length} 部分文字列(開始位置から指定長)
${#parameter} 文字列長取得

他にどんなときに使えば便利?

今回はパスだったけど、起動オプションの引数や、PATH変数の操作などにも使えて便利ですね

sed 使わずに文字列置換できるのは本当に助かる

参考資料

bashスクリプトだけで、ファイル名、拡張子を取得する - 作業ノート

http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html

fortigate ssl-vpn を linux/macOS Xから接続する

ssl vpn の機器が百花繚乱

ssl-vpn が手軽らしく、アプライアンスでベンダから提供される機器によくついていて、VPNSSL_VPNみたいになってる。機器に付属しているので多くのネットワークで使う場面が多いですよね。

個人的にはあまり好きじゃないんですね。機器ごとに設定に癖がある。というか仕様がオープンじゃないので使いにくい。エンドポイントが違ったり、ユーザー名をXHRで投げたり、GETで投げたり・・・

つまり、互換性や接続方式に違いが合って共通クライアントがなかなか無いんですよね。

今回は fortigate です。

fortigateのsslvpn は iOS / Mac OS / Windows などが提供されてるのですが。クライアントソフトにアンチウイルスソフトなど不要なものが付属してきて、どうも面倒くさい。

vpn だけ張れたらいいという目的を達するようなものはないのかと、調べたら見つけた。

openfotigateです。

github.com

openfotigate で Fotigate の ssl-vpn とのcompatibleなクライアントで、コレを使えば、コマンドから接続できて代替クライアントとして利用することが出来ました。

ぱぱっとインストール

手軽にインストールして使いたいと思います。

git clone して

git clone https://github.com/adrienverge/openfortivpn

ビルドします。

cd openfortivpn
aclocal && autoconf && automake --add-missing
./configure 
make

必須ライブラリは openssl でした。

接続します。

sudo ./openfortivpn 10.23.100.1:443   -u takuya

カンタンに接続できました。

証明書エラー

証明書がオレオレ(よくないとおもうけど)のときは、--trusted-cert に、証明書のcert を追加します。

--trusted-cert=91677ab6e45e84 

マニュアルを見る限りでは、--insecure-ssl でもいけそう

trusted-cert に入れるハッシュは、接続エラーメッセージに含まれていました。

MacOS X でも接続したい

macOSのバージョンに依って のopenssl が少し古い場合があるので。homebrewでインストールしたものを使う。

brew install openssl

clone and build

OSX 対応版を作ってfork している人がいるので fork 先から取得する。

git clone https://github.com/fretn/openfortivpn

mac 対応版の fortigate パッチは本家にPRがマージされないので、マージされるまではfork先から取ったほうが良さそう

build する

cd openfortivpn
aclocal && autoconf && automake --add-missing
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
./configure 
make

参照するべきopenssl は homebrew の opt の中にあるはず。今の私のhombew は少し古いのでsierra バージョンになってない。

DNS とルートの設定

Linux で接続した場合は /etc/resolv.conf が書き換わってしまったので、注意が必要。切断後も戻らなかった。

DNSを書き換えないオプションをつけたほうが良さそう

openfortigate --no-dns

ルートの確認

ルーティング・テーブルが書き換わったことを確認

netstat -nr

コマンドは嫌だGUIでやりたい!

そんなときは GNOME のNetwork Manager 専用のプラグインが作られています。

Fortigate SSL VPN support added to NetworkManager – Lubomir Rintel's web log

ソースについてはGNOMEのレポジトリに入ってる。

https://git.gnome.org/browse/network-manager-fortisslvpn

内部的には openfotigate を使ってるらしい。

GNOMEなので、Fedora / CentOSubuntudebian からも使えそうですね。

私はNetworkMangerを使ってないので今回は試さなかった。

参考資料

Mac OS X port by fretn · Pull Request #48 · adrienverge/openfortivpn · GitHub

GitHub - adrienverge/openfortivpn: Client for PPP+SSL VPN tunnel services

GitHub - fretn/openfortivpn: Client for PPP+SSL VPN tunnel services

Fortigate SSL VPN support added to NetworkManager – Lubomir Rintel's web log

macOS のDNSキャッシュを消す。これをコマンドからクリアする

2018-09-10 確認

MacOSのバージョンが変わって効かなくなっています。

sudo killall -HUP mDNSResponder;
sudo killall mDNSResponderHelper;
sudo dscacheutil -flushcache

10.12移行は mDNSResponder の再起動が必要です。

macOSDNSキャッシュを消す

sudo dscacheutil -flushcache

BSD系のコマンドでのdns 関連もmacのFramework側に聞きに行ってるみたいなので、キャッシュを消すにはmac 専用コマンドを使う必要があるみたい。

さらにいえば、各アプリケーション側でキャッシュしてることもあるだろうし、コレだけで全て解決とは行かないかも。

まぁ専用コマンド使わなくてもネットワークオン・オフすりゃイイんだけどさ。

コマンドから cache を消せるのは嬉しい。alias しておくと便利かもしれない。

alias remove-dns-cache="dscacheutil -flushcache"

参考資料

DNSルックアップでAAAAレコードを… - Apple コミュニティ

Mac OS XでDNSキャッシュをFlushする方法 - 積み重ねた日々

正規表現の最短マッチを知ってると便利

正規表現は最長マッチ

正規表現って最長でマッチする。。。ちょっと不便

そこで、正規表現で最短マッチ

.+? 

? を付記することで最短マッチになる。

または[.*?]のように、条件に* を使うことも出来る。

正規表現で最短マッチできたら便利ですよね

最短マッチの例

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[(.+?)\]/)
#=> #<MatchData "[2016-09-19]" 1:"2016-09-19">

もし最短マッチしないとどうなるか.

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[(.+)\]/)
#=> #<MatchData "[2016-09-19][済][TODO]" 1:"2016-09-19][済][TODO">

最短マッチをしない場合は、最長マッチになる。。。不便

最短マッチを知らないとnot 地獄

最短マッチを知らなくても、not を使えば、最短マッチを実現することが出来るけど。。。。

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[([^\]]+)\]/)
#=> #<MatchData "[2016-09-19]" 1:"2016-09-19">

not を使ってマッチさせてもイイんだけど、最短マッチの方が圧倒的に読みやすいですね。

参考資料

http://qiita.com/ha_g1/items/d41febac011df4601544

http://d.hatena.ne.jp/cloned/20061110

サムネイルの生成を超高速にするオプション -define

imagemagick の画像縮小を超速にする記事を読んだので試してみた

blog.mirakui.com

-define をつけると早くなる。

いつもの convert に「-define jpeg:size=...」をつけるだけで10倍速くなる

まじか。早くなるならやってみるぞ

測定しました。

-define あり

takuya@~/Desktop$ time for i in {1..100}; do  convert -define jpeg:size=800x600 IMG_2592.jpg out.jpg ; done

real    0m6.588s
user    0m5.199s
sys 0m1.061s

通常の -resize

takuya@~/Desktop$ time for i in {1..100}; do  convert -resize 800x600 IMG_2592.jpg out.jpg ; done

real    0m59.158s
user    0m49.801s
sys 0m8.475s

オプション違いの比較

| 時間 | -define | -resize | 率 | | 100回 | 0m6.588s | 0m59.158s | 約 9 倍 | | 10回 | 0m0.647s | 0m6.335s | 約10 倍 |

バイくらい早い。

測定環境

f:id:takuya_1st:20160922231015j:plain:w200

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro11,1
      Processor Name: Intel Core i5
      Processor Speed: 2.4 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 3 MB
      Memory: 8 GB
      Boot ROM Version: MBP111.0138.B17
      SMC Version (system): 2.16f68

ただちょっとわからないのが・・・サイズ

800x600 で指定したはずなのに、出力は816x612になってるんだよねぇ。

IMG_2592.jpg JPEG 3264x2448 3264x2448+0+0 8-bit sRGB 966KB 0.000u 0:00.000
defined_out.jpg JPEG 816x612 816x612+0+0 8-bit sRGB 117KB 0.000u 0:00.000
resized_out.jpg JPEG 800x600 800x600+0+0 8-bit sRGB 111KB 0.000u 0:00.000

ImageMagickで利用しているJPEGライブラリのlibjpegでは、1/2、1/4、1/8のサイズへの縮小は高速に計算できるのです。

つまり、元サイズが3264x2448なので、1/4 が適用されているわけですね。

なので、-define したときは、1/2,/1/4 の近いサイズが採用されるようですね。

実験画像

f:id:takuya_1st:20160922233221j:plain:w300

上に書いたように、1/4 になってるので 800x600と816x612 になってるので若干サイズが違うね。

参考資料

本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語

netatalk がシンボリックリンクを辿らない?

netatalkシンボリックリンクが辿ない

netatalkシンボリックリンクを辿らず、単なるファイルに見えてしまう。

設定を見直してみた

follow symlinks = trueが必要

マニュアルを見直してみると、symlinkはデフォルトで無効になっている。

    follow symlinks = true

この設定を、global かボリュームに記述すればイイんだろう。

コレで解決

でも注意点があった。

シンボリックリンクは、共有パス外部へのリンクをチェックしない

たとえば、/etc/passwd のファイルにリンクされちゃうと丸見えになるよってことで。

ApacheSambaなどは外部へのsymリンクはPermissionチェックで弾くもんな。

まぁ、おもにタイムマシーン用なので気にしないことにするか

作った設定は次の通り。

[Global]
    uam list = uams_dhx.so uams_dhx2_passwd.so
    mac charset = MAC_JAPANESE
    hostname = acid-afp
    vol preset = default_for_all_volumes
    log file = /var/log/netatalk.log
    #log level = default:maxdebug
    log level = default
    cnid scheme = cdb

    dbus daemon = /usr/bin/dbus-daemon

    mimic model = MacPro
    ;mimic model = RackMac

    dsireadbuf = 120 ; default 12
    dircachesize = 16384

[default_for_all_volumes]
    file perm = 0600
    directory perm = 0700

[Homes]
    basedir regex = /home
    follow symlinks = true
    time machine = no
    spotlight = true
    home name = $u's home(afp)
[My Time Machine Volume]
    path = /home/takuya/.backups/time_capsule/
    time machine = yes
    vol size limit = 450000

ターミナルの起動がやたら遅いときに試すこと

ターミナルの起動がやたら遅い。

最近のmacOS はターミナルの起動が本当に遅くなった。

以前であれば、tmux や screen を使わなくてもiTerm2でタブを開いておけば、十分使えた。

でも最近は、なぜかlogin -fp takuya / bash の初回起動が遅くて使い物にならない。

最初に見直す項目

シェルは、設定を読み込むので設定を外してみる

  • /etc/profile
  • /etc/bash_profile
  • ~/.bash_profile
  • ~/.bashrc

の順で読み込まれていくので、最後に読み込まれるものから無効化していって、非常に遅くなっている箇所を探す。

私の場合 rbenv init - がくっそ遅い。ruby 関連が遅いので、出来る限り外してる。

それでも、今回は遅かった。5秒位かかる。

asl のログ関連 がめっちゃ遅い

調べみたら。asl 関連のファイルを消せば早くなるという眉唾っぽい情報を見かけてダメモトで試してみたら

すごく早くなった!

sudo rm -rf /private/var/log/asl/*.asl

これをするだけで、bash起動が早くなったんだけど。。。なんでだ

asl は?

apple system log の意味らしい。

アレコレ調べてると、bashログインが遅くなった日、その日はアップデートがあって、その日のログだけがサイズ爆発(数GB)してるんですよね。ログファイルが大きくなりすぎて、パースや追記に時間がかかってた気がする。

参考資料

http://osxdaily.com/2010/05/06/speed-up-a-slow-terminal-by-clearing-log-files/

http://d.hatena.ne.jp/taku-o/20090315/1237122854

waifu2x をシェルスクリプトから呼び出す。

画像を拡大したときに、ギザギザにならないように

画像を拡大したときに、ギザギザにならないように補完してくれるサービスが有りました。

画面キャプチャやちょっと古い画像を拡大するときに、重宝しました。

curl コマンドから呼び出す。

WEBサイトから呼び出しているとキリがないので、コマンドから呼び出せるようにcurl コマンドから呼び出せると便利ですよね。

curl  http://waifu2x.udp.jp/api -F file=@/path/to/filename -F style=art -F noise=0 -F scale=2 > out.png

これで、for やxargs と組み合わで、コマンド呼び出しで使えるようになると便利ですよね。

でももっと簡単に使えると便利そう。

bash の関数か、コマンドファイルとして定義しておくと便利だと思うんですね。アスタリスクのシェル展開で使えるし。

シェルスクリプトから呼び出せるようにしておく。

function waifu2x(){
  for e in "$@" ; do
    name=$e
    basename=${name%.*}
    out_name=$basename.png
    echo $name
    curl  http://waifu2x.udp.jp/api -F file=@"$name" -F style=art -F noise=0 -F scale=2 > "$out_name"
  done
}

参考資料

http://waifu2x.udp.jp/index.ja.html

Evernoteのenexから添付ファイルをぱぱっと取出す

Evernote の添付ファイルを取出したいと思った。

Evernote で取り込んだWEBページの添付ファイルまるっと取り出したら楽かもと思った。

ruby でぱぱっと

gist.github.com

ファイル名を0埋めして数字の番号順に並べてファイル名を付け直す

0埋めされてないと結構面倒くさいですよね。

takuya@:2$ ll | head
合計 61404
-rw-r--r-- 1 takuya takuya 8014 2016-02-04 18:15 1.jpg
-rw-r--r-- 1 takuya takuya 3931 2016-02-04 18:15 10.jpg
-rw-r--r-- 1 takuya takuya 2852 2016-02-04 18:15 100.jpg
-rw-r--r-- 1 takuya takuya 3259 2016-02-04 18:15 101.jpg
-rw-r--r-- 1 takuya takuya 3596 2016-02-04 18:15 102.jpg
-rw-r--r-- 1 takuya takuya 3367 2016-02-04 18:15 103.jpg

ファイル名が0から始まらないと辞書順に並んじゃって 、数字順に並ばないと、とても不便です。

ls で並べるだけならカンタン。

ls -v 

ls に -v をつければ、数字順に解釈してくれる

takuya@:2$ ll  -v | head
合計 61404
-rw-r--r-- 1 takuya takuya 280140 2016-02-04 18:15 1.jpg
-rw-r--r-- 1 takuya takuya 131223 2016-02-04 18:15 2.jpg
-rw-r--r-- 1 takuya takuya 251102 2016-02-04 18:15 3.jpg
-rw-r--r-- 1 takuya takuya 223594 2016-02-04 18:15 4.jpg
-rw-r--r-- 1 takuya takuya 159563 2016-02-04 18:15 5.jpg
-rw-r--r-- 1 takuya takuya 403262 2016-02-04 18:15 6.jpg
-rw-r--r-- 1 takuya takuya 321086 2016-02-04 18:15 7.jpg

ファイル名を変更する

このソートを使ってファイル名を変更することにする。

 0埋めで ファイル名を付け直す。

毎回-v するのも面倒だし、プログラムが意図しない動作をしそうなので、ファイル名をゼロ始まりにしておいて、一括処理をしやすくしてお事にした。

cd $target
for i in $(ls -v ) ; do  mv $i  $(printf  '%05d.jpg' $( basename $i .jpg ) )   ; done

ポイント

printf で0うめしてる。

printf  '%05d' 100

sort -n で

sort を使っても良いんだけど・・・ ls -l の結果を並べようと思うとやっぱり面倒だよね

takuya@:2$ ls | sort -n  | head
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg

比較的大きなCSVファイルをぱぱっとSQLiteにインポートして楽をする

CSV ファイルを検索するのが面倒くさい。

Excelで開いて、集計関数なんて使ってるのめんどくさくないですか?私は面倒くさいです。

CSVファイルやデータログファイルをGrepするのも飽きてきました。sort して uniq して awk も良いんだけど、SQLで集計できたら楽だよね。

SQLiteでぱぱっと出来る。

CSVSQLiteで取り込んで、SQLで検索するなんて直ぐ出来る。

  1. 適当なCSVを用意して
  2. 適当なテーブルを用意して
  3. データを突っ込む
  4. sql で検索

sqlite3コマンドがあれば誰もカンタンに扱えて便利。

適当なCSVを用意する

本当に適当なCSVを用意する

1,a,b,ここは
2,b,c,あれは
3,d,e,そこは

SQLiteを開く

sqlite3 tekitou.db

テーブルを作る

sqlite> create table sample ( id , name1 , key , mm );

ココがポイント、テーブルの型定義はとりあえず要らない。だってSQLITEは全てが文字列型のテキストが前提だから。

インポートする

sqlite>.mode csv
sqlite>.import tekitou.csv sample

ここがポイント、 .import 直前で、.mode csv とすることで、csv モードになる。便利! *1

SQLで検索する

sqlite > select * from sample ;
sqlite > select sum(id) from sample ;

ああ、便利。便利すぎてヤバイ

注意点

CSVは「空白」や「クォート」文字があれば、ソレすらも取り込むので、取り込みすぎたら、sql側でupdate する必要がある。

もしくは、事前に区切り文字の後ろのクォートや空白を消しておく必要がある。

もし区切り文字を変えたいときは

現在の区切り文字を確認

sqlite > .show
     echo: off
      eqp: off
  explain: off
  headers: on
     mode: csv
nullvalue: ""
   output: stdout
separator: "," "\r\n"
    stats: off
    width:

このSeparator部分を任意に変更できる

sqlite > .separator ,
sqlite > .separator |
sqlite > .separator /

あぁ便利すぎる。find の結果を/ で取り込んだら、ファイル一覧をさくっとDBに作れて楽しかった。

これで快適SQL生活

手軽にSQLが使えるんだからどんどん使っていくべきだと思うんですよね。

JSONのように階層構造にうるさくないし、末尾のカンマ問題もないし。すげー楽。

しかもEXCEL職人芸も要らないし、ターミナルだけでぱぱっと出来る。楽しかった。

参考資料

Command Line Shell For SQLite

*1:正確には、csv モードで separator が , になってるんだとおもう

Spotlightが頻繁にフリーズするので再起動方法

Spotlightが頻繁にフリーズする。

現象は、HDMIで画面を切り替えた時にSpotlightのフリーズが頻発するのです。

SpotlightもDockもアクティブなデスクトップ上の、アクティブなモニタ上にでてくるので、モニタを超えておかしくなるHiDPIとの切り替えが上手く行ってない様子

再起動

killall Spotlight

これでSpotlightのUIは再起動するはず。

Mac でFuseマウントが出来なくなってた。

macOS X の 10.11 以降だと思うんだけど。

brew などでインストールした、FUSEExt4のマウントが出来なくなってた。

解決策

sudo ext4fuse -o allow_other /dev/disk4s2 mnt

allow other をすることで mount が出来ることを確認。

本当に不自由なOSですね。。。

その他の解決方法

chmod する。

問題は、FUSEしたときに別ユーザーになってしまうので、sudo chmod でPermissionを変えてやればイイはず。

参考資料

Unable to open ext4 mounted partition on El Captain · Issue #36 · gerard/ext4fuse · GitHub

Kindle の転送が失敗する。Dマガジンのほうがマシ。

とりあえずまともに、購入書籍が転送されてきたのはコレ。

f:id:takuya_1st:20160908055706j:plain:w300

このバージョン以外ではほぼ失敗した。

購入した本が届かないAmazon

購入した本が届きません。ええ、物理的なものじゃなくて、デジタルデータが届かないんですよ。頭にきた。

AmazonKindleって便利なのか不便なのか?

メチャクチャ不便です。

ファイルが転送されません。基本的にファイルの転送によく失敗します。

ダウンロード失敗するとはどういうことか?

Kindle.appでダウンロードを始めたら33%くらいまでは、ナンチャッテでバーが進むようです。。 ソコから先はダウンロード進捗次第なので、進まなくなります。

ダウンロードできなくなると、気付いたら転送が『キャンセル』されてます。

そうするとまたダウンロード開始させるのですが、数十分後にキャンセルされてます。この繰返し。もう切れていいよね。

Amazonに期待したら辛い

AmazonGoogleにはあまり期待しないほうが良いと思う。

Amazonに聞くと、別の本を購入して試してくれ(購入じの決済処理にエラーが有るかもしれないので、それか同じ本をもう一度買え)とのこと。無駄金使わせる気ですか。。。

数日に渡り、せっかく買った書籍が読めず、のべ5時間位格闘としてた。

Amazonでコミックや技術書を買ってから数日間あれこれ試したけど配信されず。

試したこと

実験1 Kindle のフォルダを全部消す。

rm -rf ~/Library/ApplicationSupport/Kindle

Kindleの初期化後に再度ダウンロード→だめ

別のバージョンで試す。

Kindleのフォルダを全部消す

rm -rf ~/Library/ApplicationSupport/Kindle
brew install kindle -v バージョン指定
open -a ~/Applications/Kindle.app

これもダメ。

アマゾン側で端末の登録を全部消す

全部消したPaperWhiteもIpadmaciphoneWindows PC もAndroidも全部消した。まっさらにした。

その後、KindleMacだけを登録

rm -rf ~/Library/ApplicationSupport/Kindle

Kindleを起動して登録。

Amazon側から配信。

まったくだめ。

全部消して、全部消して、バージョン違いで試して放置した。

あれこれKindle.app のバージョンを試した。

f:id:takuya_1st:20160908055706j:plain:w300

最終的にこれで約40分掛かってダウンロードができて、読めるようになった。

ふざけてる。。

Amazonと関わると面倒なことが多いよね。転送速度は我が家は11ac 300 で っフレッツプレミアムです。

Amazonが遅いねん

Dマガジンだと、数分ただず配信終わるし寝てる間にある程度キャッシュしててくれる。

昔買った本が、また読めると思うなよ。

昔買った本だって、ダウンロードボタン押した後に、数分で配信キャンセル何度も食らったぞ。

Amazon電子書籍は「ビューワへの転送が最悪」

遅くて遅くて、読みたい時に読めません。Kindle期待しちゃダメよ。ソフトウェアとインフラの完成度がひどいから。

もうAmazon関係で本を買うのが嫌気がしてきた。

JPEG1枚ずつ転送してくれたらソレでいいのにな。