Tags

Recent Entries

Recent Comments

Recent Trackback

Feeds

More Links


macbookがフリーズしまくる件

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
macbookがフリーズしまくる件について、ログみると
NetInfo connection failed for server 127.0.0.1/local

っていうエラーが多発していたわけですが、関係あるのかないのかわかりませんが、ターミナルから
 sudo nicl . create /locations/lookupd/hosts LookupOrder CacheAgent FFAgent NIAgent DNSAgent DSAgent

すれば異様に調子がよくなりました。名前解決関係の問題だと思うんですが原因は不明。
Posted by: simpraight at 2006/12/22 22:59:56 | Tags: [嵌る] [osx] | Comments:616 | Trackbacks:0

Microsoft Shared Computer ToolKITとか。

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
去年の暮れくらいにリリースされたMicrosoft Shared Computer Toolkit、あんまり評判聞きませんけど利用状況ってどうなんでしょうね。個人的には結構インパクトあったんですが。

ていうか今更話題にするような事でもないと思いますが使ってみた感じでは、ディスク保護はかなり便利。

社内の動作確認用端末用とか公共端末に使う分にはありだと思います。
導入する際の注意点は、

 ・事前に「User Profile Hive Cleanup Service」を入れておく必要がある。
 ・システムドライブの10%もしくは1GBのどちらか大きい方のサイズ分「未使用の領域」が必要。
 ・ページングファイル、各種ログ等はCドライブ以外のパーティションへ。
 ・再起動するとCドライブが元の状態に戻されるので、消されたくないものはサーバ上に。

くらいだと思います。そんなに敷居は高くない。

導入コストは無償なので低いし、基本的に普通のHDDブートだから起動も速いし、何よりMicrosoft謹製なのでシンクライアントを導入するよりはコレの方が随分マシな気がします。

ディスクの保護と保護解除を切り替えるのがちょっと面倒くさい感じですが、コマンドラインでも動作するみたいなので以下みたいなバッチファイル作っておけば運用も若干楽になります。

--DiskProtectOn.bat
@echo off

ECHO +--------------------------------------------------------------+
ECHO | |
ECHO | ディスクの保護を有効にして再起動を行います |
ECHO | ※必ず管理者権限を持つユーザーで実行してください |
ECHO | |
ECHO +--------------------------------------------------------------+
ECHO.

SET /P Y_N="続行しますか?(y/n) : "

IF %Y_N%==y GOTO EXECUTE
IF %Y_N%==Y GOTO EXECUTE
GOTO FIN

:EXECUTE
CSCRIPT //H:cscript //NoLogo //I
ECHO.
ECHO しばらくお待ちください...

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /t "REG_SZ" /d "[普段使用しているユーザー名]" /f
CD "%SCTPATH%\scripts"
DiskProtect.wsf /On

shutdown.exe -r -t 3

:FIN


--DiskProtectOff.bat
@echo off

ECHO +--------------------------------------------------------------+
ECHO | |
ECHO | ディスクの保護を無効にして再起動を行います |
ECHO | ※必ず管理者権限を持つユーザーで実行してください |
ECHO | |
ECHO +--------------------------------------------------------------+
ECHO.

SET /P Y_N="続行しますか?(y/n) : "

IF %Y_N%==y GOTO EXECUTE
IF %Y_N%==Y GOTO EXECUTE
GOTO FIN

:EXECUTE
CSCRIPT //H:cscript //NoLogo //I
ECHO.
ECHO しばらくお待ちください...

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /t "REG_SZ" /d "[普段使用しているユーザー名]" /f
CD "%SCTPATH%\scripts"
DiskProtect.wsf /Off

shutdown.exe -r -t 3

:FIN


これで管理者ユーザでログオンするか、コマンドラインからrunasで実行するだけで切替が可能になります。

公共端末で色々荒らされて困っている場合は導入の価値ありです。
Posted by: simpraight at 2006/12/22 19:40:07 | Tags: [windows] [security] | Comments:1 | Trackbacks:0

修理戻り

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
先日修理に出したmacbookが3日で戻ってきました。修理超早い。

あっさり「HDD交換」ってなってたので、再セットアップして色々インストールしてたんですが、フリーズ再発!

えーって感じでもう一回入れ直しするも色々アプリケーションインストールしてるうちにフリーズしてしまいます。

どうやらインストールしたアプリケーションのうち何かが問題になっている様子です。リストアの手順は以下のような感じです。

 (1)OSクリーンインストール
 (2)ソフトウエアアップデートで全て最新に
 (3)iBackupをインストールして保存しておいた以下のデータを復元
   ・Keychains
   ・Mail
   ・SystemPrefarences
   ・iTunes
   ・iPhoto
   ・その他いくつかのアプリケーション
 (4)以下のソフトウエアをインストール
   ・ATOK2006 for MAC
   ・CyberDuck
   ・Fink+FinkCommander
   ・Firefox
   ・iBackup
   ・iTerm
   ・LiteSpeed
   ・Mysql 5.0.x
   ・PHP 5.2.x(ソースから)
   ・QuickSilver
   ・skEdit
   ・Smultron
   ・Subversion+svnX
   ・The Unarchiver
   ・X11(インストールCD1の)
   ・Xcode2.4.1

この手順でいくと必ずフリーズしてしまいます。。。何度やっても同じ。

とりあえず色々試しながらやった結果今のところは正常に動いています。今までのリストアの方法と違うところといえば、

 ・iBackupで保存したデータの復元を行わない。
 ・ATOKをインストールしない。

この2点です。どちらも怪しいっちゃ怪しい。まぁ既に5回くらいリストアしているので、もう入れ直ししたくありませんから原因の追及とかはしませんが。

データはバックアップしてるから別にいいんですが、リストア作業はもうほんと勘弁してください。
Posted by: simpraight at 2006/12/17 08:50:32 | Tags: [日記] | Comments:1 | Trackbacks:0

macbook修理3回目。

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
家のmacbookが3回目の病院送りになりました。

そもそも、8月くらいに当時流行りの「不定期電源断」に見舞われて初の修理。

無事修理が完了して2ヶ月後、同じく当時流行りの「修理後不定期電源断再発」となり2回目の修理。

で、2ヶ月後の現在です。

今回は、
 ・使用中に不定期フリーズ
 ・HDD修復しても効果無し
 ・HDD消去して再インストールしても効果無し
という修理に出してもまともに「修理」として扱ってくれるか非常に微妙な状態です。

何日か我慢して使ってましたが、結局使い物にならないので3回目の修理手続きしました。

電話に前回と同じ担当の人がでて、「あーこの間の。」とか言われてる始末です。
ちょっと壊れすぎじゃないですかこれ。まぁ基本的に修理無料だから良いんですけど。
Posted by: simpraight at 2006/12/13 19:02:37 | Tags: [日記] | Comments:1 | Trackbacks:1

willcom store

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
重杉。
Posted by: simpraight at 2006/12/11 00:16:14 | Tags: [日記] | Comments:197 | Trackbacks:0

courieer-imap + postfix + mysql + smtp auth

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
嵌りどころ。

・mysqlに保存するパスワードはplaintextに
・smtpはjail環境で動かさない。

# tail /var/log/mail.log
warning: SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory

こんなエラーが出てる場合は、

# vi /etc/postfix/master.cf
smtp inet n - - - - smtpd
 ↓
smtp inet n - n - - smtpd


とりあえずこれで動作しますがセキュリティ的にはもちろん微妙。。
Posted by: simpraight at 2006/12/09 02:17:28 | Tags: [嵌る] [server] [tips] | Comments:1 | Trackbacks:0

Yahoo画像検索でIEが不正終了する件

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
CNETにも出てましたがYahooの画像検索がリニューアルしてるみたいです。

客先で「IEが落ちる」って言われたのでちょっと見てみたんですが、
Yahooの画像検索をIEで開いて、適当な語句で検索を行うと、かなりの確率で一般保護エラーが発生して落ちます。どうもJavascriptの実行時に落ちているっぽいです。

とりあえず、

 MS06-067 Internet Explorer 用の累積的なセキュリティ更新プログラム

この修正プログラムを適用すれば問題なく動作するみたいです。まぁWindowsUpdateちゃんと実行していれば問題ないって事です。

それにしても、一昔前では考えられませんでしたが、大手ポータルサイトのYahooまで検索ページでJavascript使いまくってるんですねぇ。
Posted by: simpraight at 2006/12/07 08:57:52 | Tags: [日記] | Comments:900 | Trackbacks:1

改行コードで嵌る。

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
textareaにinnerHTMLで放り込んだときの改行コードの扱いで嵌った。どうやってもIEで改行してくれない。
ていうかFAQですかコレは。

下記ページで解決。こういった風に簡潔にまとめてくれている人がいると非常に助かります。
Collection & Copy - 改行コード、pre、textarea
pre要素内の文字を変更する際、改行コードの扱いが各ブラウザで異なるようなので以下コードで調べました。
Posted by: simpraight at 2006/12/04 19:53:44 | Tags: [javascript] [嵌る] | Comments:32 | Trackbacks:0

複数のJavascriptファイルを圧縮して出力するSmartyプラグイン

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
つくりました。

とりあえずプラグインのソース。
<?php
/*
* Smaryプラグイン # JavaScriptファイルを圧縮してファイルを生成しファイルを出力
*
* @params array $params パラメータ
* @params object $smarty 親Smartyオブジェクト
* @return string scriptタグ
*/
function smarty_function_build_javascript($params, &$smarty)
{
if(!is_array(($smarty->_file_js))) return "<!-- No input files. -->";
$output = '';
foreach($smarty->_file_js as $js){ $output .= "\n".file_get_contents($js); }
$outfile = "script/build/".md5($output).".js";
if($params['output']=='file' && is_file($outfile))
return "<script type='text/javascript' src='{$outfile}'></script>";
// compress
$p = array(
"/[\r\n]+/", "/^[\s\t]*\/\/.+$/m", "/\/\*.+?\*\//s",
"/([\{\(\[,;=\?:\-\+\/\*])\n+/", "/[\s\t]*([\{\(\[,;=\+\*-<>\|\&\?\:!])[\s\t]*/", "/\n\}/","/(\})\n(return)/",
"/^[\s\t]+/m", "/[\s\t]+$/m", "/[\s\t]{2,}/",
);
$r = array (
"\n", "", "",
"$1", "$1", "}","$1$2",
"", "", "",
);
do{$output=preg_replace($p,$r,$output);}while($output!=preg_replace($p,$r,$output));
if($params['output']=='file') {
$fp = @fopen($outfile, "w+");
if(!$fp || !fwrite($fp, $output)) return "<!-- Error -->";
fclose($fp);
return "<script type='text/javascript' src='{$outfile}'></script>";
} else{
return "<script type='text/javascript'>".$output."</script>";
}
}

使い方は以下のような感じでSmartyのクラスを作成した上で、
<?php
class extSmarty extends Smarty{
var $_file_js;
function extSmarty (){
$this->_file_js = array();
// 以下は環境設定。説明は省略
$this->template_dir = SMARTY_TEMPLATE_DIR;
$this->config_dir = SMARTY_CONFIG_DIR;
$this->compile_dir = SMARTY_COMPILE_DIR;
$this->cache_dir = SMARTY_CACHE_DIR;
$this->left_delimiter = SMARTY_LEFT_DELIM;
$this->right_delimiter = SMARTY_RIGHT_DELIM;
// プラグインを登録
$this->register_function('build_javascript' ,'smarty_function_build_javascript');
}
/**
* Javascriptファイルを追加
*
* @param string $script SCRIPTファイル名
*/
function addJs($js){
if(is_array($js)) foreach($js as $v) $this->addJs($v);
if(is_file($js)) $this->_file_js[] = $js;
}
}

メインプログラムからは以下のように記述し、
<?php
$tpl = new extSmarty();
$tpl->addJs('script/prototype.js');
$tpl->addJs('script/moo.fx.js');

$tpl->display('example.tpl');

テンプレートファイルに以下のように書けばおk。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-script-type" content="text/javascript; charset=UTF-8" />
<meta http-equiv="content-style-type" content="text/css; charset=UTF-8" />
<base href="http://.../" />・・・①
<title>example</title>
<{build_javascript output=file}>・・・②
</head>
<body>
...
</body>
</html>

①・・・「<base href="~">」を設定しておいた方が階層深くなっても対応できて無難です。
②・・・Smartyのデリミタは基本的に「<{~}>」に設定して使っています。「output=file」をのけるとファイルを生成せずに<script>~</script>に出力します。


とりあえず取得した内容のmd5を取り、変更がある場合だけファイルを再生成するようにしています。
この方法だと、「script/build」内に古いファイルがどんどん溜まっていくわけですが・・・なんとかなりませんかね。
Posted by: simpraight at 2006/12/04 12:36:13 | Tags: [php] [javascript] [tips] | Comments:17 | Trackbacks:0

PHPでJavascriptを圧縮する

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
簡単な関数でJavascriptの圧縮をします。
ネットワーク負荷の気になる環境下では基本的にmod_deflate使ってる場合が多いのでgzip圧縮は既に導入済み。であれば、あとは正規表現使って不要な改行や空白などを除去し少しでも元のスクリプトファイルを軽量化するくらいのものです。

軽量化したものは同時に難読化されてしまうので開発環境下では元のファイルを使用して、本番環境では圧縮したファイルを使えるようにSmartyプラグインを作成しておくと結構嬉しいです。(あとで作る)

サンプル→PHPでJavascriptを圧縮する

function jsCompresser($js){
$p = array(
"/[\r\n]+/",
"/^[\s\t]*\/\/.+$/m",
"/\/\*.+?\*\//s",
"/([\{\(\[,;=])\n+/",
"/[\s\t]*([\{\(\[,;=\+\*-<>\|\&\?\:!])[\s\t]*/",
"/\n\}/",
"/^[\s\t]+/m",
"/[\s\t]+$/m",
"/[\s\t]{2,}/",
);
$r = array (
"\n",
"",
"",
"$1",
"$1",
"}",
"",
"",
"",
);
do{$js=preg_replace($p,$r,$js);}while($js!=preg_replace($p,$r,$js));
return $js;
}
Posted by: simpraight at 2006/12/02 17:16:36 | Tags: [php] [javascript] [tips] | Comments:1,162 | Trackbacks:1