Windows Update が終わらない

たまにしか使っていない Windows 7 のノートPC

使う前にいつも Windows Update をかけてから使うようにしているが、いつのころからか Windows Update ができなくなった。

正確には、更新プログラムの確認、を実行するがそれがまったく終わらないので、先に進めないのである。

10時間ぐらい放っておいても終わらない。

いろいろやってみたが改善されないので Windows 7 をインストールしなおすことにした。

Windows 7 をクリーンインストールしてから、更新プログラムの確認、を実行してみると。

。。。(・_・;)

終わらない!

えー、OS初期状態でも終わらないって。。

とか思いながら解決策を探し続けた結果、以下のUpdater をインストールすれば解決できることがわかりました。

https://support.microsoft.com/ja-jp/kb/3138612

OSまで入れなおしたのに(T_T)。もっと早く気づけば良かった。

 

nslookup で DNS request timed out がでたら。

windows でドメイン名からIP アドレスを引けるコマンド nslookup ですが、timeout のデフォルトが2秒なので、たまにタイムアウトばかりでアドレスが引けないときがあります。
そんなときは -timeout オプションをつけましょう。
nslookup -timeout=20 sukimash.com
というように秒数指定でタイムアウトを設定できます。
20秒待っても引けないようなら他に原因があるのかも。。。

Cloud Front の invalidation が有料だなんて知らんかった

AWS からお知らせが来て、Cloud Front の Invalidation にワイルドカード指定ができるようになったらしい。

Invalidation とは、各サーバにキャッシュされたファイルを削除して、新しいファイルが配信されるようにすることです。

Invalidation しないとキャッシュサーバに古いファイルが24時間ぐらい残っているので、元ファイルを更新してもエンドユーザには古いファイルが配信されます。

今までは、ファイル一つ一つを指定して Invalidate していたものが、今回ワイルドカード指定で、例えばあるディレクトリの下のファイル全部、というような指定のしかたができるようになったとのこと。

で、このお知らせに書いてあったのが、Invalidation には費用がかかるということ、最初の1000回は無料だが、それ以降は 1 invalidation 毎に $0.005 かかるそうな。

そんなの知らんかったなぁ。。。

まぁ、私の場合は機械的に Invalidate したりしていないので特に影響は無いのですが、大量に Invalidation する際は注意しましょう。

ワイルドカードを使った場合、該当するファイルがいくつになっても 1 Path 1 Invalidation とカウントするようですので、ワイルドカードを効率的に使えば安くすませられるかもしれません。

 

Perl Couldn’t untar xxx.tar

perl のモジュールで LWP::UserAgent が使いたかったので CPAN で

install LWP::UserAgent

としたら

Couldn’t untar libwww-perl-6.13.tar

というエラーが発生しました。

tar ファイルが展開できないということのようだが、ちゃんと tar コマンドはインストールされているし、動いている。

もしかして、Perl で tar が展開できないといけない?と思い CPAN でまず

install Archive::Tar

してからやってみた。

結果、

install LWP::UserAgent

もちゃんと動くようになりました。

 

sort コマンドで、入力レコードが最大長を超えました。より大きい最大長を指定してください。エラー

Windows のコマンドプロンプトで sort コマンドを使ったら

入力レコードが最大長を超えました。より大きい最大長を指定してください。

というエラーになった。

type somefile.txt | sort > somesorted.txt

こんな感じで使った。

どうやら、somefile.txt 中に長い行があるので処理できないらしい

調べたら sort コマンドに /REC オプションをつけると良いらしいことが判明

type somefile.txt | sort /REC 65535 > somesorted.txt

とやったら無事ソートできました。

しかし1行が65535文字を超えるとできないんだろうな。。。

 

Windows 7 でコマンドを実行したら RAPI.dll が無いと怒られた

コマンドプロンプトを起動して、とあるコマンドを実行したら

コンピュータに RAPI.dll が無い、と怒られてしまいました。

Windows Vista 用 Windows Mobile デバイス センター 6.1  をダウンロード
https://www.microsoft.com/ja-jp/download/details.aspx?id=3182

うーん、Firefox だとダウンロードが始まらない。

Try Again をしても始まらない。

仕方が無いので IE で試したらダウンロードできました。。。

そして、これをインストールしたら RAPI.dll もインストールされて、コマンドが実行されるようになりました。

ERROR with rpm_check_debug vs depsolve

AWS で新規の CentOS 6.5 インスタンスを起動して、最初だから yum update でアップデートしてから始めようとしたら

ERROR with rpm_check_debug vs depsolve:
yum-plugin-fastestmirror is needed by yum-3.2.29-60.el6.centos.noarch
** Found 1 pre-existing rpmdb problem(s), ‘yum check’ output follows:
yum-3.2.29-43.el6.centos.noarch has missing requires of yum-plugin-fastestmirror
Your transaction was saved, rerun it with: yum load-transaction /tmp/yum_save_tx-2015-04-26-08-54pY64yt.yumtx

という、わけのわからんエラーで update が止まってしまう現象となりました。

よくわからんので、おっしゃられるとおり

yum install yum-plugin-fastestmirror

として、インストールしてみたら yum update も通りました。

yum-plugin-fastestmirror は一番速いダウンロードサイトを選択してそこからダウンロードしてくれるプラグインのようです。

にしても、それでエラーになるって本末転倒なような。。。

preg_match の正規表現でglobal(全文)オプションが使えない

文字列 “abcdefgabcdefg” に対して、正規表現で /abc/ とやると、最初にでてくる abc がマッチして、二回目の abc にはマッチしない。

文字列に出てくるすべての abc にマッチさせたいばあいは、 /abc/g と言った具合に最後に g オプションをつける。

php の preg_match でも g オプションでいけるだろうと思い

preg_match ( ‘/abc/g’ , $string , $matches ) ;

としたところ

PHP Warning:  preg_match(): Unknown modifier ‘g’

という警告が出た。

調べてみたところ、こういう場合は

preg_match_all のほうを使え、ということだった

preg_match_all ( ‘/abc/’ , $string , $matches ) ;

で解決。めでたし。

ていうか、g オプションつけてよ。。。

RDS の Publicly Accessible 設定を変更したい

すでに VPC 内に起動している RDS に既存の EC2(Classic) から接続したくなったので、接続を試してみたら接続できませんでした。

どうやら VPC 内の RDS には VPC 外からは接続できないようです。

ただし、Publicly Accessible という設定が ON になっていれば外からでも接続できるとのこと。

早速 Publicly Accessible の設定をON にすべく、いろいろと調べてみたところ、どうやらこの設定は後から変更することはできないようです。。。

従って、接続できるようにするには、RDS のスナップショットを取り、別のインスタンスを Publicly Accessible ON で起動し、そちらにつなぎ直す、という手順が必要なようだ、、、ちょっとめんどくさいですね。

 

EC2でSMTPサーバを立ち上げたが、トレンドマイクロのブロックリストに載せられてメールが拒否される。

GoogleさんがSMTPサーバを貸してくれなくなったので、仕方なくEC2でSMTPサーバを立ち上げました。

しばらく運用していたらユーザから、メールが戻ってきてしまう、という指摘をもらいました。

戻ってきたメールには以下のようなメッセージが
unavailable; Client host[xxx.xxx.xxx.xxx] blocked using TrendMicro RBL+

どうやら立ち上げたSMTPサーバのアドレスがトレンドマイクロさんのブロックリストに載っていて、メールがブロックされているようだ。

https://ers.trendmicro.com/reputations

でSMTPサーバのIPアドレスを見てみると Reputation: Bad だそうで、このメールサーバからのメールは拒否される。

これは正当なメールサーバだからリストから外してよ、とRequestを送ってみたが

xxx.xxx.xx.xxx is listed on our Dynamic User List (DUL) because
Amazon has told us that this is not a static IP address.

とのことで、 Staticアドレスじゃないのでダメ、アマゾンに以下のお願いをしてください。とのこと

1) properly setup an rDNS for this IP to reference static
2) update us with the latest list

1) は以下のフォームからリクエストできるらしい。

https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

このページで設定をお願いしてみる。

Use Case Descriptionに使い方の説明。(use as a smtp serverみたいな)
Elastic IP Address 1にSMTPサーバのIPアドレス(xxx.xxx.xxx.xxxみたいな)
Reverse DNS Record for EIP 1にSMTPサーバのドメイン名(smtp.example.comみたいな)

以上のような情報でリクエストすると

Request to Remove Email Sending Limitations Received
Thank you for submitting your request.
It is our intention to meet your needs.
We will review your use case and normally respond to requests within 2-3 business days.
検討するからちょっと待って。だいたい2~3営業日中には回答します。とのこと。

数時間後、アマゾンから
We have configured the reverse DNS record you requested.
ご所望の設定終わったよ。というメールが届く。

nslookup xxx.xxx.xxx.xxx
で確認してみると、おぉ、ドメインが登録されている。

しかし、この時点で再度

https://ers.trendmicro.com/reputations

を見てみると、まだ Reputation: Bad のままである。

少し待ってみよう。。。

5時間ぐらい待ってみたが Reputation は変わっていないので、再度Trend Microに以下のようなRequestを送ってみる。

Amazon has properly setup an rDNS for this IP.
Could you please remove this IP from the blocked list?

しかし、数分後に一回目と同じ内容(アマゾンにお願いしてください)のメールが届く。
どうやら Trend Micro は Amazon の IP アドレスで削除依頼がくると定型の文章で返信しているようだ。

仕方がないのでしばらく待つことにする。。。

翌日、確認してみるが Reputation : Bad のまま。。。

2日後、確認したところ Reputation : Unlisted in the spam sender list になっていました!

めでたしめでたし。