2008年9月27日土曜日

 

Firefox3のURLバーに表示される候補-スマートロケーションバーを無効

スマートロケーションバーを無効にする方法 - Firefox Help & Tutorials
※以降の操作は自己責任でお願いします。

自動補完リストを完全に無効にする

  1. ロケーションバーに「about:config 」と入力する。
    動作保証対象外になります!という警告ページが表示されるので、「細心の注意を払って使用する」をクリックして「about:config」ページを開く。
  2. 「browser.urlbar.maxRichResults」設定を見つける。
  3. 「browser.urlbar.maxRichResults」設定の名前をダブルクリックし、値に"-1"を入力する。
  4. Firefoxを再起動後、補完リストは無効になる。

ラベル:


2008年9月26日金曜日

 

【PHP】Zend framework入門

Zend frameworkの設置、設定、その他もろもろ初心者入門 - RwJ
Zend Frameworkで何ができるのか? - YassuRoom
Zend Framework のインストール - WHITE ALBUM

ラベル:


 

【CSS】角丸まとめ【Javascript】

JavaScript の角丸ライブラリまとめComments - てっく煮ブログ
角丸に関するあれこれ - WWW WATCH
25 Rounded Corners Techniques with CSS - CSS Juice
iPhone風ボタンデザインまとめ - DesignWalker
なんとなくまとめてみた。多分意味ないけど。
色々議論されてた気がするが、どれがベターなのか。画像の作り方も多種あったし。
下のは簡単だしまぁまぁ良さげ。角丸ボックスにシャドウが付くので。
じゃなきゃjQueryで空の要素追加でかな。
ドロップシャドウの効いた角丸ボックスを表現するjavascriptライブラリ - ユージック
ライブラリの配布元。 ShadedBorder - JavaScript Round Corners with Drop Shadow 動作確認デモ 詳細デモ シンプル・デモ download:shadedborder-0.6.1.zip(MITライセンス)
ライブラリを読み込む。

<script type="text/javascript" src="shadedborder.js">
効果を適用したい要素を与える。要素より後に記述されてないと無効のようなのでソースの最後にでも書く。p要素が必要なわけではない。

<script type="text/javascript">   border.render('round_me');   var border = RUZEE.ShadedBorder.create({ corner:5, shadow:10, border:2 }); </script>
いくつかの要素によって角丸が表現されてるので「class="sb"」を付けておくとボーダなど細かくスタイルが指定できる。
/*  HTML  */

<div id="round_me" class="sb"> <p>&nbsp;</p> </div>
/*  CSS  */

.sb-inner{      /*ボックス内の背景色はここで指定*/
    background:#FFF;
}
.sb-border{     /*ボックスのボーダー色はここで指定*/
    background:#EEE;
}
デフォルトのスタイルは「shadedborder.js」の最後の方に指定してある。
/*  shadedborder.jp  */
// add our styles to the document
document.write('\
  <style type="text/css">\
  .sb, .sbi, .sb *, .sbi * { position:relative; z-index:1; }\
  * html .sb, * html .sbi { height:1%; }\
  .sbi { display:inline-block; }\
  .sb-inner { background:#ddd; }\
  .sb-shadow { background:#000; }\
  .sb-border { background:#bbb; }\
  </style>

ラベル: ,


2008年9月24日水曜日

 

PHP議論

NEW!!

きっかけ
第1回 LOCAL PHP部 (aka PHP北海道) のつどい - LOCAL
中級者の自分が、PHPとかプログラミングに対して思ってること - Webbin'Blog
自分なりに - WebProgを極めて居酒屋を開発する
 ∟感想書くまでが勉強会ということで書く - bobchinの日記
  ∟PHPに関して1つだけ言っとくとすればComments - iakioの日記

ちょっと前

きっかけ
Attacking PHP - Mindblind
Attacking PHP
PHPがいかに駄目な言語か、という話。 - Matzにっき
Webアプリケーションをなめるな
 ∟どの言語で書いてもおかしなコードを書く奴は書く。 - Web屋のネタ帳
  ∟
現実的に言って、PHPは死なないし消えもしないどころかますます普及する。
なんでそんな単純で枯れた話が何年たってもウケるのかって、それが最も求められているもの=キラーアプリケーション=であるからに他ならない。
~(中略)~
なにしろもう知ってるHTMLにちょっと付け加えるだけで済むのだから、こんな便利なものはない。
~(中略)~
こうしてPHPは普及してゆく。perlと同じ感じで、「どんなサーバーにもたいていPHPは入ってる」という現実が拡散してゆく。
    ・フレームの代わりにPHPを使う
 ∟PHPで仕事をするときの注意 - Slashdot Japan
 ∟「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い - 404 Blog Not Found
それは、PHPユーザーは他の言語から学んでいるのか、という点。
PHPユーザーが他の言語ユーザーよりも弱いのは、そこなのではないか。
 ∟初心者はPHPで脆弱なウェブアプリをどんどん量産すべし - はてな匿名ダイアリー
あんたらプロのプログラマが小難しい顔してセキュリティセキュリティ言うもんだから初心者プログラマのセキュリティ意識がまったく向上しないばかりか、よけいに低下するんだよ。
~(中略)~
PHPでどんどん作れ。Perlとかダメ。クセありすぎ。RubyとかJavascriptはオブジェクト超難しい。だからPHP。セキュリティとか気にするな。そんなもん気にして途中であきらめるよりお前が実際に何か作る事の方が大事だ。
  ∟セキュリティ過敏症Comments - ぼくはまちちゃん!(Hatena)
いつもセキュリティの話だとかオブジェクト指向だとかの小難しい話をしている彼等より、 へたくそプログラムでも、面白いものつくっちゃうきみのほうが偉い。
コメント。まとめ。
Hamachiya2 2008/01/31 18:46
それで少しでも面白いものが産まれてきて、そしてそれが大変な個人情報を扱うもので、もし穴だらけだったとしたら、心配しなくてもぼくが直してあげる。

ラベル:


 

gemインストール【XREA】

XREAサーバでgemコマンドを使うため、インストール。
RubyGems, scrAPI インストール手順 - XREA+版 - Diaspar Journal
環境変数の設定のため「./bashrc」という以下の内容のファイルをルートディレクトリに配置。
~/.bashrc

export PATH=$PATH:$HOME/bin:$HOME/lib/ruby/gems/1.8/bin
export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:$HOME/lib/ruby/site_ruby/1.8
設定を読み込ませる。もちろんbashで以下実行。

% source ~/.bashrc
ソースダウンロード、展開、ビルド。

% mkdir src
% cd src 
% wget http://rubyforge.org/frs/download.php/16452/rubygems-0.9.1.tgz
% tar xzf rubygems-0.9.1.tgz 
% cd rubygems-0.9.1
% ruby setup.rb all --prefix=$HOME
% gem -v 0.9.1
   /virtual/username/bin/gem:9:in `require': no such file to load -- rubygems (LoadError) from /virtual/username/bin/gem:9
上手くいかない。
RubyGems のインストール - Rails on NaCl
検索してヒットしたのを参考にやり直し。
「src/」で
% tar zxvf rubygems-0.9.1.tgz 
% cd rubygems-0.9.1
% ruby setup.rb
% ruby setup.rb setup
% ruby setup.rb install
% export RUBYLIB=$HOME/lib/ruby:$HOME/lib/ruby/site_ruby/1.8
% gem -v 0.9.1
おそらく「export ~」が大事。「.bashrc」の最後の行を実行。これでgemにパスが通る。

関連

さくらサーバーでRuby on Railsをインストール - Webtech Walker
ruby setup.rb

ラベル:


 

【PHP】Zend_Frameworksインストール【PEAR】

第1章 Zend Framework の紹介 1.2. インストール - Zend Framework
downloadsLatest Release
Zend Frameworkのインストール - AngelicWing
ライブラリーとして使うZend Framework - PHPから日本語全文検索(形態素解析篇) - twk @ ふらっと
pear channel-discover zend.googlecode.com/svn
pear install zend/zend
公式サイトではzip形式とtar.gz形式がダウンロードできて、インストール方法はサーバに直接アップロードするかsvnで取得するかで、インクルードパスを追加する。ので、php.incとかhttp.confとかApach設定とか。
レンタルサーバに入れるには上記のようにPEARパッケージは便利だろう。非公式ということで不具合はないかどうか。
手頃な実例が見つからなかった。

ラベル: ,


2008年9月23日火曜日

 

【XPath】特定要素検索

【Adobe Spry TIPS】XMLとXPath - to-R
XPath入門、実用例 - 素人がプログラミングを勉強するブログ
ルート直下div要素(子要素)
 /div
div要素(子、孫要素)
 //div
全要素
 //*
style属性をもつdiv要素
 //div[@style]
alt属性がないimg要素
 //img[@alt]
ルート直下「html」要素の子要素「body」要素の子要素「div」要素の子要素「div」要素で「id」属性が"main"の要素
(ルート->html->body->div->div#main)
 /html/body/div/div[@id='main']
id属性が"header"な要素
 id("header")
子、子孫にa要素を持つh2要素
 //h2[.//a] 
ul要素の最後から二つ目のli要素
 //ul/li[last()-1]
テキストがnextから始まるa要素
 //a[starts-with(text(),"next")]

ラベル:


2008年9月22日月曜日

 

【モバイル】携帯でローカルにアクセス

ケータイサイトのローカル開発環境に実機からアクセスする - Persistence is Power
携帯→サーバ→ローカル
何か他にも使えそうだなー。

ラベル:


 

【モバイル】レンダリングアプリケーション

ssb - server side browser
モバイルのウェブ開発の際に PC のブラウザで見れるように HTML をレンダリングしてくれる Web アプリケーションです。

svn co http://svn.coderepos.org/share/lang/ruby/ssb/trunk/ ssb
cd ssb/
rake setup
ruby ssb-webrick.rb
Moxyと違ってすんなり入った。
Ubuntuは素敵だー。

ラベル:


 

【CSS】IEのhasLayoutプロパティまとめ

IEでのCSSのバグを回避するhasLayout -
hasLayoutとは何か -
IEのバグでfloat要素がはみ出たり重なったりすることがあります。
これはIE独自のhasLayoutというプロパティの為です(レイアウト崩れの原因)。
hasLayoutはデフォルトではfalseになっており、幅や高さが他の要素のレイアウトに影響されて伸び縮みし、他の要素と重なってしまう場合があります。
これを解決するために、「hasLayout=true」にします。
hasLayout=true」を設定するCSSプロパティは以下の通りです。(参照:MSDNのドキュメント
「hasLayout=true」にするCSSプロパティ
プロパティ
displayinline-block
heightany value
floatleft or right
positionabsolute
widthany value
writing-modetb-rl
zoomany value
CSSテクニックやハックとしてよく紹介されるHolly hackや「zoom:1」の根拠はこれです。
// Holly hack
/* Hides from IE5-Mac \*/
* html .foo { height: 1%; }
/* */

zoom: 1;
hasLayout問題を解決するzoom:1;の落とし穴 - Like@Lunatic
全称セレクタにzoomを使うとバグる - ikesai.com
しかし、この便利な「zoom:1」を全称セレクタに使うには注意が必要です。

* {
 margin: 0;
 padding: 0;
 zoom: 1;
}
意図しないところでclearされて別のレイアウト崩れが生じてしまいます。
zoom:1;clearfixにも記述されています。
これを回避するにはclearさせない要素に「zoom: normal;」とすると良いようです。

zoom: normal;
テスト用には全称セレクタが便利ですが個別に指定した方が良いのかも知れません。

ラベル:


 

【CSS】CSSの記述順序

Mozilla.org
http://www.mozilla.org/css/base/content.css
Mozilla.orgが設定している順序

// ブロック要素
 display
 list-style
 position
 float
 clear
 width
 height
 margin
 padding
 border
 background
// フォント要素
 color
 font
// その他テキスト要素
 text-decoration
 text-align
 vertical-align
 white-space
* other text
 content

(訳) ちょっと任意の順になっている部分もありますが、関連するプロパティを並べるようにしました。それから大まかに

  1. ボックスモデル
  2. フォント関連
  3. その他細かいもの

という流れになるように書いています。ポイントは、「矛盾の無い順序にする」ということでした。

ラベル: ,


2008年9月19日金曜日

 

さくらサーバにLHaインストール

LHa for UNIX
圧縮・解凍のLHa。

$ tar xvzf lha-1.14i-ac20050924p1.tar.gz
$ cd lha-1.14i-ac20050924p1
$ ./configure
$ make
$ make install

参考

javascript:void(0)
Fedora 7 インストールノート install notes 公開!! - けんけんのFedora FreeBSD Linux/Unix 勉強日記
様々なアプリケーションをインストールしてるので参考になる。

ラベル:


2008年9月18日木曜日

 

さくらサーバにSubversionインストール(※追記:2009/06/16)

さくら共有にSubversionクライアントを入れる - それなりブログ
Subversionをさくらインターネットにインストール - 空繰再繰

上記リンク先を参考にインストール。インストールするものが何だか多い。
別のサイトにはbashですべて実行しろとあったので、インストールする前に起動。

$ bash

念のため最新版を利用した方が良さそうかも。

Subversion - Tigris.org
「Get Subversion -> subversion -> Source code」から。
SWIG
subversionで使用するには1.3.29がいいらしいからそのままで良いか。SVN instructions
Index of /dist/apr
リリースはapr-1.3.3.tar.bz2とapr-util-1.3.4.tar.bz2かな。
※追記:2009/06/16

手順

$ mkdir -p $HOME/local/src
$ setenv PATH $HOME/local/bin:$PATH
$ setenv LD_LIBRARY_PATH $HOME/local/lib
$ bash
$ cd $HOME/local/src
APR(Apache Portable Runtime) インストール

「apr-1.3.5.tar.gz」をインストール。

/* APR インストール・コマンド */
$ $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.3.5.tar.gz
$ tar zvxf apr-1.3.5.tar.gz
$ cd apr-1.3.5
$ ./configure --prefix=$HOME/local --disable-static
$ make
$ make install
APR-util インストール

「apr-util-1.3.7.tar.gz」をインストール。

/* APR-util インストール・コマンド */
$ cd $HOME/local/src
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.3.7.tar.gz
$ tar zvxf apr-util-1.3.7.tar.gz
$ cd apr-util-1.3.7
$ ./configure --prefix=$HOME/local --with-apr=$HOME/local --disable-static \
--with-expat=/usr/local --with-iconv=/usr/local
$ make
$ make install
neon インストール

「neon-0.28.4.tar.gz」があるが「0.27.0 だと動かないので注意! 0.25.4 にしたら動いた。」とあるので「neon-0.25.4.tar.gz」を素直にインストール。

/* neon インストール */
$ cd $HOME/local/src
$ wget http://www.webdav.org/neon/neon-0.25.4.tar.gz
$ tar zvxf neon-0.25.4.tar.gz
$ cd neon-0.25.4
$ ./configure --prefix=$HOME/local --with-libxml2 --with-ssl
$ make
$ make install
swig インストール
/* swig インストール・コマンド */
$ cd $HOME/local/src
$ wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.29.tar.gz
$ tar zxvf swig-1.3.29.tar.gz
$ cd swig-1.3.29
$ ./configure --prefix=$HOME/local
$ make
$ make install
subversion インストール

「subversion-1.6.2.tar.gz」をインストール。ココの「Get Subversion -> Subversion -> Source code」のところにある「tar.gz」ファイルが最新の様子。

/* subversion インストール・コマンド */
$ wget http://subversion.tigris.org/downloads/subversion-1.6.2.tar.gz
$ tar zvxf subversion-1.6.2.tar.gz
$ cd subversion-1.6.2
$ ./configure --prefix=$HOME/local \
--with-apr=$HOME/local \
--with-apr-util=$HOME/local \
--with-neon=$HOME/local \
--with-editor=$HOME/local/bin/vim \
--with-swig=$HOME/local
$ make

一行だと以下。

$ ./configure --prefix=$HOME/local --with-neon=$HOME/local --without-berkeley-db --enable-swig-bindings=perl --with-swig=$HOME/local/bin/swig --with-apr=$HOME/local/bin/apr-1-config --with-apr-util=$HOME/local/bin/apu-1-config --disable-static

ここで「./subversion-1.6.2/subversion/svnsync/svnsync.1」を「./subversion-1.6.2/subversion/svnversion」にコピーする。「make install」が失敗した場合必要。

$ cp subversion/svnsync/svnsync.1 subversion/svnversion
$ make install

完了。

関連

さくらインターネットでSubversionを使う1 - Movable Type 備忘録
バージョン管理の実際もある。

ラベル:


 

WindowsでGNU

MinGW のインストール - K-na TechNotes
GCCでコンパイルとかデバックとか出来る。
MinGW(Minimalist GNU for Windows)とMSYS(Minimal SYStem)のインストール。
ダウンロードもリンク先から。
インストーラに従えば良い。
モジュールを自分で追加したり詳しくは以下を参考。
MinGW/MSYS をインストールする - 戯れ言++
MinGWとMSYSのインストール - 日々の戯言
Cygwin で作成したプログラムが POSIX 互換のランタイムライブラリ上で動作するのに対し, MinGW で作成したプログラムは完全に Win32API 上で動作させることが可能です。
従って UNIX 系のプログラムの移植の際には完全な互換が取れない場合があります。

ラベル:


 

WindowsでSubversionコマンド - インストール

Subversionの基礎練習 - 結城浩 - The Essence of Programming
Windowsでもダウンロードする時にsvnでimportする時だってある。
リンク先はSubversionでのバージョン管理の仕方まで解説してある。
とっても役立つ。
余談だが、個人的に初心者にとってPerlの壁はこういうところにもあると思う。

ラベル:


2008年9月8日月曜日

 

【Perl】Catalyst実践【CPAN】

以下のリンクを参考にCatalystとSQLiteを使ったWeb上のメモ・アプリを作ります。
第4回 Catalyst(前編)---Perl向けWebアプリ・フレームワーク - ITpro

準備その1~Catalystインストール


perl -MCPAN -e 'install Task::Catalyst'

準備その2~SQLite2ライブラリのインストール


perl -MCPAN -e 'install DBD::SQLite2'
となっているが、上手くいかなかった。
ユーザー領域にCPANをインストールする方法 -
Net::SSLeayのインストール
この設定をしている場合にNet::SSLeayをインストールしようとすると、make時にOpenSSLライブラリをユーザー領域から探そうとするため失敗することがあります。その場合はmakepl_argの先頭に--を一時的に入れます。
ローカルにインストールしたからパスのせいかと参考にして次の様にした。

cpan> o conf makepl_arg "-- INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local"
cpan> install DBD::SQLite2
もしかしたら一つ目のコマンドはいらないかも。
動作確認。

% perl -MDBI -e 'DBI->connect(q{dbi:SQLite:dbname=/tmp/test.db})'

準備その3~SQLite3ライブラリのインストール

シェルから接続できるようSQLite3を入れる。
さくらサーバとSQLite - code雑記帳
% cd $HOME/src
// $HOME = "/home/ユーザ名"
% wget http://www.sqlite.org/sqlite-3.5.5.tar.gz
// SQLite3を取得(各自最新のものを入れてください)
% tar xzvf sqlite-3.5.5.tar.gz
// ディレクトリ展開
% cd sqlite-3.5.5
% ./configure --prefix=$HOME/usr --disable-dynamic
% make
sqlite3」で実行。停止するには「.quit」。
コマンドに関しては以下を参照か各自検索。
コマンドラインでSQLiteを操作する - Pumpkin Moonshine

ステップ1~スケルトン作成~

プロジェクトを作成するディレクトリに移動してコマンド実行。
ここではルート・ディレクトリ直下の「work/」。上手くいかなければやり直そう。(webルートの「www/」にした方が良いのか)
% mkdir work
% cd work
% catalyst.pl Memo
これで「Memo」ディレクトリと、その中にスケルトン(骨組み)が出来てMVCなどの基本的な構造が出来ます。
動作確認。
script¥memo_server.pl
テストサーバが起動するので「http://example.com:3000」にアクセス。Catalystのデフォルトページが表示されれば成功。さくらサーバだと「http://www.ユーザ名.ne.jp:3000」です。
プロジェクトにコントローラを作成して「http://example.com:3000/admin」のようにアクセスします。

ステップ2~データベース作成~

「Memo/db」とDB用ディレクトリを作成し、SQLiteをコマンドから作成。

% sqlite3 memo.db
  sqlite> CREATE TABLE memo (
     ...> id INTEGER PRIMARY KEY,
~~~~
     ...>);
sqlite>.q
もしくは「memo.sql」を作成し変換する。
memo.sql

CREATE TABLE memo(
 id INTEGER PRIMARY KEY,
・・・
);
sqlite3 memo.db < memo.sql
データがあればselect文で表示できます。
% sqlite3 memo.db
  sqlite> select * from memo;

ステップ3~MVC生成~

「work/」で以下のコマンドを実行すると「lib/Memo」内にMVCがそれぞれ生成されます。
script/memo_create.pl controller Memo
script/memo_create.pl model Memo DBIC::Schema dbi:SQLite:db/memo.db
script/memo_create.pl view TT TTSite
モデル作成が壁。
DBICをスーパークラス名にしてるのもあるけど上手くいかなかったのでDBIC::Schemaをインストールして使ってみた。
スキーマ情報は指定しない。意味が分からないので後回し。
「create=static」も指定すると上手くいかなかったので指定しない。
% script/sample_create.pl model DB DBIC::Schema Sample::Schema create=static dbi:SQLite:sample.db 
model  作成対象(model or view or controller)
DB  作成するクラス名(ちゃんと書くとSample::Model::DB)
DBIC::Schema  スーパークラス名(Catalyst::Model::DBIC::Schema)
Sample::Schema  スキーマ情報のクラス名
dbi:SQLite:dbname=sample.db  接続情報
ビュー作成は「view TT TT」と違いが分からないけど「view TT TTSite」の方がファイルをたくさん作ってました。
生成が成功してもテストサーバの起動時にエラーが出ることがあるが、ファイルが見つからなかったりパスが通ってなかったり、もしくは生成しなおした時に「Memo.pl」が存在すると「Memo.pl.new」が出来て古い方が邪魔になったりします。

cpan> install Catalyst::View::TT
cpan> install Catalyst::DBIC
続く。

めも



チュートリアルを読みながらCatalystサンプルアプリケーションを作ってみる - guri_2::perlメモ
PHP使いによるCatalyst初心者記事 - perl-mongers.org
さくらサーバとCatalyst - code雑記帳 catalystをさくらインターネットで使う - pepponの日記

setenv PATH /home/アカウント名/local/bin:$PATH
setenv PERL5LIB /home/アカウント名/local/lib/perl5
/home/アカウント名/.cpan/CPAN/MyConfig.pm

'make_install_arg' => q[SITEPREFIX=/home/アカウント/local],
'makepl_arg' => q[INSTALLDIRS=site LIB=/home/アカウント/local/lib/perl5 PREFIX=/home/アカウント/local],
'mbuildpl_arg' => q[./Build --install_base /home/アカウント/local],
'build_dir' => q[/home/アカウント名/.cpan/build],
MySQLのときモデル作成

script/MyApp_create.pl model DBIC DBIC::Schema MyApp::Schema create=static dbi:mysql:dbname=MySQLデータベース名:さくらのMYSQLサーバ名 MySQLアカウント MySQLパスワード
~/MyApp/script/myapp_cgi.pl

use lib '/home/アカウント名/local/lib/perl5', "$FindBin::Bin/../lib";

参考書

Catalyst: Accelerating Perl Web Application Development
Catalyst: Accelerating Perl Web Application Development

The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications
The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications

"Catalyst本"を一通り読了してみた - RemovableType

ラベル:


 

【Perl】さくらサーバ・スタンダードにCatalystインストール【CPAN】

さくらサーバへのCPANインストールは以下のリンクを参照。
さくらインターネットのレンタルサーバ(スタンダード)にCPANを入れる - minor tranquilizer
ユーザー領域にCPANをインストールする方法 - otsune's FreeBSD memo
上手くいかないような場合は以下も参考に。
さくらインターネットでCPAN - Charsbar::Note
それ以降Catalystのインストールは過去記事で。
【Perl】Catalyst入門のためのメモ【CPAN】 - さぼてん:2008年8月20日記事

関連

例外的に、ConfigLoaderとStatic::Simple、あとAuthenticationやSession、Cacheあたりは使ってもいいけれど、それ以外は基本的に使っちゃいけない。
「Catalyst は engine と Dispatcher だけ使ってればいいらしい」って Catalystは触媒なんたら~Pluginでいろいろできるよ!的な考えはモダンなCatalystの姿ではないっぽいとのお話が・・
Catalyst::Plugin(元のモジュールのラッパー)つかわないで普通のCPANモジュール使えばいいんじゃね?って事のようで。
さくらインターネットに色々インストールする - Seeking for my unique color.
vim、emacs、zsh、screen、git、ruby、gemのインストールとOpenSSHを使ったログイン

参考書

Catalyst: Accelerating Perl Web Application Development
Catalyst: Accelerating Perl Web Application Development

The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications
The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications

"Catalyst本"を一通り読了してみた - RemovableType

ラベル:


2008年9月4日木曜日

 

【WordPress】カスタマイズ~WP標準のRSS関数~

[WP]wordpressでRSSを取得して表示 - WebTecNote
WordPressには標準でRSSを取得・表示できる関数が用意されている。
「wp-includes/rss-function.php」に記述されているMagpieRSS and RSSCacheSnoopy HTTP clientというライブラリを継承したもの。
使い方は以下のように。fetch_rss()を使うとRSSの各要素を取得できるので自由にレイアウトできる。

<?php
  include_once(ABSPATH . WPINC . '/rss.php');
  $rss = fetch_rss('http://headlines.yahoo.co.jp/rss/itmedia_n.xml');
  $maxitems = 5;
  $items = array_slice($rss->items, 0, $maxitems);
?>
<ul>
<?php
  if (empty($items))
    echo '<li>No items</li>'; 
  else
    foreach ( $items as $item ) :
?>
<li>
  <a href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'><?php echo $item['title']; ?></a>
</li> 
<?php endforeach; ?>
</ul>
get_rss()wp_rss()を使うと整形された結果が返ってくる。

include_once(ABSPATH . WPINC . '/rss.php');
get_rss("http://wordpress.org/development/feed/");
wp_rss("http://wordpress.org/development/feed/");
get_rss()wp_rss()二つの関数の違いは以下のとおり。
wp_rss($url, $num_items)$urlは必須。$num_itemは取得表示数。デフォルトは全て表示。ulタグとセットで表示。取得できなかった場合エラーメッセージが返る。
get_rss($url, $num_items)$urlは必須。$num_itemは取得表示数。デフォルトは5。リスト部分のみ出力。取得できなかった場合falseが返される。
設定はMagpieRSS and RSSCacheと同様に出来る。

define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');//出力エンコード
define('MAGPIE_CACHE_DIR', './cache');//キャッシュディレクトリ
define('MAGPIE_FETCH_TIME_OUT', 30); //タイムアウトまでの時間
define('MAGPIE_CACHE_AGE', 60*60); // キャッシュ更新の時間(秒) - この場合1時間
標準関数 rss-function.php - DirtHighway.net
これらは環境によって文字化けする。上の出力エンコードとか意味がない。
原因はwp_rss()のソースで次のように扱われているから。
//wp_rss()
echo htmlentities($item['title']);
なので、>wp_rss()を変更してもいいけど、新しく関数を定義。

function wp_rss2 ($url, $num_items) {
  $rss = fetch_rss($url);
  if ( $rss ) {
    echo "<ul>";
    $rss->items = array_slice($rss->items, 0, $num_items);
    foreach ($rss->items as $item ) {
      $item_desc = mb_convert_encoding($item[description],'EUC-JP','UTF-8');
      echo "<li>\n";
      echo "<a href='$item[link]' title='$item_desc'>";
      echo mb_convert_encoding($item['title'],'EUC-JP','UTF-8');
      echo "</a><br />\n";
      echo "</li>\n";
    } 
    echo "</ul>";
  } else {
    echo "an error has occured the feed is probably down, try again later.";
 }
}
関数の定義以前に呼び出してはいけないのかな。
場合によっては元のエンコードは省略する必要もある。
echo mb_convert_encoding($item['title'],'UTF-8');

ラベル:


 

【WordPress】カスタマイズ~表示の関数~

知っていると便利なWordPressのTips - コリス
  • カテゴリ名の表示get_the_category()
  • ページのテンプレートget_header()get_footer()
  • 特定記事の表示方法 query_posts()new WP_Query()
  • ファイルのインクルードinclude (TEMPLATEPATH . '/sidebar2.php');
  • 条件タグis_home()is_404()is_date()など
  • エントリーを古い順に表示query_posts($query_string . "&order=ASC")
  • 特殊文字をHTMLエンティティに変換wp_specialchars()
  • コメントを古い順に表示array_reverse()

ラベル:


 

【WordPress】カスタマイズ~テンプレートの振り分け~

Conditional Tags - WordPress Codex 日本語版
WordPressのテンプレート切り替えは「wp-includes/template-loader.php」で行われている。
以下の関数で表示ページの判別をしている。
関数の定義は「wp-includes/query.php」。
is_home()
メインページ(ブログのホームページ)が表示されている場合。
WordPress 2.1以降では動作が異なる。
たまに利かなくなるようだ。(query_posts()の呼び出しが原因の場合はquery_posts($query_string . "");とするといいらしい)
is_front_page()
サイトのフロントページが表示されている場合。
管理画面の「設定 -> 表示設定 -> トップページの表示」で、「最新の投稿」が選択されているか、「固定ページ (以下を選択)」で現在のページが表示されている場合。
2.5以降追加された機能。
is_admin()
管理画面が表示されている場合。
is_single()
記事個別ページが表示されている場合。
is_single('14')で記事番号、is_single('Title')でタイトルが指定されたものが表示している場合。
2.5以降はis_single(array('14','Title'))と配列で複数指定可。
is_page()
「ページ」が表示されている場合。
is_single()と同様、is_page('14')でページ番号、is_page('Title')でタイトルが指定されたページの表示。
2.5以降はis_page(array('14','Title'))と複数指定可。
is_category()
カテゴリー一覧が表示されている場合。
同様に、is_category('7')is_category('Cate1')、2.5以降is_category(array('Cate1','7'))
is_tag()
タグのアーカイブページが表示されている場合。is_tag('TAG')で指定したタグのアーカイブページが表示されている場合。
2.5以降is_tag(array('TAG1','TAG2'))と記述していずれかのタグのアーカイブ。
is_author()
著者のアーカイブページが表示されている場合。同様に引数としてIDやニックネームを指定出来る。
2.5以降は複数指定できる。
is_archive()
あらゆるタイプのアーカイブページが表示されている場合。
is_search()
検索結果のページが表示されている場合。
is_404()
"HTTP 404: Not Found"エラーページが表示されている場合。
他にも判別関数はあるのでリンク先参照。is_front_page()が呼び出されてなかったので「template-loader.php」に追加した。
実際にテンプレートを呼び出しているのはget_home_template()などそれぞれで、「wp-includes/theme.php」に定義してある。

ラベル:


2008年9月3日水曜日

 

【Perl】すぐわかるオブジェクト指向Perl~その1

参考書

すぐわかる オブジェクト指向 Perl - 深沢 千尋 (著)

変数はメモリ上に領域を持っている。
領域はメモリアドレスといわれる番地が割り当てられている。
スカラ変数$xがあるとき、¥$x$xを指す。これをリファレンスという。
¥$xで得られるのは$xを参照する値。¥$xリファレンス変数
リファレンス変数にはデバッグ文字列という値が入る。
これはリファレンス先が判りやすい様にPerlが変換したもので実際にその文字列が入ってる訳ではない
$x=1;
//¥$x=SCALAR(0x182408c)
$y$xのリファレンス変数である時、$$y$xの値にアクセスできる
$x=1;
$y=¥$x;
$$y=5;
//$x=5;
リファレンス($y)からリファレント($x)の値を得ることをデリファレンス($$y)という。
ref関数
引数で与えられた変数がリファレンスであればリファレントの種類を返す。
リファレンスでなければ、undefを返す。
use strict;
又は
use strict 'refs';
で文字列のデリファレンスを禁止
無名リファレンス
¥5は数値5へのリファレンス。
¥'hoge'は文字列hogeへのリファレンス。
これらを無名リファレンスという
※間違いの指摘お待ちしております。

ラベル:


2008年9月2日火曜日

 

【WordPress】Web制作向けプラグイン

Google (XML) Sitemaps Generator for WordPress

Googleやask、MSM(API Keyを取得すればYahoo!も)に適切に検索してもらう適切な「sitemap.xml」を作成する。
ダウンロードしたディレクトリを「wp-contents/plugin/」下にアップ。ルートディレクトリ(「public_html/」の直下とか)に「sitemap.xml」「sitemap.xml.gz」を属性「606」で配置。詳しくは以下参照。
WordPressでGoogle Sitemapを簡単に生成するプラグイン - THE FLYING MANGOLOG! ざ・ふらいんぐ・まんごろぐ!
検索エンジンのクローラに認識させるため「robot.txt」に

Sitemap : http://blog.webcreativepark.net/sitemap.xml
と記述。 Google Webmaster Toolにサイトマップを登録しておくことで正常に認識されているかどうかを確認ができる。
日本語化
Sitemap日本語化β7 - MMRT daily life
日本語化モジュールはリンク先から。「sitemap.php」「sitemap-ja.mo」「sitemap-ja.po」「sitemap.xsl」を「google-sitemap-generator/」内にアップロード。管理画面のレイアウトが変わったけど気にしない。

Add-Meta-Tags WordPress Plugin

エントリーページ個別に「meta description、keywords」を設定することができるプラグイン。

Contact Form ][ プラグイン

Contact Form ][ プラグイン - CHUO SPECIAL RAPID
サイトのお問い合わせ等フォームが設置できる。

参考

WP-QRcode

WP-QRcode - ハンターリンク
QRcodeの出力を補助するWordPress用プラグイン。

Mobile Eye+

Mobile Eye+ - ハンターリンク
WordPressのブログを携帯から閲覧可能にするプラグイン。

Customizable Post Listings

最近の投稿、コメントのあった投稿、更新された投稿、ランダムなリスト?を表示。

Breadcrumb Navigation XT

Breadcrumb Navigation XT - Software Guide

ラベル:


2008年9月1日月曜日

 

【PHP】メールの「From」「Reply To」に日本語【mail】

mb_encode_mimeheader - PHP マニュアル

string mb_encode_mimeheader ( string $str [, string $charset [, string $transfer_encoding [, string $linefeed [, int $indent ]]]] )

MIMEヘッダの文字列をエンコードする(PHP 4 >= 4.0.6, PHP 5)
メールの送信者欄なんかをいい感じにこんな風にすると思う。
From: さぼてんさん<saboten@example.com>
これが日本語で上手く表示できるようにエンコードするのが上記の関数です。

$name = "さぼてんさん"
$mail = "saboten@example.com"
$header = "From:"mb_encode_mimeheader($name, "UTF-8") . " <" . $mail . ">";

ラベル: ,


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google