2013年8月27日火曜日

php fputcsvを使わないでCSVファイルをダウンロードする

自サーバでDBのでーたをCSVファイルにしてダウンロードするロジックを検証していました。

(WordPressのプラグインを利用しています。)

(トラブル現象)
1、3件出なければいけないところ、2件しかCSVファイルに出てこない。
2、CSVファイルの見出しのひとます目に「・ソ」「x'EFBBBF'」が入り、文字化けした。

(原因)
1、については、レコードは三件きちんとデータとして吐き出されている。しかし、一番最後のレコードの一番最後のアイテムのデータが壊れていることが分かりました。

2、については、ファイルの先頭三バイトに「x'EFBBBF'」が挿入されていてこれがもとで最初のアイテムが文字化けしてしまっていることが分かりました。この三バイトがどこでセットされているかは、推測ですが、アウトプット・バッファーにデータをfputcsvしたときでは?と思います。

※この三バイト「x'EFBBBF'」は後にBOM付きUTF-8ファイルと呼ばれる品物であることが判明。


(対応)

1、CSVの項目の区切りを「”」、各項目ごとの区切りを「,」にして変換しているロジックを
mb_str_replace()を使ってコンバートする。
※mb_str_replace()は、予め、ダウンロードして、稼動DIRに設置しておく。

2、アウトプットバッファーのクリーニングを、ob_end_clean()を使ってお掃除した上で
fwrite()を使ってファイルプットする。

3、CSVデータ1レコードの終わりに改行コード\r\nをつける。

4、fputcsvとmb_str_replaceを参考に問題プログラムを修正する。

修正コードCSVレコードGenerate部分

function prv_fputcsv($fp, $data, $encoding="") {
 require_once 'mb_str_replace.php';

 $csva = '';
 foreach ($data as $col) {
  $col = mb_str_replace('"', '""', $col, $encoding);
  $csva .= "\"$col\",";
 }
 fwrite($fp, "$csva\r\n");
} 

ファイルダウンロード部分

     
$file_size = @filesize($full_file_name);
     ob_end_clean();
     ini_set("zlib.output_compression","0");
     header("Pragma: public");
     header("Expires: 0");
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     header("Cache-Control: public");
     header("Content-Type: text/csv");
     header("Content-Disposition: attachment; filename=".$file_name);
     header("Content-Length: ".$file_size);
     @readfile($full_file_name);
     @unlink($full_file_name);

このように、二箇所の修正を行いました。

(結果)

前出のトラブル現象はずべて解消しました。

めでたし、めでたし。

※ソースの部分に、SyntaxHhgilighterを当ブロガーに導入しました。
 導入方法は追ってアップできればと思っています。

2013年8月18日日曜日

XAMPP 1.7.7 MySql 文字コードセットをUTF-8に変更する方法

文字コードの設定は重要です。

クライアントサーバ間の文字のやり取りをする場合、文字化けの虞のある場所です。

そこで、私の使っているXAMPP1.7.7のMySql設定を確認することにした。

コマンドプロンプトからMySqlにログインし、

mysql> show variables like 'char%';

を入力すると



このように、

character-set-client = cp932
character-set-conection = cp932
character-set-database = latin1
character-set-server = latin1
character-set-system = utf-8

ばらばらな文字コード設定になっていました。

そこで、この文字コードをUTF-8に統一することになりました。

変更方法は、MySqlの設定ファイル、My.iniに下記を設定することにより行います。

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

MySql,Apacheの再起動を行い、先ほどのコマンドを入力すると変更結果が得られます。


character-set-client = utf-8
character-set-conection = utf-8
character-set-database = utf-8
character-set-server = utf-8
character-set-system = utf-8

このように、すべて、UTF-8に設定されました。

多くのブログに掲載されている、「default-character-set=utf8」を、My.iniの[mysqld][mysql][client][mysqldump]に設定する記述に応えてそのまま設定すると、MySqlが動きませんでした。

この、パラメータはxampp MySqlには使えません。


2013年8月9日金曜日

WordPress 固定ページ編集で、HTTP304発生

昨日まで編集できていたWordPressの固定ページの編集が、今日、いきなり、できなくなっています。


編集窓に変更を加えた後、更新ボタンを押すと、サーバーからアクセス拒否を表す、HTTP403

が返されてきます。

昨日、何やったかな?

1、変更をいっぱいくわえたので、WordPressのDBバックアップ、ファイルバックアップを実施。
2、レンタルサーバにある機能で、「WAFセキュリティー」設定を全部セット
  (XSS対策、SQL対策、ファイル、メール、コマンド、PHPの各対策)

この二つくらいでした。

具体的にどのような症状かというと・・・・

A.管理画面の固定ページを編集画面で特定のページは、更新ボタンを押すと、編集していても、い なくても、HTTP403が返される。

B.他のページは、編集していても、いなくても、更新ボタンを押すと更新できる。

A.について編集窓には、<iframe>タグを用いた記述をいている。
B.については、普通の文字列のみの記述をしている。

こんな感じでした。

まず、昨日行った「バックアップ」にエラーがないかログをチェックしたところ、DB,
FILE共にNORMAL ENDしていて特に問題となるようなことはありませんでした。

次にやったWAFセキュリティー設定。

これは、サーバー管理ツールのWAF設定の画面に行って、説明書きをよーく読んでみました。

-----------------------------------------------------------------
■ 検出時に動作について

検出された場合には、アクセスが拒否されエラーページが表示されます。
----------------------------------------------------------------

と書かれていました。

これって

HTTP403

のことだよね。

うんうん。

さっさとWAF設定を全部解除設定にしました。

暫くして、Aの編集は、滞りなく編集できるようになりました。(汗)

今回の場合、XSSの設定だけはずせばいいと思いましたが、念のため全解としました。

開発中は、こんなもの設定しないほうが良いですね。




2013年8月7日水曜日

WordpressにIE安全じゃないよ!と怒られる-IE10なのに・・・

Wordpressで開発していますが、突然、管理画面のダッシュボード画面に赤い警告が出ました。

------------------------------------------------------
お使いのブラウザは安全ではありません!


Internet Explorer の安全ではないバージョンをお使いのようです。
古いブラウザを使っていると、コンピューターを危険に曝してしまいます。
WordPress のすばらしさを実感するには、ブラウザーを更新してください。


Internet Explorer をアップグレードするか ブラウザの選択肢を知る
Browse Happyサイト を訪れてみてください。


非表示にする
-------------------------------------------------------

こんな文言が入っていました。

おかしいな?

IE10なのに・・・

それと、テンプレートとか崩れていることも発覚。

パンくずリストも、「○○>■■>△△」というように横並びに表示されるはずが、

「○○>
■■>
△△」

このように、縦になっている。

そこで、

Google先生にお尋ねしてみました。

「wordpress ie10 安全ではない」

すると、

シロップ さんのパソコン修理日誌パソコン修理日誌にたどり着きました。

中身を拝読すると

むむむ!

おんなじ現象あるね。

解決方法は、なんと、IEのアドレス窓に虫眼鏡、南京錠、紙がち切れたイメージとリロードマーク
が並んでいるうちの

「紙がちぎれたイメージ」

これが原因でした。

現状、「青くなっている」

これをクリックすると

あら不思議

私意図したもとの状態に戻っているではありませんか。

これを押すと互換表示されるようです。

あまり深い意味は探りませんでしたが、不具合解消ということで

先に進むことにしました。

シロップ さん、感謝です。(^^)

2013年8月1日木曜日

SSL環境下でWordPressの管理画面、ログイン画面を使う

SSL環境でWordPressを運用するには、公開ページに対してSSL運用が可能となって

ホットするのもつかの間で、ログイン画面、管理画面に入れなくなります。

私、あせりました。

そもそもの間違いは、SSL申請中にWordPressを導入し、チョコチョコイジッテイタこと

でした。

WordPressの導入時は、http://example.comで運用中で、何の問題もありませんでした。

しかし、SSLの申請上、WWW.あり、なしを決定したり、.htaccessの設定を変えたりで

サーバーの環境が刻々と変わり、挙句、SSL用にIPが変わった。

(1)www.wxample.com IP:nnn.nnn.nn.nn

(2)example.com       IP:mmm.mmm.mm.mm

となっていました。

まづこれを上の(2)のIPを(1)のIPに合わせるようにDNS設定を変更する。

次に、WordPressのインストール先をexample.comだったのでwww.example.comにするため、

一度

WordPress本体をサーバーからUninstallする。また、MySql DB を削除する。

こうして、サーバーからWordPressとMySqlを削除した上で、再度WordPressをインストールする。

(DBも新規作成したうえで)

こうして、作成しなおした環境下で本題の「WPのログイン・管理画面をSSL環境下で稼動するよう設定変更を行う」

これを実現するには、WordPressの環境設定ファイル「wp-config.php」を修正する。

サーバのドキュメントルートし下にWordPressを導入した場合

www.example.com/

以下に当該ファイルは存在するはずです。

このファイルの適当な箇所に以下のパラメータを設定することで、うまくいきました。

--------------------------------------------
/** SSL ログイン・管理画面アクセスを強制する */
define('FORCE_SSL_ADMIN', true);
--------------------------------------------

この環境変数設定は、管理画面、ログイン画面に対し、強制的にSSLアクセスする
パラメータです。

このほかにログイン画面だけ強制的にSSLアクセスするパラメータがあります。
-------------------------------------------
define('FORCE_SSL_LOGIN', true);
-------------------------------------------

参照

http://wpdocs.sourceforge.jp/Administration_Over_SSL

やっと、SSL環境下での開発が始められます。


2013年7月30日火曜日

SSL環境下で301リダイレクトを使って「WWWあり」と「WWWなし」を統一する

レンタルサーバを借りて、ドメイン登録をしました。

私の入ったレンタルサーバは、www.example.comと「www.あり」

example.comの「www.なし」いずれの指定でもアクセス可能な設定でした。

今回、SSLを設置するにあたり、コモンネームというのをSSLに指定する

必要に迫られました。

????

SSL通信を行うには、サーバー証明書というのが必要で、この証明書に

コモンネームという設定があり、ここにURLを指定する必要があります。

すなわち、

コモンネームに指定されたURLによるアクセスでなければ、SSL通信

ができないということだそうです。

ということは、ドメインの指定で上記のように「www.あり」「www.なし」の

いづれでもアクセス可能な設定であっても、SSL通信をするには、いづれか

一方に決めないとコモンネームに登録されていないURLでアクセスすると

SSL通信が確立されないのです。

たとえば、

コモンネームが、www.example.comと指定されている環境で、

example.com

と指定してアクセスすると、SSL通信できません。

ということらしいのです。

そこで、

SSL導入にあたり、ドメイン「example.com」に「www.あり」「www.なし」

いづれか一方に統一する設定、http://でアクセスしても、https://にリダイレクトする設定
をすることになりました。

方法を以下に示します。

ドメインのルート直下にある「.htacsess」ファイルに以下の設定を追加記入します。

★「www.あり」に統一かつ、コモンネームのアドレスにリダイレクトさせる場合

▼設定例(example.com)
-----------------------------------------------------
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
-----------------------------------------------------

★「www.なし」に統一かつ、コモンネームのアドレスにリダイレクトさせるする場合

▼設定例(example.com)
-----------------------------------------------------
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) https://example.com/$1 [R=301,L]
-----------------------------------------------------

じゃあ、どちらに統一すべきか?

という議論がありますが、私見では、どっちでも、お好きなほうを

選べば良いと思います。

※この手法は、サイト移転したときに、アドレス転送をする場合にも使うそうです。

引越し前サイトに新サイトのアドレスを埋めればOK。

2013年7月28日日曜日

第36回 隅田川花火大会、中止のお知らせ 高橋真麻の根性中継あり



突然の豪雨で大変でした。

大会史上、中止は初めてだそうですね。

私見ですが、
震災復興途上のなか、何浮かれてんだよ!と天に叱られているような
心持になりました。

なお、この日は、浦安でも花火大会が行われましたが、隅田川と同様に
中止に追い込まれました。

なにか、震災のことが風化しているようで気になります。
今日も、福島第一からは、放射性物質の海洋拡散が起こっている
のに・・・・。

2013年7月21日日曜日

Anton Bruckner - Symphony No.9 - Wiener Philharmoniker - Leonard Bernstein


懐かしい映像を見つけましたのでうpします。

1990年の春、オーストリア、ウイーンの楽友協会大ホールで行われたコンサート。

そのときの映像が最近公開されたようなのです。

私、このコンサート一番後ろの立ち見エリアで聞いていたのです。非常に懐かしく
そして、うれしい思いでいっぱいです。

Scherzo. Bewegt, lebhaft - Trio. Schnell のところで、バーンスタインが、跳ねています。当時もこの跳ねるシーンを
生で見てびっくりしたのを鮮明に覚えています。

もう、23年も前のことですが、いい思い出と再開してうれしいです。
ムジーク・フライン グロッサー・ザール・・・綺麗なホールです、また、行ってみたい。

Anton Bruckner
Symphony No.9 in D minor, WAB 109
Sinfonie Nr.9 d-Moll, WAB 109
("dem lieben Gott")

I. Feierlich, misterioso . . . . . . . . . . . . . . . . . . . (0:01:16)
II. Scherzo. Bewegt, lebhaft - Trio. Schnell . . . . .(0:28:38)
III. Adagio. Langsam, feierlich . . . . . . . . . . . . . . (0:41:14)

Wiener Philharmoniker
(Vienna Philharmonic Orchestra)
Leonard Bernstein

Recorded live at the Große Musikvereinssaal, Vienna, 1990


2013年6月22日土曜日

富士山が世界遺産に登録された

富士山が世界遺産に登録されたというニュースがありました。

かっこいい富士山、日本人の心。

いいですね。めでたい。




少し心配なのは、観光増による、ごみの問題です。これがために、自然遺産に登録できなかった経緯をもつので心配です。

日本人の心の問題として、ごみは手に持って下山すればいいのです。一人一人の心がけで美しい富士山を後世に繋ぎましょう。

あくまでも、富士山はご神体です。

2013.05.31の富士山

2013年6月14日金曜日

lenovo ThinkCentre M90p 付属マウス交換 CRU 利用

先日壊れたlenovo ThinkCentre M90p付属のマウスが、lenovoの保守サービスから送られてきました。

CRU(Customer Replaceable Unit )送付サービスというそうです。

私の利用マシンには、三年間、オンサイト保守サービスというワラントが付いていまして、今回、このワラントの権利行使という形でマウスの交換が実現しました。

実際の交換は、pcを買ったときのように、ただ、旧マウスをUSBから抜いて、新マウスをUSBに差込、PCのPowerを入れて、動作確認を行い、正常稼動なら対応終了となり、実際にそうなりました。

左:新マウス、右:旧マウス

ワラントってこういうときに効果が出ます。

通常の保守サービスは、1年程度しか付いていませんね。しかも、郵送で引き取りが主流です。
オンサイト保守は、高いけど、マザーボード壊れたときとかは絶大な威力発揮します。
(一回、経験あり)


こんな感じで壊れたマウスの引き取り等の手順が書かれた紙も同封されてくるので非常に分かりやすいです。

これでマウスの交換も終わり、一軒落着。


2013年6月12日水曜日

lenovo ThinkCentre M90p 附属マウス壊れる


2010年に購入した,lenovo ThinkCentre M90pに付属の光学マウスのセンターホイールが

機能しなくなりました。

あまりに突然の出来事だったので少々面食らいました。

ブラウジングのときに頻繁に使用するのでガタが出るのも早いのでしょうか。

このマシンは幸いな事に、ワラント3年加入していたので、早速マウスも対象か確認することにしました。

レノボ・オンサイトサポートに電話で連絡。

あちらから、マシンタイプ、シリアルナンバー等を聞かれ、保証がアクティブであることを確認されました。

保証の範囲内との回答だったので一安心。掛けておくものですね、ワラントは。

ということで、

マウスは、無償交換の段取りが整えられました。

新しいマウスが宅配便で送付され、新しいマウスを実機に装備し問題なければ、数日後に、壊れたマウスを宅配業者が引き取りに来ます。の宅配業者に壊れたマウスを引き渡して無償交換が完了します。

もし、

この業者に壊れたマウスを渡さなかったりすると、有償交換となり、送料まで課金される仕組みとなっているそうです。

この制度CRUというそうです。

今回は、PC購入後時間が経過してからのトラブルでしたので、少々対応に手間取りましたが、

満足です。

皆さんのPCの保証は大丈夫でしょうか。再確認をお勧めします。


2013年5月15日水曜日

Last Hargen-dazs

先般報道された、ハーゲンダッツの店舗販売撤退について、国内最後の店舗がなんと、新浦安にあるそうで、今回、最期に利用しに行ってきました。

わたしたちのような人たちが結構いて、購入まで30分ほど並びました。まあ、最終日にはもっとすごい行列になるのだろうなと思い、少しはやめのお別れとなりました。

店舗オンリーのフレーバーを・・・と思いましたが、いつもの通り、ラムレーズンを食べました。

うまい!

たまらねぇ~。


2013年5月6日月曜日

浦安 清龍神社参拝

浦安の清龍神社へ行ってきました。

ここは、私の家の氏神様だそうですが、この家を使い始めてから、初めての参拝です。

この非礼をお詫びして参りました。てっきり、距離的に近い、豊受神社が氏神様かと思って

おりました。

気分的にお参りできてすっきりしました。



2013年4月14日日曜日

Google Nexus7 Unboxing

到着しました。早かったです。予定より1日はやい到着でした。


この箱、2重構造になっていて、ご贈答用にも耐えられる上品な梱包がなされていました。


黒箱のなかをあけると、だいぶ上げ底仕様となっていて、本体が一番上、付属品が下に
入っています。

梱包品は、本体、保証書、スタートガイド、電源ソケット、ケーブルだけです。

あとは、電源入れて初期設定してすぐ使えました。


これは妻用になります。

妻は、気軽に使えて便利とお褒めの言葉を頂戴しました。

2013年4月12日金曜日

Google Nexus7 16GB WiFi注文しました。

かねてより注目していたGoogle Nexus7 16GBをGoogle Play経由で

注文しました。

最初は、慣れませんでしたが、お目当ての品を買い物籠に入れてから決済情報の入力、配送

情報の入力とスムーズにできました。

Google Playのサイトからの注文は初めてでしたがかんたんに注文が完了します。

利用規約には、注文品の一番でかいものを基準に送料が別途加算される旨の記述がありま

すが、実際のところは、送料を明示的に加算されることは無く、本体価格¥19,800だけで

した。


注文が完了すると上のような画面が出てきます。後は、配送を待つだけです。

楽しみです。(^^)

2013年3月17日日曜日

正中山奥の院(法華経寺奥の院)

中山法華経寺のそばにある、正中山奥の院へ行ってきました。

ここは、

法華経寺から歩いて10分(中年オジサンの足で)くらいのところにあります。


落ち着いた雰囲気で心が落ち着きます。


本殿入ったところにて御朱印を頂戴しました。

2013年3月15日金曜日

禁煙満四年

2009年3月15日にはじめた禁煙が、本日で四年を迎えました。

現在のところ、一本も「吸いたい!」と思うこともありませんでした。

面白いことに、

これまで、一日最高3箱吸っていた人間が、いまでは、

遠くのほうで歩きタバコしている人の煙を察知できるくらい

敏感になりました。また、喫煙者の方とのご縁がなくなり

ました。

家族は、歓迎しています。
これからも、継続していこうと思います。

禁煙をしたい方へ

何時止めるの?

今でしょう!(^^)

2013年3月2日土曜日

BUFFALO HD-PV500U2 購入

BUFFALOのポータブル外付けHDD HD-PV500U2を、子供のノートパソコンのバックアップ用に購入しました。


箱を開けると、本体、USBケーブル、説明書ペラガミ一枚というシンプルな構成。


厚さじはこんなもんです。


手のひらサイズで、軽量なのでいい感じです。

しかし、

用途は、システムバックアップなので、たぶん持ち歩きの用途とはならないと思います。

使用については、

USBケーブルをパソコン本体のUSB端子に繋ぐだけで、暫くすると使えるようになります。

音は、全然気になりませんでした。

容量:500GB
金額:¥5,289円

2013年2月28日木曜日

デスクトップ ウィンドウ マネージャーで致命的なエラー(0x88980406) が発生しました


他のトラブルで対応していた際に、エラーとなっていたものの対応をするはめになりました。

-----------------------(Message)--------------------------------

デスクトップ ウィンドウ マネージャーで致命的なエラー(0x88980406) が発生しました
ソース(S):Desktop Window Manager
イベントID(E):9020

----------------------------------------------------------------

こんなメッセージが、イベントビューアーに何度も発生していました。

Windowsには何のレファレンスもありませんでした。

このエラーによる影響は、ブラウザーの淵の透明感が無くなるというものでした。

ウインドウズ アエロ? エアロ?

どっちか判らんが、

これが原因であるらしい。

他の方のトラブルシューティングに当たってみたのですが、

ひとつは、BIOSの設定が何らかの原因で変わってしまっていたというもの。

他の一つは、ビデオドライバーの更新で復活したもの

もうひとつは、サービスをもう一度スタートさせてすり抜けられればおk、というものでした。

で、

私の場合はどうなるのかを検討。

あたりをつけるなら二番目です。三番目は真っ先にやってみました。その結果は、解決とならずでした。

で、

二番目を凝視。

Windows Updateで更新を睨む。

・・・・

あるある、

ビデオドライバーの更新情報があります。

そこで、Windows Updateからこのビデオドライバーの更新作業を実施しました。

適用面で何度か再起動をすることになりましたが、更新作業完了後当初のエラーは

発生せず、ブラウザの淵も半透明の状況が復活しました。

めでたし、めでたし。

Radiko.jp Flash Player更新後にCPU使用率が上昇し、他のアプリに影響が出た

私は、いつもGoogle ChromeでRadiko.jpを聞きながら、仕事をしています。

今日、突然他のアプリの動きが低下し、仕事にならなくなってしまいました。

RadikoをCloseするとCPU使用率は低下していつものように稼動します。

また

Google ChromeでRadikoを鳴らすとCPU使用率は、88%にもなります。


原因を調査し始めましたが、最近の更新といえば、Addobe Flash Player

の更新と、Windows Updateの自動更新でパッチが当たっていることくらい

でした。

イベントビューアーでエラーログを参照するも、Flash関連のエラーは出ていませんでした。

代わりに、
-----------------------(Message)--------------------------------

デスクトップ ウィンドウ マネージャーで致命的なエラー(0x88980406) が発生しました
ソース(S):Desktop Window Manager
イベントID(E):9020

----------------------------------------------------------------

というものが記録されていました。

これは、CPU使用率激増の原因ではなく、別に掲載しますが、他のところに原因がありました。

さあ、

困りました。

イベントログに有益な情報はありませんでした。

トラブルシューティングとしては、

最近、システム変更した、Flash Playerのデリート&再インストールがまづ一つ目の対策。

その次は、リカバリーポイントを使い前回のポイントまでシステムを戻すという2点が考えられます。

でも、

後者は最後の手段と考えます。

今の使用マシンは、Lenovo ThinkCentre M90p Tower
OS:Windows 7 SP1
メモリ:4GB
HDD:250GB

というスペックです。

これに、インターネットブラウザとして

Internet Exproler8

Google Chrome

を搭載しています。

ここで、

Google Chromeが駄目なら、IEはとうなの?と素朴な疑問

IEでRadiko鳴らしました。

すると、なんと言うことでしょう。

いつものように、CPU使用率5から20%の範囲で快適に聞こえるではありませんか。

ということは、

対処法が決まりました。

手順
1.Google ChromeをいったんこのPCからアンインストールする。
2.その後、Addobe Flash PlayerをこのPCからアンインストールする。
3.Google Chromeを再インストールする。
4.Addobe Flash Playerを再インストールする。
5.Google Chromeを立ち上げて、Radiko.jpにアクセスする。
6.適当なラジオ局を選択して音声を出して見る。
7.Windowsタスクマネージャーで「パフォーマンス」タグを開きCPU使用率の増減を凝視する

その結果

CPU使用率は、従前の運用の状況と同じように稼動するようになりました。

めでたし、めでたし。

原因は、Addbe Flash Playerの更新時にGoogole Chromeとの関係で問題が生じたものと思われます。なぜ、CPU使用率が激増するようになったかについては原因不明のままです。