メイン

Tips アーカイブ

2015年03月22日

javascript連想配列
[ Tips ]

javascriptの連想配列は使い方次第で楽が出来ます。
test.jseというテキストを作ってみます。

var area = {
"北陸":{
"新潟県":{
"新潟市":"県庁所在地",
"長岡市":"中越地区",
"上越市":"上越地区"
},
"富山県":{
"富山市 ":"県庁所在地"
},
"石川県":{
"金沢市 ":"県庁所在地"
},
"福井県":{
"福井市 ":"県庁所在地"
}
}
}
var data1 = "北陸";
var data2 = "新潟県";
var data3 = "上越市";

WScript.echo(area[data1][data2][data3]);


やりたい事のイメージとして、北陸の県庁所在地を与えると、県庁所在地である事が分かり、(データは全ては登録していませんが、上越市の様に市町村を登録したとして)それ以外の市町村名を与えると、地区名が返るというものです。

さて、これを実行すると、
area1.png
と、意図した結果が表示されます。
では、

var data1 = "関東";
var data2 = "東京都";
var data3 = "八王子市";

として実行してみると、
area2.png
と言うように「NULLまたはオブジェクトではありません」というエラーが表示されてしまいます。
では、次に新潟県に登録されていない妙高市を指定すると、
var data1 = "北陸";
var data2 = "新潟県";
var data3 = "妙高市";

これを実行すると、
area3.png
とNULLが表示されます。

…と、言う事で、連想配列で2階層以上下の階層で、存在しないものを指定するとエラーとなります。
1階層のみであれば、直接指定してもNULLが返るので、1階層毎にNULLかどうかを判定し、NULLでなければ、次の階層の値を与えて判定するというやり方が正しいのでしょうか。

以上、何故エラーとなるのか、少々悩んだ事柄でしたので、まとめておきます。

Posted by りじんぐ at 21:33

2015年03月13日

一覧テキストからファイル名を変更するスクリプト
[ Tips ]

「拡張子MP3のファイルで連番で始まるものの一覧を作成するスクリプト」と対になる様なスクリプトです。
 01 aaa
 02 bbb
と言った一覧テキストから、実際のファイル名が
 01 xxx.mp3
 02 yyy.mp3
となっているものをテキストに沿ってリネームするためのスクリプトです。
頭に連番を付けて、拡張子はmp3にしておいてください。

一覧テキストを「xxx.txt」とし、mp3のあるフォルダに一覧テキストとこのスクリプトを入れて、スクリプトを実行してください。

だって、アレだよ、文字化けしているんだもん!ってな時に使うためのものです。
JSEスクリプトですので、「xxx.jse」の様に保存してください。


//-------------------------------------------------------------------
// 一覧ファイルによりリネームするプログラム (ファイル名: renameMp3.jse)
//-------------------------------------------------------------------
//定数の宣言
var ForReading = 1; //読み込み
var ForWriting = 2; //書きこみ(上書きモード)
var ForAppending = 8; //書きこみ(追記モード)

// for debug
function debugwrite(tmpstr){
var debugfso = new ActiveXObject("Scripting.FileSystemObject");
var MyFile = fso.OpenTextFile("d:\\debugfile.txt", ForAppending);
MyFile.WriteLine(tmpstr);
MyFile.Close();
}

// 変数の初期化など
var fso = WScript.CreateObject("Scripting.FileSystemObject");

// ファイルを1つずつ処理する
var dir = fso.GetFolder(".");
var files = new Enumerator(dir.Files);
while (files.atEnd() == false) {
var tmpPath = files.item().path;
var tmpStr = tmpPath.substr((tmpPath.length - 3),3);
if ( tmpStr == "txt" ) {
fileRead(tmpPath);
}
files.moveNext();
}


function fileRead(strFilePath){
// ファイルのオープン(読み込みで開く)
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var objInFile = objFileSys.OpenTextFile(strFilePath,ForReading);

// ファイルのオープンが成功(ファイル有り)のときに実行
// ファイルの内容を全部読み終えるまでループ
var i = 1;
do {
// ファイルの内容を1行ずつ読み込む
var strRecord = objInFile.ReadLine();

if ( i < 10 ) {
var trackNo = "0" + i;
} else {
var trackNo = i;
}
var strHead = strRecord.substr(0,2);
var strHead3 = strRecord.substr(2,1);
if ((strHead == trackNo) && (isNaN(strHead3) || strHead3 == " ") ) {
// 読み込んだ内容をコンソールへ表示
if ( strHead3 == " " || strHead3 == "." ) {
var mp3FileName = strRecord.substr(3,(strRecord.length - 3));
} else {
var mp3FileName = strRecord.substr(2,(strRecord.length - 2));
}
mp3FileName = eraseSpace (mp3FileName);
mp3FileName = eraseBackSpace (mp3FileName);
renameMp3(trackNo, mp3FileName);
i++;
}

} while(objInFile.AtEndOfStream==false);
objInFile.Close();
}

function eraseSpace(strFileName) {
if ( strFileName.substr(0,1) == " " ) {
var tmpStr = strFileName.substr(1,(strFileName.length - 1))
var returnStr = eraseSpace(tmpStr);
return returnStr;
} else {
return strFileName;
}
}

function eraseBackSpace(strFileName) {
if ( strFileName.substr(strFileName.length-1,1) == " " ) {
var tmpStr = strFileName.substr(0,(strFileName.length - 1))
var returnStr = eraseBackSpace(tmpStr);
return returnStr;
} else {
return strFileName;
}
}

function renameMp3(trackNo, mp3FileName){
var dir = fso.GetFolder(".");
var files = new Enumerator(dir.Files);
mp3FileName = mp3FileName.replace(/\//g,"/");
mp3FileName = mp3FileName.replace(/\"/g,"”");
mp3FileName = mp3FileName.replace(/\\/g,"¥");
mp3FileName = mp3FileName.replace(/\*/g,"*");
mp3FileName = mp3FileName.replace(/\?/g,"?");
mp3FileName = mp3FileName.replace(/ mp3FileName = mp3FileName.replace(/>/g,">");
mp3FileName = mp3FileName.replace(/:/g,":");
mp3FileName = mp3FileName.replace(/\|/g,"|");
while (files.atEnd() == false) {
var tmpName = files.item().name;
var tmpStr = tmpName.substr(0,2);
if ( tmpStr == trackNo ) {
var newname = files.item().ParentFolder + "\\" + trackNo + "." + mp3FileName + ".mp3";
files.item().Move(newname);
break;
}
files.moveNext();
}
}


Posted by りじんぐ at 06:35

2015年03月10日

拡張子MP3のファイルで連番で始まるものの一覧を作成するスクリプト
[ Tips ]

まあ、とある目的で作ったものですが、公開しておきます。
拡張子がMP3となっているもので、01から連番で始まるファイルの一覧テキストを作成するプログラムです。
mp3と同じフォルダに入れてダブルクリックしてください。同一フォルダに「xxx.txt」というファイルが作成されます。
JSEスクリプトですので、「xxx.jse」の様に保存してください。


//-------------------------------------------------------------------
// 拡張子MP3ファイルのリストを作成するプログラム (ファイル名: dirList.jse)
//-------------------------------------------------------------------
// 変数の初期化など
var fso = WScript.CreateObject("Scripting.FileSystemObject");

// ファイルを1つずつ処理する
var dir = fso.GetFolder(".");
var files = new Enumerator(dir.Files);
var data = new Array();
var maxIndex = 0;
while (files.atEnd() == false) {
var tmpPath = files.item().path;
var tmpStr = tmpPath.substr((tmpPath.length - 3),3);
if ( tmpStr == "mp3" ) {
// WScript.echo(files.item().name);
var filename = files.item().name;
if(isNaN(filename.substr(0,2))){
if(isNaN(filename.substr(0,1))){
filename = "";
} else {
filename = "0" + filename.substr(0,filename.length - 4);
}
} else {
if(isNaN(filename.substr(1,1))){
filename = "0" + filename.substr(0,filename.length - 4);
} else if (filename.substr(1,1) == " ") {
filename = "0" + filename.substr(0,filename.length - 4);
} else {
filename = filename.substr(0,filename.length - 4);
}
}
if (filename != "") {
var index = filename.substr(0,2);
index = index - 0;
data[index] = filename;
if ( maxIndex < index ) { maxIndex = index; }
}
}
files.moveNext();
}
output(data,maxIndex);


function output(data,maxIndex){
var strDir = scriptDir();
var DirIndex = strDir.lastIndexOf("\\");
var DirName = strDir.substr(DirIndex + 1,strDir.length - DirIndex);
var resultFile = strDir + "\\" + DirName + ".txt"; // 結果ファイル
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.CreateTextFile(resultFile, true, true);

for ( i = 0; i <= maxIndex; i++) {
if ( data[i] === undefined ) {
} else {
f.Write(data[i]+"\r\n");
}
}
f.Close();
}
function scriptDir() {
var fso = WScript.CreateObject("Scripting.FileSystemObject");
return fso.GetFile(WScript.ScriptFullName).ParentFolder.Path;
}


Posted by りじんぐ at 06:25

2012年12月30日

thickbox奮闘記
[ Tips ]

サイトに色々な機能を追加するにあたって、thickboxが結構使えそう。
thickboxと言うのは、よく画像をクリックすると、背景が暗くなって画像だけのウインドウが作られるヤツです。

これを用いて、データの入力フォームを作ろうかな?と。
詳しい事は、まとめ:ThickBox の使い方 (記述例&Tips) を読んでいただくといいかと思う。

この中のインラインを使用しようとしてたのだが、どうやってもthickboxの中に表示されない。
悩んでいたら、jQuery.thickboxの#TB_inlineで表示ができない を見つけた。

結局、thickboxにバグがあって、表示出来なかった…と言う訳ね。上記サイトに倣って、thickbox.jsを修正して無事に動きました。

function tb_parseQuery ( query ) {
// 追加(ここから)
query = (query.indexOf('?') != -1) ? query.split('?')[1] : query;
// 追加(ここまで)

var Params = {};
if ( ! query ) {return Params;}// return empty object
var Pairs = query.split(/[;&]/);
for ( var i = 0; i < Pairs.length; i++ ) {
var KeyVal = Pairs[i].split('=');
if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
var key = unescape( KeyVal[0] );
var val = unescape( KeyVal[1] );
val = val.replace(/\+/g, ' ');
Params[key] = val;
}
return Params;
}

Posted by りじんぐ at 22:24

2012年05月06日

gBrowser.addEventListener
[ Tips ]

このGW中にwiiカラオケしました。
ただ、このwiiカラオケ曲の検索がイカン。
Joysound公式で、検索ができるのですが、非常に重い。

また、以前歌った時の自分が歌えた一覧等のファイルがどこかへ行ってしまい、、、
このあたり、テキストファイルでPCに保存するよりも、クラウドに保存した方がいいのかも知れない…

で、Joysoundのサイトから、曲の情報などを取得するfirefoxアドオンを作っておりました。
その時のメモ書き。

gBrowser.addEventListenerで、DOMContentLoadedイベントをキャッチしていたのですが、どうも、Joysoundのサイトを読み込むと、DOMContentLoadedが複数走る模様。
調べてみると、DOMContentLoadedはiframeの読み込み完了などもキャッチしてしまう様です。
そこで、

if (event.originalTarget instanceof HTMLDocument) {
var win = event.originalTarget.defaultView;
if (win.frameElement) {
return;
}
}
を使い、iframeの読み込み完了の際はスキップする様にしました。

Posted by りじんぐ at 16:30

2012年04月29日

PT2 on ubuntu10.04
[ Tips ]

今まで、ubuntu9.10だった自宅のメディアサーバーをDLNAサーバー化しようと思いたち、

# apt-get mediatomb
を実行したところ、エラーorz
9.10はサポート切れて久しいしなぁ…。でも、自宅で使う分にはいいか…と放置していたのですが、これを期にubuntu10.04 LTS版にアップしました。
# アップしたのと同時に12.04LTS版がでたりして…

アップする際に、grubの指定等間違えて、OSから起動しなくなったりして、だいぶ焦りましたが、復旧し、OSのバージョンアップも完了。
PT2絡みのツールは再構築してやる必要があるので、makeし直してみましたが、それでも動かない。
なぜ?という事で少々悩みましたが、ubuntu10.04は9.10とはちょっと異なるのですねぇ…
UbuntuでPT2を使う †が一番分かりやすいでしょうか。要は

$ sudo vim /etc/modprobe.d/blacklist.conf

最下行に以下のように記載してやりましょう。

# 2011/09/13 earthsoft PT2
blacklist earth-pt1

と、言う部分。その他の項目も色々と書いてあるので、確認に使うといいかと。

尚、うちではPT2をUbuntu(10.04以降)で動かすには(ブックマクロ開発に)にある様に、

ls /dev/dvb/adapt*
やっても、
 ls: /dev/dvb/adapt*にアクセスできません
と表示されてしまい、ちと悩んだものでした。

Posted by りじんぐ at 19:50

2012年04月10日

javascriptでのCSV取り扱い
[ Tips ]

javascriptでCSVを扱うと書いていますが、実際はjavascript encodeで、windows上でバッチファイル形式で走らせる時に遭遇したものです。

昔はDOS(windows)上で簡単なプログラムを走らせようとするとbatファイルを作るくらいしか無かった様に思います。
しかし現在は、JSE(javascript encode)や、WSH(Windows Script Host)、VBS(VBScript)等、簡単にプログラムを作ることができます。
中でもJSEはjavascriptそのものと言っていいので、使えるようにしておくと便利だと思います。

JSEを使い始めると、ファイルの取り扱い、CSVファイルを読み込んだり/書き込んだりして、各種のデータにアクセスすることが多くなると思います。
するとまず、CSVを読み込まなければならなくなりますが…
Googleで、javascript csvファイル読み込み等で検索すると、ファイルを読み込んで「,」(カンマ)で分割する方法が出てきます。
しかし、よくよくみてみるとここで出てくる「,」分割は、数値として「1,234」という様な数字があった場合、1と234に分割されてしまうコーディングだったりします。
正確には「"1,234"」の様にダブルコーテーションで括られているものは文字列として扱い、その中の「,」は分割しないという考慮をしなければなりません。
きちんとCSVの仕様を考慮してデータを読み込んでいる例を紹介しているサイトがすぐに見つかりません。
Google先生のクオリティの低下はやはり著しいのでしょうか。

さて、きちんとCSVの仕様を考慮しているサイトを紹介しておきましょう(すべてのサイトを検証した訳ではありませんので、動かない例もあるかもしれません。念のため)
Ask Ben: Parsing CSV Strings With Javascript Exec() Regular Expression Command

function CSVToArray( strData, strDelimiter ){
// Check to see if the delimiter is defined. If not,
// then default to comma.
strDelimiter = (strDelimiter || ",");

// Create a regular expression to parse the CSV values.
var objPattern = new RegExp(
(
// Delimiters.
"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +

// Quoted fields.
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +

// Standard fields.
"([^\"\\" + strDelimiter + "\\r\\n]*))"
),
"gi"
);


// Create an array to hold our data. Give the array
// a default empty first row.
var arrData = [[]];

// Create an array to hold our individual pattern
// matching groups.
var arrMatches = null;


// Keep looping over the regular expression matches
// until we can no longer find a match.
while (arrMatches = objPattern.exec( strData )){

// Get the delimiter that was found.
var strMatchedDelimiter = arrMatches[ 1 ];

// Check to see if the given delimiter has a length
// (is not the start of string) and if it matches
// field delimiter. If id does not, then we know
// that this delimiter is a row delimiter.
if (
strMatchedDelimiter.length &&
(strMatchedDelimiter != strDelimiter)
){

// Since we have reached a new row of data,
// add an empty row to our data array.
arrData.push( [] );

}


// Now that we have our delimiter out of the way,
// let's check to see which kind of value we
// captured (quoted or unquoted).
if (arrMatches[ 2 ]){

// We found a quoted value. When we capture
// this value, unescape any double quotes.
var strMatchedValue = arrMatches[ 2 ].replace(
new RegExp( "\"\"", "g" ),
"\""
);

} else {

// We found a non-quoted value.
var strMatchedValue = arrMatches[ 3 ];

}


// Now that we have our value string, let's add
// it to the data array.
arrData[ arrData.length - 1 ].push( strMatchedValue );
}

// Return the parsed data.
return( arrData );
}


PASTEBIN - parseCSV
function parseCSV(s,sep) {
// http://stackoverflow.com/questions/1155678/javascript-string-newline-character
var universalNewline = /\r\n|\r|\n/g;
var a = s.split(universalNewline);
for(var i in a){
for (var f = a[i].split(sep = sep || ","), x = f.length - 1, tl; x >= 0; x--) {
if (f[x].replace(/"\s+$/, '"').charAt(f[x].length - 1) == '"') {
if ((tl = f[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
f[x] = f[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
} else if (x) {
f.splice(x - 1, 2, [f[x - 1], f[x]].join(sep));
} else f = f.shift().split(sep).concat(f);
} else f[x].replace(/""/g, '"');
} a[i] = f;
}
return a
}


LiosK-free Blog - 続・正規表現を使ったCSVパーサ
function parseCSV2(text, delim) {
if (!delim) delim = ',';
var tokenizer = new RegExp(delim + '|\r?\n|[^' + delim + '"\r\n][^' + delim + '\r\n]*|"(?:[^"]|"")*"', 'g');

var record = 0, field = 0, data = [['']], qq = /""/g;
text.replace(/\r?\n$/, '').replace(tokenizer, function(token) {
switch (token) {
case delim:
data[record][++field] = '';
break;
case '\n': case '\r\n':
data[++record] = [''];
field = 0;
break;
default:
data[record][field] = (token.charAt(0) != '"') ? token : token.slice(1, -1).replace(qq, '"');
}
});

return data;
}


杉並WEB研究所(工事中) - JavaScriptでExcelのCSVを読み込む実験(カンマ対応版)
//CSVデータの配列化とHTML化処理
function parseText(str){
var resultText="<table border=1>";

//改行コードを変数にし分割処理をする
var CR = String.fromCharCode(13);
var LF = String.fromCharCode(10);
lineData = str.split(CR);
var ldLength = lineData.length;
var wqRank = new Array( ldLength);
for (var h=0; h<lineData.length; h++){
var wqCount = 0; var etcCount = 0;
var wqAnalyse = 0; var etcAnalyse = 0;
var wqArray = new Array();

//各行のダブルクォートの個数カウント
for (s=0; s<lineData[h].length; s++){
wqAnalyse = wqCount;
etcAnalyse = etcCount;
if (lineData[h].charAt(s) == "\""){
//ダブルクォートのカウントを1つ増やす
wqCount++;
} else {
//その他文字列のカウントを1つ増やす
etcCount++;
}
//連続してあるクォートを認識するための初期化処理
if ((wqAnalyse != wqCount) && (etcAnalyse == etcCount)){
etcCount = 0;
}
if ((wqAnalyse == wqCount) && (etcAnalyse != etcCount)){
wqCount = 0;
}
wqArray[s] = wqCount;
}

//Math.max関数でダブルクォートの最大値解析
wqRank[h] = Math.max.apply(Math,wqArray);
wqMaxCount = Math.max.apply(Math,wqRank);

//置換用にRegExpインスタンスを作成
for (l=1; l<=wqMaxCount; l++){
eval( "var repWq"+l+"= new RegExp('\"{"+l+",}','g');");
}
repWqRe = new RegExp('変換ダブルクォート',"g");
repCm = new RegExp('\,',"g");
repCmRe = new RegExp('変換カンマ',"g");

}

for (var i=0; i<lineData.length; i++){
//ダブルクォートの個数に応じて置換
matStr = lineData[i].replace(eval("repWq"+wqMaxCount),'\"');
for (var n=wqRank.length-1; n>=2; n--){
if (n != 2){
matStr = matStr.replace(eval("repWq"+wqRank[n]),'\"');
} else {
matStr = matStr.replace(repWq2,'変換ダブルクォート');
}
}

//正規表現で半角ダブルクォートに囲まれる文字列を取得
matStr = matStr.match(/"(\\["ntr\\]|[^"])*"|[^,]+/g);

//各文字列に含まれるカンマを「変換カンマ」に一時置換、その後半角ダブルクォートを取り除き、再びカンマで結合
for (var h=0; h<matStr.length; h++){
matStr[h] = matStr[h].replace(repCm,"変換カンマ");
matStr[h] = matStr[h].replace(repWq1,"");
lineData[i] = matStr.join();
}

//カンマで分割
strText = lineData[i].split(",");
resultText += "<tr>";

//HTMLのtableを繰り返し処理で作成し、セルにデータを入れていく
for (var j=0; j<strText.length; j++){

//変換カンマと変換ダブルクォートを元の半角に戻す
strText[j] = strText[j].replace(repCmRe,"\,");
strText[j] = strText[j].replace(repWqRe,"\"");
if (i < ldLength){
if(j == 0){
resultText += "<td>"+strText[j]+"</td>";
}
if(j == 1){
if (i == 0){
resultText += "<td>";
}else{
resultText += "<td><a href="+strText[j]+">";
}
}
if(j == 2){
if (i == 0){
resultText += strText[j]+"</td>";
}else{
resultText += strText[j] +"</a></td>";
}
}
}
}
resultText += "</tr>";
}
resultText += "</table>";
return resultText;
}

なお、私は行数も短い三番目の例を採用しました。

Posted by りじんぐ at 20:22

2011年11月26日

男もすなるAndroidといふものを女もしてみんとてするなり。
[ Tips ]

Androidタブレットを買いました。
…とは言っても、中華タブレット。
ainol Novo7 Advanced(中国語ページ)です。

一番の目的は、自炊コミックスのリーダーとしての使用でした。
今までノートパソコンで読んでいたのですが、見開きページの表示はいいのですが、ズーム等も面倒くさいですし、何より寝ながら読むにはノートパソコンは大きすぎる!

…と言うわけで、赤札天国で買ってみました。Novo7 Advanced。巷の評判では、2160Pの動画もヌルヌル動く…との事で、そのヌルヌル動くってどういう意味やねん?というのは置いておいても、普通に再生出来るとのことで、、、これはイイ!!って買ってみて、動画を再生させる事はまずなかった事に気づきましたが…、まあ、佳しとしましょう。
長方形の画面なので、コミックスリーダーとしてはイマイチという話もありましたが、普段使っているPDFを表示させてみたところ、特に問題もなく表示することが出来ました。

あと、文章を書くのは苦手ですが、普通にブラウジングも出来ますし、メールのチェックも出来る。2chリーダーもあるので、いきつけの板のチェックも出来るし…、何より手軽。

そんな訳で、なんだかノートパソコンを使う必要性がなくなった感があります。

尚、自宅サーバーを使用していて、内向けDNSサーバーを立てていないので、windowsで言う、hostsファイルを作っておかないと、自鯖にアクセスすることが出来ません。
購入時既にroot化されているのでお手軽なのですが、/sytem/etc/hostsファイルの編集を行おうとすると、permissoin deniedでエラーとなってしまう。
rootでやっている筈なのに…。Terminalを導入して、chmod打ってもread only fileという事で、変更できない。何故!?

という事で原因は、ファイルシステムのmount時にread onlyでmountするのがデフォルト設定のためでした。mountコマンドで、/sytemがマウントされているものを調べ、remountすることで編集可能となりました。
具体的な手順とすると

# mount
(省略)
/dev/block/nandc /system ext4… ← /systemのmountポイントを確認します
(省略)
# mount -o rw,remount /dev/block/nandc /system ←/systemを書き込み可で再マウント
しこんな感じで、編集可能となりました。

Posted by りじんぐ at 22:47

2011年08月04日

Alternative PHP Cache
[ Tips ]

php高速化のため、APC(Alternative PHP Cache)を導入しました。
phpの高速化の方はまあ出来たのですが、apc.phpのグラフが表示されない…
表示されなければされないでそんなに困らないのですが、ちょっと気持ちが悪い。

って事で調べていたら。
http://blog.livedoor.jp/friendly_rium/archives/51783148.html 見つけました。

apc.conf.phpに余計な行(空行含む)があるとダメだそうです。

ところで、apacheのログ見ていると、結構エラー吐いてます orz
メインサイトの自作phpの方はだいぶ手を入れて、エラーはほぼ皆無になりましたが、このMovable typeも結構エラー吐いてます。
エラーを見ることが出来る環境になると、品質とか色々と分かりますなぁ…

Posted by りじんぐ at 22:48

2011年07月25日

ルーター設定(ヘアピンNAT)
[ Tips ]

必要にせまられて、サーバーを移転するか、自宅サーバーを立ち上げなければいけなくなりました。
まずはサーバーの移転を考えましたが、ファイル数が15万にもなる様なサイト、どこが受け入れてくれるでしょう…
phpにMySQL使えて、色々な技を駆使しているため、移転先も限られます。
サーバーの仕様について照会を出していたところも、なしのつぶて。つか、いっぱしの企業がそれでいいんかいな…

…仕方が無い、自宅サーバー立てるか。。。
以前はサーバーも立てていたこともあったのですが、ルーターをIX2015に変えた後、どうもうまくつながらなくて、サーバーを立てていませんでした。

今回、サーバー用に昔使っていたデスクトップを引っ張り出してきましたが…
電気代食いそうなので、そちらはテスト環境にして、メインで使っているノート(2007年購入)をサーバーにすることに。
変わりに、安ノートを買いました。Windows7で、3万円強。
…それでも、自分には十分すぎる性能…。今のPCはすごいですねぇ。。。
ちなみに旧ノートにLinux入れるとき、熱暴走で電源落ちました。それも何回も。扇風機で冷却しながらのインストールとなりました。

さて、サーバーの設定をして、接続を試みますが、どうもうまく行かない。
ポートは開放されているし、ローカルではアクセスできる。
サーバーのhosts.allowやdenyに何か設定してあるのだろうか?httpd.confの設定は…
…と、色々と見てみたが、分からない orz

[結論]
ヘアピンNATとかNATループバックと言われる機能がないためでした。
同様の機能を行うには、内向DNSを立てるか、hostsファイルを書き換えるくらい。
そのため、ドメイン名でアクセスしても×

昔使っていた安ルーターではドメイン名でアクセスしてもokだったので、盲点でした。
えらく遠回りをしたけど、一つ勉強になった。IX2015のコンフィグも何度も何度も設定しなおしたので、やっている事はほぼ頭に入りました。でも、当分使わない知識なので、忘れてしまうけれど。

さて、後は回線をADSLから光に切り替えないと…
ある程度、スピード必要だよね。

それと、今まではサーバーの設定でphpのエラーが表示されていなかったのだが、実際はNoticeレベルのワーニングが多数出るコーディングでした。これを修正し、バックアップ用のcronも登録したりした上で、初めて本運用となるかな。

Posted by りじんぐ at 22:51

2010年09月02日

addEventListenerの話
[ Tips ]

ブラウザゲームの自動実行プログラムを作っていてのお話。

Mozillaのサイトにタブブラウザ用コードのサンプル&機能紹介があります。

新しく開かれたタブのコンテンツについて仕事をしたいときは、内容がロードされ終わるまで待つ必要があります。

// 間違った方法(ページがロードし終わってない)
var newTab = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
alert(newTab.contentDocument.body.innerHTML);

// よりよい方法
var newTab = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
newTab.addEventListener("load", function() { newTab.contentDocument.body.innerHTML = "<div>hello world</div>"; }, true);

ここのサイトに倣って、「新しいタブのコンテンツの操作」の方法を作ったわけですが、なぜか、一つのHTMLを読み込むと「function()」が5回走ります(汗

単純な処理のときは早めに、removeEventListenerしてやれば、走るfunction()を1~2回程度で止めることが出来たので、なんとか実用にこぎつけていたのですが、複雑な処理を始めるともうダメ(ノД`)
データを取得して、その情報を解析して、次のHTMLを呼び出して…とやっていると、加速度的に実行イベントが増えてしまう(汗

おかしいなぁ~と調べつつも理由はよく分かりません(汗


そんな中、あるサイトに、HTML events typeの紹介として、
 load … 新規ウィンドウごとに挙がるイベント
 DOMContentLoaded … 新規文書ごとに挙がるイベント
があり、後者を指定することで、うまく行きました。

しかし、みなさん、どこのマニュアルを見ているのよ?MozillaのMDCサイトからリンクされているページは結構リンク切れがあったりして、今ひとつ役に立たなかったり、ようやくたどり着いてみても説明不足にしか思えない。
自分の基礎レベル不足しているのかなぁ~
Document Object Model Events英語のサイトも読んでみましたが、DOMContentLoadedの説明は一体いずこ?。・゚・(ノД`)・゚・。
マニュアルの読み方、教えて欲すぃ… orz

Posted by りじんぐ at 19:45

2010年03月02日

twitter覚え書き(php→twitter)
[ Tips ]

世の中、twitterが流行っている様なのですが、どうもこう常時接続ありきのツールというのは食指が動きませんで、アカウントは取ったものの放置状態となっています。

…が、ここに来て、自サイトの更新情報をtwitterに投げてみるのも面白いかな?と思いました。
phpからtwitterへの投げ方は、Tweeting from PHPにありまして、

function tweet($message, $username, $password)
{
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)).
"Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(array('status' => $message)),
'timeout' => 5,
),
));
$ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);

return false !== $ret;
}
をコピペしただけでok!
この関数をデータ登録時に呼び出すだけ。


ってな訳で、これにより、http://twitter.com/AnisonGeneにて更新履歴を見ることが出来るようになりました。

…と書いていた所で、twitterは今年の6月でBASIC認証は終了するそうな。
ってぇことはこの方法が使えるのもいつまで?

OAuth認証はPHP+OAuthでTwitter - SDN Project辺りを見ると良さそうな感じ。

Posted by りじんぐ at 20:32

2009年05月23日

玄箱リカバリ後
[ Tips ]

玄箱リカバリ後、IPアドレスを固定する場合

/etc/sysconfig/network
HOSTNAME=kuro-box
GATEWAY=192.168.0.20x

/etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.0.20x

/etc/hosts
192.168.0.20x kuro-box

を修正する。
山下氏の玄箱ハックキットの場合、sambaの方の設定はしなくて良さそう。
うちのリカバリデータは.202、KURO-BOX3でのアクセスで設定。

Posted by りじんぐ at 16:22

2009年02月01日

NJ2050再インストール
[ Tips ]

どうも何度もインストールに失敗するので、メモ
・Frame work 2.0をまずインストール
・各種ドライバインストール、ビデオドライバはc:\にコピーした後に行う
・Sunbelt Firewallは相性が悪いかも
サウンドドライバ用QFE:KB888111がインストールされていないと音が鳴らない

Posted by りじんぐ at 16:09

2008年09月14日

玄箱バックアップ/リストア手順
[ Tips ]

忘れるのでメモ

telnetにて、玄箱にログイン、EMモードに変更する。

echo -n 'NGNG' > /dev/fl3
reboot

EMモードでログインする
ID:root
pass:kuro

EMモードでバックアップをとっておく。

mount /dev/hda1 /mnt
mount /dev/hda3 /mnt2
cd /mnt
tar cvf /mnt2/backup.tar .

EMモードは非力なので、単にtarでかためる程度が良いらしい

/dev/hda1をバックアップ。
EMモード解除

echo -n 'OKOK' > /dev/fl3
reboot

/hda3の/にあるbackup.tarを圧縮
gzip backup.tar

backup.tar.gzを保存しておく


EMモードでログイン。あるいは、HDDを入れ替えると自動的にEMモードなるため、設定はいらない。
フォーマットが必要な場合は、
mke2fs -j /dev/hda1

mount /dev/hda1 /mnt
mount /dev/hda3 /mnt2

ftpでbackup.tar.gzを/mnt2に、FTPでPUTする(バイナリモードにする事を忘れずに)

cd /mnt
tar zxvf /mnt2/backup.tar.gz

EMモード解除
echo -n 'OKOK' > /dev/fl3
reboot



EMモードにならない場合の注意点
http://www.yamasita.jp/linkstation/0411/041115.htmlより
ls -l /dev/fl3 を実行して、デバイスファイルとして存在することを確認する。

[root@hackkit root]# ls -l /dev/fl3
brw-r--r-- 1 root root 250, 3 Nov 29 15:01 /dev/fl3

# このようになっていなければならない。 先頭が b で始まっていること
# メジャー番号が 250
# マイナー番号が 3
であることを確認する。

# /dev/fl3 が存在しない場合は作成
# /dev/fl3 が通常ファイルになってしまっている場合は削除の後作成
の必要がある。
通常ファイルの削除
/dev/fl3 が通常ファイルになってしまっている場合は削除する。

[root@hackkit root]# ls -l /dev/fl3
-rw-r--r-- 1 root root 4 Nov 29 14:59 /dev/fl3

こんなふうに、- から始まっていると通常のファイルである。

[root@hackkit root]# rm /dev/fl3

そのほか、メジャー番号、マイナー番号が異なる場合も同様に削除の後作成を行う。
/dev/fl3 の作成
/dev/fl3 が存在しない場合は、mknod で作成する。

[root@hackkit root]# mknod /dev/fl3 b 250 3


Posted by りじんぐ at 16:49

2008年03月21日

hddtempインストール
[ Tips ]

玄箱 Vine3.1へのインストール
http://formula97.cocolog-nifty.com/der_raum_sieben/2007/06/post_482e.html

今回、hddtemp.dbは/etcに置くようにした
まず、hddtempを叩くと、

WARNING: Drive /dev/hda doesn't appear in the database of supported drives
WARNING: But using a common value, it reports something.
WARNING: Note that the temperature shown could be wrong.
WARNING: See --help, --debug and --drivebase options.
WARNING: And don't forget you can add your drive to hddtemp.db
/dev/hda: WDC WD3200AAJB-00WGA0: 30°C or °F

とwarningが表示されたため、/etc/hddtemp.dbに該当HDDの
"WDC WD3200AAJB-00WGA0" 194 C "Western Digital Caviar SE16 320GB 8MB"

を追加

Posted by りじんぐ at 11:12

2008年03月20日

Vine3.1 webmin
[ Tips ]

Vine3.1でwebminがapt-getできない件。

http://search.luky.org/vine-users.6/msg09074.html

jp.webmin.comに情報が載っております。
http://jp.webmin.com/modules/newbb/viewtopic.php?topic_id=34&forum=1
私も同じ症状に見舞われましたが、この方法で解消できました。
以下、上記からの引用です。元ネタはこのMLのようです。

>/etc/vine-release を編集
>
>Vine Linux 3.1 (Pichon Lalande)
>↓
>Vine Linux 3.0 (Pichon Lalande)
>
>#apt-get update
>#apt-get install webmin
>
>/etc/vine-release を元に戻す

↓でもいいのかな。
http://www.period3.to/2005/02/24/vine31webmin/

>正解は、「いつのまにかextrasにおさまっていました」でした。つーことで/etc/apt/sources.listのにextrasを追加してapt-get updateを一発かければインストールできます。なーんだ。

Posted by りじんぐ at 10:00

2008年03月19日

玄箱 Vine化
[ Tips ]

玄箱のHDD容量が小さくなって来たので、NAS用に使用している玄箱のHDDを交換することに。
気が付けば今まで使用していたVine2.6はもうサポートから外れていて、インストールをしたところでapt-getをする事も出来ない。
今までの玄箱をdumpコマンドでバックアップを取り、新しい玄箱でrestoreしようと思ったが、dumpコマンドも入っていない…

rsyncさせるにもportmapからして入っておらず、tarで地道に固めて移すしかないのか?
あるいは、標準の玄箱として使用し、NASとしての役割だけを果たさせるか…
…と考えていたが、Vine3.1ならまだapt-get出来るとの事で、Vine3.1をインストールする事に。

無事、インストール完了。
そしたら、この状態をtarで固めておいた方が良さそうですね。

しかし、最初に玄箱にVine2.6をセットアップしてからたった数年の間にサポートから外れてしまい何も出来なくなるとは思わなかった。そろそろIDEのHDDも選択肢が少なくなってきており、今回もオーバースペックと知りつつ7200回転のHDDを選択したし。。。

技術がどんどんと進歩するのはいいのだけれど、それに伴って失われていく物がなんと多いことか。

Posted by りじんぐ at 10:03

2007年07月04日

automysqlbackup.sh.2.5
[ Tips ]

データベースをMySQLで運用していると、定期的なバックアップが必要になるかと思う。
バックアップに関しては、mysqldumpを実行してやるだけなので、cronジョブの設定をするのも非常に簡単なのだが、日次、週次、月次とバックアップをし、そのdumpをローテーションさせることを考えると、自分でshellを書いてやるのも面倒くさくなってしまう。


そんな時に便利なのがautomysqlbackupだ。
http://members.lycos.co.uk/wipe_out/automysqlbackup/(公式サイト)
http://sourceforge.net/projects/automysqlbackup/(Sourceforge)

データベースにアクセスする設定だけを変更するだけで、日次バックアップ、週次バックアップ(デフォルトは土曜日。変更可)、月次バックアップ(毎月1日)を行ってくれる。
日次バックアップは週ごとのローテーション
週次バックアップは5ファイルのローテーション
月次バックアップはローテーションなしの設定となる。

しかし、実はautomysqlbackup 2.5にはバグがあって、週次バックアップがローテーションされずにどんどんと蓄積されていく。
なぜだろう?と思い、shellを確認してみると、ファイルの削除設定を間違えているようだ。

539行目
eval rm -fv "$BACKUPDIR/weekly/$DB_week.$REMW.*"
とあるのを、
eval rm -fv "$BACKUPDIR/weekly/$DB/${DB}_week.$REMW.*"
の様に修正してやればいいかと思う。

尚、このautomysqlbackupをxreaのサーバーに設置したが、その際、一つ悩んだ事がある。
何故か、パスワードのエラーが出るのだ。
…よくよく調べてみると、デフォルトではMySQLのデータベースパスワードはFTPパスワードと同一ではなく、行末2文字欠けたものがパスワードだった。なんとも単純な理由だが、意外と盲点になりやすい事柄だ。

Posted by りじんぐ at 17:03

2006年10月04日

玄箱 ソースからのphpインストール
[ Tips ]

(1)bisonのインストール
(2)flexのインストール
(3)apache-develのインストール
(4)phpのインストール
5.x系は依存関係の都合でインストールが難しいらしい。
4.x系使用
そのままだと「 zend.c:776: incompatible types in assignment」エラーになるので、
Zend/zend.cの776行目をコメントアウト(/* ~ */)し、
memcpy(usr_copy, args, sizeof(va_list));
を追加

Posted by りじんぐ at 20:29

2006年09月16日

Movable Type移行メモ
[ Tips ]

ファイルのバックアップ→復元
EUC。改行コード\nにして、コードはEUC明示で読み込むと失敗する率がゼロ(?)かな。

Posted by りじんぐ at 23:02

2006年08月05日

Premiere
[ Tips ]

20961426_231.jpg

Posted by りじんぐ at 14:50 | トラックバック (0)

2006年06月14日

VSFilter
[ Tips ]

「rundll32 "(VSFilterのインストールパス)\VSFilter.dll",DirectVobSub」
というコマンドラインを実行すると VSFilter の設定画面を開くことが出来ます。
このようなショートカットを作っておくと便利でしょう。

Posted by りじんぐ at 20:03

2006年06月02日

ルーター
[ Tips ]

ルーターのメモ。
知っている人はこんな風に思うらしい。

>買いたくない: バッファロー、IOデータ、エレコム、サンワサプライ、プラネックスなど
>買ってもいいかな: コレガ、リンクシス

>個人向けじゃなくてSOHO向けルーターとして、
>これならなんとか買える: ヤマハ、古河電工、センチュリー
>欲しいけど高くて買えねー: シスコ、アライドテレシス

次に買う時のためのメモということで(笑)

Posted by りじんぐ at 22:59

2006年05月07日

携帯からのアクセス(ユーザーエージェント)
[ Tips ]

http://ns1.php.gr.jp/pipermail/php-users/2005-February/024839.html
[PHP-users 24319] Re: 携帯からアクセスorPCからアク
Tomoyuki Asakawa tom @ asakawa.ne.jp
2005年 2月 1日 (火) 09:11:37 JST

* 前の記事 [PHP-users 24318] Re: クロスサイトスクリプティングとSQLインジェクションの防止策
* 次の記事 [PHP-users 24320] Re: 携帯からアクセスorPCからアク
* 記事の並び順: [ 日付 ] [ スレッド ] [ 件名 ] [ 著者 ]

あさかわ

> ……カンベンしてくれ(;_;)>モトローラ
> しばらくは、モトローラの端末締め出し状態になるんでしょうね。
> これでこりてくれりゃあいいんだけど……。

その程度ならいいんですが 3G閉め出しの可能性もあります.

なんと、Up.Browserって返す,Vodafone 3Gがあるんです.
当然,KDDIって書いてないので、WAP1と思って.HDMLで応答してしまうのです.

Vodafone/1.0/V802SH/SHJ001 Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0
Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2
Ext-V-Profile/VSCL-2.0.0

まあ、Vodafoneを先にチエックしてればいいんですがね.

なので、こんな感じで判別するといいと思う

if(eregi( "DoCoMo/2", $_SERVER["HTTP_USER_AGENT"]){
ドコモ FOMA (XHTML)
}else if(eregi( "DoCoMo/1", $_SERVER["HTTP_USER_AGENT"]){
ドコモ MOVA ブラウザフォン
}else if(eregi("J-PHONE", $_SERVER["HTTP_USER_AGENT"])){
ボーダフォン 1G,2G
}else if(eregi("Vodafone|MOT-",$_SERVER["HTTP_USER_AGENT"])){
ボーダフォン 3G (XHTML)
}else if(isset($_SERVER["HTTP_X_JPHONE_MSNAME"])){
ボーダフォン 旧1G?
}else if(eregi("KDDI-", $_SERVER["HTTP_USER_AGENT"])){
WAP2 (XHTML)
}else if(eregi("UP.Browser", $_SERVER["HTTP_USER_AGENT"])){
WAP1 (HDML)
}else if(eregi("ASTEL", $_SERVER["HTTP_USER_AGENT"])){
ASTEL
}else if(eregi("DDIPOCKET", $_SERVER["HTTP_USER_AGENT"])){
WILLCOM Air EDGE PHONE
}else if(eregi("PDXGW", $_SERVER["HTTP_USER_AGENT"])){
WILLCOM EDGE LINK (Open Net Contents)
}else if(eregi("L-mode", $_SERVER["HTTP_USER_AGENT"])){
NTT L-mode
}else{
PC
}

ちなみに、Locationで飛ばすと、一部の機種で、サイトが移動しましたなど目障りなメッセージが出ることがあるので
includeで切り替えた方がいいと思う.


* 前の記事 [PHP-users 24318] Re: クロスサイトスクリプティングとSQLインジェクションの防止策
* 次の記事 [PHP-users 24320] Re: 携帯からアクセスorPCからアク
* 記事の並び順: [ 日付 ] [ スレッド ] [ 件名 ] [ 著者 ]

PHP-users メーリングリストの案内

Posted by りじんぐ at 14:51

2006年02月06日

起動時管理
[ Tips ]

いつも忘れすのでメモ
/etc/rc.local

Posted by りじんぐ at 21:24

2005年11月10日

proftd.conf
[ Tips ]

/usr/local/etc/proftpd.conf

Posted by りじんぐ at 21:13

2005年07月09日

firefoxの検索エンジン
[ Tips ]

firefoxには検索エンジンを追加出来るのですが、英語版を導入すると一番上にGoogle(英語版)が登録されてどうも使いにくい。

そんな時は
\program files\Mozilla Firefox\searchplugins
の中を操作すればOK

Posted by りじんぐ at 09:38

2005年03月04日

/php-4.3.10/Zend/zend.c:776: incompatible types in assignment
[ Tips ]

zend.c 776 行目を以下のように変更。

memcpy((usr_copy),(args),sizeof(*(args)));

Posted by りじんぐ at 19:47

2005年01月19日

MySQLでxrea用dump作成手順
[ Tips ]

忘れるのでメモ

su mysql
mysql -u root -p mysql

use rizing
※データベースを作成する場合
CREATE TABLE person(
id int(5),
name char(130)
);

CREATE TABLE cd(
id char(6),
name char(20)
);

CREATE TABLE program(
id char(6),
name char(200)
);

CREATE TABLE song(
id char(6),
name char(200)
);
※データベースを削除する場合
DELETE FROM program;
DELETE FROM person;
DELETE FROM song;
DELETE FROM cd;

※/にCSVファイルを置いてから
LOAD DATA INFILE '/program.csv' INTO TABLE `program` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
LOAD DATA INFILE '/song.csv' INTO TABLE `song` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
LOAD DATA INFILE '/person.csv' INTO TABLE `person` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
LOAD DATA INFILE '/cd.csv' INTO TABLE `cd` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';

mysqldump rizing -uroot -p[rootのパスワード] -Q --opt -rmysql.dump

Posted by りじんぐ at 20:53

2005年01月01日

ProFTPD
[ Tips ]

インストール
$ tar zxvf proftpd-1.2.10.tar.gz
ここでパッチをあてるが、環境によってはpatch内のpathを ./proftpd-1.2.10の様に「./」を追加しないとエラーが発生する。
$ patch -p1 < [パッチファイル名]
$ cd proftpd-1.2.10
$ ./configure --with-modules=mod_codeconv:mod_df
$ make
$ su
Password: (rootのパスワード <非表示>)
# make install

/etc/inetd.conf の設定
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/proftpd

Posted by りじんぐ at 00:00

2004年12月30日

玄箱へのProFTPD設定
[ Tips ]

Proftpdの文字コードSJIS変換
iconv() 文字コード変換パッチを取得
Patchコマンドをあてる前に
# apt-get update
# apt-get install patch

configure実行時にcrt1.oがないと言われるので、glib-develをインストール
# apt-get install glib-devel

# configure 実行時に --with-modules=mod_codeconv
を指定。

Posted by りじんぐ at 07:07

2004年12月26日

玄箱のHDD停止
[ Tips ]

# apt-get update
# apt-get install hdparm
# apt-get clean

# vi /etc/rc.d/rc.local
下記を追加
/sbin/hdparm -S 12 /dev/hda
1分アクセスなしでHDDを停止

Debineを使っているのであれば、以下の方法も可
# apt-get install noflushd

# vi /etc/default/noflushd
TIMEOUT=5
DISKS="/dev/hda"
の頭の#をとって保存。
TIMEOUTでディスク停止までの時間を設定(単位分)
/etc/init.d/syslogdで
SYSLOGD="-m 0"

noflushdはhdparm -Sのスピンダウンと併用すると効果がないらしい

Posted by りじんぐ at 11:47

2004年12月19日

起動時のTEMPファイルの削除
[ Tips ]

忘れないうちに書いておく

今回、OSを入れ直した時に設定に悩んだ部分で、以前のOSではOS起動時にTEMPファイルの中身を削除していた、その方法。
すっかり忘れていまして、どうしたんだっけか。。。と(^^;;

autoexec.batで消す方法が結構紹介されていますが、これってファイルが多ければ多いほど起動が遅くなってしまっていました。
# まあ、今のOSでは知らないけどwindows98の時は、延々、カリカリやっていたので…

そこで、窓の手のテンポラリ削除を導入。削除が出来的に早くなったのを覚えています。
…って事で、削除するなら窓の手使いましょう。

Posted by りじんぐ at 11:07

2004年12月01日

Windows2000 USB2.0ドライバ
[ Tips ]

Windows2000をセットアップしましたが、何故かUSBが不明なデバイスになっていました。
普通に使えていたので気にしなかったのですが、どうやらUSB2.0が使えなくなっていた模様。

DivX→Huffyuvへのエンコードするのに30分もので3時間Σ(゚∀゚ ;)
HuffyuvをMediaPlayerで再生しようとしたらカクカク…Σ(゚∀゚ ;)
Huffyuvってこんなに重いコーデックだったっけか?今まで同じスペックのXP(XPを2000にダウン)で30分だったのに…
って事で、調べてみるとハードディスクへのアクセスがボトルネックだった模様。

ちょっと調べてUSB2.0ドライバをインストール
Windows処方箋によると

Windows 2000 は標準の USB ドライバが機能拡張され、一部の USB2.0 デバイスを駆動できるようになりました。
Intel を含む多くのメーカーは、以下のように Windows Update から Microsoft 製ドライバをダウンロードして使うようにガイドしています。
Internet Explorer を起動し、[ツール]竏端Windows Update] をクリックします。
Windows Update カタログを開きます。
「ハードウェア デバイスのドライバの更新を探します」をクリックします。
「そのほかのハードウェア」を選択します。
製造元から Microsoft Corporation を選択し、Windows 2000 を選択して「検索」ボタンをクリックします。
「Microsoft Usb Driver Version 5.1.2600.0」が USB2.0 もサポートするドライバなのでこれをダウンロードして適用します。
現時点でこのドライバがサポートする USB2.0 デバイスは以下の通りです。
NEC PCI\VEN_1033&DEV_00E0&REV_01
NEC PCI\VEN_1033&DEV_00E0&REV_02
Intel PCI\VEN_8086&DEV_24CD
VIA PCI\VEN_1106&DEV_3104


との事ですが、Firefoxでアクセスしてもこのページを見ることができません(>_<)
ダメだね、、、マイクロソフト…

結局USB2.0のデバイスインストールで「Windows Updateからのインストール」を選択し、事なきを得ました(^^)
それにしても、インストール、、、結構手間ですね(^^;

Posted by りじんぐ at 23:46

2004年11月28日

メインPCセットアップ中
[ Tips ]

最近メインPCの環境が汚れてきたせいか、まともに動画再生も出来なくなってきました。
仕方がないのでbsplayerやら、Media Player Classic使っていたりしたのですが、いい機会ですのでOSのインストールし直しをすることに。

ただ、今の環境をフォーマットして再インストールするとデータの退避し忘れ等、様々な不具合が発生すると思われるので、デュアルブート環境にする事にしました。
Cドライブ、DドライブをOSにしたいがために、今Dドライブにあるデータを一回退避し、OSをインストール後、別パーティションにリストアする方式をとります。今までのDドライブはデータドライブなので、どちらのOSからも参照するようになりますし。

で、今までXPを使っていたのですが、やっぱり普段使っていてWindows2000の方が軽いんですよね。そういう(データベースやるのにスピードが大事な)理由からデュアルブート環境でXPと2000のデュアルブートにする事に。
ドライブレターの関係でちと苦労しましたが、ほぼセットアップの方は完了となりまして、今までに使っていたソフトを再インストール中。それにしても沢山ソフトが入っていたんだな…と言う事で、折角綺麗にした環境を汚しております(笑)

メモ:Windows faqより

Windows 2000 と XP のデュアルブート
Windows 導入ドライブを別にしてください。
Windows 2000 と XP で Program files フォルダを共有することはできないので、別ドライブへの導入が必須です。

また、Windows 2000 の NTLDR では XP を起動することができないので、Windows 2000 導入後に XP を導入してください。 Windows 2000 を後からセットアップする場合、あらかじめ XP の NTLDR および ntdetect.com をバックアップしておき、Windows 2000 セットアップ完了後にリストアしてください。
ブートメニューに日本語を表示したい場合は、XP の bootfont.bin もバックアップ/リストアしてください。

あとは、boot.ini を修正して、起動時間を短くする…くらいかな。

Posted by りじんぐ at 10:08

About Tips

ブログ「くーそーしてからねてください」のカテゴリ「Tips」に投稿されたすべてのエントリーのアーカイブのページです。新しい順番に並んでいます。

前のカテゴリはPT2です。

次のカテゴリはubuntuです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type