2008年9月21日日曜日

ロードレーサー(自転車)にはまっていまして


こんなドロップハンドルの自転車です。
めーちゃめちゃスピードが出るのでたのしいです。
で、今のペダルは普通のママチャリについているような普通のペダルなのですが、いまはビンディングペダルと言うのがあり、靴がペダルにくっつきます!!!
いやいや、私の子供のころのロードレーサーにはそんなものありませんでした。
あってもせいぜいペダルに靴を差し込む紐か金属の輪がつけてあるぐらいでした。それからするとすごく時代を感じます。
で、そのペダルとくっつく靴。。。スキーとブーツを思い出す名前ですが、ビンディングというらしいのです。今それがめちゃめちゃ欲しい!!
ペダルを踏み込むだけじゃなくて、足を引き上げる力も推力に使える。さらに自転車が軽快になるという触れ込み。
選んだのが


シマノ PD-A530

ビンディング面と普通の靴でも漕げるフラット面の両用タイプ。
SPDという規格の接続金具がついている。このタイプだと、靴の接合部分が靴の裏から飛び出ることがなく、楽に歩くこともできるということです。
あぁ。ビンディングペダルと靴が欲しい。。。
あわせて15000円前後か。
んーーーー
ほしい。。。

2008年9月18日木曜日

WindowsXP ServicePack3 がインストールできない

■この記事も書きかけです(苦笑)

WindowsXP ServicePack3がインストールできない!
ということでお客さんのパソコンを見てみました。
が、はてさてこれがなかなか原因がつかめない。

ServicePack3のインストールを始めるとエラーが発生する。
『アクセスが拒否されました』
ネットでいろいろ検索してみると、この症状ではまっている人が多く、まともな回答が掲載されているサイトがなかなか見つからない。
MicrosoftのKnowledgeBaseをのぞいてみて、そこに記載されている手順を追ってみても解決できない。なにやら、レジストリのアクセス権が間違って変更されているために、ServicePack3のインストール途中でエラーになるらしい。


[エラーメッセージの写真入れる]。


[svcpack.log]

インストール中の詳細ログを表示してみたら、怪しい行が出力されていた。
---------
#-198 コマンドラインは処理されました。: c:\ed27bf718467297f86c1a6a6ad83\i386\update\update.exe
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_common_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_inetmgr_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_pwmgr_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_www_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_doc_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_ftp_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
---------

レジストリのアップデート中のエラーとなっているが、spupdate.logをよく見るとINF_REGISTORY_ERRORとなっているので、この名前から類推すると、INFファイルの更新エラーとなるとどうもiis.infファイルが原因で更新できていないのではないだろうか。

さらにiis.infで検索してみると
http://www.windowsbbs.com/windows-xp/59275-service-pack-2-update-fails-iis-inf-error-0xe0000102.html

iis.infを他のPCからコピーしてきた。
エラーが出た!!!
だめらしい。




[setupapi.log]

#-198 コマンドラインは処理されました。: c:\ed27bf718467297f86c1a6a6ad83\i386\update\update.exe
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_common_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_inetmgr_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_pwmgr_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_www_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_doc_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
#E077 C:\WINDOWS\INF\iis.inf のディスク領域を計算しているときに空でないセクション [iis_ftp_install] が見つかりませんでした。 エラー 0xe0000102: INF に必要な行が見つかりませんでした。
[2008/09/18 16:50:38 604.3 Driver Install]
#-198 コマンドラインは処理されました。: C:\WINDOWS\system32\services.exe
#-166 デバイス インストール関数: DIF_SELECTBESTCOMPATDRV。
#W059 最も互換性のあるドライバの選択に失敗しました。 エラー 0xe0000228: このデバイスと互換性のあるドライバがありません。
#W157 既定のインストーラは失敗しました。 エラー 0xe0000228: このデバイスと互換性のあるドライバがありません。
[2008/09/18 16:50:41 2424.2]
#-199 C:\WINDOWS\system32\rundll32.exe をコマンド ライン: rundll32.exe newdev.dll,ClientSideInstall \\.\pipe\PNP_Device_Install_Pipe_0.{18595994-88E3-4C8C-814C-9F4A900CA176} で実行しています
#I060 選択したドライバの設定
#-166 デバイス インストール関数: DIF_SELECTBESTCOMPATDRV。
#W059 最も互換性のあるドライバの選択に失敗しました。 エラー 0xe0000228: このデバイスと互換性のあるドライバがありません。
#W157 既定のインストーラは失敗しました。 エラー 0xe0000228: このデバイスと互換性のあるドライバがありません。


---

2008年9月17日水曜日

FreeBSD6.3 Sambaのインストール

Sambaは、Linux...Fedora,Knoppix,VineLinuxその他あまたやMacOSX,FreeBSD,OpenBSD,NetBSDなどのBSD系UnixとWindowsとのファイル共有を行う、世界標準的なソフトウエアです。

FreeBSD6.3
Apache2.3
なサーバーにインストールします。
ja-samba 3.0.31_1,1
をインストールします。

FreeBSDではPortsからのインストールができるのでそちらを使います。


#cd /usr/ports/japanese/samba3

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for ja-samba 3.0.31_1,1 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [X] LDAP With LDAP support x x
x x [ ] ADS With Active Directory support x x
x x [X] CUPS With CUPS printing support x x
x x [X] WINBIND With WinBIND support x x
x x [ ] ACL_SUPPORT With ACL support x x
x x [ ] AIO_SUPPORT With Asyncronous IO support x x
x x [ ] FAM_SUPPORT With File Alteration Monitor x x
x x [ ] SYSLOG With Syslog support x x
x x [ ] QUOTAS With Disk quota support x x
x x [X] UTMP With UTMP accounting support x x
x x [ ] PAM_SMBPASS With PAM authentication vs passdb backends x x
x x [ ] CLUSTER With experimental cluster support x x
x x [ ] DNSUPDATE With dynamic DNS update(require ADS) x x
x x [ ] EXP_MODULES With experimental modules x x
x x [X] POPT With system-wide POPT library x x
x x [X] PCH With precompiled headers optimization x x
x x [ ] MAX_DEBUG With maximum debugging x x
x x [ ] SMBTORTURE With smbtorture x x
tqmqqqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x [ OK ] Cancel x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

オプションは特に設定を変えずにデフォルトで使用します。
キーボード左右を[OK]を選択し、キーボードの[Enter]を押します。

ダウンロード、コンパイルが始まりインストールされます。

  :
  :
Installing bin/script.so as ///usr/local/lib/samba/auth/script.so
install -o root -g wheel -m 444 "/usr/ports/japanese/samba3/work/smb.conf.sample" "/usr/local/share/examples/ja-samba/smb.conf.sample"
install -o root -g wheel -m 555 "/usr/ports/japanese/samba3/work/samba-3.0.31/source/script/mksmbpasswd.sh" "/usr/local/bin/make_smbpasswd"
install -s -o root -g wheel -m 555 "/usr/ports/japanese/samba3/work/samba-3.0.31/source/nsswitch/nss_winbind.so" "/usr/local/lib/nss_winbind.so.1"
install -s -o root -g wheel -m 555 "/usr/ports/japanese/samba3/work/samba-3.0.31/source/nsswitch/nss_wins.so" "/usr/local/lib/nss_wins.so.1"
install -s -o root -g wheel -m 555 "/usr/ports/japanese/samba3/work/samba-3.0.31/source/bin/pam_winbind.so" "/usr/local/lib"
===============================================================================
NOTICE: This version of port has changed location of Samba password
NOTICE: (smbpasswd) directory. Files in '/usr/local/private'
NOTICE: have moved to '/usr/local/etc/samba'.
===============================================================================
Samba3 *package* now doesn't include ADS support due the portability problems
with Kerberos5 libraries on different installations. You need to compile port
yourself to get this functionality.

For additional hints and directions, please, look into the README.FreeBSD file.
===============================================================================
===> Installing rc.d startup script(s)
===> Compressing manual pages for ja-samba-3.0.31_1,1
===> Registering installation for ja-samba-3.0.31_1,1
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/bin/smbspool
/usr/local/bin/smbtree
/usr/local/bin/smbcontrol
/usr/local/bin/nmblookup
/usr/local/bin/testparm
/usr/local/sbin/winbindd
/usr/local/bin/smbget
/usr/local/bin/profiles
/usr/local/lib/nss_wins.so.1
/usr/local/bin/smbstatus
/usr/local/bin/pdbedit
/usr/local/bin/net
/usr/local/bin/wbinfo
/usr/local/bin/smbcacls
/usr/local/bin/smbclient
/usr/local/sbin/swat
/usr/local/sbin/nmbd
/usr/local/bin/eventlogadm
/usr/local/bin/rpcclient
/usr/local/bin/ntlm_auth
/usr/local/sbin/smbd
/usr/local/bin/smbpasswd
/usr/local/bin/smbcquotas

This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/samba

If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.

For more information, and contact details about the security
status of this software, see the following webpage:
http://www.samba.org/
===> Cleaning for autoconf-2.62
===> Cleaning for libexecinfo-1.1_2
===> Cleaning for cups-base-1.3.8_1
===> Cleaning for popt-1.7_5
===> Cleaning for openldap-client-2.4.11
===> Cleaning for tiff-3.8.2_1
===> Cleaning for gnutls-2.4.1_1
===> Cleaning for libgcrypt-1.4.1_1
===> Cleaning for libgpg-error-1.6_1
===> Cleaning for ja-samba-3.0.31_1,1

で終了。
sambaの設定ファイルを編集します。
#cd /usr/local/etc
設定ファイルsmb.confは最初リードオンリーになっているので書き込み属性を設定します。
#chmod 644 smb.conf

#emacs smb.conf
[smb.conf]
workgroup = <ワークグループ名>

server string = Samba %v on %h FreeBSD

hosts allow = <接続を許可するIPアドレス>

display charset = CP932
unix charset = EUCJP
dos charset = cp932

続いてsambaの起動設定を行います。

#cd /etc
#emacs rc.conf
[rc.conf]

samba_enable="YES"


■いま書きかけ中。

2008年9月15日月曜日

Apache2の帯域制限にmod_cbandを入れてみた!

前回の記事に続いてmod_cbandについてです。
FreeBSD6.3
Apache2.2
なサーバーに
mod_cbandのインストールを行う。
mod_cbandはPortsにもありましたのでこちらからインストールします。


#cd /usr/local/www/mod_cband
#make install clean

===> Vulnerability check disabled, database not found
=> mod-cband-0.9.7.5.tgz doesn't seem to exist in /usr/ports/distfiles/apache2.
=> Attempting to fetch from http://cband.linux.pl/download/.
fetch: http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz: No address record
=> Attempting to fetch from http://www.sfr-fresh.com/unix/privat/.
mod-cband-0.9.7.5.tgz 100% of 69 kB 39 kBps
===> Extracting for mod_cband-0.9.7.5_1
=> MD5 Checksum OK for apache2/mod-cband-0.9.7.5.tgz.
=> SHA256 Checksum OK for apache2/mod-cband-0.9.7.5.tgz.
===> Patching for mod_cband-0.9.7.5_1
===> mod_cband-0.9.7.5_1 depends on file: /usr/local/sbin/apxs - found
===> Configuring for mod_cband-0.9.7.5_1
configure: WARNING: you should use --build, --host, --target
checking for i386-portbld-freebsd6.3-gcc... cc
checking for C compiler default output file name... a.out
:
:
config.status: creating Makefile
===> Building for mod_cband-0.9.7.5_1

/usr/local/sbin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/build-1/libtool --silent --mode=compile cc -prefer-pic -O2 -fno-strict-aliasing -pipe -I/usr/local/include/mysql -DHAVE_MYSQL_H -I/usr/include -I/usr/local/include/apache22 -I/usr/local/include/apr-1 -I/usr/local/include/apr-1 -I/usr/local/include -Wall -DDST_CLASS=3 -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo
/usr/local/build-1/libtool --silent --mode=link cc -o src/mod_cband.la -rpath /usr/local/libexec/apache22 -module -avoid-version src/mod_cband.lo

write "make install" to install module

===> Installing for mod_cband-0.9.7.5_1
===> mod_cband-0.9.7.5_1 depends on file: /usr/local/sbin/apxs - found
===> Generating temporary packing list
===> Checking if www/mod_cband already installed
/usr/local/sbin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -i -a -n cband src/mod_cband.la
/usr/local/share/apache22/build/instdso.sh SH_LIBTOOL='/usr/local/build-1/libtool' src/mod_cband.la /usr/local/libexec/apache22
/usr/local/build-1/libtool --mode=install cp src/mod_cband.la /usr/local/libexec/apache22/
cp src/.libs/mod_cband.so /usr/local/libexec/apache22/mod_cband.so
cp src/.libs/mod_cband.lai /usr/local/libexec/apache22/mod_cband.la
cp src/.libs/mod_cband.a /usr/local/libexec/apache22/mod_cband.a
chmod 644 /usr/local/libexec/apache22/mod_cband.a
ranlib /usr/local/libexec/apache22/mod_cband.a
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/libexec/apache22

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/libexec/apache22/mod_cband.so
[activating module `cband' in /usr/local/etc/apache22/httpd.conf]
===> Registering installation for mod_cband-0.9.7.5_1
===> Cleaning for mod_cband-0.9.7.5_1

#cd /usr/local/etc/apache22/
#emacs httpd.conf

例:www.example.comに4週間で100MBの転送量制限をして、超えた場合には最大速度を 128kbps、リクエストを 5、同時接続数を 15 にする


# <VirtualHost 1.2.3.4>
ServerName www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www
CBandLimit 100M
CBandExceededSpeed 128 5 15
CBandScoreboard /var/www/scoreboard
CBandPeriod 4W
#</VirtualHost>



ドキュメントはこちら
mod_cband documentation.txt

CBandRemoteSpeed 1M 3 3
CBandExceededSpeed 


現在書きかけ中の記事です。


.

Apache2.2 帯域制限をかける mod_cband最強?mod_bandwidth mod_bwshare... どれがいい?

しばらくサイトを運営していると、サーバーに接続するクローラーやダウンローダーなどが、帯域を占有し、ブラウザの表示が遅くなったり、レスポンスが遅くなりすぎてエラーが出るようになってきた。そこで、そのような一般ユーザーよりも強烈なダウンロードをおこなうユーザーやソフトの帯域を制限するためにApacheに帯域制限モジュールを導入しようと考えた。
ところが、この帯域制限モジュールはたくさんあり、どれが最適なのかよくわからない。
Apache1.3、Apache2初期のころの評価記事は見つけることができるが、Apache2.2の情報をまとめたものがなかなかみつからない。








モジュール名対応ApachePortsコメント
mod_cbandApache2.0-YesVirtualHostごとに帯域制限をかけ月間転送量、同時接続数、転送速度を指定できる。
クライアントごとも可能。http://www.howtoforge.com/mod_cband_apache2_bandwidth_quota_throttling http://cband.linux.pl/documentation
mod_bw Apache1.3 Apache2.0-2.2Yesセッションごとの転送帯域の制限
mod_bandwidthApache1.2-1.3Yes2.0対応になりmod_bwに名前が変わった?
mod_bwshare pache1.2-1.3 Apache2.0-2.0.55Yesファイル数バイト数の設定値を超えると503エラーを返す
mod_tsunamiApache1.3Yes


http://cowscorpion.com/Network/mod_cband.html より
-----
mod_cband は転送量やダウンロード速度の制限や同時接続数の制限などができる Apache 2 サーバーのモジュールです。
 mod_cband は従来の帯域制限モジュール (mod_bandwidth, mod_limitipconn, mod_curb) を合わせ、Apache 2で使えるように作られたもので、サーバー全体やバーチャルホストごと、またはIPごとに帯域/転送量の制限、最大のダウンロード速度の制限、一秒間のリクエスト数(Requests per Second)、最大の同時接続数(maximum number of simultaneous IP connections) の制限をすることができるます。
 サーバーのユーザーに「10GB/月 」などのデータ転送量の制限をしたり、クライアント毎にダウンロード速度や同時接続数の制限を行いたい場合などに使うことができます。
-----
だそうな。mod_cband最強?
http://www.sfr-fresh.com/unix/privat/mod-cband-0.9.7.5.tgz:a/mod-cband-0.9.7.5/doc/documentation.txt

でも、mod_cbandが最強みたいです。
あぁ。。。たしかに最強かも。


ほかにもこんなアパッチモジュールがあるみたいです。
一応覚書。以下調べるのやめました(爆)
mod_access_limit
mod_bandwidth
mod_bwshare 接続数、帯域、容量での制限を行う
mod_choke
mod_conn
mod_curb
mod_dosevasive
mod_limitipconn 接続数での制限を行う
mod_throttle
mod_traf_thief
mod_tsunami
mod_vhost_limit

.

2008年9月14日日曜日

sendmail_enable="NONE"ではsendmailが自動起動している

FreeBSD6.3にて

ふと、
$ps -ax
としてみたらsendmailが起動していた。
/etc/rc.confには
sendmail_enable="NONE"
とちゃんと間違いなく記入されているのに。
なんで?
とネットで調べてみましたら、この記述方法はもう古い方法だったみたいで
sendmail_enable="NONE"は使われなくなったそうです。

すべてのプロセスを止めるには

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

とするようです。


マニュアルはこちら
rc.sendmail

お。起動しなくなった。
.

2008年9月3日水曜日

Rubyでコンストラクタの多重定義(オーバーロード,オーバーローディング) ってできないの?

Rubyでコンストラクタの多重定義(オーバーロード,オーバーローディング) ってできないの?

出来ないらしい。
そもそも、メソッド(関数)の多重定義が出来ないから出来ないのもあたりまえ。

コンストラクタを多重定義するには、スタティック(静的)関数を定義すると出来る。




class Vector


def initialize(x,y)
 @x = x
 @y = y
end

def self.NewUnit()
 obj = Vector.new(1,1)
 return obj
end


end


v1 = Vector.new(3,4)
p v1

v2 = Vector.NewUnit()
p v2




def self.NewUnit()

で静的なメソッドを定義し、その中でオブジェクトを作成し戻り値にし返します。

v2 = Vector.NewUnit()

のような形でオブジェクトの生成が出来るようになるわけです。
もし、メソッド名initialize()で多重定義関数のような振る舞いをさせるには、
Rubyでは引数にいろいろな型を渡すことができるので、initialize()内で
渡された引数の型を調べ内部で分岐するようにすれば出来ます。しかし、それではあまりにも美しくないし、バグの温床にもなりおすすめできません。
メソッドを分けて作ったほうがいいでしょう。