成都这鸟天气,果然没看到日食

早上起来小雨,等了一会,雨停了,发短信给清水河的同学,说那边还在下雨,我心里窃喜啊(原谅我这种卑鄙的心理吧)。

跑到可以见到太阳的窗户边去看,看到了太阳从乌云缝里面露出来了一点。马上回宿舍拿上昨晚找到的三张胶卷底片,叠在一起,上到12楼,电梯因为日食关闭了,其实我觉得电梯没得必要关的嘛,那个影响力应该不至于这么大的。不过我在10楼,还好了,只用爬来两层。

在12楼天台上,透过胶卷底片,看太阳,什么都看不出来,因为太阳没有完全的露出来过,总是在乌云里面穿梭。快9点了,马上就日全食了,很大一块乌云来了,看来是什么都看不见了,只能感受了。

9点11分,感受了两分钟的日全食,在城区,很多路灯,很多楼发出来的光,并不是全暗的,还不如在清水河呢,清水河的同学那个时候打来电话说他们那里是完全黑的,郊区嘛,真好啊。

怨念啊,什么都没看见,等500年后,我再看吧 :)

Jquery和javascript对css的操作中css属性名的区别

如果你使用Jquery,操作CSS很简单,可以使用css(name,value)这个方法,而且name都是原生的CSS属性名,使用起来很方便,配合CSS文档就可以了。

但是如果不是用Jquery的话,改变css的属性的时候就要注意了。因为很多属性(例如:background-image)带有‘-’,而“+”和“-”都是JavaScript语言保留给自己使用的特殊字符,不允许用在函数或变量的名字里,所以在方法或属性里面也不可以这样用(方法和属性其实是关联在某个对象上的函数和变量)。DOM解决这个问题的方法是采用“Camel记号”,也就是骆驼命名法,像background-image这个CSS属性就要写成backgroundImage才可以,否则就要出错。

以下两个代码是等价的,一个使用Jquery,一个没使用Jquery,直接使用js。

$(“#test”).css(‘background-image’,’url(“images/test.jpg”)’);

var d=document.getElementById(“test”);
d.style.backgroundImage=’url(“images/test.jpg”)’;

使用Jquery确实是大大的方便了开发,很多东西变的是这么的自然。

JavaScript做DOM操作的时候一定要注意操作的DOM是否已经加载

大家都知道要想操作DOM,要等DOM加载完后才可以操作,我们一般会写window.onload=function(){};

如果使用JQuery,还可以使用

$(function(){
//code
});

这些是已经很熟悉的了,但是如果是个动态更新的DOM呢?这个时候要注意了,绑定事件和操作DOM都要等到这点DOM加载到整个DOM树中。

比如我今晚做的一个弹出层,背景变暗,弹出的层是通过XHR获得的,而且这个层里面我还需要绑定事件,还需要操作DOM,开始我犯傻的就直接和其他时间绑定写在一起了,试了一下没有反应,但是firebug也没报错。监视了一下,发现时间没绑定上。于是恍然大悟,因为我绑定的时候,这点DOM还没加载过来,当然就不去起作用了。

那应该把这个绑定时间写在上面位置呢?因为我用的是XHR获得那个层的内容,并且使用了jQuery,用$.ajax( success: function(){})来判断是否XHR成功,然后在这个function里面写入把获取到的内容加入DOM树的语句,紧接着就可以写事件绑定代码了。这样写,就可以保证是在那片DOM加载成功后再绑定事件了。可以成功的操作了。

Mysql在插入一条记录后返回这条记录的ID值的方法。

Mysql提供了一个LAST_INSERT_ID()的函数。

LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT or UPDATE statement to affect such a column. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this:

mysql> SELECT LAST_INSERT_ID();
        -> 195

简单说来,就是这个函数将返回插入的那条记录在表中自增的那个字段的值,一般我们都给那个自增字段命名为ID。这样就可以返回刚插入的记录的ID值了。

一个简单的例子:

$query="INSERT INTO `testtable` (`clou1`,`clou2`) VALUES ('testvalue','test')";
mysql_query($query);
$query="SELECT LAST_INSERT_ID()";
$result=mysql_query($query);
$rows=mysql_fetch_row($result);
echo $rows[0];

这样就可以返回刚插入的记录的ID值了。
值得注意的是,如果你一次插入了多条记录,这个函数返回的是第一个记录的ID值。

mysql> INSERT INTO t VALUES
    -> (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
|  1 | Bob  |
|  2 | Mary |
|  3 | Jane |
|  4 | Lisa |
+----+------+
4 rows in set (0.01 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

这个函数是基于connection的,也就是不会被其他客户端的connection影响到,所以结果是准确的。如果使用select max(id) from table,在高密度的插入请求下,是有可能出问题的,返回错误值。

Jquery学习笔记-获取select标签已经选中的值

书上介绍有Jquery的form插件,这个插件有个函数:

fieldValue(excludeUnsuccessful)

收集包装集里所有成功表单的值,并且返回这些值所构成的字符串数组。如果未找到任何值,就返回一个空数组。

参数 excludeUnsuccessful(布尔型)如果省略(或设置为true),则指定包装集里任何不成功控件被忽略。

返回 :已收集的值所构成的字符串数组

如果你要处理很多表单,就是用这个form插件吧,但是如果只是处理很少的form,不想使用这个插件呢?

那就用下面的这两种吧:

$('#testSelect option:selected').text();
$("#testSelect").find('option:selected').text();

这样就可以获取到值了。

Google 地图开启“我的位置”定位服务

在firefox3.5中和chrome中都可以使用,opera,safari不可以,IE就不用说了,肯定不支持了。
firefox是用内置的Geolocation API定位的,chrome是用的GEAR来定位的。

用firefox或者chrome打开Google地图后,点击左上角小人上边的那个圆圈就可以了。不是这两个浏览器的用户将看不到那个小圆圈。
上图,firefox定位图:
firefox
定位较准确。
chrome定位:
chrome
偏差较大,没firefox准确。

使用这个都需要同意google获取你的地理位置信息才可以。

Let's make the web faster

在几周前将网页加速工具开源后,Google又发布了一个网站,意在探寻更多的方法,并推动全互联网的加速进程。这次Google分享了研究数据、网站加速优化指南、有关性能的录制视屏、大量性能优化工具的介绍,以及一个讨论组,期望所有人都能在此分享如何使网页更快的创意。

为了指导其他人如何加速他们的网站,Google提供了如下一些指南:

刚才看了PHP性能技巧部分,有所收获,我发现我最大的问题是中间提到的,Don’t copy variables for no reason。

我就经常复制变量,为了写的方便。