@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.
+ 0 - 0 | §DSI Short Test Fail 1000-0146

晚上回家开本本,莫名其妙就进不了Windows了。下班时候正常关的机,重新开系统就只能到 Windows 启动画面,过几秒钟蓝屏一闪而过,然后就开始重新启动进入到启动模式选择了。试遍了安全模式/上次成功配置方式启动,照样进不去。

进入 D610 的系统自检程序,测到硬盘的时候哔哔乱叫,出现错误信息:

Start DSI Short Test
Test Results: Fail
Error Code: 1000-0146 ... ...

心里一凉,难道用了几年的硬盘要挂了?最邪门的是刚刚中午还跟同事说咱这本本买了几年就没出过问题连系统都没重装过,保养的好啊。立马给我颜色看。

上网查这个错误信息,大部分都在说是硬盘坏了,如果是插口什么松了还好,否则就只好保修了。数据能不能保留就看自己的造化了。。

这还了得,上面的东西好久没备份了。要是硬盘废了不知道得费多少功夫才能把数据弄回来。尤其现在正急着上服务器去,没有私钥只能干着急。

把本本整个拆开来看了一遍,没发现哪里线路松动,只好原样装回去。重新启动,自然是状况依旧。

抱着一线生机在网上继续搜索,发现一个达人Teis建议

1. Do you have access to a Windows CD?
If so you can try to boot to the recovery console and run chkdsk /r.
Hopefully you can get it to boot, backup what you need, - then replace the drive.

2. Another solution could bee, - a bit more aggressive,
Reinstall your OS.

3. or - it could just be an error that can’t be fixed. I would get a new disk, install my OS, set the other as slave, and get the needed files.

Windows的安装盘就在手边,于是插上进入安装程序的修复模式,成功登录到 Windows 的命令行模式。看到几个盘下的文件还能dir出来,顿觉有戏。赶紧运行 chkdsk /r ,经过漫长等待之后,磁盘修复结束,Windows 告诉我至少发现了一个问题并进行了修复。

重新启动,俺可爱女儿的桌面又出来了!虚惊一场,赶紧备份数据先~~~

标签 ( 开发/理论 ) :
+ 0 - 0 | §Windows下文件换行符替换

有这么些数据文件,一行一条数据。然后在某些时候需要合并成一整行,数据之间用逗号分隔。

如果在 Linux 下是有N种方法来处理; Windows 下如果使用 EditPlus 或 UltraEdit 等文本编辑器直接进行正则替换也就行了。可碰巧问这个问题的同志从来没听说过这些东西,想在 Windows 下想找个比较便捷的内建工具来做,兜了一圈又一圈,发现还是得靠命令行来“曲线救国”:

for /f "delims=" %i in (src.txt) do @(set /p=%i,<nul) >>des.txt

把src.txt和des.txt分别改成需要处理的源文件和处理之后的目标文件即可。

标签 ( 开发/理论 ) :
+ 0 - 0 | §PHPExcel内存泄漏问题

使用 PHPExcel 来生成 excel 文档是比较消耗内存的,有时候可能会需要通过一个循环来把大数据切分成若干个小的 excel 文档保存来避免内存耗尽。

然而 PHPExcel 存在 circular references 的情况(貌似在最新的 1.6.5 版本中仍然没有去解决这个问题),如果在一次 http 请求过程中反复多次构建 PHPExcel 及 PHPExcel_Writer_Excel5 对象实例来完成多个 excel 文档生成操作的话,所有被构建的对象实例都无法在 http 请求结束之前及时释放,从而造成内存泄漏

解决办法是在 PHPExcel_Worksheet 类中增加方法:

 public function Destroy() {
     foreach($this->_cellCollection as $index => $dummy) {
         $this->_cellCollection[$index] = null;
     }
 }

并在 PHPExcel 类中增加方法:

 public function Destroy() {
     foreach($this->_workSheetCollection as $index => $dummy) {
         $this->_workSheetCollection[$index]->Destroy();
         $this->_workSheetCollection[$index] = null;
     }
 }

然后在需要资源回收的地方显式的调用 PHPExcel::Destroy() 来处理循环引用的问题。注意 __destruct() 方法是在对象被认为可以被释放的时候才会被调用,所以循环引用的处理不能放到 __destruct() 来进行。

标签 ( PHP ) :
+ 0 - 0 | §设置Firefox statusbarpanel背景

在 Firefox 自定义附加组件中扩展状态栏 statusbar 的内容一般通过在附件组件的 XUL 定义文件中添加 statusbarpanel 元素来实现。

每个 statusbarpanel 都可以定义不同的 CSS 样式。比如对于 <statusbarpanel id="zealiTestExt-panel" label="test label"/> ,可以用常规的方式来修改样式:

var pTargetEle = document.getElementById('zealiTestExt-panel');
with(pTargetEle.style){
    fontWeight = 'bold';
    color = '#f00';
}

但如果想修改 statusbarpanel 的背景,直接这样写你会发现没有起任何效果:

... backgroundColor = '#0f0';

原因是 Firefox 对状态栏的元素应用了基于操作系统的样式,或者当前使用的主题样式定义覆盖了用户自定义组件的样式。解决方法是加入 mozilla 的扩展CSS样式 -moz-appearance 以及 !important 声明:

...
pTargetEle.setAttribute('style','-moz-appearance: none !important; background-image: none !important;background-color: #0f0 !important;');

-moz-appearance 设置为 none 并加上 !important 强制 Firefox 不对该状态栏区域应用缺省系统样式;同时强制清除当前背景图片的样式并设定新的背景颜色。

标签 ( WebDev ) :
+ 1 - 0 | §wget镜像站点失败一例

w3schools 是我习惯用来做速查手册的一个站点,很全很强大。可就是访问速度实在不敢恭维,经常急着要查某个属性方法的时候它就给你转个不停愣是不出内容。所以想用 wget 来抓一份镜像过来在本地使用:

wget --output-file=mirror.w3shools.log --mirror --relative --level=3 --background --random-wait --no-host-directories --directory-prefix=w3cshool --convert-links --backup-converted --html-extension --tries=99 --timeout=60 --no-cache --no-cookies

结果发现除了首页之外,其他页面抓到的都是不完整的内容。用 wget 抓单个子页面

wget "http://www.w3schools.com/xml/default.asp"

得到的也是不完整的内容,到<body>就结束了。但如果改用 curl 来抓就是正常的完整内容。百思不得其解。

没办法只好用 wget -d 把原始的 http request header 打出来跟 curl 的比较,去除所有多余的 header 之后发现居然是 User-Agent 在作怪。用 telnet 来测试:

[root@zeal-web w3shools]# telnet www.w3schools.com 80
Trying 216.128.29.26...
Connected to www.w3schools.com (216.128.29.26).
Escape character is '^]'.
HEAD /xml/default.asp HTTP/1.0
User-Agent: Wget/1.10.2
Host: www.w3schools.com

HTTP/1.1 200 OK
Connection: close
Date: Wed, 28 Jan 2009 10:02:47 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Content-Length: 1603
Content-Type: text/html
... ...
Connection closed by foreign host.


[root@zeal-web w3shools]# telnet www.w3schools.com 80
Trying 216.128.29.26...
Connected to www.w3schools.com (216.128.29.26).
Escape character is '^]'.
HEAD /xml/default.asp HTTP/1.0
User-Agent: hELLLO WORLD
Host: www.w3schools.com

HTTP/1.1 200 OK
Connection: close
Date: Sun, 01 Feb 2009 01:10:32 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Content-Length: 27050
Content-Type: text/html
... ...
Connection closed by foreign host.

只要 User-Agent 头信息包含了 wget 字样返回的 Content-Length 就有问题了。貌似 w3schools 对 User-Agent 做了限制。给 wget 加上 --user-agent="Mozilla/5.0 anything else..." 就行了。

标签 ( 网络 ) :
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号