<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>まだ無題</title>
    <description>blog no name still</description>
    <link>http://notitile.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>Boost Software License - Version 1.0　（俺的）和訳</title>
      <description>&lt;!--StartFragment--&gt;&lt;font face=&quot;monospace&quot;&gt;http://www.boost.org/LICENSE_1_0.txt&lt;/font&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;monospace&quot;&gt;Boost Software License - Version 1.0 - August 17th, 2003&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;あらゆる個人および団体に対して、使用、複製、表示、配布、実行、譲渡を目的として本ライセンスが適用されるそのソフトウェア、およびソフトウェアに付随するドキュメントを入手すること、またはソフトウェアの二次利用を行うこと、そのソフトウェアが供給された第三者として同様の行為を行うことに対して、無料で行えることをここに許可します。　条件は下記の通りです。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;著作権はソフトウェアと全てのコードに及びます。上記のライセンス許可を含め、この制限と下記の免責条項は、ソフトウェアの一部または全体のコピー、およびそのソフトウェアを元にした派生物にも含まれなくてはいけません。しかし、これらのコピーおよび派生物が単に実行ファイルとして存在する場合は除きます。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;そのソフトウェアは&amp;rdquo;現状のまま(AS IS)&amp;quot;として供給されます。商用的利用に耐えうる品質、特定の目的への適合性、著作権の非侵害・所有権を含め、明示的にも、暗示的にもいかなるな保証もありません。&lt;/div&gt;
&lt;div&gt;いかなる場合においても、そのソフトウェアを配布する者または著作権の保有者は、たとえ契約書に記載してあった場合でも、&lt;/div&gt;
&lt;div&gt;そのソフトウェアの不法行為的使用や、そのソフトウェアと接続するしないにかかわらず、そのソフトウェアの使用もしくはそのソフトウェアの内部的処理により発生したいかなる損害や障害について責任を負わないものとします。&lt;/div&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/boost%20software%20license%20-%20version%201.0%E3%80%80%EF%BC%88%E4%BF%BA%E7%9A%84%EF%BC%89%E5%92%8C%E8%A8%B3</link> 
    </item>
    <item>
      <title>【JSON】jsoncppに挑戦・・・失敗。</title>
      <description>&lt;!--StartFragment--&gt;C++でJSONしようと思う。
&lt;div&gt;CentOS5.2でjsoncppにトライ。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;参考URL:&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;monospace&quot;&gt;http://jsoncpp.sourceforge.net/index.html&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;１．jsoncppをDL&lt;/div&gt;
&lt;div&gt;２．scons-localをDL&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;jsoncppのReadmeにあるとおりの方法でCentOSでコンパイル。scon-local &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=30337&amp;amp;package_id=67375&amp;amp;release_id=663496&quot;&gt;1.2.0.d20090223&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;rarr;エラーがでた。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;monospace&quot;&gt;[&lt;a href=&quot;mailto:hogehoge@localhost&quot;&gt;hogehoge@localhost&lt;/a&gt; jsoncpp]$ python scons.py platform=linux-gcc check&lt;br /&gt;
scons: Reading SConscript files ...&lt;br /&gt;
Using platform 'linux-gcc-4.1.2'&lt;br /&gt;
LD_LIBRARY_PATH = :libs/linux-gcc-4.1.2&lt;br /&gt;
Building using PLATFORM = linux-gcc-4.1.2&lt;br /&gt;
scons: done reading SConscript files.&lt;br /&gt;
scons: Building targets ...&lt;br /&gt;
RunJSONTests(&amp;quot;[&amp;lt;SCons.Node.FS.File instance at 0xb79df70c&amp;gt;]&amp;quot;)&lt;br /&gt;
scons: *** [check] AttributeError : 'list' object has no attribute 'startswith'&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;File &amp;quot;/home/yamamoto/jsoncpp/trunk/jsoncpp/scons-local-1.2.0.d20090223/SCons/Action.py&amp;quot;, line 1041, in execute&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result = self.execfunction(target=target, source=rsources, env=env)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;File &amp;quot;/home/yamamoto/jsoncpp/trunk/jsoncpp/scons-local-1.2.0.d20090223/SCons/Action.py&amp;quot;, line 1205, in __call__&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return apply(self.parent.actfunc, args, kw)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;File &amp;quot;/home/yamamoto/jsoncpp/trunk/jsoncpp/SConstruct&amp;quot;, line 235, in runJSONTests_action&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return runjsontests.runAllTests( os.path.abspath(source), jsontest_path )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;File &amp;quot;/usr/lib/python2.4/posixpath.py&amp;quot;, line 403, in abspath&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not isabs(path):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;File &amp;quot;/usr/lib/python2.4/posixpath.py&amp;quot;, line 49, in isabs&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return s.startswith('/')&lt;br /&gt;
AttributeError: 'list' object has no attribute 'startswith'&lt;br /&gt;
scons: building terminated because of error&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;monospace&quot;&gt;s.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;どうもjsoncpp側の不備のようだが、scons-localのバージョンを1.2.0.d20090113、1.1.0 と落として再試行を繰り返すけどだめ&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;jsoncppはRevison69&lt;/div&gt;
&lt;div&gt;Pythonは2.4.3&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;jsconcppのRevison68を試してもだめ。Python2.6.2にしても余計だめでした。ん～。パスしよう。&lt;/div&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/%E3%80%90json%E3%80%91jsoncpp%E3%81%AB%E6%8C%91%E6%88%A6%E3%83%BB%E3%83%BB%E3%83%BB%E5%A4%B1%E6%95%97%E3%80%82</link> 
    </item>
    <item>
      <title>Xoops: XSNSモジュールでサイト登録時に自動的に全てのコミュニティに参加するようにする</title>
      <description>&lt;p&gt;　&lt;font color=&quot;#0000ff&quot;&gt;XSNSモジュールで、コミュニティ数を固定とし各サイトユーザーが全てのコミュニティに参加するという使い方をしたい。&lt;br /&gt;
　前のエントリーでコミュニティの新規作成を管理者だけが行えるようにし、ユーザーが自由にコミュニティを作れなくする方法を紹介した。次はサイトへの登録時に全てのコミュニティに自動的に参加するように手を加える。&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
[環境]&lt;br /&gt;
XOOPS Cube Legacy 2.1.6&lt;br /&gt;
XSNS 1.11&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;4&quot;&gt;①　コミュニティへの自動参加用関数の作成&lt;/font&gt;&lt;br /&gt;
　ユーザーIDを引数にし、未参加のコミュニティを検出し一括参加登録する関数を作成し、&lt;br /&gt;
　XOOPS_TRUST_PATH/modules/xsns/act/tmp/add_toAllCommunity.php　として保存する。&lt;/p&gt;
&lt;p&gt;&lt;hr /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/act/tmp/add_toAllCommunity.php　&lt;/font&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//全てのコミュニティに参加する&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;require_once XOOPS_ROOT_PATH.&amp;quot;/class/database/database.php&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;function addToAllCommunity($uid=0){&lt;br /&gt;
&amp;nbsp;if($uid+0==0) return false;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;$db=&amp;amp;Database::getInstance();&lt;br /&gt;
&amp;nbsp;$table=&amp;quot;setagaya100_xsns_c_commu&amp;quot;;&lt;br /&gt;
&amp;nbsp;$table2=&amp;quot;setagaya100_xsns_c_commu_member&amp;quot;;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;//全コミュニティidリスト&lt;br /&gt;
&amp;nbsp;$prs=$db-&amp;gt;query(&amp;quot;SELECT c_commu_id FROM $table&amp;quot;);&lt;br /&gt;
&amp;nbsp;if(!$prs) die( &amp;quot;xsns custom error: auto add to community : &amp;quot;.__LINE__ ) ;&lt;br /&gt;
&amp;nbsp;$num=$db-&amp;gt;getRowsNum( $prs );&lt;br /&gt;
&amp;nbsp;if( $num &amp;lt;= 0 ) die( &amp;quot;xsns custom error: auto add to community : &amp;quot;.__LINE__ ) ;&lt;br /&gt;
&amp;nbsp;$c_commu_ids=array();&lt;br /&gt;
&amp;nbsp;for($i=0;$i&amp;lt;$num;$i++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$row=mysql_fetch_row($prs);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$c_commu_ids[]=$row[0];&lt;br /&gt;
&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;//参加済みコミュニティidリスト&lt;br /&gt;
&amp;nbsp;$prs=$db-&amp;gt;query(&amp;quot;SELECT c_commu_id FROM $table2 WHERE uid=$uid&amp;quot;);&lt;br /&gt;
&amp;nbsp;if(!$prs) die( &amp;quot;xsns custom error: auto add to community : &amp;quot;.__LINE__ ) ;&lt;br /&gt;
&amp;nbsp;$num=$db-&amp;gt;getRowsNum( $prs );&lt;br /&gt;
&amp;nbsp;$participate_commus=array();&lt;br /&gt;
&amp;nbsp;for($i=0;$i&amp;lt;$num;$i++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$row=mysql_fetch_row($prs);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$participate_commus[]=$row[0];&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;//未参加コミュニティidリスト&lt;br /&gt;
&amp;nbsp;$un_participate_commus=array_diff($c_commu_ids,$participate_commus);&lt;br /&gt;
&amp;nbsp;if( !count($un_participate_commus)) return true;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;//参加処理&lt;br /&gt;
&amp;nbsp;$count=0;&lt;br /&gt;
&amp;nbsp;foreach( $un_participate_commus as $value){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$prs=$db-&amp;gt;query(&amp;quot;INSERT INTO $table2 (uid,c_commu_id,r_datetime) VALUES ($uid,$value,NOW() )&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;//print(&amp;quot;sql: INSERT INTO $table2 (uid,c_commu_id,r_datetime) VALUES ($uid,$value,NOW() )&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if(!$prs) die( &amp;quot;xsns custom error: auto add to community : &amp;quot;.__LINE__ .&amp;quot;:&amp;quot;.$db-&amp;gt;logger-&amp;gt;dumpQueries() );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$count++;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;return $count;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font size=&quot;4&quot;&gt;②　サイト登録時に①の関数を実行するように修正&lt;/font&gt;&lt;br /&gt;
　ユーザーの登録処理は User_UserRegister_confirmActionクラスのexecute()で実行される。XOOPS_ROOT_PATH/modules/user/actions/UserRegister_confirmAction.class.php&lt;br /&gt;
の60行目に①で作成した関数を呼び出す処理を追加する。&lt;hr /&gt;
&lt;/p&gt;
&lt;p&gt;XOOPS_ROOT_PATH/modules/user/actions/UserRegister_confirmAction.class.php&lt;br /&gt;
execure()　(30行目以下）&lt;br /&gt;
&amp;nbsp;&lt;font color=&quot;#808000&quot;&gt;function execute(&amp;amp;$controller, &amp;amp;$xoopsUser)&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$memberHandler =&amp;amp; xoops_gethandler('member');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$this-&amp;gt;mNewUser =&amp;amp; $memberHandler-&amp;gt;createUser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$this-&amp;gt;mRegistForm-&amp;gt;update($this-&amp;gt;mNewUser);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$this-&amp;gt;mNewUser-&amp;gt;set('uorder', $controller-&amp;gt;mRoot-&amp;gt;mContext-&amp;gt;getXoopsConfig('com_order'), true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$this-&amp;gt;mNewUser-&amp;gt;set('umode', $controller-&amp;gt;mRoot-&amp;gt;mContext-&amp;gt;getXoopsConfig('com_mode'), true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if ($this-&amp;gt;mConfig['activation_type'] == 1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;mNewUser-&amp;gt;set('level', 1, true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if (!$memberHandler-&amp;gt;insertUser($this-&amp;gt;mNewUser)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;mRedirectMessage = _MD_USER_LANG_REGISTERNG;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return USER_FRAME_VIEW_ERROR;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!$memberHandler-&amp;gt;addUserToGroup(XOOPS_GROUP_USERS, $this-&amp;gt;mNewUser-&amp;gt;get('uid'))) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;mRedirectMessage = _MD_USER_LANG_REGISTERNG;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return USER_FRAME_VIEW_ERROR;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;nbsp;&amp;nbsp;//ここを追加&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$file=XOOPS_TRUST_PATH.&amp;quot;/modules/xsns/act/tmp/add_toAllCommunity.php&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if( file_exists($file) ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;require_once($file);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if( !addToAllCommunity($this-&amp;gt;mNewUser-&amp;gt;get('uid')) ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;die(&amp;quot;Failed to add to all communities: XSNS custom error:&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;&amp;nbsp;$this-&amp;gt;_clearRegistForm($controller);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;&amp;nbsp;$this-&amp;gt;_processMail($controller);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$this-&amp;gt;_eventNotifyMail($controller);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;XCube_DelegateUtils::call('Legacy.Event.RegistUser.Success', new XCube_Ref($this-&amp;gt;mNewUser));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return USER_FRAME_VIEW_SUCCESS;&lt;br /&gt;
&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;font color=&quot;#0000ff&quot;&gt;以上で、サイトへの登録時に全てのコミュニティに登録される。今後、管理用にサイト登録時以外でもこの機能を呼び出せるようにしたい。また、コミュニティからの退会をできなくするよう手を加えることも必要。&lt;/font&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/xoops-%20xsns%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%E3%82%B5%E3%82%A4%E3%83%88%E7%99%BB%E9%8C%B2%E6%99%82%E3%81%AB%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E5%85%A8%E3%81%A6%E3%81%AE%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B</link> 
    </item>
    <item>
      <title>Xoops: XSNSモジュールで管理者しかコミュニティを作成できないようにする</title>
      <description>&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;XoopsでXSNSを使っている。d3forumなどフォーラム系のモジュールは機能がおおく見づらい気がする。SNSのトピックくらいがちょうどいい。ポータル的に使うことも考えてSNS系モジュールにした。しかしSNSなのでコミュニティはログインユーザーならだれでも作れてしまう。テーマ(?)が決まっているサイトなので、コミュニティはあらかじめテーマの数だけに限定したい。コミュニティの作成を管理者にしかできないようにXSNSを修正する。&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#000000&quot;&gt;[環境]&lt;br /&gt;
XOOPS Cube Legacy 2.1.6&lt;br /&gt;
XSNS 1.11 &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;[修正箇所]&lt;br /&gt;
テンプレート側：「コミュニティ新規作成」出しわけの箇所&lt;br /&gt;
php側：　入力フォームオープン時&amp;rarr;入力内容確認時&amp;rarr;新規作成実行時の各処理の箇所&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font color=&quot;#000000&quot;&gt;①テンプレート側&lt;br /&gt;
　デフォルトではgestユーザー以外、（管理者を含むxoopsユーザー）の場合はXSNSトップページで&lt;br /&gt;
「コミュニティ新規作成」のリンクが表示されるようになっている。&lt;br /&gt;
　Xoopsのユーザーかどうかを判別するメソッドはisGuest()としてXsnsCommonActionクラスに定義されている。ここに、管理者かどうかを判別するメソッドisAdmin()を追加する。&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/userlib/class/commonAction.php XsnsCommonActionクラス内に下記を追加&lt;br /&gt;
&lt;/font&gt;&lt;font color=&quot;#808000&quot;&gt;function isAdmin()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;if($this-&amp;gt;isXoopsUser()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;global $xoopsUser;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return $xoopsUser-&amp;gt;isAdmin();&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;hr /&gt;
&lt;/font&gt;
&lt;p&gt;　&lt;font color=&quot;#000000&quot;&gt;isGuest()はXsns_Default_Action-&amp;gt;dispatch()(XOOPS_TRUST_PATH/modules/xsns/act/index/defaultAction.php line105)&lt;br /&gt;
でコールされ、結果がsmarty変数「is_guest」にセットされる(Xsns_Default_ActionクラスはXsnsCommonActionクラスを継承している。）。同様に先ほどのisAdmin()の結果を「is_admin」にセットするようにする。&lt;br /&gt;
&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/act/index/defaultAction.php dispatch()内&lt;br /&gt;
&lt;/font&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;$this-&amp;gt;context-&amp;gt;setAttribute('is_guest', $this-&amp;gt;isGuest());&lt;br /&gt;
&amp;nbsp;&lt;font color=&quot;#993300&quot;&gt;$this-&amp;gt;context-&amp;gt;setAttribute('is_admin', $this-&amp;gt;isAdmin()); /*&amp;larr;ここを追加*/&lt;br /&gt;
&lt;/font&gt;&amp;nbsp;$this-&amp;gt;context-&amp;gt;setAttribute('keyword', $keyword);&lt;br /&gt;
&amp;nbsp;$this-&amp;gt;context-&amp;gt;setAttribute('url', $url);&lt;/font&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;　XSNSトップページのテンプレート（xsns_index.html）に手を加え「コミュニティ新規作成」のリンクが管理者が閲覧したときのみ表示されるようにする。&lt;br /&gt;
　（管理ページ &amp;gt; テンプレートの管理 &amp;gt; XSNS &amp;gt; xsns_index.html）&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;xsns_index.htmlの1/4くらいのところ&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#339966&quot;&gt;:before&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;lt;{if !$is_guest}&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;even&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;{$xoops_url}&amp;gt;/modules/&amp;lt;{$mydirname}&amp;gt;/?act=add&amp;quot;&amp;gt;&amp;lt;{$smarty.const._MD_XSNS_INDEX_ADD}&amp;gt;&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;lt;{$smarty.const._MD_XSNS_INDEX_ADD_DESC}&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;{/if}&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=&quot;#800080&quot;&gt;:after&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;lt;{if $is_admin}&amp;gt; &amp;lt;!--&amp;larr;ここを修正　--&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;even&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;{$xoops_url}&amp;gt;/modules/&amp;lt;{$mydirname}&amp;gt;/?act=add&amp;quot;&amp;gt;&amp;lt;{$smarty.const._MD_XSNS_INDEX_ADD}&amp;gt;&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;lt;{$smarty.const._MD_XSNS_INDEX_ADD_DESC}&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;{/if}&amp;gt;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font color=&quot;#000000&quot;&gt;②php側&lt;br /&gt;
　テンプレート側でリンクを消しただけだとURLを指定してアクセスされた際にグループ作成ができてしまうので、php側でも管理者だけがグループ作成できるように手を加える。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;②-1入力フォームオープン時&lt;br /&gt;
&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/act/index/addAction.php dispatch() (line8～)&lt;br /&gt;
&lt;/font&gt;&lt;font color=&quot;#339966&quot;&gt;:before&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;&amp;nbsp;if($this-&amp;gt;isGuest()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#800080&quot;&gt;:after&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;if( !$this-&amp;gt;isAdmin() ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;②-2入力内容確認時&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/act/index/add_confirmAction.php dispatch() (line6～)&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#339966&quot;&gt;:before&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;font color=&quot;#808000&quot;&gt;if( $this-&amp;gt;isGuest() ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#993366&quot;&gt;:after&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;if( !$this-&amp;gt;isAdmin() ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;②-3新規作成実行時&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;font color=&quot;#000000&quot;&gt;XOOPS_TRUST_PATH/modules/xsns/act/index/add_execAction.php dispatch() (line8～)&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#339966&quot;&gt;:before&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;if($this-&amp;gt;isGuest() || !$this-&amp;gt;validateToken('COMMUNITY_ADD')){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#993366&quot;&gt;:after&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;font color=&quot;#808000&quot;&gt;if(!$this-&amp;gt;isAdmin() || !$this-&amp;gt;validateToken('COMMUNITY_ADD')){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;redirect_header(XOOPS_URL, 2, _NOPERM);&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;　以上で、管理者でアクセスした場合のみ「コミュニティ新規作成」のリンクが表示され、&lt;br /&gt;
通常ユーザーではコミュニティ作成ができないようになる。&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/xoops-%20xsns%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%E7%AE%A1%E7%90%86%E8%80%85%E3%81%97%E3%81%8B%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B</link> 
    </item>
    <item>
      <title>Xoopsに動的コンテンツを組み込む</title>
      <description>&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;Xoopsに新規のphpプログラム(動的なページ）を組み込みたい。&lt;br /&gt;
d3none で実現することにした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;・モジュール調査&lt;br /&gt;
モジュールを調べたところ、TinyContent,TinyD,pico,d3noneなど&lt;br /&gt;
静的コンテンツの管理モジュールはあるようだが動的コンテンツを&lt;br /&gt;
扱うモジュールは見つけることができなかった。&lt;br /&gt;
（そもそも「動的コンテンツを扱う」という考え方がいらないのかも&lt;br /&gt;
しれないが。）&lt;/p&gt;
&lt;p&gt;pico系はTinyContent &amp;rarr; TinyD &amp;rarr; pico と進化している模様。&lt;br /&gt;
d3noneはそれとは別系で何もない空白のページを組み込むモジュールらしい。&lt;br /&gt;
何もない分自由度高いようなのでd3noneを使うことにした。&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
・方法&lt;br /&gt;
　d3noneで参照されるphpファイルに追加コードを書き込むことで動的ページを&lt;br /&gt;
表示させられる。&lt;br /&gt;
　XOOPS_TRUST_PATH/modules/d3none/main/index.php を下記のように修正&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;include('../../mainfile.php');&lt;br /&gt;
include(XOOPS_ROOT_PATH.'/header.php');&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;print &amp;quot;test test test&amp;quot;;&amp;nbsp;&amp;nbsp;//&amp;larr;ここを追加&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;// none&lt;br /&gt;
include(XOOPS_ROOT_PATH.'/footer.php');&lt;br /&gt;
exit();&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://file.notitile.blog.shinobi.jp/7d92da23.jpg&quot;&gt;&lt;img alt=&quot;実行結果&quot; align=&quot;left&quot; border=&quot;0&quot; src=&quot;http://file.notitile.blog.shinobi.jp/Img/1239414226/&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
・index.php以外へのアクセス&lt;br /&gt;
　index.php以外のファイルに表示するには、ブラウザで　&lt;a href=&quot;http://'yourdomain'/html/modules/d3none/?page=hoge&quot;&gt;http://'yourdomain'/html/modules/d3none/?page=hoge&lt;/a&gt; にアクセスすると、XOOPS_ROOT_PATH/modules/d3none/main/hoge.phpにアクセスする。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/xoops%E3%81%AB%E5%8B%95%E7%9A%84%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80</link> 
    </item>
    <item>
      <title>scRUBYt!+REXML　複数のニュースサイトから最新ニュースをスクレイピングするアプリ</title>
      <description>&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;　scRUBYt!を使ったスクレイピングの練習に複数のニュースサイトから最新ニュースを集めて&lt;br /&gt;
表示するサンプルアプリを作った。&lt;br /&gt;
　scRUBYt!,REXMLとも適当なドキュメントが見つからず苦労した。&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#000000&quot;&gt;[環境]&lt;br /&gt;
　VMware Server 2.0.0&lt;br /&gt;
　Fedora 10&lt;br /&gt;
　Apache 2.2.10&lt;br /&gt;
　ruby 1.8.6&lt;br /&gt;
　scrubyt 0.3.4&lt;/font&gt;&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://file.notitile.blog.shinobi.jp/5a46d0f2.jpeg&quot;&gt;&lt;img alt=&quot;実行結果&quot; align=&quot;left&quot; border=&quot;0&quot; src=&quot;http://file.notitile.blog.shinobi.jp/Img/1238643526/&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
・XPath&lt;br /&gt;
&amp;nbsp;scRUBYTt!でXPathの指定が期待通り動かず手間取った。&lt;br /&gt;
私がXPathをよくわかっていないことも原因だろうと思うが、&lt;br /&gt;
「:example_type =&amp;gt; :xpath」をつけないとちゃんと動かない(?)との&lt;br /&gt;
情報もあり。(&lt;a href=&quot;http://d.hatena.ne.jp/kasei_san/20090204/p1&quot;&gt;http://d.hatena.ne.jp/kasei_san/20090204/p1&lt;/a&gt;)　　&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;・参考ドキュメント&lt;br /&gt;
&amp;nbsp;scRUBYt!&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://github.com/scrubber/scrubyt_examples/tree/master&quot;&gt;http://github.com/scrubber/scrubyt_examples/tree/master&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;rarr;scRUBYt!のサンプル。&lt;br /&gt;
&amp;nbsp;REXML&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://www.germane-software.com/software/rexml/docs/tutorial.html&quot;&gt;http://www.germane-software.com/software/rexml/docs/tutorial.html&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;rarr;はじめの方にある「Accessing Elements」は参考になった。&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://pub.cozmixng.org/~kou/rexml-doc-ja/&quot;&gt;http://pub.cozmixng.org/~kou/rexml-doc-ja/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;rarr;それっぽいClass,Methodを感で使ってみた。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;・データの扱い&lt;br /&gt;
　scRUBYt!のto_hash関数でHASHオブジェクトにして扱おうと思ったが&lt;br /&gt;
うまくいかなかった。入力データの構造に縛りがあるのだろうか。&lt;br /&gt;
to_xmlで出力し、REXMLオブジェクトに入れて扱う。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;#!/usr/bin/env ruby&lt;br /&gt;
ENV['INLINEDIR']='/tmp/.ruby_inline'&amp;nbsp;&amp;nbsp;#RubyInlineのバグ(?)対策&lt;br /&gt;
require 'rexml/document'&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'scrubyt' &lt;br /&gt;
require 'kconv'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&lt;br /&gt;
#Cnet&lt;br /&gt;
data1 = Scrubyt::Extractor.define&amp;nbsp; do&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;fetch 'http://japan.cnet.com/'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;record &amp;quot;//div[@class='section08 articlelist08']&amp;quot; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;link_title &amp;quot;//li/a&amp;quot;, :write_text=&amp;gt;true do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;link_url&lt;br /&gt;
&amp;nbsp;&amp;nbsp;end&lt;br /&gt;
&amp;nbsp;end&lt;br /&gt;
end&lt;br /&gt;
xml1 = REXML::Document.new data1.to_xml&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;#ITPro&lt;br /&gt;
data2 = Scrubyt::Extractor.define&amp;nbsp; do&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;fetch 'http://itpro.nikkeibp.co.jp/news/index.html'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;record &amp;quot;//div[@class='newsPickup']&amp;quot; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;link_title &amp;quot;//div/span/a&amp;quot;, :write_text=&amp;gt;true do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;link_url&lt;br /&gt;
&amp;nbsp;&amp;nbsp;end&lt;br /&gt;
&amp;nbsp;end&lt;br /&gt;
end&lt;br /&gt;
xml2 = REXML::Document.new data2.to_xml&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;#CodeZine&lt;br /&gt;
data3 = Scrubyt::Extractor.define&amp;nbsp; do&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;fetch 'http://codezine.jp/'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;&amp;nbsp;record &amp;quot;//div[@id='news_list']&amp;quot; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;link_title &amp;quot;//li/a&amp;quot;, :write_text=&amp;gt;true do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;link_url&lt;br /&gt;
&amp;nbsp;&amp;nbsp;end&lt;br /&gt;
&amp;nbsp;end&lt;br /&gt;
end &lt;br /&gt;
xml3 = REXML::Document.new data3.to_xml&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;title=&amp;quot;News-Search | 複数のニュースサイトから最新ニュースをスクレイピング&amp;quot;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;#以下、表示部&lt;br /&gt;
print &amp;lt;&amp;lt;&amp;quot;EOS&amp;quot;&lt;br /&gt;
Content-type: text/html; charset=shift_jis\n\n&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;#{title}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=shift_jis&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;td {border:1px black solid;vertical-align:top;}&lt;br /&gt;
&amp;nbsp;.yellow {background-color:yellow;}&lt;br /&gt;
&amp;nbsp;.blue&amp;nbsp;{background-color:blue;}&lt;br /&gt;
&amp;nbsp;.green&amp;nbsp;{background-color:green;}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;#{title}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:1px black solid;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;td class=&amp;quot;yellow&amp;quot;&amp;gt;CNET&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;td class=&amp;quot;blue&amp;quot;&amp;gt;ITPro&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;td class=&amp;quot;green&amp;quot;&amp;gt;CodeZine&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
EOS&lt;br /&gt;
xml1.elements.each(&amp;quot;//link_title&amp;quot;){&lt;br /&gt;
&amp;nbsp;|element|&lt;br /&gt;
&amp;nbsp;puts &amp;quot;&amp;lt;a target='_blank' href=#{element.get_text('link_url')}&amp;gt;#{element.text}&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;\n&amp;quot;&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;print &amp;lt;&amp;lt;&amp;quot;EOS&amp;quot;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
EOS&lt;br /&gt;
xml2.elements.each(&amp;quot;//link_title&amp;quot;){&lt;br /&gt;
&amp;nbsp;|element|&lt;br /&gt;
&amp;nbsp;puts &amp;quot;&amp;lt;a target='_blank' href='http://itpro.nikkeibp.co.jp#{element.get_text('link_url')}'&amp;gt;#{element.text.tosjis}&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;\n&amp;quot;&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;print &amp;lt;&amp;lt;&amp;quot;EOS&amp;quot;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
EOS&lt;br /&gt;
xml3.elements.each(&amp;quot;//link_title&amp;quot;){&lt;br /&gt;
&amp;nbsp;|element|&lt;br /&gt;
&amp;nbsp;puts &amp;quot;&amp;lt;a target='_blank' href='http://codezine.jp/#{element.get_text('link_url')}'&amp;gt;#{element.text.tosjis}&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;\n&amp;quot;&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;print &amp;lt;&amp;lt;&amp;quot;EOS&amp;quot;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
EOS&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/scrubyt--rexml%E3%80%80%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%81%8B%E3%82%89%E6%9C%80%E6%96%B0%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E3%82%92%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA</link> 
    </item>
    <item>
      <title>桜は8分</title>
      <description>&lt;p&gt;八時起床。&lt;br /&gt;
朝食を食べ午前中は部屋で過ごす。&lt;br /&gt;
&lt;br /&gt;
昼食は国領でKと。&lt;br /&gt;
&lt;br /&gt;
ドトールのコーヒーがいつの間にか２００円に？前は１８０円だった気がする。&lt;br /&gt;
世田谷保険事務所に自転車で行く。結局三軒茶屋～山下間を走破。&lt;br /&gt;
役所の仕事って、なんというか、ストレスがすごそう。&lt;br /&gt;
PCの画面がCUIベースのアプリのよう（古そう）で気になった。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
コーヒー 200円&lt;br /&gt;
駐輪場 100円&lt;br /&gt;
昼食　1,500円&lt;br /&gt;
漫画喫茶　800円&lt;br /&gt;
&lt;br /&gt;
[カルディ]&lt;br /&gt;
コーヒー豆 500円&lt;br /&gt;
コーヒーフィルター 150円&lt;br /&gt;
ビスケット 300円&lt;br /&gt;
&lt;br /&gt;
[パルケ]&lt;br /&gt;
サンマ（３匹）　300円&lt;br /&gt;
乾燥わかめ 250円&lt;br /&gt;
米 2500円&lt;br /&gt;
納豆 88円&lt;br /&gt;
ウィスキー 800円&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/%E6%97%A5%E5%B8%B8/%E6%A1%9C%E3%81%AF8%E5%88%86</link> 
    </item>
    <item>
      <title>Apacheの自動起動設定</title>
      <description>&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;Apaacheがシステムの起動時に自動的に起動するように設定しようとしたら、&lt;br /&gt;
結構手こずったのでメモ。&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
[環境]&lt;br /&gt;
　VMware Server 2.0.0&lt;br /&gt;
　Fedora 10&lt;br /&gt;
　Apache 2.2.10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
・起動スクリプトは既にあった。&lt;br /&gt;
/etc/rc/init.d/httpd&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;---------------------------------------------------------------------------------------------&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# httpd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Startup script for the Apache HTTP Server&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: - 85 15&lt;br /&gt;
# description: The Apache HTTP Server is an efficient and extensible&amp;nbsp; \&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server implementing the current HTTP standards.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;（以下略）&lt;br /&gt;
---------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
「# chkconfig: - 85 15」 が　[起動レベル　起動順番　停止順番]になっている模様。&lt;br /&gt;
起動レベルが「-」なので起動しない。ランレベル3,5で起動するように&lt;br /&gt;
# chkconfig: 35 85 15　に変更&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 ~]# chkconfig --add httpd&lt;br /&gt;
[root@VMware1 ~]# chkconfig --list httpd&lt;br /&gt;
httpd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:off&amp;nbsp;&amp;nbsp; 1:off&amp;nbsp;&amp;nbsp; 2:off&amp;nbsp;&amp;nbsp; 3:off&amp;nbsp;&amp;nbsp; 4:off&amp;nbsp;&amp;nbsp; 5:off&amp;nbsp;&amp;nbsp; 6:off&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　&amp;rarr;設定が反映されない。さっき修正した箇所が参照されているかどうかを確認するために、&lt;br /&gt;
# chkconfig: 35 85 16　に変更してもう一度。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 ~]# chkconfig --add httpd&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 ~]# chkconfig --list httpd&lt;br /&gt;
httpd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:off&amp;nbsp;&amp;nbsp; 1:off&amp;nbsp;&amp;nbsp; 2:off&amp;nbsp;&amp;nbsp; 3:off&amp;nbsp;&amp;nbsp; 4:off&amp;nbsp;&amp;nbsp; 5:off&amp;nbsp;&amp;nbsp; 6:off&lt;br /&gt;
[root@VMware1 ~]# ls -l /etc/rc3.d/*httpd&lt;br /&gt;
lrwxrwxrwx 1 root root 15 2009-03-29 13:23 /etc/rc3.d/K&lt;font color=&quot;#339966&quot;&gt;16&lt;/font&gt;httpd -&amp;gt; ../init.d/httpd&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　&amp;rarr;やはり起動設定はできていないが、停止のためのシンボリックリンクは16になっているので&lt;br /&gt;
修正した箇所が参照はされている模様。いろいろ試したがchkconfig --addでは起動設定できなかった。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;・chkconfigコマンドでレベルを指定し直接設定&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 ~]# chkconfig --level 35 httpd on&lt;br /&gt;
[root@VMware1 ~]# chkconfig --list httpd&lt;br /&gt;
httpd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:off&amp;nbsp;&amp;nbsp; 1:off&amp;nbsp;&amp;nbsp; 2:off&amp;nbsp;&amp;nbsp; &lt;font color=&quot;#800000&quot;&gt;3:on&amp;nbsp;&lt;/font&gt;&amp;nbsp;&amp;nbsp; 4:off&amp;nbsp;&amp;nbsp; &lt;font color=&quot;#800000&quot;&gt;5:on&amp;nbsp;&amp;nbsp;&lt;/font&gt;&amp;nbsp; 6:off&lt;/font&gt;&lt;br /&gt;
　&amp;rarr;設定できている。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;・システムをシャットダウンから起動。&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 ~]# service httpd status&lt;br /&gt;
httpd (pid&amp;nbsp; 2164) を実行中...&lt;/font&gt;&lt;br /&gt;
&amp;rarr;Apacheも起動してる。OK。rebootでも確認できた。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;起動スクリプトの記述で起動設定できない理由は不明。。&lt;br /&gt;
VMだから？&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/apache%E3%81%AE%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E8%A8%AD%E5%AE%9A</link> 
    </item>
    <item>
      <title>scRUBYt!のサンプルをブラウザから実行</title>
      <description>&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;　scRUBYt!のサンプルプログラムebay.rbをブラウザからアクセスして動かしてみる。&lt;br /&gt;
手こずったがなんとか動くようになったので作業ログ。&lt;br /&gt;
　Webアプリにするときは表示出力部分を整えないといけない。&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;[環境]&lt;br /&gt;
　VMware Server 2.0.0&lt;br /&gt;
　Fedora 10&lt;br /&gt;
　Apache 2.2.10&lt;br /&gt;
　scRUBYt!-0.3.4&lt;br /&gt;
　RubyInline-3.6.3&lt;br /&gt;
&lt;br /&gt;
・とりあえずブラウザからアクセスしてみるが、500エラーになる。&lt;br /&gt;
Apacheのerror_logを見てみるとエラーが出力されている。&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;[Sat Mar 28 13:08:08 2009] [error] [client 192.168.1.2] Define INLINEDIR or HOME in your environment and try again&lt;br /&gt;
[Sat Mar 28 13:08:08 2009] [error] [client 192.168.1.2]&lt;br /&gt;
[Sat Mar 28 13:08:08 2009] [error] [client 192.168.1.2] Premature end of script headers: ebay.rb&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　調べてみると、「Define INLINEDIR or HOME in your environment and try again」はRubyInline-3.6.3のバグの模様。&lt;br /&gt;
3.6.3より上のバージョンに代えようとしたが、scRUBYt!-0.3.4はRubyInline-3.6.3が必須。scRUBYt!の0.4.1以上はfirewatirをrequireするのでパスしたい。現状の構成でエラーを解決することにする。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;　「Define INLINEDIR or HOME in your environment and try again」はRubyInlineが環境変数$HOME,$INLINEDIRのいずれかを参照しようとして、どちらも参照できない場合に起こる模様。（コマンドプロンプトで直接たたく際は$HOMEがあるが、Webサーバ経由で実行だとapacheユーザーになるため。）&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;・ebay.rbに、&lt;br /&gt;
　ENV['INLINEDIR']=/tmp/.ruby_inline （※１）&lt;br /&gt;
　を追記し、環境変数INLINEDIRが参照できるように修正しコマンドラインから実行。&lt;br /&gt;
　&amp;rarr;下記エラーが発生&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#808000&quot;&gt;[root@VMware1 goy]# /var/www/cgi-test/ebay.rb&lt;br /&gt;
/tmp/.ruby_inline is insecure (40777). It may not be group or world writable. Exiting.&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;・INLINEDIRに割り当てているフォルダのパーミッションを変更。&lt;br /&gt;
　&lt;font color=&quot;#808000&quot;&gt;chmod -R 0755 /tmp/.ruby_inline&lt;/font&gt;&lt;br /&gt;
　コマンドラインから実行&amp;rarr;OK&lt;br /&gt;
　ブラウザから実行&amp;rarr;500エラー　error_logに下記が出力される。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#808000&quot;&gt;[Sat Mar 28 16:34:30 2009] [error] [client 192.168.1.2] /usr/lib/ruby/gems/1.8/gems/scrubyt-0.3.4/lib/scrubyt/core/scraping/filters/text_filter.rb:25: warning: don't put space before argument parentheses&lt;br /&gt;
[Sat Mar 28 16:34:41 2009] [error] [client 192.168.1.2] malformed header from script. Bad header=&amp;lt;root&amp;gt;: ebay.rb&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;・http応答ヘッダーでContent-Typeを指定するよう追記（※２）&lt;br /&gt;
　ブラウザから実行&amp;rarr;OK！&lt;br /&gt;
&lt;br /&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://file.notitile.blog.shinobi.jp/33d1eb11.jpeg&quot;&gt;&lt;img alt=&quot;33d1eb11.jpeg&quot; align=&quot;left&quot; border=&quot;0&quot; src=&quot;http://file.notitile.blog.shinobi.jp/Img/1238234484/&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
最終的にソースは下記のように。&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
[root@VMware1 cgi-test]# vi ebay.rb&lt;/p&gt;
&lt;p&gt;#!/usr/bin/ruby -K&lt;/p&gt;
&lt;p&gt;ENV['INLINEDIR']='/tmp/.ruby_inline'&amp;nbsp;&amp;nbsp;#　&lt;font color=&quot;#800000&quot;&gt;&amp;larr;※1&lt;/font&gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'scrubyt'&lt;/p&gt;
&lt;p&gt;ebay_data = Scrubyt::Extractor.define&amp;nbsp; do&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch 'http://www.ebay.com/'&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fill_textfield 'satitle', 'ipod'&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; submit&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; record &amp;quot;//table[@class='nol']&amp;quot; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name &amp;quot;//td[@class='details']/div/a&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;
end&lt;/p&gt;
&lt;p&gt;print &amp;quot;Content-type: text/html\n\n&amp;quot;&amp;nbsp;&amp;nbsp;#　&lt;font color=&quot;#800000&quot;&gt;&amp;larr;※2&lt;/font&gt;&lt;br /&gt;
puts ebay_data.to_xml&lt;/p&gt;
&lt;p&gt;---------------------------------------------------------&lt;br /&gt;
~&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/it/scrubyt-%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C</link> 
    </item>
    <item>
      <title>東亜コーヒー</title>
      <description>&lt;p&gt;今日は朝食後、掃除洗濯。夕方までscRBYt!の研究。夜はフットサルの予定。&lt;br /&gt;
&lt;br /&gt;
ガストでモーニング(朝食)　600円&lt;br /&gt;
セブンイレブン(昼食)　600円&lt;br /&gt;
&lt;br /&gt;
夕方から買い物&lt;br /&gt;
&lt;br /&gt;
駅前の東亜コーヒーでケーキセット 650円&lt;br /&gt;
[買い物]&lt;br /&gt;
りんご４つ、卵１０個、レタス、きゅうり２本　1000円&lt;br /&gt;
食パン一斤、徳用ポークウィンナー　500円&lt;br /&gt;
&lt;br /&gt;
気になる喫茶店「琥珀」に行ってみようかと思ったが、人の気配が&lt;br /&gt;
しなさすぎたので駅前の東亜コーヒーへ。&lt;br /&gt;
結構人がいる。コーヒーはうまい。best coffee of the world とのこと。&lt;br /&gt;
チェーン店なんだー。へー。&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description> 
      <link>http://notitile.blog.shinobi.jp/%E6%97%A5%E5%B8%B8/%E6%9D%B1%E4%BA%9C%E3%82%B3%E3%83%BC%E3%83%92%E3%83%BC</link> 
    </item>

  </channel>
</rss>