全部文章 | 第6页

Dreamweaver “在onLoad运行_onOpen.htm时……”问题

问题描述:

Dreamweaver 打开时出现如下错误:

在onLoad运行_onOpen.htm时,发生了以下JavaScript错误:
在文件“_onOpen”中:
onOpen is not defined

解决方法:

重新安装DW无法解决该问题,经一番Google,得解决方案如下:

关闭Dreamweaver并删除下面相应的个人配置文件夹中的缓存文件WinFileCache-***.dat或者MacFileCache-***.dat等

个人配置文件夹的位置:

根据操作系统和Dreamweaver的版本,该位置有所不同

Dreamweaver CS4:

  • Vista: C:\Users\<username>\AppData\Roaming\Adobe\Dreamweaver CS4\<language>\Configuration
  • Windows XP: C:\Documents and Settings\<username>\Application Data\Adobe\Dreamweaver CS4\<language>\Configuration
  • Mac OS X: Macintosh HD:<username>:Library:Application Support:Adobe:Dreamweaver CS4:<language>:Configuration

上述各路径中的 <username> 用户在该计算机上的账户名, <language> 指你的操作系统的语言, 该语言通常以两对字母以下划线连接的形式表示, 比如: en_US (英语), es_ES (西班牙语), fr_FR (法语), 中文的语言代码为 zh_CN , 下同 readmore

清理冗余文件的批处理脚本

 在一个网站项目在本地做好经过测试准备上传到服务器时经常需要删除一些模版缓存文件和DW生成的_notes文件夹等,于是写了如下脚本进行批量处理,tpl_c为Smarty模版缓存目录,保存为clear.bat即可

@echo off
echo 正在清理 Smarty 缓存,请稍候...
for /D /R %%F in (tpl_c) do if exist %%F del /f /s /q %%F\*.*
echo Smarty 缓存清理完毕!
echo.
echo 正在清理 Dreamweaver 设计备注,请稍候...
for /D /R %%F in (_notes) do if exist %%F rmdir /s /q %%F
echo Dreamweaver 设计备注清理完毕!
echo.
echo 正在清理 Windows 图片缩略图缓存,请稍候...
rem 缩略图缓存一般具有隐藏和系统属性,先去除这些属性后再删除
for /R %%F in (Thumbs.db) do if exist %%F attrib -S -H %%F && del /f /q %%F
echo Windows 图片缩略图缓存清理完毕!

清除 tpl_c 目录下的所有文件,删除整个 _notes 目录以及删除所有 Windows 自动生成的图片缩略图缓存,请根据需要进行修改。

一个IE7的页面字符集meta标签设置问题

以UTF-8(无BOM格式编码)保存了一个网页,文档类型声明为XHTML1.1,并且添加了Content-Type的meta标签:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

用IE7打开发现空白一片,右键查看了一下原来是字符集编码被设置成默认的GB2312,改成UTF-8就正常了,但是重新打开又会变成空白,用FF3打开显示正常,百思不得其解,后来经过反复调整,发现把字符集设置的meta标签放在title标签前面就显示正常,放在title标签后面就显示空白,秉承了IE一贯的怪异风格

未在其他版本IE中进行测试

逻辑运算杂谈

逻辑运算置位速记口诀:

与0得0,与1不变;(0&0=0,1&0=0,0&1=0,1&1=1)
注:按位与用于置0查1

或1得1,或0不变;(0|1=1,1|1=1;0|0=0,1|0=1)
注:按位或用于置1查0

异1得反,异0不变。(0^1=1,1^1=0;0^0=0,1^0=1)
注:按位异或用于置反

两异不变,非得全反。(0^0^0=0,0^1^1=0,1^0^0=1,1^1^1=1;~0=1,~1=0)

短路求值:

a AND b -> a成立则执行b,相当于if(a) b;(若a则b)
a OR b -> a不成立则执行b,相当于if(!a) b;(若a则不b)

使用 GetText 实现多国语言的基本方法

假定你已经安装了GetText库,首先写一个“Hello,GetText”的C程序

#include <stdio.h>

int main(int argc, char **argv)
{
	printf("Hello,GetText!\n");
	return 0;
}

我知道你肯定知道上面的代码会输出什么。

接下来开始使用gettext库,首先要加上要用到的locale.h和libintl.h两个头文件,#define _()是为了方便使用,如果不嫌打字麻烦并且看着不碍你的眼,那么你可以直接使用gettext()。然后在主函数的开始设置locale(设置为””会使用环境设置,关于setlocale的更多信息可以参见:http://www.cplusplus.com/reference/clibrary/clocale/setlocale.html)并绑定domain,修改以后的程序是下面这个样子:

#include <stdio.h>
#include <locale.h>
#include <libintl.h>

#define _(STRING) gettext(STRING)
#define PACKAGE "HelloGetText"

int main(int argc, char **argv)
{
	setlocale(LC_ALL, "");
	bindtextdomain(PACKAGE, "locale");
	textdomain(PACKAGE);

	printf(_("Hello,GetText!n"));
	return 0;
}

然后可以编译这个程序了,当然,编译前你需要将libintl.h和对应静态库文件所在的位置加入Search Directories,以便于编译和链接,而且你要把libintl.lib(GTK for Windows中是libintl.dll.a)加到链接文件中去。

编译链接成功后运行结果,不出意外的话应该显示:

Hello,GetText!

接下来肯定是要做国际化/本地化的工作了,首先我们要生成一个pot文件:

xgettext main.c -k_ -oHelloGetText.pot

使用选项-k_表示只搜索_关键字,如果你使用的是-a选项,那么任何没有使用_()包围的字符串也会被输出到pot中,更多选项参见 xgettext –help

然后针对某一语言生成po文件,以中文为例:

msginit -lzh_CN -iHelloGetText.pot

这条命令会生成zh_CN.po文件,用你喜欢的文本编辑器编辑这个文件,要翻译的字符串是msgid下面对应的msgstr,比如:

#: main.c:14
#, c-format
msgid "Hello,GetText!n"
msgstr "你好,GetText!n"

当然,用PoEdit之类工具翻译会更方便,翻译完成之后我们需要将其编译为mo文件

msgfmt zh_CN.po -o zh_CN.mo

然后把mo文件复制到相应的LC_MESSAGE目录中,在复制前该目录需要存在,Unix-like的OS一般在/usr/share/locale/zh_CN/LC_MESSAGES/或者相对目录的locale/zh_CN/LC_MESSAGES/下,命令如下(cp的-f选项覆盖现有文件):

cp -f zh_CN.mo /usr/share/locale/zh_CN/LC_MESSAGES/HelloGetText.mo

Windows中一般将目录设置为程序运行时当前工作目录相对的locale\zh_CN\LC_MESSAGES,命令如下(copy的/y选项不提示覆盖现有文件):

copy /y zh_CN.mo locale\zh_CN\LC_MESSAGES\HelloGetText.mo

(注:这里的locale即bindtextdomain中设置的locale)

也可以在编译时就直接编译到对应目录,为防止目录不存在,先尝试创建目录,命令如下:

mkdir locale\zh_CN\LC_MESSAGES
msgfmt zh_CN.po -o locale\zh_CN\LC_MESSAGES\HelloGetText.mo

然后再运行HelloGetText程序,如果你是中文的系统,便会显示“你好,GetText!”了。