显示标签为“Windows”的博文。显示所有博文
显示标签为“Windows”的博文。显示所有博文

2008年10月26日星期日

Windows Server 2008未激活导致黑屏

Windows Server 2008未激活导致黑屏,地位与盗版软件平等
 
这本是Windows Server 2008试用版,未激活,昨天是到期后之最后一天,频繁提示激活未遂,今日凌晨准备关机时发现已经黑屏。
 
网上找了一下关于激活的帖子,有说临近到期时运行命令:slmgr.vbs -rearm 即可,可以故计重施三次。 
虽说黑屏也算的上酷的,但传言纯黑色于眼于显示器都不利,值得庆幸的是还可以改回来,没有特别关心黑屏这件事,不知道会怎么个黑的有规律法。
想要自-由,考虑换Linux?但是开发能不顾Windows及其IE吗,这就像想离开QQ和用友财智家庭理财一样,已经深陷封闭性其中时,要投入到自-由的怀抱,还是要付出很大的代价的。

期待自-由软件颠-覆封闭专有软件的政-权。

2007年8月28日星期二

文件系统标签结构随想

随着标签的广泛/普遍应用,标签和实用价值越来越得到体现。
 
标签结构不同于目录结构,它没有明确的层次结构,并且没有唯一性问题(文件可以帖上多个不同标签)。
 
使用操作系统文件系统目录结构,可以带来许多好处:比如音乐子目录可以这样明确的分类:子目录华人男歌手、华人女歌手、欧美歌手...等分类,孙子目录下可以按照歌手名分目录,曾孙目录下可以按专辑分目录。
 
但是也因此有许多功能受到限制。当遇到相对模糊的情况时,则会比较难以取舍。一来目录的层次结构会根据用户的喜好而有所不同;二来,文件可以存放在一个语义的目录结构下,也许也可以存放在另一个语义的目录下。
 
出现这种情况时,可以通过快捷方式来模拟,或者使用辅助软件(播放器的播放列表,图片管理软件如Picasa的相册)。
 
 
如果在文件级别实现更为明确的标签功能,则可以方便管理所有单个文件或一组文件(如目录)的标签管理,再加上类似Gmail支持基于标签,目录(Gmail没有目录)和关键字(如果支持内容关键字则更完美)的搜索,wa..
 
 
不过如果提供管理软件外部支持或是模拟实现,也蛮是有用。比如我现在最需要的就是一款文档管理软件,最好他能支持"主流"文档类型(pdf, pdg, chm, htm, html, txt,),在统一界面下查阅文档,提供文档灵活分类模式(系统目录模式(模拟书架),标签模式),提供文档索引搜索能力。
 
除了搜索相关,其他功能类似播放软件(统一界面播放,统一操作)和图片管理软件(统一界面查看,编辑)。
 
但是问题是,如果文件被移动或删除或更名,播放列表和相册等都必须监听或扫描文件/目录。也许系统级提供类似实现,将标签存储在文件属性或其他属于文件本身的资源在,才是最为合理的设计。

作为非系统程序员,可以考虑实现这样的文档管理软件:1.尽量支持多种文档格式;2.用户自定义监听目录;3.文档索引,提供快捷的搜索(本地搜索的索引应该进行全面的索引,例如Javascript程序员可能需要搜索js源代码,而现在的Google本地搜索却忽略这些文本内容。)。
 
 
以上所有皆随想。

2007年6月21日星期四

(regedit) Windows文件关联

Windows下将特定应用程序关联到特定文件类型,使该应用程序成为打开该文件类型的默认应用程序。
 
在桌面环境下,有多种方式实现这一点。
1. 右键文件->属性->打开方式->更改,选择或浏览应用程序即可。
2. 右键文件->打开方式->从列表中选择或者"选择程序(C)",这种方式操作与上面的方式类似。
 
下面介绍从注册表中完成关联:
运行 regedit 进入注册表编辑器,所有文件关联项目都在[KEY_CLASSES_ROOT]节点下,注意两点:
1. 所有名称为豆点号(.)开头的项都是欲关联文件的后缀(如:.ht)。这一节点(项)的默认值为另一个(非豆点开头的)节点名(如:HTFile)。
2. 这另一个节点(即HTFile)下建子项(shell/open/command 或 shell/edit/command),默认值为指定应用程序路径和名称,以及参数等。
 
这里给一个完整的简单示例:
例如要将后缀为.ht的文件关联到记事本应用程序。
首先在KEY_CLASSES_ROOT下创建(如果已有则展开)名称为.ht的项,此项会自动创建一个"默认"字符串(REG_SZ)值,修改其值为HTFile。
然后同样在KEY_CLASSES_ROOT下创建(已有则展开)HTFile/shell/open/command项,command项默认(字符串)值改为("C:\WINDOWS\notepad.exe" "%1")。其中第一个字符串为关联的应用程序路径,第二个字符串"%1"即指定文件的路径,还可以在后面带上%*,表示任意值,一般用来指定参数(斜体部分为闲耘猜测,暂未证实)。
完成。

2007年6月11日星期一

(java) Overriding, Overloading

看《Java编程思想》第2版第297页为所有返回类型各写一个类/接口,突然想到能不能仅仅写一个类/接口,通过多态特性,让它自动返回相应的类型呢,尝试失败。

package org.xianyun.j2se.override;
public class Father {
    public String fun(){
        return "string";
    }
}

package org.xianyun.j2se.override;
public class Children extends Father {
    public void fun(){
        // I : 父类返回String,子类返回void。Eclipse报错:返回类型与 Father.fun() 不兼容。
    }
    public void fun(String str){
        // II : 这里是重写(overloading)。
    }
    public String fun(){         // III : Eclipse报错:存在重复的方法 fun()
return "";
    }
}
从 I 处可以看出,系统判断覆写(Overriding)的凭据是方法名和传入参数。如果是覆写,则判断返回参数。
II 处,正常,属于重写(Overloading),此时Children类多了void fun(String)方法。
III 处证明,判断是同一个方法的依据是方法名和传入参数,不参照返回参数。
注:代码在sun jdk下尝试结果相同。

借此再温习一下覆写和重写:
Overriding (覆写)
方法与父类方法同名同参同返回。,即同方法名,同传入参数,同返回参数类型。

Overloading (重载)
方法与父类方法同名,不同传入参数(个数或/和类型),同/不同返回参数类型。





另,在网络技术交流群小学一招,使桌面上图标文本的默认阴影消失:
我的电脑 -> 属性 -> 高级 -> 性能 -> 设置 选中"在桌面上为图标标签使用阴影"。

2007年6月10日星期日

脚本的力量 - 碎片整理与磁盘格式转换

利用命令shell的力量。Use the Power of Command Shells.
学习一种文本操纵语言。Learn a Text Manipulation Language.
不要使用手工流程。Don't Use Manual Procedures.
from《程序员修炼之道》The Pragmatic Programmer
 
 
Windows磁盘碎片整理批处理,传说是WinXP,Win2K,Win2003等NT系统才支持。
将下面代码保存为disk.bat,双击运行即可。
defrag.exe c: -f -v >"d:\defrag_report_c.txt"
defrag.exe d: -f -v >"d:\defrag_report_d.txt"
...
其中 c:,d:等表示你要整理的驱动盘符,详细说明可以Google搜索关键字" windows 碎片整理 命令行",并且在我的Google搜索历史中2007年6月6日的标星记录里都是不错的链接。
 
将Windows磁盘从FAT32转换成NTFS格式,不会格式化磁盘,保留数据(不过最保险的还是备份先)。由于输入了如下命令后,需要立即手动输入对应磁盘卷标名(即你为磁盘驱动器命的名字,打开"我的电脑"即可看到)才会执行转换,所以几乎没有办法写成批处理,不过还好转换工作不是需要特别长的时间,几十秒到几分钟吧。
CONVERT D: /FS:NTFS
关于Google搜索同上,关键字"fat32 转 ntfs 命令"。

2007年6月1日星期五

Resin:JDK版本问题

最初将Resin注册为Windows服务时,JDK版本是1.4.2,一直运行正常。

后来装了JavaEE SDK 1.5,发现Resin运行JSP程序时,总是出现"com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"错误信息,甚至resin-doc(.xtp)都无法正常编译运行。上网一查,了解到是版本问题。

我遇到的问题与Resin无法启动类似,但是我用了不同的方法解决。

很简单,不需要任何重装(当然,注册Resin为Windows服务例外)。

1. 在path中设置好需要的JDK版本。
2. 进入命令行模式,cd到Resin安装目录。
3. 运行如下命令,将Resin Web Server从Windows服务中去除。
> httpd -remove
如果运行正常,继续。
(注:不同的resin版本,httpd可运行程序可能会在不同的子目录。我用的是resin3.0.17 for Windows)
4. 然后运行下面的命令再将Resin注册为Windows服务。
> httpd -install
5. ok。

至于原因,Resin官方网说得很清楚:
If you have moved JDK or Resin manually, you get the error from Resin
because the data Resin once get from the registry and the real location
of the executables doesn't match. Reinstall jdk and, then, reinstall
Resin. That will solve this problem.

事后我有研究了一下注册表,在 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Resin] 中有一个名为"ImagePath"的"可扩充字符串值",值中有一个参数"-java_home "D:\jdk1.5.0""就是设置Resin使用的JDK路径的。( 注意可扩充字符串值导出的并不是字符串,而是十六进制数据,所以导入注册表时需要注意。)

2007年5月22日星期二

Windows服务控制

前文"Resin服务重新启动控制"中用的的重启resin服务的方法,有一个问题就是:当系统本身有类似resin.exe等以resin命名的可执行文件时,系统环境变量设置的不同,会造成不同的影响。

例如MySQL就有这个问题:在%MySQL_HOME%\bin目录中,本身就有mysql.exe文件, 在安装MySQL时,可以选择是否将MySQL安装目录放进系统环境变量中,但是推荐放进去,因为我们经常需要执行MySql本身的mysql.exe,以便于在命令行下操作MySql。

在Windows Server 2003系统命令行下输入
> start /?
可以查看start命令的用法,不带参数时默认启动一个新的命令行窗口。而直接在运行里输入start则提示"Windows找不到文件'start',..."说明Windows Server 2003和其他Win系统不同, 没有start.exe文件,start命令是集成的 (搜索结果也表明如此)。

为了避免命令重复造成的问题,创建启动服务的批处理文件保存为startup.bat,如下:
startup.bat
@echo off
if "%1"=="" goto help

net start %1
goto end

:help
echo [Usage] startup {service_name}
goto end
:end
 

stop.bat
@echo off
if "%1"=="" goto help

net stop %1
goto end

:help
echo [Usage] stop {service_name}
goto end

:end


restart.bat
 
@echo off
if "%1"=="" goto help

net stop %1
net start %1
goto end

:help
echo [Usage] restart {service_name}
goto end

:end

把如上三个文件所在目录添加到系统变量Path中。现在我们可以使用上面的通用批处理进行服务的启动,停止,重启操作了。
> startup resin // 启动Resin Web Server.
> stop resin // 停止Resin Web Server.
> restart mysql // 重启MySQL服务,注:安装MySql时可以设置服务名。