用上了Opera Mini 5 Beta 2

前两天心血来潮又去mini.opera.com逛了圈,无意中发现Beta 2已经发布,带着期待下载并安装,现在说下体验。

在界面上,这次更新更换了里面的几个图标,增加了一个Download(我下的英文版),不过还是会用自带的浏览器打开jad文件,多不爽的。另外修复了搜索中文乱码的问题,不过…不过…加载页面时流量信息没了,这个让人很不习惯。开始以为是英文版的原因,没想到换了中文版也是如此。

操作方面,貌似对JS效果进一步进行了优化,感觉不错,按下#号或*号后,会像4.2那样弹出提示了,不用老是到帮助里找。

还有一个让人有些那啥的是,上一个版本中,radio和check(就是表单里圆的和方的那种可以勾选的东西)就那么丑,这次还是那么丑。另外,长按退格键仍然不能连续清除文本,还得按一下退一格,悲痛。

还是希望Opera Mini能越来越好,不过原来一直看不起UCWEB,现在有点改变对它的看法了,都加油!

第一次写雪花特效

第一次写雪花特效,没想到还是在手机上写的…之前把雪花数量设置成了50,那个卡啊…不过调整后在手机上看效果也将就。雪花比较简陋,是2×2的白色小方框,不过以后可以在CSS里改动。

附Demo(建议用S60自带浏览器看):
http://www.vilic.info/demo/s60/snow
参数是可以改动的,现在觉得这也是写程序的好习惯,保持!

Google收录15页

看来已经通过了Google的初期审查,收录页面数量一下子从2上升到了15(我人工数的),小小的高兴下。以后要加油写,然后Google你就加油收录!

不过…为什么百度你就是不甩我呐?都好多天了,一个页面都没有…回想原来的V-NS,貌似却是百度先甩我…或者是Google?算了,记不清了…

工信部又打算手机实名了

“扫黄”终于扫到个人了,这下我也终于算看清问题的始末了。

试问有多少人通过有限且昂贵的WAP方式浏览成人网站?为何CN又如此直接的将矛头指向WAP?知直到看到这一则新闻,我才恍然大悟,如此一箭双雕的计划从头到尾是那么完美。

首先,CN又一次“规范”了国内网站,基本实现了国内能够访问的网站实名化;现在,又“顺其自然”地准备手机实名。如此合情合理,似乎快要毫无破绽地完成对所有人的言论控制。如此,“言论自由”之后的那一句,变得如此沉重——“文责自负”。

让我们静下心来想想,真的会就“扫黄”而改变手机实名或非实名吗?显然不会!真的会就“扫黄”而建立庞大的互联网实名体制吗?显然不会!

所谓的“扫黄”,只是一个蒙骗世人的借口!

愿明天能美好。

JS中函数的传递(二)匿名函数

在JS函数传递的过程中,还有一种很重要的类型,便是匿名函数。当然,匿名函数的用途远不只函数传递,但本文仅对它在函数传递中的作用做一个简单的说明。

以下两个代码在效果上是基本等价的:

/*作者:Vilic Vane 博客:www.vilic.info*/
function abc(func)
{
func();
}

//代码1
function test()
{
alert(“Hello!”);
}
abc(test);

//代码2
abc(function(){alert(“Hello!”);});

可以看出,有时候通过书写匿名函数,可以节省代码量,但在有些时候,则会降低程序的可读性。关于匿名函数还有一个常用的技巧,即通过匿名函数(当然如果你愿意,或者函数较为复杂时,可以像上面的代码1那样单独书写一个函数)传递参数。那么,什么时候会用到呢?拿setTimeout来说,setTimeout有两个主要参数,一个是表达式或函数,一个是时间。通常,我们更多使用的是函数而不是表达式。但因为传递的函数是一个变量,所以,我们无法为它简单的加上参数,这个时候,JS闭包的优势就体现出来了。

setTimeout(function(){abc(/*参数在这里*/);}, 500);

顺便说到闭包,就提一下,看到很多地方说避免用闭包,其实我觉得闭包很有用,可以大大节省参数的传递成本。但前提是,必须有声明变量的好习惯。记得有一次发现自己Prever Start的图标排列的间隔总是和最后一个实例一样(当然一开始没发现得那么具体),才意识到是自己忘记了声明一个变量,自然,它也便成了全局变量了。

JS中函数的传递(一)函数回调(Callback)

常常看到有初学JS的人问,JS中函数可否当做参数传递,答案是肯定的,而对于这样一个参数,应用最多的便是函数的回调。

或许很多做前端的都很少接触回调这个东西,因为很多简单的JS交互是不需要它的,但是,在模块化的JS代码中,它却是非常实用的。

举一个简单的例子:

/*作者:Vilic Vane 博客:www.vilic.info*/
function done(/*可以带参数*/)
{
alert(“Finished!”);
}

function task(afterFinishing)
{
//要处理的东西
afterFinishing(/*可以带参数*/);
}

task(done);

这段代码表达的意思便是,我要做一个任务(task),并且在任务完成后通知另一个函数(这里是done)。

当然,在这段简单的代码中,显然这样做是多此一举,但在复杂、追求可重用性的代码中,它却是有效且容易理解的。到此打住,下一篇将谈下另一种常用的函数传递,匿名函数的传递。

Office Live 申请

昨天听一朋友说Office Live提供免费空间,据说还支持ASP.NET,今天激动之余,赶紧注册了一个,不过没有CN的份,于是冒充了下美国(注意改浏览器语言)加利福尼亚,呵呵,要到网上搜下对应的邮编。填好,开通!(之前我的那个邮箱没开Live账号,所以可以填那个,不知道如果之前填了其他的还能不能使用)

进去之后,要打开一些设置,可以参见帮助,然后,下载一个东西(如果不是Windows Vista或者安装了Office 2007的话)并安装,用IE登陆,在Website面板创建文件夹,然后就可以通过Windows Explorer访问啦~

进去之后,看到默认页面时default.aspx,就真的以为支持ASP.NET了,但梦想最终还是破灭了,上传了ASP.NET文件,结果提示“Code blocks are not allowed in this file

悲痛!

不过,毕竟是微软,信誉是有保障的,拿来放JavaScript的Demo也不错。呵呵。

附地址:

www.officelive.com

office live

记今日在易名进行身份认证

今天带着叫同学用手机帮忙照的身份证照片去认证,郁闷死了。过程如下。

我先是把东西填好了,然后发现要手机验证码,于是就点了,结果它还不认帐,说短信不足,叫我充值,于是花了很大力气找到了在哪里充值后,用了1元的预付款买了10条短信,真便宜。

然后抱着激动的心情提交了我可以对人心理造成永久性伤害的身份证照片,终于通过了验证。可是改模板的时候又要签一个协议,点了同意,还要打印下来签字再传照片上去,纯粹折腾人啊。

于是,今天也就基本上结束了,明后天去把文件打印下来签字…

珍爱生命!