bootmgr is compressed message

“bootmgr is compressed.. ” this odd  message showed up after I tried to compact the hard disk on Windows XP and then rebooting. Since bootmanager is not obviously loading, only other choice is to use the XP installation disk to boot up the system.

Solution.

Once the installer starts, press R to go to repair console.  type in the following three commands at DOS prompt.

cd \

attrib -c bootmgr

attrib -c ntldr

That took care of my issue.

 

JQueryの.load()を使ってみて complete: にはまった、という話

Query ライブラリーの中に.load()というmethodがあり、これを使うと、WEBページの一部に他のページをはめ込む、ということが簡単にできる。 たとえばmain.html というページがあり、 そこに<div id=”sections”></div> というセクションをつくっておき、 この部分にcontent1.htmlというページを差し込むためには
$(‘#sections’).load(‘content1.html’);
というjavascript 一行で済む。

これを使えば、content2.html, content3.html などというページを用意しておいて、Javascriptを使ってインターアクティブに(ページを全部ロードしなおすのではなく)ページの一部だけを差し替えることができるようになるわけだ。

これって、巷にいうAjaxだが、jQuery のAjax サポートは ajaxSetup というobjectががあって、この中で、Ajax関係の諸パラメーターを前もって設定することが可能、 で、とりあえず
$.ajaxSetup({
beforeSend: function() {
$(‘#sections’).css(‘visibility’,’hidden’);
$(‘#aContainer’).css(‘background’, ‘url(images/ajax-loader.gif) no-repeat center’);
},
complete:
$(‘#aContainer’).css(‘background’,’none’);
}
});
とやって、 ページをロードしたときに、前のページの表示を消し、バックグランドにロード中お待ちくださいのイメージをはっておき、ロードし終わったときに、これを取り除く、という 動作を付け加えた。

ところが実際に動かしてみると、ロードが完了して新しいページが表示された後でもイメージが消えない。 ブラウザの開発ツールで見ると、スタイルシート上、バックグランドイメージがそのまま残っている。つまり、complete: の部分が動いていない。

これで2時間ほどハマったわけだが、 結論からかいてしまう。
実は.load()というコマンドにはコールバック機能があり、 これを使って、ロードされた画面の初期化を行うためのjavascriptを指定していた($(‘#sections’).load(‘content1.html’,’doSomething’)) のだが、これがcomplete: に指定された処理を無効化してしまうようである。 jQueryの.load と complete: の部分のマニュアルをじっくり読んでそういう結論に達した。

というわけで、Complete: event ではなく Success:event に動作をぶら下げて解決。.load()ではなく、.get()を使うとすっきりしそうだが、詳しく調べてないのでこれでよしとする。

jQuery.ajaxSetup({
beforeSend: function() {
$(‘#sections’).css(‘visibility’,’hidden’);
$(‘#aContainer’).css(‘background’, ‘url(images/ajax-loader.gif) no-repeat center’);
},
success:
$(‘#aContainer’).css(‘background’,’none’);
}
});

$ajax を使うと、もっときめ細かいAjax操作ができるそうだが、現状ではこれで十分。

一応動いている証拠は ここに
http://shogishack.net/modx/pages/assess-the-situation/exchanging-pieces/

ModX/WayFinderで作ったメニュのa href部分をjqueryで一括加工し、それぞれのアイテムをクリックすると、Jumpではなく、.loadが呼び出されるようになっている。

ModXと jQuery を使ったAjax, なかなか相性がよさそうである。

81dojo

81dojoでの81oui戦、OneyeとTellmarchとの激戦を見ると自分がこの二人にまがりなりにも勝ち星を挙げている、という事実が信じられない。駒の動きに勢いがある。 自分とやるときには年寄りだから、と手をぬいてくれているのだろうか。力戦とB級戦法ばかりでかく乱できているからなのか、二人とも定跡オタクではないから、そんなこともないか。 まあどっちみちそのうちまったく勝てなくなるだろうから、今のうちの話、というのは間違いなさそう。

Tellmarch は自分のサイトが無かったら将棋をやっていたかどうかわからなかった、とうれしいことを言ってくれたし、Oneyeはあじゃ盤で読みを磨いたそうだ。 そんなことをいわれると、やっててよかったな、と思ったりもする。

MyBook LiveというNASでWEBサイトをホストしてみた。実践編その3

一昔前と違い、WordPressやJoomla!あるいはDrupalとかModXなど Webサイトを作るのに
Content Management System (CMS)を使うのが当たり前のようになっている昨今、 Apacheサーバーにはデータベースサービス(例えばmysql)とこのデータベースとウェッブページをつなぐツール(例えばPHP)が必要だ。 最初から何も実装されていなければ、lamp(linux Apache mysql php)などという便利なパッケージもあるが、すくなくともapacheサーバーは実装されているのでlamplをインストールするわけにもいかない。

Mybook Liveで動いているApache2サーバーはすでにPHPも実装されている。 UIの画面自体、PHPベースのCakeというフレームワークで作成されているようだ。

<?php phpinfo(); ?>
という一行を phpinfo.php というファイル名でWEB folder上に保存し、(前回の例では/stores/Public/WWW) ブラウザでアドレスを mblwebsite/phpinfo.phpと打ち込むと、PHP情報が表示されるはずだ。
これを見るとMysql用のインターフェースも実装されている。 PHP側からmysqlをアクセスする準備は整っているわけだが、 残念ながらMBLはmysqlのサーバーは実装していない。
そこでMysqlサーバーを個人のリスクでインストールすることになる。
Debian上でのインストールはいたって簡単で、
#aptitude update
でパッケージリストを更新したのち、
#aptitude install mysql-server
または
#apt-get install mysql-server
インストールの準備が整うと、本当に実行しますか?と聞いてくるのでYesと応えるときちんと実行される(はず)
途中でパスワードを作るように催促されるのでMysqlのroot 用のパスワードを適当に考えて入れてやる。(覚えておきましょう)
インストールの終わりにはMysqlサーバーを起動してくれるので、 これをアパッチ側にも認識させるために アパッチサーバーを再起動
/etc/init.d/apache2 restart
これでApache +Mysql + PHP の環境が整った。
また、Mysqlの管理用にphpMyAdmin あるいは sqlbuddyなどの管理ツールを用意しておくと楽である。 これらはいずれもパッケージをダウンロードし、Web用のフォルダーにサブフォルダーを作り、解凍しておくだけで、すぐにブラウザーから使えるようになる。 詳細はそれぞれのパッケージのReadme を見てください。

MyBook LiveというNASでWEBサイトをホストしてみた。実践編その2

さて、

Mybook lveに実装されているLinuxはDebian のLenny というバージョンだが、Debian の現在はSqueeze というバージョンがすでにstable になっている。 debian 系なのですぐにapt-get でアップデートしたくなるのだが、ハードウエアインターフェースの部分がWDの書いたドライバーのようで、その部分がsqueeze で動くかどうかよくわからないなどの懸念があり、、万が一を考えて、あまりむやみなアップデートはしないほうが無難なようだ。

まずは mybookworld.wikidot.comに書いてあるお呪いをいくつか施す

# aptitude hold udev

これでudev 廻りのアップデートを阻止。 つぎに、squeeze base のコードのダウンロードを止めるために /etc/apt/sources.list’ 内の以下の一行をコメント化する(行頭に#を追加)

#deb http://ftp.us.debian.org/debian/ squeeze main

Update: 2011 年9月時点でのファームウエアではSqueeze.main が唯一のソースデポジトリに指定されているので、この部分をコメントアウトするわけにはいかなくなった。

さらにPHPを5.3にアップデートするとUI に使っているCake-PHP というフレームワークが警告を発して画面を壊してしまうので、それを防ぐために前もって前もって以下を実行

# echo “error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED” > /etc/php5/conf.d/cake_1.2.6.ini

# /etc/init.d/apache2 restart

さて、いよいよWEB サーバーを使えるようにしてみる。 前回も書いたが、現状でMybooklive にブラウザでアクセスすると自動的にUIというサブフォルダーにリダイレクトされ、Mybook liveのユーザーインターフェース画面になる。 これそのものがWEBページであり、ようするにWEBサーバーは既に稼働しているわけだ。 これを横取りして自分のサイトを表示できるようにすればよいわけだが、そのためにユーザーインターフェースが使えなくなるのも困る。

前回書いたFeaturePackを使用すると、普通のWEB アクセスはポート8080を通して行われるようになる。これはこれで一つの方法だが、今回はこのFeaturepackを使わずにport80を共用してサイトを運営することを考える。 そのために Apache2 サーバーの NameViritualHost という機能を使う。

この機能、我が家のMBLでは、/etc/apache2/ports.conf というファイルの中で既に設定されてアクティブな状態になっていた。

NameVirtualHost 80:*

Listen 0.0.0.0:80

これで何がおこるかというと、例えば同じWebServer にアクセスする場合でもブラウザに打ち込むURLアドレスによって、違うサイトを表示できるようになっている。 例えば mybooklivesiteA.com とmybooklivesiteB.com というアドレスが同じIPアドレスを参照した場合、リクエストを受けたWeb サーバーはブラウザから送ってきたアドレスによって、違うサイトを表示できる。

Local network で、実験してみる。 とりあえずブラウザを使う側のPCのhosts ファイルに以下を追加する。

mybooklive 192.168.1.5
mblwebsite  192.168.1.5

これでこのパソコンのブラウザのアドレス欄にmybooklive あるいは mblwebsite と打ち込むとIPアドレス192.168.1.5を見にいくようになる。 これは我が家のmybookliveの設定で静的IPに設定した値なので、ブラウザ上にはユーザー設定画面が現れる。

このままではどちらのアドレスを使ってもユーザー設定画面だが、 mblwebsiteを指定したときに自分のサイトが現れるようにしたいわけで、そのためにはetc/apache2/sites_available というフォルダーの中に設定ファイルを作っておき、それをSite-enabled というフォルダにソフトリンクしておく必要がある。

Sites-enable のフォルダーにdefault というファイルがある。 これは見本ファイルだ。 これをコピーする。

#cp default mblweb

mblwebというファイルができる。 このファイルの中身をいじる。 nano というエディターが既に実装されているのでこれを使える。

#nano mblweb

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mblwebsite  #この行追加
ServerAlias mysitename.com www.mysitename.com  #将来、外部からのアクセスを可能にするための準備
DocumentRoot /shares/Public/WWW  #この行を自分が作ったサイトフォルダーに指定
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /shares/Public/WWW> #この行変更
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

以下は変更しないので省略

このファイルをセーブし、ソフトリンクを作るために以下のコマンドを実行

#a2ensite mblweb

 

Apollo3G というファイルにははユーザーインターフェースのサイト情報が書いてある。このファイルには

ServerName mybooklive

 

という一行をServeradmin 設定の下ぐらいに追加する。

 

これをセーブしたら、

#/etc/init.d/apache2 reload

で設定をリロードする。

 

ここまでやって、ブラウザにmybooklive と打ち込むとユーザーインターフェースが現れ、

mblwebsiteと打ち込むとShares/Public/WWW 上に置いたWEb siteが表示されるようになる。

抑えておくべき情報: apache2 サーバーの設定方法 (NameVirtualHost, Directory, VirtualHost、ServerName, ServerAlias  などのパラメーター)

次回はmysql の導入にチャレンジ!

 

 

 

 

MyBook LiveというNASでWEBサイトをホストしてみた。実践編その1

Mybooklive、サーバー化の第一歩

というわけで、Western Ditigalの廉価版のNAS Mybook LiveをWebサーバー化する方法を
書いておく。
まずはSSHによるターミナルアクセスを アクティブにする。
MybookLiveではGUIの隠れコマンドになっている。
まず、MybookLiveにログインした状態で、WEBブラウザーの”192.168.1.25/UI”などとなっているアドレスバー上のアドレスを”192.168.1.25/UI/ssh” というように”ssh”を追加することで、sshのコントロールパネルが開く。 ここでsshにチェックマークを入れるだけで完了。
他のMybook製品に比べるとかなり手順が簡単になっているらしい。
これでセキュアシェルのログインができるようになったわけで、UbuntuなどのLinux機からのアクセスはターミナルからsudo ssh root@192.168.1.25 などとやるだけでよいのだが、 Windowsからの接続はPuttyというユーティリティプログラムが必要。
上のリンクからPutty.exe.をダウンロードして実行する ホストネームまたはIPアドレスを入力してSSHを指定してOpenするとリモートログインのコマンド画面になる。root ログインでデフォルトのパスワードはwelc0meになっている(英語のオーではなくゼロであることに注目)
ちなみにこれはMybook liveのデフォルト値なので、外部アクセスを許すつもりなら、パスワードは変更しておいたほうがよい。”Unixコマンド:passwd”
ハックサイトではナノというエディターを使うことを推奨している。このエディタはnano filename で起動できるが、同じユーザーネームとパスワード、そしてport 22指定で、sftp接続もできるので、 Filezillaからsftpで接続し、ファイルのエディットはFilezillaのView/Edit機能を使ってWindows環境で行うこともできる。
オプショナル:
いつもrootで接続するのも気持ちわるいので他のユーザー名を追加しておく
useradd user1 -p user1password
しかしこのままではuser1はsshからアクセスすることはできない。/etc/ssh/sshd_config の中にあるAllowUsers directive にuser1を追加する
AllowUsers= root
これを
AllowUsers= root user1
と変更し、ファイルを読み込ませるために以下を実行
/etc/init.d/ssh reload
ところで
sshのデフォルト設定ではパスワード無しのログインはできないようになっているので(sshd.conf中で設定されている)パスワードを空白に指定するとアクセス不能になる。 まさかと思ったがネットの記事を見るとRoot権限のパスワードの設定を空白にしてしまう人もいるらしいので ご注意を。 しっかし root で侵入されて cd / ; rm * とでもやられることをかんがえないのだろうか?
次にはPHPを実装したWEBサーバーは簡単に構築できる、というか、すでに実装されている。 その証拠にIPアドレスを入力してあげるとhttp://mybookliveaddress/UI というアドレスに自動的に飛んでログイン画面になるわけでしょう? これってWebサービスですよ。
FileZilla で、中身をのぞいてみると /var/wwwというところにWEB用のページがおかれていることがわかるので、ここにソフトリンクをはってしまえばよいことになる。
ln -s shares/Public/WWW /var/www/myweb
上の例ではPublic Share にWWWというフォルダーをつくり、これをホームページとしてサーブしてもらう感じ。
他の手段としては フランスのどなたかが、FeaturePackというユーティリティを作ってくれている。
これだとmybooklive:8080 が通常のWEBサイトに、 さらにhttps://mybooklive がメディアサーバーとしてセットアップされるようになっている。
そのうちに説明をポストするけど、いつになるかわからないので、英語に自信のある方は自分でやってみてください。

また、どちらもMySQLデータベースは実装されていないので、WordPress などMySqlサーバーが必要なCMS等を運用する場合には aptitude、あるいはapt-getを使って追加してあげる必要がある。  これもそのうち説明します。(まだ2日しか動かしていないのではっきり作動しているという保障がないので)

MyBook LiveというNASでWEBサイトをホストしてみた。イントロ

行き当たりばったりに生活しているというのはおそろしいもので、 まず最初は突然我が家のPCのメインOSとなっているWindows Vista を Windows 7にアップグレードしようとおもったのが発端だった。

ハードディスクの中身を見てみると500ギガバイトの残りが100ギガバイトを切っている。アップグレードする前にバックアップしようと思ったのだがバックアップするスペースがない。

大半はごみデータだというのはわかっているのだが、全部見ていって整理する自信がなかったので、バックアップ用のハードディスクを購入することにした。

NetWorkに接続できるハードディスクで安いものをと探したらBestBuyで Western DigitalのMybook Liveというのがセールになっていたので買って来た。 ちなみにこのようなデバイスをNAS(Network Attached Storage)と言うようだ。

1テラバイトで130ドルだった。 電源を接続するとブートアップし、IPアドレスを通してブラウザベースのユーザーインターフェースで中身を色々設定できる。ネットワークにハードディスクがぶら下がってビデオとか写真のデータを入れておけば、家庭内のパソコンからアクセスできる。 便利である。 MioNetというサービスを使えば、外部からも接続が可能らしい。

インターネットで情報を見ていたら、このデバイス、実はDebianLinuxで作動している、ということがわかった。 ちなみにCPUは800MhzのパワーPC,メモリーは256MB. さらに裏技でターミナルモードでLinuxにリモートログインができる、ということもわかった。  Western DigitalではMyBookシリーズを色々だしているようだが、これをLinuxのコンピューターとして使ってしまおうというユーザーが情報を交換しあっているサイトがあるのを見つけた。

 

で,試している途中ではUIがつかえなくなりそうになったりとか色々てこずった部分もあったが、結果的にどうなったかというと、このサイトの情報を参考にしながら、WEBサーバーを構築し、その中でPHPとMySQLも動かすことができるようになった。 もちろん従来のNASとしての機能もしっかり動作している。

ただし、一旦改造したものに対し、ファームウエアアップデートをうっかりおこなうと、せっかく設定したLinuxのイメージの部分を全部書き直すことになるそうで、 そうすると、ハックした部分はすべてまっさらになってしまい、もとの木阿弥。そうなった場合のリストアの手段も考えておかなくてはならない。

これだけで、内部でテスト用のLinuxべーす、Apache WEBサーバーとして使える。

次にこのウェブサーバーを外部からアクセスする事もできるようにするためにはドメインネームを確保しなければならないが、ドメインネームというのは固定したIPアドレスに割り当てられるものだとばかり思っていた。 我が家のインターネット環境はプロバイダによって割り当てられるIPアドレスがダイナミックアドレスになっていて、ケーブルモデムをリセットしたりした場合に同じアドレスに落ち着くという保障はどこにもない。 これは、どちらかといえば普通の環境だと思う。 ちなみに我が家はComcastという米国大手のケーブルサービスを使っている。

世の中良くしたもので、このようなユーザーのためにDDNS(DynamicDomainService)というのがある。 常にIPアドレスを監視していて、変更があったらすぐにドメインのアドレスに反映される。 自分はTZOという有料のサービス(年間30ドル)を使ったがDynDNSとか、NO-IPとか無料のサービスもあるようである。 自分が使っているシスコの無線ラウターには最初からDDNSをサポートする機能がついていて、これを使ってTZOの設定を行うとusername.linksysnet.comというようなドメインネームで外部から自宅のルーターまでたどり着くことができる。 ルーターのWEB専用のポートをMyBookLiveにフォワードするように設定しておくと、 外部からMyBookLiveのWebサーバーに接続される。

というわけでHostService無し、専用のサーバーPCを自宅で常に電源ONしておく必要もない、という状態で、Webサイトの運営ができるようになった。データ量が大きいサイトには使えないかもしれないが、ひっそりと使うサイトはこれで十分かも。