つまづいた石ころ、ぶつかった壁

問題(と解消)の記録

秀丸 デフォルトの文字コードの設定方法

nodeを触っていて、どうも日本語が文字化けするなと、ヘッダやらなんやら
いじってみていたのですが、そもそもファイルのエンコードSJISでした、というお話。

参考

秀丸でデフォルトのエンコードをSJISからUTF-8に変更
まんま検索、まんまの方法が見つかりました。

変更方法

  1. その他⇒動作環境を開く
  2. ファイルのエンコード1を選択
  3. 標準のエンコードの種類でUTF8を選択

エンコード1は左下の「上級者向け設定」にチェックを入れると表示されます。

IEタブプロセスをすぐに終了させる方法

IEのプロセス「iexplore.exe」、タブを閉じたくらいでは退く気配を見せませんが、
レジストリの設定で立ち退き時間を決められるようです。

手順

  1. Win + R
  2. regeditと入力
  3. HKEY_CURRENT_USER、Software、MicrosoftInternet Explorer、Mainの順にたどる
  4. Mainを右クリックして、新規、DWORD(32ビット)値
  5. 名称を「TabShutdownDelay」にする
  6. TabShutdownDelayをダブルクリック
  7. 10進数を選択、終了までの時間(ミリ秒)を入力

参考

IE8 ではタブを閉じても対応するプロセスがすぐに終了しない


firefoxもしばらく残るので、設定があるかと思ったのですが、特に見つかりませんでした。
最近ほとんど使ってないですが、気がついたらにメモリ1GB以上を食ってる、かわいいやつですよね。

コマンドプロンプトの開始ディレクトリを変更する

コマンドプロンプトを開くたびに変更していた自分が馬鹿すぎました。
一瞬で設定完了しました。

方法

  1. コマンドプロンプトのプロパティを開く
  2. 作業フォルダを任意の場所に変更する
  3. 好きなタイミングでOKを押す

socket.io/socke.io.jsが404を返してどうにも動かない

socket.ioのサンプルを動かしてみたのですが、クライアント側でsocket.io/socke.io.jsのリクエストに404が返されてしまい、
どうにも動きません。

予備知識ゼロでサンプルコピペでやっていたので、何をどうしていいか皆目見当がつかないまま、
とりあえずググって見ると、それらしい回答がありました。

環境

  • node 0.8.4
  • socket.io 0.9.11
  • express 3.0.1

Before

//listenする
http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

//listenしているサーバーに後付け
var io = require('socket.io').listen(app);

io.sockets.on('connection', function(socket) {
  //do something
});

After

//まだlistenしない
var server = http.createServer(app);

var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
  //do something
});

//socket.ioの準備をしてからlistenする
server.listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

理解が正しいかわかりませんが、
StackOverflowに書かれていることそのままやったら解決しました。

SQLSERVER 物理ファイルを移動する(mdf、ldf)

SQL SERVERで運用中のデータベースの物理ファイルを移動させようと思うと、
デタッチ⇒アタッチで可能ですが、ログだけ別のドライブに分けたいといった場合に、GUIからは
操作できません。
※プロパティのファイルのパスは編集不可です。

次のSQLでパスを書き換えます。

ALTER DATABASE sample/*データベース名*/ MODIFY FILE(
   'sample_log'/*ファイル名*/
  ,'E:\ldf\sample_log.ldf'/*ファイルパス*/
);
/*SQLSERVER再起動後に反映される旨のログが出ます*/

この後、以下の手順でファイルを移動します。

  1. SQLSERVERのサービスを停止
  2. ファイルを所定の場所へ移動
  3. SQLSERVERのサービスを開始

パスを書き換えた後、データの書き込みを行っても問題ありません。



ファイル名、パスなどの情報は以下のシステムテーブルより参照できます。

  SELECT * FROM sys.database_files

ASPでExcelを編集する(ADO)

ASPからExcelを編集するとなると、値段の張るExcelCreatorなんかでゴリゴリ編集コードを書く、なんてことになりますが、
単純にデータを落とすぐらいなら、ADOでできるとのこと。


やり方

DBからデータを取得するのと同じ要領です。

'DBに接続するのと同じく、ConnectionとRecordsetを用意
Set conExl = Server.CreateObject("ADODB.Connection")
Set rsExl = Server.CreateObject("ADODB.Recordset")
'Excelへの接続文字列
conExl.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\home\myexcel.xlsx;Extended Properties=""Excel 8.0;"""
'編集したいセルをSELECT
rsExl.Open "SELECT * FROM [SHEET$B1:B13]", conExl, 3, 2
While Not rsExl.EOF
	'値を入れて、Update
	rsExl.Fields(0).Value = m_strTenpoTel
	rsExl.Update
	
	rsExl.MoveNext
Wend
rsExl.Close
conExl.Close


こんなに簡単にできるならもっと早く言ってほしいです。。

Node.js on Windows 手始め

node.jsやってみました。

参考サイト

Windows+Node.js+Socket.IO

そもそもどう起動する?

IISApacheではサーバを起動して、指定したルートディレクトリのファイルにリクエストを投げることで応答が返ってきますが
、node.jsも同じです。

入門記事を見ていると、以下のようなserver.listen(ポート番号)でOKというのがまずはじめに出てきます。

var http = require('http');
 
http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write('Hello ');
  response.end('World\n');
}).listen(8124); //このポートでアクセスしてきたやつに「Hello World」って言ってやる!
 
console.log('Server running at http://127.0.0.1:8124/');

どこでどうやって?と思っていましたが、コマンドラインからnode.exeの引数に
上記の内容を保存したjsファイルを指定して実行するだけで、サーバーが起動した状態となります。

node c:\node\hello.js

止める時は「Ctrl + C」です。


ブラウザからhttp://127.0.0.1:8124/にアクセスすると、Hello World!!と表示されます。

npm

モジュールのインストールに使うnpm。
node.jsのインストール時にパスも通っているので、単に

npm install socket.io

という感じでコマンドを叩くだけです。