Ariel Area Blogs
ナビゲーションã¸ã‚¸ãƒ£ãƒ³ãƒ—
2007・02・28
全文検索エンジンFreyaSXã«ã¤ã„ã¦(2回目)
12月1æ—¥ã®æ›¸ãè¾¼ã¿ã«å¯¾ã™ã‚‹ç¶šãã§ã™ã§ã™ãŒã€æœ€åˆã‹ã‚‰å…¨éƒ¨è¼‰ã›ã¾ã™ã€‚
全文検索エンジンFreyaSXã«ã¤ã„ã¦
1. FreyaSXã«ã¤ã„ã¦
==================
FreyaSX 㯠Freya をベースã«é–‹ç™ºã•ã‚ŒãŸå…¨æ–‡æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã§ã€ç”£æ¥æŠ€è¡“ç·åˆç ”究所ã«ãŠã„ã¦ã€DeleGateã®ä½œè€…ã®ä½è—¤è±Šã•ã‚“ã¨ã„ã†æ–¹ãŒé–‹ç™ºã—ã¦ã„ã¾ã™ã€‚Freya ã¯ã€åŽŸç”°æ˜Œç´€ã•ã‚“ã¨ã„ã†æ–¹ãŒé–‹ç™ºã•ã‚ŒãŸå…¨æ–‡æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã§ã™ã€‚FreyaSXã®ã‚µã‚¤ãƒˆã®URIã¯ã€ä¸‹è¨˜ã«ãªã‚Šã¾ã™ã€‚
http://www.delegate.org/freyasx/index-ja.html
"Freya"ã®ã‚µã‚¤ãƒˆã¯ä¸‹è¨˜ã«ãªã‚Šã¾ã™ã€‚
http://www.ingrid.org/ja/project/freya/
2. redhat9ã§ã®ä½¿ç”¨æ‰‹é †
======================
下記ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚
ftp://ftp.delegate.org/pub/freyasx/freyasx.tar.gz
解å‡ã€å±•é–‹ã—ã¾ã™ã€‚
# gunzip freyasx.tar.gz
# tar xvf freyasx.tar
下記ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåŠã³ãƒ•ã‚¡ã‚¤ãƒ«ãŒå±•é–‹ã•ã‚Œã¾ã™ã€‚
freyasx/INSTALL.sh
freyasx/test/
freyasx/test/fhttpd.conf
freyasx/test/index.shtml
freyasx/test/any2fdif.conf
freyasx/delegate8.9.7-pre1.tar.gz
freyasx/freyasx-0.99.10.tar.gz
INSTALL.shを実行ã—ã¾ã™ã€‚
# cd freyasx
# ./INSTALL.sh
INSTALL.shを実行ã™ã‚‹ã¨ä¸‹è¨˜ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
////////////////////////////////////////////////////////////////////
FreyaSX installer
FreyaSX ver. 0.99.10
DeleGate ver. 8.9.7-pre1
September 20, 2004, Yutaka Sato
////////////////////////////////////////////////////////////////////
Detailed log is put into "INSTALL.log"
extracting FreyaSX-0.99.10 ...
making FreyaSX-0.99.10 ...
extracting DeleGate/8.9.7-pre1 ...
making DeleGate/8.9.7-pre1 ...
Installing to here: /root/freyasx
/root/freyasx/bin
/root/freyasx/etc
/root/freyasx/cgi-bin
/root/freyasx/bank
0) You can remove following unnecessary files:
rm -r /root/freyasx/delegate8.9.7-pre1
rm -r /root/freyasx/freyasx-0.99.10
rm -r /root/freyasx/INSTALL.log
1) Complete the installation and setup your environmnet as follows:
export FSXHOME=/root/freyasx
export PATH="$FSXHOME/bin:$PATH"
2) Then, you can test it as follows:
findex sx
fsearch sx "freya*"
any2fdif -r http://www.delegate.org/freyasx | findex sx
any2fdif -r $HOME/Mail | findex mail
3) Also you can start HTTP server for this FreyaSX and test it:
fhttpd -P8880
... then open URL "http://localhost.localdomain:8880/test" in your WWW browser
See http://www.delegate.org/freyasx/ for more details
////////////////////////////////////////////////////////////////////
FreyaSX ver. 0.99.10ã¨DeleGate ver. 8.9.7-pre1ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ã€‚DeleGateã¯ã€ãƒ—ãƒã‚シサーãƒã§ã™ã€‚Delegateã«ã¤ã„ã¦ã¯ã€ä¸‹è¨˜ã®ãƒšãƒ¼ã‚¸ãŒåˆ†ã‹ã‚Šã‚„ã™ã‹ã£ãŸã§ã™ã€‚
http://masui.net/FreeBSD/step2/chap10.html
上記メッセージã«å¾“ã£ã¦ç’°å¢ƒå¤‰æ•°ã®è¨å®šã‚’è¡Œã„ã¾ã™ã€‚
上記メッセージã«ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€DGROOTã®å€¤ã‚‚è¨å®šã—ã¦ãŠãã¾ã™ã€‚DGROOTã¯ã€Delegateã®ãƒ›ãƒ¼ãƒ ディレクトリã«ãªã‚Šã¾ã™ã€‚
.bash_profileã«è¿½åŠ ã—ã¾ã™ã€‚
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
DGROOT=/home/fukushima/freyasx/
FSXHOME=/fukushima/freyasx
PATH=$PATH:$HOME/bin:$FSXHOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME BASH_ENV PATH FSXHOME DGROOT
.bash_profileã‚’å†èªã¿è¾¼ã¿ã—ã¾ã™ã€‚
# source .bash_profile
次ã«ç´¢å¼•ã®ä½œæˆã‚’è¡Œã„ã¾ã™ã€‚
findexãŒã€ç´¢å¼•ã‚’作æˆã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚
any2fdifã¯ã€findexãŒå—ã‘付ã‘ã‚‹fdifå½¢å¼ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’変æ›ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚
sxã¨ã„ã†ç´¢å¼•ã«ã¤ã„ã¦ã¯ã€INSTALL.shã«ã‚ˆã£ã¦æ—¢ã«ä½œæˆã•ã‚Œã¦ã„ã‚‹ã®ã§ã€findexコマンドを実行ã—ãªãã¦ã‚‚ã€fsearch sx "freya*"ã§æ¤œç´¢ã§ãã¾ã™ã€‚
試ã—ã«ã€aironeã®ãƒ‡ãƒ¼ã‚¿ä¿å˜ãƒ•ã‚©ãƒ«ãƒ€ã«å¯¾ã—ã¦ã€ç´¢å¼•ã‚’作æˆã—ã¾ã™ã€‚最新版ã®aironeã®ãƒ‡ãƒ¼ã‚¿ä¿å˜ãƒ•ã‚©ãƒ«ãƒ€ã¯æš—å·åŒ–ã•ã‚Œã¦ã„ã‚‹ã®ã§ã€ã¨ã‚Šã‚ãˆãšã€v1.0ã®ãƒ‡ãƒ¼ã‚¿ä¿å˜ãƒ•ã‚©ãƒ«ãƒ€ã‚’使用ã—ã¾ã™ã€‚
# any2fdif -r 1 | findex airone
freyasxã¯ã€æ¤œç´¢ã‚’実行ã™ã‚‹CGIãŒç”¨æ„ã•ã‚Œã¦ã„ã‚‹ã®ã§ã€ã“ã®CGIを利用ã—ã¦ã€æ¤œç´¢ã‚’実行ã—ã¦ã„ã¾ã™ã€‚
fhttpdã‚’èµ·å‹•ã—ã¾ã™ã€‚
[fukushima@localhost fukushima]$ fhttpd -P8880
[2465] -P8880 READY
DGROOT=/home/fukushima/freyasx
ADMIN=you@your.domain
AIST-Product-ID: 2000-ETL-198715-01, H14PRO-049, H15PRO-165
Copyright (c) 1994-2000 Yutaka Sato and ETL,AIST,MITI
Copyright (c) 2001-2004 National Institute of Advanced Industrial Science and Te
chnology (AIST)
ブラウザを起動ã—ã€ä¸‹è¨˜ã®URIを指定ã—ã¾ã™ã€‚
IPアドレスã¯ç’°å¢ƒã«åˆã‚ã›ã¦ãã ã•ã„)
http://192.168.0.152:8880/cgi-bin/fsearch.cgi?pfx=ja&index=airone&sort=date&key=fukushima*
(次回ã«ç¶šã)
2005・12・27
移動ã—ã¾ã—ãŸ
http://dev.ariel-networks.com/Members
or
http://dev.ariel-networks.com/Members/inoue
ã§ã™ã€‚
éŽåŽ»ã®blogã¯å‰Šé™¤ã—ãªã„ã®ã§ã€ãƒªãƒ³ã‚¯ã¯è‡ªç”±ã«ã—ã¦ãã ã•ã„。
2005・12・20
EoE
EoE (Ethernet over Ethernet)
http://itpro.nikkeibp.co.jp/article/COLUMN/20051216/226378/
誰ã‹ã‹ã‚‰å£é ã§èžã„ã¦ã„ãŸã‚‰ã€å†—談ã ã¨æ€ã£ã¦èžãæµã—ãŸã¨æ€ã„ã¾ã™ã€‚
Ethernetã«ã‚ˆã‚‹æœ¬æ ¼çš„ãªãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãŒè¡Œã‚ã‚Œã¦ã‚‚ã€ä¸æ€è°ã§ã¯ãªã„世ã®ä¸ã§ã™ã€‚
TCP/IPã‚’C言語ã«ä¾‹ãˆã‚‹ã¨ã€ä¸€éƒ¨ã‚¢ã‚»ãƒ³ãƒ–ラã§æ›¸ã„ã¦ãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã—ã¾ã—ãŸã€ã®å°è±¡ã§ã™(ã“ã®è¦³ç‚¹ã§ã¯ã€MPLSã«ã‚‚ä¼¼ãŸåŒ‚ã„ã‚’æ„Ÿã˜ã¾ã™)。
2005・12・19
メンテナンスãªã©ãªã©
メンテナンス+サーãƒã‚·ã‚¹ãƒ†ãƒ ã®ç§»è¡Œã‚’12/26ã«ã—ã¾ã™ã€‚ãªã®ã§ã€ãã®æ—¥ã¯ã‚µãƒ¼ãƒãŒã‚ˆãæ¢ã¾ã‚Šã¾ã™ã€‚
ã¤ã„ã§ã«ã€ãƒ–ãƒã‚°ãªã©ã®URLも変ã‚ã‚Šã¾ã™ã€‚éŽåŽ»ã®ãƒ–ãƒã‚°ã®ãƒ‡ãƒ¼ã‚¿ã¯å‚ç…§ã ã‘ã«ãªã‚Šã¾ã™ã€‚
2005・12・18
ジングルベル from Google (libjingle)
Libjingle - Google Talk Voice and P2P Interoperability Library
http://code.google.com/apis/talk/index.html
P2Pã¨è¨€ã£ã¦ã‚‚ã€ã„ã‚ゆる多ノードå”調環境ã¨ã—ã¦ã®P2Pã§ã¯ãªãã€NATを越ãˆã¦Peeré–“ã®1対1ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’確立ã™ã‚‹æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚ã“ã®ãƒ©ã‚¤ãƒ–ラリã§ã€Winnyã‚„WinMXãŒã™ãã«ä½œã‚Œã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。
ダウンãƒãƒ¼ãƒ‰ã—ã¦å°‘ã—ソースを見ã¦ã¿ã¾ã—ãŸã€‚
- ライセンスã¯BSD系ライセンス
- 言語ã¯C++ã§ã™ã€‚サイズã¯ã€.hã¨.ccã‚’åˆã‚ã›ã¦3万行強(exampleコードã¨third_partyã®libaudioコードã¯é™¤ã)
- STLを使ã£ã¦ã„ã¾ã™ã€‚テンプレートã°ã‚Šã°ã‚Šã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。
- クラスåã¨ãƒ¡ã‚½ãƒƒãƒ‰åã¯ã‚‰ãã å¼ã€å¤‰æ•°ã¯ã¸ã³å¼ã¨ã‚‰ãã å¼ãŒæ··åœ¨(モジュールã”ã¨ã«ä½œè€…ãŒé•ã†ã›ã„?)。
- XMLパーサã¯expatをクラスã§ãƒ©ãƒƒãƒ—ã—ã¦ã„ã¾ã™(*1)
- sigslotを使ã£ã¦ã„ã¾ã™(*2)。コードã¯ã€ã‹ãªã‚Šsigslotã«ä¾å˜ã—ã¦ã„ãã†ã§ã™ã€‚
- Boostã®scoped_ptrを使ã£ã¦ã„ã¾ã™(Boostã«ã¯éžä¾å˜ã§ã™ã€‚scoped_ptrã®ãƒ˜ãƒƒãƒ€ã ã‘å–り込んã§ã„ã¾ã™)。
- 通信プãƒãƒˆã‚³ãƒ«ã¯ã€XMPPã®æ‹¡å¼µ(Jingle)ã§ã™ã€‚
(*1)(expatã¯AirOneã§ã‚‚使ã£ã¦ã„ã‚‹ã€é«˜é€ŸXMLパーサã§ã™)
(*2)sigslotã¯ã‚¤ãƒ™ãƒ³ãƒˆãƒ‰ãƒªãƒ–ン的ãªã‚³ãƒ¼ãƒ‰ã‚’書ããŸã‚ã®ãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚イベントループをæŒãŸãªã„ã®ã§ã€ã‚¤ãƒ™ãƒ³ãƒˆã¨è¨€ã†ã‚ˆã‚Šãƒ•ãƒƒã‚¯ã¨è¨€ã£ãŸæ–¹ãŒé©åˆ‡ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。作者ã¯å¥³æ€§ã§ã™ã€‚
2005・12・16
「ãªã‚‹ã»ã©ãƒŠãƒƒãƒˆã‚¯! P2PãŒã‚ã‹ã‚‹æœ¬ã€ã‚’èªã¿ã¾ã—ãŸ
岩田ã•ã‚“ã®ã€Œãªã‚‹ã»ã©ãƒŠãƒƒãƒˆã‚¯! P2PãŒã‚ã‹ã‚‹æœ¬ã€ã‚’èªã¿ã¾ã—ãŸã€‚
http://sats.zekku.com/daylist_html?year=2005&month=10&day=20
ã ã„ã¶å‰ã‹ã‚‰æœºã®ä¸Šã«ç©ã‚“ã§ã‚ã£ãŸæ°—ãŒã—ã¾ã™ãŒã€ã‚ˆã†ã‚„ãèªã¿ã¾ã—ãŸã€‚(ãŠãらã)2年以上ç©ã‚“ã§ã‚ã£ãŸ
「イノベーションã®ã‚¸ãƒ¬ãƒ³ãƒžã€ã«æ¯”ã¹ã‚‹ã¨ã€ã ã„ã¶é€Ÿã„ã®ã§è¨±ã—ã¦ãã ã•ã„。
良ã„点:
ã“ã†ã„ã†æ¦‚è«–çš„ãªæœ¬ã§ã¯ã€
- 言葉ã®å®šç¾©(言葉ã¨æ„味ã®å¯¾å¿œ)ãŒæ˜Žç¢ºã§ã‚ã‚‹ã“ã¨
- 言葉ã®ä½¿ã„æ–¹ãŒä¸€è²«ã—ã¦ã„ã‚‹ã“ã¨
- 上ã®å¯¾å¿œãŒä½œã‚‹æ¦‚念体系ã«çŸ›ç›¾ãŒç„¡ã„ã“ã¨
ãŒé‡è¦ã§ã€ã“ã“らã«å•é¡ŒãŒã‚ã‚‹ã¨èªã‚“ã§ã„ã¦é ã«æ¥ã¾ã™ãŒã€ã“ã®æœ¬ã¯ãã¡ã‚“ã¨ã—ã¦ã„ã¾ã™ã€‚ã•ã™ãŒå²©ç”°ã•ã‚“ã€ã‚¨ãƒƒã‚¯ã‚¹ã‚¢ãƒªã‚¨ãƒ«ã§ã™ã€‚
悪ã„点:
1.
æš—å·åŒ–ã«å¯¾ã™ã‚‹ã€Œå¾©å·ã€ãŒã€ã€Œè¤‡åˆã€ã«ãªã£ã¦ã„ã¾ã™ã€‚一箇所ã ã‘ã®typoã§ã¯ãªãã€å…¨ç·¨ã«æ¸¡ã£ã¦typoã—ã¦ã„ã¾ã™ã€‚
2.
p168ã®ã€Œé›»å証明書ã¨ç§˜å¯†éµã®ç®¡ç†ã€ã¯ã„ã¾ã„ã¡ã§ã™ã€‚アリエル社内ã§ã‚‚誤解ã—ã¦ã„る人ãŒã„ã‚‹ã®ã§ã€ã‚¢ãƒªã‚¨ãƒ«ã‚¨ãƒªã‚¢ã«è¨˜äº‹ã‚’書ãã¾ã—ãŸã€‚
「証明書ã¨éµã«é–¢ã™ã‚‹ã€ã‚ã‚ŠãŒã¡ãªãƒ¡ã‚¿ãƒ•ã‚¡ãƒ¼ã¨ã‚ã‚ŠãŒã¡ãªé–“é•ã„ã€
http://dev.ariel-networks.com/modules/xfsection/article.php?articleid=60
# 書ã„ã¦æ€ã„ã¾ã—ãŸãŒã€èª¤ã£ãŸãƒ¡ã‚¿ãƒ•ã‚¡ãƒ¼ã«ã€ãƒ¡ã‚¿ãƒ•ã‚¡ãƒ¼ã§å¯¾æŠ—ã™ã‚‹ã®ã¯é–“é•ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
3.
å‰æ›¸ãã§äº•ä¸Šã«å¯¾ã™ã‚‹è¬è¾žãŒç„¡ã„(第二版ã«æœŸå¾…...)。
é …ç›®ã®é‡ã ã‘見るã¨ã€æ‚ªã„点ã®æ–¹ãŒå¤šã„ã§ã™ãŒã€è‰¯ã„本ãªã®ã§å‹˜é•ã„ã—ãªã„よã†ã«ã—ã¦ãã ã•ã„。
2005・12・09
地ç„ã®ãƒšã‚¢ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°
今日ã€æ‹˜æŸ14時間ã€ç´„12時間ã®ãƒšã‚¢ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚’ã—ã¾ã—ãŸã€‚å«Œã„å«Œã„大好ãXPã£ã¦æ„Ÿã˜ã§ã™ã€‚
端ã§è¦‹ã¦ã„ã‚‹ã‹ã‚‰ä»–人ã®ãƒŸã‚¹ã«æ°—ã¥ãã¨ã„ã†å´é¢ã‚‚ã‚ã‚Šã¾ã™ãŒã€è¾›å£ãªãŒã‚‰ã€ãƒŸã‚¹ã®å¤šã•ã¯å¶ç„¶ã§ã¯ç„¡ã„ã¨æ€ã„ã¾ã—ãŸã€‚以下ã€å°‘ã—æ„šç—´ã£ã½ã„話ã§ã™ãŒã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®åŸºæœ¬çš„ãªéƒ¨åˆ†ã‚’å«ã‚“ã§ã„ã‚‹ã®ã§æ›¸ãã¾ã™ã€‚
# 以下ã®ä¾‹ã§å‘½åãŒç”˜ã„ã§ã™ãŒã€ãã“ã¯è«–点ã§ã¯ç„¡ã„ã®ã§ç„¡è¦–ã—ã¦ãã ã•ã„。
- ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã¸ã®è¦–点ãŒç”˜ã„
ã€Œãƒ‡ãƒ¼ã‚¿æ§‹é€ ã€ã¨è¨€ã£ã¦ã‚‚ã€é«˜åº¦ãªè©±ã§ã¯ã‚ã‚Šã¾ã›ã‚“。éžå¸¸ã«åŸºæœ¬çš„ãªè©±ã§ã™ã€‚
ç°¡å˜ã«è¨€ã†ã¨ã€Cã§æ›¸ãã¨
struct foo_t {
int x;
int y;
} foo[N];
ã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã‚ã‚‹ã¹ãã‚‚ã®ã‚’ã€æ¬¡ã®ã‚ˆã†ã«æ›¸ã„ã¦ã„ã¾ã—ãŸã€‚
int arr_x[N];
int arr_y[N];
è¦ã¯ã€æ§‹é€ 体ã®é…列ã§ã‚ã‚‹ã¹ãã¨ã“ã‚ãŒã€è¤‡æ•°ã®é…列ã«ãªã£ã¦ã„ã¾ã™ã€‚
é…列arr_xã¨é…列arr_yãŒ(æš—é»™ã«)関係ã—ã¦ã„ã¾ã™ã€‚çµæžœã¨ã—ã¦ã€ã“れらをå‚ç…§ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
for (i = 0; i < N; i++) {
int x = arr_x[i];
int y = arr_y[i];
// xã¨yã¯ãƒšã‚¢ã§ä½¿ã‚れる
}
以å‰ã€ãƒ—ãƒã®ãƒ—ãƒã‚°ãƒ©ãƒžæ´20年以上ã®äººãŒã“ã‚“ãªã‚³ãƒ¼ãƒ‰ã‚’書ã„ãŸã®ã§ã€é€Ÿæ”»ã§ç›´ã•ã›ã¾ã—ãŸã€‚例ãˆã€å‹•ã„ãŸã¨ã—ã¦ã‚‚ã€ã“ã‚“ãªã‚³ãƒ¼ãƒ‰ã¯ã€å˜åœ¨ãã®ã‚‚ã®ãŒè¨±ã›ã¾ã›ã‚“。
今日ã¯è«¸èˆ¬ã®äº‹æƒ…ã«ã‚ˆã‚Šæ”¾ç½®ã•ã‚Œã¾ã—ãŸ... (言語ãŒPerlã ã£ãŸã¨ã„ã†ã®ã‚‚ç†ç”±ã®ã²ã¨ã¤ã§ã™ã€‚Cã ã£ãŸã‚‰10分ã§æ›¸ãç›´ã™ã®ã§ã™ãŒã€Perlã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã¨ãƒãƒƒã‚·ãƒ¥ã®ã‚³ãƒ¼ãƒ‰ã‚’10分ã§æ›¸ãç›´ã™è‡ªä¿¡ãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚会社ã«æˆ»ã£ãŸã‚‰ã€éš£ã®å‡„ã„人ã«ãƒã‚«ã«ã•ã‚Œãã†ã§ã™)
- フラグã®ç›´äº¤æ€§ã¸ã®è¦–点ãŒç”˜ã„
フラグ変数ãŒå¤šã™ãŽã‚‹ã€ã¨ã„ã†å•é¡Œã‚‚ã‚ã‚Šã¾ã™ãŒã€å®Ÿã¯ã¼ã自身もフラグ変数をçµæ§‹ä½¿ã†ã®ã§ã‚ã¾ã‚Šäººã®ã“ã¨ã¯è¨€ãˆã¾ã›ã‚“。
ã—ã‹ã—ã€ãƒ•ãƒ©ã‚°ã®ç›´äº¤æ€§ã«ã¯æ°—を使ã„ã¾ã™ã€‚ã“ã“ã§ã®ãƒ•ãƒ©ã‚°ã®ç›´äº¤æ€§ã‚’ç°¡å˜ã«èª¬æ˜Žã™ã‚‹ã¨ã€æ¬¡ã®ã‚ˆã†ãªè©±ã§ã™ã€‚フラグ変数a,b,cã¨3ã¤ã‚ã£ãŸæ™‚ã€ãƒ•ãƒ©ã‚°cã«ã€Œaã‹ã¤bã€ã®æ„味ã—ã‹ç„¡ã„時ã€ãƒ•ãƒ©ã‚°å¤‰æ•°cã®å˜åœ¨ã‚’許ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。途ä¸ã§ãƒ•ãƒ©ã‚°ã®æ„味ãŒå¤‰ã‚ã£ã¦ã€æ°—ã¥ã„ãŸã‚‰ãƒ•ãƒ©ã‚°å¤‰æ•°cã®æ„味ãŒãã†ãªã£ã¦ã„ãŸæ™‚ã‚‚ã€å³åˆ»ãƒ•ãƒ©ã‚°å¤‰æ•°cを削除ã™ã¹ãã§ã™ã€‚
cã®éƒ¨åˆ†ã®è¨˜è¿°æ€§ã‚’明示ã—ãŸã„ãªã‚‰ã€ã¼ããªã‚‰ã€æ¬¡ã®ã‚ˆã†ãªãƒžã‚¯ãƒã§Cã®éƒ¨åˆ†ã®è¨˜è¿°æ€§ã‚’明確化ã—ã¾ã™(Perlãªã‚‰ã€ã¾ã‚関数ã«ã§ã‚‚ã™ã‚‹ã®ã§ã—ょã†)。
#define IS_C(conf) ((conf)->is_a && (conf)->is_b)
- 呼ã¶-呼ã°ã‚Œã‚‹é–¢ä¿‚ã¸ã®è¦–点ãŒç”˜ã„
「呼ã¶-呼ã°ã‚Œã‚‹é–¢ä¿‚ã€ã¯ã¼ãã®ç”¨èªžã§ã™ãŒã€é›°å›²æ°—ã§å¯Ÿã—ã¦ãã ã•ã„。
コードã«å•é¡ŒãŒã‚る時ã€å‘¼ã¶å´ã®å•é¡Œãªã®ã‹å‘¼ã°ã‚Œã‚‹å´ã®å•é¡Œãªã®ã‹ã®åŒºåˆ¥ã‚’ã™ã‚‹ã“ã¨ã¯é‡è¦ã§ã™ã€‚ã“ã®åŒºåˆ¥ã‚’ç´ æ—©ãè¡Œã†ãŸã‚ã«ã¯ã€å‘¼ã¶å´ã¨å‘¼ã°ã‚Œã‚‹å´ã‚’切り離ã™ã€Œæ„Ÿè¦šã€ãŒå¿…è¦ã§ã™ã€‚
今日ã®ãƒšã‚¢ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã§ã€å‘¼ã³å‡ºã™å¤–部コマンドãŒæœªå®Ÿè£…ã€ã¨ã„ã†çŠ¶æ³ã§ã—ãŸã€‚切り離ã™æ„Ÿè¦šãŒã‚ã‚Œã°ã€ã¨ã‚Šã‚ãˆãšä½•ã‚‚ã—ãªã„(ã‚ックã•ã‚ŒãŸã“ã¨ã ã‘ãŒåˆ†ã‹ã‚‹)ダミーã®å¤–部コマンドを用æ„ã—ã¦ã€ã‚ã‚‹ã¨ä»®å®šã—ã¦ãƒ†ã‚¹ãƒˆã¯ã§ãã¾ã™ã€‚外部コマンドã§ã‚‚関数呼ã³å‡ºã—ã§ã‚‚åŒã˜ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚今風ã®ãƒ¢ãƒƒã‚¯ã‚ªãƒ–ジェクトã¨ã„ã†ç”¨èªžã‚‚ã‚ã‚Šã¾ã™ãŒã€é ã§ã®ç†è§£ã‚ˆã‚Šã€åˆ‡ã‚Šé›¢ã™ã¨è¨€ã†ã‹çªã放ã™ã¨è¨€ã†ã‹ã€ãã†ã„ã†æ„Ÿè¦šãŒå…ˆã§ã™ã€‚
ã“ã®ã‚ˆã†ãªåˆ‡ã‚Šé›¢ã™æ„Ÿè¦šãŒã‚ã‚Œã°ã€å‘¼ã°ã‚Œã‚‹å´ã ã‘ã®å˜ä½“テストã€å‘¼ã¶å´ã ã‘ã®å˜ä½“テストã€ã¨å°ã•ãªéƒ¨å“ã”ã¨ã®å‹•ä½œç¢ºèªã®æ„è˜ã«ã‚‚ã¤ãªãŒã‚Šã¾ã™ã€‚今風ã«ãƒ¦ãƒ‹ãƒƒãƒˆãƒ†ã‚¹ãƒˆã¨è¨€ã†ç”¨èªžã‚‚ã‚ã‚Šã¾ã™ãŒã€ã“れもé ã§ã®ç†è§£ã®å‰ã«ã€åŒºåˆ‡ã£ã¦éš”離ã™ã‚‹ã¨ã§ã‚‚言ã†ã¹ãã€æ„Ÿè¦šã®æ–¹ãŒå…ˆã§ã™ã€‚
- ãã®ä»–
- printfデãƒãƒƒã‚°ã‚‚ãƒã‚«ã«ã—ãŸã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“
- 1分ã§printfãŒæ›¸ã‘ã‚‹ãªã‚‰ã€ã‚³ãƒ¼ãƒ‰ã‚’見ã¦ãªãœå‹•ã‹ãªã„ã®ã‹è€ƒãˆã¦ã„るよりã€ãŸã¶ã‚“解決ã¯é€Ÿã„ã§ã™ã€‚
- æ°—ã«ãªã‚‹ã“ã¨ã¯ã‚³ãƒ¼ãƒ‰ã«æ›¸ã„ã¦ãŠãã¾ã™
- コードを見ã¦ã„ã‚‹ã¨ã€æ°—ã«ãªã‚‹éƒ¨åˆ†ãŒè¦‹ã¤ã‹ã‚Šã¾ã™ã€‚一瞬ã§ç›´ã›ã‚Œã°ç›´ã—ã¾ã™ãŒã€å¾Œã§è‰¯ã•ãã†ãªã‚‚ã®ã¯ã€ã‚³ãƒ¼ãƒ‰ã«ã‚³ãƒ¡ãƒ³ãƒˆã§ãƒ¡ãƒ¢ã£ã¦ãŠãã¾ã™ã€‚BSDç³»ã®ä¼çµ±ã«å¾“ã„ã€ã¼ãã¯XXXコメントã¨å‘¼ã‚“ã§ã„ã¾ã™ã€‚æ°—ã«ãªã‚‹éƒ¨åˆ†ã®å¤šã„コードã ã¨ã€ã‚ã¡ã“ã¡ã«XXXマークãŒã¤ãã¾ã™ã€‚本をèªã‚“ã§ã„ã¦ã€æ°—ã«ãªã‚‹ãƒšãƒ¼ã‚¸ã«ã—ãŠã‚Šã‚’ã¯ã•ã‚“ã ã‚Šã€ãƒ¡ãƒ¢ã‚’書ã„ãŸã‚Šã™ã‚‹æ„Ÿè¦šã«è¿‘ã„ã§ã™ã€‚
2005・12・08
BPãªã‚“ã¨ã‹
http://www.jsys-products.com/iwaken/index.html
ã‹ã‚‰
http://www.jsys-products.com/iwaken/bpmn/pub/Modeling_Forum_2005.pdf
ã®44ページ。
BPMI (Business Process Management Initiative)ã®æ¨™æº–BPMスタックã«ã¯ã€
BPMNã€BPSMã€BPXLã€BPELã€BPQL
ãŒã‚ã‚Šã¾ã™ã€‚ã“れらã¯WS-ãªã‚“ã¨ã‹ã€ã®ä¸Šã«ä½ç½®ã™ã‚‹ã‚ˆã†ã§ã™ã€‚
全然分ã‹ã‚‰ãªã„ã®ã§ã€ä»Šåº¦ã€ãƒ¯ãƒ¼ã‚¯ã‚¹ã®äººã«æ•™ãˆã¦ã‚‚らã„ã¾ã™ã€‚
誰ã‹ã€BPMNã§ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢é–‹ç™ºãƒ—ãƒã‚»ã‚¹ã‚’記述ã—ã¦ãã ã•ã„。
å‚考: @ITã®é€£è¼‰è¨˜äº‹
http://www.atmarkit.co.jp/farc/rensai/bpmn01/bpmn01.html
2005・12・02
ワークスã€ã‚¢ãƒªã‚¨ãƒ«å…±åŒå‹‰å¼·ä¼šã®è³‡æ–™ã‚’公開ã—ã¾ã—ãŸ
http://dev.ariel-networks.com/modules/xfsection/index.php?category=14
第1回目ã¯ã€é ˆå´Žã•ã‚“ãŒAJAXã®è¬›å¸«ã‚’ã—ã¦ãã‚Œã¾ã—ãŸã€‚
é ˆå´Žã•ã‚“ã¨è¨€ãˆã°ã€çŸ¥ã‚‹äººãžçŸ¥ã‚‹ã€
2004/12/9ã«AJAX的方法論ã«è¨€åŠã—ã¦ã„ãŸäººã§ã™ã€‚ã¡ãªã¿ã«ã€AJAXã¨ã„ã†è¨€è‘‰ãŒç”Ÿã¾ã‚ŒãŸã®ã¯ã€
2005/2/18ã§ã™ã€‚
外人ãŒè¨€ã†ã¨ãã‚Œã«åˆã‚ã›ã¦ä¸€ç·’ã«èªžã‚Šå‡ºã™ã€ãã®è¾ºã®æ—¥æœ¬äººã¨ã¯æ ¼ãŒé•ã„ã¾ã™ã€‚日本シリーズã®å…ˆç™ºã¨ã‚¢ã‚¸ã‚¢ã‚·ãƒªãƒ¼ã‚ºã®å…ˆç™ºãらã„æ ¼ãŒé•ã„ã¾ã™ã€‚
2005・12・01
排他制御ã®ãƒ‘フォーマンス
aprã®primitiveãªæŽ’他制御ã®ãƒ‘フォーマンスを調ã¹ã¦ã¿ã¾ã—ãŸã€‚
ã‚„ã£ã¦ã„ã‚‹ã“ã¨ã¯å˜ç´”ã§ã€lockã€unlockを次ã®ã‚ˆã†ã«ã²ãŸã™ã‚‰ãƒ«ãƒ¼ãƒ—ã§å›žã™ã ã‘ã§ã™ã€‚
#define NUM_LOOP 10000000
now = apr_time_now();
for (i = 0; i < NUM_LOOP; i++) {
apr_thread_mutex_lock(mutex);
apr_thread_mutex_unlock(mutex);
}
printf("mutex: %" APR_INT64_T_FMT "\n", apr_time_now() - now - nop);
nopã¯ã€ã‚らã‹ã˜ã‚何もã—ãªã„ループを回ã—ãŸæ™‚ã®è¨ˆæ¸¬æ™‚é–“ã§ã™ã€‚
APR_INT64_T_FMTã®éƒ¨åˆ†ã¯ã€GNU/Linuxã§ã¯lldã€Windowsã§ã¯I64dã«ç½®ãæ›ã‚るマクãƒã§ã™(64bitæ•´æ•°ã®printf用書å¼æŒ‡å®šã«ãƒ—ラットフォームä¾å˜ãŒã‚ã‚‹ãŸã‚ã®ãƒžã‚¯ãƒã§ã™)。
普通ã®mutexã¨read-write lockã‚’GNU/Linuxã§è¨ˆæ¸¬ã—ãŸã“ã¨ã¯ã‚ã£ãŸã®ã§ã™ãŒã€ä»Šå›žã€æ¬¡ã®ãµãŸã¤ã‚’åˆã‚ã¦ã‚„ã‚Šã¾ã—ãŸã€‚
- Windowsã§ã®è¨ˆæ¸¬
- atomic APIã®è¨ˆæ¸¬
atomic APIã¯ã€
apacheã®ãƒ‘フォーマンスãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã§ç´¹ä»‹ã•ã‚Œã¦ã„ã‚‹APIã§ã™ã€‚
Windowsã§ã¯ã€InterlockedIncrement()ãªã©ã®APIã®ãƒ©ãƒƒãƒ‘ーã«ãªã£ã¦ã„ã¾ã™ã€‚
GNU/Linux(x86)ã§ã¯ã€æ¬¡ã®ã‚ˆã†ãªã‚¢ã‚»ãƒ³ãƒ–ラã«å±•é–‹ã•ã‚Œã‚‹ãƒžã‚¯ãƒã«ãªã£ã¦ã„ã¾ã™ã€‚
#define apr_atomic_cas(mem,with,cmp) \
({ apr_atomic_t prev; \
asm volatile ("lock; cmpxchgl %1, %2" \
: "=a" (prev) \
: "r" (with), "m" (*(mem)), "0"(cmp) \
: "memory"); \
prev;})
何回ã‹å®Ÿè¡Œã—ã¦ãŠã‹ã—ãªå¤‰å‹•è¦å› ãŒç„¡ã„ã“ã¨ã‚’確èªã—ãŸçµæžœã€æ¬¡ã®ã‚ˆã†ãªæ•°å€¤ã«ãªã‚Šã¾ã—ãŸã€‚ç´°ã‹ã„数値ã¯ã‚ã¾ã‚Šæ„味ãŒã‚ã‚Šã¾ã›ã‚“。æ¡ã ã‘ã®ä¸–ç•Œã§ã™ã€‚
CPUã®æ€§èƒ½ãŒä½Žã™ãŽã¦æ›¸ãé–“é•ã„ã§ã¯ãªã„ã‹ã¨æ€ã‚れるã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€äº‹å®Ÿã§ã™ã€‚
aprã®æŽ’他制御系ã®APIã¯ã€OSã®APIã®thinラッパーãªã®ã§ã€GNU/Linuxã®å ´åˆã¯pthreadç³»APIã€Windowsã®å ´åˆã¯Win32 APIãã®ã‚‚ã®ã¨æ€ã£ã¦ã‚‚大ããªèª¤å·®ã¯ã‚ã‚Šã¾ã›ã‚“。
è¨ˆæ¸¬é …ç›®:
- mutex(unnested): nestを許ã•ãªã„mutex lock
- mutex(nested): nestを許ã™ã€ã¤ã¾ã‚ŠåŒä¸€ã‚¹ãƒ¬ãƒƒãƒ‰ãŒé€£ç¶šã—ã¦lockを呼んã§ã‚‚ブãƒãƒƒã‚¯ã—ãªã„mutex lock
- rwlock(write lock): read-write lockã®write lock
- rwlock(read lock): read-write lockã®read lock
- atomic(add): atomic APIã®addオペレーション
GNU/Linux (Debian sargeã€Linux 2.4.30ã€libc 2.3.2ã€Athlon 650MHz):
- mutex(unnested) ... ç´„2600000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.25マイクãƒç§’
- mutex(nested) ...ç´„5600000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.56マイクãƒç§’
- rwlock(write lock) ... ç´„4300000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.43マイクãƒç§’
- rwlock(read lock) ... ç´„5800000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.58マイクãƒç§’
- atomic(add) ...ç´„460000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.046マイクãƒç§’
Windows (Windows2000 SP4ã€Athlon 1.1GHz):
- mutex(unnested) ... ç´„12000000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„1.20マイクãƒç§’
- mutex(nested) ...ç´„700000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.07マイクãƒç§’
- rwlock(write lock) ...ç´„12200000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„1.22マイクãƒç§’
- rwlock(read lock) ...ç´„41100000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„4.11マイクãƒç§’
- atomic(add) ...ç´„90000マイクãƒç§’/1åƒä¸‡å›ž ...1回ã‚ãŸã‚Šç´„0.009マイクãƒç§’
æ–°ã—ã„発見。
GNU/Linuxã§nested mutexã®æ–¹ãŒé…ã„ã®ã§ã€Windowsã§ã‚‚åŒã˜ã ã¨æ€ã£ã¦ã„ã¾ã—ãŸã€‚事実ã¯ã€Windowsã§ã¯nestedを許ã™mutexã®æ–¹ãŒé€Ÿã„ã§ã™ã€‚
atomicオペレーションã¯åœ§å€’çš„ã«é€Ÿã„ã®ã§atomicã§ç½®ãæ›ãˆã‚‰ã‚Œã‚‹ç®‡æ‰€ã¯mutex lockã‹ã‚‰ç½®ãæ›ãˆãŸã„ã§ã™ã€‚実際ã¯å¤‰æ•°ã²ã¨ã¤ã‚’守るã ã‘ã®mutex lockã¯ã‚ã¾ã‚Šç„¡ã„ã§ã™ãŒã€‚