今日もWEB更新してたら -6ページ目

SEOのウソ

SEO業者は慎重に選べとSEO業者が書いてても信用できません 笑


一度はここに目を通すべきでしょう。

Google の通説と事実

http://www.google.co.jp/webmasters/facts.html

検索エンジン最適化プログラム (Search Engine Optimizer)

http://www.google.co.jp/webmasters/seo.html



SEOって単語に「対策」とか「最適化」って意味が含まれてるわけで。

「SEO対策」っと言われると背筋が凍る違和感を覚えるのですが。


じゃぁGoogleがSEOスパムに対策を打つのはなんて呼べばいいの?

こっちを呼ぶなら「SEO対策」でしょ・・・・


なのでSEO対策とか逝ってる用語使ってる業者は無視した方が良いのかな。

はっきり言って死んでくれと。


GoogleもSEOとSEO対策とSEOスパムと用語使い分けてるので。


「SEOでアクセスアップ対策」

とか上手に用語使ってるサイトは好感持てた。



DB/DataObject/FormBuilder.php

DB/DataObject/FormBuilder.php

をずっと使ってみたかった。

QuickFormを調べてたのもそのためだ。

QuickFormの記事は2chにさらされたトラブルで全部消えちゃったけど。

コツコツまた始めようかと思います。

DB_DataObjectとQuickFormでO/Rマッピングできるんだから

RubyonRailsを無理して使わなくても良いような気が・・・

<?php
require_once("DB/DataObject/FormBuilder.php");
require_once(
"DB/DataObject.php");
require_once(
"Pear.php");
require_once(
"Pya_imgs.php");
$config = parse_ini_file ('page_mysql.ini', true);
foreach (
$config as $class => $values) {
$options = &PEAR::getStaticProperty($class, 'options');
$options = $values;
}

$do =& new DataObjects_Page_imgs();
// Insert "$do->get($some_id);" here to edit an existing object instead of making a new one
$fg =& DB_DataObject_FormBuilder::create($do);
$form =& $fg->getForm();
if (
$form->validate()) {
$form->process(array(&$fg,'processForm'), false);
$form->freeze();
}
$form->display();

このような感じです.

DBの設定ファイルだけでフォームが出てくる。しかも入力値チェック付き。

素晴らしいじゃないか。

フォームはQuickFormで出来てるのでSmartyに仕込んだり、自由に改変が出来る。

素晴らしいじゃないか。

formbuilder


こういうのをフレームワークに組み込んだらRubyonRailsとほぼ同じなるかと。


フレームワーク作ってるひとおねがなします



ポイントはここ

$config = parse_ini_file ('page_mysql.ini', true);
ここでDBのDSNとかを指定する

$do =& new DataObjects_Page_imgs();
ここでテーブルから作ったクラスをインスタンス化する


 

CMSにはWgetが相性がよさそう

CMS作る場面はおおい。


しかし、CMSのデメリットがある。

1.トラフィックの増大によりDBのコネクションを使い切ってしまう。

2.Apacheで処理できるものをわざわざPHP・JSP・ASPで書く人がいる。


そこでPHPではSmartyのキャッシュとかSessionキャッシュとかサポートされてるわけでして。

あとリバースプロキシとか。


でも一番効果的なのは DynamicなページをStaticにすること

.phpで出力されるページをHTMLにすること。


MTなどはその辺がよくわかってるようで。

CGIは重いからHTML化してログに保存してくる。


しかしCGIからCGIの呼び出し&保存を定期実行するのは面倒だ。


そこでwgetが使えるのじゃないかと思う。


wget+corn+Shell(php/perl/ruby)でいけないか?


PHPで閲覧できるページをすべてWgetの構文にまとめる

シェルにWgetを実行させる。HTMLを.htmlで保存する

シェルをCronで定期実行。


リバースプロキシと組み合わせておけば面白いのじゃないかなと思った。


DNSラウンドロビンで複数のサーバーに負荷分散。

複数のサーバーにはApacheだけ。

サーバーのコンテンツはwgetでHTML化してミラーリング

ミラーリングをCornで定期実行


HTMLレンダリング時の負荷をある程度落とせる気がする。


つぎに管理画面の負荷ですが。管理画面もHTML化して問題ないだろう。


LivedoorブログやMTそしてBloggerがやってるように「再構築ボタン」を用意するほうが賢明だろう。

これでHTML化を主体にした負荷分散が出来る気がする。


つーかRSSの自動生成もCornで定期実行の方が良いんじゃないかな。

やってないところもあるようですが。

RSSリーダーにはマナーの悪いリーダーが結構あってLast-ModifedとかE-tagとか無視してRSSのDateエレメントを見てるように思えるリーダーがあった。


RSSは3分毎程度で書き換えておく方が賢明かな。



XOOPSが重いとかで嫌われてる。やっぱPHPは重い。Perlを使い続ける理由もわからなく無い。

HTTPは通信のデファクトに

前々から思っていたが


HTTPでSoftEtherやSOAPそしてSkypeが通信を始めてからHTTPがHyperText・・・から離れた。

TCP/IPに乗っかる通信手段としてPOPやSMTPそしてFTP などなどが存在するわけですが。


最近はなんでもかんでもHTTPで通信できる。それもEnd userが手軽に出来る。


HTTPのポートがセキュリティーホールになる。

しかしHTTPの通信を止めるわけにはいかないわけで。


社内で不要な通信を防ぐためにはHTTPのパケットをのぞくしか方法はなくなる。

しかしHTTPのパケット盗聴が一般化すると、Cookieが盗聴された。など日常になる。


いまはパケット盗聴自体が不正な行為だろう。

しかしHTTPで各種通信を行うとパケット盗聴もやむなし。


そういう局面に遭遇することになる。。。。すると怖い。Cookie盗聴を堂々と出来るわけです。


となるとCookieはセキュアモードにするのが当然の流れになる。

そんな感じで、個人情報を含むSOAP通信をAjaxで行う流れなる気がする。


となると開発環境が欲しくなる。


サーバー管理とユーザーページを一体で開発。

ファイル単位、リクエスト毎に通信モードを自由に設定できる。

そんな便利なソフトないかな。


URLにHTTP/HTTPS埋め込むだけなんだけど。

一括で管理できないとどうも不便だ。







Secure Cookieの話

PHPにおいてもCookieのセキュアモードがサポートされてるわけですが。



セキュアモードのクッキーを利用する場面というのは?


ログイン情報。

決済の画面遷移のおけるSession管理


とくにセッション管理で使うCookieはセキュアにしないとやばいだろうなぁ


銀行やネットトレードなどはセキュアモードのクッキーによるセッションだけをサポートしているが。

ブラウザがパスワードを自動保存するためにクッキーを発行してログイン情報保持していても

全く変わらない気がする。


HTTPSによる通信というのは今後もっともっとスタンダードになるんだろうけど。


暗号化強度の問題というのも存在するわけで。


通信速度の確保のを考えると128bitの暗号化はデメリットがあるんだろうか。

https://s10.kabu.co.jp/_mem_bin/members/login.asp?/members

Kabu.comでは暗号化強度を下げているのだけど。意味があるんだろうか。


そこでHTTPとHTTPSのハイブリッドな通信環境が出現する余地があると思う。


個人情報を含まないImageなどはHTTPで。

個人情報を含むものはAjaxでワンタイム描画。


さらに強化するなら、JavaScriptによる暗号化も可能だろう。



もっともパケット盗聴なんてそうそう頻発するものではないのだろうけど。

hostsファイル書き換えとかプロキシサーバ乗っ取りとかDNS乗っ取りが起きたとき怖いな。


そしてHTTPSサーバの証明書をどうやって管理するか。


結局、大勢で共有する資源の管理手法の問題に行き着く。


DNSサーバーとかプロキシサーバとかルート証明書とか。







iFrameのSRC

JavaScript から iFrame.src にアクセスしてiframeを再描画させることが出来る。


ただ、URIに日本語マルチバイトのエンコードが含まれているとどうもうまくいかない


たとえば、このURI

http://d.hatena.ne.jp/keyword/%a5%bd%a1%bc%a5%b7%a5%e3%a5%eb%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af



javascriptから iframeのSRCにアクセスして、書き換えてやると。。。

このURIが表示される

http://d.hatena.ne.jp/keyword/¥½¡¼¥·¥ã¥ë¥Ö¥Ã¥¯¥Þ¡¼¥ ¯



どうも IE がiframeに渡す前に、unescape処理をして iframe内でふたたびescapeしている気がする



なのでGET 文字列を含む 日本語のurl encodeを扱うときは

src = "http://hoge.com/?+"encodeURIComponent(' 日本語')+ "";

とした方が無難なようだ


ただ、encodeURIComponent は変な動きをするそうである。


UTF-8のBOMの扱いでよくトラブルに遭遇したことがある。

最近は改善されたのだろうか。










form Action=javascript:と書くべきかも

送信ボタンで送信させないで、Scriptから送信許可を出したい。


だけど<input type=button/>は不便だ




やはりFormの送信ボタンが便利だ。

入力中にEnterキーを押せばsubmit()をしてくれる。


ところがこれをやめさせたいときがある


どうするんだろう。google先生に聞いてみたら


onSubmit() = function{ return false;}


すると書いてある。




これはだめなんだよねぇ。警告音が鳴る。





そこで頭を捻ってみる。



BookMarkletが


<A href ="javascript:hoge();"


とHrefを横取りできるんだよね。


じゃぁ同じように




<form action="javascript:hoge()"


が出来ないか考えてみよう。


IE6で出来た。


つまり、onsubmitのhandlerを考えるとややこしいので、

ActionをJavaScriptのエイリアスに付け替えてやればよいのでしょう。

<form action="javascript:hoge()" ... >

<script ...>

function hoge(e){

 if( validate() ){

  //値チェックが正しい値となったら

  e.submit();

  //失敗したらエラーメッセージ

  this.form.hoge.innerHTML= "値が不正";

 }

}

</script>

<input .../>

</form>


こちらはGoogle検索で意外と出てこない。




MSNツールバーのセッション?

ふと思った。


タブブラウザってセッション管理どうなってるんだろう。。


今度調べてみよう。



MSNツールバー便利やん?

Googleツールバーが英語版しかない頃からgoogleツールバーを愛用していましたが。

今日気づいた。(遅すぎだな


MSNツールバーって便利かも。


主な機能

・IEタブブラウザ化

・キーワードハイライト機能

・好きな検索エンジンを選べる



IEタブブラウザ化するだけでも結構便利です。


付け加えて、MSNツールバーなのにMSN以外の検索エンジンを指定できる。


Google

http://www.google.co.jp/search?hl=ja&q=$w&lr=

Yahoo

http://search.yahoo.co.jp/search?p=$w&ei=UTF-8&fr=sfp&fl=0&vc=&x=wrt&meta=vc%3D

などなど


アドレス(URL)で検索語の入る部分を$wに変えてやればよい。

つまり、AmazonでもGooでも何でもよいということ。こいつは便利だ。


ハイライト機能も、キーワードがページのどこに埋まってるかプレビューできる機能がついていて、便利だ。

ページのスナップショット機能というらしい。




m(__)m

2chでご指摘頂きました。。香ばしい記事書いてすいませんでした。m(__)m

PHP5のオブジェクト指向がさっぱり理解出来ず苦しんでいました。

もともとはディープコピーで、値渡しだったものを、
パフォーマンス向上のためと、ああいう仕様になった。のではないでしょうか。

いろいろお騒がせしてすいませんでした。

オブジェクトの参照渡しについてに理解していることを書きます。
間違がありましたらご指導お願いします。m(__)m