2011/04/30

WordPress 一覧表示カスタム

■月別表示
基本
wp_get_archives();
2011年4月

後ろに件数出したい
wp_get_archives('show_post_count=true');
2011年4月(1)

詳細→テンプレートタグ/wp get archives

2011/04/28

Cookie と Session ID

・そもそもCookieとはなんぞや
俺の勘に狂いがなければ恐らくカントリーマアムの仲間かなにかだろうと思われる。
仮説の検証としてカントリーマアムを自宅のPCのCDトレイに入れてみたところ、トレイがうまく閉まらない。
どうやらカントリーマアムとCookieとやらは別物らしい。

サーバサイドからクライアントに対して書き込める小さなテキストのこと

サードからブライアントに向けて投げ込んだらテキサスヒットになった?
意味がわからん

どうやらサーバー側からブラウザに情報を書きこめるらしい。
そのブラウザでページを見たときにそのCookie情報がサーバーに渡される
Cookieはブラウザ側に書きこむので、ページを閉じた後もブラウザに残る。
ブラウザ側にあるのでユーザーが中身を変更できる、送信途中に誰かに見られる可能性があるので、セキュリティに関わる情報は載せちゃダメ。

・セッションとはなんぞや
俺の勘に狂いがなければ恐らくセックスの際に使いやすいクッションことだと思われる。
仮説の検証をしたかったが相手が見つからないので断念した。

サーバー側に情報を保存しておく
ブラウザにセッションIDというキー情報だけを渡す。これでユーザーを識別できる。これもヘッダ情報として送信されてくる。
サーバー側に残ってるデータとセッションIDは割印みたいになってるっぽい。形が合致すればデータを使える
セッション情報の保存期間は一般的に数分~数時間


参考ページ
http://thinkit.co.jp/free/article/0604/7/8/
http://www.phppro.jp/school/phpschool/vol8/1

JavaScript高速化 関数呼び出し地獄編

Web+DB Press Vol.58の「JavaScriptの玉手箱」でJavaScriptの高速化に関する記事があった。
※「JavaScript高速化 undefined型判定編」ってのも書きました

■関数
・関数呼び出しのコスト
JavaScriptは関数呼び出しのコストが高い
関数を小分けにし過ぎると呼び出す回数が増えて遅くなるので、ある程度はインラインで書いて、関数呼び出しの回数を減らした方が速くなる

・関数の呼び出し
同じスコープ内にある関数かグローバルな関数は速い
でもグローバルな関数をwindow["hahihuheho"]という書き方で呼ぶとえらく遅くなるらしい。

呼び出し早い順ランキング
1.グローバル関数をwindowを省略して呼ぶ
2.上位スコープの関数を呼び出す
3.ローカル関数を呼び出す
4.グローバル関数をwindow["****"]で呼ぶ

自分的に意外だったのはローカル関数呼ぶより上位の関数呼んだほうが速いってこと。
各ブラウザでのテスト結果も出てたんだけどChrome以外は大きな差があった。

※ローカル関数呼び出し
function func1(){
    fucntion localFunc(){
         return true;
    }

    localFunc();
}
↑よりも↓の方が速い

※上位スコープの関数呼び出し
function func1(){
     scopeFunc();
}
※↓上位スコープにある関数
function scopeFunc(){
    return true;
}

兄弟に相談するよりも、親に聞いた方がいいってイメージで覚えとこう

他にも型判別の高速化に関しても書いてあったので、また今度。



2011/04/27

SymfonyでAjaxからのアクセスのみ許可する

$this->getRequest()->isXmlHttpRequest()
Ajaxでのアクセスだと、返り値がtrueになる。

if($this->getRequest()->isXmlHttpRequest()){
  //Ajaxでのアクセスの場合のみ行う処理
}
こういう風に書けば、Ajax以外のアクセスは何もしないとか404にしてページを表示しないとかできる。


参考
Symfonyドキュメント

Symfonyでテンプレートを使用しない場合の処理

http://blog.studio23c.com/?p=60

return sfView::NONE;



return $this->renderText("Hello, World!");

2011/04/22

ロイヤリティフリーに関して

コリス「商用サイトでも制限無しで利用できる無料の写真素材サイト集」
http://coliss.com/articles/build-websites/operation/design/freebies-photostocks-for-commercial-site.html

商用でも可能なストックフォトサービスのまとめ。
利用可能なストックフォトを仕事で使ったりもするんだけど、正直まだ著作権についてはっきり分かっていない。

ロイヤリティフリーってのも無制限で使えるわけじゃないだろうし。
どういった制限があるのか調べてみないと

Wikipediaで見てみると
ロイヤリティフリー
ロイヤリティフリーとは、事前に取り決められた使用許諾範囲内であれば、知的所有権に関する追加の使用料(ロイヤルティー)の発生が免除されている著作物や技術のこと。
一度画像データを購入してしまえば、そのあとは何度でも使用可能であるというのが一般的に理解されているところであるが、厳密には広告用途での使用に限られているものや、利用者数に制限があるものが多くフリーという言葉から連想される『なんでもあり』というものではない。
だってさ。なんかわかったらまた書こう

2011/04/15

MySQL Not Null制約を解除・カラム名変更など

ALTER TABLE テーブル名 MODIFY COLUMN カラム名 型;
でNOT NULL制約は解除できます

逆にNOT NULL制約をつけたい場合は
ALTER TABLE テーブル名 MODIFY COLUMN カラム名 型 NOT NULL;
です。最後にNOT NULLがついただけ。

カラムの型を調べたい場合は
DESC テーブル名;
で詳細が見れますよ。

カラムの追加は
ALTER TABLE <テーブル名> ADD <古いカラム名> <型情報>;
ADD

カラムの位置を指定して追加したい場合は
ALTER TABLE <テーブル名> ADD <古いカラム名> <型情報> AFTER <指定のカラム名>;
AFTER


カラム名変更は
ALTER TABLE <テーブル名> CHANGE <古いカラム名> <新しいカラム名> <型情報>;
CHANGE!ね。




試したMySQLのバージョンは5.0.77です。

2011/04/13

MySQL ランダムでレコードを取得しながらページング

検索結果をランダムにしたいが、件数が多いためページ分割が必要だっていうケースがあった。


全件をランダムで取得するのは簡単。
ORDER BY RAND()
で終わり。でも、ページを分けるとなるとページを移動するごとに結果がランダムになってしまう。
それだと最後のページまで見ても1回も出てこないレコードや何度も出てくるレコードが存在してしまう。

そういう時はランダムかつ固定
ORDER BY RAND(n);

これでランダムになるんだけど、nの値によって同じ結果になる。わかりづらいね 
1: ORDER BY RAND(1);
2: ORDER BY RAND(1);
上の2つは同じ結果が返ってくる。

3: ORDER BY RAND(2);
だと上の2つとは違う結果。

もっかい
4: ORDER BY RAND(2);
で取得すると上の3番目の結果と同じ結果になる。

セッションにRANDに入れる値を保存して、同じセッションの間は同じ結果が出るようにした。

個人的にはランダムで結果が変わるのは好きじゃないけどね。

参考:http://dev.mysql.com/doc/refman/5.1/ja/mathematical-functions.html

WordPressでユーザー情報を取得する

the_author :: 記事の投稿者名を表示する

get_the_author :: 投稿者の名前を返す


投稿者のいろんなデータを取りたい時はこっち↓
the_author_meta
the_author_meta('nickname') : ニックネーム
the_author_meta('description') :ユーザーの説明文
って感じで使うよ。
 

wp_list_authors :: 著者の一覧を表示。ユーザーが投稿していれば、著者名が投稿へのリンクとして表示される