備忘録」カテゴリーアーカイブ

Google AdWords からのメールに注意

先日、Google AdWordsからメールが届きました。
Google AdWordsといえば有名なGoogleの広告サービスの名称ですが、この送信者で着ていたので疑うこともなくメールを開きました。
本文は全て英語。
怪しいと思いながら、読んでいってみるとどうも関係なさそうな内容。
本文中のURLもgoogleドメインだったので、何気なくクリックするとログイン画面が表示されました。
ちょうど、AdWordsのアカウントは持っていなかったので事なきを得たのですが。

調べてみると、やはり同じようなメールが来ている人がちらほら。
どうも、フィッシング詐欺的なものでログイン画面が表示されログインしようとアカウントとパスワードを入力するとAdwordsのアカウントとパスワードを盗まれるらしいです。

天下のGoogleなんで、疑うことをしなかった私が無知だったのですが、巧妙な手口です。

みなさんも注意してください。    

続きを読む

HOSTSファイルの存在忘れてた

以前、こちらで書いたDNSの設定についてなんですが、初歩的な点を見落としていました。

ずっとDNSサーバ側で設定をしなければいけないと思い込んでしまっていて、忘れていました。

「HOSTS」ファイルの存在を。

 

最近は存在自体薄れているような気がするのですが、昔は結構重要なファイルの一つで設定をする必要があったんですよね。

今でも重要なファイルなんですけど、自動的にWindows側で設定してくれていたりして意識することなくネットワークが利用できるんですよね。

 

ここでHostsファイルとは?って人に簡単に説明すると、Windowsのシステムファイルの一つで、そのPC内でサイト名などをIPに変換するためのものです。

場所はどこにあるかというと、

Windows XPの場合→「C:\WINDOWS\system32\drivers\etc」
Windows 2000の場合→「C:\WINNT\system32\drivers\etc」
Windows 95/98/MEの場合→「C:\Windows」

にあります。

さて、本題に戻るんですけどわざわざDNS側で設定しなくても、内部のPCのHostsファイルにドメイン名とローカルIPアドレスを記載してあげることで一発解決。

 

灯台下暗しってやつですね。

AWstatsのお気に入りに追加の項目って??

オープンソースのAWstatsというアクセス解析について、以前から疑問に思っていた項目がありました。
それは、「お気に入りに追加」という項目です。

一体どうやって見ているんだろう?

お気に入りに追加した瞬間にブラウザが何か残していっているんだろうか?
でも、その場合セキュリティ上あまりよくないような?
なんて疑問を持ちつつ、調べてみました。

解説した記事が見つかりました。

インターネットエクスプローラなどのブラウザはお気に入りに登録するときにWebサーバに
favion.icoファイルがあるかアクセスします。
そのログからお気に入りに登録したユーザが分かります。
お気に入りに登録した場合のアクセスログ結果は次の通りになります。

192.168.0.1 – – [25/Jul/2004:10:10:20 +0900] “GET /favicon.ico HTTP/1.1” 200 5486 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; istb 702; .NET CLR 1.1.4322)”

AWstatsはこのアクセスをお気に入り登録件数と集計します。年月別の訪問者とお気に入り登録件数を把握できます。

[ThinkIT] 第2回:オープンソースアクセスログ解析ソフトの解析結果(1) (4/4)より

だそうです。

なるほどね。

セキュリティソフトのファイアーウォールって・・・・

先日、とあるシステムを導入しているお客さんから「システムが動かない」という連絡がありました。

そのシステムというのは、VisualBasicで構築した簡易CTIシステムなんですがサーバは起動しているがクライアント側にパケットが送信できていないみたいな状態でした。

私も長年の経験から、セキュリティソフトのファイアーウォール機能が邪魔をしているんだなと気づきました。急いでいたため、危険とは思いましたが、セキュリティーソフトのサービス停止を指示して正常に復旧することができました。

まぁ、よくある話です。それにしても、なんで急に発生したんでしょうね???

結局、細かい設定は今度訪問したときにでもということにして、ファイアーウォールの停止を指示しました。社内ネットワーク出口にファイアーウォールがあるので問題ないと判断。

それにしてもインターネットが普及した昨今、パソコン一台一台にファイアーウォール機能とは厳重になったものですね。

昔は、セキュリティソフトと言えばウィルス対策のみで、個人ユースでファイアーウォールなんてなかったですもんね。便利になったと言えば、便利になったんでしょうけど開発サイドとしてはパソコン一台一台にガチガチにセキュリティ固められると、後の設定がめんどうです。

それにしても、ウィルス○スターのマニュアルってないんですね。

電話でサポートしようにも、操作画面がないとサポートしようがない。

せめて、マニュアルぐらいダウンロードしてもらえると助かります、トレンド○イクロさん。

LinuxのBINDの設定ではなかった・・・・

とあるサーバをFedora core5で構築しているんですが、外部からドメイン名ではアクセスできるのですが、内部からドメイン名でアクセスできないという状況が発生していました。

厳密には、内部から逆引きはできるが正引きはできないと言う状況。さらに、内部DNSサーバ自身からdigコマンドで確認すると正常なんだけど、クライアント(windowsのみ)からだとNG。

内部向けDNSのBINDのゾーン設定をいくら調整しても状況変わらずorz

 

ググッて見てもいい回答がなかなか見つからない。

と、そこにこんな情報が。

 

DNSの検索サフィックス・リストを定義する(@IT)

 

もしかしてと、試しにクライアント側の設定をDNSサフィックスをDNSサーバのIPアドレスに設定。

nslookupで確認・・・・・OK。

なんとか正常に正引きできるようになりました。

それにしても、こんな設定が邪魔してるなんて気づきもしませんでした。

PHPとMySQL連携でメモリ不足

PHPを使ってMySQLの操作をしてるときに、データベースのレコード数が少ないときはいいんですが、ある一定以上のレコードを抽出するときにWWWサーバ側でメモリ不足のエラーが出ることがあります。

私の場合は、データベースから抽出したレコードを全て配列に格納してから処理をしているんですが、この配列変数で容量オーバーしてメモリ不足となることがありました。

対策としては、

1.抽出件数をLimitで制限して、whileなどで繰り返し処理を行う。

2.mysql_query→mysql_fetch_assocの流れではなく、mysql_unbuffered_query→mysql_fetch_assocという流れで処理をする。

1については、単純に一度に扱うデータ量を減らしています。

2のmysql_unbuffered_queryは、結構PHPのマニュアル本には載ってないことが多く私は知らなかった関数でした。

 

スタイルシートによる改ページ指定

PHPなどでWEBアプリを開発しているとどうしても印刷をきれいするという要望が出てきます。

TABLEの行数の制限などである程度は制御できるんですが、数ページに渡って印刷を行う場合はズレが生じてきます。

そこで、改ページ用のスタイルシートを埋め込むときれいにレイアウトされて印刷ができます。

例えば、改ページの区切り線にスタイルを設定する。

<hr style=”page-break-after: always;”>

 

表示される文字数によっては、変な位置でページが切れる場合があるんですがそこはページ内の文字数に余裕を持って構築しないといけないです。

PHPのスケジュール実行

とあるシステムでPHPを定時に実行しなくてはいけないことがありました。

最初はwindows系のサーバからだったので単純にタスクにURLを実行するように指示をして自動的にブラウザを起動、処理が完了したら自動的にブラウザを閉じるという設定をしてました。

ところが、サーバがLinux系の場合はどうするんだろう??

と悩んで調べてみるとまず[cron]を使ってどうにかするということが分かりました。しかし、何を呼び出せばいいのか。

そこで、わかったことは[wget]コマンドでURLを呼び出せばいいんだと。あとはシェルにダウンロードしたファイルを削除するように指示してあげれば定期的なPHPでの処理ができました。

 

 

MySQLチューニング

MySQLって軽快な動作をすると評判らしいのですが、チューニングをしてあげないと意味がないんですね。

最初はデフォルトの状態で運用していたのですが、レコード数が増えるにしたがって遅くなってしまう。そこで、いろいろと調べると設定ファイルを調整してあげれば格段に軽快な動作をするようになりました。

以下は私が設定した例です。

※設定はあくまで例です。参考程度にして下さい。

#スロークエリログ設定
log-slow-queries
long-query-time=30
log-long-format

#SELECT文をキャッシュ
query_cache_size=32M

#インデックスを用いないテーブル結合のときに使われるメモリ上の領域
join_buffer_size=8M
#インデックスを用いないテーブルスキャンのときに使われるメモリ上の領域
read_buffer_size=8M
#ソート後にレコードを読むときに使われるメモリ上の領域です。
#ディスクI/Oが減るのでORDER BYの性能向上が期待できます。
read_rnd_buffer_size=32M
#最大コネクション数
max_connections=50

#メモリに余裕がある場合に指定。検索に使われるインデックスをバッファに保存する際のメモリサイズ
key_buffer=32M
#入力データ保持のための最大バッファサイズ。画像など、大きなデータ挿入でこの制限に引っ掛かる可能性がある
max_allowed_packet=1M
#頻繁なアクセスに対し、データのキャッシュでディスクのI/O負荷を減らす場合に使用
table_cache=256
#頻繁なアクセスに対し、データのキャッシュでディスクのI/O負荷を減らす場合に使用
sort_buffer_size=16M
#値を大きくすることでインデックスを含まないクエリーの実行速度を上げる
record_buffer=1M

# スレッドの作成,削除は負荷が大きい.
# Threads_Createdの動きを見ながら変更.
thread_cache=16

# You can write your other MySQL server options here
#                                  Datafile(s) must be able to
#                                  hold your data and indexes.
#                                  Make sure you have enough
#                                  free disk space.
innodb_data_file_path = ibdata1:100M:autoextend:max:10000M
# InnoDBはOSキャッシュを使用しないため,全メモリの70-80%を当てると良い.
innodb_buffer_pool_size =128M
#InnoDBの内部データなどを保持するための領域
innodb_additional_mem_pool_size=10M

 

その他に「ここも設定したほうがいい」という項目があったら教えてください。