Archiveカレンダー
2012 | Feb 09
PDFやZIPのトラッキング
“Google AnalyticsでPDFやZIPのダウンロードでもトラッキング可能にする機能をNichePatchプラグインに追加しました。
相対パス、絶対パスをサイトルートパス("/"から始まるURL)に統一してトラッキングします。
PDFのページ番号指定等のフラグメントは未対応です。
その他、何か不具合等ありましたらコメント欄にお願いします。
使い方
niche-patch.0.95.zipをダウンロード※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。
自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。
制限事項
動作検証はWordPress3.3.1です。
PDF等のGoogle Analyticsトラッキングはフラグメント("#")には今のところ未対応です。
すでにショートコードを利用しているプラグインによっては、正しくショートコードが置換されない場合があります。あまり推奨される対応ではないと思いますが、すでに利用しているプラグイン側でdo_shortcodeの処理を追加することで正しく動作する場合があります。
v0.93の修正機能は別途掲載するPage Category PlusプラグインのWordPress3.0対応とセットで期待する効果を得られるものです。
Gmail仕様は公に保証されたものを利用しているわけではありませんので、2010/07/21現在動作しますが、今後の動作も保証するものではありません。(もちろん極力対応していくつもりですが)
WordPressMUでの動作確認はかなり不充分ですので、その点ご了承ください。WordPress3.0よりMUと統合されていますが、未検証です。
同MUでのメール送信の際の差出人メールアドレスへのマルチドメインは未検証です。(問題なく動いてくれそうですが・・・)
Page/Postスラッグのチェック機能は半角英数のみ許可する or 許可しないのオプションです。
シンプル化のためのオプション値を大幅に見直した都合により、v.0.82以前との当該オプションは互換性がありません。
シンプル化の設定一覧(テーブル)に1行単位に色を変えるスタイルを適用していますが、IEは正しく表示されません。
シンプル化の設定一覧ラベル(権限グループ名)が日本語表示されない場合があります。(日本語表示されているWP2.8.4環境で、Role Managerを無効化&削除しましたが、問題なく日本語表示されていますので、切り分けに至っていません。)
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。※細かい機能ごとのオプション設定は要望があれば検討します。v.0.84でグループ権限ごとに設定できるように対応しました。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
投稿スラッグ/ページスラッグの必須入力オプションは、クイック編集では動作しません。
改修履歴
2012.02.09
PDFやZIPをGoogle Analyticsでトラッキング可能に。
ファイルサイズ表示機能のサイズ取得は当該プラグインを有効化しているサーバから取得のみに変更しました。
このサイト(http://typista.xii.jp/)でJSON返却している機能は間もなく終了します。
ファイルサイズ、アイコン表示の対象データ(拡張子)からJPG、PNGを削除し、MP4を追加しました。
2010.09.07
タイトルや記事中でショートコード[site_name]、[url]を利用可能に。
2010.07.21
Page ...”
| ||||||||
2011 | Jun | Feb | |||||||
2010 | Dec 21
Facebookの「いいね!」をランキング
“かなり手探りですがFacebookのアプリを作りました。
みんなの 「いいね!」ランキングが見れるアプリ「LikeRankingood」です。
なかなか欲しい情報が日本語で見当たらず、
たまたま見つけたブログからMaripoGodaさんが詳しそうだったのでtwitterでイロイロ教えてもらいました。
twitterでのやりとりから、キレイにまとめてくれているので、参考まで。
→ Facebook アプリ作ろうぜ (その7 Like の取得が面倒な件について、あと FQL について)
結局、自分(ユーザ)が「いいね!」を押した情報は、最大で11件しか取得できないようなので、このLikeRankingoodを充実させていくには地道に登録していく(有志の方に登録していただく)ほか無いみたいです・・・
このアプリを作る中で試行錯誤して、graph APIで数値を取る方法は以下。
◆ファンページ取得
https://graph.facebook.com/me/likes?access_token=
◆投稿取得
https://graph.facebook.com/me/posts?access_token=”
09 02 | Nov 11
Facebookのファンページで友達/ファンとそうでない人を判別する方法
“前回、初のtwitterネタでカテゴリも追加したのに続き、Facebookネタです。
ラスベガスのホテルMGMのファンページに、ファンになるとディスカウントクーポンが表示される仕組みがあります。
仕様の限定されたFBML(FBJS)でどうやって実現するんだろうと、かれこれ2時間近く調べた成果!?です。
ファンページの作り方はFacebookのファンページを自由にカスタマイズする方法が詳しいです。
ファンページにFBMLを追加し、下記のように入れるだけ。
<fb:visible-to-connection>
ここは友達/ファンの方の場合に表示されます。
<fb:else>
ここは友達/ファンでない方の場合に表示されます。
</fb:else>
</fb:visible-to-connection>
ここに行き着くのに、ちょっと独特なFBJS作法を調べたり道草くってしまいました。
◆参考
fb:visible-to-connection
fb:else
というわけで、「いいね!」ボタンもプラグインで追加しましたよ。
jQueryもFBML(というかFBJS)で使えるものを見つけたぞ!
→ Facebook ファンページで JQuery を使いたい”
| Oct 13
twitterをチャンネル表示
“ベリィライトコーディングでツイッターのIDごとのTLをTV欄のように並べるサンプル作ったよ。名づけて「twitter tv」。
iPhoneで問題なく動いたので、公開してみます。
↓の「?」以降にIDをカンマ区切りで並べてください。
http://typista.xii.jp/test/twitter/tv/channel.html?typista,masason,takapon_jp,taguchi,dankogai,kogure,kotoripiyopiyo,taromatsumura,twj,twit2mixi”
| Sep 08
DB(MySQL)を一発ダンプするバッチファイル&シェルスクリプト
“XAMPPで公開環境から開発環境を構築(コピー)するときや、その逆(マイグレーション)をする労力を軽減するために、MySQLのDBをダンプするバッチファイル(DOS)とシェルスクリプトです。
プロンプトでパスワード入力だけ求められます(--password=で指定も可能です)が、実行したタイミングのタイムスタンプ(YYYYMMDDHHIISS形式)をダンプしたファイル名に付与しますので、逐一リネームする手間も不要です。
1~4行目は適宜、環境に合わせた内容に変更してください。
SET TARGET=db_name
SET HOSTNAME=host_name
SET USERNAME=user_name
SET EXT=txt
mysqldump --opt -Q --host=%HOSTNAME% --user=%USERNAME% -p %TARGET% > %TARGET%.%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.%EXT%
#!/bin/sh
TARGET=db_name
HOSTNAME=host_name
USERNAME=user_name
EXT=txt
TODAY=`date +%Y%m%d%H%M%S`
mysqldump --default-character-set=utf8 ...”
07
タイトルにもショートコードを使おう
“WordPressをCMSとして構築する際に、よりポータブルな実装を目指して、WordPressの設定(ダッシュボードの「設定」→「一般」の「サイトのタイトル」や「URL」)を変更するのみで、本文中やタイトルのサイト名、URL表記にも反映される機能(ショートコード)を追加しました。
何か不具合等ありましたらコメント欄にお願いします。
オプションでこの設定を有効な場合、[site_name]、[url]という記述を見つけると、置換します。
※上記は、便宜上、ブラケット""を全角表記していますが、実際には半角のものを利用してください。
使い方
niche-patch.0.94.zipをダウンロード※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。
自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。
制限事項
動作検証はWordPress3.0.1です。
すでにショートコードを利用しているプラグインによっては、正しくショートコードが置換されない場合があります。あまり推奨される対応ではないと思いますが、すでに利用しているプラグイン側でdo_shortcodeの処理を追加することで正しく動作する場合があります。
v0.93の修正機能は別途掲載するPage Category PlusプラグインのWordPress3.0対応とセットで期待する効果を得られるものです。
Gmail仕様は公に保証されたものを利用しているわけではありませんので、2010/07/21現在動作しますが、今後の動作も保証するものではありません。(もちろん極力対応していくつもりですが)
WordPressMUでの動作確認はかなり不充分ですので、その点ご了承ください。WordPress3.0よりMUと統合されていますが、未検証です。
同MUでのメール送信の際の差出人メールアドレスへのマルチドメインは未検証です。(問題なく動いてくれそうですが・・・)
Page/Postスラッグのチェック機能は半角英数のみ許可する or 許可しないのオプションです。
シンプル化のためのオプション値を大幅に見直した都合により、v.0.82以前との当該オプションは互換性がありません。
シンプル化の設定一覧(テーブル)に1行単位に色を変えるスタイルを適用していますが、IEは正しく表示されません。
シンプル化の設定一覧ラベル(権限グループ名)が日本語表示されない場合があります。(日本語表示されているWP2.8.4環境で、Role Managerを無効化&削除しましたが、問題なく日本語表示されていますので、切り分けに至っていません。)
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。※細かい機能ごとのオプション設定は要望があれば検討します。v.0.84でグループ権限ごとに設定できるように対応しました。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
投稿スラッグ/ページスラッグの必須入力オプションは、クイック編集では動作しません。
改修履歴
2010.09.07
タイトルや記事中でショートコード[site_name]、[url]を利用可能に。
2010.07.21
Page Category Plusプラグインが有効の場合にのみ、ページのカテゴリ未選択の警告オプションを有効とする対応
ダッシュボードの投稿/ページ編集モードの判別方法のWordPress3.0対応
2010.07.13
WordPress3.0のCMS簡易表示機能でダッシュボード体裁崩れの対策
2009.12.15
WordPress2.9と「スラッグ入力」オプションの競合不具合対策
2009.12.14
Gmail受信(連携)機能を追加
2009.10.22
NichePatchプラグインのオプション値授受方法をPOSTからGETに変更
2009.09.25
予約投稿失敗への回避(あくまでサーバ側で自身への名前解決できない場合への対処です)
メール投稿失敗への回避(同上)
投稿スラッグ/ページスラッグ必須入力の場合の利用可能文字種にハイフンを追加しました。
2009.09.17
MU対応の一環で、WordPressからメール送信する際の差出人メールアドレスに変数%mydomain%を利用可能にしました。(これにより、MUの各ユーザをサブドメイン運用していた場合に、@以降にサブドメインが適用されます。)
タグクラウド出力順を任意に制御できる機能を追加しました。この機能はあまり露出しないラグ用スラッグ名でソートする機能のため、「01-tagslug」「02-tagslug」のようにすることで、制御可能です。(01-などはパーマリンク設定によってはURLに露出する場合があります。)
pluginsディレクトリ、themesディレクトリを隠蔽する機能(v.0.50実装済み)はWordPress2.8以降は不要なのでバージョンチェックにより無効化するように対処しました。
2009.08.28
ダッシュボード左上のロゴを任意素材に差し替え可能なように対応しました。
ページスラッグやポストスラッグ未入力 ...”
| Jul 21
Page Category PlusプラグインのWordPress3.0対応
“Page Category Plus プラグインのチェックとWordPress3.0対応その2で書いたとおり、ページにカテゴリ分類を追加することが可能なプラグイン(私のCMS化プロジェクトでは必須)にWordPress3.0対応が必要だっため、その修正版を以下にアップロードしておきました。
page-category-plus.2.2b.zip
現在は公開停止しているのか、サポートURLが見つからず、手元に残っている最新版のVer.2.2をベースにしています。
→ 今回Ver.2.2bとしました。
相応の動作確認はしていますが、WordPress3.0対応そのものが場当たりなので、もし不具合などありましたら、何らかの手がかりと一緒にご報告いただければ、極力調査もするつもりです。”
Page Category PlusプラグインのチェックとWordPress3.0対応その2
“ページ(post_type='page')をカテゴリ分類可能とするプラグインPast Category Plusを導入しているときに、カテゴリを選択していないと警告を出すという、これまたニッチな機能がNichePatchプラグインにはありますが、つい先日three-eyeさんからコメント欄で指摘をいただきまして、警告(JavaScriptのAlert)を「NichePatch」が出していることを明示する修正と、そもそもPage Category Plusプラグインが有効でない場合は当該オプションを無効にする処理を追加しました。
あわせて、このニッチ機能周辺でダッシュボードで投稿/ページ編集(新規作成)中かを判断するロジックが、WordPress3.0用に修正する必要があったため、対応しています。
※この修正はNichePatchのほかの機能にも影響しますので、Page Category Plusを導入していない場合でも、WordPress3.0をご利用の方はアップデートしてください。
何か不具合等ありましたらコメント欄にお願いします。
また、ついでにPage Category Plus(今は公開されていないのでしょうか?)自体もWordPress3.0対応が必要でしたので、機械的な修正で少し不安は残りますが、とりあえず動作するようになったものを別途記事で公開するようにします。ちなみに、PageCategoryPlusにこれら修正を反映しないと、次のような致命的な不具合が発生します。
ダッシュボードの「投稿ウィジェット」メニューに「カテゴリー」が表示されない
投稿/ページ編集ともに「カテゴリーウィジェット」が表示されない
使い方
niche-patch.0.93.zipをダウンロード※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
★今回はダウンロード→解凍までちゃんと確認しました!
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。
自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。
制限事項
動作検証は最新WordPress3.0です。
今回の修正機能は別途掲載するPage Category ...”
13
ニッチなパッチプラグイン→WordPress3.0対応
“WordPress3.0にて、CMS簡易表示機能の不具合を解消したバージョンです。
その他の動作検証はほとんどできていませんので、何かありましたらコメント欄にお願いします。
不具合内容は、次のとおりです。
ダッシュボードの「現在の状況」ウィジェットの体裁崩れ
ダッシュボード右上のヘルプを展開したときに独自ドキュメントリンク(/help)が展開されない
使い方
niche-patch.0.92.zipをダウンロード※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。
自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。
制限事項
動作検証は最新WordPress3.0とWordPress2.9.1です。
Gmail仕様は公に保証されたものを利用しているわけではありませんので、2010/07/13現在動作しますが、今後の動作も保証するものではありません。(もちろん極力対応していくつもりですが)
WordPressMUでの動作確認はかなり不充分ですので、その点ご了承ください。WordPress3.0よりMUと統合されていますが、未検証です。
同MUでのメール送信の際の差出人メールアドレスへのマルチドメインは未検証です。(問題なく動いてくれそうですが・・・)
Page/Postスラッグのチェック機能は半角英数のみ許可する or 許可しないのオプションです。
シンプル化のためのオプション値を大幅に見直した都合により、v.0.82以前との当該オプションは互換性がありません。
シンプル化の設定一覧(テーブル)に1行単位に色を変えるスタイルを適用していますが、IEは正しく表示されません。
シンプル化の設定一覧ラベル(権限グループ名)が日本語表示されない場合があります。(日本語表示されているWP2.8.4環境で、Role Managerを無効化&削除しましたが、問題なく日本語表示されていますので、切り分けに至っていません。)
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。※細かい機能ごとのオプション設定は要望があれば検討します。v.0.84でグループ権限ごとに設定できるように対応しました。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
投稿スラッグ/ページスラッグの必須入力オプションは、クイック編集では動作しません。
改修履歴
2010.07.13
WordPress3.0のCMS簡易表示機能でダッシュボード体裁崩れの対策
2009.12.15
WordPress2.9と「スラッグ入力」オプションの競合不具合対策
2009.12.14
Gmail受信(連携)機能を追加
2009.10.22
NichePatchプラグインのオプション値授受方法をPOSTからGETに変更
2009.09.25
予約投稿失敗への回避(あくまでサーバ側で自身への名前解決できない場合への対処です)
メール投稿失敗への回避(同上)
投稿スラッグ/ページスラッグ必須入力の場合の利用可能文字種にハイフンを追加しました。
2009.09.17
MU対応の一環で、WordPressからメール送信する際の差出人メールアドレスに変数%mydomain%を利用可能にしました。(これにより、MUの各ユーザをサブドメイン運用していた場合に、@以降にサブドメインが適用されます。)
タグクラウド出力順を任意に制御できる機能を追加しました。この機能はあまり露出しないラグ用スラッグ名でソートする機能のため、「01-tagslug」「02-tagslug」のようにすることで、制御可能です。(01-などはパーマリンク設定によってはURLに露出する場合があります。)
pluginsディレクトリ、themesディレクトリを隠蔽する機能(v.0.50実装済み)はWordPress2.8以降は不要なのでバージョンチェックにより無効化するように対処しました。
2009.08.28
ダッシュボード左上のロゴを任意素材に差し替え可能なように対応しました。
ページスラッグやポストスラッグ未入力 or 半角英数以外の場合に更新できないチェック機能を追加。
2009.08.26
開発環境を識別するラベルをブラウザ最上部に固定するように変更しました。
シンプル化設定テーブルで、「管理者」(Administrators)グループは「ツール」「設定」を消せない仕様に変更しました。(Niche Patchを無効化しないと設定変更できなくなってしまいますので)
(リンク)ファイルサイズのJSON取得先サーバを自前に変更しました。
2009.08.15
シンプル化設定テーブルの色分け用CSSの衝突不具合回避
2009.08.14
ファイルサイズ出力機能のIE不具合対応
ダッシュボードシンプル化の詳細オプション対応
2009.06.18
たびたびの検証不足でファイルサイズ出力機能を動作させるためのjQuery読み込みが抜けていました。 (正確にはv.0.80でソースリファクタリングしたときの弊害)
2009.06.17
検証不足で不必要な箇所にmetaタグ出力があったため改修 ...”
| Feb 23
WordPressのポータビリティを高める方法
“これまで紹介してきた本番ドメインで動くローカル環境をXAMMPで構築していくのとは反対に、同一サーバ上で別ドメイン(サブドメインとか)で、WordPressでテストサイトを構築する方法が、かねてからの懸案だったんですが、ようやくたどり着きました。
違いを整理しておくと。
【これまでの方法】本番ドメインで動く(ローカル環境)
XAMPPとFireFoxアドオンの設定により、
http://typista.xii.jp/
をローカルPC上だけで稼動させることが可能です。
メリット WordPress一式とDBをそのまま本番サーバに移行可能。
デメリット 動作が重い(PCスペックにもよる)、ダッシュボードやソース修正などの作業でどちらを触っているか、混乱する危険性がある。
【今回の方法】別ドメインで動くテストサイト(同一サーバ環境)
http://test.typista.xii.jp/
を本番と同一サーバ上で、かつ同じDB(tableも)で稼動させることが可能です。
メリット WordPressのDBに関連しなければ、本番サイトを運用しながら併行改修が可能。
デメリット ダッシュボード操作や記事投稿/編集、ユーザ追加や編集などのWordPressのDBを書き換える操作はすべて本番サイトにも反映されてしまうので、注意が必要。
となります。
◆修正箇所
wp-config.phpに、以下を追加。このWP_SITEURLやWP_HOMEは、DBの値より優先されるということなので、Apacheの設定でServerNameが定義されていれば、http://typista.xii.jp/ でも http://test.typista.xii.jp/ でも動作します。
もし、NGな場合、あまり推奨されないようですが、$_SERVERに変更してください。
define('WP_SITEURL', 'http://' . $_SERVER );
define('WP_HOME', 'http://' ...”
| Jan 07
Apacheのログからアクセス元IPとアクセス数をcsv出力
“Apacheのログからアクセス元IPをユニークに抽出するワンライナーシェルの応用で、アクセス数をカンマ区切りcsv出力するシェルです。
uniq_ip_count.sh
#!/bin/sh
ACCESSLOG=; IPLIST=`cat access_log_20100105 | awk '{print $1}' | sort | uniq` && for TARGET in ...”
06
Apacheのログからアクセス元IPをユニークに抽出するワンライナーシェル
“ほとんどWordPressの、しかも自作プラグインNichePatchの記事ばかりですが、未だにアクセスの多いshell系も気まぐれに更新していこうかと思います。
思いつくところでは、Apacheのアクセスログ(フォーマットはデフォルト設定)から、アクセス元IPアドレスをユニークに抽出するワンライナー。
$ cat | awk '{print $1}' | sort | uniq
※WordPressが勝手にシングルクォート等を全角に変換してしまうようなので、注意してください。(昔からですね。NichePatchで対応か?う~ん。)
※を該当のアクセスログファイル名に変更してください。
こういう場合ってcatが良いのか正直よくわかっていません。(昔あまりよくないように聞いた記憶はありますが・・・)
”
| ||
2009 | Dec 25
ニッチなパッチプラグイン→WordPress2.9対応
“以下の条件で発生していた不具合を解消したバージョンです。
不具合をご報告いただきましたmasaさんとvoidさんに感謝いたします。
WordPress2.9
このNichePatchの「ページスラッグ」入力可能オプションをON
不具合内容は、次のとおりです。
ダッシュボードの新規投稿(postおよびpage)で「画像アップロード」等のThickBoxを使った機能が動作しない
...”
14 | Oct 22
GETパラメータの文字数制限回避
“NichePatchプラグインでは、オプション変更時に値をGETで受け渡ししていました。
ところが、ダッシュボードのシンプル化機能で、権限グループが多いケースで発覚しましたが、GETパラメータの文字列長があまりに長くなってしまい、設定変更できない(しにくい)不都合があることがわかりましたので、取り急ぎの修正版(POSTに変更)をアップしました。
本当は、このシンプル化機能で権限グループが多い場合を考慮して、チェックボックスの一括ON/OFFも検討したいのですが・・・
使い方
niche-patch.0.89.zipをダウンロード
※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
プラグインディレクトリに解凍
...”
01 | Sep | Aug | Jun 17
リンクファイルの形式に合わせたアイコンとファイルサイズを表示するプラグイン
“最近のCSSはどんどんプログラム化していく傾向にあるようです。
CSSからさらにCSSをimportするだけでなく、メタ表現によるスタイル適用も可能なようで、ハイパーリンクURLのファイル形式にあわせたアイコン表示が可能な情報を知り、NichePatchに取り入れました。
ついでなので、今回はファイルサイズを取得するjQueryプラグインも一緒に同梱しています。
その他、Webに公開されていないXAMPPの超便利な使い方 ~1/2~の良さを評価いただいたチャロさんからのバグ報告と、リクエスト(一部)も盛り込んでいます。
使い方
niche-patch.0.82.zipをダウンロード
※最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
参考URL
ファイルサイズをJavaScriptライブラリ「jQuery」で自動表示する「addSizes.js」
http://www.skuare.net/2008/10/javascriptjqueryaddsizesjs.html
任意のファイルのファイルサイズを取得する
http://www.openspc2.org/JavaScript/library/etc/filesize/index.html
jQueryを使ったPDFアイコン付加プラグイン
http://www.nk0206.com/life/2009/03/jquerypdf.html
CSSでPDFやExcel等のファイルタイプ別アイコンを自動付与
http://phpspot.org/blog/archives/2007/01/csspdfexcel.html
PDFやExcel、Wordなどのフリーアイコン素材
http://www.css-lecture.com/log/web-design/037.html
制限事項
動作検証はWordPress2.7.1でのみです。(今後明示的に2.7以降のサポートに切り替えていく予定です。)
v.0.80でホスト名の識別により「LOCAL SERVER」として認識する仕様を追加しました。
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。※細かい機能ごとのオプション設定は要望があれば検討します。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。今回(v.0.80)のバグ改修との関連を当初懸念し、一応addEvent(リスナー登録方式)に変更しました。(チェックNGの場合のPOST処理は何も考えることなく動作しているようです。)
改修履歴
2009.06.18
たびたびの検証不足でファイルサイズ出力機能を動作させるためのjQuery読み込みが抜けていました。
(正確にはv.0.80でソースリファクタリングしたときの弊害)
2009.06.17
検証不足で不必要な箇所にmetaタグ出力があったため改修
(XTHML ValidなWordPressを汚さないように・・・)
2009.06.17
開発環境判定でホスト名設定な機能を追加
リンクファイルの形式に合わせたアイコン表示機能を追加
リンクファイルのファイルサイズを表示する機能を追加
開発環境判定ONかつ開発環境動作の場合に、投稿ページで「カテゴリ追加」が動作しない不具合の改修
window.onloadハンドラからリスナー方式に変更
2009.02.07
開発環境判定機能をリリース
2009.02.04
ログイン画面へのHTTP Digest認証機能をリリース
v.0.58リリースのCMSシンプル化機能で、権限グループによっては、意図せずダッシュボードメニューの「設定」が表示されてしまっていたので、非表示の対応
2009.01.28
CMS運用のための+1のシンプル機能リリース
サーバ(PHPバージョン or 設定?)によってはCMSシンプル化機能が動作しなかった不具合(strposの問題?)の修正
2009.01.27
CMS運用のための13のシンプル機能リリース
ページの場合に「カテゴリチェック無し」 or 「未選択のみ」が不正に動作していた不具合の修正※Page Category Plus(v.2.2で検証)を利用している場合に、当該オプションがONであれば正しく動作します。
2009.01.15
WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)
2009.01.10
ページの表示順操作の対応
テーマディレクトリを隠蔽するためにindex.html生成機能追加
今後の対応
開発環境の識別条件をもうすこしフレキシブルに設定可能にするよう考えています。また、「LOCAL ...”
| May 02
スラッグ関連の超メモ9
“非推奨のAPIが含まれるかも知れませんが、テンプレート側で少し高度な制御をしたい場合の参考情報です。WordPress2.7.1で確認しています。
(1)現在ページのページID
$page_id
(2)ページID指定で、スラッグ名取得
(パーマリンクの設定の関係で、スラッグ名が取得できる場合があるだけで、本来はURI取得と思われる)
get_page_uri( $page_id );
(3)スラッグからページタイトルを表示
$page = get_page_by_path ('slug');
echo $page->post_content;
(4)スラッグからページ本文を表示
$page = get_page_by_path ('slug');
setup_postdata($page);
the_content();
(5)カテゴリスラッグからカテゴリID取得
$cat = get_category_by_slug( 'news' );
...”
| Apr | Feb 07
開発/本番環境を区別するプラグイン
“前回~前々回と開発環境/本番環境のURLをあわせる方法を紹介しました。
<参照>
Webに公開されていないXAMPPの超便利な使い方 ~1/2~
Webに公開されていないXAMPPの超便利な使い方 ~2/2~
これで移行の手間が省けるケースが多いと思いますが、リニューアルのための新規構築時はまだ良いとして、その後の追加開発に突入すると、URLも同じだけに、今(本番 or 開発環境の)どちらのサイトを見ているかわからなくなってしまうとか、DB(管理画面操作)やソース修正しているのに、ブラウザで反映されないと思ったら、別のほうを見ていたなんてことが起こります。
もっぱら、開発&本番の両方のサイトをIEとFireFoxやSleipnirやLunaScape、Google Chromeといった複数ブラウザ×複数タブで見ながら、かつその間に調べたページも、プライベートのメールや調べもの e.t.c.
ブラウザがフィーバーしてる人ってたくさんいるんじゃないでしょうか(^^;
こんなことを解決するための機能をWordPressプラグインのNichePatchに組み込みました。
開発環境をブラウジングしているときは、画面上段に「LOCAL SERVER」の文字と背景が点滅します。(工事中のイメージです)
テクスチャはオレンジ、緑、グレーの3パターン用意しました。
ちなみにこの手の課題も、その対処もWordPress特有のものではないので、他でも充分に応用は効くと思います。
使い方
niche-patch.0.70.zipをダウンロード(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
動作検証はWordPress2.7でのみです。(今後明示的に2.7以降のサポートに切り替えていく予定です。)
v.0.70ではサーバIPが127.0.0.1の場合にのみ「LOCAL SERVER」として認識する仕様です。
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。※細かい機能ごとのオプション設定は要望があれば検討します。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2009.02.07
開発環境判定機能をリリース
2009.02.04
ログイン画面へのHTTP ...”
06
Webに公開されていないXAMPPの超便利な使い方 ~2/2~
“XAMPPを開発で利用するとき、実際のURLで本番⇔開発環境を手軽に切り替え可能な方法について、具体的な設定方法を公開します。
CAUTION!!!
この方法を導入すると、開発フェーズによってはURLが同じだけに、ブラジングしている環境(本番 or 開発)を間違える可能性が高くなります。
ご注意ください。
ちなみに、WordPress用プラグインのNichePatchでは次回v.0.70リリースでこのあたりを、ちょっぴり気持ちよく(と思っているのは本人だけかもしれない)解決しています。お楽しみに。
この方法の概要やメリット・デメリットはWebに公開されていないXAMPPの超便利な使い方 ~1/2~を参照。
0.前提事項
すでにXAMPPがインストール済みで、問題なく動作していること。
※XAMPPのインストール方法はhttp://phpspot.net/php/pgXAMPP.htmlが良いと思います。
XAMPPおよびアクセスするクライアント(ブラウザ)は、自PCのみか、イントラ内の場合は、XAMPPを立てるPCが固定IPであることとします。
(XAMPPを立てるPCのIPアドレスがDHCP割り当てだと、当然ですがクライアント側はProxy設定を都度変更する必要があります。)
また、XAMPPはWindows版のv.1.7.0とします。
v.1.7.2でも確認済みですが、php.iniのデフォルト変更があったようなので、もし既存スクリプトでPHPエラーが発生する場合、XAMPP 1.7.2のデフォルト値変更で気をつける点を確認してみてください。
ちなみに、このサイトで公開しているNiche Patchでは、デフォルト値変更で不具合が出るので、設定変更が必要です。
なお、以下についても、v.1.7.2ベースで多少リライトしています
1.Apache Proxy
httpd.confでApache Proxyを立てる設定を追加します。
ここでは、例としてこのサイト(http://typista.xii.jp/)をC:\xampp\htdocs\typista\で動作させるものとして記述しますので、適宜読み替えてください。
また、ダブルクォート等がWordPressの機能で勝手に全角に変換されてしまっているので、充分注意してください。
(1)Proxy関連モジュールのLoadModuleをコメント化解除(デフォルトの112~116行目付近)
※Apacheは詳しくないので必要そうなもの(かつv.1.6.0ではProxy系モジュールすべてをL0adしても問題なかったがv.1.7.0ではこれ以外のものをLoadするとApacheがコケるので最低限・・・XAMPPがVistaだったからかもしれませんが)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module ...”
05
Webに公開されていないXAMPPの超便利な使い方 ~1/2~
“XAMPPを開発で利用するとき、実際のURLで本番⇔開発環境を手軽に切り替え可能で、テスト環境として納品するにも手ごろな方法です。
試していませんが、FireFoxに限っていえばMac(Linuxも)でも問題ない方法だと思います。
hostsファイルの編集でもちろん可能ですが、平凡すぎますし、何より「本番⇔開発環境」切り替えに逐一ファイルを編集するのは億劫です。
その方法とは?
XAMPPの開発環境が本番URLで動くように設定(Apache)するのは当然ですが、Proxyも立てるんです。
「な~んだ」とガッカリさせてしまったらごめんなさい。
といってもXAMPPのApache Proxyです。
さらに、ブラウザからProxyを簡単に切り替え可能なアプリをインストール&設定すると、実際のURLで開発環境を動作させることが可能です。
すでに私はその恩恵に授かっている、その具体的な方法はWebに公開されていないXAMPPの超便利な使い方 ~2/2~に書きましたので、ここではメリットとデメリットをまとめておきます。
メリット
hostsファイルの編集から開放される
Windowsのユーザ権限によっては(Administrator以外?)hostsファイルの編集すら不可能なので、このメリットは一石二鳥です!
FQDN(URL)をDB等に保持するCMSなどの開発ではDBダンプ→そのままインポートという荒業も可能!?
※もちろん主にApache、MySQLバージョン等の本番サーバとXAMPP差異によっては通用しないことはありますよ!
デメリット
まったく同じURLなので区別がつかなくなる恐れも
→ これについてはWordPress用にNiche Patchで対応中です。(こちらも近日公開)のv.0.70で対応しました。
※仕組み的にはPHP等が動けばWordPressでなくともOKなものです。
XAMPP(Apacheですね)設定が甘いためIEの場合にProxy参照モードのときは他サイトが閲覧できなくなる→ FireFoxはProxy参照のためのホワイトリスト形式が使えるので問題ないです。
※IE用も近しいものがあったらどなたか教えてください。
”
04
WordPressプラグインでHTTP Digest認証
“フォーラムの書き込みで、HTTP Basic認証は見つけたものの、HTTP Digest認証(あまり強度が高いとはいえませんが)は見当たらなかったのでNiche Patchに機能追加しました。
何かと気分の問題のように思えますが、ログイン画面へのアクセスをHTTP Digest認証(ApacheがCGIモードでないことが条件)します。
※流用元ソースは、Googleで「PHP Basic認証」などで検索するとヒットするPHP Manualです。
使い方
niche-patch.0.60.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
動作検証はWordPress2.7でのみです。(今後明示的に2.7以降のサポートに切り替えていく予定です。)
ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。
※細かい機能ごとのオプション設定は要望があれば検討します。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2009.02.04
ログイン画面へのHTTP Digest認証機能をリリース
v.0.58リリースのCMSシンプル化機能で、権限グループによっては、意図せずダッシュボードメニューの「設定」が表示されてしまっていたので、非表示の対応
2009.01.28
CMS運用のための+1のシンプル機能リリース
サーバ(PHPバージョン or ...”
| Jan 28
CMS運用のための13+1のシンプル化機能&バグ修正
“昨日リリースしたCMS運用のための13のシンプル化機能について早速バグが見つかってしまいました。
もともと管理画面モードの判定は甘かったので、もっと良い対処方法がありそうですが、取り急ぎの追加機能とともにv.0.59をリリースしました。
そのほか、わかりずらい箇所やバグ等ありましたら、ご指摘いただけますと幸いです。
13+1のシンプル化機能解説
メールヘッダ(From)を任意に書き換え可能
[解説]パスワードを忘れた場合のリマインド機能等で送信されるメールの差出人欄がデフォルトだとwordpress@~になってしまうので、そこを任意に変更可能としました。
プロフィール編集をパスワード変更のみに限定
CMS運用ユーザは不特定多数を想定していません。またSNS的な機能も冗長ではないかと考えているのでパスワードのみ変更可能としました。(jQueryで無理やり非表示にしているので、一瞬見えてしまう点はご了承ください。)
ダッシュボード左上のWordPressロゴを隠す
ゆくゆくはロゴを指定できるように考えています。
ダッシュボード左上のタイトルをすべて表示
デフォルトは30文字でカットされてしまうので、すべて表示するように対応しました。
ダッシュボードのフッターを隠す
ロゴ等も同様ですが、WordPressがベースであること、WordPressフォーラム等へのリンクを削除しました。
ダッシュボードの「ヘルプ」タブから「ドキュメント」リンクを削除
CMSとして運用するためのマニュアルを作って、リンクを貼っておきましょう。
ダッシュボードトップに「現在の状況」ウィジェットのみを表示
本来は便利なウィジェットですが、CMS運用担当者にはコンテンツ更新に専念してもらうために不要と判断し、削除しています。
同ウィジェット下部で表示される「テーマで使用中のウィジェット」「WordPress」バージョンの表示を削除
かなり細かい箇所ですが「現在の状況」ウィジェットの下のほうに記載されているリンクや情報を削除しました。
表示オプションタブを削除
ダッシュボードトップや投稿、ページの編集画面右上にある「表示オプション」タブを非表示にしました。さらに細かいですが投稿、ページの編集画面では「カスタムフィールド」等の高度な情報(ウェジェット?)も削除しています。
投稿/ページ/メディアの一覧で「コメント」列を削除
前提として触れていませんが、コメントやトラックバックは現状では不要の方向です。(そこにブログツールを流用する意味があるか・・・ちょっと思案中です。)
ダッシュボードメニューの「コメント」も削除
WordPress2.7から左袖に移動し、一部リファクタリングされたメニューの「コメント」を削除しています。
ダッシュボードメニューの「ツール」も削除
同様に左袖メニューの「ツール」も削除しています。
ダッシュボードメニューの順番入れ替え(投稿→ページ→メディアの順)
上記のメニューを削除していくと、デフォルトの名残として「投稿」→「メディア」→「ページ」の並び順になってしまいますので、「メディア」を1番下に移動しました。
トラックバック送信、ピンバック送信の無効化
ディスカッション設定等で回避可能なので不要かも知れません。(今後廃止する可能性もあります。)
使い方
niche-patch.0.59.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
動作検証はWordPress2.7でのみです。(今後明示的に2.7以降のサポートに切り替えていく予定です。)
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。
※細かい機能ごとのオプション設定は要望があれば検討します。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2009.01.28
CMS運用のための+1のシンプル機能リリース
サーバ(PHPバージョン or 設定?)によってはCMSシンプル化機能が動作しなかった不具合(strposの問題?)の修正
2009.01.27
CMS運用のための13のシンプル機能リリース
ページの場合に「カテゴリチェック無し」 or 「未選択のみ」が不正に動作していた不具合の修正
※Page Category Plus(v.2.2で検証)を利用している場合に、当該オプションがONであれば正しく動作します。
2009.01.15
WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)
2009.01.10
ページの表示順操作の対応
テーマディレクトリを隠蔽するためにindex.html生成機能追加
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。
日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。
→ SPaiS Wordpress プラグインの作り方(3) ステップ1:翻訳の仕組み”
CMS運用のための13のシンプル化機能~解説版~
“決してWordPressに固執するつもりはありませんが、まずは昨日リリースしたCMS運用のための13のシンプル化機能についての解説です。
わかりずらい箇所やバグ等ありましたら、ご指摘いただけますと幸いです。
13のシンプル化機能解説
メールヘッダ(From)を任意に書き換え可能
[解説]パスワードを忘れた場合のリマインド機能等で送信されるメールの差出人欄がデフォルトだとwordpress@~になってしまうので、そこを任意に変更可能としました。
プロフィール編集をパスワード変更のみに限定
CMS運用ユーザは不特定多数を想定していません。またSNS的な機能も冗長ではないかと考えているのでパスワードのみ変更可能としました。(jQueryで無理やり非表示にしているので、一瞬見えてしまう点はご了承ください。)
ダッシュボード左上のWordPressロゴを隠す
ゆくゆくはロゴを指定できるように考えています。
ダッシュボードのフッターを隠す
ロゴ等も同様ですが、WordPressがベースであること、WordPressフォーラム等へのリンクを削除しました。
ダッシュボードの「ヘルプ」タブから「ドキュメント」リンクを削除
CMSとして運用するためのマニュアルを作って、リンクを貼っておきましょう。
ダッシュボードトップに「現在の状況」ウィジェットのみを表示
本来は便利なウィジェットですが、CMS運用担当者にはコンテンツ更新に専念してもらうために不要と判断し、削除しています。
同ウィジェット下部で表示される「テーマで使用中のウィジェット」「WordPress」バージョンの表示を削除
かなり細かい箇所ですが「現在の状況」ウィジェットの下のほうに記載されているリンクや情報を削除しました。
表示オプションタブを削除
ダッシュボードトップや投稿、ページの編集画面右上にある「表示オプション」タブを非表示にしました。さらに細かいですが投稿、ページの編集画面では「カスタムフィールド」等の高度な情報(ウェジェット?)も削除しています。
投稿/ページ/メディアの一覧で「コメント」列を削除
前提として触れていませんが、コメントやトラックバックは現状では不要の方向です。(そこにブログツールを流用する意味があるか・・・ちょっと思案中です。)
ダッシュボードメニューの「コメント」も削除
WordPress2.7から左袖に移動し、一部リファクタリングされたメニューの「コメント」を削除しています。
ダッシュボードメニューの「ツール」も削除
同様に左袖メニューの「ツール」も削除しています。
ダッシュボードメニューの順番入れ替え(投稿→ページ→メディアの順)
上記のメニューを削除していくと、デフォルトの名残として「投稿」→「メディア」→「ページ」の並び順になってしまいますので、「メディア」を1番下に移動しました。
トラックバック送信、ピンバック送信の無効化
ディスカッション設定等で回避可能なので不要かも知れません。(今後廃止する可能性もあります。)
”
27
WordPressでCMS運用するための13のポイント
“WordPressでCMS構築することを想定すると、よく見かけるダッシュボード(Wordpress Dashboard Editor)やログイン画面(BM Custom Login)のカスタマイズは、WordPressの使い勝手を良くしたり、サイトの「らしさ」を演出するのに良いと思っています。
さらに運用に突っ込んだときに(といってもあくまで「体裁」の域は抜けませんが)、スキマを埋めるための何とかしたい「13のポイント」があったので、スキマ的プラグインのNiche Patch(ニッチパッチ)で対応しました。
CMS運用を想定した前提
あくまでWordPressはブログ用途のCMSですが、巷にあふれているとおり、コーポレートサイトのCMSとしての可能性が非常に高いと思っています。
コーポレートサイト向けのCMSとして、必ずといっていいほど「記事承認ワークフロー」があがりますが、こちらについては、大筋目処がたっていて、鋭意開発中なので、そのうちどこかで公開されると思います。(このサイトで公開するかは未定)
それ以外にも挙げればいろいろありますが、2.7ですでに網羅されている機能や配布されているプラグインの組み合わせ等でかなりの部分は実現可能です。
さて、実際にWordPressでコンテンツ更新していく担当者にとって、機能が豊富であるとか、そのCMSのベースが何であるかといった情報は(私の偏見かもしれませんが)不要な情報だと考えています。
記事の内容や許された表現力に注力できる管理画面という配慮が必要かなぁと。シンプルイズベストです。
蛇足ですが、他のオープンソースCMSによるサイト構築にわずかながら携わった経験上、ベースとなるCMSのバージョンアップにかかるコスト、そこから生じる担当者のストレス過多・モチベーション低下や、顧客自身がCMS=魔法の杖のように期待していたものへの落胆があるんじゃないかなぁと思っています。
そこで、多少のパワーワークには目をつぶってでも
「CMS(つまりこの場合はWordPress)本体には一切カスタマイズを入れず、プラグインだけで種々雑多な機能を網羅したい」
というのが、そもそもNiche Patchを作り始めた大きなキッカケです。
WordPress本体へのカスタマイズを排除することで、バージョンアップはプラグインの検証に絞れば良いので、極めてシンプルになります。
CMS運用する顧客側はCMSバージョンアップの不安からも解放されます。(つまりダッシュボード直後の画面で「WordPress X.Xが利用可能です」みたいな表示は本当の意味での運用側が把握していれば良い)
少し大げさな表現かもしれませんが、そんな思いがあります。
13のポイントとは?
解説は別の機会にします。(それとなく欲していた機能のある方なら、箇条書きでも伝わると期待して・・・)
メールヘッダ(From)を任意に書き換え可能
プロフィール編集をパスワード変更のみに限定
ダッシュボード左上のWordPressロゴを隠す
ダッシュボードのフッターを隠す
ダッシュボードの「ヘルプ」タブから「ドキュメント」リンクを削除
ダッシュボードトップに「現在の状況」ウィジェットのみを表示
同ウィジェット下部で表示される「テーマで使用中のウィジェット」「WordPress」バージョンの表示を削除
表示オプションタブを削除
投稿/ページ/メディアの一覧で「コメント」列を削除
ダッシュボードメニューの「コメント」も削除
ダッシュボードメニューの「ツール」も削除
ダッシュボードメニューの順番入れ替え(投稿→ページ→メディアの順)
トラックバック送信、ピンバック送信の無効化
※ディスカッション設定等で回避可能なので不要かも知れません(今後廃止する可能性もあります)
そのほか、前回バージョン(Ver.0.51)までのバグ修正と、将来的なリファクタリングやサポートバージョンなどを考え始めました。
使い方
niche-patch.0.58.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
動作検証はWordPress2.7でのみです。(今後明示的に2.7以降のサポートに切り替えていく予定です。)
まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します。
※細かい機能ごとのオプション設定は要望があれば検討します。
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2009.01.27
CMS運用のための13のシンプル機能リリース
ページの場合に「カテゴリチェック無し」 or 「未選択のみ」が不正に動作していた不具合の修正
※Page Category Plus(v.2.2で検証)を利用している場合に、当該オプションがONであれば正しく動作します。
2009.01.15
WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)
2009.01.10
ページの表示順操作の対応
テーマディレクトリを隠蔽するためにindex.html生成機能追加
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。
日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。
→ ...”
10
ページの表示順操作
“ページ一覧から「ページ順序」、すなわちmenu_orderを上げたり、下げたりできるようにNichePatchで対応しました。
WordPress2.7での確認が不十分で「公開日時チェック」と「カテゴリ未選択チェック」が機能しません。
ご迷惑をおかけしますが、しばらくお待ちください。
不具合箇所の修正とWordPress2.6.3&2.6.5&2.7による動作確認を完了しました。WordPress2.7をご利用でv0.50をダウンロードした方にはご迷惑をおかけしました。
WordPressをCMSとして利用するには、ページを多用すると思いますが、順番の制御のために逐一各ページを編集モードで開くの は、かなり煩雑だと思います。WordPress2.7から追加された一覧からの「簡易編集モード」でも「ページ順序」は制御できません。「クイック編集」モードで制御できますが、1件ごとに「クイック編集」モードのオープン→値の設定→「ページを更新」ボタン押下が必要なので、今回のニッチパッチのオプションを有効にした操作感のほうが便利です。
WordPress2.6.x系、2.7で動作確認済みです。また、ページのステータスは、「公開済み」だけでなく「下書き」「レビュー待ち」「未公開」「パスワード付」にも対応しています。
そのほか、前回バージョン(Ver.0.40)と類似のテーマディレクトリ(通常ではwp-content/themes/)配下にindex.htmlまたはindex.phpが存在しない場合も、ブランクのindex.htmlを作成する処理(オプション)も追加しています。
使い方
niche-patch.0.51.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2009.01.15
WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)
2009.01.10
ページの表示順操作の対応
テーマディレクトリを隠蔽するためにindex.html生成機能追加
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。
日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。
→ SPaiS Wordpress プラグインの作り方(3) ステップ1:翻訳の仕組み”
|
2008 “So far so good!” | Nov 19
WordPressノウハウ~走り書き~
“おもにWordPressをCMSとして利用するために、少し時間を割いて集め、検証した情報です。
2008.11.19時点では走り書きのため、情報の並び順にあまり意図のない箇所があったり、検証不足もあります。
(少しずつリファクタリングして精度を上げていこうかと考えています)
2009.04.21時点、パンくずナビゲーション「Breadcrumb NavXT」がVersion3.1.0でAPI関数名が変更されていましたので反映。
基本機能
◆投稿記事だけでなくページ内も検索
http://randomfrequency.net/wordpress/search-pages/
◆最近の投稿リストを表示
http://bono.s201.xrea.com/2006/03/24-c_post_listings/
http://coffee2code.com/wp-plugins/#customizablepostlistings
◆固定(静的)ページにカテゴリーを割り当てる。
http://www.stuff.yellowswordfish.com/page-category-plus/
◆Google サイトマップ
Google Sitemap Generator for WordPress v2 Final
http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/
グーグルサイトマップを自動生成するプラグイン
http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/
http://www.arnebrachhold.de/redir/sitemap-dl/
◆サイトマップ作成
http://www.wpplugins.jp/projects/others/wp-dtree/
http://www.silpstream.com/blog/wp-dtree/
http://lovelog.eternal-tears.com/2006/08/30/473/
http://coliss.com/articles/blog/wordpress/plugin/76.html
http://www.dagondesign.com/articles/sitemap-generator-plugin-for-wordpress/comment-page-9/
<!-- ddsitemapgen -->
◆パンくずナビゲーション
http://bono.s201.xrea.com/2008/02/646-wp_breadcrumb_navxt202/
http://wordpress.org/extend/plugins/breadcrumb-navxt/
※2009.04.21現在 Version3.1.0でAPI関数名が変更されていましたので反映
<div id="breadcrumb">
<?php
if (function_exists('bcn_display'))
{
// Display ...”
17
プラグインディレクトリの隠蔽
“「スキマ」的プラグインの「Niche Patch」(ニッチパッチと読んでください)で実装すべきか若干迷いましたが、Webサーバの設定(Apacheの例だとOptionsディレクティブのIndexes機能を無効にできない場合)によっては、プラグインディレクトリ(通常ではwp-content/plugins/)配下が見えてしまうことに対応しました。
※それに気付いたら手動でブランクのindex.htmlをアップロードしておけば済むだけの話ですが・・・
また、Niche Patchコーディング実装が甘く、includeパスに問題があり、比較的多く利用されているテーマ「wp.Vicuna Ext.」とのバッティング等の不具合がありましたので、合わせて対応しました。
使い方
niche-patch.0.40.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
以上で、プラグインディレクトリ(通常ではwp-content/plugins/)配下にindex.htmlまたはindex.phpが存在しない場合に、ブランクのindex.htmlを作成することが可能です。
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2008.11.17
プラグインディレクトリを隠蔽するためにindex.html生成機能追加
Niche Patchプラグインのinclude記述のあいまいさを修正
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。
日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。
→ SPaiS Wordpress プラグインの作り方(3) ステップ1:翻訳の仕組み”
| Sep 26 25 24 23
エクセルTIPS Vol.2
“◆セル参照形式の変更
数式の入ったセルをコピーするときなどに、相対/絶対参照を意図的に変更したい場合があります。
セルの編集モードで、カーソルをA1やB2などの参照先に移動し、
F4
を押すごとに、A1→$A$1→A$1→$A1→A1とトグルします。
過去のエクセルTIPS
Vol.1
◆マウスクリックでセルに着色
◆プルダウンの選択
◆シートの追加
◆列、行の一括選択
◆ブックの切り替え、シートの移動
◆セル編集モード
◆直前操作の繰り返し
◆セルの書式設定
◆本日日付の入力
◆文字列+数字+文字列から数字のみを取り出す方法
◆日付データを曜日や元号表示する方法
◆年齢を計算する方法
◆ファイル名/シート名を取得する方法
◆セルの型を判別する方法”
21
カテゴリー未選択 or 未分類のチェック用プラグイン
“「スキマ」的プラグインとして開発中の「Niche Patch」(ニッチパッチと読んでください)で、前バージョンリリースの投稿タイムスタンプのチェック用プラグインにバグがあったので、修正しました。
合せて、カテゴリー未選択か未分類のみチェック時に警告を出す機能を追加しています。
また、今回のバージョンから、新規インストール時のデフォルトをすべてOFFに変更しています。
※旧バージョンからのアップグレード時は、設定値をそのまま引き継ぎます。
(あくまでもプラグインをアクティベートした瞬間に他プラグインと競合することを避ける意図です。)
使い方
niche-patch.0.32.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
以上で、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能などを追加することができます。
制限事項
投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
なお、本来はonclickイベントへのハンドラ登録ではなく、リスナー登録のほうが美しいようですが、チェックNGの場合にPOST処理を中断する手段の実装にひと手間、ふた手間かかりそうなので、現状はonclickハンドラがすでに登録済みの場合のみ、当ニッチパッチハンドラ実行後(さらにいうと結果がtrueの場合)にコールするようにしています。
改修履歴
2008.09.21
(投稿ではなく)ページの場合にスラッグ表示できなかった対応
ダッシュボードでJavaScriptエラーが出る対応(スラッグ関連)
プラグイン有効化直後に投稿タイムスタンプのチェック対象期間が24時間でなくtrue時間となってしまっていた対応
新規インストール時のデフォルト値変更(ON→OFFへ)
共通ライブラリ作成、当プラグイン用変数とデフォルト値の配列化などのリファクタリング
カテゴリー未選択 or 未分類のチェック機能追加
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。
日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。”
01
ファイルのタイムスタンプを取得しリネーム(ローテート)する方法②
“ファイル(やディレクトリ)をそのタイムスタンプを拡張子としてリネーム(ローテート)する方法。
かなり古い記事「ファイルのタイムスタンプを取得しリネームする方法」で店ざらしにしていたDOS版と、shell版もそれに合わせて、パラメータ化したものです。
どちらもほぼ同じ挙動です。
◆DOS
@echo off
if "%1"=="" goto :ERR_PARAM
if exist %1 goto :ROTATE
goto :NOT_EXIST
:ROTATE
SET TARGET=%1
SET T=%~t1
set YYYY=%T:~0,4%
set MM=%T:~5,2%
set DD=%T:~8,2%
echo ...”
| Aug 29
投稿タイムスタンプのチェック用プラグイン
“WordPressフォーラムの投稿「blog公開時間を過去(未来)にした場合、確認が欲しい」に促されて、投稿タイムスタンプをチェックするプラグインを作成しました。
「スキマ」的プラグインとして開発していく「Niche Patch」(ニッチパッチと読んでください)として同梱し、こっそり機能追加していた構文チェッカー対応とあわせて、オプション選択可能にしました。デフォルトはいずれも機能ONOFFです。
また、多少のリファクタリングと、オプションページの日本語化(ハードコーディングですが)も対応しました。
使い方
niche-patch.0.3.zipniche-patch.0.31.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
OFFにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
以上で、デフォルト状態は、24時間以上の差がある場合の「公開」ボタン押下時に警告ダイアログが表示されます。
制限事項
弊害を考慮して、「保存」ボタン押下時には、動作しませんので、ご注意ください。
「保存」ボタンへの対応は、「公開ステータス」との関連チェックを実装する必要があるため、少し先の対応となります。
時間設定フォームに誤りがあり、バージョン0.31で対応したのと合わせて「保存」ボタンも対応しました。
また、判定する時間数は「ダッシュボード」→「設定」→「Niche Patch Plugin」から変更可能ですが、入力値のバリデーションが未実装です。
今後の対応
現状では、デフォルトの「24」時間がハードコーディングなので、define化と、指定時間の前後を対象範囲としている点を、それぞれ選択可能(過去だけ/未来だけ/両方)な対応など。
以下は前バージョンからの課題。
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。”
28
DOSで画像検索
“残念ながら、あくまでもファイル名検索のことです。
特定ディレクトリ(フォルダ)配下のJPEG画像のみの一覧をテキスト形式で欲しい場合、
dir /S /B *.jpg > result.txt
とすれば、result.txtには、該当ファイルがフルパスで取得可能です。
わかりやすい例を出すと、特定ディレクトリ(フォルダ)配下の画像(*.jpgや*.pngなど)の検索は、Windowsならエクスプローラから実行可能です。
ただし、その結果は、GUIであるが故、再利用には向きません。
そこで、上記ような簡単なDOSコマンドで用途の広がるテキスト形式で結果を得ることが可能となります。
オプションの"/S"、"/B"についは、
dir /?
で確かめてください。”
27
DOSの標準出力と標準エラー
“バッチファイルやシェルコマンドの実行結果は、標準出力(C言語でいうとstdout)だけでなく、ちゃんと標準エラー(同様にstderr)もリダイレクトすることができます。
つまり、hoge.txtが存在するとき、
dir /B hoge.txt > result.txt
とすれば、問題ありませんが、hoge.txtが存在しない場合は、result.txtには何もリダイレクトされません。
そこで、
dir /B hoge.txt > result.txt 2>&1
とすることで、hoge.txtが存在しない場合、result.txtには、
「ファイルが見つかりません」
とリダイレクトされることがわかります。DOSもそこそこUNIXライクに設計&実装されているようです。”
26
DOSでdirの代わりにlsコマンド
“昔から少しだけDOSには自信があったが、このサイトへのアクセスは、DOS関連が飛びぬけているみたいです。
そこまで必要か?と自問しつつも、DOSでもエイリアスの登録が可能なようなので、簡単にまとめました。
つい"ls"を叩いてしまう場合、
doskey ls=dir /W
doskey ll=dir
としておくと便利です。
課題
これを常に反映する方法はautoexec.bat(懐かしい)とありますが、XPの場合、システムドライブ(通常はC:\)にあるautoexec.batでは反映されないようです。
参考URL
http://www.ne.jp/asahi/hishidama/home/tech/windows/cmd/alias.html
※ただし、このページにある "alias","unalias" はXPでは動作しない模様”
25
デッドリンクチェッカーのXSS対策(配布再開)
“取り急ぎのバージョン0.3bにも残存していたXSSの脆弱性は、PHPによるコード出力を廃止することで対策しました。
度重なるYuriko様のご指摘に助けられた反面、さらに慎重を期すためWORDPRESSフォーラムへの報告は、しばらく見送ります。
修正内容は、細かな機能アップも含めて主に次の5点です。
PHPによるコード出力を廃止
リンク先がfeed等のXMLの場合、その内容のチェックは見送る
チェック対象外URLに"wp-login.php"を追加(この対策によりチェック後の管理画面ログアウトを回避)
チェック中を示す「Checking ...」のロジック見直し(カウンターのインクリメント箇所が正しくなかったため、フリーズしたように見えてしまっていたことへの対策)
チェック済み/チェック合計数、開始/終了時刻の表示
使い方
dead-link-checker.0.4b.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/dead-link-checker.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
リンクチェックの実行は、「ダッシュボード」→「設定」→「Dead Link Checker Plugin」→「start」ボタン。
以上で、bloginfo("url")からリンクを辿り、リンクチェックを開始します。中断も可能です。
正常なページは、一覧から消えていき、エラーの場合は、HTTPステータスコードとそのリンクを含むURL(非同期の複数コネクション実行のため、最新1つで上書き)も表示します。
制限事項
「はてなブックマーク」への追加リンク、W3CのHTML Validatorへのリンクなどで400または404エラーとなります。原因調査中ですが、当デッドリンクチェッカーでエラー検知されたURLは、手動にて確認されるようお願いいたします。
また、現状ではハイパーリンクのみの抽出のため、JSやCSSは対象外です。
今後の対応
大きな機能追加要件として、被リンクゼロチェック機能、つまりどこからもリンクされていない画像等を抽出する機能を想定しています。が、これはかなり難航するかも知れません。
小粒要件としては、JSやCSSのデッドリンクチェックへの対応です。formへの対応は決めかねています。
その他、チェック結果表示のポップアップウィンドウ化 or iframe化や体裁、それらのオプション設定などなどです。”
| Jul 14
デッドリンクチェッカーのXSS対策(β版)
“XSS対策を施しましたので、配布を再開します。
取り急ぎのバージョン0.2、0.3、0.3bにもXSSの脆弱性が残存していました。
Yuriko様から再びのご指摘をいただき、修正しました。
修正内容は、主に次の3点です。
get_file_contents()はphp.iniの設定に依存するため、fsockopen()に変更
HTTPステータスコードが301と302のときは、リダイレクト先をチェック(fsockopenの影響で必要になった処理)
明らかに自ドメインの場合のみ取得ソースをecho(入力パラメータ$urlが"/"を含まない場合、末尾に付加)
なお、このバージョン0.3bでは、feed等のXMLを対象としたリンクチェックが不完全な状態です。この不具合よりも、XSS対策版を優先すべきという観点で、リリースさせていただきます。
使い方
dead-link-checker.0.3b.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/dead-link-checker.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
リンクチェックの実行は、「ダッシュボード」→「設定」→「Dead Link Checker Plugin」→「start」ボタン。
以上で、bloginfo("url")からリンクを辿り、リンクチェックを開始します。中断も可能です。
正常なページは、一覧から消えていき、エラーの場合は、HTTPステータスコードとそのリンクを含むURL(非同期の複数コネクション実行のため、最新1つで上書き)も表示します。
制限事項
前述のとおり、本バージョンでは、feed等のチェックが不完全です。この不完全ですが、JavaScriptエラーで処理が中断してしまいますので、同時セッション数は、3以上が良いかも知れません。(自サイトのチェックの場合、feedとatomの2つでセッション中断で以降のチェックが進みません。)前バージョンでは正しくチェックされていた(と思われます)ので、今回の処理変更との影響を調査中です。
しばらくお待ちください。
jQuery(JavaScript)を利用したチェックのため、このプラグインでのエラー検知が万全ではないようです。
これは、(予想の域を越えませんが)jQuery、というよりJavaScript(?)では、クロスドメインでのHTTP通信不可のため、擬似的にサーバサイドで回避(*1)しています。この対処(出力)が万全でないのかも知れません。
また、現状ではハイパーリンクのみの抽出のため、JSやCSSは対象外です。
今後の対応
大きな機能追加要件として、被リンクゼロチェック機能、つまりどこからもリンクされていない画像等を抽出する機能を想定しています。が、これはかなり難航するかも知れません。
小粒要件としては、JSやCSSのデッドリンクチェックへの対応です。formへの対応は決めかねています。
その他、チェック結果表示のポップアップウィンドウ化 or iframe化や体裁、それらのオプション設定などなどです。”
03
デッドリンクチェッカープラグイン
“XSS対策を施しましたので、配布を再開します。
jQueryの勉強も兼ねて、デッドリンクチェッカーを作りました。ハイパーリンクであれば、画像も対象です。非同期通信で、同時接続数はチューニング可能にしています。(デフォルト値は2)
クライアントはもちろん、サーバにも負荷がかかりますので、同時接続数は適宜、試してください。
WordPressのbloginfo("url")から順次HTMLソース内のハイパーリンクを辿ります。HTMLソースで相対パス表示の場合、当チェックの実行パス(=http://example.com/wp-admin/)からの相対解釈になってしまう対処に、少し手こずりましたが、相対URLを絶対URLにする関数に救われました。
なお、重複チェックは無限ループになるため、当然除外し、外部ドメインについては、1階層までチェックします。つまり、対象WordPressサイトのリンク品質を確保するためのツールです。
使い方
dead-link-checker.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/dead-link-checker.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
リンクチェックの実行は、「ダッシュボード」→「設定」→「Dead Link Checker Plugin」→「start」ボタン。
以上で、bloginfo("url")からリンクを辿り、リンクチェックを開始します。中断も可能です。
正常なページは、一覧から消えていき、エラーの場合は、HTTPステータスコードとそのリンクを含むURL(非同期の複数コネクション実行のため、最新1つで上書き)も表示します。
制限事項
jQuery(JavaScript)を利用したチェックのため、このプラグインでのエラー検知が万全ではないようです。
これは、(予想の域を越えませんが)jQuery、というよりJavaScript(?)では、クロスドメインでのHTTP通信不可のため、擬似的にサーバサイドで回避(*1)しています。この対処(出力)が万全でないのかも知れません。
また、現状ではハイパーリンクのみの抽出のため、JSやCSSは対象外です。
今後の対応
大きな機能追加要件として、被リンクゼロチェック機能、つまりどこからもリンクされていない画像等を抽出する機能を想定しています。が、これはかなり難航するかも知れません。
小粒要件としては、JSやCSSのデッドリンクチェックへの対応です。formへの対応は決めかねています。
その他、チェック結果表示のポップアップウィンドウ化 or iframe化や体裁、それらのオプション設定などなどです。
追記
外部リンクのチェック用サーバサイドスクリプト(上記*1)がXSS攻撃に悪用される危険性がありました。
バージョン0.1をご利用の方は、0.2以降にアップデートしてください。
Ktai Styleの作者Yuriko様にご指摘いただき、修正しました。
追記2
Yuriko様から、さらにご指摘いただき、XSS攻撃対策が不完全でしたので、修正しました。
バージョン0.3bにアップデートをお願いします。
なお、バージョン0.3bでは、feed等のXMLを対象としたリンクチェックが不完全な状態です。この不具合よりも、XSS対策版を優先すべきという観点で、リリースさせていただきます。
このデバッグ/修正に時間がかかりそうですが、対策完了次第、リリースいたします。
もし、当プラグインをご利用いただいている方がいらしたら、大変ご迷惑をおかけしますが、今しばらくお待ちください。”
| Jun 23
スラッグ入力復活プラグイン
“WordPress本体の方向性に逆行するようだが、スラッグ表示を復活させるプラグインを作成しました。
素直にpost.js、page.jsの特定箇所をコメントアウトすれば良いだけなので、途中から意固地になって開発した感じです(^^;
「スキマ」的プラグインとして開発していく「Niche Patch」(ニッチパッチと読んでください)として同梱し、前回のバージョン非表示機能とあわせて、オプション選択可能にしました。デフォルトはいずれも機能ONです。
使い方
niche-patch.0.2.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
プラグインディレクトリに解凍
ダッシュボードからアクティベート
OFFにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。
以上で、デフォルト状態はバージョン非表示、かつ投稿&ページの作成画面で、一番下に「スラッグ」が表れます。
今後の対応
プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。
その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。”
21
逆アクセスランキングのテンプレート対応
“テンプレート側からの一覧表示に対応しました。
すでにこのサイトトップページの最下部に表示しています。
使い方
footstep.0.31.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/footstep.zipです)
プラグインディレクトリに解凍
...”
20
逆アクセスランキングの期間指定対応
“未だ管理機能のみですが、期間指定に対応しました。
また、開始(過去)と終了(未来)のチェックをしていない暫定版です。
使い方
footstep.0.2.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/footstep.zipです)
プラグインディレクトリに解凍
...”
06
機種依存文字検出のアルゴリズム変更
“前回のバグ回避策で触れましたように機種依存文字の検出ロジックを見直し、 ver.0.3bで公開します。
NGをチェックする方式 ⇒ OKをチェックする方式 に変更しました。
機種依存文字などチェックのソースをそのまま流用させていただきました。
使い方
x-charactercode-validator.0.3.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/x-charactercode-validator.zipです)
...”
04
機種依存文字検出プラグインforMac(Beta)
“前回の課題にあげたMac版に、ほんのり対応しました。 OS XのFireFoxで試したものの、WYSIWYGモードでは入力したMac機種依存文字が文字化けしていた(ソースモードでは機種依存文字が正しく表示される)状態ながら、一応検出されていると思われるので、ver.0.2で公開します。 *Mac版の品質フィードバックをいただけるとうれしいです。
使い方
x-charactercode-validator.0.2.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/x-charactercode-validator.zipです)
...”
| May 30
機種依存文字検出プラグインforWin
“モバイル向けや、お役所系のCMS要件で、機種依存文字の検出ってのをよく見かけますね。
WordPressはUTF-8がデフォルトなので、本来は不要(と認識している)だが、意外に引き合いは多いのではないかと思い、苦手な分野にチャレンジしてみました。
→ 機種依存文字一括変換辞書が大変参考になりました。
使い方
x-charactercode-validator.0.1.zipをダウンロード
プラグインディレクトリに解凍
ダッシュボードからアクティベート
以上で、記事の「保存」ボタンまたは「公開」ボタンを押したときに、タイトル or ...”
29
逆アクセスランキングプラグインの作成
“いろいろと試行錯誤中で、リリースするには少し気が引けるが、逆アクセスランキング用のプラグインを作成したので、公開します。
使い方
footstep.0.1.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/footstep.zipです)
プラグインディレクトリに解凍
...”
28
WordPressのバージョン非表示プラグイン
“プラグインにするのも大げさな感じだが、練習も兼ねて、バージョン非表示機能を実装しました。
→ WordPress 2.5 で自動で挿入されるバージョン情報を削除するを参考にしました。
多少の将来性(?)を見越した「スキマ」的プラグインということで
「Niche Patch」(ニッチパッチと読んでください)
という語呂合わせ。
ゆくゆくはオプション選択により、細かな制御ができるプラグインに育つと良いなぁという思いから。
使い方
niche-patch.0.1.zipをダウンロード
(最新版はhttp://typista.xii.jp/wp-content/uploads/niche-patch.zip)
...”
23
携帯のユーザ識別ID
“モバゲータウンがフレームワーク「モバシフ」をオープンソース化したみたいなので、どこかで使ってみたいし、少し気になるが、まずは基本中の基本?であるユーザ識別IDについて。
au
$_SERVER;
SoftBank
$_SERVER;
DoCoMo
$_SERVER;
※クエリパラメータにguid=ONが必要
最近、モバイルサイトの話が多く、この手の情報を整理しておくと便利そうだ。”
16
WordPressと$_SERVER
“頻繁に使う時期があったので、2.5.1のソースをgrepして、$_SERVER変数を調べた。以下にキー名を残しておく。
CONTENT_LENGTH
CONTENT_TYPE
DOCUMENT_ROOT
HTTPS
HTTP_ACCEPT_ENCODING
HTTP_AUTHORIZATION
HTTP_HOST
HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH
HTTP_REFERER
HTTP_SLUG
HTTP_TITLE
HTTP_USER_AGENT
HTTP_X_ORIGINAL_URL
HTTP_X_REWRITE_URL
PATH_INFO
PATH_TRANSLATED
PHP_AUTH_PW
PHP_AUTH_USER
PHP_SELF
QUERY_STRING
REMOTE_ADDR
REQUEST_METHOD
REQUEST_URI
SCRIPT_FILENAME
SCRIPT_NAME
SERVER_NAME
SERVER_SOFTWARE
https
”
| |||
2007 | Oct 18
【連載】ユーザビリティ ~ Google Mapsテスト ~
“Google Mapsがテレビニュースで使われるようになって久しい。
顧客ニーズを勘案し、ようやく触ってみることにした。
導入するだけなら10分。ほぼ予想どおりの展開。
→ http://typista.dip.jp/test/googlemaps/
説明するまでもない。
◆試したい/調べたいこと
・噴き出しのサイズ変更
(理想はminサイズ指定で要素多い場合は成り行きリサイズ)
・噴き出しにHTML/画像使用
・ここでねマピオン
・書き込み機能(これも共有できると尚良い)
そして、プロトタイプを次のような要件で作ってみよう。
・住所リストを用意して、検索できる一連のシステム
・検索キーは住所、郵便番号、拠点名
・住所リストは拠点名、電話番号を始めXMLで持つ
・XMLのメンテ機能も欲しい
・住所から緯度経度を計算する機能もメンテで実装する
・緯度経度から距離を計算するAPI
・郵便番号→住所はAjaxzip2を利用(結果をhiddenフォームに入れる)し、
住所→緯度経度は上記を利用
・操作UIはスタイルシートで制御できるようにする
・できれば印刷にも対応したい
◆参考URL
Google Maps API リファレンス
Google Maps API 2 作り方・サンプル一覧
Geekなぺーじ - Google MAPS APIプログラミング”
| Sep 14
【連載】ユーザビリティ ~バルーン表示ライブラリ~
“前回の【連載】ユーザビリティ ~入力アシスト用のバルーン表示~で使ったtooltipライブラリは、実装が簡単なものの、問題が2つあった。
①噴出し部分が画像
②角丸部分の余白がIEでは透過されない(FireFoxは透過される)
そこで、自前で考えてみようとJavaScriptのグラフィックライブラリを調査している。
よくお世話になっているPHPSPOT開発日誌で紹介されていたwz_jsgraphicsが有力です。
試しに突貫で、バルーン表示するサンプルを作ってみました。
→ http://typista.dip.jp/test/wz_jsgraphics/
ところが、個人的にはかなりプライオリティの低いDOCTYPE宣言をまじめに書くと、表示が崩れ、見れたものではない。
→ http://typista.dip.jp/test/wz_jsgraphics/ng.html
◆DOCTYPE宣言の違いによるOK/NG
<OK>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<NG>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...”
07
JavaScriptの可能性
“JavaScriptのとあるオブジェクトが実装しているメソッドやプロパティを調べる方法を見つけた。
そこそこJavaScriptには自信をもっていたつもりだったが、深入りしない数年間で、相当な高級言語になった気がする。
クラスベース、プロトタイプベースといった概念やCore JavaScript 1.5 Guideを少しかじり始めて、痛感している。
最近流行り(?)のprototype.jsなんかもそうだ。$や#といったリテラル(?)で何故あそこまで柔軟な実装が可能なのかも調べてみたいと思ってる。
しごくプアなメモになるが・・・
◆documentオブジェクトの例
<script language="JavaScript">
for ( var obj in document ) {
document.write( obj + "<br>" ...”
05
【連載】ユーザビリティ ~入力アシスト用のバルーン表示~
“無計画にユーザビリティを考える第2回は、入力アシスト用のバルーン表示。
前回の郵便番号→住所変換もマージして、さらにIME自動制御(IEのみ)と、郵便番号上3ケタ入力時の下4桁フィールドへの自動フォーカスなども盛り込みました。labelも使っていますが、ラジオボタンかチェックボックスでないと意味は薄いですね。
http://typista.dip.jp/test/form-field-tooltip/form-field-tooltip-ajaxzip2.html
実装はあっけないほど、簡単でした。
jsをインクルードして、各フォームごとにtooltipTextというプロパティを付加するのみ。
◆課題
バルーン(ツールチップ)の体裁変更。とくに色やアルファ処理、フェードイン・アウト効果などもカスタマイズできると、ぐっと利用頻度があがりそうです。
◆参考URL
http://phpspot.org/blog/archives/2006/10/javascripttoolt.html”
04
【連載】ユーザビリティ ~郵便番号→住所変換~
“ユーザビリティの良い入力フォームを無計画に考えます。
ポイントは次のとおり。
・基本はAjax
・キーボード入力に長けた人もそうでない人もストレスのないもの
・なるべくシンプルな見た目と実装
具体的なTIPSとしては、これまで覚えたものも含めて、
・labelの利用
・Cookie等による入力回数制限
・郵便番号→住所変換
・入力アシスト用のバルーン表示
・IME(かな換)の自動OFF/ON
・基本項目のvalidation
・入力→確認→送信の非同期通信
・ページナビ
・アンケート項目の動的変更と集計
・既存DBとの連携
・SPAM対策
など。
初回は、郵便番号→住所変換について。
まずはサンプルから。
http://typista.dip.jp/test/ajaxzip2/ajaxzip2.html
これは便利!
郵便番号と住所のデータベース(CSV)はサーバで自動メンテナンスすべきだが、これを使わない手はない。
◆参考URL
http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html#download”
03
親ウィンドウ書き換え
“JavaScriptで親ウィンドウのdiv.innerHTMLを書き換える方法を調べたが、見つからなかった。
フォームの書き換えは、window.opener.form_name.valueで可能なようなので、いつもの苦肉の策で、親側に用意したhiddenフォームを監視するタイマを動かして、子ウィンドウから親のhiddenを書き換えるサンプルを作ってみた。
→ http://typista.dip.jp/test/get/parent.html
(あまり工夫が無いので子ウィンドウから書き換えてるように見えないが(^^;)
◆課題
1.親ウィンドウの動的書き換え
windown.operner.document.div_name.innerHTMLに
直接アクセスできないのかなぁ?
2.onChangeイベントのフック
1.が無理なら、せめてタイマ監視ではなく、hiddenフォームのonChange
イベントをフックできないものか。
addListernerとか必要そうだな・・・”
| Aug 30
親ウィンドウ
“XML、Flash、JavaScript(DOM系)は、目的のオブジェクトを捕まえるのが大変。
それに比べればやや稚拙な親ウィンドウ操作を少し調べてみた。
やりたいのは、サブウィンドウから、親ウィンドウの一部を書き換えるような処理。
かなり調べてみて、フォームなら可能なようだが、div要素のinnerHTMLとかまでは子ウィンドウからは捕まえられないように見受けられた。
つまり、window.opener.document.div.innerHTML などの記述は誤りみたい。
ってことで、親ウィンドウにhiddenフォームとそれを監視するタイマを用意しておき、子ウィンドウから、そのhiddenフォームを書き換える。
という手法を考えてみた。
→ http://typista.dip.jp/test/get/parent.html
*乱暴なプロトタイプだから、子が親を書き換えているように見えないかも(^^;
◆スマートに実装するために
1.子ウィンドウから親ウィンドウのdiv.innerHTMLの変更方法
これがわかると2.はそもそも不用なんだが・・・
2.特定フォームのonChangeイベントの実装方法
addListernerとか必要?”
21
HDR
“公園(by CHEKAさん)というのをたまたま見つけた。
写真がキレイだったので、コメントしてみたが、その後調べていくと、HDRという手法(?)があるらしい。
すぐに検索でヒットするもので
http://www.pingmag.jp/J/2006/04/13/10-pictures-of-tokyo-gotham/
http://www.designwalker.com/2007/01/photoshop-hdr.html
あたりを見れば、伝わると思う。
露出を変えた写真を合成することで、写真のようで絵のようで、なんともいえないキレイな写真ができるらしい。
ちょうど少し前にミニチュア写真風に加工する手法を知って、そのうちやってみようかと思っていたが、これもHDRの一部らしい。
ともあれ、CHEKAさんの写真がHDRを施しているのかは不明だけど、デジカメの1回の撮影で露出違いを数パターン撮れるようになると便利だな。
#というかPhotoshopを使い倒せば1枚の写真でもできるみたい”
20
データセンター
“データセンターっていうと、かつてHP-UXのサーバ保守をやっていたときの簡素でつまらない控え室というイメージしかなかった。
それも自社専門のデータセンターかつ古かったためだろう。
先週初めて作業で行ったデータセンターはホスティング、ハウジングで外部企業向けのものということもあり、僕らはお客様扱い。
そんな丁重っていうわけではないが、足取り重く向かうデータセンターの入館は「お疲れ様です」が挨拶だったのに比べ「いらっしゃいませ」といわれるのが新鮮だった。
3フロアあるサーバールームは、天井高を低めに抑えるために空調が特殊で、どこにいても資料の紙が飛ばされるほどの風量と騒音。
ただでさえサーバールームなんて長居できるところじゃないが、ここはさらに人には居心地が悪い。
そのかわり、コンソール用のモニタ、キーボード、マウス+キャスター付デスクのセットと折りたたみ椅子が随所に置いてあり、作業効率は考えられている。
それとなんといっても2Fにあるサロン(控え室)。
食事はNGだが、大きめの1人掛けソファが3つあり、ゆとりのあるアームレスト部分に電源とLANが配線されていて、そこにノートを置いてネット接続が可能。
バースタイルの高めのテーブルと腰掛もあり、そこも電源、LANあり。
(一応各フロアにもサーバルームを出てすぐのところにネット接続可能なカウンターもある)
さらにパーティションで簡単に仕切られた休憩室(?)には、かなりグレードの高いマッサージチェアが2台。もちろん無料で使える。
このマッサージチェアの1台はNational製でアームレスト部分を持ち上げると手のひらを上下から空気圧で挟んでのマッサージまでついている。
今回の最新データセンターでないビルを知っているKZAは、しきりに古いほうが良いとこぼしていたが・・・
(サロンは)広いし、外部接続用PCも設置されてるし、サーバルームも天井が高いしってことらしい。
データセンターなんて、そうそう行かないに越したことは無いが、快適さが考慮されていて、今回は憂鬱にならずに作業できた。”
13
ネットワークリブート&インストール
“土日は、天王洲のデータセンターでインフラ構築だった。
WEB×4、DB×2、テストサーバ×1を1セットとして、2セット(=計14台)。
各々が冗長化されていて、2つ別のキャンペーン向け。
RHEL4.0のOSインストールを14台という気の遠くなるようなパワーワークに思えるが、そこはKZAのスキル&下準備のおかげで、ネットワークブート&インストールにより、30分程度で全台終了!
実際に開始してからは、そうだったんだが、想定外のことがあって、実は開始そのものが4~5時間遅れた(TT
というのは、レンタルサーバがけっこう新しく、BIOSまでは認識していたNICを、ネットワークインストールモードに入った途端、認識しなくなってしまったから。
ES4の媒体は最新のものを購入し、ネットワークインストール用に準備を進めていたはずだが、調べてみるとES4のUPDATE4~5でないとNGらしかったので、恐らく媒体はUPDATE3以前だったんだろう。
急遽、データセンターの控え室に戻り、ISOをDL。
(ISOダウンロードまでも色々あった)
14台のほかに、もう1台XENを入れるために用意したサーバがES5予定だったんだが、ES4と違いアクティベートのスキップができず・・・
というところまでが初日の実績。思い通りスムーズにいかないもんだが、面白い!
◆教訓
・ハードウェアの型番は事前に把握しておく
(PS/2ポートが無かったのにはKZAが驚いていた)
・インストールOSはメディアではなく、最新版をDLしておく
・シリアルコードは把握しておく
(今回は案件も急だったし仕方ない)
・作業用PCにMS Officeは必須
(メールはGmailで読めても添付ファイルにパスワードあると
MS製品以外では開けない)”
| Jul 30
今日から特定日付までのカウントダウン
“PHPでレポート集計する場合に、今日から特定日付までをカウントダウンするアルゴリズム。
<?php
$yyyyOrigin = 2007;
$mmOrigin = 5;
$ddOrigin = 1;
$yyyyToday = date("Y");
$mmToday = date("m");
$ddToday = date("d");
for ($i = ...”
27
【連載】tetristaを作ろう[04]
“ものすごく大雑把だが、最後はサーバサイド。
全体フローや各オブジェクトの詳細設計までブログに書かないと思います。
機密性というよりは労力の問題です(^^;
◆ランキング
理想は日次/月次で。またスコアだけでなく、ライン数や対戦結果などのカテゴリも。
◆対戦マッチング
シーケンシャルまたはランダムに対戦待ちユーザを紐付け。ユーザ間通信も媒介。
◆履歴
ログインやスコア、対戦履歴など。
◆暗号化
方式検討。(クライアントと共に)”
26
可用性と機密性と完全性
“パスワード管理って、みんなどうしてるんだろう。
僕は、大雑把に法則を6~7パターンくらい持ってます。
それぞれの亜種を含めると20パターンくらいになるかも知れない。
かといって、どういうときにどのパターンっていうポリシーも無ければ、滅多に使わない、入力することの無いものは、忘れかけてる。
パスワードの規則がサイトによってまちまちなのも、けっこう煩雑だと感じる。
今どき8文字が最大文字数だとか、記号が使えないだとか・・・
何かをダウンロードするとか、情報を見るためにレジストが必要な場合のパスワードは逐一悩む。
一部または全てがSSLで暗号化されていないサイトの場合もだが、実はそれ以上にそのサイトから流出することのほうが怖い。
さほどインパクトがあるわけじゃないけど、6~7パターンを使いまわしてる意味がなくなってしまう。
今の会社に入ってからというものPGPは欠かせないものだと感じている。
そうはいってもPCのクラッシュ等を想定して秘密鍵の管理をどうしようかと、またまた神経質に考えてしまう自分が悲しい。
それと一般にはハードル高いよなぁ。”
25
【連載】tetristaを作ろう[03]
“今回は、ゲーム性をさらに追及する場合に必要な要素。
◆非同期通信オブジェクト
ログイン管理、ランキングや対戦のための通信機能。非同期が適当かはサーバ
/クライアントのパフォーマンスを実装後に検証必要。(検証自体もバランスも難
しそう)
◆サウンド
イベントに対応したサウンドを再生。オブジェクト指向的にはまとめないほう
が正解のようにも思えるが、演出上も後回しになりがちだし、まずはこの仕様で
考える。
◆暗号化
処理のペナルティとのトレードオフなので、方式(要なので非公開)は要検討。
当然復号化も。サウンド同様に後回し。”
23
【連載】tetristaを作ろう[02]
“前回は、真っ先に思いつく要素を書き出した。
今回は、ゲーム性を確保するために必要なものをまとめる。
◆score
指示(イベント)ごとに対応したポイントの制御。消去ライン数も保持。これら
に応じた難易度調整も担当。
◆timer
50msec(*)ごとにウェイクアップ。開始から経過秒数を保持。
*このインターバルは最低20FPSとしたいための仮の値だが、チューニングの余地
ありそう。
◆command
enter入力でコマンド確定し、アクションリスト(説明省略)にヒットした場合に
イベントを投げる。アクションリストは難易度分けや言語対応も想定。”
20
【連載】tetristaを作ろう[01]
“久しぶりに連載もの。不定期だが、かつてJavaアプレットで作ったTetristaをflashにリプレースする。
アルゴリズムで参考にする程度でスクラッチに近い。
必要な要素。
◆base
土台となる。feild、command、score、timerや非同期通信オブジェクト、サウンドを持つ。メインルーチンと開始/終了の処理。
◆feild
blockを持つ。blockに指示を出したり、描画やライン消去判定をする。対戦機能を想定してduplicatableな構造を意識する。
◆block
配列パターンに従って描画したり、外部指示により移動/回転する。描画blockは矩形描画にもグラフィックパターン(ムービーオブジェクト)使用にも対応できるようにする。”
19
FPSはタイムラインで計算
“前に少し触れたようにFLASHでゲームを作ろうと思う。
また連載モノを考えているが、周辺知識を埋めてからのほうが安全なので、今回はFPSについて。
Flashゲーム講座&アクションスクリプトサンプル集がかなり参考になるが、単なるゲームにとどまらずランキングなども盛り込もうと考えたときに不正対策としてFPSは1つの鍵になると考えている。(もっともパーフェクトはありえない)
ようするにFPSは自前で計算するしかないらしい。
PG思考のオレにはタイムラインを意識したFLASHのコーディングが苦手なため、自前FPSをどう実装すればよいのかピンとこない。
今後、追求していくとする。
複雑なFLASHをタイムラインのみの力づくでオーサリングする人って、ある意味尊敬するなぁ。
ある意味で・・・
追加で、FLASHを透過表示するための
<param name="wmode" value="opaque" />
が、FPSを安定させるのに役立つらしいので、参考情報として残しておこう。
参考:3ping.org”
12
足おとを聞き分ける
“このサイトに飛んできた元URL(referer)を足おと
として集計しているが、その仕組み上、ローカルIPだったり無効なIPやテストアップしただけのブログなどなど、除外したいものがけっこうあった。 そこで、かねてから先送りしていたeclude指定可能なような変更を加えた。 ◆/home/hoge/tmp/footstep4http_referer.sh referer_exclude.txt に除外したいIP(足おとにリストアップされたURLとする)を1件1行として保存しておくだけ。
#!/bin/sh
TARGET_INPUT=/home/hoge/tmp/referer.txt;
TARGET_INPUT_TEMP=/home/hoge/tmp/referer.tmp;
TARGET_EXCLUDE=/home/hoge/tmp/referer_exclude.txt;
TARGET_EXCLUDE_TEMP=/home/hoge/tmp/referer_exclude.tmp;
cat $TARGET_EXCLUDE | sort | uniq ...”
10
ActionScriptでオーバーライド
“ちょっとActionScriptの調べ物をすると3.0がヒットすることが多いが、最近ようやくActionScriptを触る機会が増えてきたといっても2.0のオレにはちょっと敷居が高い。
2.0でもオーバーライドが可能なようで、ちょっと驚いた。
LoadVarsクラスでデータをサーバにPOST(やGET)するときにURLエンコードしないようなオーバーライドは、こんな感じに実装するらしい。
/////////////////////////////////////////////////
// URLエンコードしないsendメソッド
// LoadVars.sendNoEnc()
LoadVars.prototype.sendNoEnc = function( url, target, method)
{
// ...”
04
外部ファイルの読み込み
“FLASHで外部ファイルを読み込むのに1番簡単な方法は、LoadVars()を使用する方法かな?
FLASHで動的パラメータ処理でも触れたように読み込みたい値をURLパラメータに似た形式「変数名A=値A&変数名B=値B&・・・」でテキストファイルを用意しておけば良い。
on(click) {
var myLoad = new LoadVars();
myLoad.onLoad = function(result) {
trace("NAME:"+this.name);
trace("MAIL:"+this.mail);
};
myLoad.load("profile.txt");
}
profile.txtは次のような内容で用意しておく。
mail=hoge@example.com&name=foo
XMLの読み込みは次の課題としましょう。”
| Jun 27
FLASHで動的パラメータ処理
“調べればすぐに出てくるが、FLASHで動的パラメータを指定する方法。
HTMLのswf指定タグで、次のように記述する。
<param name="flashvars" value="hoge=aaa&foo=bbb">
FLASHでこの値を読み込むには、
trace(_root.hoge);
trace(_root.foo);
とすれば良い。
ちなみに<embed>タグの場合は、
<embed flashvars="hoge=aaa&foo=bbb" ... >
だが、たしか<embed>タグはXHTMLでは未サポートだったと思う。
W3CのHTML構文チェックでNGになるし、Doctype宣言などを厳格に行うとFirefoxでは表示されなかったはず。”
22
ActionScriptでテキスト入力の受付
“FLASHでゲームを作ろうと思ってる。
必要な要素をテストで確かめておく。まずは、テキストボックスに文字入力し、ENTERで確定するような処理を想定。
適当にテキストボックス(テキスト入力)を配置して、プロパティタブの「変数」に"hoge"と入力。そのテキストボックスをインスタンス化(ムービークリップ)して、次のActionScriptを貼り付ける。
サンプル実行するときにテキストボックス位置が透明で見分けが付かないので目印を置いておくと良い。
onClipEvent (enterFrame) {
if (Key.isDown(Key.ENTER)) {
if( hoge != "" ) {
hoge_save = hoge;
trace(hoge_save);
hoge = ""; ...”
20
ActionScriptで全角数字を半角変換
“ActionScriptで、全角数字を半角に変換するためには、1バイトずつ判定する必要がある。PHPがいかに便利かと思う。
こんな感じです。
応用すれば英文字も対応できるが、もう少しスマートな方法ないかなぁ・・・
function tohalf( str ) {
var len = str.length;
var ret = "";
for ( i = 0; ...”
15
SQL*PlusでSQLスクリプト
“Oracleで実行結果をファイル出力するときにお決まりで必要な処理などをメモしておく。
◆一定レコードごとのセパレータを無効
set pagesize 0
◆フィールド名ラベルを非表示
set heading off
◆表示桁数設定
set linesize 200
◆出力開始
spool
◆出力終了
spool off
◆コメント出力
PROMPT
正直なところ、カテゴリ「Oracle」を作るにはあまりにOracleの知識ありません・・・”
12
足おと復活
“サイト表示を少しでも軽くしようと、アクセス解析用のプラグインを外したので、そのコバンザメであった「足おと」プラグインは停止してました。
元々、意図しない検索エンジン結果に表示されてしまうというので、適切ではないんだけど、後ろ髪ひかれていた状態だったので復活しました。
index.phpで、$_SERVERを取得してテキスト保存。
crondで、リンクHTML生成。
sidebar.phpでそれをインクルード。
それだけです。
◆index.php
if ( ( $_SERVER != "" ) && ( ! strstr( $_SERVER, "mydomain" ) ) ...”
08 05
切り抜きFLASH
“スナップ写真を加工するちょっと(ほんとにちょっと)面白いアイディア。
こんな写真が作れたらちょっと(ほんとにちょっと)面白くないかな?
まず人物部分はユーザがマウスで切り抜く。作成ボタンを押す(ポチッとな)
完成。
ん?どんな写真かって?
マウスに連動して、切り抜いた人物部分と背景とがビミョーに逆位相に動くような演出。
擬似3Dとでも呼べば良いのでしょうか。
◆検証課題など
1.画像をアップロード
割とeasyでしょう。
2.Ajaxでポリゴン選択
ポリゴン選択だけなら、あの手この手。
3.ポリゴン選択の切り抜きと拡大
ポリゴン情報からGDで切り抜きができるかが至難の業か?
4.合成してFLASH書き出し
FLASHはmingだったかのライブラリ使うんだろうが、
タイマなんかも駆使しなきゃいけなさそうで、これも
困難を極めそう・・・
5.マウス連動が理想
4と同じ。
6.自動切り抜きは夢。
まー無理でしょう。
PHPで顔認識アルゴリズムはあるとはいっても・・・
(これも今回のアイディアのヒントだったんだが)
そふぃのPHP入門
WEB for Beginner 作成支援
あたりが参考になりそうだが、企画倒れに終わりそうだな。
それよりは、tetrista powered by typistaのFLASH版のが先決だなぁ。”
04
タイマー処理
“さて次のFLASHネタは、タイマー処理する場合のActionScriptの書き方。
ミリ秒指定でコールバックハンドラを登録して、不要になったらタイマーリセットして、IDをnullっておくだけ。
※JavaScriptとまったく同じで助かった(^^
shige&marizoの結婚式2次会向けに作ったビンゴでさんざん勉強した。
今さらだが、PC探してどこかに公開してみよかな。
hoge.htmlTextにカウンタを表示して、1秒ごとに3ずつインクリメントするサンプル。
100を越えたら終了。
1.タイマーのセット
var counter = 0;
var intervalID = setInterval( incrementCounter, 1000, 3 );
counter、intervalIDはグローバル変数として宣言します。
(もっとスマートな方法はあるでしょうが簡便さを優先)
setIntervalのパラメータは、コールバックハンドラ、タイマー値(ミリ秒)、
ハンドラへのパラメータ(不要なら省略可)の順です。
2.コールバックハンドラとタイマーリセット
function incrementCounter( increment ) {
...”
01
【連載】デザインカスタマイズ ~ 番外編 ~
“デザインカスタマイズをしていくにあたって、便宜的に改修中のデザイン(テンプレート)と、実運用を切り替えられる仕組みがあると良いなと思い、調査しました。
その結果、切り替えて確認できるのがトップページに限定されるものの、なんとか近しいハックがわかったので、番外編として残しておく。
まず、通常のキャッシュ化(または過去アーカイブ、カテゴリ表示等の非キャッシュ表示)には存在しないGETパラメータを仕様追加した。
template=TestTemplateとする。(TestTemplateは適宜読み替えてください)
→ http://www.hoge.com/?template=TestTemplate
とすることでテスト用のテンプレート表示が可能。
そのうえで、テンプレートを決定する関数(2つ)をGETパラメータ有無により挙動が変わるような仕掛け。
◆wp-include/theme.php
下記の2関数を元の処理から変更する。テンプレート名をハードコーディング
しているので、適宜変更して欲しい。
function get_template() {
global $_GET;
...”
| May 30
バージョンアップメモ
“すでに2.2がリリースされてしまったので今さらという感があるが、2.1.3へのバージョンアップメモ。(あまりバージョンを晒すのは避けたいんだが・・・)
原則はWordPressカテゴリの内容でイケるはずだが、まとめたほうが良いかもしれない。
今回はかなり粗いメモレベルで。
#次のバージョンアップで苦労しそうだ。
別ディレクトリ、別DBで新規立ち上げし、ハック部分を適用した。
で、最後にダッシュボードの「各種設定」(だったかな?)から、サイトのURLを変更後、実際のディレクトリをリネームし、キャッシュ吐き出しを手動実行して、ほぼ完了という段取り。
おっとっとDBを元参照していたほうに変更しておくのを忘れずに。
とくにJavaScriptコードのサンプル投稿表示を実現するために、ゲストのコメント投稿のXSS対策が必要だったので、strip_tagsをwp_specialcharsに置換しているので、このあたりは、全体的にblog.oldとの見比べが必要かもしれない。
ほかにもダッシュボードで予約投稿記事の実際の投稿日時を表示するハックなんかも忘れていたので、まだ細かい点は対応漏れがあるんじゃないかと思う。
◆あった!
外部リンク用のクイックタグボタン
ちなみに記事のエクスポート/インポートだと、草稿でなくなってしまう不具合もあるようなので、本来はDBはそのまま利用したいところ。
→ それをしなかった理由はテーマチェンジを考えていて、テーマチェンジもDBを触っていそうだったというのが大きな理由。
---
wp-config.php
mb_language('Japanese');
...”
29
アクセス解析の月変わり失敗
“アクセス解析の月変わり処理が失敗してた・・・
4月分の日別が見えない出力になっている。
仕事でさんざんサーバ移行やドメイン移行のたびに骨を折っているのに、まだ失敗するか!?って感じで情けない。
詳しくはまったく追っていないんだが、あまり目星がつかない。
このペースだと6月以降にズレ込みそうだが、ちゃんと調べて過去分が参照できるようにしておかねば。
あとはshigeからも指摘されてる(shigeにだけはstatsの結果を見せたことがあるので)、ディテールの表示(リンク)がすべてデッドになっているのも調べないと・・・
アクセス解析結果に愛着は湧くようになったものの、根本が興味薄いってのが問題かもしれない。
ただ、言い訳すると、同様にSEOにも興味が薄いんだが、どちらも評価基準の目安でしかないという点が、自分の中でどうも消化しきれない理由。
ほんとに良いサイトなら、そんなもん大きな問題ではないっていうスタンスなので。
#もっともパフォーマンス/キャパシティの見積りデータとして外せないファクター
#だってことは理解してます。”
28
「最近のトラックバック」を追加
“最近の投稿、コメント追加のハックの延長で、トラックバックを追加しました。
3週間近く前に追加済みだったので今さらですが、書き留めておきます。
見知らぬ人、といっても元々このブログで紹介したり、ブログロールに追加しているサイト(ブログ)ホルダーの人からトラックバックをいただくのって、友人からもらうコメントとはまた違った嬉しさがあるもんですね。
◆wp-content/themes//sidebar.php
<li><h2><?php echo mb_convert_encoding('最近のトラックバック', 'UTF-8', 'AUTO');?></h2>
<ul>
<?php
wp_get_archives('type=trackbackbypost&limit=10&format=html');
?>
</ul>
</li>
◆wp-includes/general-template.php
438行目付近(すでにcommentbypostを追加済みを前提としてます)
wp_get_archives('type=trackbackbypost&limit=10&format=html');
のように呼び出せるようにコード追加。
} elseif ( ...”
25
【連載】デザインカスタマイズ ~ 2/4 ~
“「HTML convert time」をキャッシュ(index.html)に埋め込む方法です。
ちなみにパフォーマンスは、0.1~0.3秒近辺まで下がりました。当初目標の2秒を大幅に上回る成果です(^O^
実際にそこまで体感できないのは、別の要因と考えられます。
以下、説明が回りくどくなりそうなので、先にハック例を示します。
◆index.php
<?php
if ( ( $_SERVER == "/blog/" ) && ( $_SERVER != "xxx.xxx.xxx.xxx" ) ...”
23
いつも探すApacheの設定
“昨日の高速化も無縁ではないが、Apacheの設定で、htmlをphp稼動させるための設定をいつも探す。
ここにメモしておく。
AddType application/x-httpd-php .html .php
パフォーマンスには影響出るみたいだが、便利な設定なので、かなり好きな設定(^^”
22
Apacheのログローテート
“今更という感じだが、Apacheのログローテートの記述を書き留めておく。
設定する機会も少ない上、いつもどこかからコピーしてきているので、厳密に覚えてないんだよね。
ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/error_log.%Y%m%d 86400 540"
CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/access_log.%Y%m%d 86400 540" combined
”
13
URLエンコード
“文字化けってやっかいですね。
FLASHでサーバとデータをやりとりするときに、いらん要素で文字化けしないように、URLエンコード/デコードするのが良いようです。
サーバ側(PHPなど)で、エンコードしたテキストを
デコード(復元)する場合、
hoge = unescape( encodeText );
です。
※encodeTextに、サーバでurlencodeしたテキストを取得している前提。
逆にFLASHでエンコードするのは、escape()ですね。
---------
3ヶ月近く毎日更新してきましたが、何度となく触れているように明日から1週間はハワイに行ってきますので、更新が止まります。ひょっとしたらむこうで撮った写真なんかをアップするかも知れないですが、レギュラー投稿は5/21(月)からになると思います。
2歳ちょい手前の愛娘との機内道中が思いやられる・・・”
12
【連載】デザインカスタマイズ ~ 1/4 ~
“トップページだけだが、高速化完了!でパフォーマンス問題はひと段落したということにして、デザインのカスタマイズに入りたい。
(すでにテーマチェンジしているので見栄えはグッと変わりましたが)
カテゴリクラウドを見ればわかるとおり、WordPressネタで持ってたようなもんだが、何のためのブログ?といった感じで、ミイラ取りがミイラになってしまっている状態を脱却したい。
そして再び連載記事でいきます。1Wごとの更新になりそうです。
第1回は、前段として追加しているページナビについて。
「power source*::WP plugin: ページ番号を並べたナビゲーション - WP-PageNavi」を参考にさせていただきました。
プラグインをGaMerZ » Portfolio » Programmingからダウンロードして、ページナビを表示したい箇所(今回はwp-content/themes//index.php)に次のコードを書くだけ。
<?php wp_pagenavi(); ?>
下記の元からあるページナビは削除。
< ?php posts_nav_link(' — ...”
09
ActionScriptで文字を表示する
“徐々にFLASHカテゴリを充実させていきます。
まずは初歩の初歩。ActionScriptで文字を表示させる方法。
こういうレベルからなんです(^^;
対象バージョンは、6以降または8以降です。
1.インスタンス名をつける
ステージに配置したテキストオブジェクトにインスタンス名をつける。
→ hogeとする
2.文字列を代入する
ActionScriptで、
hoge.htmlText = "この文字列が表示されます";
とするだけ。
静止テキスト、ダイナミックテキスト、テキスト入力の違いはあとで調べよう。
※用途は想像つくんだが、それぞれプロパティやメソッドが違いそうなので・・・”
08
エクセルTIPS◆セル内改行の置換
“とあるエクセルデータをDB(MySQL)にインポートしなきゃいけなかったときに
セル内改行が入っていて、置換に困った。
調べてみたら、CTRL+Jで、置換ウィンドウに改行コードを入れることができることがわかった。
REPLACE、CHAR(13)やらを駆使してもうまくいかず(確か)、少しだけ苦労したので、メモっておく。”
06
高速化完了!
“【連載】足おと自動取得プラグイン~ 4/4(最終回) ~で
最近はそこそこアクセスしてもらえているようなので、断念したキャッシュ化にリトライします。
:
:
トップページ表示するのに、4秒から10数秒ってのはあり得ないですもんね。
1秒台を目指したいところだが、サーバが非力すぎる。2秒台までなんとかガンバロ。
と言ってしまったので、キャッシュ化しました。劇的に早くなったんじゃないかな。
いつものようにインチキ(W だけど、wgetで5分に1度、HTMLソースを取得しておき、通常このサイトにアクセスにきたときに、逐一DBをなめない方法。
#なのでページ最下部の「HTML convert time」は嘘でないが、リアルなものでない。
手順はいたって簡単です。
◆キャッシュ化方法
5分おきなので、下記のような記述。
*/5 * * * * /usr/bin/wget -O /home/hoge/public_html/blog/index.html "http://hoge/blog/index.php" > /dev/null ...”
05
コマンドラインなブログテーマだとっ
“ほぇ~、やられたー。というのは大げさな話。
「コマンドラインで閲覧するブログテーマ for WordPress」を秋元@サイボウズラボ・プログラマー・ブログで見かけた。
実際のサイト:Morticious Thrind
やられた。と思ったのは、こういうゲーム作ってみたいな~なんて思ってたので。
ようはシミュレーションといえなくないが、仮想サーバとか仮想ネットワーク上の管理者になりきるゲーム。逆にハッキングしたりってこともアリ。リアリティとゲーム性とのバランスがヒジョーに難しいと思われ、なーんにもアイディアは進展してないんだけど・・・
自分の中ではサーバ管理業務で休日のつど深夜早朝に携帯が鳴り、憔悴しきってしまったトラウマがあるものの、その実、サーバ管理者ってFireMan(申し訳ないがあえて消防士とは呼ばない)だと思っている。
当時の先輩と、今の会社で強力な仲間となったKZAと、この2人を見ていると、本当にカッコイイ。サーバ管理ってディフェンスではなくオフェンスではないかと錯覚するほどだ。
そういった思いで、コアでマニア受けで良いから作ってみたいなんて思ってました。
いやーしかし↑のサイトはよくできてるな。”
| Apr 28
【連載】足おと自動取得プラグイン ~ 番外編 その後の経過 ~
“考えた挙句、微調整して最新10件の「足あと」のみを表示するようにした。
その後、アクセス解析結果を見ていて、脈絡が不明なサイトや検索結果から飛んで来ていることがわかった。
足あとの波及効果だが、WordPressのダッシュボードから飛んできただけで、アダルト系や立ち上げたばかりで何もエントリされてないサイトばかりになってしまった。
ので、リンク元(リファラ)のランキングに変えてみたが・・・
対象外の設定もできるようにするか?
元ブラグインでできたような記憶もあるが。”
26
【連載】足おと自動取得プラグイン~ 4/4(最終回) ~
“少し空いてしまいましたが、足おと自動取得プラグインの最終回は予告どおり、DB版とテキスト版の性能比較です。
プラグインをテキスト実装(テキスト版はプラグインとは呼べないなぁ)して以来、1,100アクセス分(カウンタと合わないんだけど・・・)の平均をとりました。
日付変わりを考慮していないのは、除外データとしても、明らかに数秒オーダーのDB結果(10件程度)は除外しています。
さて、結果です。
DB平均:0.0373秒
テキスト平均:0.02314秒
大差なかったです(TT
大目に見て2倍違ったとしても、10msecの話だし。
といっても、差があるのは間違いないので、テキスト版で実装しておくことにします。
逸れるけど、分母の1,100アクセスとアクセスカウンタの差異のほうが気になるし、別途解析しているawstatsの結果を見ても、たしかに最近はそこそこアクセスしてもらえているようなので、断念したキャッシュ化にリトライします。
断念したのは、wp-cacheを入れてみたものの、それこそ今回の解析記録を採取するためにコンフリクトしてしまったためです。
も一回アクティブにするか、そうでなければハックで対応します。
トップページ表示するのに、4秒から10数秒ってのはあり得ないですもんね。
1秒台を目指したいところだが、サーバが非力すぎる。2秒台までなんとかガンバロ。”
25
表示速度アップに向けて
“たまたまawstatsの参照元URLでヒット件数の多いところを覗いたら、とくにプラグイン系では、いつもお世話になっているサイトで「 プラグインとテーマの見直しで表示速度アップ」なる記事を発見。
時間のあるときに、試してみようと思う。
ただ、Counterizeがパフォーマンス食ってるってことらしいので、せっかくの足おとまでフイになってしまうなぁ~。という二の足。
気がつくと、最近はWordPressネタばかりで、クラウドがどんどん肥大化してしまっている。も少し他のカテゴリも書きたい。
最近、ちょいちょいとActionScriptに触れる機会があった。RSSリーダーを作った。というよりflaファイルで落ちていたものを改良しただけなんだが、多少は勉強になったかな。
そうとうプライオリティは下がるが、COOLなRSSティッカーも作ろうと思う。
サイトの体裁も変えたいし、山積みだな。こりゃ。”
20
【連載】足おと自動取得プラグイン~ 3/4 ~
“昨日は番外編ではぐらかしてみましたが、第3回のテキスト実装(案2)です。
すでにディテールを変更することは書きましたので、さっそく内容にいきます。
概要は、crondにて、refererに wp-admin を含むものをDBから抽出し、(ブログ)サイトトップと思われるURLを整形("wp-admin"以降を除去)した一覧を出力するというものです。
「足おと」をテキスト版で表示するときになるべくペナルティをかけないという配慮で、ハイパーリンク付きで一覧出力します。
それをsidebar.php等で読み込むだけというもの。
とくに触れませんが、ファイルのパーミッション(実行/書き込み権限)には気をつけてください。
◆sidebar.php などへの加筆
/home/hoge・・・適宜変更してください
$footstep_txt = "/home/hoge/footstep.txt";
$output = "";
@$fp = fopen( $footstep_txt, "r" ) or dir( ...”
19
【連載】足おと自動取得プラグイン~ 番外編 ~
“予定どおりであれば第3回のテキスト実装ですが、ここは少し渇望感をあおって番外編「mixiの踏み逃げ」について。
最近、好悪のとくに悪(嫌い)はなるべく表に出さないようにと自己暗示を始めている。
不用意に敵を作ることもないなってこと。
そういうこともあって、mixiについて思うところは好悪に関わらず言及しないようにしていた。でもニュートラルとノンポリは紙一重だし。
なので、少し思うところを綴っておく気になった。
ブログを始めるきっかけとなった理由のひとつには、日々感じたことを自分で見返すことの重要性がある。あのころはこんな幼稚なこと考えてたのか。とか我ながら感心する内容を書いていたりも。
過去に偉業をなした人の偉人伝は多くはその人の日記や手紙によるものだと思う。読み書きができる+筆記道具を持っていることそれ自体が生活水準(教養や経済面)を示し、相互に影響していると考えている。
ともかく、予実管理という意味とも考えられるし、自分のためのもの。
それが次第に他の人がどう見ているか、どう思っているかがやっぱり気になるのでコメントが入ると素直にうれしい。
当然、お礼の気持ちとしては、その人が書いているブログがあればなんとかウィットに富んだコメントをお返ししたいと思う。
それで良い。
その気持ちがない、そう至らないには、書き手/読み手はともかく理由があるんだから。
どこか義務感が芽生えた時点で歪んでるんだよ。
確かに女性にとってみれば、足あとだけ残されるってのは気持ち良いものではないかもしれない。
でも、そういうリスク(大げさだ)もわかってやってるんじゃないのかな?mixiを。
友達の輪だけで広がるはずといったところで性善説に期待しても仕方ないでしょう。
ま、このへんにしておきましょ。(尻切れトンボも余計な誤解を招く恐れはあるが・・・)
「足あと」だから踏んで逃げるっていうことで、「足おと」であれば通りすがったんだな程度に思えるのでは!?なんてね。
【補足】
あまり作為的にコメントやトラックバック拒否にするのも良くないので、あえて他の記事と同じ設定にしておきますが、よほどの誤解を招いたりしない限りは、せっかくコメント等をいただいても、返信しませ~ん。
静観するように努めます。(今回は踏み逃げしてくれるほうがうれしいってことです(^^;)”
18
【連載】足おと自動取得プラグイン~ 2/4 ~
“さて、初のドキドキ(?)連載企画「足おと自動取得プラグイン」の第2回です。
いや~~~~、もうほとほと簡単でした(^O^)
プラグイン名は、FootStepに決定!
すでに右ペインに「足おと」を表示しています。
処理は referer に wp-admin を含む場合のみ、"wp-admin"以降を除去した文字列をURLとして配列で返却するだけのプラグインです。
*refererが正しい前提なら、それ以外も取得できますが、
ダッシュボードからの「足おと」にこだわります。
当然ですが「アクセスカウンタ用のプラグインCounterize」がアクティブになっていることが前提です。
同プラグインのバージョンアップを考慮するとブランチさせないほうが良いので、
あくまでも別プラグイン(といっても on Counterize)として作成する。
手順は、footstep.php などとして、例によって wp-content/plugins に保存して有効化してください。
次に wp-content/themes/テーマ名/sidebar.php などで、足おとを取得して表示するだけです。
以下、対象のテーブル名が wp_Counterize の場合になります。
◆sidebar.php などへの加筆
$referers ...”
17
【連載】足おと自動取得プラグイン~ 1/4 ~
“ほんの安っぽいインスピレーションだが、mixiでいう「足あと」を残す仕掛けもおもしろいかなと。
固有名詞でもないし、ほかのSNSにもある機能だが、「足おと」にしておこう(^^
触り程度ググってみたが、見つからなかったし、せっかくだからやってみよう。
ブログタイトルまで引いてくるのは手間がかかるので、URLだけでも拾っておく。
ブログロールの自動化と考えれば、公開してもとくに支障ないしね。
ついでにライター気分になって(W 全4回の読み切り記事でも書いてみようかと。
初回は、どんな実装にしようかの簡単なメモ。
◆案1
アクセスカウンタ用のプラグインCounterizeを流用。
同プラグインのバージョンアップを考慮するとブランチさせないほうが良いので、
あくまでも別プラグイン(といっても on Counterize)として作成する。
はっきりいってコレがもっともイージー。
ということで決定!
そんなんでは元も子もない(連載が続かない(^^;)ので、大差ないケド、ほかも一応残しておく。
◆案2
Counterizeで蓄積したDBから独自に取得する。
プラグインか、ハードコーディングかは問わない。
(もちろんハードコーディングは褒められたものではない)
が、シェル作成してcron実行したものをincludeする手法が良いかも知れない。
◆案3
Apacheのアクセスログのロウデータを解析する。
コスティすぎる!ので却下。
ようするにDBから取得して、文字列操作するだけですよ。そのためのメソッドを用意するだけの話。
ま、せめてtableくらいは作るか!?DB版とファイル版でも作って性能検証でもやってみるか!?うーん、悩ましい。
#どうもサーバ性能がプアなため、MySQLチューニングなども
#ノウハウ無いながらトライ&エラーしてみたが、
#あまり改善の兆しが見えなかった。
#トップ表示するのに4~10数秒ってあり得ないよな・・・
次回は案1の具体的な実装を、第3回は案2テキスト版を、最終回は両者の性能比較といった感じでしょか。
(ディテールは変わる可能性アリ)
番外編で「mixiの踏み逃げ」についても遅ればせながら思うところを。”
16
アクセス増のわけ
“アクセスカウンタを設置してみて、思う以上に参照されていることに気づいた。
ふと調べてみたら、http://hoge.jp/wp-admin/がrefererになっているものが多かった。
で、
参照されている記事でトラックバック(ピング)済みのサイト運営者が、
wp-adminの管理画面で、オレの記事を見てトラックバック「拒否」してるんだと、刹那に落ち込みかけたorz
簡単な観点を見落としていた。
ダッシュボード(管理画面トップページ)にRSSのように複数サイトの記事がエントリされるので、それをたどってきていたわけだ。なるほど。
公式サイトに登録してまもなくは、いつエントリされるんだろうかと首を長くしていたが、なかなか反映されなかったため、自ドメインは除外されるのかな~なんて思って、すっかり忘れていた。
確認してみたら、2つほどエントリされてた。
そろそろ売名ではなく、いろんなところでアピールしていこうかなと思いつつ。。。”
14
外部リンク用のクイックタグボタン
“WordPressで投稿するときにクイックタグボタンを使って、外部ページのリンクを張るんだが、毎度target="_blank"を入れるのが面倒で面倒で・・・
なので、直接JavaScriptを編集しておいた。
◆wp-includes/js/quicktags.js
以下の2箇所。
223 ...”
13
JavaScriptでtry~catch
“JavaScriptでWebアプリケーションを作ろうかと。
#といってもhtaでWin限定なんだけど(^^;
このとき、ウィンドウ移動させるためにイベントハンドラをオーバーライドしますが、
初回のマウスダウンと、ドラッグ開始直後に必ずエラー(アクセスが拒否されました)が発生する。
Javaと同じようにtry~catchが使えるので、エクセプション発生時は、エラー判定フラグ(eflag)をtrueにしておき、mouseupされてもドラッグ判定フラグ(dflag)はtrueのままにするという工夫で対処可能だった。
こうすることで、mousemove発生の都度、moveByが有効に機能するわけです。
対処済みのソースは以下のとおり。
<SCRIPT TYPE="text/javascript">
<!--
var dflag = false;
var eflag = false;
var posX, posY;
with(document){
onmousedown = function(){
dflag=true;
posX=event.clientX;
posY=event.clientY;
};
onmouseup = ...”
12
手軽なPHP、ゆえに落とし穴
“PHPはスクリプト言語なので、手軽に勉強、実装ができる。
そのためか基本を抑えずに欲しいところだけを満たして、それで良しとしていることが多いなぁと感じる。
そんな折、「PHPの文字化けを本気で解決する ぎじゅっやさん」というサイトを見て、いよいよ気をつけねばという思いになった。
とかく誤った説明が横行しているようだ。
常々、WEBに点在する情報を鵜呑みにすることに危険を感じていたんだが、複数サイトで同じ誤りが記述されていれば、それを信じてしまいがち。
「PHPの文字化けを本気で解決する ぎじゅっやさん」は、理解させるためにやや読み物的な要素が強いが、説得力を感じるし、原則は全面的に信用して良い気がする。
MSOに聞いてみると、やはり知っていたようで、彼も信用して良いのではとのことだった。(彼は文字コード/文字化け関連には強い)”
11
アクセスカウンタ設置
“本当は使い慣れているawstatsによるログ解析か、Google Analyticsをと
思ってみたりもしたんだが、シンプルなアクセスカウンタを
プラグイン(Counterize)で追加することにしました。
#いちいちDBに格納というのも非力なサーバなのでためらいもありましたが、
#かといってファイル吐き出しというのも旧来型だし・・・(^^;
参考になったのは、stereozenkai@少年NEWSと
Tips Communityです。
導入にあたっての内容は上記説明サイトとも重複してしまうが、phpsの拡張子で
ダウンロードしたプラグイン本体とimage1~4をwp-content/pluginsに保存し、
アクセスカウンタ用テーブルをcreateする。その際、テーブル名のプレフィックスを
決めて、プラグイン用のphpスクリプト内の"%s"を合わせる。
やや気になっていたんだけど、ダッシュボードの「最近の動き」でもカウンタが見れるようになってた。
◆アクセスカウンタ用テーブルのcreate用SQL
プレフィックスをhoge_と仮定。
create table hoge_Counterize
(
id integer not null auto_increment,
IP varchar(16) not null default 'unknown',
timestamp datetime ...”
07
qmailのタイムスタンプを変換する
“あまり使うことはないけど、qmailの独特なタイムスタンプを変換する方法。
(Webで調べればすぐに見つかるんだけど・・・)
◆TAI64N形式のタイムスタンプ変換
$ tai64nlocal < /service/qmail/log/main/current”
06
QRコード生成
“ぱふぅ家のホームページというサイトで、QRコード生成の方法を見つけた。
実際のライブラリは、swetake.comで配布してますし、ぱふぅ家のホームページのサンプルはライブラリ解凍時に作成されるサンプル(sample.php)と作法が違うためなのか動作しませんでした。
ので、sample.phpを参考にしごく簡単ですが、テキストボックスに入力した文字列をQRコード化するサンプルを作成しました。
動作するサンプルは、コチラです。
◆test.php
<?php
require("./qrcode_img.php");
Header("Content-type: image/png");
if( isset($_POST) && $_SERVER == "http://typista.dip.jp/test/qrcode_php0.50beta10/test.html" ) {
...”
03
moreの先読み対応
“WordPressのカスタマイズ記事ばかりになってしまっているが、そこそこの使い勝手を確保しなければ、その先に進めないと言い訳しつつ・・・
懸案だったmoreの先読み(onLoad)対応は、すでに完了しているが、そのハック方法をまとめる。
---
2007.05.04
タグをサニタイズしていなかったので、正しく表示されていなかった箇所を修正しました。
---
◆ポイント
http_requestの戻り(取得したmoreコンテンツ)にはIDが存在しないため、複数コネクションの交通整理が必要。
→ 配列化する。
101 http_request = new Array();
対象記事がhttp_request中なら、多重に処理しない。(無意味かつサーバ負荷)
154 ...”
01
スマイルアイコン対応予定メモ
“スマイルアイコンは、The Railroad Forumが豊富。
プラグイン導入のメモは、Custom Smileysを参考にしよ。
ダウンロードはCustom Smileys 2.4。”
| Mar 28
最近の投稿、コメント追加のハック
“WordPressは「最近の投稿」、「最近のコメント」がデフォルト機能にない。
プラグインもあるようだったが、この程度ならということで、ソース解析してみたら、
比較的ラクに(期待どおりの)ハックが可能でした。
最近の投稿はデフォルトのメソッドで表示可能。
◆wp-content/themes/EasyAll/sidebar.php
<li><h2><?php echo mb_convert_encoding('最近の投稿', 'UTF-8', 'AUTO');?></h2>
<ul>
<?php
wp_get_archives('type=postbypost&limit=10&format=html');
?>
</ul>
</li>
コメントは、ハックが必要。
◆wp-includes/general-template.php
411行目付近
wp_get_archives('type=commentbypost&limit=10&format=html');
のように呼び出せるようにコード追加。
※postbypostを参考にDBからwp_commentsテーブルを参照し、適宜必要なカラムを抽出する。
適切なSQLで
$arcresults = $wpdb->get_results
が実行された後であれば、
$arcresults→カラム名 で値参照可能なのでDB構造がわかっていればラク。
411 ...”
27
メール投稿の自動反映の仕掛け
“メール投稿の差出人チェックがあっさりハックできたので自動反映も
入れてみました。
なんてことはないです。crondで回すだけでした。
30 * * * * /usr/bin/wget -O - http://example.com/wp-mail.php > /dev/null 2>&1
”
26
カテゴリ表示のクラウド化
“カテゴリにエントリ数が表示されているのはシンプルで気に入っていたんだけど、
やっぱり視覚的に把握できることも重要かと。
catcloud Wordpress Plugin入れてみました。
またハック。
デフォルトだと成り行き改行(そのほうがクラウドっぽいが)なので右ペインの幅に収まりが悪い。
→ 不恰好
そこで1つずつ改行させ、スタイルも少し変更。
wp-content/plugins/catcloud.php
151行目付近
151 //$categories = array($url, ...”
25
ftpをスクリプト実行(shell)
“下記のようにすればシェルでftpを実行可能です。
※ユーザID、パスワードが平文で残ってしまうことを気にするのであれば、
パラメータ入力やキー入力して、ftpscript.txtを動的に生成するなどで
対処は可能でしょう。
◆autoftp.sh
#!/bin/sh
ftp -n -i < ftpget.txt
◆ftpscript.txt
open
user
as
mput *.html
bi
mput *.jpg
bye
”
24
ftpをスクリプト実行(DOS)
“下記のようにすればバッチファイルでftpを実行可能です。
※ユーザID、パスワードが平文で残ってしまうことを気にするのであれば、
パラメータ入力やキー入力して、ftpscript.txtを動的に生成するなどで
対処は可能でしょう。
◆autoftp.bat
ftp -i -n -s:ftpscript.txt
◆ftpscript.txt
open
user
hash
as
mput *.html
bi
mput *.jpg
bye
UNIX shell(bash)版は明日エントリーしておきます。”
23
意外な衝突
“moreをAjax化すると、コメントの編集画面からの操作で不具合あり。
現象は、修正やステータス変更、削除が不可。
エラーは、wp-includes/functions.php の814行目で、
$wp->main($query_vars);
のmainメソッドが存在しないというもの。
→ 意味不明
管理者ページから、「コメント」メニューで表示される一覧からは削除可能なので、回避できないわけじゃないが、編集はあいかわらず不可。
ためしに wp-contents/plugin/ajaxified-expand-post-now.php を削除すると、コメントの修正/削除が可能だったので、間違いない。
どういう関連か不明だが、意外な衝突。あまり調査するつもりはない。”
.htaccessによるhttp転送設定
“.htaccessでの転送設定は、いつもその場で調べていることなので、備忘録的に
まとめておこう。
大雑把には、
http://www.example.jp/ → http://www.example.com/
の転送を設定する方法。
◆すべてを1箇所にリダイレクト
RedirectMatch ^(.*)$ http://www.example.com/hoge/
例
http://www.example.jp/
http://www.example.jp/hoge/
http://www.example.jp/hoge/foo/
がすべて
http://www.example.com/hoge/
に転送される。
◆特定URL(ディレクトリ)配下以外をリダイレクト
RedirectMatch ~ http://www.example.com/hoge/
http://www.example.jp/hoge/foo*
以外のすべてが
http://www.example.com/hoge/
に転送される。
※http://www.example.jp/hoge/foo* はそのままアクセス可能
◆別ドメイン(または別ディレクトリ)の同一階層のREQUEST_URIにリダイレクト
RedirectMatch ^(.*)$ http://www.example.com$1
http://www.example.jp/
http://www.example.jp/hoge/
http://www.example.jp/hoge/foo/
がそれぞれ
http://www.example.com/
http://www.example.com/hoge/
http://www.example.com/hoge/foo/
に転送される。
正規表現に一致するか次第なので、表現によっては複合することも可能。
◆参考サイト
.htaccessのサンプル・設定 ”
22
moreをキャッシュ化
“昨日はmoreの日本語化を書いた。
「続きを読む」をクリックする都度、AjaxでDB問い合わせしていたので、
1度読み込んだ記事はキャッシュしておこうというハックです。
◆ajaxified-expand-post-now.php
160行目付近
// キャッシュ用配列
cacheMore = new Array();
function fetchLoading() {
// ...”
21
WP課題
“メール投稿のカテゴリ対応
→仕組みはわりと簡単なので、仕様決めするだけ。1行目にカンマ区切りで複数カテゴリ指定できるようにするかな。
最近の投稿、コメントを表示
→少しググれば見つかりそうだな。
クォートの体裁
→インデント(left-paddingかmargin)を狭めるなど
コードタグの意味と体裁
→常にクォートと併用してるせいなのか、文字色が途中で変わってしまう。確認。
投稿フォームのリッチ化
→BBコードが良いかわからないがフォントサイズ、色指定くらいは今更タグ打ちたくないな。追加したい。
コメント投稿時のサニタイズ調査
→先に確認しておかないとセッションハイジャックサンプルもエントリできない。
デザインテンプレのカスタマイズ
→そろそろ優先順位上げて考えようかな。シンプルに。”
moreの日本語化
“Ajax で記事を折り畳んでくれるプラグインのAjaxified Expand Post NOWがベストかはわからないが、この機能は必須だと感じていたので、早速いれてみたら、
どうも日本語で「続きを読む」「続きを隠す」とすることができなかった。
簡単な話、mb_convert_encording('続きを読む', 'UTF-8', 'AUTO') が必要だっただけ(TT
お粗末。”
20
メール投稿の差出人チェック
“情けない話だが、ハードコーディングで指定メールアドレス以外
からの投稿は拒否するように設定。
wp-mail.php
※見づらいと思いますが、コメントのある行が追加行
for ($i=1; $i < = $count; $i++) :
...”
サムネイル画像をドカーンと作成
“Webサイト制作で、サイトツリーのサムネイルってけっこうニーズがあると思います。
ここでは、ローカル(PC)環境でサムネイルを作成する方法を紹介。
本当はGDなどでサーバ上で作りたいところですが、どうもCUIでは無理なような話ばかりだし、
すでにフリーで存在するASPなどもけっこう時間がかかったりするので、更新性の高くないサイトであれば、ローカルでも充分ではないか?という発想で。
さて、説明です。
CrenaHtml2jpgというフリーウェアを使います。
GUI版もシンプルですが、コマンドラインにも対応しているし、縦方向の成り行きもキャプチャしてくれるスグレモノです。
補足:縦方向を固定させる(途中で切れるが)ことも可能です
DOSで外部ファイル(CSV)を読み込んでバッチ処理を応用して、サムネイル作成したいURL一覧をテキストファイルで用意します。
CrenaHtml2jpgの自動ファイル名を使うならそれでも良いですが、
メンドクサイようでも先に決めておけば、管理がラクになる。
◆url.txt
1カラム目をサムネイル取得したいURL、2カラム目をサムネイルのファイル名とした半角スペース区切りのCSVを作成。
(ファイル名が重複しないように注意!)
ローカル環境でWebサイトを作成している場合などは、ディレクトリパス付きでサムネイルのファイル名を指定しておけば、
コンテンツ(HTMLファイル)と同じ階層に保存することも可能です。
※その場合は " (ダブルクォート)で囲っておくのが良いと思います。
http://www.yahoo.co.jp/ yahoo.jpg
http://www.google.co.jp/ google.jpg
◆getCapture.bat
url.txtを1行ずつ読み込んでは、crenahtml2jpg.batにパラメータ渡しします。
FOR /F "eol=# tokens=1,2" %%a in (url.txt) do CrenaHtml2jpg.bat "%%a" "%%b"
◆crenahtml2jpg.bat
crenahtml2jpg.bat ...”
19
快適未来投稿
“MovableTypeからWordPressに乗り換えて、予約投稿も動作するし、快適そのもの。
ただ、管理ページで予約投稿している「予定されたエントリー」が4時間後とか1日後という表記なので、(インチキだが)毎日更新の実績を作りたいときに、2日後=24~48時間のどこを指すのかがよくわからない。
ということでハック。
wp-admin/index.php
の91行目付近。
91 //echo ...”
18
moreのAjax化
“手当たり次第にWPカスタマイズの続き。
moreの使い勝手は、ブログを見てくれる人への細かい配慮ですね。
って、いちいち画面遷移してしまうのが自分で許せないだけだったりして(^^;
早速、moreを仕込んでおこう。
◆moreをAjax化するプラグイン
WordPress plugin - Ajaxified Expand Post NOW
からzipをダウンロードし、ajaxified-expand-post-now.php を wp-content/plugins にPUT→管理者ページからプラグインの有効化。
◆参考サイト
Ajax で記事を折り畳んでくれるプラグイン”
DOSで外部ファイル(CSV)を読み込んでバッチ処理
“Winで入手したデータ(CSV)をわざわざLinuxに持っていくのも非効率だしっていうときに、DOSでスペース/タブ区切りのCSVをバッチ処理する方法です。
このページが非常に人気が高いので、サンプルを用意しました。
サンプルは「バッチファイルにTSVをドラッグ&ドロップするだけでHTML化(TABLE化)」するものです。
正常にHTML化できた場合はデフォルトブラウザで表示します。
CSVではなく、TSV(タブ区切り)ですので、注意してください。
◆サンプル
http://typista.xii.jp/wp-content/uploads/analytics.zip
このサンプルに同梱したTSVは、Google Analytics(2012.02.03時点の最新バージョン)の「標準レポート」→「コンテンツ」→「サイトコンテンツ」→「ページ」で「TSV」形式でエクスポートしたものです。
バッチファイルが想定しているフォーマットもそれを期待していますので、別フォーマットの場合には手直しが必要です。
この手法を利用すれば、urlのリストを作っておいて、そのサムネイルを一括で作ってしまうこともけっこうラクにできる。別途サムネイル専用のフリーウェア(Win版)は必要ですが。
hoge.txtがCSVで、実処理はfoo.batにお任せ。
FOR /F "eol=# tokens=1,2" %%a in (hoge.txt) do foo.bat %%a %%b
*上記は1行で表記しないと(タブン)NG
eol=#
は、#をEndOfLine(行末)と見なすという意味なので、コメント行もOK。裏を返せば、データとして"#"が存在するときは、期待しない結果になってしまうってことだ。
tokens=1,2
は、デリミタ(デフォルトは半角スペースまたはタブ)で分けた要素の1つ目と2つ目という意味で、%%aから始めると、暗黙で2つ目は%%bとなる(らしい)。
ちなみにそのデリミタは、「delims=,」とすればカンマ区切りになるはず。”
17
手当たり次第にWPカスタマイズ
“プラグインを手当たり次第に試してます。
スパム対策、moreのAjax化やプラグインではなけれど、外部リンクをポップアップでサムネイル表示するAjaxなどなど。
たいていは「ブログロール」に入れておくけど、あとでまたメモとしてまとめておかないと。”
16
ブログロール(Bookmark)の別ウィンドウリンク
“W3C勧告は別の機会に調べるとして、どうもXHTMLのバージョンやStrict、Transitionalの違いによっては、リンクタグのtargetプロパティがdropしているようです。
そうはいっても、外部リンクはやっぱり別ウィンドウで表示したいので、ちょこっとハックかけました。
wp-includes/bookmark-template.php
の121行目付近。
121 ...”
15
Ajaxその1
“あまりキレイなソースでなくて恥ずかしいんですが、Ajaxでフォームで指定したidから当ブログのタイトルを引いてくるサンプルです。
さらに恥ずかしいことに、もともとはJSONのサンプルを作ろうとして、途中で断念してしまったものです。
ついでにFireFoxでしか動作しません。IEはNGです。(これは引用したjsに問題があるみたいです)
サンプルはブログエントリとしての稼動は不可だったため、別途用意してあります。
→ こちら
◆ファイルの説明
getBlogTitle.html・・・Ajaxで当ブログのタイトルをid検索するためのフォーム
getBlogTitle.php・・・idから実際にDB(MySQL)を検索するプログラム
getBlogIDMax.php・・・現在idのMAXを取得するプログラム
js/jslb_ajax02.js・・・Ajaxのフォームとプログラムを仲介するJavaScript
◆ソース
getBlogTitle.html
<html>
<!-- 暫定ライブラリ jslb_ajax02.js -->
<script language = "JavaScript"
...”
14
ブログ移行完了
“ブログ名(blogname)、説明(blogdescription)が日本語2バイトコードを受け付けてくれない現象は、php.iniの問題だった。
mbstring.encoding_translation = Off
で、あっけなく解決。
というわけで、MTに比べれば、ずいぶん快適にWordPressで稼動中です。
(やっぱり課題はあるんだけど)”
13
ブログ移行調整中
“MTの遅さに早くも辟易し、シンプルかつPHP動作のWordPressに移行を
調整中です。
エントリーはMTから移行するスクリプトがあるようなので心配していないが、
ブログ名(blogname)、説明(blogdescription)が日本語2バイトコードを
受け付けてくれない・・・
もう少し調べてみよう。”
12
キーボードランチャ
“すでに触れた「コイツにはかなわない」と思ったRYOお勧めのキーボードランチャ。
教えてもらって以来、相当愛用している。
◆CraftLaunch ver 2.08
http://hp.vector.co.jp/authors/VA012411/chapter-04.html
これが無いとPC操作の効率が半減するんじゃないかな。”
11
カスタマイズ
“カテゴリごとに何件のエントリーがあるかをカッコ付けなどで
表示できるようにしたい。
たぶんMTタグで可能だろう。
・・・MTやめよう。
重すぎだ。
ただいまWordPressを別で試験中です。”
10
FireFoxの便利プラグイン
“プラグインが正しいのか、エクステンションが正しいのかわかりませんが、
いろいろ試しつつ、精査した便利な機能。
(今後も見つかったら新規記事でエントリーしていく予定)
◆Web Developer
http://www.infoaxia.com/tools/webdeveloper/
JavaScriptやCookieのオフ/オンを始め、fromや画像の各種プロパティ、
tableを視覚的に表示したりできる。
◆QuickProxy
http://wikiwiki.jp/firefox/?Ext%2FQuickProxy
プロキシのオフ/オンをステータスバー領域のクリックで簡単に切り替えられる。
◆All-in-One Gestures
http://www.forest.impress.co.jp/article/2004/11/22/allinonegestures.html
マウスジェスチャ機能を追加できる。
◆FireBug
https://addons.mozilla.org/firefox/1843/
JavaScriptデバッガ。ちゃんとブレークポイントも設定できるし、ステップインや
ステップオーバにも対応。
◆ColorZilla
http://norahmodel.exblog.jp/321050/
ブラウジング中のサイト画面内の色をスポイトで調べることができる。
◆Resizeable Textarea
http://wikiwiki.jp/firefox/?Ext%2FResizeable%20Textarea
formのテキストエリアをドラッグ&ドロップでリサイズできる。
ブログなどのCMSの編集、入力に重宝。”
09
Typing Funtasista
“typistaの名前の由来です。
Typing Funtasistaという勝手な造語(ニュアンスでとらえてもらえれば)を
ショートにしたものです。
上には上がいるのは10歳も年下ながら、魅惑的な存在RYOに会って
痛感した。
っても、今までのエンジニア経験では彼以上はいないし、
リアルに知りえる範囲では我ながらNo.2という自負あり。
タイピング、Windows操作全般において。
#AKIBAに行けば、さらにツワモノはごろごろいるんだろうけど
そんなことを踏まえつつ、なにかと便利なメモなどをカテゴリ「typista」で
書いていこうと思う。
カテゴリマネジメントが大変なので押し込めるだけだったりして(^^;”
08
エクセルTIPS
“◆マウスクリックでセルに着色
下記のようなマクロで、セルをクリック(ポイント)するだけで、着色することができます。
サンプルは、そのうちアップします。
別途パレットを作成して、そこから色を指定(スポイトのような機能)をアドオンすれば、立派な(?)ペイントツールになります。
・・・そこまではエクセルを逸脱しすぎますが、まずはガントチャートもどき作成などのエッセンスには使えるかと。後日、もうすこし機能拡張したものを再アップします。
蛇足ですが、ガントチャートもどきも、(開始と終了)日付を入力するだけでセルに着色できるようにできるサンプルもそのうちアップします。
'=========================================
' セルの色番号を調べる
Sub CheckColor()
Sheets("sample001").Select
Message = "色番号を調べたいセルをA1形式で入力してください。"
Title = "調べたいセル?"
Cell = InputBox(Message, Title) 'インプットボックスで入力
ColorNumber = Range(Cell).Interior.ColorIndex '色番号を調べる
Title = ...”
06
viで行末までの変更
“ずっと前に人に教わったときは必要度がなく吸収できなかった
viのコマンド操作をメモしておく。
ちょうど最近、必要度があがっていたところで目の前でエースKZAが
操作していたので、レクチャーしてもらった。
(というほど大げさなもんでもないが・・・)
cw
単語の変更
c$
行末までの変更
あとはマークアップも教わったんだが、忘れてしまったな・・・
そのうち調べておこう。”
ユーザビリティで任意?
“技術メモ:imeモードoff
<input name="test" type="text" style="ime-mode:disabled" />
は、どこかで使いたいと思っていた機能です。
#WIN+IE限定なので賛否ありそうですが、自分がFireFox派であっても
#大多数に有効なら良いんじゃないか?と常々思っています。
さて、ユーザビリティで必須を少し掘り下げて、アクセスキーもあると良いなぁ。
と思いつつも、相当なショートカットオタクですが、さすがにWebサイトまではやや冗長傾向(^^;
<input class='radio' type='radio' name='sex' id='male' value='male'>
<label for='male' accesskey="M">男性(<u>M</u>)</label>
</input>
<br />
<input class='radio' type='radio' name='sex' id='female' value='female'>
<label for='female' accesskey="F">女性(<u>F</u>)</label>
</input>
<br />
<br />
<input class='checkbox' type='checkbox' name='os' id='os_mac' value='mac' onclick='' />
<label for='os_mac' accesskey="M">Macintosh(<u>M</u>)</label>
<br />
<input class='checkbox' type='checkbox' name='os[]' id='os_linux' value='linux' onclick='' />
<label for='os_linux' accesskey="L">Linux(<u>L</u>)</label>
◆サンプル
ALTキー(MacはCMDキー)+Mなどで、accesskey設定されたラベルがフォーカスされ、関連づけられたフォームのON/OFFになります。
男性(M)
女性(F)
Windows(W)
Macintosh(M)
Linux(L)
FireFoxでは、フォームにフォーカスが移るのみで、ON/OFFはスペースキーが必要でした。
さらに、上記サンプルのようにMが重複していたりすると、
IE6.0・・・先に宣言されたほうが有効
FF1.5.10・・・後に宣言されたほうが有効
という違いもありました。”
05
シェルのパラメータ処理
“日次でログ解析を自動化するときなどに、実行日の昨日に相当する
タイムスタンプ(YYYYMMDD形式)を取得する方法をよく使う。
何かの都合で期日指定で動かしたいことを想定したパラメータ処理を
入れておくと、次のようになる。
#!/bin/sh
YYYY=`date --date 'yesterday' +%Y`;
MM=`date --date 'yesterday' +%m`;
DD=`date --date 'yesterday' +%d`;
while getopts 'y:m:d:b:' opt "$@"
do
...”
04
シェルで外部ファイル読み込み
“CSV形式(半角スペース区切り)からの読み込みになるが。
#!/bin/sh
while read A B C
do
echo $A;
echo $B;
echo $C;
done < hoge.csv
”
01
ユーザビリティで必須
“ユーザとしてWebサイトで情報入力するとき、チェックボックスやラジオボタンの
ラベル(テキスト)をついついクリックしてしまう。
たいていが、それでは機能せず、チェックボックスそのもの、ラジオボタンそのものを
クリックしないとONできないのが、ヒジョーにやっかい。
そこで、
<input class='radio' type='radio' name='sex' id='male' value='male'>
<label for='male'>男性</label>
</input>
<br />
<input class='radio' type='radio' name='sex' id='female' value='female'>
<label for='female'>女性</label>
</input>
<br />
<br />
<input class='checkbox' type='checkbox' name='os' id='os_mac' value='mac' onclick='' />
<label for='os_mac'>Macintosh</label>
<br />
<input class='checkbox' type='checkbox' name='os[]' id='os_linux' value='linux' onclick='' />
<label for='os_linux'>Linux</label>
とすることで、あるべきユーザビリティになる。
必須にすべきではないか・・・と思う。
◆サンプル
男性
女性
Windows
Macintosh
Linux”
| Feb 28
MSのアクティブコンテンツに対するユーザエクスペリエンス変更対応
“javascriptメモ - 1つのフォーム内の値を複数ページに渡したい場合に刺激されて、そのうち載せようとしていたスクリプトをアップします。カテゴリ「TIPS」も新規作成しておこう。
ie6の2006年4月更新以降、(主に)FLASHコンテンツを再生する際にユーザの1クリックが必要になったため、JavaScriptによる書き出しで回避する。
【参考URL】
http://adobedm.adobe.co.jp/u/No/67662/59CD67E5_1279781/060417001.html
http://adobedm.adobe.co.jp/u/No/67662/59CD67E6_1279781/060417002.html
http://adobedm.adobe.co.jp/u/No/67662/59CD67E7_1279781/060417003.html
<script language="JavaScript">
function convertRunContent() {
if( document.convert.input.value == "" ) {
alert( "<object>タグを入力してください。" );
return;
}
if( document.convert.domain.value == "" ) {
alert( "URLを入力してください。" );
return;
}
var index = 0;
var paramLeft = new Array();
var paramRight = new Array();
var strDomain = '<script src="http://' + document.convert.domain.value + '\/AC_RunActiveContent.js" type="text\/javascript"><\/script>\n';
var strInput = document.convert.input.value;
var strOutputNoScript = "<noscript>\n";
strOutputNoScript += strInput;
strOutputNoScript += "<\/noscript>\n";
arrayLine = strInput.split("\n");
for( var i = 0; i < arrayLine.length; i++ ) {
if( (! arrayLine.match("embed") && (! arrayLine.match("EMBED")) ) ) {
targetLine = arrayLine.replace( " />", ">" );
targetLine = targetLine.replace( ">", "" );
targetLine = targetLine.replace( "<", "" );
targetLine = targetLine.replace( " = ", "=" );
while( targetLine.match("\"") ) {
targetLine = targetLine.replace( "\"", "" );
}
arrayElement = targetLine.split(" ");
isName = false;
isValue = false;
for( var j = 0; j < arrayElement.length; j++ ) {
if( arrayElement.match("=") ) {
lenTotal = arrayElement.length;
leftStart = 0;
leftLen = arrayElement.indexOf("=");
rightStart = arrayElement.indexOf("=") + 1;
rightLen = lenTotal - rightStart;
strLeft = arrayElement.substr( leftStart, leftLen );
strRight = arrayElement.substr( rightStart, rightLen );
if( strLeft == "name" ) {
paramLeft = strRight;
} else if( strLeft == "value" ) {
paramRight = strRight;
index++;
} else {
paramLeft = strLeft;
paramRight = strRight;
index++;
}
}
}
}
}
strOutput = "<script language='javascript'>\n";
strOutput += "AC_FL_RunContent(\n";
for( var i = 0; i < paramLeft.length; i++ ) {
paramRight = paramRight.replace( ".swf", "" );
strOutput += "\t'" + paramLeft + "',";
if( isNaN(parseInt(paramRight.charAt( paramRight.length - 1, 1 ))) ) {
paramRight = paramRight.substr( 0, ( paramRight.length - 1 ) );
}
strOutput += "'" + paramRight + "'";
if( i != paramLeft.length - 1 ) {
strOutput += ",\n";
}
}
strOutput += "\n);\n";
strOutput += "<\/script>\n";
document.convert.output.value = strDomain + strOutput + strOutputNoScript;
if (document.all && navigator.userAgent.match(/windows/i) && document.convert.output.value) {
copy_obj = document.convert.output.createTextRange()
copy_obj.execCommand("Copy")
alert("クリップボードにコピーしました");
}
}
</script>
<form name="convert">
<table>
<tr valign="top">
<td>URL</td>
<td>http://<input type="text" name="domain" value="" style="width: 200px;" />/AC_RunActiveContent.js</td>
<td width="350">Adobe社提供の<a href="http://www.adobe.com/jp/devnet/activecontent/articles/devletter.html" target="_blank">スクリプト(AC_RunActiveContent.js)</a>を参照可能なURL</td>
</tr>
<tr valign="top">
<td><nobr>修正元</nobr></td>
<td colspan="1">
<textarea name="input" cols="70" rows="10"></textarea>
<input type="button" onClick="convertRunContent()" value="↓変換↓" style="width: 200px;" />
</td>
<td><object>~</object>を貼り付けてください。</td>
</tr>
<tr valign="top">
<td><nobr>修正後</nobr></td>
<td colspan="1">
<textarea name="output" cols="70" rows="20"></textarea>
</td>
<td><noscript>も含め全て変換出力します。<br />※Windows + Internet Exploror4~ でのみ、変換実行後に<font color="red">クリップボードに結果を転送</font>します。</td>
</tr>
</table>
</form>
”
形態素解析システム
“カテゴリ「Apache」はあまり適切でないケド。
ブログのエントリーを入れるときに、キーワードやタグを自動的に拾えないかな?
と思って調べてみた。
◆和布蕪(MeCab)
http://mikilab.doshisha.ac.jp/dia/research/report/2005/0813/011/report20050813011.html
http://www.asahi-net.or.jp/~yw3t-trns/namazu/mecab/
http://chalow.net/2006-09-24-3.html
◆茶筌
http://chasen.naist.jp/hiki/ChaSen/
MeCabは、Text::MeCabを入れないとCGI動作できなかった。
おまけに
print "Content-type: text/html; charset=EUC-JP\n\n";
なんかも必要で、どうもPerlが絡むとよくわからない・・・
AllKeywords PluginとTags Plugin
というプラグインがソレのようにも見えるが、今ひとつ挙動がわからないので、
入れるかどうか躊躇。”
27
当面の課題
“◆パフォーマンス
まずもって遅い。mod_perlに変更すれば、劇的に早くなるということなんだが。
◆画像
プラグインPhoto Gallery Plugin for Movable Typeを入れようと試行錯誤中だが、どうも上手くいかない。
管理画面に「Create Photo Gallery」と出てこない。
◆ロゴ
ロゴをおしゃれなものに変更したいな。
◆「もっと読む」
エントリーの投稿時に意図的に「追記(more)」に入れないとダメみたい。
文字数設定しておけば、それ以上は自動的に折りたたんでくれるのがベスト。
過去アーカイブはJavaScriptで動的に展開したり折りたたんだりできるものが
あるみたいで、無理やり使おうとしてみたが、MTタグとの関連でNG。
MTタグもけっこういろいろあるみたいだが、限界がありそうだな。
◆抜粋、タグ、キーワード
これらも本文から自動的に拾ってくれるのが良いなー。
内容や文章の推敲には注力するけど、これらの周辺ユーティリティにまで
気を使ってられないと思うんだが・・・。
ちなみにキーワードは「はてなキーワード」にリンクするプラグインはあったな。
それと自分で辞書作成しておけば、キーワードを特定URLへリンクすることも
可能みたい。
PHPベースのブログを選択しておくべきだったか・・・
◆自動更新
これも上手く動作していないみたい。
要調査。
念のため、この記事ももう一度だけ自動更新設定しておいてみよう。
→ やっぱりNGだった。”
カレントパス取得
“実行時のカレントパス取得方法を言語ごとにまとめておく。
◆DOS
echo %~d0%~p0
※バッチファイル内でのみ有効(コマンドプロンプトで直接入力しても無効です)
◆PHP
if( $_SERVER ) {
$path = "https://" . $_SERVER . $_SERVER;
} else {
$path = "http://" ...”
23
カレンダーモジュール追加
“デフォルトでカレンダーモジュールが入ってない!
http://www.tku.ac.jp/~densan/local/homepage-blog/mt/tips/mt-tips-1.html
を参考にして簡単追加。
このMovableTypeカテゴリでは、これから先徐々にカスタマイズしていく履歴や
課題を記録していく。
DB(MySQL)やサーバそのもののバックアップも組まないとイケナイな。
難しい話じゃないし、ノウハウはあるが、さてどうやって物理的に別のところに
冗長化しておくかだ。(もう1台サーバ用意してrsyncか?んー・・・)”
22
httpsへの強制切り替え
“キャンペーンなどで告知したURLが「http」になってしまうことが
コミュニケーションロスで発生する。
セキュアサイトに見せるために強制的に「https」に切り替えたい
ときは、
if( !$_SERVER ) {
header("location: ".'https://' .$_SERVER .$_SERVER);
}
とすれば良い。
.htaccessでも可能だとは思うが。
これもそのうち追加アップしよ。携帯3キャリア対応も一緒に・・・”
ファイルのタイムスタンプを取得しYYYYMMディレクトリへ移動する方法
“ファイルのタイムスタンプを取得しリネームする方法に続いて、YYYYMM(年+月)ディレクトリごとに分ける方法。
#!/bin/sh
TARGET_BODY=access*
TEMP=mv_yyyymm.tmp.$$;
ls -lrt --time-style='+%Y%m' $TARGET_BODY | awk '{printf "%s/ %s\n",$6,$7; }' > $TEMP;
while read TARGET_DIR TARGET_FILE
do
...”
ファイルのタイムスタンプを取得しリネームする方法
“ログ解析やちょっとした機能をshellで作成していると、とある生成ファイル名を固定にしたいが、世代管理もしたいということがある。
そこで、ファイルのタイムスタンプをファイル名に付加して世代管理できるようにawkを使うとこうなるというサンプル。
TARGET=./hoge.log;
TIMESTAMP=`ls -l --time-style='+%Y%m%d' $TARGET | awk '{print $6; }'`;
mv $TARGET $TARGET.$TIMESTAMP;
hoge.logのタイムスタンプが2007/01/01の場合、hoge.log.20070101にリネームされる、といった具合。
DOSでも近しいことは実現できそうだが、ポリシーとしてはデフォルトで入っていないawkやperl、sedを使いたくない・・・
そのうち試してみよう。(awk前提になってしまうかな?)”
日付処理
“日付処理はshellやPHP、JavaScriptなどによってそれぞれ書式などが
違うのでまとめておく。
書式は数字の羅列に統一するので、少しわかりずらいが、必要に応じて
「月」「日」や「/」「:」などを入れたり、年月日までにとどめれば良い。
◆shell(bash)で現在の年月日時分秒を取得
NOW=`date +%Y%m%d%H%M%S`;
echo $NOW;
◆PHPで現在の年月日時分秒を取得
$NOW = date("YmdHis");
echo $NOW;
◆JavaScriptで現在の年月日時分秒を取得
<script language="JavaScript">
var _now = new Date();
var NOW = "" + ...”
21
クリップボードに文字列コピー
“(Win)IE限定なので、あまりWebプログラミングには適さない上、
XSSやスキミングの温床にもなりかねないが、知っていると
便利ということで。
window.clipboardData.setData( "text", str );
サンプルソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function test() {
var str = ...”
|
created by Snazzy Archives
;*~ I am very thankful to this topic because it really gives useful information ~,~