popo's blog has no followers yet. Be the first one to follow.
JQuery使用的时间并不长,但深深地体会了它的强大。在这之前我也使用过了一些框架,虽然也能解决一些问题,但都不如JQuery顺手。
dojo是一个功能强大的js框架,基本覆盖了所有的功能,ESRI就是用它搭JavaScript API的。但dojo的学习成本太高,最关键的是它不是很易用,很难上手。
DWR也是一个js框架,他可使js代码和远程的java代码进行交互。但我并不喜欢这种设计复杂的框架,就像JSF一样,在客户端操作的同时必须和服务器做多次交互。
Prototype是一个强大的功能框架,它并不涉及表现,只是增强了内置类型的功能,比如对象,数组等。script.aculo.us就是在其基础上构建的,包括一些控件和一些效果。但又一点我不是很喜欢,他重写了内置类型而不是封装,有时候会碰到bug。比如使用for in循环的时候,会将prototype的方法也遍历进去。
还有一些小巧的ajax框架,它们只封装了xmlHttpRequest对象,在使用到ajax而不需要特殊功能的情况下还是很好用的。
经过上面一些框架的使用下来,我选择了JQuery。因为JQuery不仅功能强大而且易于使用,对初学者来说也是很好上手。
JQuery拥有强大的选择器,其中一部分来自于CSS,这样不会造成混乱。使用选择器可以很方便的访问任何元素,现在可以忘记getElementById了。
JQuery封装了Element对象,通过选择器获得的JQuery对象实质上包含了一个或一组Element对象,然后可以通过JQuery对象的方法对其进行事件监听,文档处理,筛选等操作。但这点可能使一些初学者混淆,搞不清JQuery和Element的区别。比如下面,this代表的是什么,其实这是一个Element对象,再把它封装成JQuery对象。
$("p").click(function(){
$(this).hide();
});
JQuery不会和其他框架起冲突,打开源码一看除了$还有JQuery这个命名空间。当$与其他框架发生冲突时,可以用JQuery这个命名空间,或自定义命名空间。
我最喜欢JQuery的是它不像Prototype去重写内置类型,而是基于一个自定义的对象。可以对这个对象做任何操作,还可以扩展这个对象。理想的框架就是这样,功能强大,易用,干净,可扩展。
Related
使用JQuery优化表单
for in循环
Object和Function
隐藏blogger的导航栏
关于GeoJSON
http://item.feedsky.com/~feedsky/popomore/~7314125/218981645/5194874/1/item.html
wakoopa是一个记录软件使用情况的网站,通过一个桌面的程序给最近使用的软件或上过的网站自动添加记录。这个网站能很好的给出最近的使用情况,比如会告诉用户最近一个星期哪几种软件使用率最高,最近使用了什么新的软件等等。
wakoopa有一点想法很好,将所有网站都作为一种软件,这也很复合SaaS的理念,将google,facebook都视为与office,qq一样的软件来管理。用户还能对每个软件进行评价,并且分享他们所使用的情况。
wakoopa的基础就是桌面程序,所以跨平台是必须的。之前,wakoopa已经发布了windows和mac两个版本,以及现在发布的linux,以及基本覆盖了所有的系统,真正成为了一个平台。我实验室的电脑用的是windows,寝室的是ubuntu,所以以前只有一台在记录,搞得我晚上的一些行动并不会被记录进去,所以才急切着盼望这个版本。
ubuntu安装wakoopa
1、将 http://apt.wakoopa.com all main添加到source中
2、sudo wget -O - http://apt.wakoopa.com/pubkey.txt | sudo apt-key add -
3、sudo apt-get update (注意要使用apt-get,我使用aptitude有问题)
4、sudo apt-get install wakoopa
Related
ubuntu下使用jiwai和twitter
ubuntu安装lastfm
mon_python编译
http://item.feedsky.com/~feedsky/popomore/~7314125/217159899/5194874/1/item.html
好久没写关于JS的东西了,今天该了一个表单正好放上。表单是网页中最常见的要素,HTML中存在的基本标签则略显简单,想要做到既美观又好用则需要适当的加工。
隐藏式表单
这是现在比较常见的一种方式,在flickr的内容编辑时就采用了这种方式。最初以文本的形式呈现,单击后文本由表单代替,这是为编辑状态,保存后恢复成文本状态,内容被更新。这是一种很好的利于用户体验的方式,操作比较明了,
先写好HTML标签,span中为文本,input为表单,所以先要把input隐藏。
text
接下来是一段JS
$(function(){
//当点击文本时触发事件
$('.input_text span').click(function(){
//隐藏文本,显示表单
$(this).parent().children().toggle();
//将文本的值添加到表单中
$(this).next().attr('value',$(this).text());
});
//当点击OK是触发事件
$('.input_text :button').click(function(){
var value = $(this).prev().attr('value');
if(value!=''){
//当在表单中输入值是才负值,否则保持原始值
$(this).prevAll('span').text(value);
}
$(this).parent().children().toggle();
});
});
看起来很简单易懂的吧,看一下例子就更明白了。
文本表单的提示
有时在文本表单中会需要提示信息,告诉用户这里应该填写什么。但这种信息又不能太显眼,他们不是关键信息,所以在用户已经知道或者不需要他们的时候就把他们隐藏
HTML标签就是普通表单标签,再加上一个class,这个样式是为了让表单中的内容呈现灰色。
再来看JS
$(function(){
//给所有的表单添加提示信息
$('.text').attr('value',inputdefault);
$('.text').click(function(){
//点击表单后,去除提示信息,并去掉样式
var value = $(this).attr('value');
$(this).removeClass('text');
if(value==inputdefault){
$(this).attr('value','');
}
});
$('.text').blur(function(){
//表单失去焦点后,如果表单内容为空则还原默认信息
var value = $(this).attr('value');
if(value==''){
$(this).addClass('text');
$(this).attr('value',inputdefault);
}
});
});
例子在这里
其实这只是小试牛刀,HTML4的表单很简单,所以对他进行不同程度的换装才能更易用。
Related
JQuery之我见
for in循环
Object和Function
隐藏blogger的导航栏
关于GeoJSON
http://item.feedsky.com/~feedsky/popomore/~7314125/218753054/5194874/1/item.html
在编写CSS中如果总是设计到定位,那么肯定会用到top left,当然还有两个right和bottom。经常用到的人会觉得这两个属性很简单没必要谈,但我还是来说说我的心得。
关于top和left
这四个属性是设置一个偏移量,对于特定容器的一个偏移。top是指元素的顶边相对于容器的顶边的偏移,right是元素的右边相对于容器的右边的便宜,但方向是从右到左。正因为有方向,所以这四个属性也可以设置为负值,是向反方向偏移。也可以设置百分比,这个值是相对于容器计算出来的,比如top:50%,就是容器的width*50%。
和position的关系
这四个属性必须与position共同使用,不然就没有效果,position值为static时这四个属性也是无效的。position还存在其他三个值absolute,relative,fixed,fixed和absolute类似,所以最大的区别还是absolute和relative。absolute是相对于根容器偏移,而relative是相对于父级容器偏移。
和盒式模型的关系
CSS中定义了一个盒式模型,关于这个网上有很多文章。主要有margin(外边距),border(边框),padding(内边距)这三个名词,用来设置这个盒子的空隙。W3C定义的盒式模型定义的width和height是指内容实体的,而不包括margin,border和padding,而传统的盒式模型则不同,他的width是包括border和padding,可以看下图帮助理解。
但值得庆幸的是只有IE在quirks mode才会使用传统的模型,其他都使用的是W3C的模型。但这两种模型两种好呢?ppk曾经说过,
随便拿一个真正的盒子,把一样比盒子小的东西放进去。问任何人这个盒子的宽度(width),他会从盒子的外边开始量起,没人回去量里面的东西。
按他这种说法,传统的盒式模型更接近人的感觉。但对于开发者来说W3C的更加好判断,我可不想内容的大小跟着边框和内边距变化。
说了这么多盒式模型,那么和top和left有什么关系?那么你觉得这四个属性所说的元素的边缘是margin,border还是padding呢?W3C模型告诉我们,偏移值指的是容器的内容实体到元素外边距的距离,就算说topleft定义的盒子左上角的坐标是margin-top和margin-left的交点,当然这个坐标是相对于容器来说的,传统模型也是如此。
回头看了一眼,写的乱不说,还有些偏题,可能topleft真的没什么说的吧。
Random Posts
伪娘必备
ubuntu安装lastfm
firefox3.0
等9月10日过了再说
马克5号
http://item.feedsky.com/~feedsky/popomore/~7314125/212300046/5194874/1/item.html
在编写CSS中如果总是设计到定位,那么肯定会用到top left,当然还有两个right和bottom。经常用到的人会觉得这两个属性很简单没必要谈,但我还是来说说我的心得。
关于top和left
这四个属性是设置一个偏移量,对于特定容器的一个偏移。top是指元素的顶边相对于容器的顶边的偏移,right是元素的右边相对于容器的右边的便宜,但方向是从右到左。正因为有方向,所以这四个属性也可以设置为负值,是向反方向偏移。也可以设置百分比,这个值是相对于容器计算出来的,比如top:50%,就是容器的width*50%。
和position的关系
这四个属性必须与position共同使用,不然就没有效果,position值为static时这四个属性也是无效的。position还存在其他三个值absolute,relative,fixed,fixed和absolute类似,所以最大的区别还是absolute和relative。absolute是相对于根容器偏移,而relative是相对于父级容器偏移。
和盒式模型的关系
CSS中定义了一个盒式模型,关于这个网上有很多文章。主要有margin(外边距),border(边框),padding(内边距)这三个名词,用来设置这个盒子的空隙。W3C定义的盒式模型定义的width和height是指内容实体的,而不包括margin,border和padding,而传统的盒式模型则不同,他的width是包括border和padding,可以看下图帮助理解。
但值得庆幸的是只有IE在quirks mode才会使用传统的模型,其他都使用的是W3C的模型。但这两种模型两种好呢?ppk曾经说过,
随便拿一个真正的盒子,把一样比盒子小的东西放进去。问任何人这个盒子的宽度(width),他会从盒子的外边开始量起,没人回去量里面的东西。
按他这种说法,传统的盒式模型更接近人的感觉。但对于开发者来说W3C的更加好判断,我可不想内容的大小跟着边框和内边距变化。
说了这么多盒式模型,那么和top和left有什么关系?那么你觉得这四个属性所说的元素的边缘是margin,border还是padding呢?W3C模型告诉我们,偏移值指的是容器的内容实体到元素外边距的距离,就算说topleft定义的盒子左上角的坐标是margin-top和margin-left的交点,当然这个坐标是相对于容器来说的,传统模型也是如此。
回头看了一眼,写的乱不说,还有些偏题,可能topleft真的没什么说的吧。
Random Posts
理发师和镜子
很宅的GONZO
你是神作
抉择
语音WEB是必需还是玩具
http://item.feedsky.com/~feedsky/popomore/~7314125/207712277/5194874/1/item.html
最近在用hibernate,图个新鲜学学MYSQL。以前都在本机上所以比较方便,这次装在了其他机子上,所以试试远程连接是什么样的。
telnet连接
mysql装在win2003上,我的XP去连接的时候出现了一个错误
telnet 192.168.1.103
Failure in initializing the telnet session. Shell process may not have been launched,
Telnet Server has closed the connection.
服务器拒绝了连接,因为telnet依赖与一个服务Secondary Logon。去服务中打开这个服务,当然telnet服务也要打开,这样就能连接其他主机了。
mysql权限
虽然已经连接到了主机,但进入mysql还是需要权限的,所以先给要访问的数据库分配一个用户以及权限
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something'
这句还是挺好理解的,把所有权限付给所有数据库,用户是localhost上的monty,密码是smonthing。现在要远程访问,只需吧localhost换成你所在的ip就可以了
GRANT ALL PRIVILEGES ON chuome.* TO popo@192.168.1.103 IDENTIFIED BY '123'
不过telnet还是不安全,下次试试SSH
Random Posts
截肢URL
集中还是分散
定位
last,探索未知的音乐世界
站稳,举棒,击球,NICE SHOT
http://item.feedsky.com/~feedsky/popomore/~7314125/196983035/5194874/1/item.html
最近在用hibernate,图个新鲜学学MYSQL。以前都在本机上所以比较方便,这次装在了其他机子上,所以试试远程连接是什么样的。
telnet连接
mysql装在win2003上,我的XP去连接的时候出现了一个错误
telnet 192.168.1.103
Failure in initializing the telnet session. Shell process may not have been launched,
Telnet Server has closed the connection.
服务器拒绝了连接,因为telnet依赖与一个服务Secondary Logon。去服务中打开这个服务,当然telnet服务也要打开,这样就能连接其他主机了。
mysql权限
虽然已经连接到了主机,但进入mysql还是需要权限的,所以先给要访问的数据库分配一个用户以及权限
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something'
这句还是挺好理解的,把所有权限付给所有数据库,用户是localhost上的monty,密码是smonthing。现在要远程访问,只需吧localhost换成你所在的ip就可以了
GRANT ALL PRIVILEGES ON chuome.* TO popo@192.168.1.103 IDENTIFIED BY '123'
不过telnet还是不安全,下次试试SSH
Random Posts
博客搬家
$$$
换新主题了
买电脑
猫咪你真是太可爱了
http://item.feedsky.com/~feedsky/popomore/~7314125/207712278/5194874/1/item.html
很早就知道有GeoJSON这个东西,但一直没有关注。最近搞论文搞的头痛,论文搞的是GeoRSS,想做类似地图服务的。发现客户端和服务器端通信用XML成本太高,其实GeoJSON是个很好的解决方案,可以节省很多带宽。
那么我就来讨论下GeoJSON吧,先来看个例子
{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {"prop0": "value0"}
},
{ "type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{ "type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0] ]
]
},
"properties": {
"prop0": "value0",
"prop1": {"this": "that"}
}
}
]
}
JSON是源于javascript对象,javascript对象(Object)就是用大括号括起来,中间以键/值的形式表现并用逗号分割,“键”就是对象的属性,而“值”就是该属性的值。javascript中还有个数组(Array),用中括号括起来,中间只有单个的值并用逗号分割。不管是对象还是数组,其中的值可以是任何元素(对象,数组,字符串,数字等),这就是此中结构的灵活之处。JSON与XML很相似,也具有层次结构,是一种轻量级的解决方案。
GeoJSON保留了JSON的结构,但增加了一些约束条件。
GeoJSON总是由一个对象组成,这个对象可以为要素集合(featurecollectioni),要素(feature)或者几何体( geometry)。
GeoJSON对象必须包含一个type属性,type的值可为 “Point”, “MultiPoint”, “LineString”, “MultiLineString”, “Polygon”, “MultiPolygon”, “GeometryCollection”, “Feature”, or “FeatureCollection”。
Geometry对象是那些type值为 “Point”, “MultiPoint”, “LineString”, “MultiLineString”, “Polygon”, “MultiPolygon”, “GeometryCollection”的GeoJSON对象。Geometry对象除了GeometryCollection外必须包含一个coordinates属性,其中包含一个点列表。
Feature对象是type值为”Feature”的GeoJSON对象。Feature对象必须包含一个geometry属性,其值为一个Geometry对象。Feature对象必须含有一个properties属性,其值可为一个JSON对象。
GeometryCollection对象是type值为”GeometryCollection”的GeoJSON对象。代表一个几何型集合,与FeatureCollection不同的是他包含的是Geometry对象,而不是Feature对象。GeometryCollection对象必须含有一个geometries属性,其中包含一组Geometry对象。
GeoJSON对象可以有一个”bbox”属性,是”[minx,miny,maxx,maxy]“的结构,他表示了该对象的显示范围。
如上面的例子,由大括号括起来的都是GeoJSON对象,例子中是一个FeatureCollection对象,他包含了一组Feature对象,还可以添加这个集合的其他属性。每个Feature对像都包含一个Geometry对象和一个属性(JSON对象),Geometry对象有所不同,类型不同,coordinates的数据结构也不同。
点,表示点只需要经度和纬度,用中括号括起来代表一个点坐标。
{ "type": "Point", "coordinates": [100.0, 0.0] }
线,由一系列点组成,在一组有序点外面再括一个中括号。
{ "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }
面,在线的外面再加一个中括号,面列表中的线收尾必须一致。但为什么未免还要加个呢?为了表示面中的洞,第一项表示外围的圈,第二项(如果有的话)表示内围的圈。
{ "type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
]
}
除了以上还有多点,多线,多面就不多讲了,可以自己去看看。
GeoJSON基本上就这些内容,跟详细的可以去这里。GeoJSON只是为更好数据通信提供一个标准,现在已有超过20个项目支持了GeoJSON,包括客户端的和服务器端的,而且大多数语言都支持JSON。如果你喜欢这种更轻量级的解决方案,那么就加入进来吧。
一个OpenLayers的简单例子:
//初始化map
var featurecollection = 'geojson对象';
var geojson = new OpenLayers.Format.GeoJSON(); //获得一个geojson的模板
var layer = new OpenLayers.Layer.Vector();
layer.addFeatures(geojson.read(featurecollection)); //用模板来解析这个geojson对象
map.addLayer(layer);
Related
for in循环
Object和Function
隐藏blogger的导航栏
为什么用getElementById
闲谈userAgent
http://item.feedsky.com/~feedsky/popomore/~7314125/207712281/5194874/1/item.html
今天看见白鸦提出日历和任务列表是分还是合的问题,我自己谈点想法,请各位专家批评指正。
日历(calendar)
日历是一个精确的时间概念,一般人会用他来做准确的提醒。get things done中为什么会将一部分next action放到日历中就是这个原因,日历可以精确的确定时间。比如明天下午有个什么会议,我就可以把他填到明天那栏,并标上具体时间,那么你就能清楚的看清什么时候该干什么。而如果你现在想买双nike的鞋,那应该填在日历的什么地方呢,这时可能放在todo list里可能更加显眼,到了商场整个todo list可能更加管用。
任务列表(todo list)
任务列表是一个模糊的时间概念,更强调一个任务的进展过程。他可以是一个项目的发展进度,也可以是一次出游的准备物品,还可以是整个人生规划。他们的功能特点就是没有时间限制,把所有的东西都罗列出来,也是起到提醒的效果。但提醒的一般不是具体的事,可能是某样事物或者一个想法。拿上面的例子,我可以把想买的东西都记在一个list上,那么去超市就可以轻松的购物,而不用想东想西。
交集
日历和任务列表也有相同的地方。比如你想在明天给谁打的个电话,但又不是必需的,那么你可以记录在日历中但不用写具体的时间,也可以写在任务列表中扫一眼就能看到。在google calendar中可以看到类似功能,在日历中日程标签就可以看作是两者的交集。日程返还的是一个时间列表,不像任务列表那样无序的,而是按照日期排列,最上面是离现在最近的。日历中都附有强烈的时间感,就感觉有人在后面抽着鞭子在赶你一样。每过一天,下一天的日程又会扑面而来。而任务列表来的松散,有一种更随意的感觉。
分还是合
如果将日历和任务列表合二为一,那么任务列表可能就会失去他的某些特性,你完全可以像google 那样将他作成一个时间列表,但这样就会失去一些像“购物清单”的作用。如果确定了某些特定的功能则完全可以把两者放到一起,但我觉得分散组合可能更好,就是可以把日历的某条转到任务列表中,或把任务列表转到日历。可能某个文件需要下个月上交,所以我先放到了任务列表中,后来老板说月底某天就要,那么现在可以把这项任务扔进日历的那一天中。
所以我觉得应该分为两个模块或者两个服务,但两者之间一定要能交流,能够转换。
Random Posts
上海同人大会
马勒戈壁的草泥马
定位
从blogger搬到wordpress
马克5号
http://item.feedsky.com/~feedsky/popomore/~7314125/207712282/5194874/1/item.html
昨天吃饭的时候,师弟问我为什么很多地方都用document.getElementById(),看其他人层级访问很牛。这个问题我也一时没答上来,只是漫无边际的扯东扯西。其实我两年前也是这么觉得,当时对于DOM则一点概念都没有,只知道这个名词,然后去网上抄代码就一直用document.getElementById(),(js都是从抄开始的)。
想想这么些时间用下来也并不觉得层级访问很牛了,只要对照DOM的文档很方便的就能使用。那么对于这两种方式,到底哪一种更好更便于使用呢?其实两者是互补的,他们各有长处。
getElementById()是ppk所说的众多钩子中的一个,是结构和行为的连接纽带。没一个HTML标签都能定义一个ID,而且这个ID一个文件中是唯一的,那么使用getElementById()方法时就能很快速的获得该对象,而不需要去循环所有的标签。getElementById()很神奇,用这个方法返回的是Element接口,但会根据标签返回相应的HTML对象。如果该ID对应的是一个下拉列表,那么返回的是一个Select对象;如果对应的是一个表格,则返回一个table对象。所以这个方法比较全能,也是大家都去用的原因。
如果你知道一个标签对象,要去获取他,那么就不应该使用层级访问。如果这个标签嵌套着七八个或者更多的div,那么你需要一直调用firstChild方法,而且很容易多一个或者少一个。如果把这段代码给别人看或者自己回过头来看看,估计都无法理解,可读性很差。
层级访问用于小区域或者是微格式中是很好用的,尤其是想改变顺序或者是层次结构。比如一段评论的HTML结构:
name
content
如果想获取评论的人名
var comment = 获取对象
var name = comment.firstChild().nodeValue;
如果想将人名放在内容的后面
var comment = 获取对象
var name = comment.childNodes[0];
var content =comment.childNodes[1];
comment.insertBefore(content,name);
但是层级访问的前提需要有良好的HTML结构,这就是一直在谈论的结构表现行为分离。有一点前端开发经验的会很清楚这样的做的必要性,我在这就不说了。
还有一个方法getElementsByTagName,这与getElementById()一样常用,但对js刚入门的人来说会很少用。这个方法主要用来批量处理标签,获得文档中所有的指定标签。如果我想提取所有的链接地址
var linklist = [];
var links = document.getElementsByTagName('a');
for( n in links){
linklist.push(links[n].href);
}
最后凡事都有其优缺点,正确对待就好。如果需要快速定位则用到getElementById(),如果需要修改文档结构则用到层级结构,如果要批量修改则用到getElementsByTagName()。
Related
伪REST
截肢URL
真明星假嘀咕
闲谈userAgent
下拉框是使用CSS还是JS?
http://item.feedsky.com/~feedsky/popomore/~7314125/187585559/5194874/1/item.html
昨天吃饭的时候,师弟问我为什么很多地方都用document.getElementById(),看其他人层级访问很牛。这个问题我也一时没答上来,只是漫无边际的扯东扯西。其实我两年前也是这么觉得,当时对于DOM则一点概念都没有,只知道这个名词,然后去网上抄代码就一直用document.getElementById(),(js都是从抄开始的)。
想想这么些时间用下来也并不觉得层级访问很牛了,只要对照DOM的文档很方便的就能使用。那么对于这两种方式,到底哪一种更好更便于使用呢?其实两者是互补的,他们各有长处。
getElementById()是ppk所说的众多钩子中的一个,是结构和行为的连接纽带。没一个HTML标签都能定义一个ID,而且这个ID一个文件中是唯一的,那么使用getElementById()方法时就能很快速的获得该对象,而不需要去循环所有的标签。getElementById()很神奇,用这个方法返回的是Element接口,但会根据标签返回相应的HTML对象。如果该ID对应的是一个下拉列表,那么返回的是一个Select对象;如果对应的是一个表格,则返回一个table对象。所以这个方法比较全能,也是大家都去用的原因。
如果你知道一个标签对象,要去获取他,那么就不应该使用层级访问。如果这个标签嵌套着七八个或者更多的div,那么你需要一直调用firstChild方法,而且很容易多一个或者少一个。如果把这段代码给别人看或者自己回过头来看看,估计都无法理解,可读性很差。
层级访问用于小区域或者是微格式中是很好用的,尤其是想改变顺序或者是层次结构。比如一段评论的HTML结构:
name
content
如果想获取评论的人名
var comment = 获取对象
var name = comment.firstChild().nodeValue;
如果想将人名放在内容的后面
var comment = 获取对象
var name = comment.childNodes[0];
var content =comment.childNodes[1];
comment.insertBefore(content,name);
但是层级访问的前提需要有良好的HTML结构,这就是一直在谈论的结构表现行为分离。有一点前端开发经验的会很清楚这样的做的必要性,我在这就不说了。
还有一个方法getElementsByTagName,这与getElementById()一样常用,但对js刚入门的人来说会很少用。这个方法主要用来批量处理标签,获得文档中所有的指定标签。如果我想提取所有的链接地址
var linklist = [];
var links = document.getElementsByTagName('a');
for( n in links){
linklist.push(links[n].href);
}
最后凡事都有其优缺点,正确对待就好。如果需要快速定位则用到getElementById(),如果需要修改文档结构则用到层级结构,如果要批量修改则用到getElementsByTagName()。
Related
隐藏blogger的导航栏
一次请求过程中的编码问题
关于GeoJSON
伪REST
截肢URL
http://item.feedsky.com/~feedsky/popomore/~7314125/193029006/5194874/1/item.html
昨天吃饭的时候,师弟问我为什么很多地方都用document.getElementById(),看其他人层级访问很牛。这个问题我也一时没答上来,只是漫无边际的扯东扯西。其实我两年前也是这么觉得,当时对于DOM则一点概念都没有,只知道这个名词,然后去网上抄代码就一直用document.getElementById(),(js都是从抄开始的)。
想想这么些时间用下来也并不觉得层级访问很牛了,只要对照DOM的文档很方便的就能使用。那么对于这两种方式,到底哪一种更好更便于使用呢?其实两者是互补的,他们各有长处。
getElementById()是ppk所说的众多钩子中的一个,是结构和行为的连接纽带。没一个HTML标签都能定义一个ID,而且这个ID一个文件中是唯一的,那么使用getElementById()方法时就能很快速的获得该对象,而不需要去循环所有的标签。getElementById()很神奇,用这个方法返回的是Element接口,但会根据标签返回相应的HTML对象。如果该ID对应的是一个下拉列表,那么返回的是一个Select对象;如果对应的是一个表格,则返回一个table对象。所以这个方法比较全能,也是大家都去用的原因。
如果你知道一个标签对象,要去获取他,那么就不应该使用层级访问。如果这个标签嵌套着七八个或者更多的div,那么你需要一直调用firstChild方法,而且很容易多一个或者少一个。如果把这段代码给别人看或者自己回过头来看看,估计都无法理解,可读性很差。
层级访问用于小区域或者是微格式中是很好用的,尤其是想改变顺序或者是层次结构。比如一段评论的HTML结构:
name
content
如果想获取评论的人名
var comment = 获取对象
var name = comment.firstChild().nodeValue;
如果想将人名放在内容的后面
var comment = 获取对象
var name = comment.childNodes[0];
var content =comment.childNodes[1];
comment.insertBefore(content,name);
但是层级访问的前提需要有良好的HTML结构,这就是一直在谈论的结构表现行为分离。有一点前端开发经验的会很清楚这样的做的必要性,我在这就不说了。
还有一个方法getElementsByTagName,这与getElementById()一样常用,但对js刚入门的人来说会很少用。这个方法主要用来批量处理标签,获得文档中所有的指定标签。如果我想提取所有的链接地址
var linklist = [];
var links = document.getElementsByTagName('a');
for( n in links){
linklist.push(links[n].href);
}
最后凡事都有其优缺点,正确对待就好。如果需要快速定位则用到getElementById(),如果需要修改文档结构则用到层级结构,如果要批量修改则用到getElementsByTagName()。
Related
截肢URL
真明星假嘀咕
闲谈userAgent
下拉框是使用CSS还是JS?
服务为什么被隐藏了
http://item.feedsky.com/~feedsky/popomore/~7314125/186084118/5194874/1/item.html
男:“我要送你个礼物,你猜是什么?”女:“猜不出来哦,是什么?”男:“草泥马!!!”女:“...”草泥马现在已经成了十大神兽之首,其地位不容忽视。越来越多的人关注并喜欢这只长颈鹿脖子羊身的动物。1、纪实荒茫而美丽的马勒戈壁上。生活着一群顽强的草泥马。(因为草泥马实是主要物种,所以马勒戈壁又叫草泥马戈壁)草泥马们克服了戈壁的艰苦环境,并顽强的生活下来。戈壁上缺少水缺少食物,草泥马能进食的只有一种草——卧草……2、歌曲草泥马不仅被大人们喜爱,还受小孩子欢迎。孩子们欢欢喜喜地唱起了草泥马之歌。3、周边商家还是很有眼光滴,周边这么快就出了,萌萌和雷雷多可爱。4、真相草泥马其实不是马,实为羊驼,南美洲的土生动物。爱学习的同学可以去这里。
http://item.feedsky.com/~feedsky/popomore/~7086498/177357123/5194874/1/item.html
虾米是一个很有特色的音乐网站,自上次的beta版上线后,最近又发布了星座电台。界面设计的很炫,进入电台后虾米会根据用户填写的星座转到响应的星座频道。左边有专辑的详细信息和歌词,中间是播放的歌曲,还有预先载入的后一首歌,用户也可以评价和分享这首歌。据虾米的人说,“星座电台所推荐的歌曲来自与您同星座用户的推荐和高评分行为”。也就是说,各个星座频道里的歌都出自于该星座的用户对歌的评价,虽然说这个东西挺好玩的,但不是很实用。相较Lastfm的电台,星座电台则更加的泛化,同一个星座不一定有相同的兴趣,听的歌自然就不同。把星座电台当成一个随机听歌的电台,分一下星座是为了招揽不同星座的人,其实质是一样的。星座电台可能是一道小菜,更加期待好友电台,不过没好友怎么办?虾米还有一个“下一个虾米FM电台,由你设计!”的活动,有什么想法可以去提提。我还是喜欢last的电台。
http://item.feedsky.com/~feedsky/popomore/~7086498/159464630/5194874/1/item.html
2008年过去了,这一年是我学生生涯的最后一年,明年不管是不是要实习,夏天也是要踏上工作岗位了。对于一个从没出过象牙塔的人来说,2009年也算是新的挑战吧。过去的一年还是有很多成长的,接触了不同的东西。女友这应该是08年最大的收获,说收获可能有被劈的可能,但确实填补了心中的一大空缺。你出现在我面前,我第一次主动的告白,于是你接受了。原来是这么的简单,两情相悦才是正道。到现在正好是8个月,中间虽然有很多矛盾,但我们能继续走下去。旅游08年走了两条旅游路线,一条是暑假走的沈阳-长春-长白山-图们-哈尔滨,另一条是十一走的无锡-常州-镇江-南京。旅游是我的一大爱好,尤其是独自长途旅行,想看遍整个世界到底是怎么样的,同样也算是一种试炼吧。七草加入七草是研一的时候,动漫可以用来形容我们这代人的一个特征吧,我就是那群人中的一个。但我并不是十分热衷于COS,虽然也有过经历。在七草中,我是看着姐妹们的努力慢慢开花结果,最终进入了08年CJ的决赛。虽然那次COS我没有参加,但身为七草的成员同样欢欣雀跃。姑娘们是好样的!!!棒球这个学期我加入了棒球社,开始了这个我完全不熟悉的运动,甚至只在漫画里看到过。上海真是一个好地方,连无人问津的棒球都有这么多业余和专业的选手。我开始喜欢上这个运动,教练说球场上最重要的是自信,但我觉得团结同样重要,棒球的精神能反应到各个团队上面。就在上周与交大打了友谊赛,给我湘北和陵南的感觉,但我们最后还是赢了,萌说是我们气势上胜了,当然还有努力了。信仰自从第一次去了教堂后,我就对耶稣很感兴趣,为什么大家都要去拍他马屁呢,总是在称赞他。我不是嘲笑别人的信仰,而是羡慕,一个宗教能一直延续下去一定有他的道理,而且能吸引这么多人,一定有他的魅力。在无锡旅游的时候,也跑到人家教堂里去凑热闹。今年的平安夜我也去了,参加了圣诞节子时弥撒,虽然人多,但还是很有气氛的。演唱会我这把年纪了还跟小朋友一起去参加了早安的演唱会,早安我是以前很喜欢的团体,难得来中国开唱我当然去看了。也是我第一次去看演唱会,而且是喜欢的人,那次很完美,并没有什么缺憾。豆瓣豆瓣对我来说已经不只是一个网站,我在上面已经结识了一群朋友,是根据一个豆瓣的活动,我们到处找上海的老房子,然后漫无目的的逛。我们喜欢三五成群,而不是一大帮人,这样使我们之间的关系更加密切。我们有共同的兴趣,也欢迎有共同兴趣的新人,行程是完全民主的,也有只有一个人的活动。今年也没白闲着,跑了白鹤,金泽,佘山(预定以外),还去了豆瓣上的熊猫商店。工作最近世道不景气,让我们这些还没毕业的就快失业了。不过我算是运气好,找到了个好东家。人走运起来真是没话说,希望08年的运气能一直带到09年吧。日语我算是考了日本能力测试的最高级别,还先别说过不过,这三年的目标今年总算达到了。09年希望在日语方面有更多的练习。python08年我遇上了python,python作为一种脚本语言功能强大,格式整洁,可扩展性也强。打算以后服务器端从java转战到python上来,用于一些轻量级的开发。书最近爱上了看书,其实也不是什么正紧书。闲书主要是一些营销方面的,和日本战国的历史小说。说起日本战国也是突然迷上的,最近在看丰臣家的人们,但最喜欢的还是上衫谦信。
http://item.feedsky.com/~feedsky/popomore/~7086498/156025604/5194874/1/item.html
一直在实验室用着last,windows下的,现在想在寝室也搞个听听。还好last支持linux,于是在官网下了源码准备编译,可是遇到了问题。----------------------------==> Last.fm Configure==> Checking for qmake...==> Checking the installed version of Qt is correct..../configure: line 40: -v:找不到命令Your version of Qt seems to be too old, we require Qt 4.3 or above.It is possible you have Qt3 and Qt4 both installed. Locate your qt4 installationand ensure it is placed first in the path, eg:PATH=/opt/qt4/bin:$PATH ./configureHowever this configure script is very basic, perhaps we got it wrong..Try typing the following, perhaps it will build for you :)qmake -config release && make----------------------------原来是系统的qt版本太低,发现自己不会升qt,真是菜。还好在小组里找到了解决办法。这样只要使用apt就能安装了先需要安装一个公钥,不然无法验证。$ wget -q http://apt.last.fm/last.fm.repo.gpg -O- | sudo apt-key add -在/etc/apt/sources.list中添加以下源deb http://apt.last.fm/ debian stable$ sudo aptitude update$ sudo aptitude install lastfm
http://item.feedsky.com/~feedsky/popomore/~7086498/172557340/5194874/1/item.html
一直在实验室用着last,windows下的,现在想在寝室也搞个听听。还好last支持linux,于是在官网下了源码准备编译,可是遇到了问题。----------------------------==> Last.fm Configure==> Checking for qmake...==> Checking the installed version of Qt is correct..../configure: line 40: -v:找不到命令Your version of Qt seems to be too old, we require Qt 4.3 or above.It is possible you have Qt3 and Qt4 both installed. Locate your qt4 installationand ensure it is placed first in the path, eg:PATH=/opt/qt4/bin:$PATH ./configureHowever this configure script is very basic, perhaps we got it wrong..Try typing the following, perhaps it will build for you :)qmake -config release && make----------------------------原来是系统的qt版本太低,发现自己不会升qt,真是菜。还好在小组里找到了解决办法。这样只要使用apt就能安装了先需要安装一个公钥,不然无法验证。$ wget -q http://apt.last.fm/last.fm.repo.gpg -O- | sudo apt-key add -在/etc/apt/sources.list中添加以下源deb http://apt.last.fm/ debian stable$ sudo aptitude update$ sudo aptitude install lastfm
http://item.feedsky.com/~feedsky/popomore/~7086498/152936234/5194874/1/item.html
最近看了艾・里斯的《定位》,有点想法:腾讯以QQ这个IM占有了IM大部分份额,QQ是腾讯的产品,一提到QQ就想到是IM。但腾讯还做了很多QQ的延伸产品,QQ zone,按照定位来说,拿QQ做延伸产品会分散QQ这个词功能性,就是用户会模糊QQ到底是什么。不过中国的市场太好做了,做什么都不会饱和,腾讯成功在于时机。百度和google抢占中国搜索引擎的份额,百度胜了。胜在最早进入用户的大脑,google当时还没有叫谷歌,但百度好称是适合中国人的搜索引擎,占了先机。但最近上了有啊和百付宝,和淘宝和支付宝抢市场份额,实不知用户心中百度就是中国的搜索引擎了,搞这个一边凉快去吧。校内刚开始做的时候,中国SNS这个词还没有炒起来,所以校内还是又远见的。开心怎么搞起来,就是钻了校内的空子,你给学生用,那我就给上班族用,这两群人个有个的圈子,而且不互通。开心靠着给上班族玩游戏也火了起来。 产品如何定位,当然要最先进入人们的大脑,如果时机晚了,那么找领导者的空子,或给竞争者重新定位。人们脑中对于每个产品分类都有一个阶梯,谁排第一谁排第二,不要混淆这个阶梯,最后倒霉的也是你。不要轻易做产品延伸,这会混淆原来产品在人们脑中定位。
http://item.feedsky.com/~feedsky/popomore/~7086498/150938559/5194874/1/item.html
最近看了艾・里斯的《定位》,有点想法:腾讯以QQ这个IM占有了IM大部分份额,QQ是腾讯的产品,一提到QQ就想到是IM。但腾讯还做了很多QQ的延伸产品,QQ zone,按照定位来说,拿QQ做延伸产品会分散QQ这个词功能性,就是用户会模糊QQ到底是什么。不过中国的市场太好做了,做什么都不会饱和,腾讯成功在于时机。百度和google抢占中国搜索引擎的份额,百度胜了。胜在最早进入用户的大脑,google当时还没有叫谷歌,但百度好称是适合中国人的搜索引擎,占了先机。但最近上了有啊和百付宝,和淘宝和支付宝抢市场份额,实不知用户心中百度就是中国的搜索引擎了,搞这个一边凉快去吧。校内刚开始做的时候,中国SNS这个词还没有炒起来,所以校内还是又远见的。开心怎么搞起来,就是钻了校内的空子,你给学生用,那我就给上班族用,这两群人个有个的圈子,而且不互通。开心靠着给上班族玩游戏也火了起来。 产品如何定位,当然要最先进入人们的大脑,如果时机晚了,那么找领导者的空子,或给竞争者重新定位。人们脑中对于每个产品分类都有一个阶梯,谁排第一谁排第二,不要混淆这个阶梯,最后倒霉的也是你。不要轻易做产品延伸,这会混淆原来产品在人们脑中定位。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936235/5194874/1/item.html
读的这本书《版本控制之道》很多新人(比如说我)刚开始做项目的时候并没有什么规划,尤其是单枪匹马的时候。虽然也知道要备份代码,就是把项目复制一份存在硬盘的其他角落,标个日 期,等回想起来已经忘了每一份代码之间的区别。团队的话更是混乱,不可能把模块和模块分的很清楚,很容易造成冲突,所以版本控制是不可少的。什么是subversion版 本控制就像一根时间轴,按时间顺序版本号慢慢增大,你可以回头看看以前各个版本到底做了什么,也可以对某个版本进行修改。如果发现现在的路都不同,可以从 以前某个版本走另外一条路,就像本书中Mike所说的平行世界,当然你也可以从这个平行世界回来,把两个版本重新合并。其实这还不够奇妙,这只是记录了我 以前做过什么,对于团队还有一个重要的定义——让人惶恐不安的加锁策略。必须要知道的名词在这之前必须知道一些名词,项目仓库(repository)可以设想出一个存放你文件的仓库,他可以是本地硬盘,可以是局域网的其他电脑,也可以是网络的任何一个节点。编辑完你的文件后最终是要提交到项目仓库的。工作拷贝(working copy)是相对于项目仓库来说的,当你将一部分文件从项目仓库拿到某个地方的时候,那个地方就是你的工作拷贝。我们在建立工作拷贝,第一次从项目仓库拷贝文件的操作叫做签出(checkout)。签出的工作拷贝都是项目最新的版本。在工作拷贝修改文件后要提交(commit)到项目仓库,版本库会增加版本号。有时在你修改的过程中由于其他人的提交使得版本号增加很多,所以你必须更新(update)工作拷贝到最近版本。不然就会造成冲突(conflict),这也是使人惶恐不安的地方。subversion的版本号subversion的版本号有所不同,是项目仓库集体编号。只要有人提交到项目仓库 ,版本号就会加1,而不是改变单个文件的版本号,没有修改过的文件也会随着一起提升编号。而具体文件编号则是对应于单个文件的编号,单个文件的修改提交后,其他文件的版本也不会改变,这种方式用来记录某个文件变动了多少。其实subversion也可以浏览单个文件的历史,用svn log或者svn blame。加锁策略为什么要加锁,其实这个锁在很多地方都碰到过,多人编辑同一个文件的时候总是会遇到冲突,但最后采用谁的呢,人都不知道电脑怎么知道,所以要加个锁。一般来说有两种策略,严格加锁,当一个人有编辑权限的时候,其他人是无法再去编辑的,只能等提交后其他人才能获取这个编辑权限。夸张一点,如果一个人在编辑一个文件的时候忘记提交然后出去旅游了,那么这段时间整个项目就无法进展了。subversion采用的是乐观加锁,其实就根本没加锁,每个人都可以编辑文件。但当然不能随意编辑,每个人只能编辑自己签出的本地拷贝,编辑完后再提交到项目仓库。这就是使人们恐慌的地方,如果两个人同时提交同一个文件那怎么办?但subversion已经解决了这个问题,在本地拷贝编辑好后提交到项目仓库时,本地拷贝的版本必须是最新的。如果其他人已经提交过使得项目仓库的版本号增加了,必须先更新本地拷贝的版本再提交。状态符在对文件进行操作后都会有相应的标识符来表示文件的状态。A 项目仓库中新添加的文件,更新到工作拷贝U 工作拷贝中的文件已经过期,从项目仓库中更新最新的版本到工作拷贝D 项目仓库中已经删除了这个文件,工作拷贝会删除这个文件G 工作拷贝中的文件已经过期,而且本地还做了修改,subversion成功合并项目仓库和工作拷贝的文件C 工作拷贝中的文件已经过期,而且本地还做了修改,但更新的时候产生冲突M 文件被修改过如何解决冲突这 应该是使用版本控制的开发者最关心的问题,但这不只是版本控制的问题,还是整个项目管理的问题。使用这种开发方式,开发者们必须有很好的沟通交流,这是解 决冲突的唯一方法,subversion不是AI,他只能找出先后版本的差异,并不能解决两个开发者想法的差异。遇到冲突时不用着急,先找出和你想法有冲 突的那个人,找他谈谈找出一个好的解决方案,再回来解决冲突,最后提交两人都满意的结果。查找差异subversion拥有多个版本标识符,可以比较文件任意版本之间的差异。可以将版本号看成一条时间线,BASE就是刚签出或者更新的版本号,HEAD则是项目仓库中最新的版本号,COMMITTED是最后改动的版本,PREV则是COMMITTED之前的一个版本。svn diff #对比刚签出和修改过的版本svn diff -r HEAD #对比本地拷贝和项目仓库的最新版本svn diff -r PREV:BASE #对比刚签出的本地拷贝和之前一个版本也可以比较两个指定版本,svn diff -r19:21 #对比19和21两个版本diff后可以输出一个补丁文件,然后用patch将这个补丁打进去。属性和标签属性是 一些与文件关联的元数据,用来描述这个文件,java源代码可以有一个“审阅者”的属性,告诉你谁最后审阅过这个文件。属性同样可以版本化,与 subversion的其他文件一样,也会发生冲突。subversion定义了很多svn:开头的属性,可以改变处理文件的行为。标签其实也算一个分支,但只记录一个时间点,可能是某一个发布版,也可以是一个bug修订的起始点。分支和合并分支虽然方便,但不是运用的越多越好,就像Mike说的很多团队已经拒绝使用分支。他建议我们四种用法:发布分支,在项目的开发过程中,有时需要发布一个版本,但一些新添加的功能并不包含在这个发布版本中,而且不能耽误项目时间,需要继续开发。所以将一个要发布的版本作为一个分支继续完善,以待发布。发布,当在一个发布分支中觉得可以发布了,那么将分支复制到一个标签目录下,确定一个标签名(比如rb1.0.0或rb1.0.0-fixed)。在发布分支中修正bug,bug是随时都有的,但分支上存在的bug,一般在主干上也存在,所以必须把修正的bug应用到主干上。简单的bug只需对比修正bug前后的版本然后应用到主干。复杂一点的则需要建立一个bug的分支,设定起始和终止的标签,然后将标签之前的差异应用到主干。开发人员试验,建立分支供开发者试验用,如有成果可合并到主干。建立分支和标签其实没有想象那么复杂,只是将文件全部复制过去。一般项目的目录结构为proj/trunk,proj/branch,proj/tag,trunk为主干,branch为分支,tag为标签。合并其实并不是字面上意思,其实是先diff一下前后(版本号,标签)两个版本,将他们的差别应用到工作拷贝上,所以最后需要提交才能改变项目仓库中的数据。参考命令svn import path URL #将指定路径的文件目录导入项目仓库中svn checkout URL path #从项目仓库中签出,如果没有指定path,本地目录名使用URL的base namesvn update #更新工作拷贝到最新版本svn add path #添加文件到项目仓库,还需提交svn diff path #比较文件差异svn diff > patchfile -> patch -p0 -i patchfile #比较文件差异后输出补丁,再将补丁打上svn revert file #废弃所做的改动cp file.mine file -> svn resolved file #遇到冲突时,废弃别人的改动svn commit -m "message" #提交,加上备注svn log (-v) file #查看文件的历史(指定版本)svn blame file #查看文件每行修改的版本号和作者名svn merge -r rev:rev-1 path #撤销一个已经提交的改动,就是回滚svn status (--show-updates) #检查工作拷贝的状态(项目仓库中的状态)svn switch URL #切换不同的项目仓库到同一个工作拷贝svn copy src dest #将一个目录复制到另一个目录
http://item.feedsky.com/~feedsky/popomore/~7086498/150150573/5194874/1/item.html
最近一直在关注虾米(1,2),却忘了很早以前就注册的last。当时注册好像是因为pandora不支持中国用户,所以就弄个last玩玩,但没搞懂要怎么听歌,都是搜索最烦了,一下子想不起来要听什么,而且主页都是英文歌,所以放弃了。这次因为twitter上好多人都在玩last,所以就再试了一下,确实很好玩。传统的音乐网站中,音乐就像是成列品,整整齐齐的摆放着。其实把音乐换成视频就叫做视频网站了,并没有什么特别的,那为什么还要叫音乐网站。last则像一张网,可以从一个地方到达任何地方。last有电台这个概念,他把类似的歌手或者类似的歌曲放在一个电台里,如果你喜欢这个歌手,那么你也有可能喜欢这个电台里的其他歌手。last还能根据你的喜好推荐歌曲,当然这要有一个适应过程,就像刚认识一个人的时候你可能并不了解他,一段时间后你就可以根据他的喜好推荐给他喜欢的东西。我喜欢last还有一个原因就是听歌记录,这和itune有点类似,一段时间后你就会知道经常听些什么歌。last还支持ipod的歌曲记录,对于有ipod的我来说当然是件好事。虾米现在也已经有这个功能了,但是用itune有点麻烦。我现在就一直在用last的推荐,并将好歌做成豆列(1,2),真是个不错的挑歌工具。
http://item.feedsky.com/~feedsky/popomore/~7086498/147343697/5194874/1/item.html
最近一直在关注虾米(1,2),却忘了很早以前就注册的last。当时注册好像是因为pandora不支持中国用户,所以就弄个last玩玩,但没搞懂要怎么听歌,都是搜索最烦了,一下子想不起来要听什么,而且主页都是英文歌,所以放弃了。这次因为twitter上好多人都在玩last,所以就再试了一下,确实很好玩。传统的音乐网站中,音乐就像是成列品,整整齐齐的摆放着。其实把音乐换成视频就叫做视频网站了,并没有什么特别的,那为什么还要叫音乐网站。last则像一张网,可以从一个地方到达任何地方。last有电台这个概念,他把类似的歌手或者类似的歌曲放在一个电台里,如果你喜欢这个歌手,那么你也有可能喜欢这个电台里的其他歌手。last还能根据你的喜好推荐歌曲,当然这要有一个适应过程,就像刚认识一个人的时候你可能并不了解他,一段时间后你就可以根据他的喜好推荐给他喜欢的东西。我喜欢last还有一个原因就是听歌记录,这和itune有点类似,一段时间后你就会知道经常听些什么歌。last还支持ipod的歌曲记录,对于有ipod的我来说当然是件好事。虾米现在也已经有这个功能了,但是用itune有点麻烦。我现在就一直在用last的推荐,并将好歌做成豆列(1,2),真是个不错的挑歌工具。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936238/5194874/1/item.html
上周日结束了日语一级的考试,这也是学生生涯的最后一次考试了吧。但对于这次考试并没有怎么重视,可能是跟前程无关的东西,所以看的并不是很重。现在的自己已经没什么值得担心了,安心的毕业,继而去适应新的工作。在刚上研的时候,老妈大概是受了大环境的影响,总是向我灌输上研没用的思想。其实也不无道理,研究生毕业难道就比本科生强了?也不见得,最后还是要看个人,学历这种纸质的东西根本不靠谱。但我觉得研究生对于我来说是重要的,本科的时候就因为朋友说了句“考华师大吧”,于是就去考了,于是就上了,期间并没有想过为什么要考研。现在回想起来这个选择是对的,其实大学毕业正处于迷茫的时候,我并不知道自己要什么,想干什么工作,很有可能就找了某个事业单位蹲一辈子,但这肯定不是我想要的。研究生期间我成长了很多,我抱过C#的书,我抱过java的书,我抱过数据库的书,让我觉得这是个多么广阔的世界,虽然这几年我不能专于一方面,但这也是寻找的一个过程,让我确定我喜欢的是什么。第二年下半年我开始关注互联网,这已经是web2.0当道的互联网,各种别出新裁的web2.0应用更是吸引我,觉得自己能做这行真是太好了。最近开始写博,对一直以来语文基础不是很好的我来说,这也是一种锻炼。写东西确实可以整理思路,把整天想的东西用文字记录下来,也可以当作备份 XD。我可以说我的研究生没有虚度,一条路已经清晰的出现在我眼前。对于将来我并不想说什么,将来是多变的,所以我并不想画个圈把它圈起来。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936239/5194874/1/item.html
最近玩棒球确实学到了很多东西,关于团队有一些自己的看法。无人为王相信看过棒球的都会对投手印象深刻,“三振出局”也是投手的功劳。但棒球队并不是只有投手,每个位置都有他存在的必要,投手必须相信其他队员才能安心投球,因为其他队员会把球安稳的送上垒包。团队中不能总存在领导一样的人物,如果是团队的队长,那么就要做好组织管理的工作,而不是命令其他人怎么怎么样。团队中必须是平等的,先辈有很高的RP,有很深的技术功底,自然就会有后辈尊敬你,而且等级划分对于团队合作是很不利的。各司其职棒球队中每个位置都有叫法,投手、捕手、一垒、二垒、三垒、游击、三个外野。每个人都有自己的管辖区域,内场被划分成四块,分别由一垒、二垒、三垒、游击管辖,外场被划分成三块由外野手管辖。整个团队必须划分清楚各个岗位,必须热爱自己的岗位,管好自己的区域。了解沟通开打的时候必须要守好垒包,不让对方队员上垒。四个人守三个垒包,一人接球,三人回垒,所以就要考虑谁回垒的问题。一般一垒手接球,二垒回一垒,游击回二垒;二垒手接球,一垒回一垒,游击回二垒;游击接球,一垒回一垒,二垒回二垒;三垒接球,一垒回一垒,二垒或游击回二垒;外野球时游击去接应外野,其他人回自己垒包,这是基本战术。所以每个位置必须观察球的走向和其他队员的行动,才好做出判断。这时沟通是必要的,区域划分好是为了明白你的本职工作,但这块区域是要和其他部分相连的,这并不是一条“三八线”,而是一条沟通的渠道。人与人的沟通是团队良好发展的基础。凝聚力如果说前面这些都是外在表现的话,那么这就是内在的精神。团队的凝聚力是很重要的,就像大家都同样的信仰。可以有个精神领袖,但并不是领导级别的,就像耶稣是基督教的精神领袖,大家都尊敬他,信服他。其实人人都想加入好团队,但先要考量下自己适合进入什么样的团队,能做好什么,能与什么样的人做沟通,再有目标的选择。每个团队肯定都有自己的习惯或者乖僻,这就是凝聚力的象征。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936242/5194874/1/item.html
今天刚上豆瓣,看见阿北推荐了一个活动,这个活动大致就是说去优酷截点电影的图放到豆瓣上来,然后评个奖什么的。原来豆瓣已经增加了预告片的功能,现在去豆瓣查看影片资料可以在下方看到预告片一栏,当然并不是所有的影片都有预告片。点进去后就能看到几分钟的预告片了,这次所有的视频都是由优酷提供的,但并没有跳转到优酷的页面,而是采用直接嵌入的方法。但问题是这个视频由谁来提供,用户提供的话影片和预告片是不是一致。豆瓣是我常去的网站之一,有很多书籍、音乐和电影的资料,还有很多很好的影评、书评、乐评。豆瓣的推荐系统做的相当出色,有时候会很神奇的觉得你怎么会知道我喜欢这个。豆瓣还有同城,其中有各种各样好玩的活动,豆瓣人富有创意的思维真的很吸引我。但我觉得同城完全可以从豆瓣中独立出来,很多活动已经不涉及到这些媒体资讯了,但给豆瓣的整个氛围带来不好的影响。我一直把豆瓣当成一个资讯的网站,豆瓣上并没有实体的东西。如果我想看一部电影,我上豆瓣的话什么也得不到,我只能上youtube或优酷,甚至自己去BT。但豆瓣上有条理清晰的资料,并带有推荐系统,豆瓣能推荐适合我的电影,我也可以咨询下其他豆瓣人的意见。豆瓣汇聚了大量的资讯,如果能和其他网站合作是个很好的发展方向,都说现在是互联网的冬天,大家都要抱着取暖,web2.0本来就是开放和分享的,合作是关键。豆瓣书籍很早就有了亚马逊,当当等的链接,现在又和优酷合作提供了视频链接,将来音乐呢?
http://item.feedsky.com/~feedsky/popomore/~7086498/140713378/5194874/1/item.html
最近gmail推出了一个新功能,可以在gmail直接和朋友语音和视频聊天。gmail本身就自带聊天功能,基于XMPP协议能和gtalk同步 ,可以想象成是一个嵌入gmail中的gtalk,可以直接在gmail中与人聊天。其实老外更喜欢email,有很多基于email的讨论论坛,只通过email发布和回复文章,类似google group。而IM的优势在于其实时性,可以想象成写信和电话,说清楚一件事当然是电话来的快,而讨论的话靠email也够了,人总是需要时间去思考问题的。老外使用google工具进行网上办公已经很普及了,不像中国的网络只停留在娱乐阶段。在gmail中添加视频功能可以达到更好的沟通效果,也可以用这个开视频会议。要使用这个功能必须安装一个插件,安装完后就可以使用了(当然必须有一个摄像头)。可惜这个插件现在还不支持linux,我还没有实验过,改天换个xp试试。想聊天的同学可以加我gtalk:sakura9515@gmail.com
http://item.feedsky.com/~feedsky/popomore/~7086498/152936249/5194874/1/item.html
兔子是因为三拌嘴才可爱,还是因为可爱了而被忽视了三拌嘴。其实三拌还挺恐怖的,上唇从中间分开而且还能看到门牙的缝隙,风吹动时还会一飘一飘的。今天是校运动会,大家都跑闽行运动去了,或者是跑文史楼前看林俊杰去了。我们也需要运动,于是就跑二副中去打棒球了,今天是额外的活动,所以没来多少人。先和社长练了会投球,然后柴骑着他新买的giant,并没有迟到的愧疚感。社长去拿他的手机,我就和柴练了起来。看来我也和柴一样的命运,在接一个高飞球的时候被砸到了嘴。嘴唇打在那颗突出来的门牙上,中间裂了一道缝。听柴说要去缝针,我觉得还是不用了,这种伤慢慢会愈合的。用舌头舔那缝还是挺深的,正好能让我的舌头愉悦一下,笑。晚上在买炒年糕的时候又碰到了柴,是有缘还是……不要想了。他请我吃了KFC,然后把我的抄年糕给当夜宵了,很不错的交易。柴是好孩子,这是在赎罪么……这点伤真的没什么,不就是流点血么,然后又被我喝进去了,而且都怪我球技不佳,现在接球都知道要躲避了。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936254/5194874/1/item.html
google在我心中的地位是很高的,我享受了google的各种服务,可以说我是个Gfan。google不仅提供了很好的用户体验,高效的办公,而且他穿插各种服务使他们成为一个整体,我可以使用google的产品完成每日必需的工作而只使用一个浏览器。 其实我用google doc的时间也不是很久,但使用后我就直接抛弃了office。不过office还是要装的,要教的表格或文章最后的格式都要重设,这也是google doc的一个缺点。我身边很少人用doc,他们都沉浸在M$的怀抱中。但我只是想让他们知道doc确实方便了我们不少,如果你想把一个文档email给对方,如果对方屏蔽了附件,那该怎么办。google doc只要一个链接,有时候根本不需要链接,只要分享给对方就可以了。那么我使用google doc有几个原因online就是线上操作,无论你在哪里只需要一根网线一个浏览器就能用上google doc,就能编辑你的文章、表格、ppt。你也不用带着个u盘跑到别人那里,还在担心对方有没有装office,或是对方office的版本问题。你也可以把它当成一个网络硬盘,存着你的文档表格,不用担心自己电脑里文档被人窃取,因为google有着世界一流的工程师帮你看管。offline有人要问既然online了怎么还offline,那就是google为用户着想之处。google有个产品叫gears,可以线下办公。有时候不能上网,你同样可以使用google doc,然后一旦上网了,gears就会自动与网上同步,把线下编写的传上去。功能google doc知道word,excel,ppt,还有pdf,可以把已有的上传也可以新建。还有就是可以自己编写调查表,嵌入你的网站接受匿名调查,或者直接发给别人,google doc会自己统计结果。google doc可以直接将文章发布到blogger上,这也可以让我大大省心,我这篇文章就是doc写的。共享这也是我比较欣赏的一点,都说web2.0都开放的时代,人人都希望把自己的东西分享给别人。google doc能够对共享的文档设置权限,可以分享给指定某些人,也可以和大家同时编辑一个文件。很惭愧我并没有试验过这个功能。办公对于学生来说google doc确实没什么吸引力,那么对于已经工作的来人说,google doc确实是个好工具。他可以配合gmail,calendar,gtalk来高效的办公。google doc对我来说已经是工作的一部分,有时还会去office修改一下格式给领导看,但那只是后续工作。不过好像google doc的web page preview确实有点问题,鱼雷已经帮我们解答了。还有google doc好像不支持匿名访问,你必须要有一个google帐号才可以,当然你注册了gmail就可以了。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936256/5194874/1/item.html
google在我心中的地位是很高的,我享受了google的各种服务,可以说我是个Gfan。google不仅提供了很好的用户体验,高效的办公,而且他穿插各种服务使他们成为一个整体,我可以使用google的产品完成每日必需的工作而只使用一个浏览器。 其实我用google doc的时间也不是很久,但使用后我就直接抛弃了office。不过office还是要装的,要教的表格或文章最后的格式都要重设,这也是google doc的一个缺点。我身边很少人用doc,他们都沉浸在M$的怀抱中。但我只是想让他们知道doc确实方便了我们不少,如果你想把一个文档email给对方,如果对方屏蔽了附件,那该怎么办。google doc只要一个链接,有时候根本不需要链接,只要分享给对方就可以了。那么我使用google doc有几个原因online就是线上操作,无论你在哪里只需要一根网线一个浏览器就能用上google doc,就能编辑你的文章、表格、ppt。你也不用带着个u盘跑到别人那里,还在担心对方有没有装office,或是对方office的版本问题。你也可以把它当成一个网络硬盘,存着你的文档表格,不用担心自己电脑里文档被人窃取,因为google有着世界一流的工程师帮你看管。offline有人要问既然online了怎么还offline,那就是google为用户着想之处。google有个产品叫gears,可以线下办公。有时候不能上网,你同样可以使用google doc,然后一旦上网了,gears就会自动与网上同步,把线下编写的传上去。功能google doc知道word,excel,ppt,还有pdf,可以把已有的上传也可以新建。还有就是可以自己编写调查表,嵌入你的网站接受匿名调查,或者直接发给别人,google doc会自己统计结果。google doc可以直接将文章发布到blogger上,这也可以让我大大省心,我这篇文章就是doc写的。共享这也是我比较欣赏的一点,都说web2.0都开放的时代,人人都希望把自己的东西分享给别人。google doc能够对共享的文档设置权限,可以分享给指定某些人,也可以和大家同时编辑一个文件。很惭愧我并没有试验过这个功能。办公对于学生来说google doc确实没什么吸引力,那么对于已经工作的来人说,google doc确实是个好工具。他可以配合gmail,calendar,gtalk来高效的办公。google doc对我来说已经是工作的一部分,有时还会去office修改一下格式给领导看,但那只是后续工作。不过好像google doc的web page preview确实有点问题,鱼雷已经帮我们解答了。还有google doc好像不支持匿名访问,你必须要有一个google帐号才可以,当然你注册了gmail就可以了。
http://item.feedsky.com/~feedsky/popomore/~7086498/131675882/5194874/1/item.html
今天算是这几天来最开心的一天,因为困扰着我的问题终于解决了,当然只是一小部分。我最终的目的就是将shapefile格式直接缓存在硬盘,然后用户访问时服务器直接获取图片就行了。由于我最后的论文是要用到geoserver的,然后就懒得看AGS,不用浪费那么多时间。geoserver提到的缓存工具共有两个:tilecache和geowebcache。geowebcache是java写的,整合进geoserer中。tilecache则是python写的一个小程序,最近又很喜欢python,所以就拿这个练练手。tilecache是由MetaCarta Labs开发的用来缓存地图,配合openlayers使地图显示更快。可以把tilecache想成一个中间件,WMS服务器不用自己缓存地图,tilecache可以帮他完成。tilecache支持多种服务器和多种OGC服务标准,以及支持多种请求方式和格式。tilecache的配置可以看ESRI论坛的教程,因为我是用ubuntu和apache的,可能配置上有些不同,但使用大致还是相同的。tilecache中有一个tilecache.cfg文件,这是个配置文件,当有用户请求时,tilecache会载入这个文件。下面是我的配置文件,[cache]type=GoogleDisk #默认是Disk,googledisk是以z/x/y.extension的方式存储base=/tmp/tilecache #缓存的路径[google] #图层的名称type=WMSLayer #url=http://192.168.1.106:8080/geoserver/wms #wms的urllayers=topp:states #wms所拥有的图层extension=pngresolutions=156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142 #划分比例尺,不明白的可以看看这篇srs=EPSG:900913 #google map的投影bbox=-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892 #显示的范围如果不使用resolutions,也可以用maxResolution设定最大的比例尺,系统会根据level自动声称resolutions,但如果同时设置,resolutions会覆盖level。bbox和resolutions要根据不同的投影来计算,之前我就是犯了这个错误,用900913,但bbox设成了-180,-90,180,90,地图怎么也显示不出来。接下来就用openlayers来显示,创建一个map,在option中resolutions和bbox都要和配置文件中的相同,单位要是米。var options = { resolutions:[156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142], projection: new OpenLayers.Projection("EPSG:900913"), units: "m", maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34,20037508.34), };map = new OpenLayers.Map('map',options);添加google地图var googleMap = new OpenLayers.Layer.Google( "Google 卫星图", { type: G_SATELLITE_MAP, sphericalMercator: true } );map.addLayer(googleMap);添加一个tilecache的WMS wms= new OpenLayers.Layer.WMS( "wms", "http://localhost/tilecache/tilecache.py", { layers: 'google', srs: 'EPSG:900913', format: 'image/png', transparent: true }, { maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011), reproject: true, opacity: 0.4, isBaseLayer: false } );map.addLayer(wms);如果以能成功显示的话,那么恭喜你,你已经可以成功叠加了google map和tilecache生成的WMS,你也可以去缓存查看已缓存的图片。现在可以用openlayers的另一个类直接访问缓存,可用firebug来看下图片的请求地址,是以http://localhost/tilecache/tilecache.py/1.0.0/google/z/x/y.extension的形式。 tms = new OpenLayers.Layer.TMS( "google", "http://localhost/tilecache/tilecache.py/", { serviceVersion: "1.0.0", layername: "google", type: "png", opacity: 0.4, maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011), isBaseLayer: false } ); map.addLayer(tms);但这不是我的最终目的,我是想先缓存完图片然后再访问,而不是边访问边缓存。tilecache也想到了这点,他有一个小工具tilecache_seed.py,可以帮你完成这个工作。python tilecache_seed.py "http://localhost/tilecache/tilecache.py" google 5 10 -14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011 上面代码是说将配置文件中图层名为google,在-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011这个范围中的缩放等级为5到10的缓存起来,最后直接用OpenLayers.Layer.TMS访问就可以了。
http://item.feedsky.com/~feedsky/popomore/~7086498/131638020/5194874/1/item.html
今天算是这几天来最开心的一天,因为困扰着我的问题终于解决了,当然只是一小部分。我最终的目的就是将shapefile格式直接缓存在硬盘,然后用户访问时服务器直接获取图片就行了。由于我最后的论文是要用到geoserver的,然后就懒得看AGS,不用浪费那么多时间。geoserver提到的缓存工具共有两个:tilecache和geowebcache。geowebcache是java写的,整合进geoserer中。tilecache则是python写的一个小程序,最近又很喜欢python,所以就拿这个练练手。tilecache是由MetaCarta Labs开发的用来缓存地图,配合openlayers使地图显示更快。可以把tilecache想成一个中间件,WMS服务器不用自己缓存地图,tilecache可以帮他完成。tilecache支持多种服务器和多种OGC服务标准,以及支持多种请求方式和格式。tilecache的配置可以看ESRI论坛的教程,因为我是用ubuntu和apache的,可能配置上有些不同,但使用大致还是相同的。tilecache中有一个tilecache.cfg文件,这是个配置文件,当有用户请求时,tilecache会载入这个文件。下面是我的配置文件,[cache]type=GoogleDisk #默认是Disk,googledisk是以z/x/y.extension的方式存储base=/tmp/tilecache #缓存的路径[google] #图层的名称type=WMSLayer #url=http://192.168.1.106:8080/geoserver/wms #wms的urllayers=topp:states #wms所拥有的图层extension=pngresolutions=156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142 #划分比例尺,不明白的可以看看这篇srs=EPSG:900913 #google map的投影bbox=-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892 #显示的范围如果不使用resolutions,也可以用maxResolution设定最大的比例尺,系统会根据level自动声称resolutions,但如果同时设置,resolutions会覆盖level。bbox和resolutions要根据不同的投影来计算,之前我就是犯了这个错误,用900913,但bbox设成了-180,-90,180,90,地图怎么也显示不出来。接下来就用openlayers来显示,创建一个map,在option中resolutions和bbox都要和配置文件中的相同,单位要是米。var options = { resolutions:[156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142], projection: new OpenLayers.Projection("EPSG:900913"), units: "m", maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34,20037508.34), };map = new OpenLayers.Map('map',options);添加google地图var googleMap = new OpenLayers.Layer.Google( "Google 卫星图", { type: G_SATELLITE_MAP, sphericalMercator: true } );map.addLayer(googleMap);添加一个tilecache的WMS wms= new OpenLayers.Layer.WMS( "wms", "http://localhost/tilecache/tilecache.py", { layers: 'google', srs: 'EPSG:900913', format: 'image/png', transparent: true }, { maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011), reproject: true, opacity: 0.4, isBaseLayer: false } );map.addLayer(wms);如果以能成功显示的话,那么恭喜你,你已经可以成功叠加了google map和tilecache生成的WMS,你也可以去缓存查看已缓存的图片。现在可以用openlayers的另一个类直接访问缓存,可用firebug来看下图片的请求地址,是以http://localhost/tilecache/tilecache.py/1.0.0/google/z/x/y.extension的形式。 tms = new OpenLayers.Layer.TMS( "google", "http://localhost/tilecache/tilecache.py/", { serviceVersion: "1.0.0", layername: "google", type: "png", opacity: 0.4, maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011), isBaseLayer: false } ); map.addLayer(tms);但这不是我的最终目的,我是想先缓存完图片然后再访问,而不是边访问边缓存。tilecache也想到了这点,他有一个小工具tilecache_seed.py,可以帮你完成这个工作。python tilecache_seed.py "http://localhost/tilecache/tilecache.py" google 5 10 -14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011 上面代码是说将配置文件中图层名为google,在-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011这个范围中的缩放等级为5到10的缓存起来,最后直接用OpenLayers.Layer.TMS访问就可以了。
http://item.feedsky.com/~feedsky/popomore/~7086498/152936257/5194874/1/item.html
今天终于当面看见小偷了,其实也没当面。那时候正好在睡觉,那群小偷在我眼皮子地下把别人的钱包给偷了。今天一大早起来去博爱医院体检,于是我就那么去了,于是迷路了,最后还是求助于的哥。回来的时候坐的44路,正为今天的早起而补眠。旁边一个女生就一直在打电话,不过没干扰到我,我有耳塞呢。不一会儿后座一个大叔就叫了起来“小姑娘,你的钱包给偷了,快去追”。那个姑娘还精神恍惚,并没意识到这点,无动于衷。大叔急了,推了她一下,姑娘这时才发现有人叫她。听了大叔的话傻了眼,马上跳车追小偷去了。姑娘走后大叔还一个劲的说,说他自己如何发现了小偷,如何告诉姑娘的英勇事迹。我在一边听着就纳闷了,既然你看见了就去制止,还在一边起什么哄。不过想想也是,大叔年纪大了,估计没这个胆子勇斗歹徒了,万一见了红可不好了。可怜这姑娘在这么少人的车中也会被偷,防范意识还是不够。于是我就继续在睡梦中YY我的英勇事迹没看到小偷的正脸的泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/132721455/5194874/1/item.html
今天从中北到闽行真是艰辛,早知道坐校车就好了
金沙江路——3号线——南站——1号线——莘庄——5号线——剑川路——打的——华师
最冤的是应该坐到东昌路换公交的,我直接在剑川路就下了,最后迫不得已的打了的。
的哥还真有意思,看见高架下一堆警察就开始唠叨了起来。说现在到处是警察,查的可严了,路上到处是摄像机,指不定哪天就被罚了。这不这大哥就被罚了两次,跟我一直在抱怨这事。说国家经济危机并且办了几件大事把国库都掏空了,加大交通治安力度,既可避免交通事故又有一笔可观的收入。
我在一旁附和着,觉得他说的也不无道理。国家这是劳民伤财的活,运动会上拿了个第一或者
乘个小卫星上天展现大国的雄姿。但人民并没得到什么利益,反而这些都要加在人民的头上。反正中国人多,一人拿个十块么也差不多了。
打的还是没赶上面试的泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/129472945/5194874/1/item.html
我要想开题报告
我要想日本战国
我要想棒球
我要想工作
…………
还有,我要向你
每天脑子里会出现无数个问题
然后这些问题就会一个个消失
回到他原来应该在的位置
人们并没有足够的时间来思考一个问题
因为时间和问题的数量不成正比
有时候我甚至想不起来我今天要做什么
或是懒得去想
千头万绪地把整个头包住
如果能把这些练成一个丝按部就班的话
那才是我想要的
但这是不受控制的
新问题层出不穷
所以必须放弃一些东西
把能解决的先解决
想,还是不想来的轻松
泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/132721461/5194874/1/item.html
生和死真是一对冤家
或者的人总是惧怕死亡
殊不知是为了什么而活着
活着对一个人很重要
能得到一切
但如果没有死
生又有什么意义呢
死是作为生的底限而存在的东西
都说三十而立四十不惑
那是因为离死越来越近了
还不做点什么的话就枉过一生
永生是可怕的
他们可以奢侈的滥用时间
但他们找不到活着的意义
或许这更是活地狱
http://item.feedsky.com/~feedsky/popomore/~7086498/129472950/5194874/1/item.html
YOU はSHOCK健次郎胸中的北斗七星是不可磨灭的那是阿申给他的礼物于是我肚子上也长出了7星那是谁给的呢还真是7颗还真是十字毛无视吧腰很粗的泡泡上
http://milkpopo.blogspot.com/feeds/283741055147605748/comments/default
好吧,继续第一天的倒霉
现在是第二天
并不是说计划不完美
而是中间的突发状况太多
无锡的景点都太远太远
人实在太多太多
车实在太慢太慢
到鼋头渚的车要等
摆渡的船也要等
出来还要等
最后本来买好的票误点了
于是只好当场再买
还好无锡到常州比较近
我算见识到黄金周热门景点的热闹程度了
在常州网吧上网的泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/132721466/5194874/1/item.html
好吧,继续第一天的倒霉现在是第二天并不是说计划不完美而是中间的突发状况太多无锡的景点都太远太远人实在太多太多车实在太慢太慢到鼋头渚的车要等摆渡的船也要等出来还要等最后本来买好的票误点了于是只好当场再买还好无锡到常州比较近我算见识到黄金周热门景点的热闹程度了在常州网吧上网的泡泡上
http://milkpopo.blogspot.com/feeds/5581950360641105351/comments/default
终于又开始旅行拉这次国庆并没有跑太远打算沿着沪宁一直到南京今天是第一天,其实一开始就不顺——火车问题车票是提前了一天买的买来后竟然在网上查不到看来是为了国庆新加的班次这不,还没开呢就晚点了注定了他的命运是晚点其实这种新增的班次纯粹是为了装人反正把这堆人运过去,什么时候运到就没准了中国人的锐气已经被削圆了不到万不得已是不会奋起反抗的那我就在人堆里睡觉吧硬座是硬卧做的到了无锡就马上买了第二天到常州的票想想第二天肯定不好买然后就被一大叔拖上了去灵山的车于是又被换上了一辆小车于是再次被换上了一辆大车我象牲口似的被倒来倒去终于倒到灵山灵山真是个美丽的地方那大佛就在山中直直地站着好远好远就看见了在两山的凹陷处,其实那叫山谷就在那个地方矗立了一根东西大佛啊大佛,你在哪不好,偏偏在屁股眼那个位置言归真传,九龙灌浴真是惊到我了真是气势磅礴,天空中水气弥漫最后水量激增,全洒在游客身上了不过有种腾云驾雾的感觉晚上路过了无锡基督教堂就顺便进去看看了之前有徐家汇门卫的阴影不敢进去不过这里的门卫友好多了,走的时候还主动向我说再见难道这就是天主教和基督教的区别教堂里面在开青年聚会唱着那种通俗曲调的经文?反正是中文就感觉怪怪的但那种气氛却让我很震惊决不是哗众取宠,大家都很诚心的在唱着由心而发,不嬉笑,也不在乎别人怎么看待确实信仰是神圣的,决不容其他人破坏他而中国所谓的佛法我感觉都快失传了到处传着铜臭味跑了一天就有点累的泡泡上
http://milkpopo.blogspot.com/feeds/7792898215720611635/comments/default
YOU はSHOCK健次郎jklj
http://milkpopo.blogspot.com/#comment-form
回忆确实是美好的但记录下那一瞬间才能回味在菜头那里看到了这篇文其实之前以在多处看到这个游戏了我也试着去找我出生的那天他身边发生了什么事以什么样的照片记录了当时的情景可惜并没有找到20年的时间里每天都坚持做着同一件事记录下当时的一瞬间说起来简单,但也没那么容易做到我很想知道断档的那些日子里到底发生了什么以至于没能完成当天的使命Jamie Livingston,一个在纽约的摄影师,从1979年3月31日开始,到1997年10月25日结束,每天用Polaroid相机拍摄一张照片,形成 了一个跨越18年的巨大摄影作品集《宝丽莱一日》,一共6697张,6697个日子,6697个人。1997年10月5日是最后一张,因为 Livingston在那天死了。有兴趣的同学可以去找自己的那天http://photooftheday.hughcrawford.com/并没有找到照片的泡泡上
http://milkpopo.blogspot.com/feeds/5976796422677165418/comments/default
回忆确实是美好的
但记录下那一瞬间才能回味
在菜头那里看到了这篇文
其实之前以在多处看到这个游戏了
我也试着去找我出生的那天他身边发生了什么事
以什么样的照片记录了当时的情景
可惜并没有找到
20年的时间里
每天都坚持做着同一件事
记录下当时的一瞬间
说起来简单,但也没那么容易做到
我很想知道断档的那些日子里到底发生了什么
以至于没能完成当天的使命
Jamie Livingston,一个在纽约的摄影师,从1979年3月31日开始,到1997年10月25日结束,每天用Polaroid相机拍摄一张照片,形成 了一个跨越18年的巨大摄影作品集《宝丽莱一日》,一共6697张,6697个日子,6697个人。1997年10月5日是最后一张,因为 Livingston在那天死了。
有兴趣的同学可以去找自己的那天
http://photooftheday.hughcrawford.com/
并没有找到照片的泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/129472954/5194874/1/item.html
回忆确实是美好的
但记录下那一瞬间才能回味
在菜头那里看到了这篇文
其实之前以在多处看到这个游戏了
我也试着去找我出生的那天他身边发生了什么事
以什么样的照片记录了当时的情景
可惜并没有找到
20年的时间里
每天都坚持做着同一件事
记录下当时的一瞬间
说起来简单,但也没那么容易做到
我很想知道断档的那些日子里到底发生了什么
以至于没能完成当天的使命
Jamie Livingston,一个在纽约的摄影师,从1979年3月31日开始,到1997年10月25日结束,每天用Polaroid相机拍摄一张照片,形成 了一个跨越18年的巨大摄影作品集《宝丽莱一日》,一共6697张,6697个日子,6697个人。1997年10月5日是最后一张,因为 Livingston在那天死了。
有兴趣的同学可以去找自己的那天
http://photooftheday.hughcrawford.com/
并没有找到照片的泡泡上
http://item.feedsky.com/~feedsky/popomore/~7086498/132721468/5194874/1/item.html
1933是数字,1933是年代,1933是历史,1933是建筑最近的活动都是在豆瓣中发现的最初听说1933也是在豆瓣今天和子儿约去看巴黎艺术展但转1933成了重头戏本末倒置了沿着沙泾路到底就看到一片建筑群最吸引我的是那路灯进入1933,到处都在装修不过大部分还保持原来的形态不知道政府开发后会变成怎么个模样 我宁愿是情调酒吧或者个性商店而不要品牌商店和高级餐厅1933外方内圆的,内外错层式结构楼梯特别多,四通八达就像一个大迷宫走在里面都快迷路了最近好像很复古很喜欢老式的建筑正想搬张床就在这里住下了想睡仓库的泡泡上
http://milkpopo.blogspot.com/feeds/267540679147966794/comments/default
电视机确实是一个伟大的发明它不但能使整个世界变为地球村还能促进睡眠电视看来可以作为催眠的一种手段了而且可以让你做着各种各样的梦点头也是获取信息的一种方法这种潜睡眠或许是背书的良方“1+1=2,记住了吗?”点头“那1+2呢?”点头“不要老是点头”点头“……”
http://milkpopo.blogspot.com/feeds/5350737289805985199/comments/default
把身上的灰尘弄掉站起来,给我饭!我希望你这样大声的叫。殿下!我不希望你因此而骄傲,你只是打倒美浓一条蝮而已,那也什么了不起!阿浓的殿下才不只是这 样而已!他是一个大英雄,越磨越亮,象大地,天空,象云一样,是一个积极进取的人。你还我阿浓的丈夫,把我的丈夫还回来。殿下,在阿浓的膝盖上,还我阿浓 的丈夫…… ——浓姬 《织田信长 菊与刀》爱一个人到底是怎么一回事服服帖帖地听那个人的话还是要让那个人顺应自己的想法改变大多数人会选择其一吧但如果那个人真的改变了那那个人还是你爱的那个人吗如果那个人变成了另外一个人你还会爱他/她么如果不喜欢一个人的作风或者习惯那么你只有一件事可做抛弃他/她不愿改变任何人的泡泡上
http://milkpopo.blogspot.com/feeds/8695689381154035697/comments/default
周六和雪娇去了徐家汇的天主教堂终于可以参加弥撒了虽然并没有这种信仰但确实有东西是值得学习的没有信仰是一件可怕的事没有什么可以控制住你人可以无法无天所谓的共产党也可以算作一种信仰吧,笑去的人并不多也并非所有人都是教友但我相信大家都是真心祝福他们的陌生人之间并没有一件虚伪的外套神父的话发人深省妻子和丈夫是一个整体不能一直索取不然肯定会有枯竭的一天你们作妻子的,当顺服自己的丈夫,如同顺服主。因为丈夫是妻子的头,如同基督是教会的头。他又是教会全体的救主。教会怎样顺服基督,妻子也要怎样凡事顺服丈夫。 你们作丈夫的,要爱你们的妻子,正如基督爱教会,为教会舍己。要用水借着道,把教会洗净,成为圣洁,可以献给自己,作个荣耀的教会,毫无玷污皱纹等类的病,乃是圣洁没有瑕疵的。丈夫也当照样爱妻子,如同爱自己的身子。爱妻子,便是爱自己了。从来没有人恨恶自己的身子,总是保养顾惜,正像基督待教会一样。因我们是他身上的肢体。(有古卷在此有就是他的骨他的肉)。为这个缘故,人要离开父母,与妻子连合,二人成为一体。这是极大的奥秘,但我是指着基督和教会说的。然而你们各人都当爱妻子,如同爱自己一样。妻子也当敬重她的丈夫。——以弗所书 5:22-33 很懒不想也日志的泡泡上
http://milkpopo.blogspot.com/2008/09/blog-post_22.html
转眼就10月了不过这天气也没个10月的样前阵子冷的半死现在又热起来了于是又去买了摩卡不知道被谁带的开始喜欢喝奶茶(东南?斐?)不过我最钟爱的还是奶绿现在又多了一样——摩卡冰旋风早些时候见妹妹在博里说的于是一喝就爱上了咖啡+奶+冰这组合真是夏天的绝配 可惜我这吝啬的人对自己也吝啬奶绿的1.5倍=一顿饭好吧,我飘 吝啬->少喝奶绿的泡泡上
http://milkpopo.blogspot.com/2008/09/blog-post_19.html

