2011 2月 ITかあさん

ITかあさん

cakephpでSQLを使いたい

$test = $this->Model->query($sql);

sqlをそのまま使いたい!そんな時query()を使うとよい!

query() メソッドの主な使い道

  • 単発でちょっとしたINSERT・UPDATEを行いたい
  • bind/unbindをせず、
    サクッとSELECT文を実行したい

いずれにしても、ちょっとサクッとSQLで実行したい時に力を発揮しそうです。

Google Chromeで文字化け!

GoogleChoromにご用心

GoogleChromeだけで発生する文字化けと格闘する昼下がり。
ある特定のページだけで文字化けが発生するのです。
すると有力な記事を発見。

Chrome 文字化けを防ぐ – パソコンのトラブル・Webシステム・ホームページ作成のノウハウ・でじうぃき

それによると、charasetを指定していないとデフォルト設定のshift-jisで読まれてしまうそうです。
ただ、今回発生した文字化けページではcharaset=utf-8になっています。内で文字コードの宣言をしています。

悩むこと30分。
charaset=utf-8が書かれている前にcakephpのdebug()が発動していたことが原因でした。

charaset=utf-8の前に文字列の出力があったもんだから、これは文字コードを指定していないファイルだからshift-jisのデフォルトで読み込もうと認識されたようです。

当然cakephp以外でも、
charasetの前に文字列の出力があったらデフォルトの文字コード設定で読まれてしまいます。

う、う~ん・・・試しに変数を出力するのに、
一番頭でechoするなんてよくありますよね。
cakephpに関してはcontrollerの変数の出力は頭から自動でされてしまいます。

ってことは、Google Chromeはあまり開発環境としてはふさわしくないってことですね。

それか、開発する文字コードに合わせて、
都度Chromeのデフォルト文字コードの設定を変更する必要がありそうです。

今日のまとめ

Choromeはプライベートで使うにはいいけど、開発環境としてのブラウザには向かないってことで。
個人的には早いってだけで大好きなんですけどね。
でも早いってだけならOperaの方が速いんですよね~
アドオンもだいぶ増えてきましたし、Choromeの今後に期待したいです!

cakephp hasmany conditions

modelでhasmany conditions設定

結構悩んで、調べながらなんとか出来たのでメモ。

class Shop extends AppModel
{
var $hasMany = array(
'Girl' => array(
'className' => 'Girl',
'foreignKey' => 'shop_id',
'conditions' => array('Girl.mobile' => 'true'),
),
);
}

これだと必ずShop modelのデータが
‘conditions’ => array(‘Girl.mobile’ => ‘true’)
の条件になる。

Controller内で個別にhasmany conditions

さっきのmodelから’conditions’ => array(‘Girl.mobile’ => ‘true’),を削除して、

function test(){
$con = array('Girl.mobile' => 'true');//条件配列で
	$this->Shop->hasMany['Girl']['conditions']=$con;
}
$post = $this->Post->find('all',$con);

これでやればよし!

今日のまとめ

hasmany conditionsについては応用が利くようにController内で個別にhasmany conditionsってやったほうがいいかも。仮にユーザーが自由に検索する動的なものでも対応できます

Jquery checked判定

form要素のcheckboxがchekedされているかどうかの判定

ちなみに今回はsubmitボタンが押されたときに発動するスクリプト書いていたんでこんな感じに。

is()で取得

$(document).ready(function(){ 

$("form").submit(function () {

if($('#area').children().is(':checked')).children().is(':selected')){
alert("選択されていません。");
$("#area").focus();
return false;
}
else{
return true;
}
});
});

実行結果はこちら

attr()で取得

こちらは、属性を取得するattr()なので、.attr(‘checked’)となっていることに注意してください
$(document).ready(function(){ 

$("form").submit(function () {

if($('#area').children().attr('checked')).children().is(':selected')){
alert("選択されていません。");
$("#area").focus();
return false;
}
else{
return true;
}
});
});

実行結果はこちら

Imagemagick xampp(Windows)インストール完全マニュアル

涙が出ちゃう!だってローカルPC(windows)にImagemagickがインストできちゃったんだもん!

一緒に解決してくれたSさん、本当にどうもありがとうございます。バレンタインなんかあげます。

画像をリサイズしたり、画像を加工したり、文字書いたりDBと連動してグラフ書いたり、はたまたロゴジェネレーター作っちゃったり!

何かと便利ですばらし

い画像加工ライブラリのGDやImagemagickですが、xamppをインストするとGDは入っていますが、Imagemagickは残念ながら入っていません。

ImagemagickをWindowsで動かすにはいくつかのプロセスを踏まないといけません。

WindowsでImageMagickをPHPから使用するための設定
画像処理についてあれこれいより

こちらを参考にさせて頂きましたが、残念ながらこれの通りにやってもいくつか抜けている点がありましたので、完全マニュアルをSさんと一緒に作りましたので、ご覧ください。同じことではまった人の助けになれば幸いです。

Imagemagick xampp(Windows)インストール完全マニュアル

1. ImageMagickをインストールをWindowsにインストします。この時、。Program Files配下などのスペースを含むパスにインストールしないことです。(例:C:\ImageMagick-6.6.7-Q16など)。
私はCの直下に入れました。

2. Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)のインストール
上記URLからダウンロードして、インストール。こちらからまだまだPHPからは使えません

3.PHP環境で使えるようにするため、php_imagickのインストール
以下のURLのMikko’s blogからphp_imagick_dyn-Q16.dllをダウンロード。
http://valokuva.org/?page_id=50
php_imagick_dyn-Q16.dllをPHPのextディレクトリにコピー

【超重要!】
事前にphpinfo()を実行して、自分の環境を確認してください。
Thread Safetyの項目を確認。
enabled→php_imagick.dll, TS
disabled →php_imagick.dll, NTS

それぞれ、Thread Safetyの項目によってインストールするものが違います。これもどはまりしました!

4. php.iniに以下の設定を追加(パスは環境に合わせて変更してください)

【超重要!】
必ず[PECL]の下に書いてください。基本かもしれないけど、これをやらずにはまりました
extension=php_imagick.dll

xamppで使うのであれば、書き換える必要はないけれどextension_dirが以下のようになっていることを確認
extension_dir = “\xampp\php\ext”

5. OSのシステム環境変数にMAGICK_HOMEという環境変数名で
ImageMagickをインストールしたパスを指定。(例:C:/ImageMagick-6.6.7-Q16)
このとき、¥マークじゃないほうがいいよ。
システム環境変数の追加の仕方はこちらが参考になります

Windows 7 にパス(Path)を設定する
Happy my lifeより

最後にWindowsを再起動させて終了です。phpinfo();で確認しましょう!Imagemagicの項目が追加されていたら完了です。

自分のマシンはWin7、社内用ローカルサーバーがWin XPでしたがどちらでも問題ありませんでした。
ちなみにxamppのバージョンは一個古い1.7.2を利用しています。1.7.3でも問題ないとは思いますがね。

私が出会ったとんでもないWEB制作会社(3)

パート2書いてから随分ごぶさたになりましたが、久々の続編です。

大手企業のIT部門にてWebデザイナーに派遣として働いて、トラブルあってその後、次の職場探しをしならが働いていました。

何を思ったか次に私が選んだジャンルは『風俗』業界でした。

それまで正攻法なジャンルのWebデザイナーとして働いてきましたが、正攻法なジャンルなら正攻法で残業多いし、子供がいることにも理解を得られない。それならもう正攻法で勤める理由はどこにもない。サイト作れればなんでもいいし、仕事と割り切ればどんなサイトでも作れると思ったからです

そうと決まれば行動あるのみ。
Webデザイナー募集している風俗店に電話しました。埼玉の、実家からも近い風俗店へ面接へ。

しかし、生まれて初めて風俗の門をくぐると衝撃の連続でした。

『身分証を出してください。』

面接で身分証の提出を求められたのは初めてですが、
とりあえず免許証提出。

『こちらの用紙に記入してお待ちください。』

スキルチェックシートだと思って記入を開始。
住所 氏名 年齢 経験 スリーサイズを書いて。。。

ん?スリーサイズ??

嬢の面接と勘違いされています。

そっちのスキルチェックシートじゃん

そっちのスキルはあいにく持ち合わせておりません。

すいません、自分ウェブデザイナーの面接に来たんですが

『え!す すみません!』

慌ててそっちのスキルチェックシートは没収されました。

応接間に通されてしばし待っていました。その応接間がやたらとヴィトン一色。(ヴィトンのティッシュBOXケースなんて初めて見た・・・)
待つこと10分。加藤鷹を小さくしたようなおっさんが登場しました

『で、千尋は何ができるんだ?』

ん?????? 

いきなり下の名前で呼び捨てです。ダンナにすら久しく下の名前でなんて呼ばれていないのに初対面の小さい加藤鷹みたいなおっさんにいきなり呼び捨てです。

その後もスキルに関する質問をいくつかされましたが、終始『千尋』とひたすら呼び捨てでございました。

今では飲み会の話題にさせていただいていますが、そこの会社の社風がすごいんです。

・観葉植物枯らしたらクビ
・毎日俺の車を洗車しろ

・・・・嫌です。

一応内定はもらったんですが、

すいません、会長。お断りさせて頂きます。

Mysqlの予約語とその回避

今日は朝から超脱力。何度やってもMysqlのSQLがエラーが返ってきます。

INSERT INTO test_table(name,age,title,info_text,release) values (‘名前’,25,’タイトル’,’テキスト’,’2010-11-05′)

これを見て、あなたはパッとこのSQLの何がいけないか理解できますか?フィールドの型の問題とかバージョンの問題ではありません。もっと根本的なことが間違っていました。

正解は・・・

INSERT INTO test_table(name,age,title,info_text,release) values (‘名前’,25,’タイトル’,’テキスト’,’2010-11-05′)

こいつです。releaseはMysqlの予約語だったんです。フィールド名にこの予約語を使うと、フィールド名自体は設定できても、INSERTを実行するときにエラーが出てINSERTできません。

Mysqlの予約語

私はものの見事にMysqlの予約語にはまってしまいました。
以下予約言語一覧です。フィールド名をつけるときは以下の予約名とかぶっていないかよく確認したほうがよさそうです。

Mysql予約後一覧
http://dev.mysql.com/doc/refman/4.1/ja/reserved-words.html

あれ?でもreleaseは予約語としてかかれていない。でもGoogleで
Mysql release 予約語
と検索したら同じような方がたくさんいました。

Mysqlの予約語を使いたいときの回避方法

ここまで書くと、もう予約語自体は使わないほうがよさそうですが、調べてみると、

INSERT INTO table名 (`release`) VALUSE(’hoge’);

バッククオートで囲ってあげると使えるようです。

売り切れじまいメデタ屋のブログより