PHPで翻訳三昧
PHPの基礎体力をPHP化
- 2008-04-16 水 20:31:40
- 今日の基礎体力
「PHPのコンテンツなのにサイトはHTMLじゃん」と言う
もう一人の自分と葛藤を続けること5年、
この13日にPHPベースのサイトに移行しました。
PHP化にあたって考えたことやプログラミング手法など
記事にできそうなことは沢山ありますがこのネタは別の機会に。
いまやってるのは
古いURLへのリクエストを新しいURLにうまくリダイレクトすること。
続きを読む
行儀の悪いUSER_AGENT対策
- 2008-04-11 金 00:37:27
- 今日の基礎体力
Apacheのアクセスログを読んでみると新しい発見がある。
USER_AGENTが YodaoBot
となっているリクエストが目立つ。
検索してみると同じ事を感じてる人が結構いますね。
存在しないページをリクエストしてくる。
同じタイミングで2度同じリクエストをしてくる。
それも結構密なタイミングで。
行儀が悪いというより嫌がらせと言うほうがしっくりくる。
こんなクローラに収集されも良い事はひとつもないので
.htaccess
ではじいてしまおうと思う。
SetEnvIf User-Agent "YodaoBot" badAgent order allow,deny allow from all deny from env=badAgent
DebugBarで快適IEデバッグ
- 2008-03-20 木 23:31:30
- 今日の基礎体力
IE にも Firefox みたいなクライアントのデバッグ用
プラグインがあればいいのにって思ってました。
IE にも一応 IE Developer Toolbar がありましたが
直感的に使い倒すまでには至らず、たま~に使う程度。
メニューが日本語で表示されないし。
1.日本語でメニュー表示可能。
2.個人用途および学術研究用途になら無償で使える。
この2つに惹かれて DebugBar を入れてみました。
ちょうどAjaxでフォームをつくってたところだったので
HTTP(S)でヘッダを確認したところ間違ったリクエスト送信を発見。
リダイレクトされ画面上は正常に見えていたので
この先もずっと気付かなかった可能性が高い。
今のところ試したのはこれだけだけど、
ページのソースやレスポンスヘッダ、Javascriptも含めて
PHP の実行結果を確かめるのがぐっと楽になります。
なにより直感的に操作できるところがいい。
クライアント環境の頼もしいデバッグツールになりそうです。
続きを読む
- コメント: 0
- トラックバック(閉): 0
Landing Page Optimization の一手
- 2007-12-14 金 06:23:19
- PHP
やってた人はすでにやってたことだと思います(実際やってます)が、
いつの頃からか、これが「ランディングページ最適化(LPO)
」という
なんともかっこいい名前で呼ばれるようになってました。
ランディングページとは、ユーザがはじめに訪れるページのこと。
そのページからユーザが求めているページ(情報やサービス)へ
スムーズに誘導するよう最適化するというのが定義らしいです。
このひとつの方法として、
検索キーワードに応じて動的にコンテンツ変えることが考えられます。
ユーザが直前に見ていたページのURLは、
$_SERVER['HTTP_REFERER']
を見るとわかります。
(必ずわかるとは限りませんが)
Yahooの検索結果などから来ると検索キーワードも
これに含まれているので、キーワード(=ユーザの要求)に応じた
コンテンツを動的に配置できます。
1.$_SERVER['HTTP_REFERER']
からキーワードを抽出する。
2.キーワードに合ったコンテンツを配置する。
これだけなら簡単に出来るのでやらないと損です。
てなわけでクラスにまとめてみました。
続きを読む
- コメント: 1
- トラックバック(閉): 0
MocaScript – よく使う機能を関数にまとめた
- 2007-12-03 月 03:35:37
- Peggy
/*********************************************** * 文字列操作 ***********************************************/ /** * 文字列をダブルクォーテーションで囲む * @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); }
- コメント: 0
- トラックバック(閉): 0
プログラミング思考でいこう
- 2007-08-08 水 02:27:37
- 今日の基礎体力
プログラミングそのものに慣れてないころは、よく
「プログラムが思い通りに動いてくれないな~」と思い
些細なことに大変な時間をついやしてしまいがちです。
もし、こんな状況の真っ只中の人がいたら、
今とても重要なことに気づきかけています。
続きを読む
- Ad
- Apache
- MySQL
- PHP
- お気に入り
- ん。。。。。。広告
- アーカイブ
-
- 2018年3月 (2)
- 2017年4月 (1)
- 2015年12月 (1)
- 2015年9月 (1)
- 2014年8月 (1)
- 2013年12月 (1)
- 2013年6月 (1)
- 2013年5月 (1)
- 2012年7月 (2)
- 2012年6月 (1)
- 2012年4月 (1)
- 2012年3月 (2)
- 2011年8月 (1)
- 2011年7月 (1)
- 2010年7月 (1)
- 2010年6月 (2)
- 2010年5月 (1)
- 2010年4月 (3)
- 2010年3月 (2)
- 2010年2月 (1)
- 2010年1月 (1)
- 2009年11月 (1)
- 2009年5月 (3)
- 2009年4月 (5)
- 2009年3月 (8)
- 2009年2月 (2)
- 2008年11月 (1)
- 2008年7月 (1)
- 2008年5月 (3)
- 2008年4月 (4)
- 2008年3月 (1)
- 2007年12月 (2)
- 2007年8月 (1)
- 2007年7月 (4)
- 2007年6月 (4)
- 2007年5月 (2)
- Ad