2012年12月5日水曜日

mysqlでconcatの中でcaseを使う

こういう感じです。

select
concat(
case when 1 then 2 else 3 end,
case when 0 then 4 else 5 end,
case when 1 then 6 else 7 end,
case when 0 then 8 else 9 end
) as test


これで返り値は「2569」です。

あとconcat_wsというのも便利。

select
concat_ws(
',',
case when 1 then 2 else 3 end,
case when 0 then 4 else 5 end,
null,
case when 0 then 8 else 9 end
) as test


これで返り値は「2,5,9」になります。

mysqlのgroup_concat関数が便利

http://treeapps.hatenablog.com/entry/20120530/p1

これは便利です。覚えておこう。

2012年11月5日月曜日

エクセルでセル内の特定文字列のみの書式を設定する

エクセルでセル内の特定文字列のみの書式を設定する」というのをやりたかったんですが、調べてみたところマクロを使わないと実現できないようです。

そうしたマクロを作って配布してるサイトがいくつかあって、今回はこちらを使わせてもらいました。

http://www.excel7.com/personal/personal1-4.htm

マクロを登録したり使えるようにしたりするのが少し手間でしたが、うまく動いてくれました。

MacDriveでBootcampのWin7Mac間でファイルをやり取りする

MacBookAir(BootcampのWin7)のディスク容量が不足してきたので、MacDrive 9 Standard 日本語版を買ってみました。

さまざまな機能があるソフトですが、今回はBootcampのMacとWin7それぞれのドライブ間でのファイルのやり取りが目当てです。

Bootcampでは一旦ドライブを切ると後から容量を変更するのが難しいようなので、いろいろ探してみて、MacDriveを使うのが一番確実な感じでした。
さっそく体験版を入れて試してみて、いい感じだったのでそのままDL版を購入。

とりあえずWin7ドライブにある、普段あまり使わないデータ30GBほどをMacのドライブへ退避させました。
OSの異なるドライブ間の移動で、ファイル数も容量も多かったですが、特に問題なく終了しました。

2012年11月3日土曜日

googlemaps apiでマイマップのマーカーをkmlを使って表示

googlemapsのiframe埋め込み方式でマイマップを表示してたのですが、普通にブラウザで見ると出てる商業施設の名前などが、一部の表示されません。理由はよくわかりません。

調べてみたところ、マイマップのマーカー情報がkmlで取得でき、さらにjavascript apiでそのレイヤーをかぶせることができることがわかったので、対応してみました。

googlemaps apiでのkmlレイヤーの使い方
https://developers.google.com/maps/documentation/javascript/layers?hl=ja#KMLLayers

kmlレイヤーのinfoWindowの大きさを調整する
https://groups.google.com/forum/?fromgroups=#!topic/google-maps-api-japan/Ax0GWM9Gnoc

2012年10月17日水曜日

Request Entity Too Largeエラーが出る。原因はLimitRequestBodyだった

ウェブアプリで2MBのファイルをPOSTでアップロードする処理をしたら、

HTTP 413
Request Entity Too Large

The requested resource
/test.php
does not allow request data with POST requests, or the amount of data
provided in the request exceeds the capacity limit.


というエラーが。
「Request Entity Too Large」でググるとnginx関係のエラーが出てきますが、ウチのサーバーはnginxなんて入れてないので、おかしいな~と思ってました。

で、httpdのエラーログを確認すると、

Requested content-length of 2073274 is larger than the configured limit of 1024000


と出てました。
なんか制限かけてるようです。

とりあえずhttpd.confで「1024000」を検索かけてみたところ、

LimitRequestBody 1024000


という記述が。明らかにこれが怪しいです。

ゼロをひとつ増やしてhttpdを再起動したら、エラーが出なくなりました。

なんの目的でLimitRequestBodyを設定したのか記憶にないのですが、テスト環境なんで消し忘れとかだと思います。

2012年8月17日金曜日

cssのopacityプロパティは子要素まで透過してしまう

背景を透過する必要があって、いつものようにopacityで対応できると思ってたんですが、実際にやってみると、opacityはその子要素までも透過してしまうという仕様になっていることがわかり、困ってしまいました。

で、ググってみたところ、rbgaというのを使えばこの問題を回避できることがわかりました。

http://d.hatena.ne.jp/Hamachiya2/20120506/opacity_rgba

勉強になりました。

2012年6月28日木曜日

ファーストサーバーのデータ消失事故

が、世間を騒がせています。

「お客様の万一のデータ紛失に備え、1日1回自動でバックアップを実施しています。」

と謳って料金を徴収しておきながらデータ全消失、しかも人災が原因というから救いようがないです。

さらにソフトバンクの株主総会が終わるまで情報統制がかかっていたなど、かなりきな臭いニオイもしています。

というわけで今回の教訓は、

・万が一への備え(バックアップ)は絶対に必要

・ソフトバンクグループ、マスコミは信用出来ない

という感じでしょうか。

何か事故が起こっても、1~2日くらいで別サービスでサーバー立ててサービス再開できる、というくらいの備えを用意したいですね。

2012年6月13日水曜日

Googleウェブマスターツールでクロール頻度が変更できない

ウェブマスターツールでGoogleBotのクロール頻度を設定する項目があるのですが、

このサイトには、特別なクロール速度が設定されています。このクロール速度を変更することはできません。

という表示が出るケースがありました。

ググってみても、これといった情報は出てきません。

そこで表示言語を英語にしたところ、

Your site has been assigned special crawl rate settings. You will not be able to change the crawl rate.

というメッセージになったので、こっちでググってみたところ何件かめぼしい情報がヒット。

http://www.seroundtable.com/google-crawl-cdn-14126.html

「ホストがCDNに乗ってる場合、Googleが勝手にクロール頻度を最適化するので、ユーザー側でクロール頻度をいじれないようになっている」ということのようです。


http://stackoverflow.com/questions/9265790/how-can-i-change-googles-crawl-rate

こちらは「サーバーをEC2(AWS)に変えたらクロール頻度を調整できなくなって困ってる」という投稿。


http://forums.digitalpoint.com/showthread.php?t=1527405

こっちは少し古いですが「みんな同じだよ。気にスンナ」みたいなスレッド。


そんなわけで、Googleが正式にアナウンスしてるわけではありませんが、「サイトがCDNやEC2(AWS)に乗っているサイトはクロール頻度の調整ができない」ということらしいです。

2012年5月30日水曜日

phpの「Notice: Undefined index」を非表示にする

古いphpアプリの環境を移したとたん、「Notice: Undefined index」というNoticeメッセージが出るようになりました。

「error_reporting(E_ERROR)」とかにすれば非表示にできるのですが、全スクリプトにこの記述が必要になります。かなりめんどくさいです。

というわけでphp.iniのほうに「error_reporting = E_ERROR」を書いてhttpdをrestart。

これで解決しました。

2012年4月19日木曜日

phpのstrtotime関数を使って文字列を日付型に整形する

よく忘れるのでメモ。

echo date("Y/m/d",strtotime("20120418"));

こんなのもいけちゃいます。

echo date("Y-m-d",strtotime("Sat, 14 Apr 2012 13:17:36 +0000"));

2012年4月15日日曜日

php.iniのmax_input_varsというパラメータ

php5.3以降で、新たにmax_input_varsというパラメータが追加されていました。
これはgetやpostで受け付けるパラメータ数の上限をあらかじめphp.iniの設定で決めておくというもので、DOS攻撃の対策として追加されたようです。

デフォルト値は1000。

普通1000件ものパラメータを受けるようなWebアプリはないと思います。また今はAjax全盛時代なので、一回のリクエストのパラメータは少なくなってきていると思います。

なんですが、たとえば古いWebアプリとか、条件が重なったりするとこの制限にひっかかることがあると思います。というか自分がひっかかりました。

そういう場合はアプリ側を作りなおすのが最善だと思いますが、一時しのぎとしてこのmax_input_varsの数字を増やしておけば対処できます。

参考
http://d.hatena.ne.jp/gallu/20120111/p1

2012年3月21日水曜日

OracleのTRUNC関数で週初の日曜日を取得

date型のデータを様々な形で切り捨てするTRUNC関数というのを知りました。

http://www.shift-the-oracle.com/sql/functions/trunc-datetime.html

便利です。
今回使ったのはDAYのフォーマットでの切り捨て。日付を渡すと、その日付の所属する週、つまり直前の日曜日の日付が返されます。

こんな感じ。

select TRUNC(TO_DATE('2012-03-08'), 'DAY') from dual
-> 2012/03/04


他にも四半期(Q)とかその月の最初の曜日(W)とか、いくつか引数が用意されているので、覚えておけばいつか役に立つと思います。

2012年3月3日土曜日

evo wimax(ISW11HT)からevo 3D(ISW11HT)に変えた

1ヶ月ほど使ってます。

evo 3Dは、evo wimaxに比べて

電池の持ちが良い

かなり良いです。自分の使い方だとモバイル電源パックもほとんど必要ないくらい容量があります。


フォントがきれい

まともなフォントになりました。
以前のダメフォントと比べると格段に進化しました。


サクサク動く

evo wimaxもサクサク動いてましたが、以前にもましてサクサク動きます。
このサクサク感はiPhoneと比べてもあまり遜色ないと思います。


と、こんな感じで大満足です。

あとはandroid4.0へのアップデートが予告されてるので、楽しみにしてます。

2012年2月3日金曜日

Thunderbirdでのメールヘッダ表示切替

メールメッセージを印刷しようと思ったら、ヘッダ情報だけで1ページ使いきってしまうくらいの量だったので、これを減らせないかと調べてみたところ、

表示(V)→ヘッダ(H)→標準(N)

すれば、FromやToのみの、最小限の表示に切り替えられることがわかりました。


逆に全部表示したいのなら

表示(V)→ヘッダ(H)→全て(A)

にすればOK。