淘宝搜索框研究报告

前端开发  |  14年前

在输入框里面预设一段提示文字,当焦点在输入框的时候清空这段文字,这在目前来说已经不是什么新鲜事了。淘宝的搜索框就用到了这样一种设计:

淘宝搜索框

这种设计一般是用javascript监控了输入框的focus和blur事件:

<input type="text" id="q" value="请输入关键字" />
<script type="text/javascript">//<![CDATA[
$("#q").onfocus = function() {
  if ("请输入关键字" == this.value) {
    this.value = "";
  }
};
$("#q").onblur = function() {
  if ("" == this.value) {
    this.value = "请输入关键字";
  }
};
//]]></script>

这段代码有两个很明显的缺点:

  1. “请输入关键字”这段提示共出现了3次,一旦要改这段文字就得改3个地方,维护显得非常不便
  2. 为了性能优化,我们会把javascript部分放到页面末尾。然而,像门户网站首页这种代码量很大的页面,末尾的javascript很可能会延时1-2秒执行。在这段时间内,即使焦点在输入框内,提示文字也不会消失,用户需要手动删除这段文字再输入内容
1704次阅读,2条评论

使用泛型打造Request工具类

其他开发  |  14年前

在ASP.NET页面中可以使用Request对象获取指定参数的值,例如:

string value = Request["id"];

参数值都是string类型,但是进行处理的时候可能要转换成数字、日期等类型。

string value = Request["id"];
int id = Int32.Parse(value);

实际应用的时候还要考虑异常的情况。

string value = Request["id"];
int id;
Int32.TryParse(value, out id);

如果每个页面都这么写,显得非常麻烦,代码重复也很严重,还是封装成一个工具类吧。

public class ReqHelper
{
	public static string GetString(string paramName) { ... }
	public static int GetInt(string paramName) { ... }
	public static bool GetBool(string paramName) { ... }
	...
}
1362次阅读,1条评论

发现搜搜两个有趣的应用

工作生活  |  14年前

今天在cnbeta的一篇文章《搜搜舞文弄墨上线,会打字就会作诗》中发现了SOSO的一个有趣应用,名为“舞文弄墨”。这个搜索引擎可以方便地搜出藏头诗。

搜索“万剑归宗”

“万剑归宗”藏头诗

顺藤摸瓜,在搜搜实验室又发现了另一个有趣的“名字印象”,输入名字后可以看到该名字的印象分,当然这个分数仅供娱乐,千万别当真,倒是给小孩起名字的时候可以参考参考。

“郭靖”印象分

843次阅读,2条评论

游西湖

工作生活  |  14年前

上周六在杭州参加了D2交流会,由于回程时间是周日下午,所以趁着周日早上有时间就去了逛西湖。

先是打车到了雷峰塔,在外面观摩了一番。

雷峰塔

接着就往西湖的方向走,途中到了一处有很多船的地方,其中最大的是一艘“龙船”。

“龙船”

1032次阅读,1条评论

第四届D2报道

前端开发  |  14年前

本届D2在阿里巴巴一个报告厅内举行,该报告厅内有3个投影屏,确保各个位置的观众都可以看到演示内容。悲剧的是,报告厅内的空调(暖气)坏了,所以室内温度也很低,一天下来膝盖以下都是冷的。

阿里巴巴正门

九点多,会议正式开始,老男致开幕词。同时,前方左侧的小屏幕上也开始直播人间网上的D2讨论。这对我来说是一种很新鲜的讨论方式,好比上面在开大会,下面在开小会,但是小会并没有影响会进行,反而使大会的气氛更加活跃。

人间网D2讨论

1099次阅读,7条评论

parseInt的陷阱

前端开发  |  14年前
var a = parseInt("09"), b = Number("09");

很多人会认为a和b的值都是数字9,但实际上不是。

parseInt的主要作用是把字符串转换为整数,或者把小数转换为整数。一般情况下,我们只用到它的第一个参数。但实际上,它有两个参数:

parseInt(string, radix)

parseInt会根据radix指定的进制进行转换,比如:

alert(parseInt("10", 2)); // outputs '2'

在没有指定radix或者radix为0的情况下,parseInt会按十进制进行转换。然而,这在某些情况下有点特殊:

  • 如果string的值以“0x”开头,parseInt会按十六进制进行转换;
  • 如果string的值以“0”开头,parseInt会按八进制进行转换。

说回开头的代码,由于"09"是以“0”开头,所以parseInt会按八进制进行转换,但是“9”不是合法的八进制值(八进制只有0-7八个数字),所以转换结果是0。

要避免这个陷进,可以强制指定radix:

alert(parseInt("09", 10)); // outputs '9'

 

953次阅读,1条评论

事件监听兼容处理

前端开发  |  14年前

在事件监听处理方面,IE提供了attachEventdetachEvent两个接口,而Firefox提供的是addEventListenerremoveEventListener。最简单的兼容性处理就是封装这两套接口:

function addEvent(elem, eventName, handler) {
  if (elem.attachEvent) {
    elem.attachEvent("on" + eventName, handler);
  } else if (elem.addEventListener) {
    elem.addEventListener(eventName, handler, false);
  }
}

function removeEvent(elem, eventName, handler) {
  if (elem.detachEvent) {
    elem.detachEvent("on" + eventName, handler);
  } else if (elem.removeEventListener) {
    elem.removeEventListener(eventName, handler, false);
  }
}
1185次阅读,0条评论

EditPlus配置手记

其他开发  |  14年前

最近打算换主IDE,主要原因是现在用的Dreamweaver太慢太占资源,特别是打开大文件的时候。而代替者就是EditPlus。下面简单记录一下如何把EditPlus配置成一个编程IDE。

首选项

无论是什么软件,一般都要先改全局设置,也就是首选项。

常规

常规

  • 还原最近文件的光标/标记/编码方式:这个一定要勾上,否则就不能保存代码折叠
  • 使用XHTML标签:标准化网页。
  • 自动关闭HTML标签:勾上这个以后,输入“<”后就会自动补全“>”,光标在两个字符之间。
7533次阅读,7条评论

IIS 7.5 下PHP(FastCGI模式)配置手记

其他开发  |  14年前

自从有了FastCGI,IIS支持PHP变得非常简单。

版本选择

先到官网下载PHP 5.6,可以发现有4个版本:

  • VC11 x86 Non Thread Safe
  • VC11 x86 Thread Safe
  • VC11 x64 Non Thread Safe
  • VC11 x64 Thread Safe

官网已经注明,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版。

5385次阅读,0条评论

北京之旅

工作生活  |  14年前

上周一,我从广州新白云机场出发,开始了北京之旅。这次去北京的出差的主要任务是给那边的同事培训Javascript。

坐飞机

这是我第一次坐飞机。飞机启动后,先是滑行到跑道的起点处,接着高速前进,一会儿就飞起来了。起飞后,飞机逐渐攀升到云层之上,才进入平稳行驶阶段。

气候环境

这时候正值北京的秋天,昼夜温差较大。白天温度高,有20多度,但是清晨和晚上就只有10多度,深夜的时候估计在10度以下了。一般我是早上穿着3件衣服出门,回到公司就脱了两件,晚上离开公司前再穿回去。干燥也是北京的气候特征,我去了10天就没下过一次雨,北京的很多同事也都天天盼着下雨。

此外,北京的环境还是不大好。我的笔记本用一天后,屏幕上就铺满了灰尘。一旦刮起大风,更是灰尘满天飞。

1458次阅读,1条评论