登高望远

Yanxin's Blog – Focus on Linux, JavaScript, Economy, Travel

JQuery设计思想

jQuery是目前使用最广泛的javascript函数库。

据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。

对于网页开发者来说,学会jQuery是必要的。因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果。

虽然jQuery上手简单,比其他库容易学会,但是要全面掌握,却不轻松。因为它涉及到网页开发的方方面面,提供的各种方法和内部变化有上千种之多。初学者常常感到,入门很方便,提高很困难。

目前,互联网上最好的jQuery入门教材,是Rebecca Murphey写的《jQuery基础》(jQuery Fundamentals)。在Google里搜索”jQuery 培训”,此书排在第一位。jQuery官方团队已经同意,把此书作为官方教程的基础。

这本书虽然是入门教材,但也足足有100多页。我对它做了一个详细的笔记,试图理清jQuery的设计思想,找出学习的脉络。我的目标是全面掌握jQuery,遇到问题的时候,心里有底,基本知道使用它的哪一个功能,然后可以迅速从手册中找到具体的写法。

下面就是我的笔记,它应该是目前网上不多的jQuery中文教程之一。你只需要一点javascript语言的基本知识,就能看懂它,在最短的时间里,掌握jQuery的所有主要方面(除了ajax插件开发)。

===========================================

jQuery设计思想

原文网址:http://jqfundamentals.com/book/

阮一峰 翻译整理

【目录】

一、选择网页元素

二、改变结果集

三、链式操作

四、元素的操作:取值和赋值

五、元素的操作:移动

六、元素的操作:复制、删除和创建

七、工具方法

八、事件操作

九、特殊效果

【正文】

一、选择网页元素

jQuery的基本设计和主要用法,就是“选择某个网页元素,然后对其进行某种操作”。这是它区别于其他函数库的根本特点。

使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$),然后得到被选中的元素。

选择表达式可以是CSS选择器

$(document) //选择整个文档对象

$(‘#myId’) //选择ID为myId的网页元素

$(‘div.myClass’) // 选择class为myClass的div元素

$(‘input[name=first]‘) // 选择name属性等于first的input元素

也可以是jQuery特有的表达式

$(‘a:first’) //选择网页中第一个a元素

$(‘tr:odd’) //选择表格的奇数行

$(‘#myForm :input’) // 选择表单中的input元素

$(‘div:visible’) //选择可见的div元素

$(‘div:gt(2)’) // 选择所有的div元素,除了前三个

$(‘div:animated’) // 选择当前处于动画状态的div元素

二、改变结果集

如果选中多个元素,jQuery提供过滤器,可以缩小结果集:

$(‘div’).has(‘p’); // 选择包含p元素的div元素

$(‘div’).not(‘.myClass’); //选择class不等于myClass的div元素

$(‘div’).filter(‘.myClass’); //选择class等于myClass的div元素

$(‘div’).first(); //选择第1个div元素

$(‘div’).eq(5); //选择第6个div元素

有时候,我们需要从结果集出发,移动到附近的相关元素,jQuery也提供了在DOM树上的移动方法

$(‘div’).next(‘p’); //选择div元素后面的第一个p元素

$(‘div’).parent(); //选择div元素的父元素

$(‘div’).closest(‘form’); //选择离div最近的那个form父元素

$(‘div’).children(); //选择div的所有子元素

$(‘div’).siblings(); //选择div的同级元素

三、链式操作

选中网页元素以后,就可以对它进行某种操作。

jQuery允许将所有操作连接在一起,以链条的形式写出来,比如:

$(‘div’).find(‘h3′).eq(2).html(‘Hello’);

分解开来,就是下面这样:

$(‘div’) //找到div元素

.find(‘h3′) //选择其中的h3元素

.eq(2) //选择第3个h3元素

.html(‘Hello’); //将它的内容改为Hello

这是jQuery最令人称道、最方便的特点。它的原理在于每一步的jQuery操作,返回的都是一个jQuery对象,所以不同操作可以连在一起。

jQuery还提供了.end()方法,使得结果集可以后退一步:

$(‘div’)

.find(‘h3′)

.eq(2)

.html(‘Hello’)

.end() //退回到选中所有的h3元素的那一步

.eq(0) //选中第一个h3元素

.html(‘World’); //将它的内容改为World

四、元素的操作:取值和赋值

操作网页元素,最常见的需求是取得它们的值,或者对它们进行赋值。

jQuery使用同一个函数,来完成取值(getter)和赋值(setter)。到底是取值还是赋值,由函数的参数决定。

$(‘h1′).html(); //html()没有参数,表示取出h1的值

$(‘h1′).html(‘Hello’); //html()有参数Hello,表示对h1进行赋值

常见的取值和赋值函数如下:

.html() 取出或设置html内容

.text() 取出或设置text内容

.attr() 取出或设置某个属性的值

.width() 取出或设置某个元素的宽度

.height() 取出或设置某个元素的高度

.val() 取出某个表单元素的值

需要注意的是,如果结果集包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值(.text()例外,它取出所有元素的text内容)。

五、元素的操作:移动

如果要移动选中的元素,有两种方法:一种是直接移动该元素,另一种是移动其他元素,使得目标元素达到我们想要的位置。

假定我们选中了一个div元素,需要把它移动到p元素后面。

第一种方法是使用.insertAfter(),把div元素移动p元素后面:

$(‘div’).insertAfter(‘p’);

第二种方法是使用.after(),把p元素加到div元素前面:

$(‘p’).after(‘div’);

表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。

使用这种模式的操作方法,一共有四对:

.insertAfter().after():在现存元素的外部,从后面插入元素

.insertBefore().before():在现存元素的外部,从前面插入元素

.appendTo().append():在现存元素的内部,从后面插入元素

.prependTo().prepend():在现存元素的内部,从前面插入元素

六、元素的操作:复制、删除和创建

复制元素使用.clone()

删除元素使用.remove().detach()。两者的区别在于,前者不保留被删除元素的事件,后者保留,有利于重新插入文档时使用。

清空元素内容(但是不删除该元素)使用.empty()

创建新元素的方法非常简单,只要把新元素直接传入jQuery的构造函数就行了:

$(‘<p>Hello</p>’);

$(‘<li>new list item</li>’);

$(‘ul’).append(‘<li>list item</li>’);

七、工具方法

除了对选中的元素进行操作以外,jQuery还提供一些工具方法(utility),不必选中元素,就可以直接使用。

如果你懂得Javascript语言的继承原理,那么就能理解工具方法的实质。它是定义在jQuery构造函数上的方法,即jQuery.method(),所以可以直接使用。而那些操作元素的方法,是定义在构造函数的prototype对象上的方法,即jQuery.prototype.method(),所以必须生成实例(即选中元素)后使用。如果不理解这种区别,问题也不大,只要把工具方法理解成,是像javascript原生函数那样,可以直接使用的方法就行了。

常用的工具方法有以下几种:

$.trim() 去除字符串两端的空格。

$.each() 遍历一个数组或对象。

$.inArray() 返回一个值在数组中的索引位置。如果该值不在数组中,则返回-1。

$.grep() 返回数组中符合某种标准的元素。

$.extend() 将多个对象,合并到第一个对象。

$.makeArray() 将对象转化为数组。

$.type() 判断对象的类别(函数对象、日期对象、数组对象、正则对象等等)。

$.isArray() 判断某个参数是否为数组。

$.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。

$.isFunction() 判断某个参数是否为函数。

$.isPlainObject() 判断某个参数是否为用”{}”或”new Object”建立的对象。

$.support() 判断浏览器是否支持某个特性。

八、事件操作

jQuery可以对网页元素绑定事件。根据不同的事件,运行相应的函数。

$(‘p’).click(function(){

alert(‘Hello’);

});

目前,jQuery主要支持以下事件:

.blur() 表单元素失去焦点。

.change() 表单元素的值发生变化

.click() 鼠标单击

.dblclick() 鼠标双击

.focus() 表单元素获得焦点

.focusin() 子元素获得焦点

.focusout() 子元素失去焦点

.hover() 同时为mouseenter和mouseleave事件指定处理函数

.keydown() 按下键盘(长时间按键,只返回一个事件)

.keypress() 按下键盘(长时间按键,将返回多个事件)

.keyup() 松开键盘

.load() 元素加载完毕

.mousedown() 按下鼠标

.mouseenter() 鼠标进入(进入子元素不触发)

.mouseleave() 鼠标离开(离开子元素不触发)

.mousemove() 鼠标在元素内部移动

.mouseout() 鼠标离开(离开子元素也触发)

.mouseover() 鼠标进入(进入子元素也触发)

.mouseup() 松开鼠标

.ready() DOM加载完成

.resize() 浏览器窗口的大小发生改变

.scroll() 滚动条的位置发生变化

.select() 用户选中文本框中的内容

.submit() 用户递交表单

.toggle() 根据鼠标点击的次数,依次运行多个函数

.unload() 用户离开页面

以上这些事件在jQuery内部,都是.bind()的便捷方式。使用.bind()可以更灵活地控制事件,比如为多个事件绑定同一个函数:

$(‘input’).bind(

‘click change’, //同时绑定click和change事件

function() {

alert(‘Hello’);

}

);

有时,你只想让事件运行一次,这时可以使用.one()方法。

$(“p”).one(“click”, function() {

alert(“Hello”); //只运行一次,以后的点击不会运行

});

.unbind()用来解除事件绑定。

$(‘p’).unbind(‘click’);

所有的事件处理函数,都可以接受一个事件对象(event object)作为参数,比如下面例子中的e:

$(“p”).click(function(e) {

alert(e.type); // “click”

});

这个事件对象有一些很有用的属性和方法:

event.pageX 事件发生时,鼠标距离网页左上角的水平距离

event.pageY 事件发生时,鼠标距离网页左上角的垂直距离

event.type 事件的类型(比如click)

event.which 按下了哪一个键

event.data 在事件对象上绑定数据,然后传入事件处理函数

event.target 事件针对的网页元素

event.preventDefault() 阻止事件的默认行为(比如点击链接,会自动打开新页面)

event.stopPropagation() 停止事件向上层元素冒泡

在事件处理函数中,可以用this关键字,返回事件针对的DOM元素:

$(‘a’).click(function() {

if ($(this).attr(‘href’).match(‘evil’)) { //如果确认为有害链接

e.preventDefault(); //阻止打开

$(this).addClass(‘evil’); //加上表示有害的class

}

});

有两种方法,可以自动触发一个事件。一种是直接使用事件函数,另一种是使用.trigger().triggerHandler()

$(‘a’).click();

$(‘a’).trigger(‘click’);

九、特殊效果

jQuery允许对象呈现某些特殊效果

$(‘h1′).show(); //展现一个h1标题

常用的特殊效果如下:

.fadeIn() 淡入

.fadeOut() 淡出

.fadeTo() 调整透明度

.hide() 隐藏元素

.show() 显示元素

.slideDown() 向下展开

.slideUp() 向上卷起

.slideToggle() 依次展开或卷起某个元素

.toggle() 依次展示或隐藏某个元素

除了.show().hide(),所有其他特效的默认执行时间都是400ms(毫秒),但是你可以改变这个设置。

$(‘h1′).fadeIn(300); // 300毫秒内淡入

$(‘h1′).fadeOut(‘slow’); // 缓慢地淡出

在特效结束后,可以指定执行某个函数。

$(‘p’).fadeOut(300, function() { $(this).remove(); });

更复杂的特效,可以用.animate()自定义。

$(‘div’).animate(

{

left : “+=50″, //不断右移

opacity : 0.25 //指定透明度

},

300, // 持续时间

function() { alert(‘done!’); } //回调函数

);

.stop().delay()用来停止或延缓特效的执行。

$.fx.off如果设置为true,则关闭所有网页特效。

十大数字决定IT人的健康

来源:http://www.cnbeta.com/articles/139761.htm

体检时,化验单上的一堆数值,总让你看得“云里雾里”。而无论是手机号码,还是银行卡密码,你却能背得滚瓜烂熟。其实,与身体有关的一些数字值得一生牢记。日前,美国《真简单》杂志发表了各科名医整理出的一组与健康有关的最完美指标,供IT精英们参考。
1.血压:<120/80毫米汞柱。
美国克利夫兰专业女性健康中心主任霍利·萨克博士表示,血压较低者更健康。血压达到或超过140/90毫米汞柱,就被视为高血压。最厉害的“杀手”往往“杀人于无形”,高血压也是如此,它通常无明显症状,一旦拖延不治,会导致中风、心脏病、肾脏损伤、视力及记忆衰退等。
对此,首都医科大学附属宣武医院心内科主任华琦建议,做到以下几点能有效预防:
一、减重。减少热量,膳食平衡,使体重BMI指数保持在20—24。
二、限盐。北方人可先将每天食盐量降到8克,以后再降至6克,南方人可控制在6克以下。
三、减少膳食脂肪。总脂肪要低于总热量的30%,饱和脂肪要低于10%,每天增加新鲜蔬菜400—500克,水果100克,肉类50—100克,鱼虾50克;蛋类每周3—4个,奶类每天250克,食油每天20—25克,少吃糖类和甜食。
四、每周三四次、每次30分钟左右的运动。
五、老年人应增加社交机会,选择适合自己的体育、绘画、音乐等文化活动,保持乐观心态。
六、戒烟、限酒。不吸烟,男性每天饮酒不超过20—30克,女性不超过15—20克。

2.空腹血糖:<5.5毫摩尔/升。
空腹至少8小时测得的血糖即为空腹血糖,一旦达到或超过7毫摩尔/升,即被诊断为糖尿病。糖尿病不但可使心脏病风险加倍,还会增加肾病、失明等风险。美国弗吉尼亚州内科专家温迪·S·克雷恩表示,糖化血红蛋白(HbA1c)测试,可以反映糖尿病患者在以往三个月内的平均血糖情况。人过了45岁之后,每3年应查一次血糖。身体超重及有糖尿病家族史的人群应更早检查。另外,减肥也是重要的预防措施。

3.总胆固醇:<5.2毫摩尔/升。
总胆固醇是测量血液中所有的胆固醇和甘油三酯,美国纽约大学女性心脏研究中心主任妮卡·戈登伯格博士称,胆固醇水平越高心脏病危险越大。总胆固醇的理想值应在5.2以下,超过6.2,就是心脏病高危人群。戈登伯格博士提醒,20岁后应该检查胆固醇。一旦检查结果异常,最好多锻炼,坚持低胆固醇、低饱和脂肪及低反式脂肪饮食,每年查一次胆固醇。必要时,还应服用降胆固醇药物。

4.坏胆固醇(LDL)<2.6毫摩尔/升,好胆固醇(HDL)>1.3毫摩尔/升。
有人把“坏胆固醇”比喻成饺子馅里的油汤,它的累积使动脉变成了皮薄多油的“饺子”,很容易破裂。而它正是导致动脉硬化、心脏病及中风危险的罪魁祸首。LDL水平一般应控制在2.6毫摩尔/升以下,糖尿病或心脏病患者则应控制在1.8毫摩尔/升以下。HDL(高密度脂蛋白)叫做“好胆固醇”,顾名思义,这个数值应该越高越好。HDL有助去除血管中的LDL。女性HDL低于1.3毫摩尔/升是心脏病的一大危险因素,而高于1.6毫摩尔/升则有助于保护心脏。戈登伯格建议,为了提高HDL,应该戒烟,常锻炼,以单不饱和脂肪(橄榄油等)取代饱和脂肪及反式脂肪,每天饮酒不要超过1杯。
5.甘油三酯:<1.7毫摩尔/升。
甘油三酯是在血液中检测出的脂质,被认为是血脂肪,它是高血脂的“预警信号”。甘油三酯水平升高会增加2型糖尿病和心脏病风险(特别是女性)。其水平在1.7—2.2毫摩尔/升为临界性升高,超过2.3毫摩尔/升则危险更大。因此,最好每年查一次甘油三酯,这通常为胆固醇检查的一部分。为了降低甘油三酯水平,应减肥、戒烟、每天饮酒1杯以下,

6.促甲状腺激素:<4.0毫摩尔/升。
促甲状腺激素(TSH)会影响T3和T4甲状腺素的分泌,除了有助调节新陈代谢、体温和心率之外,也会影响到皮肤、头发、肌肉力量、情绪及大脑功能。TSH超过4.5毫摩尔/升,表明甲状腺无法产生足够的甲状腺素,帮助身体正常运转。检查促甲状腺激素应从35岁开始。女性中较常见的甲减会升高胆固醇及甘油三酯水平,导致心脏病及抑郁风险增加。如果TSH水平较高,必须服用药物。如果一切正常,可5年检查一次。

7.身体质量指数BMI:18.5-24.9。
身体质量指数(BMI)=体重(公斤)÷身高(米)2,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。英国科学家曾对90万名成年人进行了高达57次调查,结果显示,那些BMI指数超出40的人,比指数处于22.5—25的“健康人群”,往往短寿十年左右。对中国成年人来说,BMI指数低于18.5属于偏瘦,会增加月经紊乱、生育问题、贫血及骨质流失导致的骨质疏松症等危险。健康体重的BMI指数为18.5-24.9,BMI在25-28之间属于体重超标,超过28即为肥胖症。美国梅奥诊所内科专家史蒂芬妮·法奥宾建议,每年查一次体重,或在体重增加或减少的时候接受检查。如果超重,则应该控制饮食,增加锻炼,最重要的是常测腰围。这是因为,即使BMI正常,腰围过粗也会增加2型糖尿病、心脏病等危险。

8.C-反应蛋白:<1.0毫克/升。
C-反应蛋白(CRP)指标高,意味着心脏病发作的风险比正常情况高2-5倍。此外,它也是中风、糖尿病及与某些癌症相关的慢性轻微炎症的标志。美国耶鲁大学医学院预防研究中心主任大卫·卡兹博士建议,在不清楚自己的心脏病风险的时候,不妨检查一下CRP。CRP检查并非常规检查,但想了解自己心脏病风险及家族病史情况时,可进行该检查,得出的结果对医生诊断大有帮助。卡兹建议,如果CRP水平较高,应改变生活方式,经常锻炼,并多吃富含欧米伽—3脂肪酸的食物(三文鱼、核桃、菜籽油及亚麻籽油等),以减少体内炎症。

9.身高:21岁时身高最标准。
一般来说,21岁时身高达到最高值。21岁之后每年应测一次身高,如果身高比21岁时矮了3.8厘米,那么应该立即检查骨骼密度或者做脊柱X光检查。萨克表示,大约有一半的女性一生中会发生骨质疏松型骨折。如果你的身高突然降低,那就预示着骨质密度已经开始变化。萨克建议,平时应常吃含钙饮食,补充维生素D,多做快走或打羽毛球等减重锻炼。烟酒习惯也影响骨骼健康。必要时遵医嘱接受药物治疗。

10.生活中的其他健康数据。
有氧运动:每周150—240分钟(包括平日举重、散步和跑步等)跑步力量训练:每周2—3次(举重等)水果蔬菜:每天5—9份肥鱼:每周吃1次,或者服用鱼油补品(每天3克以下)维生素C:每天摄入75毫克(或约170克橙汁)钙:每天摄入1000-2000毫克维生素D:每天摄入1000国际单位酒水:每天不超过1杯(白酒28克以下,红酒113克,啤酒340克以下)香烟:0支睡眠:每晚7—8小时

程序员也要养生

来源:http://sheddingbikes.com/posts/1281257293.html

作者:泽德·A·萧

我最近在写《深度Python》的最后几节课,我还要加一课:关于程序员在其职业生涯中普遍的健康问题。我发现诸多代码人在敲代码的时候好像不在乎他们的身体状况, 很可能是太过于全神贯注。我希望人们可以通过知晓一些与编程者相关的健康问题而获益,并可以避免曾经发生在我身上,而且就我知道也发生在很多人身上的问题。

我可能不会把这篇博文全部放进《深》里,因为有点多。但我会写个缩减版。请您惠知喜好,或有我可以引用的附加资源。

我的背景和资历

我以前是一等合格美国士兵,并学习过多种武术。近年来我未像过去学武术一样奋力工作,而是专注于瑜伽,入定和一些简单的活动。我小时候是异常健康的,现在依然如故,这归功于我早已根深蒂固的锻炼习惯。

首先先列一下我学过的武术:忍术(Ninjitsu),合气道(Aikido),柔术(Judo),泰拳(Muay Thai),咏春(Wing Tsung),卡波耶拉(Capoeira),阿尼斯(Arnis),其排序不分先后。我要讲只有泰拳我是连贯学习的,大概有六年时间。其他的用了一到两年时间。我去了很多地方,因此学习之道就是那儿有什么便学什么。

而且,在部队里我是体能测试优秀,几乎是连续两年满分通过的。如没记错,这其中有几乎每天两至四小时的训练,这在部队里不算什么。除此之外,别无他事可做。

然后,不论我干不干活,我如今一直保持着同样的体重、灵敏及力量。所以我无法告诉你怎么减肥。我很可能先天基因就是如此。这意味着你要根据自身情况来调整我的建议。

有着前述的体魄,当我渐老我更喜欢侵略性弱以及更灵活的一些运动。瑜伽是不错的,常被误认为很难。我同样把票投给普拉提(Pilates),游泳,舞蹈等一切对我身体无直接影响的运动。我尤其注意我的手,缘由我也会说到。

好,写这么多是让你知道我还有点能耐,但是更重要的是,在干这些的同时,我是一个职业编程者。在退役后,我平均每天学习八到十六个小时。 我使用盲打而且玩吉他,我还避免了腕道综合征,以及重复性劳损问题。

希望我保健的经验能帮你恢复或保持健康。

程序员常见健康问题

编程乍一看是个耗人的领域,一方面似乎你没有做很多,另外和很多代码人对待其身体的态度有关。 你要一贯地保持健康,因为身体好时会减少对精神的摩擦损害,而将注意力集中到要事上,而不是你生理上的小毛病。

显然建议就是大多人说的饮食,外出活动。我这里不会教你怎么吃或健身,或者哪种武术。如你对这些感兴趣,找一个职业的来帮助你锻炼。

这里要说的程序员们平日的职业病。他们相当明显而且平常,由于某些原因他们并不在意这些本不该发生的事情:

  • 腕部疼痛(重复性劳损)
  • 盯着看移动的打印进度以及其后的句点造成的眼部问题
  • 姿势不当造成的背部不适,尤其是背下侧,肩上侧。
  • 肠道和尿道的问题(不能正常大小便)
  • 摄入太多咖啡因,而且喝水少造成的脱水
  • 坐姿保持太久,造成男性的痔疮或前列腺问题(我一会再细说)
  • 光照不足造成维生素D缺乏
  • 熬夜或者喝咖啡过多导致的睡眠失序
  • 缺乏伸展导致普遍的僵硬和疼痛

我一直跟这些问题作抗争,因为编程,弹吉他,或者举重时误伤。每当我重获健康的时候,我就知道了此后怎样避免。只有一小部分问题是周期性的。你可能觉得这里的某些问题无关紧要,但请相信我,许多程序员都有这样那样的问题,且原因不一,即使你还没有。

一般原因

一般来说,可以总结成嗜编程为命。你可能想成为个中翘楚,就像我一样,因此除了生活除了编程别无其他。你不去卫生间,你勇猛地进行10小时连续编程。而且你饮食不规,只神笃“真正的代码人”这一信条。

事实是真正的编程者都是有点傻蛋。他们从来吃不到正点,做爱也没有准。跑步从来都气喘吁吁,他们的内脏有一些严重问题,但不是疾病原因。真的,在你精通某件事之前灭了自己可不是很值。

所以,在你看到这些问题以及我怎么解决的时候,记住这都是为了有一个均衡的生活习惯,而不是沉溺于编码或者其他什么事。相信我你会实实在在地好起来,如果你给你自己减负并且保持健康。

腕部疼痛

这个可能是我用心最多的。因为频繁且长时间地编码、拨弦,我的腕部有着周期性的疼痛。那年我22岁,刚开始职业性地编码。但是我一直有一个合气道的功课,这样我的腕部就会恢复如初。

你知道,合气道有着绝佳的腕部练习,从而让你的腕部变得结实又柔软。他们创造的这些练习可以避免伤害,原本的许多技巧就有扭、撕扯、手臂和肩关节的脱节。

这些练习治好了我的所有关节错位和疼痛,并让我长时间编程且没有任何大问题。我唯一可能出现问题是因为我要把现在的键盘换成新的古怪布局的键盘,但如果我练习一周合气道我就有可以重返代码并依然强健。

现在如果你有严重的腕道综合征或者其他类型的重复性劳损问题,先咨询你的医师再行尝试这里的技巧。如你要做的话,开始时要轻慢,不要让你感到疼。伸展应该不会疼,只会轻度有点不适。如果你感觉疼,是过度拉伸了。.

你实际想每次伸展运动得到放松。这有点难解释,但不是强迫你的关节在某个固定位置,而是先到达一个位置,想一想放松而后再到更远的位置。

记住这一点,怎么做练习则有很多视频:

下面介绍当你坐下来打字的时候怎么去做锻炼(每次都要这样):

  1. 首先要热身,将手伸向前方在空中尽可能快速地抓20次。然后甩手,再做手腕单侧弯曲10次,然后换方向弯曲10次。
  2. 用你最擅长的,以中速做5至10次。
  3. 继续做各项动作,但甩手和甩胳膊,弯曲手腕后到要归位。这些动作会移动手腕中的骨头,甩的时候它们就会归位。
  4. 千万不要做过头,让你手腕感到损伤。要适度恰好,并放松。那个“没有付出就没有收获”只会伤害你。

每次敲代码前做这系列动作,每天要做,而且停下来的时候也做一次。用不了多长时间,一段时间的不适之后你的手腕就会开始适应并回到正常,并感到好许多。

还有:在做这些之前先咨询一下医生。你做这些可是自己冒风险,所以自己不小心搞坏了手腕不要来起诉我。 这些是千年武术中的家常便饭,所以我知道它们不会有危险,但各人情况不同。如果你做法不对可能后果严重,如果感到疼痛立即停止并咨询医师。

吉他手更糟糕

程序员的重复性劳损在吉他手或贝司手跟前可是小菜。这起因是诸多愚蠢的理由,许多著名的音乐家讲一天八小时或十六小时学习法。正因如此,吉他手们糟践自己,最后不能演奏。

吉他对于手来讲是硬乐器,所以有一点点疼痛你就歇菜了。我在学校的时候,像个傻比一样轻信我的老师自己一天练八个小时的琴。我字面理解就是一下子就八个小时,我这样折磨自己一个月然后就崩了。

我的拇指有了赘骨,其他的指头疼痛难止。我的手腕还耐得住,但指头已经不行了。 二逼呵呵的我没有听那句话,任何新的运动需要循序渐进。

我解决这个的唯一办法,而且用了一年半,是做以下的事情:

  1. 找把不伤手的吉他。说你啥样吉他都能玩是屁话。去找个最好的不伤你手的吉他。
  2. 做上面的锻炼,我的指头做得更多。
  3. 通过做练习,慢慢开始恢复指头的力度并注意放松。
  4. 在弹的时候注意放松,拨弦的时候更轻巧。
  5. 避免弯曲,这些曾导致我的手受伤。
  6. 变换姿势和演奏风格,不抓紧吉他就能快速移动,舒服地把拇指压在琴颈背面。
  7. 调整吉他高度,让我的肩和手都觉得舒服。
  8. 站着,很少长时间坐下,长时间摆一个姿势是很别扭的。

去年做完这些后我的手最终痊愈了,并且感觉良好。我还没有不让我弄伤自己的好习惯。我已经老大不小了,所以这些对我很重要,但这也意味着我不能做那些可能弄伤我手的活计。

我的手现在是我的命根子,所以不能再打拳了,或者其他我还想学习的事情。因为打沙袋我手上已经有多处凹陷了。

眼疲劳

我觉得这对我不是问题,但你最好悠着点。我年轻的时候比20/20还要好,但用了几十年电脑有点偏了,曾经用过眼镜矫正,我用得着的时候一直戴着,没有它们看周围的世界真是恼人的模糊。

在黑暗时期我们天天还瞅的是CRT显示器,烦人的闪烁已经把一些人的眼睛整垮了。现在的问题是多数LCD屏幕对字体的糟糕渲染。 我想归功于苹果公司的专利,多数LCD屏都不能正常渲染字体。尽管有人认为苹果的字体看起来毛茸茸的,所以对于你的好处将很难说。

我想每天两个小时不看电脑。要么我去玩吉他不用费眼力,要么去公园散步。我可能不是整整两个小时都去这样干,但是加起来要保持两个小时。

这对于你可能有的头痛有助益。多数时候程序员可能会想玩电脑的时候开着灯导致了头痛,但其实是因为体位不对,还有糟糕的字体,饮水不足,而且是跟电脑打持久战。

不是把你房间的灯都关掉,只需要合理的照明,选择适合你液晶屏和室内灯光的色彩方案。 即融合室内照明,液晶屏亮度和字体,以及让你感觉更舒服的色彩方案。

但还是先休息一下吧。

背部问题

我挺走运的,背一直还可以。尽管如此,我相当多时间是坐办公室,并保持着灵活强健的脊背。

我的问题是背的上半部分,脖子,肩部。我习惯猫在键盘上,所以必须强迫自己坐直。事实是,刚刚敲这段话的时候我就没坐直,才想起矫正一下。

现在选择你的座椅很重要,我喜欢艾伦椅(Aeron),那种硬质小凳子或长凳。现在非常热衷我的40美元的钢琴凳,过去我坐着它弹钢琴的。因为没有后背,凳子会时时逼迫你坐端正 ,并调用我的核心肌肉(肚子和背部)。

我的肩部完全处于压迫状态。我习惯于在我全神贯注的时候收紧双肩,这样让我的整个背上部感到疼痛,一直蔓延到脖子和头部。当我长时间玩吉他的时候问题更糟。

我发现最有效的解决办法是伸展上肢,做俯卧撑。伸展办法很简单,抓住门框,然后双臂同向或反向拉伸。你觉得身体有点僵硬的时候试试下面这些招数:

  1. 用一只手抓紧门框,手心朝向你的身体,然后向前挺胸,越过肩位。
  2. 用另一只手握紧门框,胳膊交叉在前,手心继续朝里,然后伸展肩部,使背部得到伸展。
  3. 两只手都抓住门框,高举过头,稍向后站呈倾斜,然后来回拉伸。(就像站着做俯卧撑)

如果你做了,同时做抡臂,摇摆,你就会觉得好一些。或许在你开始干活之前加一些腕部伸展。

另外就是做真正的俯卧撑了。我工作的时候并不做这个,因为它会让你很累,难于工作。在睡前我做十次,这十下足以对付胸、背、肩、腕。 不要过快,要慢,注意在做的时候使身体平衡。

脱水

这个问题不大,我时常有点内疚。我发现我一天狂喝咖啡,正因为这样我想我也该喝点水。如果我没有头疼那倒有点不对。脱水的问题很难发觉,直到你发现的时候已经晚了。

我的建议(我也要多做的)是,喝其他非纯净水的饮料时也喝一杯水。同样请勿喝苏打水。它们只是一堆伪糖,让你变胖导致糖尿病,还有它并没有给你产生水。喝纯黑咖啡吧,它们真他妈好,记着再喝些水。

肠道及尿道问题

好吧,接下来的两个问题确实不雅,所以就不提发生在我身上的事了,但我要说这句话:

上厕所的时候他妈赶紧去,别犹豫。

你不知道这条提示有多有用,我真希望我年轻的时候知道这句话。因为我是一个拼命汉从不间断,跳过上厕所,憋相当长时间。 肠道问题就是你的机体不再告诉你你该拉屎了,只是愈积愈多。

这样的话最后会导致便秘,这将终结你的健康状态。对于尿道倒次要,但是你依然可能会有感染和其他令你惊奇的事情。

如果你已经搞砸了,你去弄一些纤维片,待在家里然后吃掉,不要去外面,因为后果很囧的。

然后,你觉得是时候了,拾起身去拥抱上帝吧。我告诉你,在你拉完屎之后你的伟大想法才会自然迸发。

痔疮和前列腺问题

另外一个不上厕所会导致的就是痔疮。我知道够恶的,我保证只提这一次。但是,许多编程者有这个问题,并羞于启齿,他们并不知道为什么。下面听我一一道来,我做过下述所有事情,但是只得过一两次痔疮:

  1. 长时间坐着。
  2. 举重东西,不用辅助。
  3. 该去解决内急的时候不去。
  4. 强迫自己去拉屎,实际上不需要。
  5. 最糟糕的:坐在厕所里看书。

最后一条就是罪魁祸首。如果你不是必须要大C,可别老泡在那。这相当于将你整个身体和肠子的重量压进已经泻完的直肠上,并试图挤出来。恶心至极!这导致痔疮因为你的血管中的血压不自然地升高。

确实臭烘烘的,但潜在危害很大。恩,危急情形是血流一地,这时候谁都知道去看大夫。你可能需要手术,但做无妨。我没有做但也差点:有一年我在举重,然后在库房工作,不间断编程,没有用过厕所。

是,我是个大笨蛋。你可别学我。为了你的屁屁的健康,请做以下的事:

  1. 多吃果蔬,至少吃点纤维片。
  2. 该解决个人问题时赶紧的!
  3. 任何情况下不要压迫直肠。

还有一个导致前列腺的问题,如果整天坐在屁股上的话。站起来转转就可以。如果尿血或者排尿困难,去看医生,否则会更危险。

维生素D不足

维生素D有点怪。的确只能通过晒太阳产生,但你并不必去专门为此去暴露在阳光下。5到30分钟就好,取决于光照的强度。还与你的钙水平和磷缺乏程度有关。但你要是饮食规律,并非只吃些薯片的话,就问题不大。

还有一些事比如消沉,搞坏的牙齿,一些奇怪部位的疼痛比如臂肘的骨头,肌肉痉挛,总体来讲就是跟烂泥一样。同样,如果你觉得不行的话去看医生,正常情况下在日头正盛的时候,去外面溜达半个小时足矣。

事实上,我觉得一个问题是硅谷里很多刚起步公司提供的餐饮。因为你要泡在办公室,经常吃残汤剩饭,而且照明也不好,太阳高照的时候你也不出去晒下。加上你的睡眠习惯你的维生素D状况就糟糕透了。

不要吃盒饭,在中午去外面吃一顿。好处你自知,而且外面的食物好多了。

我在温哥华和西雅图的时候有轻微的维生素D缺乏,那儿光照不足,对于我来说简直要我命。有人能搞定,但是像我这样青年时代在热带岛屿上度过的人,不足的光照确实就是杀手。

所以,你趁有太阳的时候出去晒晒。

睡眠失序

我的睡眠时间一向很灵活,跟季节和地域有关。有时候我如猫头鹰附体,熬夜熬到很晚才睡。最近搬到旧金山后开始早睡,不再晚睡了,最近感觉很好。

有时候,我不确定为何在夜里创作音乐或编程倒多产。我认为在一个疲惫的状态下我的大脑确是在休息的。我还觉得是因为夜里更安静,没有滋扰。

不管怎样,早睡晚睡已经把我的睡眠机制搞砸了。当我渐长我更喜欢早起,我觉得白天更清醒更放松。熬夜后再睡往往觉得自己有遗留反应,而且头疼。

如果你也有睡眠问题,我有一些简单的调适方法助你入睡。需要实践,但很有效。

首先,花你的血本买个好床,2000+美元不算多。我买了2200块的Tempur-Pedic. 的确很值。

有了床,开始练习助睡法,有点自我催眠的意味:

  1. 关掉你房内的所有灯光和音响。
  2. 躺下,让手放在让你舒服的位置。
  3. 缓慢地深呼吸,并想象空气流进身体及逸散出体外的场景。
  4. 当你能注意到你的呼吸之时,想象你在看窗外辽阔的太空,悬星满布。
  5. 然后伴随呼吸幻想自己漂浮在空中,渐入巨幅的星系,一切星辰,皆伴随你左右。
  6. 持续幻想,感觉你的床也在漂浮,直到皆不见。

你或许在四五点睡觉,但不是要出去的话,就幻想自己漂浮直到你真感觉融化了。

如果你有重度失眠,还请咨询医师。但还是试下这招,一天做一到两个小时。练习后绝对会让你入睡。

刚柔并济

如果浑身不适难于活动,这时就该做下伸展运动。当然最好莫过于去瑜伽馆每周做练习,并回家自己练习。如果没有时间,可以买书或在图书馆借N多教程。入门级就可以,你真的不需要太多。

我想如果你晚上入睡前做5-6个大幅的伸展练习就够了。你会觉得相当放松,你的健康状况和自我感觉也会有提升。

伸展身体的时候同样要放松大脑,增长创造性的一大妙法就是做瑜伽或半个小时的伸展运动,然后早晨冲澡。 伴随禅定你就会精神自适并发觉个中未曾体验之奥妙。

我也不知为何,但是精神之松弛对于突发的灵感多有助益。

迈出第一步

上面的内容可能对于你有点多,我当然希望你不会都有这些问题缠身。然而我建议,尽管你可能没有那些毛病,但要避免它们的发生。如果你要开始编码,请采用“编前热身”。

下面就是我在敲代码前要干的,或者玩吉他前,以及我变僵需要休息的时候。

  1. 活动身体各关节,只需将腕、臂、颈、臀转摇几下。比如正向五次,然后反向五次。
  2. 在各部分前做一些腕部练习,摇一下手腕。
  3. 将臂举过头顶尽可能高,然后向后伸展尽可能远,然后伸到身体前面来。
  4. 最后,小心地用手扶着头分别向右、左、前、后摇几下。

如果你做这些的话,将避免一些编程会带来的伤害。因为编程并不会大伤体能,避免受伤还是很容易的,因此上述部分就够了。

然而,如果有特殊问题的话,继续去咨询医疗师,如果得到他们允许可以试试我的这些方法。我这儿说的无过激或奇异的方法,只是些基本的练习和一些常识,因此是个医生都会许可的。我告诉你要咨询别人是只是因为我不想吃官司。

真希望这些能让你变好,如果没有的话,记下建议,以防出现这些状况。如果你够好运连一个问题都不会有,但我觉得是个程序员都有或多或少的问题。

如果对上述的事情持有疑问,大可给我发邮件,我会给你一些建议(email me)。

悠着点。

 

PowerPoint设计展现中的交互意识

by OutC

PPT作为演讲展示的媒介,在其中起到了非常关键的作用,由于其生动的展示效果和低成本的制作,已经完全代替了老式的幻灯片。

不可否认,大量的PPT制作者还不懂得如何有效的利用PPT来展现内容。如果在你的会场里面“昏睡率”较高的话,那你也该考虑考虑是否有PPT设计不妥的因素在里面。

内容展现:

第一个,对比度。为什么大家都用黑板白笔,白板黑笔?关键就在于对比度。一些初学者在制作PPT包括网页的时候,忽视了最基本的东西,喜欢使用一些花里胡哨的背景图片,不仅分散了观看者的注意力,甚至其中的文字也会“淹没”在了背景中,想分辨分辨不出来。个人觉得使用纯色背景或者干扰性不大的单色系渐变背景是比较好的选择。

熟悉PPT的人都知道,幻灯片中充满文字是制作PPT的大忌,可有些人偏偏喜欢把大段大段的文字都塞进里面,恨不得把整个演讲的内容一字不落的写进去,然后照着一个字一个字的读,要这样的话还不如每人发一篇文档带回家自己研究。PPT只是一个辅助工具,会场上主体还是——演讲者,文字内容列成提纲即可,其余的交给演讲者去延展。

关于数据。数据是给“后台”看的,没人愿意眯着眼盯着大屏幕去分辨一个个细小的数据,在PPT中把数据转换为图表也是一个十分有必要的措施,在做数据转换的时候不要怕麻烦,对于与会者来说,看那些直观的图形比起那些枯燥的数据表效果要好很多。

不同的数据有不同的图表类型去对应,需要设计者自己去权衡和把握。

由于PPT为线性的展现方式,所以其中加上过多的链接不见得是件好事。不管是内部还是外部链接,就像原本一个条例清晰的故事,无故的把它揉成一团捏出一部分来回搓,谁听了都觉得不对味儿。

同下载一样,PPT展示的过程中也可以利用一些隐性的进度条来表示会议进度,用来克服焦急心理。可以这样做:

图中是将左边上下排列的标签隐性地作为进度条使用(仅仅为示例)。

还有,如无特殊需求,特效不宜显示得过慢,幻灯片之间的切换也不宜过慢……

展现方式:

会场的展现也需要投入一些技巧,如何让与会者能集中注意力不至于走神等等需要注意的地方我们也可以通过PPT的特殊设计来实现目的。

会场最大的失败就是有人在途中昏昏欲睡, 如何通过一些小技巧让与会者能提起精神?

现场推送一个:在幻灯片设计时,可以加入“全黑淡出”的切换效果,我比较推崇这个特效,在切换幻灯片的时候通过幻灯片淡出淡入之间产生光线的一明一暗,能对人的视觉产生刺激。也可以在幻灯片切换的时候加一些轻微的切换音,记住,是轻微的,不能让声音太吵持续时间太长,否则容易使人产生烦躁心理。

另外我不喜欢深色背景的PPT,因为展示PPT的会场相对来说光照度就不够,如果此时你的PPT不够亮,会场的“昏睡率”估计也要增加了。

PS:在正式场合中将PPT另存为.pps文件,展示的时候能直接打开而不“泄露”后面其他的内容,也是一个很不错的选择。

欢迎补充。

 

12种纸飞机折法

读过书?我便考你一考,知道纸飞机有多少种折法么?不知道罢?我教给你,记着!这些法子应该记着。将来当父母的时候,哄孩子要用……