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 になっていました!

めでたしめでたし。

 

PHP で複数ファイルのアップロード処理を書いたが20個しかアップロードできない。

最近のブラウザだと、input タグに multiple 属性をつけると、ひとつのタグで複数のファイルをアップロードすることができる

<input type=”file” name=”files[]” multiple>

こんな感じで簡単。

しかし、調子に乗って30個ぐらいのファイルを一度にアップしようとしたら、一部のファイルしかアップされませんでした。

数えてみるとちょど20個で、それ以降のファイルは取得できない。

調べてみたところ、やっぱり制限がありました。

デフォルトでは20個のようですが、php.ini に max_file_uploads を追加してあげれば制限値を変えられるようです。

私の環境では /etc/php.ini に max_file_uploads = 100 を追加したら100個までアップロードできるようになりました。

変えられるからといってあまり大きい値にするのもどうかと思うので、運用を考えて必要最小限の値にしておきましょう。

php.ini を変更したらWebサーバの再起動も忘れずに。

 

 

EC2 で新しいインスタンスを立ち上げたが root でログインできない

EC2 で、Community Instance を使い、新しいSecurity Group と Key Pair を作って起動したのだが、秘密鍵を指定して root でログインしようとすると、まずは root 以外でログインしてください、というメッセージが出てログインできませんでした。

いろいろと調べた結果、作成した秘密鍵で ec2-user というユーザ名でログインできました。

ログイン後に
sudo su
とすれば root になれるので、そこで root のパスワード設定など必要な処理を行いました。

ec2-user というユーザ名は AMI によって違うかもしれませんが、迷ったので備忘録として書きました。

 

MySQLで月別にユニークユーザ数を出すSQL

MySQL のデータの中から月別に○○の数を出す、という集計は良くあるのですが、いつも書き方を忘れてしまうので、例を挙げておきます。

例えば販売データが purchase というテーブルに入っていて、購入者の ID が user_id カラムに、購入日が created_at カラムに格納されているとすると、月別の購入者数は

SELECT DATE_FORMAT(created_at, ‘%Y-%m’) as reg_time,COUNT(DISTINCT user_id) FROM purchase GROUP BY reg_time ;

というSQLで集計できます。

これを使えば、アクセスしたマンスリーユニークユーザ数などを集計することができます。

日別への応用は簡単です、DATE_FORMAT の部分を以下のようにすれば日別になります。

SELECT DATE_FORMAT(created_at, ‘%Y-%m-%d’) as reg_time,COUNT(DISTINCT user_id) FROM purchase GROUP BY reg_time ;

 

414 Request-URI too large が出るようになった

iOS アプリからパラメタ付き GET で WEB サーバにリクエストを投げていたら以下のエラーが出るようになった。

414 Request-URI too large

 

どうやらパラメタが長すぎて URI の長さ制限にひっかかってしまったようです。

デフォルトの長さ制限は 8190 バイトのようですので、これ以上長いと414 エラーとなってしまうようです。

まぁ、そんなに長いパラメタを GET で送るなよ、ということだとは思いますが、アプリを修正するのは時間がかかるので、とりあえず長さ制限の値を変更すれば、アプリを修正するまでの期間はしのげます。

制限の修正は Apache の conf ファイルに以下の行を追加(すでにLimitRequestLine の行がある場合は修正)することで行います。

LimitRequestLine 65536

行を追加したら Apache を再起動して完了です。

上記の例の場合は、65536 バイトに設定していますが、大きすぎないように必要なバイト数だけ指定するのが良いと思います。

そしてそもそもですが、リクエストを GET ではなく POST で送るように修正して、この値はデフォルトに戻せるようにしたほうが、「本来の姿」であると思いますので、まずはリクエストを POST にできないか検討してみたほうが良いと思います。

 

GIMP で画像を回転すると枠からはみ出してしまう場合の対処

GIMP を使って画像を回転させると枠からはみ出してしまう場合があります。

そんなときに回転した画像がすべて見えるようにする対処法を紹介します。

 

gimp002

まずは回転作業です。縦長の画像を45度ぐらい回転させてみます。

 

gimp003

回転後はこんな感じで一部しか見えなくなってしまいます。

 

gimp004

そんなときは、メニューの [画像]-[キャンバスをレイヤーに合わせる] を選択してみます。

 

gimp005

無事に回転した画像がすべて見られるようになりました。

 

IT系開発について