最近打算换主IDE,主要原因是现在用的Dreamweaver太慢太占资源,特别是打开大文件的时候。而代替者就是EditPlus。下面简单记录一下如何把EditPlus配置成一个编程IDE。
首选项
无论是什么软件,一般都要先改全局设置,也就是首选项。
常规
- 还原最近文件的光标/标记/编码方式:这个一定要勾上,否则就不能保存代码折叠。
- 使用XHTML标签:标准化网页。
- 自动关闭HTML标签:勾上这个以后,输入“<”后就会自动补全“>”,光标在两个字符之间。
最近打算换主IDE,主要原因是现在用的Dreamweaver太慢太占资源,特别是打开大文件的时候。而代替者就是EditPlus。下面简单记录一下如何把EditPlus配置成一个编程IDE。
无论是什么软件,一般都要先改全局设置,也就是首选项。
自从有了FastCGI,IIS支持PHP变得非常简单。
先到官网下载PHP 5.6,可以发现有4个版本:
官网已经注明,x64版本是实验性质的,所以还是用x86版吧。至于Thead Safe(线程安全)/Non Thead Safe(非线程安全),官网并没有说明各自用途何在。Google了一番以后,我找到了答案:FastCGI是单线程执行的,因而不需要线程安全版本,去掉线程安全的防护后可以提高执行效率;而ISAPI方式则是多线程模式,所以需要采用线程安全版本。综上所述,我们应下载 VC11 x86 Non Thread Safe 这个版本。
注意,这四个版本都是通过Visual Studio 2012编译器编译的,所以要先安装Visual C++ Redistributable for Visual Studio 2012,否则无法运行。此外,由于我们选用的是x86的php,所以Visual C++ Redistributable for Visual Studio 2012也要对应地安装x86版,千万不要因为系统是64位的就装了x64版。
上周一,我从广州新白云机场出发,开始了北京之旅。这次去北京的出差的主要任务是给那边的同事培训Javascript。
这是我第一次坐飞机。飞机启动后,先是滑行到跑道的起点处,接着高速前进,一会儿就飞起来了。起飞后,飞机逐渐攀升到云层之上,才进入平稳行驶阶段。
这时候正值北京的秋天,昼夜温差较大。白天温度高,有20多度,但是清晨和晚上就只有10多度,深夜的时候估计在10度以下了。一般我是早上穿着3件衣服出门,回到公司就脱了两件,晚上离开公司前再穿回去。干燥也是北京的气候特征,我去了10天就没下过一次雨,北京的很多同事也都天天盼着下雨。
此外,北京的环境还是不大好。我的笔记本用一天后,屏幕上就铺满了灰尘。一旦刮起大风,更是灰尘满天飞。
前几天公司有一个页面在IE下一打开就弹出这样的错误:
Stack overflow at line: 0
一般来说,这是Javascript出现循环调用时报的错。由于页面上的代码比较多,无法一下子判断出是哪里的问题,我只好一段一段地删。然而,即使我把所有的<script>标签都删了,这个错误仍然存在。我又怀疑这是嵌入的外部文件导致的问题,于是又把所有的<iframe>标签给删了,但问题依旧。
难道HTML也会导致循环调用吗?其实我算漏了一个地方,就是HTML元素的事件,可以通过标签的“onEventName”属性指定,比如“onclick”、“onmouseover”等。这下终于让我找到了线索:页面上的一张图片设置了“onerror”事件。代码大概如下:
<img src="a.jpg" onerror="this.src='b.jpg'" />
onerror事件用得比较少,但它本身并不会造成什么问题。然而,这里的“a.jpg”和“b.jpg”都是不可访问的。访问“a.jpg”的时候出错触发了onerror事件,把图片的地址设为“b.jpg”,问题就在于“b.jpg”也不可访问,又触发了onerror事件,再次设为“b.jpg”,这自然也是不可访问,继续触发onerror事件,如此往复。
今天在cnBeta上看到一则消息说Sony软驱停产了,想起以往用软驱和软盘的日子,真是感慨万分。
曾几何时,3.5寸软盘是最常用的移动存储介质。虽然它的容量只有1.44M,但是在那个年代,硬盘也就几G,作为移动存储介质的软盘,容量也不算小了。它的价格也不高,即使文件比较多,多买几张就可以装下。我上初中的时候家里还不能上网,偶尔到亲戚家下载资料,也就靠着几张软盘把资料拷回家。那时用的是56K Modem的拨号上网,实际速度也就5kb/s左右,1个小时也下载不了多少东西,所以用软盘可以装得完。此外,一些软件也使用软盘作为存储介质,比如高中时候买的一套瑞星2003版,是必须插入附带的软盘才能安装的。
随着硬件技术的进步,软盘容量小、传输慢的缺点已经越来越突出。到高中的时候,我基本上没有用软盘了,取而代之的是光盘(CDR、CDRW)和换下来的一个3.2G的台式机硬盘(当作移动硬盘用,接线的时候要拆机箱)。后来,大容量硬盘、光盘、U盘的面世终于把软盘赶上了绝路。从那时起,电脑城的装机配件单里面就没有软驱这一项了。
上大学以后,我终于把所有软盘丢了,新装的电脑也没有配软驱。瑞星也早已升级,不需要软盘了。从此,软驱和软盘彻底退出了我的生活。
JScript下有一个Enumerator对象可以遍历集合。根据它的文档写了以下程序,可以遍历整个Request.QueryString集合:
var params = new Enumerator(Request.QueryString);
while (!params.atEnd()) {
Response.Write(params.item() + ":" + Request.QueryString(params.item()) + "<br />");
params.moveNext();
}
美中不足的是,Request对象本身不是集合,所以不能对Request对象进行遍历,下面这行代码会报错:
var params = new Enumerator(Request);
LiveScript是JavaScript语言的前身。自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原有的LiveScript重新进行设计,并改名为JavaScript。
JavaScript是一种广泛用于前端开发的脚本语言,前身是LiveScript。它已经被Netscape公司提交给ECMA制定为标准,称之为ECMAScript,标准编号ECMA-262。目前最新版为ECMA-262 3rd Edition。
ECMAScript是由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言核心。所谓核心,意思是它并不作为一种独立的语言出现,而是为不同种类的宿主环境提供脚本语言的核心功能。JavaScript、JScript、ActionScript等都基于ECMAScript,都是ECMAScript的扩展。
JSON是Javascript中常用的数据格式,然而,在.NET 2.0中没有内置序列化JSON的类,原因估计是当时Ajax尚未兴起。后来就有人写了一个Json.NET类库。.NET 3.5新增了一个把对象序列化为JSON字符串的类JavaScriptSerializer。这个类位于System.Web.Script.Serialization名字空间中(非Web项目需要添加System.Web.Extensions.dll引用),其使用方法也是非常简单的:
// 分类
public class Category
{
public int CategoryId { get; set; } // 分类编号
public string CategoryName { get; set; } // 分类名
}
Category testCategory = new Category()
{
CategoryId = 1,
CategoryName = "Test"
};
JavaScriptSerializer serializer = new JavaScriptSerializer();
Console.Write(serializer.Serialize(testCategory)); // 调用Serialize方法进行序列化
7月中旬以来就有不少Windows 7已经RTM的消息,但是直到月底才确定了16385是最后RTM版本。后来就有一个号称是联想的OEM版本连盘带key泄露。我到远景论坛进一步确认此事,发现部分网友已经安装了这个版本,并称只要是联想的品牌机而且BIOS中的SLIC是2.1版本就可以自动激活。
这个消息估计刺激了不少用联想PC的用户,包括我。但是原生SLIC 2.1版本的机器还不多,于是各论坛都在盛传刷SLIC的方法。我按照其中一个方法刷了自己的F41笔记本,并成功安装激活Windows 7。用了差不多一个星期了,下面分享一下安装使用的感受。
其实试用RC版的时候就有这个感受,Windows 7的安装速度还是挺快的,甚至比XP和2003都快。安装的时候要注意,系统分区一定要用Windows 7的NTFS格式(最好在选择系统盘的时候格式化一次),否则是不允许安装的,其他分区则无大碍。如果是普通用户,系统分区15G左右就够了;如果是像我这样做开发的,最好预留25G。
装好以后开启了IIS的相关服务,并关闭了游戏和侧边栏。
刚刚在cnbeta上看到一则消息,内容是趣味招聘广告,据说是微软英国的设计图。
大概意思是“诚邀可解决此问题者,请立即拨打以下号码:”,至于号码是什么就要自己算了。这是很简单的运算,通过一段C#程序可以得出结果:
int x = 24, y = 30;
Console.Write("01." + (y * y - x).ToString() + "." + ((y * y - 10 * 10) * 10).ToString());
结果是"01.876.8000"。