最近在看着《五天学会绘画》学画画

一直以来就想学画画,但不知道从何入手。很早以前买过那套《和艺术家一样思考》,这套书应该是挺不错的,主题除了画画还有一些思维方面的东西。

后来看《黑客与画家》,Paul写得煽动力极强,很多人看完后恨不得马上去学LISP。其中也谈到了作者早期学习绘画的经历以及绘画对思维的影响,看完后又动了画画的念头。

真正动手是有一天看到@turatrix 在instagram上传了他的一张习作,看起来非常赞,于是追推发现他在看《五天学会绘画》。搜了下这本书的介绍,原来是《和艺术家一样思考》的作者写的。唔。。名字看起来很诱惑而且又不是坑爹型作者,马上下手买了。

买回来翻了头几页,里面先是提到了一个关键的地方:一般人画画都是用脑子里的符号系统去画画,所以不管画什么人都是差不多的一些符号,画同类东西也是。我当时觉得这一点貌似我以前注意过。因为摄影时也很多时候要用这样的思维方法,即观察“事物的实际形状/曝光”,而不是符号化的东西。关于这一点书上写得更清楚。

书中要求在正式开始学习之前,先画三幅画:自画像,记忆中的某个人,自己的手。画完后存档,以便和学完后的效果进行对比。我就照要求画了一下,效果出乎我的意料:

我的首个素描作品:自画像!!

 

» 点击展开全文

javascript在mobile safari上无法对input元素focus的问题

最近在iPhone的mobile safari上开发的时候碰到这样一个问题:

在一般的正常浏览器上,可以用javascript来focus到一个输入框上:

var elem = document.getElementById(‘inputElementId’);
elem.focus();

但是在iOS的mobile safari上,这样的代码不起作用。在stackoverflow上也有不少人提问,比如这篇 Programmatically selecting text in an input field on iOS devices (mobile Safari)  。但帖子里的方法都没有起作用。

经过一些实验,目前的结论是:

只有在监听了用户出发的事件的函数中执行focus才有用。

比如说这样:

var button = document.getElementById(‘btn’);
var inputElem = document.getElemntById(‘input-elem’);
button.addEventListener(‘click’, function(ev){
    button.focus();
});

这种场景下就可以生效。经过测试,在iOS和Andriod的默认浏览器上测试都一样,根据上面帖子里的说法,应该是webkit的bug(或者feature?)。根据挖出来的老帖,似乎在S60的系统中很久以前这个问题就一直存在了。

甚至这样的代码也可以工作:用了jQuery中的自定义事件

$.subscribe(‘testevent’,function(ev){
$(‘#test’).focus();
});

$(‘#btn’).click(function(ev){
$.publish(‘testevent’)
});

如果要在mobile safari中对input进行focus操作,就只能在这样的限制下工作了。

在iOS的safari上像chrome for android ICS那样进行远程调试

最近移动开发越来越热,前端工程师们在触屏手机上进行开发的活儿应该也是越来越多了。如果不是经验老到,能够一开始就极其熟练地划分模块并设计好接口,然后用TDD来进行开发的话,那么开发-调试-debug的过程应该是很蛋疼的,需要一边写,一边到手机上去操作验证一下。很多情况下,还只能用alert或者console.log来查看输出进行调试。

iphone-remote-debug-with-safari-dev-tools-on-mac

什么是远程调试

在移动设备上访问网页,而在PC/Mac端上用类似firebug的developer tools进行实时调试,就像题图一样。

» 点击展开全文

标题党:几句话说清楚新iPad,以及该不该买?

几句话总结新iPad以及该不该买

前几天,Apple按照每年的惯例发布了新一代iPad(2012年款),简单总结一下目前汇总的信息和我自己的看法.

苹果自己做了一个非常漂亮,效果非凡的页面:http://www.apple.com/ipad/features/

新iPad是一款极其优秀的高性能平板

 

有超过所有PC屏幕的超高分辨率屏幕,使得图形应用和电子书可以达到前所未有的效果。

支持4G网络,使得移动网络应用有了飞跃的可能

有超强GPU,将来会有惊人画面的游戏出现

有和iPhone4S一样结构的,但像素为500万的后置摄像头,支持1080P高清视频拍摄

在如此高性能的条件下维持了和上代相同的电池续航时间,这也使得重量和厚度有一点点增加

同期发布的iPhoto等超酷应用程序,充分证明了苹果宣扬的“后PC”时代是真正可实现的。

新iPad没有特别的名字,就叫iPad,也意味着iPad和Macbook,iMac等一样,成为了固定产品线,每年进行固定更新。

有了这样的iPad,加上超凡的iOS系统,“It Just Works”的iCloud,还有逐渐实现了和iOS体验一致的Moutain Lion系统,我想,每个买的起的人类都应该买一块。

作为苦逼的要买房的大陆程序员,我自己就不买了=_=

概括起来,新iPad的特性就这些了。标题党结束!

下面还想再聊聊一些具体的感想,以及其实具体是不是买iPad不重要,重要的是你是否愿意早点来体验苹果的整套系统。

» 点击展开全文

计时工具aTimeLogger (for iPhone), 统计你每天花在各种事情上的时间

atimelogger icon

简介:一个iPhone上简单易用的时间记录和回顾软件

今天想起来介绍一个非常赞的app:aTimeLogger (iTunes 下载链接),我之前用过几个月,虽然现在不用了,但还是很有必要推荐给需要的朋友.现在使用的方法是在《小强升职记》这本很赞的GTD指导书中看来的,下文会另作介绍。

最早是在@xiaolai 老师的twitter上看到他提到的,后来就拿来用了一下,发现很好地实现了他设计的功能,于是就一直用下来.

这个软件的作用是这样的:在你开始做一件事之前按下开始,做完后按下结束,然后软件就会记住你在这件事情上花了多久,简单吧.它和简单的秒表之间的主要区别在于,他的关注点并非是精确地记录一件事情花了多长时间,而是在坚持使用之后,统计你每天,每周,每月花在每个类目的时间.

比如说,如果我每次看书时都记录一下,记录在了”Reading”这个类目里,那么我就可以定期回顾我自己在读书上花了多长时间,其他的比如上网,交通,会议等等分别花了多少时间.

人对自己做事情的效率的看法往往是不准确的,而如果对自己效率的了解不准确,就没法做出准确的计划和估算.对自己进行客观了解的好办法就是客观记录和回顾,因此,就需要aTimeLogger这样的自动软件来记录和生成报表.

» 点击展开全文

利用HTML5草案的API进行前端性能监控

最近在做前端性能监控的时候研究了一下这个api,总结整理一下.

HTML5提供的性能分析API

HTML5草案中提供了这样一个api,在javascript中可以这样获取:

window.performance.timing

有如下这些属性:

  • navigationStart
  • unloadEventStart
  • unloadEventEnd
  • redirectStart
  • redirectEnd
  • fetchStart
  • domainLookupStart
  • domainLookupEnd
  • connectStart
  • connectEnd
  • secureConnectionStart
  • requestStart
  • responseStart
  • responseEnd
  • domLoading
  • domInteractive
  • domContentLoadedStart
  • domContentLoadedEnd
  • domComplete
  • loadEventStart
  • loadEventEnd

http://w3c-test.org/webperf/specs/NavigationTiming/ 在这里提供了一张解释的图表:

 

timing-overview

window.performance.timing中各个属性发生过程的图解

 

上面这个地址中,完整地定义了每个值在什么情况下如何返回,可以仔细阅读一下.

采集到这些数据后就可以发回服务端进行统计分析.

浏览器兼容性和bug

目前IE9+,Chrome 14+,firefox 7+支持了这个api,关于完整的支持列表可以在这里查到.safari居然没实现.

由于各个浏览器实现的差异,以及有些字段定义的不明确,所以有一些bug和差异.下面这篇文章十分全面,可以作为详细的使用参考:

HTML5 performance API 草案.

 

对资源文件加载情况的统计

这是整个页面加载的时间统计,如果要统计其他信息,比如页面上所有的资源文件,比如css和图片文件的分段加载的统计怎么办呢?

HTML5 草案中还有另一个Resource Timing统计,草案看这里:http://w3c-test.org/webperf/specs/ResourceTiming/

可惜的是,目前没有任何浏览器实现这个接口,所以目前只能先了解一下,将来出来之后再应用.

传统浏览器的统计

对于没有实现这个接口的浏览器,就只能采用传统方法,在头部计算时间戳,在window.onload和domReady的时候再计算一个时间戳,计算一下差值.具体实现方法就不用讲了吧.

解读联通iPhone 4S 合约机套餐:如何选择?

联通公布的套餐很难懂

这几天联通终于公布了iPhone 4S的套餐价格,传送门:http://iphone.10010.com/

今年的套餐比去年更为复杂难懂,所以就专门写一篇来帮助理解那些奇怪的算法

这是16GB原始计划表:

合约期 套餐月费
(单位:元)
66 96 126 156 186 226 286 386 586 886
产品包价格 5880
12个月 优惠购机款 4399 4199 4099 3899 3699 3499 3199 2699 1599 0
预存款 1481 1681 1781 1981 2181 2381 2681 3181 4281 5880
分月返还额度 123 140 148 165 181 198 223 265 356 490
24个月 优惠购机款 3999 3699 3399 3099 2699 2299 1699 0 0 0
预存款 1881 2181 2481 2781 3181 3581 4181 5880 5880 5880
分月返还额度 78 90 103 115 132 149 174 245 245 245
36个月 优惠购机款 3699 3199 2699 2199 1699 1099 0 0 0 0
预存款 2181 2681 3181 3681 4181 4781 5880 5880 5880 5880
分月返还额度 60 74 88 102 116 132 163 163 163 163

 

实际上我们只要关心两个点:

第一,在整个合约期内我们一共要出多少钱

联通今年的套餐,每一档的预存款是一样的,例如16GB的统一都是5880元 ,包含了购机款和预存话费。那么我们后续需要继续缴纳的费用就等于(每月应缴话费186-每月返还金额181)×12个月=60元,于是我们等于是一年内总共花费了5880+60=5940元,而66套餐不需要后续补交费用,总共5880但一年后你账户会剩余684元,886套餐的一年总花费就是10632元。

于是我们可以列出如下总花费表格:

合约期 套餐月费 66 96 126 156 186 226 286 386 586 886
12 月返还 123 140 148 165 181 198 223 265 356 490
一年 5196 5352 5616 5772 5940 6216 6636 7332 8640 10632
24 月返还 78 90 103 115 132 149 174 245 245 245
两年 5592 6024 6432 6864 7176 7728 8568 9264 14064 21264
36 月返还 60 74 88 102 116 132 163 163 163 163
三年 6096 6672 7248 7824 8400 9264 10308 13908 21108 31908

比如这个186套餐×12个月合约,我们需要出5940元,等效于我们买了5000元的裸机外另外出了1000元,但是享受了186×12的话费。

 

为了直观,我使用了另一种算法,描述如下,也就是另一种视角:

第二,选择哪一档套餐时,能节约我买iPhone的购机款

假设我们要买iPhone,于是我们需要出5000元买一个iPhone裸机,假设我不换号的话,我下来一年的消费就是5000+每月话费×12,假设大家跟我一样要花100元每月,那么接下来一年的支出是5000+100×12=6200元,也就是说,如果想换iPhone,接下来一年即使不换号码,总支出也有6200元,和226套餐的总支出一致,但却享受不到226套餐的3G流量,因此,这种情况下选择226套餐,和不换号的原始支出是一致的。

于是有下表描述了你选择每一档套餐时,和你买裸机的情况下,每月话费多少时支出一致:

 

 16GB iPhone 4S
合约期 套餐月费 66 96 126 156 186 226 286 386 586 886
预存款(购机+话费) 5880
iPhone裸机价格 4988
12 分月返还额度 123 140 148 165 181 198 223 265 356 490
等效裸机每月话费 17 29 52 65 79 102 137 195 304 470
1年总花费 5196 5352 5616 5772 5940 6216 6636 7332 8640 10632
24 分月返还额度 78 90 103 115 132 149 174 245 245 245
等效裸机每月话费 25 43 60 78 91 114 149 178 378 678
2年总花费 5592 6024 6432 6864 7176 7728 8568 9264 14064 21264
36 分月返还额度 60 74 88 102 116 132 163 163 163 163
等效裸机每月话费 31 47 63 79 95 119 148 248 448 748
3年总花费 5952 6672 7248 7824 8400 9264 10308 13908 21108 31908

 

我标红了226套餐的等效每月话费,简单来说:如果你入226套餐一年合约,总共要花6216元;如果买个裸机,平时话费每月100,那么总花费4988+1200=6188.

所以说,如果平时每月话费100元,你买裸机的消费和入226套餐合约机的消费是一模一样的,可以考虑以此为参考线,在此基础上增加一点支出以获得更多流量,或者选择更低一档套餐来节约一些买iPhone的费用。

为什么这个可以是一个参考线呢?因为你相当于买裸机之后每月继续花100话费,却享受了226元的套餐,等于是没花钱而升级了一个套餐,是一个不增加支出的参考线。如果选择更高的套餐,例如286的,就等于每月花137的话费,享受286的套餐内容,在套餐上还是可以省钱的;如果平时通信很少,186套餐就能满足你的全部需求(这种假设的成立条件是联通的套餐里是免费接听,全国无漫游,而且有一些免费通话时间),等同于继续每月花100元话费,但购机费用变成了5940-100×12=4740元。

因此“等效每月裸机话费”可以作为一个参考线,从这条线开始上下一两档来选择最适合自己的套餐。

 

关于“0元购机”

说到另一个容易混淆的概念“0元购机”,可以看到去年联通286套餐可以0元购机,今年386套餐可以0元购机,但事实上若不是为了买iPhone,多数人一个月不会用这么多话费。再强调一遍,对我们来说,关心的不是联通标出的“购机款”,而是“我们实际最后总共付了多少钱”。说到0元购机,66元附近的套餐是最接近0元购机的,12个月的套餐实际花的钱只比裸机多了两百多,是相当节约的一个选择,如果呼出很少,多数时候有wifi可用,是相当值得考虑的套餐。

合约期满后怎么办

根据这里的报道,老合约机用户只要续签给定长度的合约计划,可以和新用户一样买合约机,只是签约时需要带上原始的机器和号码,以便验证老合约机。所以完全可以入一个一年合约,一年后卖掉手里的合约机换下一代,只是大陆的上市总是这么蛋疼各种不靠谱,总要晚好几个月才能明确。

 

总结

联通现在同时保留了iPhone 4S,iPhone 4,iPhone 3GS的合约计划,iPhone 4的合约计划和去年完全一样,并没有随着iPhone 4的降价而降价,只是有了便宜一档的iPhone 4 8GB。等于是iPhone 4S套餐涨价了。

对于经济情况正常的同学,推荐使用上述的第二张表格,选择和自己目前支出等效的套餐,反正iPhone是一次性投资,一年后大约亏损一千,就可以继续换下一代合约机。

对于想利用合约计划买便宜iPhone的同学,可以参考上述两张表选择“总支出尽量小”的合约计划,也确实可以省下一笔购机款。

上面的表格我已经做成了一个Google Spreadsheet,能访问的同学可以自行访问这里: iPhone 4S套餐解读表 。表中已经包含了16G/32G/64G 的所有套餐,裸机价格是以传闻的行货价格为准,等13号正式公布价格后再修改。

[update]2012-01-12 感谢@xanaxah 的指正,66套餐一年后应该剩余684元

[update]2012-01-09 感谢 @linsk 的指正,之前表格中两年和三年的总价格参数写错了,现已修正

大约在冬季 – 与我的至爱相识一周年

又一个冬天

毕业工作以后,时间过得总是飞快而机械,多数时间呆在办公楼里,季节之间的变换也变得转瞬而至。秋天过去已经很久了,直到最近几天气温急速下降,不得不多穿了好几件衣服,才发觉冬天已经到了。

相似的环境引起当时的回忆。当冬天突然来临,熟悉事情轮回发生,低温如期降临,方才想起,12月12日,我和亲爱的素素已经认识一周年了。

周六时,淘花运在涌金广场的KTV举办了又一次单身派对活动,名为“要爱要爱”,谐音于“12-12”,这也是淘花运一周年。去年的12月12号,淘花运在同一个地方,举办了第一次活动,当时的名字叫做“要爱要爱-圣诞不做剩蛋”——这样一个很有阿里味的标题,在那里,我认识了我的素素
» 点击展开全文

淘宝便捷搜索插件 for Alfred app

Alfred 简单介绍

Alfred app是一个非常精彩的Mac增强软件,大致来说,是可以在全局呼出一个输入框,可以快速访问各种程序或者用一些缩写来进行一个快捷操作。

» 点击展开全文

iTunes Match的购买,使用,以及多个apple id的绑定

什么是iTunes Match

itunes match intro

iTunes Match是教主的最后一个”one more thing”,也是苹果重新在音乐领域推出的一个重要产品.我最早接触苹果,是从iPod开始的。非iOS不用的一个重要原因就是,没有任何管理音乐的方式能比得上iTunes。

» 点击展开全文



Featuring WPMU Bloglist Widget by YD WordPress Developer