« 5月 2010 9月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Home > PC

PC Archive

iepngfix.htcのIE判定

  • 2010-05-12 (水)
  • PC

IE5.5やIE6でも透過PNGを表示できるようにしてくれるIE PNG Fixをとてもありがたく使わせてもらっているんだけど、IEのバージョン判定が甘い気がする。

問題の箇所はipengfix.htcの74行目付近。

	if (
		!/MSIE (5\.5|6)/.test(navigator.userAgent) ||
		typeof elm.filters == 'unknown'
	) {
		return;
	}

これだと透過PNGが使えるIE7やIE8でも適用されてしまう。
・・・というかこのプログラムはそういう仕様なのかも。
「IE5.5+ PNG Alpha Fix v2.0 Alpha」って書いてあるし。
IE5.5以上で透過PNG使えるようにするみたい。

  • Comments (Close): 0
  • Trackbacks (Close): 0

google スプレッドシートのフォーム機能の「必須」を「required」にする

  • 2010-04-01 (木)
  • PC

googleドキュメントでフォームを作ったんだけど、「必須」のところを英語で「required」って表示させたい。フランス語なら「Obligatoire」
海外の人にもアンケートに答えて欲しい。そんなときのtips。

googleドキュメントの仕様(予想)

googleにログインしている人
 →その人のgoogle docsの設定に依存
googleにログインしていない人
 →spread sheetを作った人のgoogle docsの設定に依存
 →言語が指定されていればその指定に従う

で、言語の指定方法はアドレスにhl=enをつけてあげる(英語の場合)だけ。

http://spreadsheets.google.com/viewform?hl=en&formkey=…

hl=frだとフランス語
hl=koだと韓国語
hl=itだとイタリア語
hl=deだとドイツ語
hl=deだとドイツ語
hl=spだとスペイン語
のようです。

  • Comments (Close): 0
  • Trackbacks (Close): 0

im.kayac.comでiPhoneにtwitterをプッシュ通知するphpソースコードサンプル

特定のユーザのtwitterの投稿をiPhoneにプッシュ通知してくれるアプリが欲しい。
そういうアプリはなさそうなので、本当はそういうアプリを作りたかったのだけれど、大変そうなのでim.kayac.comとphpとcronで実現してみた。
im.kayac.com(App Store)
このiPhoneアプリはいろいろ便利。プログラムかければいろんなのをプッシュ通知できる。

以下サンプルソース。変なところがあったら教えて欲しい。
これをcronで5分毎に実行する。
(cronで実行するときは、1行目に#!/usr/local/bin/phpって書く)

<?php
// 取得したいツイッターユーザの名前(ID)を配列で設定。
$tnames = array("tweetid");
 
// im.kayacのユーザ名
define(K_NAME, 'username');
// im.kayacでパスワード認証を設定している場合
define(K_PASS, 'pass'); //
// im.kayacで秘密鍵認証を設定している場合
define(K_SIG, 'pass');
 
// 重複取得回避用のログファイル
define(LOG_FILE_NAME, 'tw_log.php');
// エラーログ記録用のファイル
define(ERRLOG_FILE_NAME, 'tw_errlog.log');
 
// 取得したメッセージをim.kayac.comへ。
function outMessage($message){
	// メッセージの内容
 
	// 時間
	$timestamp = strtotime($message->created_at);
	$content = date("Y/m/d H:i",$timestamp)."@";
	// 名前
	$content .= $message->user->name.">>";
	// 内容
	$content .= $message->text."";
 
	// imkayacを使ってプッシュ
	imkayac($content);
	return;
}
 
// http://project-p.jp/halt/anubis/blog_show/1269をほぼそのまんま
// cURLでできるんじゃなかろうか。
function imkayac($message){
 
	$data = array(
	    "message" => $message,
	    "password" => K_PASS,
	);
 
	$data['sig'] = sha1($data['message'] . K_SIG);
	unset($data['password']);
 
	$data = http_build_query($data, "", "&");
 
	//header
	$header = array(
	    "Content-Type: application/x-www-form-urlencoded",
	    "Content-Length: ".strlen($data)
	);
 
	$context = array(
	    "http" => array(
	        "method"  => "POST",
	        "header"  => implode("\r\n", $header),
	        "content" => $data
	    )
	);
 
	$url = "http://im.kayac.com/api/post/".K_NAME;
	file_get_contents($url, false, stream_context_create($context));
	return;
}
 
 
// ログ取得(重複tweet読込回避)
function getLog(){
	$retval = array();
	if( ($fp = fopen(LOG_FILE_NAME,"r+") ) ){
		while (! feof($fp)) {
			$line = fgets ($fp, 4096);
			$data = explode(",", trim($line));
			$retval[$data[0]] = $data[1];
		}
		fclose($fp);
	}
	return $retval;
}
 
// ログ保存(重複tweet読込回避)
function saveLog($datas){
	$log = '';
	if(!empty($datas) && is_array($datas)){
		foreach($datas as $name => $id){
			if(!empty($name) && $id){
				$log .= $name.",".$id."\n";
			}
		}
	}
	$fp = fopen(LOG_FILE_NAME,"w+");
	flock($fp, LOCK_EX);
	fputs($fp, $log);
	flock($fp, LOCK_UN);
	fclose($fp);
	return;
}
 
// エラーログ保存(念のため)
function saveErrLog($message){
	$fp = fopen(ERRLOG_FILE_NAME,"a+");
	$date = date('Y/m/d h:i:s');
	$logmessage = $date." ".$message."\n";
	flock($fp, LOCK_EX);
	fputs($fp, $logmessage);
	flock($fp, LOCK_UN);
	fclose($fp);
	return;
}
 
// 重複取得回避用
$logs = getLog();
 
foreach($tnames as $tname){
	// 重複取得回避用
	if(!empty($logs[$tname])){
		$since_id = "?since_id=".$logs[$tname];
	} else {
		$since_id = "";
	}
 
	// 特定のユーザーのタイムライン取得用API
	$apiURL = "http://api.twitter.com/1/statuses/user_timeline/".$tname.".xml".$since_id;
 
	// cURLを使ってXML取得
	$ch = curl_init(); 
	curl_setopt($ch, CURLOPT_URL, $apiURL);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$retXML = curl_exec($ch); 
	curl_close($ch);
 
	// 取得したXMLを解析
	if(!empty($retXML) && ereg("^<\?xml", $retXML) && 
	   $xml = simplexml_load_string($retXML)
	){
		if($xml->status){
			foreach($xml->status as $message){
				// 重複取得回避用
				if($logs[$tname] <= $message->id){
					$logs[$tname] = $message->id;
				}
				// 取得したTLを出力
				outMessage($message);
			}
		}
	} else {
		// 一応エラーログ記録
		saveErrLog("xml取得失敗");
	}
}
 
// 重複取得回避用
saveLog($logs);
?>

twiiterAPIと通信する部分をいろいろ変えればReplyとかmentionとかだけ取得することも可能。
そんときはログインも必要になるので、「phpでTwitterをハンドリングするサンプル」を参考に変えたらいいと思う。
他に欲しい情報とかあったら、Twitter API Wikiのサイトをみればだいたい分かる。
英語読めなくても結構わかる。

※参考サイト

Artisteer – WordPressナビゲーションメニューの調整

aritsteer使ってる人ってあまりいないのだろうか。日本語の情報が少ない。

artisteerの作ったテーマを適用した場合、静的ページを作成したらそれがナビゲーションにメニューに自動的に表示されてとても便利。
でもメニューが増えてくると邪魔。
なのでそういうときは、テーマを編集する。
functions.php内に、art_menu_items()という関数があるのでそのwp_list_pagesのパラメータを以下のように編集。

変更前。

wp_list_pages(‘title_li=&sort_column=menu_order);

変更後。

wp_list_pages(‘title_li=&sort_column=menu_order&include=9,26,43,50,53′);

includeの後に表示させたいページIDをカンマ区切りで入れていけばOK。
ページIDは、管理画面の「ページ」から編集したい画面を選択するとURLがpost=xxとなってるのでその番号を記載する。
表示させたくないページだけ表示させないようにする場合はinclude→excludeにしてIDを指定する。
こんな感じ。

wp_list_pages(‘title_li=&sort_column=menu_order&exclude=3,4′);

参考サイト

  • Comments (Close): 0
  • Trackbacks (Close): 0

Thunderbirdでcp932の文字化け対策

Thunderbird(windows)でcharset=CP932のメールもらうと文字化けする。
で、対処方法みつけたのでメモ。

C:\Program Files\Mozilla Thunderbird\resフォルダのcharsetalias.propertiesというファイルを編集すればOK

#
# Aliases for Shift_JIS
#
x-sjis=Shift_JIS
shift-jis=Shift_JIS
ms_kanji=Shift_JIS
csshiftjis=Shift_JIS
windows-31j=Shift_JIS

↑の部分に以下の行を追加。

cp932=Shift_JIS

再起動したら文字化けしなくなってました。
厳密にはこの二つの文字コードは違うものらしいのだけれど、とりあえずこれで見られるようになったのでOKということで。

charset=CP932の文字コードはどうやらMac OS X のMail.app使ってるとそうなるらしい。
メールを送る人がCP932をやめてくれればいいのだけれど、言えないときもよくあるので、そんなときはこの対策。

  • Comments (Close): 0
  • Trackbacks (Close): 0

Thunderbirdでhtml形式の変換を避ける

「返信」ボタンを押すと、html形式で編集が始まる

メーラーはThunderbirdを使ってます。
「返信」ボタンを押すと、たまに勝手にhtml形式で編集が始まります。
原因はよくわからない。たまにそうなる。そんなの耐えられない。
それを回避する方法を探してたんだけど、どこにも設定がなくて・・・。
あきらめかけたところで

「ツール」⇒「オプション」⇒「詳細」⇒「一般」⇒「設定エディタ」を発見。

それらしい言葉(htmlとかeditor)のところを見当つけて、一個ずついじってやっと発見。
忘れてしまうと、もったいないのでメモ。

「設定エディタ」で値を変更

mail.identity.default.compose_html

これをfalseにすればいいっぽい。

いまだにhtmlのメールがキライで全部text形式で送ってます。
相手に届くメールの内容が意図しない形に編集されるのは嫌だ。

残りの課題

ISO-8859-1って何?

実はもう一個解決したい問題があって、これも「返信」を書いてるときなんだけど、「西欧(ISO-8859-1)」で編集が始まります。
それだけなら何の問題もないのだけれど、しばらくすると「UTF-8で送信したほうがいいよ」みたいな警告が出てきます。
警告がじゃまなので、常にUTF-8で編集するように設定したいのだけれど、設定の仕方がわからない。

  • Comments (Close): 0
  • Trackbacks (Close): 0

WindowsでTortoiseSVNを使う

さくらにSubversionをインストールの続きの記事。
さくらインターネットのレンタルサーバ(スタンダードプラン)にsubversionをインストールしてある前提で話を進めます。
WindowsのバージョンはXP SP3です。

Windowに以下をインストールして設定。

  • puttyごった煮版
  • TortoiseSVN

鍵認証でssh接続するので鍵の生成と管理用にputtyもインストールします。
私の場合は複数の接続先(さくらのスタンダードプランを2つ契約してる)でSVNを使ってるので、鍵を使いわけるためputtyごった煮版を使用してます。
なのでToroiseSVNのsshクライアントの設定とレポジトリのURLが他のサイトと少し違うかも。

  • sshクライアントの設定
  • “C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe” -l XXXXX -i “C:\Program Files\TortoiseSVN\bin\id_rsa.ppk”
    [sshクライアント] -l [ユーザID] -i [秘密鍵]

  • レポジトリのURL
  • svn+ssh://XXXXX.sakura.ne.jp/home/XXXXX/repo/test
    svn+ssh://[アドレス]/[リポジトリがあるディレクトリのパス]

となっているところが

  • sshクライアントの設定
  • “C:\Program Files\Putty\Plinkw.exe”
    [sshクライアント]

  • レポジトリのURL
  • svn+ssh://XXXXX@XXXXX.sakura.ne.jp/home/XXXXX/repo/test
    svn+ssh://[ユーザID]@[アドレス]/[リポジトリがあるディレクトリのパス]

になります。

以下詳細を説明していきます。

puttyごった煮版をインストール

http://yebisuya.dip.jp/Software/PuTTY/
からインストール版をダウンロードしてインストールします。
手順は省略(^^;)

TortoiseSVNをインストール

インストール方法はhttp://www.gside.org/Gentoo/subversion/subversion_client.htmlに載ってるのでそちらをみてください(^^;)
わかりやすいです。

ssh接続のための設定

svn+sshで接続するので、その設定を書いておきます。

鍵の生成

PuTTYgenを起動します。
場所は「すべてのプログラム」→「PuTTYごった煮版」→「PuTTYgen」。

鍵の生成

鍵の生成

「生成」ボタンを押して鍵生成。
マウスを適当に動かしてるとゲージが動いて鍵が生成される。

公開鍵の保存

公開鍵の保存

公開鍵の部分をコピーしてメモ帳などのエディタを開いてペースト。
「authorized_keys」という名前で保存。
これをサーバの /home/xxxxx/.ssh ディレクトリの中にアップロード。
もちろんxxxxxは自分のIDに置き換えてください。

秘密鍵の保存

秘密鍵の保存

「秘密鍵の保存」をクリックすると警告が出るけど、「はい」を押して適当な名前(とりあえず「id_rsa.ppk」で)をつけて保存。
場所は自分でわかりやすい場所で。
秘密鍵は厳重に管理してください。最悪の場合サイトがのっとられてしまいます。
本来なら秘密鍵にはパスワードをかけるべきです。
パスワードをかけておけば万が一秘密鍵がとられてしまった場合でも”少し”安心です。
心配な方はパスワードをかけてください。
パスワードを設定する場合は、「鍵のパスフレーズ」にパスワードを入力すれば設定できます。
ただしパスワードを設定すると毎回接続するときにパスワードを入力しないといけなくなります。
この辺は自己責任で。

次にPageantを起動。
場所は、「すべてのプログラム」→「PuTTYごった煮版」→「Pageant」。
※Pageantを起動して鍵を設定する操作はPC立ち上げ後、TortoiseSVNを使う前に毎回行わないとだめ。
面倒だからなんとかならないかな。

pageantの起動

pageantの起動

PCに斜め線が入ったアイコンをクリックor右クリックして「鍵の追加」をします。

pageant鍵の追加

pageant鍵の追加

で先ほど生成した秘密鍵「id_rsa.ppk」を追加。

TortoiseSVNの設定

適当なフォルダ(なんでもOK)で右クリック。

Tortoiseの設定

Tortoiseの設定

「TortoiseSVN」→「設定」を選択。

sshクライアント設定

sshクライアント設定

「ネットワーク」のsshクライアント設定の項目に「”C:\Program Files\Putty\Plinkw.exe”」と記入して「OK」をクリック。

TortoiseSVNを使ってチェックアウトとかコミットとか

TortoiseSVNを使ってバージョン管理するときの基本的な手順は以下。

  1. リポジトリを作ってサーバにアップロード
  2. リポジトリからチェックアウト
  3. ファイル(.phpとか.cとか)を作成してコミット
  4. ファイル(.phpとか.cとか)を変更・作成してコミット
  5. ファイル(.phpとか.cとか)を・・・以下ずっと続く

最初の2つをちょっとだけ詳しく書きます。

TortoiseSVNリポジトリの作成

TortoiseSVNリポジトリの作成

中身が空っぽのフォルダを作って、そのフォルダを右クリック。
「TortoiseSVN」→「リポジトリ作成」でリポジトリを作る。
リポジトリの種類は「Native filesystem(FSFS)」を選択。
フォルダ内にいくつかファイルが出来てるので全て /home/xxxxx/repo/test ディレクトリに入れる。(mkdirコマンドでディレクトリを作っておく)
xxxxxは自分のIDに置き換えてください。

これでリポジトリは作れたので次はチェックアウト。

SVNチェックアウト

SVNチェックアウト

これからプロジェクトで使うフォルダを右クリックして「SVNチェックアウト」をクリック。

SVNチェックアウト設定

SVNチェックアウト設定

リポジトリのURLに「svn+ssh://XXXXX@XXXXX.sakura.ne.jp/home/XXXXX/repo/test」と入力。
xxxxxは自分のIDに置き換えてください。

参考サイト

  1. putty→http://yebisuya.dip.jp/Software/PuTTY/
  2. TortoiseSVN→http://www.gside.org/Gentoo/subversion/subversion_client.html
  3. Totoise複数の鍵の使い分け→http://sfi.hamazo.tv/e1317475.html

さくらにsubversionをインストール

さくらインターネットのレンタルサーバ(スタンダードプラン)にsubversionをインストールする方法のメモです。

プログラムのバージョン管理は、使い慣れてるSubversionを使用。
サーバ側にsubversionをインストールして、クライアントはWindowsXPでToroiseSVNを使います。
サーバのOSはFreeBSD 6.1-RELEASE-p24 i386。

サーバにsubversionをインストールする

以下の3つが必要。

  1. subversion
  2. apr
  3. apr-util

検索したらswigとかneonも必要って書いてあったけど、上の3つだけで使えました。

subversionダウンロードして解凍

最新版はhttp://subversion.tigris.org/から、たどれば持ってこれます。
.tar.bz2でも.tar.gzでも.zipでもお好きなものを。
今回は1.5.2の.tar.gzを持ってきてインストール。

mkdir -p $HOME/local/src
cd $HOME/local/src
wget http://subversion.tigris.org/downloads/subversion-1.5.2.tar.gz
tar xzf subversion-1.5.2.tar.gz

APRとAPR-Utilをダウンロードして解凍

subversionは1.4.0移行だとAPRとAPR-Utilが入ってなくて
makeできないのでAPRとAPR-Utilをダウンロード。
最新版はもっと新しいけれど、subversionをconfigureしたときに
0.9.xを入れろと書いてあったので0.9.xの最新を持ってくる。
最新版はhttp://apr.apache.org/から0.9.XのところのDownloadをクリックしてたどれば持ってこられます。

cd $HOME/local/src
wget http://www.meisei-u.ac.jp/mirror/apache/dist/apr/apr-0.9.17.tar.gz
tar xzf apr-0.9.17.tar.gz
wget http://www.meisei-u.ac.jp/mirror/apache/dist/apr/apr-util-0.9.15.tar.gz
tar xzf apr-util-0.9.15.tar.gz

解凍した中身をsubversionのディレクトリにコピー。

cd $HOME/local/src
mkdir subversion-1.5.2/apr
mkdir subversion-1.5.2/apr-util
cp -rf apr-0.9.17/* subversion-1.5.2/apr
cp -rf apr-util-0.9.15/* subversion-1.5.2/apr-util

subversionインストール

cd $HOME/local/src
cd subversion-1.5.2
./configure --prefix=$HOME/local
make &amp;&amp; make install

configureはこれだけでいいのか不安。
でもこれで使えました。

windowsの設定は、WindowsでTortoiseSVNを使うに書いておきました。

参考サイト

さくらインターネット共有サーバにWordPressを設置

さくらインターネット共有サーバ(スタンダードプラン)でWordPressが動くようになるまでのメモ。
難しいところはなさそうなので、手順だけずらっとメモしておきます。

WordPressインストール手順

DBの準備

さくらのコントロールパネル「アプリケーションの設定」の「データベースの設定」からボタン押すだけ。

WordPerssのダウンロード

WordPress 日本語ローカルサイトから最新版(この記事を書いてるときは2.6.5)をダウンロード

展開してconfig.phpにDBの設定を書く

日本語ドキュメントがあるのでつまづきそうになったらそこを読めば大丈夫。

http://サイトURL/wp-admin/install.phpにアクセスしてサイト名とメールアドレスを入力

以上で、終わり。
古い記事だとphpのパーミッション変えるとか書いてあったけど、やらなくても(644のままで)大丈夫でした。

ホーム > PC

Search
Feeds
Meta

Return to page top