Smarty忘れたら見るメモ

smarty、たまにしか使わないのですぐに忘れるのです。

変数内で変数を展開して配列を表示
{$array[$smarty.get.hoge].title}
ピリオドの位置に注意しないとエラーになります。


Smartyで、配列の数を数える
{$array|@count}
このアットマークをよく忘れるのです。


URL自動リンク
$textの中にURLがあった場合自動でリンクを貼ってくれる拡張です。

引用:http://c-brains.jp/blog/wsg/08/02/08-195532.php

function smarty_modifier_auto_link($string, $type = 'url', $text = 'URL')
{
    // URL形式のチェック用文字列(正規表現)
    $regstr = "https?://[a-zA-Z0-9.-]{2,}
    (:[0-9]+)?(/[_.!~*a-zA-Z0-9;/?:@&=+$,%#-]+)?/?";
    switch ($type) {
        case 'url':
        return ereg_replace($regstr,"<a href=\"\\0\"
    target=\"_blank\" title=\"\\0\">\\0</a>", $string);
        break;
        case 'text':
        return ereg_replace($regstr,"[ <a href=\"\\0\"
        target=\"_blank\" title=\"\\0\">{$text}</a> ]", $string);
        break;
        default:
        return $string;
    }
}

これを「modifier.auto_link.php」という名前で保存し、「smarty/libs/plugins」の中に保存します。

{$text|auto_link}

とすることで
と、このように表示されます。また、オプションとして、

{$text|auto_link:"text":"URL"}

などとすると

こちら [ URL ]

こんな感じになります。


マルチバイト文字の切り取り

{$text|truncate:13:"..."}
などとすると、日本語などのマルチバイト文字の場合、文字化けが起こることがあります。
その対策用のプラグインです。

引用:http://webtech-walker.com/archive/2007/04/26154112.html

function smarty_modifier_mb_
($string, $length = 80, $etc = '…')
{
  if ($length == 0)
    return '';
  if (mb_strlen($string,"UTF-8") > $length) {
    $string = mb_substr($string, 0, $length,"UTF-8");
    return $string.$etc;
  } else {
    return $string;
  }
}

{$text|mb_truncate:20}

IE6でHTMLコメントを連続して書くとバグがでる

インターネットエクスプローラーの6と言えば、CSSにかんするバグが多く駄目ブラウザのレッテルを貼られているのですが、いまだに2割くらいの人が使用しているようです。

floatさせた要素のmarginが2倍になったりするバグは有名ですが、最近、検索しようにも表現しにくいバグに見舞われて大変困ったのでメモしときます。


現象としては、フロートさせたカラム内の画像が下に画像分ずれると言うものだったのですが。


左カラム|中央カラム|右カラム

この右カラムい入れた画像が真下にずれカラムのdivより外にはみ出していました。

最初はclearを入れ忘れているのかなどを疑ったのですが、それでもまったく直らず。

結局HTMLコメントが2つ連続で書かれていた部分の一つを削除したら直りました。

<div class="left">
</div>
<!--    end     -->
<!-- ========== -->  ←ここを削除
<div class="center">
</div>
<!--end-->
<div class="right">
</div>


IE6ではフロートさせた要素同士の間にコメントを二つ以上連続していれてはいけないようです。

参考URL
IEのHTMLコメントにコロンを使うとバグります
IE6で勝手にコンテンツ内容が複製されるバグ

使えるネット(TUKAERU-NET)にyumを入れる方法

つかえるネットのVPSにはyumが標準で入ってなかったのでインストールすることにする。

なおPLESK版を使ってる方は依存関係とかおかしくなるのでyumのインストールは良くないかもしれない。

まずcentosのバージョンを調べる

less /etc/redhat-release

5.3だったのでそれようのをとってくる。

wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/sqlite-3.3.6-2.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/sqlite-devel-3.3.6-2.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/m2crypto-0.16-6.el5.2.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/python-urlgrabber-3.1.0-2.noarch.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/rpm-python-4.4.2-48.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/yum-metadata-parser-1.1.2-2.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/yum-3.2.8-9.el5.centos.1.noarch.rpm


ところどころバージョンアップがあるので
http://mirror.centos.org/centos/5.3/os/x86_64/CentOS/
で最新版をしらべてURLを変更。

rpm --import http://vault.centos.org/5.2/os/x86_64/RPM-GPG-KEY-CentOS-5
rpm -ihv m2crypto-0.16-6.el5.3.x86_64.rpm
rpm -ihv python-elementtree-1.2.6-5.x86_64.rpm
rpm -ihv python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ihv python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -ihv python-urlgrabber-3.1.0-5.el5.noarch.rpm
rpm -ihv rpm-4.4.2.3-9.el5.x86_64.rpm
rpm -ihv rpm-python-4.4.2.3-9.el5.x86_64.rpm
rpm -ihv yum-metadata-parser-1.1.2-2.el5.x86_64.rpm


rpm -ihv yum-3.2.19-18.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm


最後の二つは同時に記述して入れる(依存関係でエラーがでるので)

FireFox3.5.3フォームのID欄やメールアドレス欄が出なくなった

最近、firefoxバージョン3.5.3のアップデートがありましたが、アップデートしたとたん、通常はフォームのテキストボックスにカーソルを合わせてキーボードの下をおすと、記憶していたIDやメールアドレスが出てきて、パスワードの自動入力ができるのですが、それが出なくなりました。

その解決方法をメモしときます。


C:\Documents and Settings\my_user\Application Data\Mozilla\Firefox\Profiles\q39m6jsy.default\extensions\{3112ca9c-de6d-4884-a869-9855de68056c}\components
の中にある「bootstrap.js」をテキストエディタで開く

ディレクトリは各々の環境によってかわりますので適宜変更してください。


153行目と154行目をコメントアウト

GTB_module.registerObject('{d6b783f9-9881-4f65-afdb-1face21044ae}',
'@mozilla.org/satchel/form-fill-controller;1',
'Google Toolbar Autofill Form Fill controller',
autofillService);


↓↓↓↓↓↓↓

GTB_module.registerObject('{d6b783f9-9881-4f65-afdb-1face21044ae}',
//'@mozilla.org/satchel/form-fill-controller;1',
//'Google Toolbar Autofill Form Fill controller',
autofillService);

行数テキストエディタなどによって変わるので注意。


最後にFirefoxのアドオンからGoogle Toolbarをいったん無効化して有効化します。

これでフォームの下を押したらパスワード候補が出てくるようになります。

twitterボットを作ってみた

twitterAPIの習得がてらに人工無脳bot)というのを作ってみた。

twitterボット ぬこ夫

仕様としては、トクトミがフォローしている人のタイムラインから言葉を学習してデータベースに蓄積していきます。

その際、レンタルサーバーの関係でchasenmecabなどの形態素解析は使えなかったので、単語単位での分け方はせずに、スペース、句読点くぎりで言葉を覚えていきます。

あとはマルコフ連鎖をつかって、単語のつながりもDBに入れ込んでいきます。



DBの構成は

・単語テーブル(ID,単語,文頭フラグ,文末フラグ)
・つながりテーブル(ID,つながり元単語ID,つながり先単語ID,出現回数)

となっています。

今後、キーワードを抽出して単語と結びつけるためのテーブルも作ろうと思っています。


TwitterAPIを使うにあたって参考にしたサイトはこちら

Twitter API 仕様書 日本語訳

twitterphpから投稿する関数

<?php
//twitter投稿api
//$textに投稿したいテキストを入れる

function add_twitter($text){

$url = "http://twitter.com/statuses/update.xml?";
$username = "アカウント名";
$password = "パスワード";
$params = "status=". rawurlencode($text);

$result = file_get_contents($url.$params , 
false, stream_context_create(array(
	"http" => array(
		"method" => "POST",
		"header" => "Authorization: Basic ".
 base64_encode($username. ":". $password)
	)
)));
}


?>

phptwitterのタイムラインのつぶやきを読み込む関数

Warning: file_get_contents(http://twitter.com/statuses/replies.rss) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /virtual/hogehoge/public_html/web-sashimi.com/bot/class/common.php on line 37

と言うエラーが出ていたが "method" => "POST"としていたのをGETにかえるとエラーが消えた。

<?php
//twitter記事を取得

function read_twitter(){

$url = "http://twitter.com/statuses/friends_timeline.rss";
$username = "アカウント名";
$password = "パスワード";
$result = file_get_contents($url,false, 
stream_context_create(array(
	"http" => array(
		"method" => "GET",
		"header" => "Authorization: Basic ".
 base64_encode($username. ":". $password)
	)
)));
return $result; 
}

?>

api経由で取得した日本語文字列が文字化けする。

//echo $rss = urldecode($rss);や
//echo $rss = utf8_encode($rss);など
色々やったが解決せず

文字コードというか文字の種類がhtml 数値文字参照というのに気付きやっと解決
単純に
$rss = mb_convert_encoding($rss,"utf8","HTML-ENTITIES");
こうするだけでよかった。

perfumeのダンスをカバーしてる外人さんの動画リスト

トクトミは相変わらず外人さんがニホンの曲などを歌ったり踊ったりしてるのを見ると変な興奮をおぼえるのですが。

これは何フェチなんでしょうか。

最近はperfumeのダンスを踊ってる外人さんの動画ばかり観てます。

ひとつここはリスト化しておこうとおもいます。


タイ:Polyrhythm+Chocolate disco
これは何のイベントだろうか。かなり練習している


チリ:コンピューターシティー
スペイン圏でperfume流行ってるのだろうか


スペイン:チョコレートディスコ
男性か?上手い。


スペイン:Twinkle Snow Powdery Snow
スペイン男子もperfumeを踊る


アメリカ:シークレットシークレット
カオスな感じで日常感がよい。


アメリカ:シークレットシークレット
切れがなさすぎて残念だがロケーションは良い。


台灣:Dream Fighter
胸元が良い。


アメリカ:チョコレートディスコ


オーストラリア:シークレットシークレット
この子が一番うまいかも。かなりのperfumeファンの模様。


デンマーク:シークレットシークレット
デンマーク人かわいいな。


カナダ:ワンルームディスコ
お面をつけてニコ動風


スペイン:GAME
オリジナルの振り付け。よくできてる。


?:ビタミンドロップ
この子もかわいいな




Neufillesのダンスカバー
perfumeじゃありませんが妙に気になったので。
Neufillesがどのような存在かしらないがモワモワっとした気分になる。

twitterをはじめました

ワールドビジネスサテライトを見て興味をそそられました。

http://twitter.com/k_tokutomi

blogとのちがいや掲示板とのちがいがわからないままですが

これだけ流行るのだから面白みがどこかにあるのだろう。

セカンドライフの時とはちがう、流行り方をしているような気がする。

セカンドライフはメディア主導で流行ってますよって報道されていましたが、実際全然だった。

ためしに入ってみましたが一目でわかる日本人に受け入れられない感。

ねずみを踏みまくって遊ぶこと1時間、すぐに飽きました。


twitterはどうだろうか。

snsの出だしと似ているのではないだろうか。
orkutが出てきて、mixigreeが出だしたころのようにIT系の人がかなり食いついているようで将来的には日本のユーザー数1000万とか行くかもしれませんね。


芸人としては情報のアウトプットツールを有効に使わなくてはと思うのです。