.




うぇブログ2
最新エントリ
トップ :  PHPメモ :  PEARメモ : 

2007/02/05
カテゴリ : PEARメモ

執筆者: itoh (10:42 am)
ローカルのMacOSXで、久しぶりに$> pear list-upgradesしてみたら


Notice: Undefined index:  release_state in Remote.php on line 371
Available Upgrades (stable):
============================
Package                   Local          Remote          Size
Archive_Tar               1.1 (stable)   1.3.2 (stable)  16.8kB
Console_Getopt            1.2 (stable)   1.2.1 (stable)  3.4kB
DB                        1.7.6 (stable) 1.7.8 (stable)  129kB
File_Find                 1.2.2 (stable) 1.3.0 (stable)  7.8kB
HTML_Common               Array ()       1.2.3 (stable)  4.7kB
HTML_QuickForm            3.2.5 (stable) 3.2.7 (stable)  101kB


HTML_CommonのバージョンArray()って何!?って思ったけど、

PEAR                      1.3.6 (stable) 1.5.0 (stable)  280kB

PEAR自体をアップデートしたら、直った。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (4462)
2006/11/29
カテゴリ : PEARメモ

執筆者: itoh (12:40 pm)
ものすごい勢いで、PEAR::Calendarが必要になったので、ものすごい勢いで見つけたことをメモする。間違いがあるかもしれないので注意。


とりあえず、Googleで検索してトップに来るphpspotの人の記事はスルーして、xoleさんのコードをコピペ

http://blog.xole.net/article.php?id=111
<?php
require_once 'Calendar/Month/Weekdays.php';

$Month = new Calendar_Month_Weekdays(date('Y'), date('n'), 0);

$Month->build();


echo "<table border=1>\n";
echo <<< CAL
<tr>
	<th>Sun</th>
	<th>Mon</th>
	<th>Tue</th>
	<th>Wed</th>
	<th>Thu</th>
	<th>Fri</th>
	<th>Sat</th>
</tr>
CAL;
while ($Day = $Month->fetch()) {
    if ($Day->isFirst()) {
        echo "<tr>\n";
    }
//	var_dump(get_class($Day));exit;
    if ($Day->isEmpty()) {
        echo "<td>&nbsp;</td>\n";
    } else {
        echo '<td>'.$Day->thisDay()."</td>\n";
    }

    if ($Day->isLast()) {
        echo "</tr>\n";
    }
}
echo "</table>\n";
exit();
?>


とりあえず、ここで使われているものだけでも抑えておけば何かと便利なのでは!と思うので、マニュアルから訳してみる。

と思ったら、マニュアルがいきなり古いので、ソース見た。

コンストラクタ

$Month = new Calendar_Month_Weekdays(date('Y'), date('n'), 0);


第一引数は表示したい「年」
第二引数は表示したい「月」
第三引数は表示したいカレンダーの週の最初の日。これが0だと日曜が先頭に来る。デフォルトはNullで月曜が先頭に来る。



while ($Day = $Month->fetch()) {

で'calendar_day'オブジェクトの$Dayを引っ張ってきてる

この'calendar_day'オブジェクトのメンバはprivateなので、メソッドだけ使う。

メソッドは42個あるけど、publicなのは4つだけなのでとりあえずこれだけ注目する。

function build($sDates = array())
引数は、そのオブジェクトの「時」をあらわすオブジェクト。

function isFirst()
この日が週の初めかどうかをチェックする。コンストラクタの第3引数に依存する

function isLast()
この日が週の終わりかどうかをチェックする。コンストラクタの第3引数に依存する

function isEmpty()
この日があるかどうかをチェックする。

ということで、この小さなサンプルは必要十分なものだったんだ。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (8050)
2006/10/02
カテゴリ : PEARメモ

執筆者: itoh (2:21 pm)
いやぁ、やられました。

PEAR::Net_UserAgent_Mobileが、iモードシミュレータで動かない。



おかしい。PEAR::Net_UserAgent_Mobileを外したら動くようになったのだけど、全然納得いかない。

というのは、先週までは動いてたから。

Mobileかどうかを見分けるだけなんだけど、下記のように書いてたら突然動かなくなったんで、すげー単純なのに書き直して何とか。

<?php
	/// アクセスエージェントが携帯か否か
	/**
	 * @access public
	 * @return boolean true=>携帯 false=>携帯ではない
	 */
	 function isMobileAgent()
	 {
		 $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
		 
		 $docomoRegex    = '^DoCoMo/\d\.\d[ /]';
		 $vodafoneRegex  = '^(?:(?:Vodafone|J-PHONE|SoftBank)/\d\.\d|MOT-)';
		 $ezwebRegex     = '^(?:KDDI-[A-Z]+\d+[A-Z]? )?UP\.Browser\/';
		 $mobileRegex =  "(?:($docomoRegex)|($vodafoneRegex)|($ezwebRegex))";
		 
		 return preg_match("!$mobileRegex!", $ua, $matches) ;

/*		 require_once 'Net/UserAgent/Mobile.php';
		 
		 $agent =& Net_UserAgent_Mobile::factory();
		 
		 return !$agent->isNonMobile();
*/
	 }
?>


こんなところ疑わないよー。しかも、先日までフツーに動いてたものを。しかもしかも、UA変えただけのFireFoxで動くし。iモードシミュレータ2でも動くし。iモードシミュレータで動かないなんて!!


しかし、よく考えてみると自分のローカルですら動かなかったのだからなにかがあるな。うーん、しかし分からん。とりあえず上記で動くようになったからいいか。・・・・


問題は自分の方にあると思う。


んー、でも二回続けてNet_UserAgent_Mobileにハマッタから使わなくなりそうだなー。このへん、GIJOEさんは「自分ライブラリか、全部コードを見たライブラリしか使わない」というのも頷けるんですよね。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (7709)
2006/07/19
カテゴリ : PEARメモ

執筆者: itoh (10:48 pm)
PEAR::Pagerは結構お気に入りで使ってるんだけど・・・。(BSDライセンスだしね

このパッケージは、有り余るほど豊富なオプションが魅力。

だけど、一箇所おせっかいが。_fileNameで現在のファイル以外でPageリンクを作りたいだのだけど、
<?
        if ($this->_append) {
            $this->_fileName = CURRENT_FILENAME; //avoid possible user error;
            $this->_url = $this->_path.'/'.$this->_fileName;
        } else {
?>

かってに、元に戻してる!!「avoid possible user error;」って、いいんだってば、それで。

こんな行はコメントアウト。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (6810)
2005/07/27
カテゴリ : PEARメモ

執筆者: itoh (10:24 am)
hoge.orgの小山さんが1年ほど前にPEARにプロポーザルしてそのまま期限切れになってしまったNet_Trackback。
http://pear.php.net/pepr/pepr-proposal-show.php?id=48

今はServices_Trackbackがalphaで出ている。
http://pear.php.net/package/Services_Trackback


で、私は前からNet_Trackbackを使っているのだけど。
discoverメソッドは、与えられたURLから<rdf:RDF...部分を抜き出して自動的にそのURLのトラックバックURLを見つける。ただ、Yahoo!ブログで試してみると、<rdf:RDF...が複数あって、Net_Trackback::discoverではpreg_matchを使ってるので二つ目の<rdf:RDF...を無視してしまう。実は、この二つ目のこそ欲しい情報で。


というわけで、preg_match_allを使ったものに書き換える。といっても、2箇所だけ。

<?
***************
*** 131,137 ****

  
          $body = $req->getResponseBody();
  
!         $nmatch = preg_match_all('!(<rdf:RDF.*?</rdf:RDF>)!ms', $body, $matches);

          if ($nmatch == 0) {
              return false;
          }
--- 131,137 ----

  
          $body = $req->getResponseBody();
  
!         $nmatch = preg_match('!(<rdf:RDF.*?</rdf:RDF>)!ms', $body, $matches);

          if ($nmatch == 0) {
              return false;
          }
***************
*** 145,151 ****

                  $url_no_anchor = substr($url, 0, $pos);
              }
  
!             $rdf =& $matches[1][$i];

              if (preg_match('!dc:identifier="([^"]+)"!m', $rdf, $perm_urls) == 0) {
                  continue;
              }
--- 145,151 ----

                  $url_no_anchor = substr($url, 0, $pos);
              }
  
!             $rdf =& $matches[$i + 1];

              if (preg_match('!dc:identifier="([^"]+)"!m', $rdf, $perm_urls) == 0) {
                  continue;
              }
?>
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (3584)
2004/10/17
カテゴリ : PEARメモ

執筆者: itoh (3:15 am)
いやー、意外とドキュメントって書くの面倒だね。

自分が覚えたことを記すためにも書こうと思ったのだが、・・・
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (3898)



 





メインメニュー

カテゴリ一覧

Google Adsense

うぇブログ カレンダー


XoopsCube Ring
Amethyst Blue - BULLETIN


.