2003-05-17
λ dailyupdate.rb 初期バージョン
日付ごとのファイル yyyymmdd.td2d をtDiaryに読み込ませるスクリプト。update.rb の一部をパクった。posttdiary.rb をベースにしたはずなのにNKFの引数ぐらいにしか痕跡が残っていない。#!/usr/bin/env ruby $KCODE= 'e' # # dailyupdate: update tDiary via e-mail. $Revision$ # # Copyright (C) 2003, All right reserved by KAMIYA Satosi# You can redistribute it and/or modify it under GPL2. def usage text = <<-TEXT #{File::basename __FILE__}: update tDiary via daily separated files. usage: ruby dailyupdate.rb [options] arguments: update.rb: path to your update.rb dailyfiles: .td2d TEXT text.gsub( /\t/, '' ) end require 'nkf' require 'cgi' def update_rb_replace(body, title, year, month, day) require 'tdiary' @cgi = CGI::new conf = TDiary::Config::new tdiary = nil # Set CGI Variables @cgi.params['old'] = ["#{year}#{month}#{day}"] @cgi.params['year'] = [year] @cgi.params['month'] = [month] @cgi.params['day'] = [day] @cgi.params['title'] = [NKF::nkf( '-m0 -Xed', title )] @cgi.params['body'] = [NKF::nkf( '-m0 -Xed', body )] @cgi.params['replace'] = ['true'] tdiary = TDiary::TDiaryReplace::new( @cgi, 'show.rhtml', conf ) puts "replace: #{@cgi.params['old']}\n" end def updatefile(filename) if %r|^(\d\d\d\d)(\d\d)(\d\d)\.| =~ File.basename(filename) then year = $1 month = $2 day = $3 File.open(filename) { |fp| body = fp.read title = '' savedir = Dir.pwd Dir.chdir(File::dirname( updaterb )) begin update_rb_replace(body, title, year, month, day) ensure Dir.chdir(savedir) end } end end begin # main routine raise usage if ARGV.length < 1 # parse options require 'getoptlong' parser = GetoptLong::new opt_recurse = false parser.set_options( ['--recurse', '-r', GetoptLong::NO_ARGUMENT], ) begin parser.each do |opt, arg| case opt when '--recurse' opt_recurse = true end end rescue raise usage end updaterb = ARGV.shift if FileTest::symlink?( updaterb ) then org_path = File::dirname( File::readlink( updaterb ) ) else org_path = File::dirname( updaterb ) end $:.unshift( org_path.untaint ) ARGV.each { |filename| if opt_recurse == false then updatefile(filename) else # end } rescue $stderr.puts $! exit 1 end
λ title 変数がないとエラーになるのだが、日毎につけるタイトルは利用していないのでとりあえず空白で。
λ <pre>の中でも、空白行があったらセクションの始まりになってしまうのか。きつー。
2003-05-21 dailyupdate.rb
λ 1日毎につけたファイル
を反映させるスクリプト。diaryupdate.rb -r ~/public_html/tdiary/update.rb .みたいにして使う。
1日毎のファイル名はyyyy/mm/dd.td2dまたはyyyymmdd.td2dなんだな。
1行目に <title> タグで囲まれた文字列があったらその日タイトルとし、その行のタイトル以外の文字列は無視される。
λ <pre> + src プラグイン
両方併用しないとソースの公開はダメなのねん。ということが判明。 そしてsrcプラグインで取り込んだ上記ソースは実際に使っているプログラムなので日記の日付と関係なく常に最新。λ Webで更新されたらどうしよう
.td2 の中身の Last-Modified: が新しくなってたら .td2d ファイルを上書き? (convert2.rb 参考にすればいけそうな気はする) あるいは <= dailyinclude> プラグインとか作って .td2 の中は毎日それ1行だけを動的に .td2d ファイルを読ませるとか。2003-05-23
λ rdfを吐き出すプラグイン
host = ENV['HTTP_HOST'] path = ENV['REQUEST_URI']でサイト情報を取得しているため、ruby dailyupdate.rb から update_rdf.rb プラグイン経由でRDFを更新することができない。 せめて@cgi経由で取得するのが作法なんではないかと思ってみたり。中でエラーが起きているのを包んでいるプラグインクラスがはじいているようだ。
とりあえず「最新の日付に向かって空のコメントを投げる」HTTPアクセスを追加する方針で。
基本的には更新時間の提供のためのファイルだからリキ入れて作ることもあるまい。
2003-05-24
λ tDiary FreeBSD用ports との闘い
複数のtDiaryを運営するような ports の作成の前段階として、 fkimura さんが作成された Makefile (リンク先に書いてあるのはMakefileではなくインストール用スクリプト) の理解をしようと portlint -A してみたり他のportsのMakefileを参照したりして、下記のように修正してみた。 理解できた限りで ports の流儀に従うように書いたつもり。λ 複数のtDiaryを運営する場合 /usr/local/share/example/ の下に本番ファイルがあるのもナニなので、全般的に example/ を削除してある。
(このまま利用する場合、tdiary-FreeBSD.sh からも example/ を抜く必要あり。)
λ プラグインは相対シンボリックリンクで
個人的な趣味ではあったが、副作用として post-install の pkg-plist 作成している部分が簡単になった。
また、make の指定時のマクロは ruby のモジュール名ではなく プラグイン名で指定するように変更。
ただ日記を付けるだけのユーザはrubyのモジュールには興味ないだろうから。
λ ${TAR} in ports
cp -pR だとシンボリックリンクを 上書きしようとする場合にコケる。 /usr/ports/Mk/bsd.ports.mk に pax へのマクロが実装されていないため、昔ながらの tar でディレクトリを再帰的にコピーする方法を 利用することにした。λ chown -R root:wheel を chown + chgrp に分割
ユーザとグループをchownで両方指定すると文句言うので分割。コロンが含まれたユーザとかがいるとヤバイということであろう。
λ find . -type d -depth
ディレクトリの削除は深いところから順番に。ソートはいらんでしょ。
λ 絵日記プラグイン
の事を考えると、Webから更新した情報を取り込むのも優先順位高いよなあ。
λ 日記ファイルにコメント行
今までTDSで ## で始まる行は表示されないという機能を使ってメモ代わりにしていたのをどうしよう。
俺フィルター? Wikiスタイルがコメントをサポートしてくれれば移行する気になるのだが。
「何も出力しないプラグイン」という技はあるにしても。
λ Scarletテーマ
どんなケバい画面になるのかと思ったら、手元のThinkPadだとどちらかというとワイン色ベースで結構落ち着く。
今回の劇団☆新感線「紅天狗」の歌の一節 "Scarlet Phantom〜It's a daemon〜♪" が最近頭から離れないのも選択の理由。
アンカーの茸が天狗のお面になると完璧なのに。
λ rdfを吐き出すプラグイン パッチ
実行環境の値を取り出すのは プラグインで説明されている @cgi経由で取得するのがスジであろうとちょっとした修正。作者にメールを送ってみた。
λ PATH_INFOとREQUEST_URI
環境によっては
@cgi.path_info でPATH_INFO環境変数が取得できない。
cgi.rb は @cgi.request_uri によるREQUEST_URIの取得ができないので、結局環境変数に頼ることになる。なんてこった。
2003-05-25 tDiary複数+suExec環境実践編
@no_referrer を真っ先に設定しないとweb経由での更新時にどんどん記録されてしまって空しい数字が表示されることになる。
@rereferr_table はシステム全体共通でよかろう。ユーザが変更する場合は完全に上書きするか、unshift で追加か?
λ ユーザ追加時の作業内容
一般ユーザが自分で作業する場合は、chown, chgrp 不要# mkdir $HOME/tdiary # mkdir $HOME/public_html/tdiary # mkdir $HOME/public_html/tdiary/plugin; ln -s /usr/local/share/tdiary/plugin/00default.rb $HOME/public_html/tdiary/plugin # cd $HOME/public_html/tdiary; ln -s /usr/local/share/tdiary/theme # cp $WORKSRC/index-user.rb index.rb # index-user.rb は後述 # cp $WORKSRC/update-user.rb update.rb # update-user.rb は後述 # cp $WORKSRC/dot-htaccess .htaccess # dot-htaccess は後述 # $HOME/public_html/tdiary/tdiary.conf をユーザ毎に合わせて設定する # chown -R hoge $HOME/tdiary $HOME/public_html/tdiary # chgrp -R hoge $HOME/tdiary $HOME/public_html/tdiary # chmod u+x $HOME/public_html/tdiary/index.rb # chmod u+x $HOME/public_html/tdiary/update.rb # chmod -R go-w $HOME/public_html/tdiary # 他人が書き込み可能な状態だと suExec で実行させてくれない # chmod go-w $HOME/public_html元のドキュメントではテーマをサーバの http://example.com/theme に設定するように書いてあるが、 ここではユーザのディレクトリから毎回シンボリックリンクを張ることにより実現している。
ユーザが自分用のテーマを利用する際、このシンボリックリンクを消して自分でthemeディレクトリを構築すれば、ユーザ毎に違ったテーマ集を利用可能である。
ユーザが自分用のプラグインを利用する際、plugin ディレクトリに置けばよい。/usr/local/share/tdiary/misc/plugin/someplugin.rb へのリンクでもいいし、ファイルを直接置いてもよい。
λ index-user.rb
#!/usr/bin/env ruby require '/usr/local/share/tdiary/index'
λ update-user.rb
#!/usr/bin/env ruby require '/usr/local/share/tdiary/update'
λ dot-htaccess
Options +FollowSymLinks は必須。
基本的にはシステム全体で共通でよいはずだが、認証方法や RewriteRule などユーザによって設定したいことがあるかも。
λ ユーザのtdiary.conf
# user's tdiary.conf @user_name = 'hoge' @data_path = '/home/hoge/tdiary' @plugin_path = '/home/hoge/public_html/tdiary/plugin' eval( File::readlines( "/usr/local/etc/tdiary.conf" ).join.untaint )@data_path に指定したディレクトリを作成しておくこと。ディレクトリはCGIが動作する権限で書き込みができる必要がある。
λ ユーザ毎に異なるプラグイン集合のための考察
プラグインディレクトリに置いただけであれこれ勝手にやってしまうタイプのプラグインが存在しており、このタイプのプラグインは管理者が設置すると強制的に適用されてしまう状況にある。現在「ユーザ毎のプラグイン」という仕組みが存在しないのは悩みどころ。ユーザのディレクトリにあるpluginディレクトリを探索する "user_plugin.rb" というプラグインを作成するといいのだろうか。
基本はマスターのプラグインディレクトリに対するシンボリックリンクで、update.rbの設定画面でチェックボックスで選択できるようになるのが理想。
↑と書いていたら、たださんよりツッコミがあったので修正してみた(2003-5-26)
2003-05-26
λ [tDiary] Makefileを利用してSVN経由での更新
こんな Makefile を作成して、Windows側で dailyupdate/2003/05/26.td2d ファイルを更新したらmake serverで反映されるようにした。cygwinのssh-agentを利用しているため完全に自動化。
λ 新規ファイルを作成した場合は例えばsvn add 2003/05/26.td2dのように追加する。
dailyupdate.rb と Makefile を修正して、拡張子が
.rd2dの場合 RD スタイルとして登録されるようにした。
日によって tDiaryスタイルとRDスタイルを使い分けられる。
dailyupdate.rb は @style に代入する文字列を直接受け付けるだけなので、他のスタイルを使いたい時もテケトーに拡張子を定義して Makefile に1行追加すれば済むはず。
日記ファイルの漢字コードはNKFにより自動変換される 。
λ サーバ内のsvnserve設定
svnserveは daemontools で管理しており、起動スクリプト/var/service/svnserve/runは以下の通り。
#!/bin/sh
uid_svn=`id -u svn`
gid_svn=`id -g svn`
svn_ip=localhost
svn_port=3690
svn_home=/home/svn
exec env - PATH=/usr/local/sbin:/usr/bin:/usr/local/bin:/bin \
tcpserver -H -R -v \
-u $uid_svn -g $gid_svn $svn_ip $svn_port \
svnserve -r $svn_home \
2>&1
localhostからの接続は認証なしで通る運用である。
前出のMakefileにおける日記の更新はここに向かってsshでトンネル作成をしている。
将来的にはHTTPSで証明書認証にする予定。
λ でざいん
左サイドバーに入れる画像欲しいにゃー。誰かに頼もうかしらん。と段々日記っぽくするテスト
λ RDスタイルのためにやったこと
cd /usr/local/share/tdiary/tdiary;
sudo ln -s ../misc/style/rd/rd_style.rb
だけなり。
λ Wikiスタイルのためにやったこと
cd /usr/local/share/tdiary/tdiary;
sudo ln -s ../misc/style/wiki/wiki_style.rb;
sudo ln -s ../misc/style/wiki/wiki_parser.rb
λ TrackBack
一度もやったことないので実はナニモノか理解してない
λ Harbot設置
デフォルト状態では http://www.mimori.org/~h/tdiary/?date=20030526 へのアクセスでもURLが違うと文句を言われてしまうので、
URLのチェックを外した。
λ tDiaryコミュニティへの参加
メーリングリストは tDiary-users-talkメーリングリスト てのがあるらしいけど、どっちかというとWikiに書き込んでしまうというのが今風と思われる。λ 福島邦子オフィシャルサイト Nikky!
テレビで見てライブ行ってみたいかもと思ったら、 今晩かよ! 。やられたー。CDでも買うか。2003-05-27
λ フォントサイズを相対指定
絶対指定できれいなデザインというのは「見るひとの環境について強い制約がある」という前提を認識しているんなら別にかまわない。
相対指定できれいなデザインは「いかに多くの環境で検証したか」という努力を問われているわけで、 一個人の趣味でそういう方向性を目指すのは難しいだろうなあ、と思う。 オープンソース的手法で相互に高めあう仕掛けとして、tDiaryのテーマいけてるのかもなあ。
2003-05-28
λ BIND9 のゾーンファイルを Subversion で管理する
ネームサーバのゾーンはすべてmasterとして構成しておく。 以下のようなMakefileを作成。
# $Id: Makefile,v 1.3 2003/05/27 07:32:18 root Exp $
all::
svn update
chown -R bind /local/named/master /local/named/slave
chgrp -R bind /local/named/master /local/named/slave
/usr/local/sbin/rndc reload
makeKeyFile::
/usr/local/sbin/dnssec-keygen -a hmac-md5 -r /dev/urandom -b 512 -n user bind
更新する際は、任意のネームサーバでゾーンファイルを編集して svn commit する。 次にすべてのネームサーバにログインして make を実行する。
以下のスクリプト作成して、ssh鍵の設定をなんとかすると自動化できそう(未検証)。
#!/bin/sh ssh primaryserver 'cd /local/named; make' ssh secondaryserver1 'cd /local/named; make' ssh secondaryserver2 'cd /local/named; make'
って結局こういう ssh 実行するんならrsyncでの同期で大差ないかも…
Subversion の $Rev$ をSOAのSerialNumberにそのまま利用したいのじゃが、どうしたもんか。eruby通すかなあ。
λ RDフォーマットでのソース引用方法
現在研究中。RDの通常の書き方だといちいちインデントする必要がある。 個人的には頻繁に利用するのでsrcプラグインの拡張をするか、エディターの支援環境を作るか悩ましい。
昨日と今日はRDスタイルで書いている。
λ The Design and Implementation of the NetBSD rc.d system
NetBSDの /etc/rc.d の解説。FreeBSD 5.0系もこれになっている。
λ xyzzy RD-minor-modeでTDSのNEW*コマンドと同等の作業
= Ctrl-c f u
と入力すると =((<URL:>)) が挿入されてURL入力状態になる。4ストロークぐらいならすぐに脊髄が覚えるはずだ! エディターでURLを入れるとタイトルも勝手に取ってきて挿入できるようになるといいな。
5/29追記:5月29日のリファレンスを自動生成でそうなるようにした。
もともと日常の軽いドキュメントはRDで書いてHTMLフォーマットしたものを渡す体制にありつつあったので、 RDへの統一はありがたい。rubyのモジュールだと半強制的にRDだしー。
λ [tDiary]絵日記プラグイン機能追加版
絵日記プラグインの設置方法も結構詳しく書いてある。複数tDiaryのports化もにらみつつ。
λ Ruby/GD copyResized
netpbmとどっちが速いかな
2003-05-29
λ [FreeBSD]rss-recent.rb
portinstall textproc/ruby-rss で元をインストールしてみた…ら全然ちゃうやん。
portinstall textproc/ruby-rss.alt が正解。
んんん?これはRSSを作るんじゃなくて、他のとこのRSSを表示するプラグインか。
λ [xyzzy]RDのタイトル付きリファレンスを自動生成
LunascapeでアクティブタブにあるドキュメントをRDフォーマットの参照として取り込む xyzzy 設定。
~/.xyzzyに下記のコードを追加する。
OLE周りのコードのバイトコンパイルは出来ないようなので、ruby-doc.lに追加するのは推奨できない。
(require "ole")
(load-library "ruby-doc")
(define-key *ruby-doc-mode-map* '(#\C-c #\f #\l) 'ruby-doc-insert-url-lunascape)
(defun ruby-doc-insert-url-lunascape (&optional str)
(interactive "*")
(let (app activeidx activeid doc)
(setq app (ole-create-object "Lunascape.API"))
(setq activeidx #{app.ActiveIndex})
(setq activeid #{app.GetDocumentID[activeidx]})
(setq doc #{app.GetDocumentObject[activeid]})
(insert (format nil "((<~s|URL:~A>))" #{doc.title} #{doc.url}))
(when str (insert str))
))
これで「よーしこのページについてのトピックを書くぞ〜」と思った時に xyzzy にAlt-TABで移動して
= Ctrl-c f l
だけでサブタイトル行が完成する。完璧。TDS時代より楽になったぞ。 見ての通りLunascape APIリファレンスを使っているため、 ブラウザはLunaScape限定でアクティブタブのタイトルとURLが取り込まれる。
λ Apache 2.0.46 Released
WebDAVまわりのセキュリティ修正をしたらしい。ports待ち。
昔はsuExecのコードがへぼだったため --with-suexec-docroot=/home とか上の方のディレクトリを指定する必要があったが、
さすがに直っているだろうと、普通にapacheのDocumentRootを指定するようにした。特に問題ない模様。
そろそろapache1.3.xステにしてもいいかなあ
。
λ [SSL]RFC3089 SOCKSを基にしたIPv6/IPv4ゲートウェイメカニズム
フリーの実装が見つからない。SOCKS64 Gatewayというのが発表はされているのだが。
λ [SSL]S/MIMEでセキュアな電子メール環境をつくる!
コマンドラインから証明書を発行する場合には、X.509 拡張属性 のフィールドについて理解しておく必要がある。 Microsoft証明書サービスでドロップダウンリストで選ばされていたのはここのフィールドの設定だったのか。
X.509電子証明書の互換性(IPA)も参考になる。
keyUsageに実際に設定する値は、RFC24594.2.1.3章参照。
λ OpenSSLにおけるCSR作成の自動化
以下のようなMakefileを作っておいて、make HOST=mimori.orgでCSRが生成されるようにしたい。
csr::
dd if=/dev/urandom of=/tmp/ssl.rand count=1
openssl req -new -nodes -newkey rsa:1024 -sha1 -keyform PEM -config ${HOST}.cnf -keyout ${HOST}.key -outform PEM -out ${HOST}.csr
chmod 600 ${HOST}.key
mimori.org.cnfファイルはこんなんでいいんかな。
RANDFILE = /tmp/ssl.rand [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type prompt = no [ req_dn ] C=JP ST=TOKYO L=tako O=ika OU=ebi CN=mimori.org emailAddress=webmaster@mimori.org [ cert_type ] nsCertType = server # nsCertType = client, email, objsign keyUsage = digitalSignature, keyEncipherment, keyEncipherment
apache2 + mod_auth_ldap
experimentalではあるがソースは標準でくっついてきていて、./configure --with-ldap --enable-ldap --enable-auth-ldap で組み込まれるらしい。
これだったらPAM経由にこだわらなくてもいいな。
Apache based WebDAV with LDAP and SSL
こんなドキュメントが。でもちょっとHOWTOにしては駆け足過ぎかも。
λ DEVIL MONSTER 3(RADEON 9600搭載版)
ファンレス最強ビデオカード。DirectX9対応で萌え。
λ [FreeBSD]AWStats - Free log file analyzer for advanced statistics
tDiaryはTDSみたいなアクセス解析がデフォルトでは付いていないのと、他のページもどういう単語で検索してやってきているのが楽に調べたいんで、 普通のアクセス解析ソフトを物色したところ awstats がよいらしい。 webalizerの方がCで書いてあって速いらしいのだがIPv6アドレスの解釈に問題ありそげな雰囲気。 AWStats Plugins を見ると、IPv6サポートやGeoIPという単語が並んでいる。Perlベースで多少遅くても個人サイトなんだから問題あるめえ。
日本語化に関しては awstats に記述があるけど、
本家がどれぐらい対応しているのかはこれから調査。
とりあえず portinstall www/awstats開始。したがなんかいまいち。
goo.rb(Lazy Diary)
結局これで検索語拾えばいいような。
λ 最近のSCSIについて思うこと(伊勢雅英のIT見聞録)
SCSIによると「IEEE1394も一応SCSI3の一種なんだけどー」 と突っ込みたくなる。もはやパラレルバスのSCSIにこだわる必要はあるまいて。
λ [tDiary]日付ごとのファイルを出力するプラグインmakesvn.rb
dailyupdate.rbと連携させるためのプラグイン。
Webから更新した場合のみ適用され、ついでに svn commitを行ってリポジトリに反映してしまう。
Subversionでファイルに対して勝手プロパティ設定
svn propset tDiary:title "RD style test" 22.rd2d
とtDiary:title属性を設定してやると、svn propget tDiary:titleで別のとこからでも属性の値を取れる。
ということは…
svnio.rb を defaultio.rb の代わりに
というというような方針が一番幸せなのか。 ファイル形式の指定を @io_class で指定して、外堀から攻めるんじゃなくて土台をひっくり返してしまう大技。 大技といっても defaultio.rb は元々200行余しかないので大変ではないと思う。dailyupdate.rbがすでに176行なわけだし…
2003-05-30
λ [Windows]IIS4.0〜5.1に4種類のセキュリティホール
しばらくWindowsUpdateがなくてそろそろかなと思ってたところ。SUSで許可出した。適当に週末に処理する予定。
λ [Windows] 070-215Installing, Configuring, and Administering Microsoft Windows 2000 Server
無人インストール、ネットワーク越しバックアップ、暗号化ファイルシステムのバックアップ、リモートアクセスポリシー あたりが怪しかった。 点数が出ないのでどれぐらい合っていたかすら分からないんだよなあ…
次は 070-228の予定
λ Shuriken3 Pro 着信監視プロセス
ハイバネーションから戻った時にCPUを食い続けてしまう。
λ センター試験に“正解の法則”あり(YOMIURI ON-LINE / 社会)
そういうのも含めてセンター試験なんじゃないの? 選択肢を順番に読むという前提で出題者がいかにヒッカケようとしているかを汲み取るとか。
2003-05-31
λ [tDiary] RDstyleからfootnoteプラグインの利用
普通に RD で脚注指定すれば勝手にfootnoteプラグインを使うのに今気づいた。xyzzyなら Ctrl-c f f で入力支援されてとても楽。
λ [Windows]ASP から C++ で書いたコードを呼ぶ
ここに出てくる「ウィザードでデュアルインターフェースを選択すれば」のウィザードは、VC++6.0ではATLオブジェクトの新規作成のこと。 VisualStudio.Net2003では、クラスビューでのクラスの追加から起動する。 ユーザーインターフェースが不要なら「シンプルオブジェクト」を利用する。
読書記録
COM関連のドキュメント。
開発方針
設定ファイルを読んでどうこうみたいなカスタマイズはVBスクリプトで書いた方が絶対楽なので、 C++で書かないといけないものは、スクリプトからCreateObjectで呼べるようにオートメーションオブジェクトにしておく。 COM+にたたきこめばセキュリティ関連の設定できるみたいだし。
「Rubyを256倍使う本 邪道編」に書いてあったWindowsはカーネルとCOMからできている。は至言。
λ bsfilter / bayesian spam filter / ベイジアン スパム フィルタ
SDBM採用+MeCab採用と2件も要望を聞いていただいてしまったので、使わないのは失礼であろう。明日あたり実験する予定。
λ 日経ソフトウェア創刊5周年記念セミナー
だから、底上げの意味でも、スーパーハッカーなひとたちはめちゃくちゃ高い対価を要求すべき、 というのは一理あるような気がします。
個人的にはソリューションでお金をもらってコーディングはどっちかというと趣味みたいな枠組みに落ち着いてしまってるんだけど、 フリーソフトウェアのすごい開発者がどう対価を要求するべきか、というのはなかなか難しい。 一般人の払った税金をIPA経由で受け取る以外の方法はないものか…
おそらく、対価を実際に受け取るためには開発者を守って矢面に立つ人が必要なんではないかと。 技術的な課題だけに集中できた/enbug diary(2003-05-29)を読みつつ そんなことを考えた。
アニメ業界におけるプロデューサーという職業がソレなのかしら。 一方現在のソフトウェア業界のプロジェクトマネージャは違う気がする。
using plugin: amazon calendar2 category html_anchor makelirs makerss recent_comment3 recent_trackback3 squeeze tb-send tb-show recent_list
Copyright(C) 2003-2007 by KAMIYA Satosi (上美谷 智史) All rights reserved.
λ ただただし [tdiary.confで@plugin_pathが指定できるので、ユーザごとのプラグインは可能です]
λ 上美谷 [なるほど。解説恐れ入ります。修正してみます]