ホーム

PHPで翻訳三昧

PHPの基礎体力をPHP化

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

「PHPのコンテンツなのにサイトはHTMLじゃん」と言う
もう一人の自分と葛藤を続けること5年、
この13日にPHPベースのサイトに移行しました。

PHPの基礎体力

PHP化にあたって考えたことやプログラミング手法など
記事にできそうなことは沢山ありますがこのネタは別の機会に。

いまやってるのは
古いURLへのリクエストを新しいURLにうまくリダイレクトすること。
続きを読む

行儀の悪いUSER_AGENT対策

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

Apacheのアクセスログを読んでみると新しい発見がある。
USER_AGENTが YodaoBot となっているリクエストが目立つ。

検索してみると同じ事を感じてる人が結構いますね。

存在しないページをリクエストしてくる。
同じタイミングで2度同じリクエストをしてくる。
それも結構密なタイミングで。
行儀が悪いというより嫌がらせと言うほうがしっくりくる。

こんなクローラに収集されも良い事はひとつもないので
.htaccess ではじいてしまおうと思う。

SetEnvIf User-Agent "YodaoBot" badAgent
order allow,deny
allow from all
deny from env=badAgent

続きを読む

DebugBarで快適IEデバッグ

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

IE にも Firefox みたいなクライアントのデバッグ用
プラグインがあればいいのにって思ってました。
IE にも一応 IE Developer Toolbar がありましたが
直感的に使い倒すまでには至らず、たま~に使う程度。
メニューが日本語で表示されないし。

1.日本語でメニュー表示可能。
2.個人用途および学術研究用途になら無償で使える。

この2つに惹かれて DebugBar を入れてみました。

ちょうどAjaxでフォームをつくってたところだったので
HTTP(S)でヘッダを確認したところ間違ったリクエスト送信を発見。
リダイレクトされ画面上は正常に見えていたので
この先もずっと気付かなかった可能性が高い。

今のところ試したのはこれだけだけど、
ページのソースやレスポンスヘッダ、Javascriptも含めて
PHP の実行結果を確かめるのがぐっと楽になります。
なにより直感的に操作できるところがいい。

クライアント環境の頼もしいデバッグツールになりそうです。
続きを読む

Landing Page Optimization の一手

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

やってた人はすでにやってたことだと思います(実際やってます)が、
いつの頃からか、これが「ランディングページ最適化(LPO)」という
なんともかっこいい名前で呼ばれるようになってました。

ランディングページとは、ユーザがはじめに訪れるページのこと。
そのページからユーザが求めているページ(情報やサービス)へ
スムーズに誘導するよう最適化するというのが定義らしいです。

このひとつの方法として、
検索キーワードに応じて動的にコンテンツ変えることが考えられます。

ユーザが直前に見ていたページのURLは、
$_SERVER['HTTP_REFERER']を見るとわかります。
(必ずわかるとは限りませんが)
Yahooの検索結果などから来ると検索キーワードも
これに含まれているので、キーワード(=ユーザの要求)に応じた
コンテンツを動的に配置できます。

1.$_SERVER['HTTP_REFERER']からキーワードを抽出する。
2.キーワードに合ったコンテンツを配置する。

これだけなら簡単に出来るのでやらないと損です。
てなわけでクラスにまとめてみました。
続きを読む

MocaScript – よく使う機能を関数にまとめた

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

/***********************************************
 * 文字列操作
 ***********************************************/
/**
 * 文字列をダブルクォーテーションで囲む
 * @var    string path
 * @return string
 */
function addQuote ( path ) {
	return '"' + path.replace(/"/g, '""') + '"';
}
/**
 * 文字列両端のダブルクォーテーションを削除する
 * @var     string path
 * @return string
 */
function trimQuote ( path ) {
	return path.replace(/^"??(.*)"??$/, '$1').replace(/""/g, '"');
}
/**
 * 文字列末尾のパスセパレータを削除する
 * @var     string path
 * @return string
 */
function rtrimPath ( path ) {
	return path.replace(/[\s\\\/]+$/, '');
}
/**
 * パス文字列からフォルダ名を取り出す
 * @var     string path
 * @return string foldername
 */
function dirname ( path ) {
	return path.replace(/[\\\/]([^\\\/]+)$/, '');
}
/**
 * パス文字列からファイル名を取り出す
 * @var     string path
 * @return string filename
 */
function basename ( path ) {
	return path.replace(/^.*[\\\/]/, '');
}
/**
 * カンマ区切りの文字列を配列に分解する
 * @var     string line 
 * @return array
 */
function splitcsv ( line ) {
	return line.split(/\s*,\s*/);
}

/***********************************************
 * ファイル&フォルダー操作
 ***********************************************/
/**
 * テンポラリフォルダのパスを得る
 * @return string path
 */
function getTempPath () {
	var path = getenv('TEMP');
	if (!File.isFolder(path))
		path = getenv('TMP');
	return path;
}
/**
 * コマンドプロンプトを開く
 * @var string path
 */
function openShell ( path ) {
	if (File.isFile(path))
		path = dirname(path);
	if (!File.isFolder(path))
		path = getcwd();
	shellExecute('open', 'cmd.exe', null, path);
}
/**
 * フォルダを開く
 * @var string path
 */
function openFolder ( path ) {
	if (File.isFile(path))
		path = dirname(path);
	if (!File.isFolder(path))
		path = getcwd();
	shellExecute('open', path, null, path);
}

/***********************************************
 * Peggy 操作
 ***********************************************/
/**
 * view が開かれていなければ終了する
 */ 
function hasView () {
	if (!view)
		error('ファイルが開かれていません');
}
/**
 * project が開かれていなければ終了する
 */ 
function hasProject () {
	if (!project)
		error('プロジェクトが開かれていません');
}
/**
 * フォーカスのある view または output から
 * 選択中の文字列を獲得する(Peggy ver 4.22以降)
 * @return string
 */
function getSelected () {
	switch (getFocusedWindowType()) {
	case 2:
		for (var n in output) {
			if (output[n].hasFocus())
				return output[n].getSelectedText();
		}
	case 1:
		return view.getSelectedText();
	}
	return '';
}
/**
 *  1行ダイアログを表示して入力された文字列を得る
 *  @var string title   ダイアログのタイトル
 *  @var string init    初期値(省略可)
 *  @var string prompt  接頭文字列(プロンプト)(省略可)
 */
function getInput ( title, init, prompt ) {
	if (!prompt)
		prompt = '>>';
	if (!init)
		init = '';
	var s = inputBox(title, 'パラメータを入力してください', [ prompt, init ]);
	return s[0].trim();
}
/**
 * 編集中のファイル(view)のフォルダを開く
 */
function openViewFolder () {
	hasView();
	openFolder(view.getFilePath());
}

/***********************************************
 * ユーティリティ
 ***********************************************/
/**
 * サービスコンソールを開く
 */
function openServiceConsole () {
	shellExecute('open', 'services.msc', '/s');
}
/**
 * ODBCコンソールを開く
 */
function openOdbcConsole () {
	shellExecute('open', 'odbcad32.exe');
}
/**
 * MocaScriptフォルダを開く
 */
function openMocaFolder () {
	openFolder(getShareFolder() + '\\script');
}
/**
 * URIをブラウズ
 * @var string uri
 */
function browse ( uri ) {
	shellExecute('open', uri);
}

プログラミング思考でいこう

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

プログラミングそのものに慣れてないころは、よく
「プログラムが思い通りに動いてくれないな~」と思い
些細なことに大変な時間をついやしてしまいがちです。

もし、こんな状況の真っ只中の人がいたら、
今とても重要なことに気づきかけています。
続きを読む

1 5 6 7 8 9 10 11 12

ホーム

Ad
Apache
MySQL
PHP
お気に入り
ん。。。。。。広告
アーカイブ
Ad

ページの上部に戻る