杰拉斯的博客 - 2013年1月
type: channel
link: https://www.clanfei.com/2013/01/
description: 关于技术，关于游戏，关于生活——杰拉斯的思考、总结和表达。
items: 周鸿祎跟雷军在一起喝茶了
items: Apache开启rewrite实现伪静态
items: Windows+Apache+PHP+MySQL简易配置教程
items: 腾讯网无障碍前端架构说明
items: [转载]大学生们，你的CEO也曾在教室中哭泣
items: [前端]浅析外边距折叠（Collapsing Margins）
items: JavaScript农历转换类
items: JavaScript日期格式化函数
items: [转载]提高效率的秘诀 by Aaron Swartz
items: 2013年10大网页设计趋势

周鸿祎跟雷军在一起喝茶了
type: item
date: 2013-01-30T15:59:44+00:00
description: 今日（2013.01.30），《21世纪经济报道》发表了一篇文章，大意是周鸿祎在最近的一次会议间隙，主动叫住了雷军，一起喝了20分钟的茶，具体如下：雷军周鸿祎两大冤家和解？侯继勇雷军和周鸿祎两大老死不相往来的“冤家”，最近居然坐在一起喝茶了，此事一时震惊业界。最近一次会议的间隙，360董事长周鸿祎找到金山董事长雷军，说一起“喝会茶”。雷军当即答应：好！于是两人走进了一个小包间，就在会议室旁的茶室，叫了壶茶，红茶。将有些惊愕的随行的其他人留在了包间外边。时间不长，二十分钟。具体细节除了雷军、周鸿祎两人之外的其他人不得而知。但这场谈话却给外界留下了巨大的想象空间：金山毒霸、可牛软件、金山网络、“小3大战”以及中关村某个夜晚，一次共同参与的推杯换盏。随后几天，一些不完整的细节从周鸿祎、雷军身边的人的口中零零碎碎地流传出来。周鸿祎很真诚，表达了两个意思：一是对过去的一些事情，特别是“小3大战(小米与360关于智能手机市场的战争)”表示歉意，说今后(360)不做手机了，双方也别打了；二是小米老有人骂他，今后别骂了。雷军的态度如何？不得而知。消息人士的观察是，两人相见后，雷军“有些感慨”。真是“相逢一笑泯恩仇”？周鸿祎与雷军两个人，有多长时间没有这样坐在一起了？那20分种内，或许周、雷二人都没有计量过。一个业界共知的细节是，“3Q大战”(指当年腾讯与360之间的战争)后，凡是有雷军出现的场合，尽量不请周鸿祎。反之亦然。正是3Q大战，使雷、周两人结下不解之仇。3Q大战之后，雷军合并了金山毒霸与可牛杀毒，成立金山网络。金山网络由傅盛、徐鸣两人创建，傅盛、徐鸣与周鸿祎的关系则是“剪不断、理还乱”。周鸿祎因此认为：雷军站到了自己的对立面。3Q大战期间，腾讯、百度、雷系(那时候小米还没有浮出水面，包括金山软件、金山网络)、搜狐被视为“反360联盟”。对于“小3大战”，后来雷军在数次回忆中表达了两点，一是对可牛软件的投资只是众多投资中的一项，没有任何情感倾向；二是无法理解周鸿祎在“小3大战”中表露出来的激动与愤怒。“情感站队”而非利益纠葛是两人裂痕愈来愈大的原因：对于任何人来说，曾经的朋友成为敌人，都会激动，以及愤怒。对于周鸿祎来说，是很多朋友(至少是熟悉的人)站在了他的对立面，比如雷军、刘韧、傅盛、徐鸣。上述数人，一些人是朋友，一些人是下属、学生。周鸿祎的另一个特点是，认为“好朋友应该一辈子”。历经“3Q大战”、“小3大战”、“3B大战”，以及其他“小战”，周鸿祎的孤独、愤怒、激动与日俱增。这使得周鸿祎在一次采访中说出这样的话：我没有朋友。曾经一度，周鸿祎以为自己“有很多朋友”。进入2013年，这一切却在发生变化。360不再是“没有朋友，也不需要朋友”的姿态，而是寻找朋友。360内部开始认为，敌人多的时候，朋友就弥足珍贵。既然需要朋友，一是发展新朋友，二是发现老朋友。如果能把敌人变成朋友，就更加事半功倍了。周鸿祎的这种转变与一种认识有关：其实从来没有所谓的情感站队，那只是愤怒时刻的假想，有的只是利益纠葛，即使曾经的对手，当利益纠葛不再的时候，就可以成为情感上的朋友。还与奇虎360在行业内的地位有关。360内部喜欢用“屌丝逆袭”这个词。逆袭成功，屌丝已经成为“高富帅”了。当日屌丝时，打大佬可以博同情，今日高富帅时，则再无这样的情感效应。雷、周可以握手，还与环境变化有关。十年前的中关村更多情感站队；今天的互联网江湖，则更多利益衡量。2013年刚开年，百度、阿里联手收购新浪微博，百度收购投资“雷系”金山网络，百度投资UCweb，以及雷、周握手，各种“合纵连横”的消息层出不穷，都是“互联网式”恩仇记，而非“中关村式”恩仇记。没有永远的朋友，只有永远的利益。不过呢，这两个人的微博又发出了如下更新：@雷军: 两周前我参加一场央视活动，偶遇周鸿祎，他拉我到会场边上聊了几句，今天一堆莫名其妙的传闻……@周鸿祎: 我与雷总虽然在一些事情上有不同观点，但我一直很佩服他的创业精神。我参加央视财经春晚邂逅雷总，闲聊个十几分钟，竟然有人还演绎出喝茶的事儿，还编出各种谈话版本，这想象力也太丰富了吧？难道老死不相往来才正常？有人太小看雷总和我的肚量了。

Apache开启rewrite实现伪静态
type: item
date: 2013-01-29T17:46:34+00:00
description: 开启rewrite的方法非常简单，打开Apache安装目录下的conf/httpd.conf文件：去掉： #LoadModule rewrite_module modules/mod_rewrite.so 前面的井号注释： LoadModule rewrite_module modules/mod_rewrite.so 再将： AllowOverride none 全部替换成： AllowOverride all 重启Apache服务即可。实现伪静态则需要在需要实现伪静态的网站目录下添加.htaccess，.htaccess文件(或者"分布式配置文件"）提供了针对目录改变配置的方法， 即，在一个特定的文档目录中放置一个包含一个或多个指令的文件， 以作用于此目录及其所有子目录。作为用户，所能使用的命令受到限制。网上有非常方便的生成器：http://www.wangqu.org/htaccess/。

Windows+Apache+PHP+MySQL简易配置教程
type: item
date: 2013-01-28T11:04:57+00:00
description: 准备工作首先自然是下载软件，然后该解压的解压（注意要非中文目录，这里的软件目录以均以C:\Program Files为例），该安装的安装（MySQL的安装会有许多选项，英文好的看着按自己需要勾勾填填就行了，实在不行的参考这里，虽然版本比较旧，不过配置选项大致还是差不多的）。下面是几个软件的简单介绍和下载地址：ApacheApache是世界使用排名第一的Web服务器软件，我们这里用它来搭建一个本地的Web服务器，它会侦听http请求，将本地的Web数据发送给浏览器，简单的来说就是搭建Apache之后，我们就可以通过浏览器来访问本地的网站。下载地址：httpd-2.4.4-win32.zip（更多版本）PHP既然有了Web服务器，为何还要PHP这东西呢？因为Web服务器只是用来响应浏览器请求，并不具备解析PHP文件的功能，因此还需要PHP来进行解析。下载地址：php-5.4.12-Win32-VC9-x86.zip（更多版本）MySQLMySQL是一个关系型数据库管理系统，跟PHP就是绝配，因为它们都快速，功能强大，更重要的是它们都免费（O(∩_∩)O~）。下载地址：mysql-installer-community-5.6.10.1.msi（更多版本）phpMyAdminphpMyAdmin严格来说不算一个软件，也不是WAMP环境的其中一个，但它在PHP开发过程中却几乎是必不可少的。phpMyAdmin是一个用PHP编写的MySQL可视化管理工具，因此它不需要安装或配置，直接将它解压到你的默认网站目录即可（补充说明）。下载地址：phpMyAdmin-3.5.7-all-languages.zip（更多版本）配置PHP你可能会觉得奇怪，为什么我把PHP的配置放在前面来讲，而把Apache放到后面？因为我们需要将两者结合起来，而结合的过程便是在Apache的配置文件中进行修改的，若先配置Apache，那么配置完PHP之后又必须继续回头配置Apache。PHP的配置文件是根目录下的php.ini，但你会发现，在目录下会有两个文件，一个是development，一个是production，顾名思义，前者是开发测试使用，后者是上线产品使用的，安全系数较高。我在本地自然是只做开发测试的，于是选择php.ini-development文件，将其改成php.ini并打开，下面PHP的配置步骤都是在其中进行的。 配置一下扩展库路径： 找到; extension_dir = "ext"（约730行），将前面的分号去掉，并将其值改为PHP的扩展库文件目录，如：extension_dir = "C:/Program Files/PHP/ext"，这里的目录是由你的PHP所在路径确定的，记得后面加上ext。 配置PHP+MySQL这里的配置同样在php.ini中进行： PHP默认是没有支持MySQL的，因此我们要将MySQL的扩展库开启，将这两行前面的分号去掉即可： ;extension=php_mysql.dll ;extension=php_mysqli.dll 其它扩展库同样也可以根据需要去掉前面的分号将其引入，我这里开启了php_curl和php_mbstring。配置Apache+PHPApache的配置文件则是conf目录下的httpd.conf文件，将其打开： 首先找到ServerName（约213行），将其设置为localhost:80，并将前面的井号删除，虽然这一步如果不修改的话也可以正常运行，但启动Apache服务时会有一条烦人的提示（AH00558: httpd.exe: Could not reliably determine the server's fully qualified do main name, using fe80::fc76:abca:e24b:d490. Set the 'ServerName' directive globally to suppress this message），洁癖者还是改一下吧。 然后设置一下Apache的目录，将文件中的c:/Apache24全部替换成Apache所在目录，如：C:/Program Files/Apache 修改默认网站目录地址（约237行），找到 DocumentRoot "C:/Program Files/Apache/htdocs" <Directory "C:/Program Files/Apache/htdocs"> 将其路径替换为你想要设置的默认网站目录，默认网站目录是指你以后进行开发调试时网站文件所存放的目录，当Apache接收到浏览器请求时，便会从该目录里将对应的文件进行读取，执行并发送到浏览器，这里以F:/Websites为例（同样必须是非中文目录…

腾讯网无障碍前端架构说明
type: item
date: 2013-01-28T04:12:49+00:00
description: W3C要求 必须有DOCTYPE 必须指定字符编码 语言 每个页面的html标签要指定lang属性， 线性阅读 不以表格作为布局使用 采用定位的时候，将css去除，查看内容的阅读顺序是否符合有意义 焦点与键盘 禁止移除焦点 不可禁用键盘操作 标题 页面中必须包含一个title元素，并且不应为空 title中的内容应该少于60个字 title应该包含网站名字和页面的主题 页面中必须包含至少一个h1，并且不能为空 h1和title中应该包含有相同的某些词汇 h1和title应该使用相同的词序（词序） h1的内容不应该仅仅来自于图片的alt属性值 hn 所有的hn应该在h1后面适当的嵌套 从h2开始，每一个hn前面至少有一个h(n-1)，比如：h3前面至少有一个h2；h5前面至少有一个h4 页面中至少并只能包含一个h1。（html5中已经提倡可以使用多个hn） h1..h6元素应该在页面中用于构建信息 h1..h6 或者 作用等于 （heading|region|main|secondary|navigation|banner|contentinfo|definition|note|seealso|search）的元素应该在页面中用于构建信息 每一个h1...h6必须有文字内容 hn中的内容通常少于65个字 h2...h6中除了img的alt属性外，还应该包含文字内容 相同级别的标题内容应该是唯一的。（比如：不能有两个h1的内容都是“腾讯网”） 菜单和导航 ul是用来作为导航的最合适的元素，其次是ol 推荐的导航结构： 栏目1 栏目2 /*css style*/ .offscreen { position: absolute; top: -30em; left: -300em; } 绝大多数的网页应该至少含有一个导航栏 每个map，ul，ol元素不要在最后一个h1之前，如果必须有个导航在标题之前，这个标题请用h2。(参见推荐的导航结构) 每一个嵌套的table，热点区域，ol，ul作为导航的话，他们的头部要有一个h2(或者是h2~h6，参见推荐的导航结构) 文本样式 请勿使用blink(闪啊闪的)和marquee(移动移动的)！！！会引发癫痫和视觉损伤 禁止使用font和center元素，请用css实现 斜体样式禁用i元素，标题用h1...h6，要强调的词、短语和句子，请用em实现 加粗字体样式禁用b元素，标题用h1...h6，要强调的词、短语和句子，请用em实现 下划线样式禁用u元素，标题用h1...h6，要强调的词、短语和句子，请用strong实现 列表 如果将p一行行的有顺序的排列，就该考虑是不是应该用有序列表了（ol） 如果将p一行行的排列，就该考虑是不是应该用无序列表了（ul） 如果列表嵌套深度大于5层的话，应该考虑用h1...h6这样的元素来进行转换。尤其是屏幕阅读器的用户 列表嵌套别超过5层 链接 避免使用脱离文章上下文无法理解的文字链接（比如最常用的“详细”的文字） 如果一个链接包含一个图片和文字，并且alt中的内容和文字匹配（相同），那么alt的属性应该为空 避免使用小于16*16的图片作为链接 避免把链接密密麻麻的放在一起（指的是链接链接...链接这种吧） 确保不同的链接地址用不同的链接文字（也就是说最好避免重复的锚（链接）文字） 确保相同的链接地址用相同的链接文字（如果多个链接都指向http://www.qq.com，那么这些链接都应该使用相同的锚（链接）文字。如果有的是“腾讯”，有的是“腾讯网”，有的是“腾讯网首页”，这样就不合适了，况且对SEO也不合适） 避免文字链接少于四个字（在中文网站中这一点很难避免） 内部的锚点目标要有tabindex="-1"。这是由于当内部链接被激活时，IE可以移动焦点 如果锚点目标是a或者表单等可以获得焦点的元素，如果使用tabindex="1"，在使用tab键切换的时候就会被跳过 最安全的tabindex属性是0，但是非焦点元素在获得焦点的时候会激活outline，ie中会显示虚线，且无法使用样式去除。 图片 宽或高不到8px或者没有alt的图片（特别是装饰性的图片）应该被移除，css技术可以用来控制样式 alt是用来描述图片的，而非单纯的新闻标题或者名词 alt属性不应包含图片的文件名 alt值不应包含冗长的信息（如果很长可以使用 ） 每个img要有alt 不能只依赖图片上的文字信息 banner、头图上的文字信息必须在代码中有所体现 Objects 每个applet元素应有alt值 每个embed元素应有alt值 每个object应包含文字内容 表单 ID必须唯一，特别是表单 每一个fieldset应该有一个legend元素 每个label必须有文字内容 每个legend…

[转载]大学生们，你的CEO也曾在教室中哭泣
type: item
date: 2013-01-26T09:33:11+00:00
description: 本来已经不想写了，因为年纪越大，越懒得动笔，不过看到各种各样的帖子之后，很想跟所谓的新人和非新人，写点东西，算是共勉吧。对于刚参加工作的人，我最想说的一个词是煎熬，如果你有上进心或者有责任心的话，这个词，其实很形象，许多刚参加工作的人，可能最早碰到的感觉就如同煎熬一般，非常的不适应工作的状态，当然现在也有很多人，一进入工作中，就一点也没有这种感觉，因为他们不在乎，什么事情都无所谓，自然也就不会有煎熬的感觉。我自己参加工作的时候，煎熬两个词对于我而言似乎经常提起，刚参加工作的时候，我见人就在犹豫不知道该怎么称呼他们，生怕叫错了称呼，给人印象不好，每天第一个到单位，拖地扫厕所，碰到什么事情，第一个就去做，即使是这样，你还会得罪人，不时有人给你脸色看，你好心帮同事做点事情，做好了，还好，做不好，就什么责任都往你头上推，让你辩解也不是，不辩解也不是，然后就是繁重的生活压力，我自己02年来杭州，一个月工资是800不到点，每个月住在遥远的城北，每天要六点多上班，一起住的有四个人，每天我第一个走，回到房子的时候，最晚的就是我，所以虽然住一起，却根本见不到面。这样的日子，我想不叫煎熬是很难的事情，我自己是中国最好的金融类学校毕业，当年毕业的同学基本上都进的是各个部委里，我在大学里，成绩说不上最好，也不能说差，如果不是万恶的911，粉碎了我们的梦想，按照当时的成绩，我可能会在大洋彼岸的某个学校里读书工作，不过一切都是如果，现实是残酷的，所以因为这种原因来到的杭州，更是让我对煎熬两个字有了更深刻的理解，那简直是种痛入骨髓的悲哀，于是我每天都想着解脱，想着离开。那时候我曾经写过一篇类似的文章，文章里说，“相对于大学的精彩和辉煌，第一年的工作给我带来的只是痛苦、失败和孤独的煎熬，这一年的起初，我几乎已经对自己失去了信心，已经无法在去想象更多的东西，每天都在忍受工作之后与大学生活错位所带来的郁闷。”终于有一次爆发了，我一个人什么都不顾及，离开了岗位，独自一个人跑回了北京，那是02年12月18日，到北京的时候，北京下了个大雪，我先回了趟学校，站在学校的操场上非常的恍惚，想到过去四年里在这里留下的所谓的一系列辉煌和精彩的过往，然后在想到现实的不如意，我在201（我曾经最喜欢去的一个自习室）哭的一塌糊涂，然后就离开了校园，这里已经没有我那么怀念的那些人和那些东西了。第二天，我在北京的同学在马甸边上一个酒店给我接风，几乎所有的在北京同学都来了，还给我买了个很大恨大的蛋糕，因为12月19日是我的生日，在饭桌上，依旧喝的一塌糊涂，我最落魄，自然我喝的最凶，大家也没有劝我，一夜狂欢后，回到杭州，还是得面对现实，那次给我收获最大的就是，我意识到其实很多时候，工作在那里都差不多。关键还是看你自己怎么面对了，我的那些同学，喝多了之后也都如此诉说各种苦处，只是大家痛苦的地方不一样罢了。回到杭州后，我用两个字替代了所谓的煎熬，我学会了用蛰伏两个字，虫子到了冬天，学会了蛰伏，我们何尝不是呢？再优秀的人，总有你所不适应的地方和事物，与其哀叹，不若面对，趁年轻不若多学点东西，努力的完善自己呢？于是我自己开始考虑在工作之余，多学习东西，尽量不浪费时间，我大学最擅长的是投资经济学，英语也不错，所以我开始免费兼职在外面给高中生上英语，一方面不让自己的英语水平荒废，另外一方就当是帮助一下那些成绩不好的学生，之所以免费是因为那个学校校长不相信我有能力教他们，我说我不要钱，就让我尝试一下，给我个机会。我大一过的四级，大二六级，大三GRE，大肆托福，其实教高中生是一点问题也没有，教了大半年，不但教了四十多个大学生出来，还让自己更有时间去巩固英语成绩，投资经济学方面，我就坚持每个月都写各种经济评论类的专题，尝试给各个报纸投稿，这样一年多下来，我觉得我达到了蛰伏的目的，保全了自己，度过了冬天。之后，也开始慢慢明白，工作其实比拼的未必是能力，能力在强，也需要有人认同，也需要别人配合，我们不可能脱离别人而生存，当一个人不喜欢你，可能并不是你的问题，而大多数的人不喜欢你，就是你的问题了。在人际交往方面，我一直觉得沟通很重要，而沟通的基础就是谦卑，那些刚参加工作，不尊重老人的新人会很难得到认同和持续的生存下来的，这里面的问题很多，我自己后来发生过一件事情，很切身的体会。公司那年准备提拔一个销售经理，公司90%的人都认为应该是我，因为之前我已经销售经理助理，而实际上，因为销售经理生病一年了，我其实全权负责销售经理的职责，所以我自己也自然的认为了那个位置应该是我的，但是后来领导从别的部门调了一个从来没有做过销售的老资格来做了这个位置，当时听到这个消息，我也很难接受，第一个反映就是走人。那天晚上，我很郁闷的跟老婆说了这个事情，我老婆却把我鄙视了一顿，我这辈子都记得，我老婆跟我说，你几岁？我说，我26岁，我老婆又说…

[前端]浅析外边距折叠（Collapsing Margins）
type: item
date: 2013-01-25T16:20:00+00:00
description: 我们在学习前端的过程中，有时候会出现一些奇怪的现象，Collapsing Margins便是其中之一，有时候我们想要某个元素离的第一个子元素能够下移一些，于是给它设置了margin-top，但奇怪的是这个margin-top属性却传递给了父元素，导致父元素的位置下移： Child 这是个BUG吗？为什么各种浏览器都会有这样的“BUG”呢？其实，W3C规范认为margin折叠会使页面布局更加合理，比如两个段落（ ）之间，段前间距跟段后间距应该只保留最大的一个，而不应该两者相加而导致段落之间间隙过大。下面，我们就来探究一下这个奇怪的Collapsing Margins。什么是外边距折叠（Collapsing margins）？Collapsing margins，即外边距折叠，指的是毗邻的两个或多个垂直方向的外边距 (margin) 会合并成一个外边距。这里的毗邻包括相同级别的元素外边距，也包括父子元素的外边距。什么情况下会发生折叠？可以归结为以下两点： 这两个或多个外边距没有被非空内容、padding、border 或 clear 分隔开。 这些 margin 都处于普通流中（非浮动元素、非定位元素）。 折叠后margin的计算 当参与折叠的margin均为正值时，取最大的margin值作为最终margin。 当参与折叠的margin均为负值时，取绝对值最大的margin值作为最终margin。 当参与折叠的margin同时存在正负值时，取绝对值最大的负margin值与最大的正margin值相加作为最终margin。 如何防止外边距折叠？在某些情况下，margin的折叠并不是我们需要的效果，甚至可能影响正常的布局，这时候怎么办呢？有以下这些解决办法，按需要任选其一即可： 使用高度为零的空元素将折叠的margin隔开（不建议） 使用边框将折叠的margin隔开：border:1px transparent solid; （大小大于零） 使用内边距将折叠的margin隔开：padding:1px; （大小大于零） 为父元素设置overflow:hidden; display:inline-block;（IE7以下不支持） position:absolute; float:left; 后记很久之前便想写一篇关于margin折叠的文章了，可惜由于各种原因，再加上很长一段时间以来心比较急躁，难以静下来写写东西，无奈耽搁至今。。寒假里还有许多事要做，希望自己能够乐观积极，不怕麻烦，赶紧把这些事情通通搞定，然后恶补前端性能与JavaScript，准备下学期的实习。——于2013年1月26日 深夜1:46:48

JavaScript农历转换类
type: item
date: 2013-01-24T04:54:00+00:00
description: 今天在做项目的时候需要用到JavaScript农历转换算法，从网上搜索并整理了一下，重新写出一个JavaScript农历转换类，不敢独占，特此与大家分享。/*! * LunarDate v1.0.0 * http://www.clanfei.com/ * * Author: Lanfei * Date: 2013-1-24 */ var LunarDate = { madd: new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334), HsString: '甲乙丙丁戊己庚辛壬癸', EbString: '子丑寅卯辰巳午未申酉戌亥', NumString: "一二三四五六七八九十", MonString: "正二三四五六七八九十冬腊", CalendarData: new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95), Year: null, Month: null, Day: null, TheDate: null, GetBit: function(m, n){ return (m >> n) & 1; }, e2c: function(){ this.TheDate = (arguments.length != 3) ? new Date(): new Date(arguments[0], arguments[1], arguments[2]); var total, m, n, k; var isEnd = false; var tmp = this.TheDate.getFullYear(); total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + this.madd[this.TheDate.getMonth()] + this.TheDate.getDate() - 38; if (this.TheDate.getYear() % 4 == 0 && this.TheDate.getMonth() > 1) { total++; } for (m = 0; ; m++) { k = (this.CalendarData[m] < 0xfff) ? 11: 12; for (n = k; n >= 0; n--) { if (total <= 29 + this.GetBit(this.CalendarData[m], n)) { isEnd = true; break; } total = total - 29 - this.GetBit(this.CalendarData[m], n); } if (isEnd) break; } this.Year = 1921 + m; this.Month = k - n + 1; this.Day = total; if (k == 12) { if (…

JavaScript日期格式化函数
type: item
date: 2013-01-24T03:52:00+00:00
description: Date.prototype.format = function(mask) { var d = this; var zeroize = function (value, length) { if (!length) length = 2; value = String(value); for (var i = 0, zeros = ''; i < (length - value.length); i++) { zeros += '0'; } return zeros + value; }; return mask.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function($0) { switch($0) { case 'd': return d.getDate(); case 'dd': return zeroize(d.getDate()); case 'ddd': return ['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()]; case 'dddd': return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()]; case 'M': return d.getMonth() + 1; case 'MM': return zeroize(d.getMonth() + 1); case 'MMM': return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()]; case 'MMMM': return ['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()]; case 'yy': return String(d.getFullYear()).substr(2); case 'yyyy': return d.getFullYear(); case 'h': return d.getHours() % 12 || 12; case 'hh': return zeroize(d.getHours() % 12 || 12); case 'H': return d.getHours(); case 'HH': return zeroize(d.getHours()); case 'm': return d.getMinutes(); case 'mm': return zeroize(d.getMinutes()); case 's': return d.getSeconds(); case 'ss': return zeroize(d.getSeconds()); case 'l': return zeroize(d.getMilliseconds(), 3); case 'L': var m = d.getMilliseconds(); if (m > 99) m = Math.round(m / 10); return zeroize(m); case 'tt': return d.getHours() < 12 ? 'am' : 'pm'; case 'TT': return d.getHours() < 12 ? 'AM' : 'PM'; case 'Z': return d.toUTCString().match(/[A-Z]+$/); default: return $0.substr(1, $0.length - 2); } }); };

[转载]提高效率的秘诀 by Aaron Swartz
type: item
date: 2013-01-17T08:06:21+00:00
description: 译者按：Aaron Swartz是个传奇般的人物，他是一个网络奇才，也是一个资讯自由斗士。此前我对他一无所知，但早就受益于他的智慧。大学阶段，我很大一部分知识都来自于Google Reader，而RSS是他14岁跟别人共同创作的作品。自 2010年6月13日以来，我一共在Google Reader里阅读了 63,862 个条目。天妒英才，美国扭曲的知识产权保护制度和司法体系更是将他逼上了绝路。在此，我把Aaron Swartz的这篇著名的《HOWTO: Be more productive》翻译成中文，向他致敬！总是有人这样说：“把看电视的时间用于写小说，你早就完成一部大作了！”这确实让人很难反驳，因为把时间用在写书上无疑比看电视更好。然而，这个论调隐含这样一个假设：不同种类的时间是“可互换的”。你可以轻易用看电视的时间来写一部小说。但实际上，并非如此。时间也是分三六九等的。如果在去地铁站的路上，我发现自己忘带笔记本了，那么就很难利用这段时间写几段小说。工作时，如果总是被打断的时候，你也很难集中精力有效利用时间。有时候，还有心理作用影响时间的质量：当我兴致不错时，就能积极、高效地工作；而身心俱疲时就只能去看电视了。如果想提高效率，你就一定要遵循以下准则：首先，你必须充分利用每一类型的时间；其次，你得尽量让时间变成优质时间。有效利用时间选择值得的工作寄蜉蝣于天地，渺沧海之一粟。（至少我是这样被教育的）因此为什么要把这短暂的生命浪费在愚蠢的事情上？人们很容易做一些简单的事情，然而你更应该扪心自问：我能否做些更有意义的事情？为什么不去做些更重要的事情呢？你也许很难直面这种诘问，（如果你遵循这个法则的话，就会经常问自己：为什么你不在做这世上最重要的事呢？）然而，每前进的一小步都会提升你的效率。这并不是说你终生都忙于垂名青史，至少我肯定没有（毕竟，我还在写这篇文章呢）。但它绝对是我衡量生活的标准。一心三用另一个常见的误解是：专注于一件事情有利于我们高效完成任务。我认为这是无稽之谈。此时此刻，我正调整姿势、锻炼肌肉、喝着饮料、清理书桌、跟我的兄弟聊QQ，当然我还在写这篇文章。在过去的一天里，我曾为这篇小文做些准备工作、读了一本书、吃了点东西、回复了几封邮件、与朋友们聊天、备份硬盘，还整理了我的阅读清单。而在过去的一周里，我参与了好几个软件项目的开发，读了几本书，研究了几种编程语言，并提出了一些我的看法，等等。一心三用能够让你在不同品质的时间里都能工作。此外，当你在一件事情上卡住，或者感到无聊时，你可以做些别的事情。（这也给你的头脑一些活动活动的时间）在一段时间内做多件事情也能够让你更富有创造力。创造力就是能够把在别的领域学到的东西应用于当下的工作中。如果你同时做不同领域的多个项目，你就能借用很多奇思妙想了。列张清单同时做多件事情其实没有那么难——更多的人想同时做无穷多件。但如果你试图把它们一股脑记在心里，你脆弱的心灵会马上崩溃。这种同时记住所有要做事情的心理压力简直能把人逼疯。其实解决方法很简单：把他们都写下来。一旦你有这样的事项清单，你就能按部就班地组织工作了。比如说，我的事项清单是编程、写作、思考、跑腿、阅读、聆听和观察。其实很多大项目包含一系列工作事项。举个例子，写这篇文章就包括阅读有关拖延症的文章、思考各个章节、遣词造句、发邮件问人问题等。这些事项都是除了写作之外必须执行的实际工作。我们应该合理安排每个事项，这样当你有合适的时间时，就能够不假思索地完成工作。整合清单与生活一旦你有了这个事项清单，接下来的问题就变成记得看它，最好无论你要做什么之前都能注意到事项清单。例如，我把最近正在读的书放在桌子上一摞书的最上面。这样每当要读书时，我只需打开最上面的那本。我也这样处理电影和电视节目。每听到值得一看的电影，我就把它拷贝到我电脑中一个特殊的文件夹里。，每当要看电影时，我就直接打开那个文件夹。我也想过一些更深入的方法。例如，当我检查博客更新时，就有一个网页带着我“待读”文件夹里的文章弹出来。或者当我休息时，就弹出一个工作小贴士的网页。提升时间质量上面的建议已经能够让你充分利用各种时间，然而更重要的是你得让时间变得更优质。很多人把自己的时间浪费在上学或上班这种无聊的事情上。如果你在工作或者上学，显然你应该停止浪费生命。为了进一步提升时间质量，你需要做些别的什么呢？减少生理限制随身携带纸和笔我认识很多有趣的人，他们都随时携带某种口袋笔记本。纸和笔在任何情况下都是可以立即使用的。你可以随时给别人写东西、做笔记、或者涂鸦想法等。我甚至在乘坐地铁时写过一篇完整的文章。（我过去经常这么做，但现在我随身带着智能机。我不用它发送信息，但智能机能让我随时随地都有阅读材料（电子邮件），它也能把我随时记下的笔记推送到电子邮箱的收件箱，而收件箱里都是必须马上处理…

2013年10大网页设计趋势
type: item
date: 2013-01-01T04:36:50+00:00
description: TNW发布了2013年10大网页设计趋势： 响应式布局盛行，即一个网站适配多种屏幕; 重视字体的选择，使用Web字体; 更少的使用Flash，使用其他任何可能替代的技术; 苹果iOS的拟物化设计将不再时髦; 使用巨大的背景图构造大气的视觉效果; 产品和个人介绍页面留出更多空白; 更多的社交网络分享入口; 浅色、冷色调重新成为主流; 移动App将取代一部分移动网页流量; 内容依旧为王; 好了，该到我们年终展望新年的时刻了。2012年我们看到一些新的设计趋势在Web设计领域，特别是响应式页面设计。那么跟随我们的脚步，来预测一下2013年的设计趋势吧！1、响应式网页设计越来越被重视响应式网页设计已经不是什么新鲜名词了，但我们为什么还有说它呢？简单地说：响应式设计的方法会更多且制定相应的标准。2012年通过断点的响应式 设计类适合不同的屏幕，当新的设备比如iPad mini冲击足够大的市场的时候，这种方式将得到改变，断点可能被替换成其他实现方式。我们认为更多的网站设计将专注于最初的页面设计以响应式，而非单独制定不同设备的模式。这种响应式设计忘记尺寸以便支持多种设备，我们将看到更丰富的页面设计适应不同节点的设备。2、重视字体的选择，使用Web字体初建网站时，Web设计师和开发者常常专注于图片处理及JavaScript脚本。在过去两年以及未来相当长的一段时间内，Web设计类型将得到一 次突破，最为明显的是字体设计成为网页设计重中之重。比如使用@font-face 把服务器上字体引入，比图片和脚步JavaScript更轻量化。而且，字体布局相比图片和JavaScript复杂的布局更适合响应式设计。大胆放开你的思维，让更多的字体设计尽显在你的网站上。3、更少的使用Flash，使用其他任何可能替代的技术不要惊讶Flash到2012年才拿掉，对网站的SEO来说它是多么垃圾，很多移动设备已经不支持它了（看看苹果的设备），而且更新很痛苦（经常崩溃浏览器，你有过吗？）最佳的方式是使用HTML5/CSS3和JavaScript等。2013年Flash可能举步维艰。虽然有些危言耸听，但这是事实，Adobe都不支持Flash在Android 4.1以上系统了。4、 苹果iOS的拟物化设计将不再时髦这里有个关于苹果拟物化设计的讨论，甚至苹果也在商议改变设计决策。过去的项目线索并不能帮助我们在新技术上改进思维方式。举个例子，我们要阅读电子书不需要虚拟一个书架放一本书，把它放在我们的设备上，我们知道它是电子书，我们知道如何打开阅读它。苹果正需求其他设计美学，等待其他人步入后尘。我们已经看到一些公司拥有它们自己的方法论，比如微软的Metro风格设计。所以未来，更多设计将扁平化。5、使用巨大的背景图构造大气的视觉效果上一条我们说过字体设计将替代图片，但这不矛盾，越来越多的网站使用大图片放在网站的首页以增加视觉冲击力。当然，使用大图像要考虑带宽流量和服务器问题，合理优化是首要。6、留白更多2012年设计趋势中谈到页面留白，2013年这种趋势将继续存在，响应式页面设计和简约的设计美学都是关键的因素。留白会更显的专业和大气。（哈哈，又是大气～）7、更多的社交网络分享入口把更多的社交媒体整合到你的新网站中吧，在每篇文章中凸显社交按钮，2013年更多深层次的社交整合将得到爆发。这包含了简单的社交登录外，还有更深层次的比如“微博支付”分享等，以及其他社交分享方式（Instagram、Pinterest等），更多广告业也将在社交媒体上出现。8、浅色、冷色调重新成为主流，更多淡雅平静的配色方案色彩潮流比任何东西来去更快，使用淡雅和平静的色彩将会出现更多网站上。过去几个月我们也看到一些网站的设计，比如新版的PayPal主页。你可以看看“Pantone 2013色彩选择”。很难预测那些色彩在某特定时间内流行。不过值得肯定的是，淡雅和浅色风格设计将主导网站和移动应用界面设计。安全色如白色、黑色和灰色将作为主要色调。9、移动App将取代一部分移动网页流量即使网站兼容所有设备，对于某些网站，一个移动应用来的更好些。像Twitter, Facebook, Pinterest等，移动应用版比移动浏览器版体验会更好些。2013年这种趋势将更加明显，越来越多的人通过移动应用浏览内容而不是浏览器。10、内容有价值恒古不变2013年网页设计更注重有价值内容的呈现。没有内容，就没有网站。保持网站新鲜的最佳方式就是更新有价值的内容。撰写，设计，发布和共享一切以内容为主，响应式设计也不例外。总之：响应式设计、有价值的内容、社交媒体将成为2013年的主导。最后，祝大家新年快乐～转载自：UISDC Enqoo原文