ZEND FRAMEWORKのZend_Http_Clientのバグ? / Subversionの操作ログをサーバ側で出力する方法 / モバイルだとcategory_to_tag.rbでエラー / tDiaryのデバッグ / Rubyで変数のダンプ

投稿日: 2007年03月27日 更新日: 2017年07月22日

ZEND FRAMEWORKのZend_Http_Clientのバグ?

Zend_Http_Clientでページを取得しようとして、処理がいつまでたっても終わらずタイムアウトとなる。

原因はZend/Http/Client/Socket.phpの207行目レスポンス

if (isset($headers['connection']) && $headers['connection'] == 'close') {

何がいけなかったかというと、サーバーが返してきた値が’Close’だった。

とりあえずこう直した。下のほうのelse ifの条件に入って無限ループしてるんだと思われるが、これでいけたのでひとまず追わない。RFC的にどうかも気にはなるがスルー。

if (isset($headers['connection']) && strtolower($headers['connection']) == 'close') {

Socket.phpのファイルのバージョンはコレ。

@version    $Id: Socket.php 3348 2007-02-12 09:06:02Z shahar $

バグ報告が挙がってるかどうかは未確認。

追記:Subversion上の最新版でも該当個所は一緒。下のほうで無限ループにならないように改善されてるかもしれないが未確認。

Subversionの操作ログをサーバ側で出力する方法

httpd.confに下記行を追加するらしい。

CustomLog logs/svn_log "%t %u %{SVN-ACTION}e %U" env=SVN-ACTION

RX-7乗りの適当な日々 - Subversionの操作ログをサーバ側で出力する方法より

モバイルだとcategory_to_tag.rbでエラー

携帯でここのメモを見ると次のエラーが出ていた。

500 Internal Server Error

undefined method `[]=' for nil:NilClass (NoMethodError)

(plugin/category_to_tag.rb):34:in `subtitle_link'
/var/www/www.mylab.jp/htdocs/diary/tdiary.rb:105:in `join'
/var/www/www.mylab.jp/htdocs/diary/tdiary.rb:105:in `safe'
/var/www/www.mylab.jp/htdocs/diary/tdiary.rb:739:in `eval_src'
/var/www/www.mylab.jp/htdocs/diary/tdiary.rb:1085:in `do_eval_rhtml'
/var/www/www.mylab.jp/htdocs/diary/tdiary.rb:1027:in `eval_rhtml'
/var/www/www.mylab.jp/htdocs/diary/index.rb:69

以前ad hocにも程がある修正をしていたが、これだとタイトルが出力されないのでちゃんと調べた。

原因はrd_style.rbでモバイルの際にsection_enter_procが呼ばれない為。下記変更で正常に出力されるようになった。

rd_style.rb.patch
--- rd_style.rb.old Wed Sep 13 16:15:02 2006
+++ rd_style.rb Wed Mar 28 01:16:45 2007
@@ -249,8 +249,8 @@
       def html( date, idx, opt, mode = :HTML)
          if mode == :CHTML
             visitor = RD2tDiaryCHTMLVistor.new( date, idx, opt, @author)
-            section_open = ''
-            section_close = ''
+            section_open = "<%=section_enter_proc( Time::at( #{date.to_i} ))%>\n"
+            section_close = "<%=section_leave_proc( Time::at( #{date.to_i} ))%>\n"
          else
             visitor = RD2tDiaryVisitor.new( date, idx, opt, @author )
             section_open = %Q[<div class="section">\n<%=section_enter_proc( Time::at( #{date.to_i} ))%>\n]

tDiaryのデバッグ

require 'logger'
$logger = Logger.new('tdiary-debug.log')
$logger.debug('hoge')

CGIのデバッグ - まちゅダイアリー (2004-04-08)より

Rubyで変数のダンプ

hogeの中身をダンプ。

require 'pp'
pp hoge

PHPのprint_rのようなものがないですか?と聞いたら教えてもらったのがコレ。便利。

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ