yuu_nkjm blog


2009-07-08(Wed) [長年日記] 編集

[研究][Scrap] セルフアーカイビング

広く研究成果を知ってもらうためにセルフアーカイビングをしましょうというお話し.報告書や申請書の作成の時にも必要になることが多いので,作っておくと役立つかも.bibtexで書いておいて,所属研究室内フォーマットや文科省指定フォーマットに変換できるような仕組みを作りたいところ.


2009-07-10(Fri) [長年日記] 編集

[Pukiwiki][CMS][bash][GitHub] Pukiwikiの更新内容をメールで通知するシェルスクリプト (Pukiwiki Update Checker)

シェルスクリプトの練習として,Pukiwikiの更新内容をメールで通知するスクリプトを書いてみた.せっかくなので,公開してみる.cronが使えないサーバでは使えない.

概要

このシェルスクリプトは,設定ファイルを読み込んで動作する.設定ファイルにwikiの設置情報を書き,cronでシェルスクリプトを定期実行する.

以下,6時間おきに更新をチェックする場合の設定を説明する.バックアップの生成タイミングとスクリプトを走らせるタイミングをどう合わせたら良いか分からん.更新情報の報告漏れや重複があると思うが,なんとなく更新が拾えるし,まあ,いいか….

本スクリプトの設定ファイルの書き方

# wikiをインストールしたディレクトリ
WIKI_PATH=/var/www/html/hoge/wiki/
# 更新メールをおくる周期(分)(更新されたファイルリストを生成するfindコマンドに渡される値.cronで一日に一回実行しているので,-mminの値を360にしている.)
INTERVAL=360
# メールの送信先
TO=hoge@gmail.com
# メールのタイトル
SUBJECT=Hoge Wiki is Updated
# ベースとなるwikiのURL.メール本文中のリンク文字列を生成するときに使う.
URL=http://hoge.hogehoge.com/wiki/
# tempファイルを生成する
TEMP_PATH=/home/hoge/tmp/

pukiwikiの設定ファイルの変更

バックアップの周期を適切に設定.

// Bacukp interval and generation
$cycle  = 6;    // Wait N hours between backup (0 = no wait)

呼び出し方

cronにこんな感じで登録.

00  */6  *  *  *  /home/hoge/bin/pukiwiki_update_checker.sh /home/hoge/bin/hoge_wiki_mail.conf

送られてくる更新通知のサンプル

To: hoge@gmail.com
件名: Hoge Wiki is Updated
本文: 
2 pages are updated
---------
Updated Page Name: FrontPage
http://hoge.hoge.info/wiki/?%46%72%6F%6E%74%50%61%67%65
 
更新された行とその前後が記載されます.
---------
Updated Page Name: 
 
(中略)
 
--
Generated by Pukiwiki Checker

ダウンロード


2009-07-11(Sat) [長年日記] 編集

[Pukiwiki] インストールしたプラグインと使い方のまとめ

文書編集・コンテンツの埋め込み

HTMLの埋め込み
 #html{{
 
 }}
PHPの埋め込み

セキュリティに要注意.

 #php{{
  phpinfo();
 }}
Javaコードの埋め込み
#highlight(java){{
package yuu.nkjm.info;
public class Vehicle {
	@Override
	public String toString() {
		return "Vehicle Id " + getId();
	}
}
}}
#highlight(end)
新規作成時のヘッダ・フッタ

新規作成には以下のような内容を先頭に書くのが定石

 &tag(インストール,管理ログ);
 #contentsx
ページの読み込み
 #includex(MySQLの設定);
アップロードと添付を一括操作で
 &attachref();
ミニカレンダー(日ごとのページを作成可能)
 #minicalendar(Diary,off);
 #minicalendar_viewer(Diary,3,past);
編集可能テーブルの挿入
 #table_edit2(,table_mod=close){{
 |SIZE(10):LEFT:10%|SIZE(10):LEFT:14%|SIZE(10):LEFT:12%|SIZE(10):LEFT:8%|SIZE(10):LEFT:14%|SIZE(10):LEFT:14%|SIZE(10):LEFT:6%|SIZE(10):LEFT:32|SIZE(10):LEFT:8%|SIZE(10):LEFT:8%|c
 |~発表|~Title|~著者|~機関|~題名|~要約|~テーマ|~年|~資料|~備考|h
 |IEEE TRANSACTIONS .. |Multi-Agent Systems ... Challenges|...|||||2007|#attachref();||
 }}
簡易編集テキストボックスの挿入
 |SIZE(11):|||c
 |名前|出欠|備考|h
 |nkjm (所属)|#memox(40,1,更新,,【出席・弁当あり】【出席・弁当なし】【欠席】)|#memox(10,1,更新,,)|
 |yuu (所属)|#memox(40,1,更新,,【出席・弁当あり】【出席・弁当なし】【欠席】)|#memox(10,1,更新,,)|

ページ管理・閲覧・検索

ディレクトリ以下のページの一覧作成
 #lsx();
 #lsx(MyWikiGuide);
まとめてページ削除
 index.php?cmd=deldel
grepして置換
 index.php?cmd=regexp
タグの管理
-tagの付与
 &tag();
-タグ群の表示 
 #tagcloud(100);
-タグのクリア
 index.php?cmd=tag
他のページのインクルード
 #include(ミーティングの日程,notitle);
 #includex(注意事項);
テンプレートからのページ生成
 [[ミーティングページ作成>myhost:cmd=template&refer=Meeting/Template]]

その他

間接的な自ホストの指定
 [[Grep置換>myhost:cmd=regexp]]
 [[non_listの一覧>myhost:cmd=nonlist]]

2009-07-13(Mon) [長年日記] 編集

[coLinux][Windows] WindowsXPで無線LANを使ったブリッジ接続

「USBの無線LAN接続が動作する.有線LANとcoLinuxのブリッジ接続は動作する.しかし,USBの無線LANとcoLinuxのブリッジ接続をすると,ネットワークが全く使えない状態になる.」という症状が発生した.

通常だとForceCompatibilityModeがenableになっていない.

[E:\]netsh bridge show a
 ID AdapterFriendlyName         ForceCompatibilityMode
----------------------------------------------------------------------
  1 USB-Wireless                unknown
  2 openSUSE-coLinux               unknown
  3 MP45-D                      unknown
----------------------------------------------------------------------

ForceCompatibilityModeをenableにする.

[E:\]netsh bridge set a 1 e
[E:\]netsh bridge set a 2 e
[E:\]netsh bridge show a
----------------------------------------------------------------------
 ID AdapterFriendlyName         ForceCompatibilityMode
----------------------------------------------------------------------
  1 USB-Wireless                enabled
  2 openSUSE-coLinux               enabled
----------------------------------------------------------------------

以上のような操作をしたところ,ブリッジ接続が正しく動作し,USB-WirelessとopenSUSE-coLinuxという二つのネットワーク接続にIPアドレスが割り当てられるようになった.

参考にしたページ


2009-07-14(Tue) [長年日記] 編集

[Pukiwiki] pukiwikiの設定とCSSの変更のログ

主に設定だけで行える改善.

2012-02-06 編集エリアのサイズ

default.ini.php

/////////////////////////////////////////////////
// テキストエリアのカラム数
$cols = 120;
 
/////////////////////////////////////////////////
// テキストエリアの行数
$rows = 25;

2010-04-27 編集画面からの遷移の確認をoff

pukiwiki.ini.phpを編集

 // Control of form unloading which you do not intend
 $ctrl_unload = 1;

2009-06-23 templateというページを新規作成時のテンプレートに指定

pukiwiki.ini.phpを変更.

 $auto_template_rules = array(
 //      '((.+)\/([^\/]+))' => '\2/template'
 '((.+)\/([^\/]+))' => '\2/template', // (1)
 '((.+)\/([^\/]+))' => 'template',    // (2)
 '(()(.+))'         => 'template'     // (3)
 );

2009-04-16 添付ファイルを圧縮しない

attach.inc.php, attachref.inc.phpに以下の設定をする.

 defined('PLUGIN_ATTACH_UNKNOWN_COMPRESS')       or define('PLUGIN_ATTACH_UNKNOWN_COMPRESS', 0);
 // 1(compress) or 0(raw)

上の対策に気付かず,attach.inc.php, attachref.inc.phpのコードを書きかえてしまった.

 // ファイルタイプによる圧縮添付の判定
 function attach_is_compress($type,$compress=1){
        return 0;

2009-03-12 バナー,ロゴを変更

Button generator and badge online maker | My cool buttonで作成したバナーを登録した.images/pukiwiki.plus_log.pngを差し替える.

2009-07-13 はみ出た部分の処理をするcss

 overflow: auto  !important;
 white-space: -moz-pre-wrap !important; /* Mozilla */
 white-space: -pre-wrap !important;     /* Opera 4-6 */
 white-space: -o-pre-wrap !important;   /* Opera 7 */
 white-space: pre-wrap !important;      /* CSS3 */
 word-wrap: break-word !important;      /* IE 5.5+ */

2009-01-21 Pukiwiki Plus!の特殊ページ

-MenuBar: このページを作成することで、左サイドにメニュー項目を出せます。
-SideBar: のページを作成することで、右サイドにメニュー項目を出せます。
-Navigation: このページを作成することで、デフォルトのナビゲーションメニュー(新規、編集などのメニュー)の代わりに javascript を用いたナビゲーションメニューを作成できます。詳細は Plugin/navibar2.inc.php
-:Footer: このページを作成することで、フッタ領域に任意の内容を表示できます。関連:footarea.inc.php
-:Header: このページを作成することで、ヘッダ領域に任意の内容を表示できます。関連:headarea.inc.php

2009-01-21 autopagerizeに対応

extend/plugin/sonots/pagelist.class.phpにrel="next"を追記

 $nextlink = '<span class="next" style="float:right;"><a rel="next" href="' . $nexthref . '">' . _('Next ') . $length . '</a></span>';
 

skin/monobook/monobook.skin.phpのmain-columnの終了直前に以下を追記.

 <div class="autopagerize_insert_before">&nbsp;</div>

skin/monobook/monobook.skin.phpのmainに以下を追記

 <div class="autopagerize_page_element" id="content"<?php echo $background ?>>

ユーザの制限

auth_users.ini.phpで設定可能

auth.ini.phpで,basic認証かダイジェスト認証かを変える.

// 1: basic
// 2: digest
$auth_type = 2;
 /////////////////////////////////////////////////
 // Authentication Parameter REALM
 $realm = 'XXXXXXXXXXX';

auth_api.iniでloginプラグインの設定

項目	意味	1	0
use	使用するかどうかを指定	使用	停止
displayname	loginプラグインで表示する名称を指定	指定文字列
hidden	loginプラグインで表示を隠すかどうかを指定	非表示	表

2009-01-03 note機能をオフ

extend/wikinote.inc.phpを編集.plugin/wikinote.ini.phpではない.pluginとextendでは後者が優先

  $default_options['except']       = '^$';
↓
  $default_options['except']       = '.*';

2008-12-31 Spam機能をオフ

特定のURLでまっ白になることがある.BugTrack/165 - PukiWiki Plus!.pukiwiki.ini.phpに下記を書く.

 // Spam URI insertion filtering
 $spam = 0;      // 1 = On

2008-06-26 見た目通り改行

pukiwiki.ini.phpを変更

 // Convert linebreaks into 
$line_break = 1;

2007-04-01 wiki編集時のサポートの位置を変更

lib/html.phpの以下を編集.
 $add_assistant

2006-02-23 表を左寄せに

スタイルシートで「.style_table」の中にある「margin:auto;」をコメントアウト.
 margin:5px 5px 5px 5px;
も追加.

2006-02-23 pukiwikiの特定のページにアクセス制限

まず,.htaccessにユーザを追加する.

あるキーワードを含むページに対しては,.htaccessに記述したユーザの中で選択したものにだけ公開する設定をする.読みと編集の設定があるが,読みだけの時でも編集の制限をかけた方がよい.

 // User definition
 $auth_users = array(
	'foo'	=> 'passwd',
	'bar'	=> 'passwd',
 );
 
 // Authentication method
 // 'pagename' : by Page name
 // 'contents' : by Page contents
 $auth_method_type = 'contents';
 
 // Read auth (0:Disable, 1:Enable)
 $read_auth = 1;
 // Read auth regex
 $read_auth_pages = array(
 	'#(ネタバレ|ねたばれ)#'	=> 'foo,bar,hoge',
 );
 
 // Edit auth (0:Disable, 1:Enable)
 $edit_auth = 1;
 // Edit auth regex
 $edit_auth_pages = array(
	'#(ネタバレ|ねたばれ)#'	=> 'foo',
 );

2005-10-18 AutoLinkを停止

 /////////////////////////////////////////////////
 // _Disable_ WikiName auto-linking
 $nowikiname = 1;
 /////////////////////////////////////////////////
 // AutoLink feature
 // AutoLink minimum bytes (0 = Disable)
 $autolink = 0;

プラグインの設定

2007-07-25 ミニカレンダーの設定

minicalendar_viewer.inc.phpに以下を書くと,ミニカレンダーが作成される.

define('PLUGIN_MINICALENDAR_VIEWER_TRACKBACK',FALSE);

2009-07-15(Wed) [長年日記] 編集

[Pukiwiki][Troubleshooting] pukiwikiのトラブルシューティングのログ

2010-04-28 plugin実行回数の上限を変更

lib/plugin.php のPKWK_PLUGIN_CALL_TIME_LIMIT 定数の設定を変える.

 // Plugin related functions
 //define('PKWK_PLUGIN_CALL_TIME_LIMIT', 768);
 define('PKWK_PLUGIN_CALL_TIME_LIMIT', 7680);

2005-05-15 添付ファイルのサイズ制限を変更

plugin/attach.inc.phpのファイル内容

 // Max file size for upload on PHP (PHP default: 2MB)
 ini_set('upload_max_filesize', '8M');
 // Max file size for upload on script of PukiWikiX_FILESIZE
 define('PLUGIN_ATTACH_MAX_FILESIZE', (8192 * 1024)); // default: 1MB

/etc/php.ini の設定

 ; Maximum allowed size for uploaded files.
 upload_max_filesize = 2M

/etc/httpd/conf.d/php.conf

 
 SetOutputFilter PHP
 SetInputFilter PHP
 LimitRequestBody 524288 ← ここ
 

2009-01-05 nonlistを導入して,コロンが先頭のページを検索から外す

もしくは,pukiwiki.ini.phpに以下の設定をする.

 // Search ignored pages
 $search_non_list = 0;

2009-07-16(Thu) [長年日記] 編集

[Pukiwiki] pukiwikiとプラグインのソースコード改変のログ

設定だけでなく,プログラムを書きかえたログ.

2009-01-30 monobook skin にtopicpathを追加

skin/monobook/monobook.skin.phpかな?

   <div class="autopagerize_page_element" id="content"<?php echo $background ?>>
    <h1 class="firstHeading"><?php echo $display_title ?></h1>
   <?php if (arg_check('read') && exist_plugin_inline('topicpath')) {
     echo '<div class="topicpath">' . do_plugin_inline('topicpath') . '</div>';
   } ?>
    <div id="contentSub"></div>

2009-06-20 sonots タグプラグインで表示されるページリストに日付を付ける

tag.class.php

 function get_tag_uri($tagtok)
 {
     return get_script_uri() . '?cmd=taglist&tag=' . rawurlencode($tagtok);
 }

 return get_script_uri() . '?cmd=taglist&sort=date&date=true&next=true&num=1:20&tag=' . rawurlencode($tagtok);

tagclass.inc.phpのaddurlを変更

 function display_tagcloud($limit = null, $relate_tag = null)
 {
         $addurl = "&sort=date&date=true&next=true&num=1:20";
 }

taglist.inc.php

 foreach ($links as $i => $link) {
     $items[$i] = $links[$i];
     if (isset($infos[$i])) $items[$i] .= ' ' . $infos[$i];
     if (isset($tocs[$i])) $items[$i] .= $tocs[$i];
 }

から↓へ

 if (isset($infos[$i])) $items[$i] = $infos[$i];
 $items[$i] .= $links[$i];

2009-01-19 Tagcloudのtaglistの振る舞いを変更

sonots/tag.class.phpを変更

function display_tagcloud($limit = null, $relate_tag = null)
{
    $view = new TagCloud();
    $tagcloud = $this->get_tagcloud($limit, $relate_tag);
    foreach ($tagcloud as $tag => $count) {
        $url = $this->get_tag_uri($tag);
        $addurl = "&sort=date&num=1:5&next=true&include=(titlestr=title))";
        $url = $url.$addurl;
        //var_dump($url);
        $view->add(htmlspecialchars($tag), $url, $count);

2009-01-19 listingプラグインの改造

lookupからURLベースでよべるようにactionタイプのメソッドを追加.

function plugin_listing_action(){
       global $non_list,$vars;
       $args = $vars;
       unset($args["cmd"]);
       unset($args["page"]);
       //var_dump($args);
       $cond = ltrim(rtrim(array_shift($args)));
       $lex = new LexicalAnalysis($cond);
       $exp = new NTExpression($lex->analyze());
 
       $result = $exp->parse();
       $result = $exp->check_non_list($result,PLUGIN_LISTING_NO_DISP);
       $result = $exp->check_non_list($result,PLUGIN_LISTING_NO_DISP_WITH_NON_LIST ? $non_list : "");
 
       $pages = array();
       foreach ($result as $page){
               $pages[$page] = '';
       }
       $decorator = Decorator::make($args);
       //var_dump($decorator->decorate($pages));
       return array('msg'=>'Listing Plugin', 'body'=>$decorator->decorate($pages));
}

最終行において,msgはページのタイトル,bodyは本文を表す.また,global $vars;でHTTPの引数が取れる.

2009-01-05 attachする時の枠のサイズを大きくした

attach.inc.phpにて

 <input type="file" size="96" name="attach_file" id="_p_attach_file" />

2005-10-18 TopicPathでTop(Frontpage)が表示されるように改造

自前でTopへのリンクを追加.これでルートにいるときでも,Topへのリンクが生成される.

 return '
'. 'Top > '. plugin_topicpath_inline()\ . '
';

2005-10-18 一覧を日本語でソート

pukiwiki.ini.phpを変更
 // Enable page-reading feature by calling ChaSen or KAKASHI
 command (0:Enable, 1:Disable)
 
 $pagereading_enable = 1;
  :config/PageReading/dict
ってファイルにルールを追加

2009-07-20(Mon) [長年日記] 編集

[Pukiwiki] pukiwiki(PukiWiki Plus!)のまとめ

pukiwikiのグローバル設定の注意

グローバルな設定をpukiwiki.usr.ini.phpに書いている.例えば,以下の様な設定である.

// PLUS_ALLOW_SESSION - Allow / Prohibit using Session
define('PLUS_ALLOW_SESSION', 1);
 
// 認証せずには閲覧できない
define('PLUS_PROTECT_MODE', 5); // 0,2,3,4,5

pukiwiki.ini.phpの設定を変更しても有効にならないなーと思った時はここでハマっていないかをチェックする.

導入しているプラグイン

Pukiwiki Plus!とmonobookというものを使っている.sonots'さんのプラグインを多く導入している.


2009-07-24(Fri) [長年日記] 編集

[tDiary] tDiary2.2.1から2.3.2に更新中

2.3.2に置きかえてみた.

2.3.x以降の移行でも必要な作業

  • tDiaryのインストールフォルダを"diary",tDiaryの日記を格納するディレクトリを"tdiary_db"とする.
  • "diary"を"diary_old"に名前を変更する.
  • 現在の安定した最新版のtDiary2.3.2をダウンロード.解凍し,名前をdiaryに.
  • .htaccessとtdiary.confをコピー.
    cp -a diary_old/.htaccess diary_old/tdiary.conf diary/
  • 自分で作ったthemeをコピー
    cp -a diary_old/theme/yuu diary/theme
  • 自分で作ったimagesディレクトリ,filesディレクトリをコピー
    cp -a diary_old/images diary_old/files diary
  • misc/plugin以下で自分で追加したものをコピー.
    cp -a diary_old/misc/plugin/category_to_tagcloud.rb diary_old/misc/plugin/navi_user.rb diary_old/misc/plugin/navi-this-month.rb diary_old/misc/plugin/notify_twitter.rb diary_old/misc/plugin/ping.rb diary/misc/plugin

    diary_old/misc/plugin/permalink.rb

    が腐ってるっぽいのでコピーしなかった.
  • msearchプラグインを移動
    cp -a diary_old/util diary
  • squeeze.rbに実行権限を与える.
    chmod +x /home/hoge/diary/misc/plugin/squeeze.rb
  • squeeze.rbをcronで回す.crontabで以下のように書く.
    /home/hoge/diary/misc/plugin/squeeze.rb -p /home/hoge/diary/yuu/diary -c /home/hoge/diary/yuu/diary /home/hoge/diary/yuu/tdiary_db/squeeze
  • squeeze.rbに必要なskel/daysq.rhtmlをコピー.
    cp -a diary_old/skel/daysq.rhtml diary/skel
  • diaryフォルダの直下に設置するpluginをコピー.
    cp -a diary_old/hatena_bookmark_counter.rb diary
  • RSSファイルをコピー.
    cp -a diary_old/*.rdf diary
  • Google Analytics用のファイルをコピー
    cp -a diary_old/google*.html diary

今回EUCからUTF-8に変わるから必要な作業

  • カテゴリが文字化けしていたので,日記dbのcacheのクリア.
    rm tdiary_db/cache/*
  • リンク元が文字化けするので,日記の下の*.tdrのクリア.リンク元の情報はご破算にしてしまおう.EUCがURLエンコーディングされたものを,URLデコードして,それをUTFに変換して,それをまたURLエンコーディングする元気はない.
    find ./tdiary_db -name "*.tdr"|xargs rm
  • navi-this-month.rbの文字コードを変更してコピー.
    cat diary_old/misc/plugin/permalink.rb.bak |nkf -w > diary/misc/plugin/permalink.rb
  • notify_twitter.rbでEUC-JPと書かれているところをUTF8に変更.

トップ «前月 最新 翌月» 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|