面壁者语

勤反思 戒执迷

2012todo

分类:其他

按照惯例本该在元旦总结展望,但是当时还是懒了下没记下来。现在补上,为了个奔头。

  1. 下次换工作,应该只去做自己喜欢的项目,而不会为了各种原因去迁就,误人误己;
  2. 学会Axure,包括素材库整理,高保真原型制作手法,以及杜绝一开始就掉进细节的老毛病;
  3. PhotoShop操作,比如画个可以入得了自己法眼的按钮什么的;
  4. 学一门后端语言;
  5. 把iUIKit做出来;
  6. 学会合理的拒绝;
  7. 入手iMac or MBP15;
  8. 头发扎起来= =;
  9. 偏瘦30斤变成偏瘦20斤= =;
  10. 找个妹子= =;

UIWebView内嵌带重力感应特性的HTML5网页

分类:iOS, 前端制作

很绕的标题。这几天接到的需求,本次客户希望广告的形式有重力感应特性,具体需求其实就和指南针一个样,设备转动图片会对应偏转。由于每次的广告形式都可能不同,所以直接在iOS中用Object-C写不大现实,总不能上个广告就递交一次App审核。最终团队定下来用HTML5做成网页嵌进UIWebView方便一点。

慢慢总结,这一个月内肯定会碰到许多问题。HTML5除了新表单元素外我也没实际接触过这些新特性,这时候必须要高呼Google万岁。

10月17日

DeviceOrientationEvent,iPhone 4支持iPad 1代不支持;DeviceMotionEvent则是两种都支持。问了下对这块比较熟悉的大城小胖,说iPad 1代没有陀螺仪。这会略有些麻烦,DeviceOrientationEvent本身获取到的就是偏转角度值,直接赋值给webkitTransform的rotate即可。而DeviceMotionEvent返回的则是带有重力系数的百分数,需要做处理转化成角度,比如var alpha = Math.round(((eventData.accelerationIncludingGravity.x) / 9.81) *-90);

http://www.html5rocks.com/en/tutorials/device/orientation/devicemotionsample.html 源代码中有注释。

有个问题是,竖屏左右旋转设备对应的角度来源是alpha参数,如果不设置iPad缩屏,由竖屏转到横屏,角度来源变成了beta参数

10月18日

深深的感觉到瘸腿前端诸多不便。前几年做前端时大部分时间写CSS,为赶进度JS需求基本用JQuery插件调参数实现,原生JS没去碰,然后这半年更是没做前端了,发现现在连window绑定多个事件都要翻书了。OOP更是无从谈起。

本打算写个小App调用HTML文件,这样屏幕翻转及是否缩屏直接在系统级控制方便些。没想客户给了张样图希望明天就出个Demo,纯网页就行,只好先放弃App。开了PS一量表盘竟然不是同心圆啊我去⋯⋯算旋转中心点很是纠结了下。

开始和团队成员讨论和App端的接口问题:

  1. 判断是否禁止屏幕翻转
  2. 如果不禁止的话,四个方向对应的变量名,纯粹为了扩展考虑,比如四个方向展示四张不同的网页?
  3. 四方向是否需要单独写四个JS文件模块化操作
  4. JS和图片是放服务器上由App下载内部传递给HTML,还是直接写进HTML
第四点牵涉到离线缓存。目前的App下载的图片会保存到设备中做离线读取,但是HTML5本身有mainfest机制并且据说很快,而广告需求一般并不是动态网页,可以不考虑刷新问题。尚不明确的是UIWebView中内嵌的网页是否可以用manifest。另外mainfest需要运维同学帮忙配置MIME TYPE。
发现sofish的博客上HTML5和CSS3的有用的内容不少。
另,HTML5中判断屏幕翻转的是body的onorientationchange属性。

10月24日

瞎折腾了几天。纪录一些tips,慢慢整理

  1. iOS里的safari,也需要写CSS Reset,下午的实际经历是至少body标签有默认边距
  2. onorientationchange事件,在纯粹的HTML网页里通过iOS上的Safari浏览没问题,内嵌到App中会失效!
  3. 在viewController里的shouldAutorotateToInterfaceOrientation中设置NO,这时候通过[[UIApplication sharedApplication] statusBarOrientation]是否等于UIInterfaceOrientation已经不能正确判断方向,或者说,这时候需要判断的是设备的物理朝向,而不是屏幕方向。

10月26日

不知道是不是有过度OOP的说法,总之感觉有些方法被封装的过度了。对于Object-C这种链式import文件的代码,如果一个功能从头到尾串联的文件太多,同时各级文件里的方法都用到子级文件的实例变量做参数,那么分析代码及修改是件很头疼的事情。
基本雏形写的差不多了,事实上做到现在已经已经偏离了最初的目标,纯粹的HTML5网页做重力感应很早就实现,但是由于那些JS的问题,始终考虑是不是要用iOS内置的UIAcceleremoter来获得重力加速度参数,网页端只需要获取参数执行对应DOM动画就好。

LiveReload介绍及使用说明

分类:MAC, 工具

前几天购买TotalFinder时发现作者还是FireQuery、FireRainbow、FireLogger和XRefresh这几个Firebug插件的作者。经常写CSS的同学可能熟悉XRefresh,这个插件可以监视CSS文件,发生变动后直接刷新浏览器,从而省去手动F5刷新的步骤。这个功能相当提升效率,尤其是在双屏开发的情况下。

XRefresh的作者现在已经在官方主页上推荐使用者转用LiveReload,并声称由于TotalFinder的成功,将转型Mac软件开发,XRefresh也将停止后续开发。

LiveReload的官网上可以看到目前已经进入2.0的分支,并且暂时仅支持Mac平台,Windows版会在Mac版完工后开发。在此之前,PC用户只能继续使用1.x版

下载安装之后,进入设置界面

LiveReload设置第一步截图

LiveReload自带了Chrome和Safari上配合的插件,并且提供了无需插件的解决方案,页面中调用一段JS即可。设置好后进入下一步,添加或删除要监视的目录。添加第一个文件夹后会自动跳出详细设置:

LiveReload设置步骤三截图

可以看到LiveReload集成了一些语言支持,比如SASS这种写CSS的好物。如果用不到这些,直接默认设置全忽略即可,软件本身对CSS的监视无需设置。至此,软件部分设置全部完成,剩下的是浏览器插件的配置。

浏览器插件部分,目前软件自带的没有Firefox插件,需要自行下载。有个问题是0.6.2版本的插件并不支持Firefox 6.0.1,需要下0.6.3,在写这篇文章的时候,0.6.3还是未审核状态,但是不影响使用。

Chrome和Firefox的插件设置都只需要设置监听的IP和端口,软件默认监听端口是35729,但是并没有写进插件里面,这个需要注意设置一下,我在这个步骤卡了蛮久。

设置完成后在浏览器中点亮图标即可开始监听。目前为止对Mac平台下常用的编辑器均有支持,TextMate无需设置,Coda和Sublime Text 2会略有要求,具体可以查看官网Wiki的List of supported editors页。即使编辑器不被支持,也提供了自定义脚本的方法。

忘记F5吧,Enjoy it!

获取设备device token相关

分类:iOS

配合同事测试Push Notification,需要获得几台设备的Device Token。参照Programming Apple Push Notification Services尝试了下,陷阱无数,整理之。

一。设备第一次真机调试时,通过xcode的Add To Portal可以自动生成个叫做iOS Team Provisioning Profile: *的Profile,但是这个并不能拿来做Push Notification测试,因为不能使用任何包含通配符的Profile,需要在dev center中自建App ID,并配置开启Development Push SSL Certificate。

二、配置Development Push SSL Certificate时需要使用钥匙串工具,这时候要注意填写常用名称必须使用小写字母,因为要和xcode生成的保持一致,否则会报重复证书错误,我在这里卡了蛮久。

三、App ID删除一个就少一个啊⋯⋯⋯⋯

我的Mac软件列表

分类:MAC, 工具

用Mac半年多了,常用软件基本成型,总结下。安全起见我会优先使用软件的官方网站作为链接;大多为免费软件,需购买的会注明;我的操作系统已经升级到了10.7,也就是说这些软件都支持Lion。

基础应用

sogou输入法  PC平台用谷歌拼音,MAC选很久还是用了搜狗。不爽的是内置了个皮肤切换器竟然还是单独APP,对我来说纯鸡肋的功能。

Mac迅雷 下载工具,搭配我的迅雷VIP离线下载使用。新版本通过浏览器插件直接可以嗅探到离线下载网页里的下载地址了。然则好像是国内的软件大佬第一个把安装时附加插件模式引入Mac的(可选项,迅雷自家的狗狗搜索),这点让我很不爽。

Keka  解压缩工具,图标略重口,昆虫恐惧者绕道。

TrashMe  软件卸载工具。虽说Mac没有注册表,号称卸载程序直接删除就OK,但是还是会留下一些诸如配置文件、崩溃报告之类的垃圾文件。TrashMe就是为系统洁癖强迫症准备的。
注意目前新版本进了App Store收费了,我用的是还未收费时的1.5.2版本,对我来说功能也够了。google下也能找到1.5.2的下载,比如这里

TotalFinder(收费)换到MAC第一件觉得坑爹的事情就是没有剪切功能,TotalFinder可以实现,并且这只是诸多实用功能之一,Tab式浏览、左右分屏、快捷键呼出隐藏、右键集成复制当前文件路径等等等等,非常贴心。
单份许可售价18$,另有3人爱心包卖36$,人均12$。一份许可允许单人多电脑使用或者多人单电脑使用,12刀买这个软件个人认为很值。
友情提醒,3人爱心包的购买流程相当反人类,入手时需留神说明。

MPlayerX  开源视频播放器,MAC下的暴风影音

Skim  PDF阅读器,可以做笔记什么的。更新异常勤快⋯⋯

VirtualBox  虚拟机,装Windows开Fiddler、网银、IE。虽说VMware的无缝技术看上去很拉风,但是有合适替代品的情况下,尽量不用破解。

Adium  IM,集成Gtalk和MSN;如果只是用Gtalk的话,系统自带iChat不错。当然,还有人民群众喜闻乐见的QQ for Mac,App Store上有,不过我习惯从官网直接下。

Cyberduck  开源FTP、SFTP客户端,内置各大云平台接口,不过对于普通用户来说大多用不到就是了。
在官方网站上可以免费下载,而Mac Store中则需要购买,区别仅仅是免费版上有一个获取捐赠码的按钮。

iSSH  你懂得。我用Chrome+switchysharp及Firefox+autoproxy的组合。

Gas Mask  图形界面修改hosts文件,可以多套配置。不过大多时候还是习惯开终端vi /etc/hosts…

Sparrow (收费) Mac下口碑巨好的Email客户端。

Reeder  (收费) Mac下巨好用的RSS阅读器。其实我相当希望作者写邮件客户端。

Divvy (收费) 大屏好帮手,很轻松的改变程序窗口的大小。在公司iMac下我经常用,自己13寸的MBP出镜率则不高。

音频没什么好推荐的,我没找到很中意的软件,目前还在用iTunes。

开发工具

iTerm2  强悍的终端扩展软件,我用的最多的特性是自定义快捷键切换呼出隐藏。

Go2Shell  图标拖到Finder上, 点击会自动打开终端并定位到当前所在目录。目前版本和iTerm2兼容不好,不过软件图标太萌了,舍不得删>_<

Macvim  编辑器。

TextMate (收费)编辑器。试用十分钟忍不住买了⋯⋯
渣中文支持,合成字体的解决方案试用了下太闹心,强迫写只有自己能看懂的英文注释当学英语吧⋯⋯

TextExpander (收费)系统级的代码片段,功能很贴心,价格不贴心。习惯用带有snippet功能的编辑器的话可以省掉这玩意

LiveReload  XRefresh替代品,改样式文件自动刷新无需F5。使用方法

 

另外对Vim类键盘控用户,推荐一个LaunchBar (收费) ,系统日常使用也可以像Vim一样全键盘操控。比如我的呼出快捷键是Command+2,呼出后,输入”vir”可以定位到virtualBox,回车打开;输入“.”之后输入网址可以调用默认浏览器打开;输入”/”回车直接跳到磁盘根目录,输入”~”回车直接跳到用户目录;等等。帮助文档我看了一半左右,如果全部掌握的话效率会大幅提高。

Mac内置Apache和php支持,我参照秦歌的文章自行安装了mysql和phpmyadmin,当然也有MAMP之类一键安装包备选。

Git我习惯在终端里命令行操作,查看log的话还是GUI比较直观,Github官方出的有客户端

其他

Lion 恢复磁盘助理  通过App store升级到Lion后,如需重装系统,再从10.6开始太麻烦了。Apple官方发布的这个软件可以提前制作系统恢复磁盘。

GuitarPro 6 (收费)吉他爱好者的好物,我购入的第一份超过50美刀的软件。一份许可一年内可以装在五台不同CPU的电脑上。

AppyDays  Mac、iPhone、iPad上限免和打折软件搜集。

PDF Image Extract(收费) 提取PDF中的图片,编辑同事需求很大,原价29.9美刀,通过AppyDays看到折扣价2.9刀时购入

Office for Mac不得不装,因为发现Pages对Word的兼容不是很好,而我显然不能要求BOSS或者HR换Mac⋯⋯安装的时候竟然还没有可选项,Outlook、MSN、Silver什么的都塞了进去,毕竟一般人需要的只是Word、PowerPoint、Excel。顺便说一句,PowerPoint比起Keynote弱爆了。

Adobe的东西也不得不装,只不过,和M$的Office一样,需要各显神通了。

在MAC中使用VirtualBox中的Fiddler

分类:工具

仅限在MAC中使用VirtualBox安装Windows,使用虚拟机中的Fiddler。VirtualBox和Fiddler的使用不做介绍。

  1. 设置虚拟机的网络连接为Bridged Adapter;
  2. Fiddler中Tools-Fiddler Options – Connections ,勾选Allow Remote Computers to Connect;
  3. 查看虚拟机的IP地址,如192.168.0.10;
  4. MAC中的代理设置为 192.168.0.10:8888
官网文档中的直接使用PC名代替IP我这边没有成功过,所以麻烦的是每次开虚拟机的IP可能会不同。

UIScrollView做相册的注意事项

分类:iOS

基础理论

iOS中,1pixel = 4bytes

每张全屏(320×480)图片占用内存为320x480x4约等于600Kb;

如果直接把数码相机或者摄像头拍摄下来的图片塞到相册中,一张500万像素的照片,将要占用20M内存

解决方法

  1. 对图片进行尺寸预处理
  2. UIScrollView中只加载必要的图片
    只放置三个UIImageView的方法 :Efficiently build a gallery like Photos.app

“拥抱HTML5″归来

分类:前端制作

这个周末参加了w3ctech举办的“拥抱HTML5”,两天时间江桥跑浦东累得半死,相信举办方和几位各地赶过来的讲师们也一样,感谢他们。

收益

出于我自己严重偏重构向以及工具控的缘故,受益最大的当属何涛的《优酷HTML5视频应用》和hlb的《SCSS & Compass》以及魏子钧的《HTML5游戏与移动平台》。hax的台风也很OK,他的《HTML5兼容性实战》不错。黄后锦的《Web Forms 2.0》之前多少从其他渠道了解过,所以只是过了一遍。

总的来说,目前的行业会议仍旧是老问题——众口难调。第一天不停听到抱怨说太多过于理论化的东西,但是实际上,个人感觉在这种会议上去讲语法规则是一种浪费。细节技术方面的东西,我更喜欢三种:

  1. 总结性的内容,比如《优酷HTML5视频应用》里提到的video的几种控件在移动版safari中不可用,这方面的东西去年自己项目中很是头疼了一把;
  2. “不可为”的内容,比如《Web Forms 2.0》里没有准备的HTML5新增的各种类型input在不同浏览器中的支持情况列表、《Canvas 2D 应用的设计思路》里提到的超出canvas画布的图片会不解析;
  3. 技巧类的内容,比如hax的《HTML5兼容性实战》中提到的增加IE8的属性判断

而技术细节外,类似hlb的介绍新工具的内容一直比较受青睐。

梳理

SASS

之前在MBP上试用过LESS,语法对我来说够用了,外加MAC平台下有个免费的less.app感觉还不错,就没去查阅SASS的资料。今天听下来,SASS的功能更强大,可惜推上问hlb 要他们出的Compass.app无果,改天7美刀支持下。

我最初看到这类工具心动仅仅是因为解决了模块复用、颜色管理及语义化命名的问题,倒没去想内嵌浏览器探测等高级功能。因为我比较喜欢尽可能少的用浏览器HACK去解决问题,平时常用的也不过button类型的input的外观处理,以及clearfix的_zoom:1。

顾虑也有,LESS现在可以直接通过head区调用个JS来渲染.less文件而放弃.css文件,但是30多K的JS文件不算小,性能洁癖的我始终不敢在正式项目上使用。采用工具生成CSS文件的话,还没有做过全面的测试,不清楚生成的CSS文件质量如何,比如容器放置等比大小背景图我会省略掉no-repeat等参数来缩减CSS体积,这方面不知道这两种工具的表现如何。

video应用

去年碰到的移动版safari不支持的属性没记录下来,等何涛PPT放出了。按照去年的经验来说,video标签直接引用视频,两个问题:

  • 最大的问题在视频加载速度上,比如拖动进度条后的快速下载及页面加载后的预下载。去年这时候看apple官网的都是卡的要死,而几个大网站号称的支持HTML5的视频只有3到4M内的小视频可以流畅播放。这个不知道什么时候有平民化的解决方案,否则小网站应用堪忧。
  • 混乱的视频格式需要多种编码压缩,去年找H.264的工具就折腾了许久,apple自家带输出功能的quicktime是付费的。记得当时我是找视频采集行业的朋友给了个大型软件才搞定。

heading content元素

听Jeremy Keith讲到页面中可以全用h1时想起,去年尝试重构博客皮肤时翻过WHATWG关于heading content和sectioning content元素的文档并记录过heading content笔记。WHATWG提到过新的Hx系列元素的层级判断,有个比较重要的概念是根据文档流里Hx出现的位置来判定,而不仅仅是h1-h6的顺序。这一块比较繁杂,记得当时有个网站可以在线生成指定页面的层级示意,可惜这会儿反倒找不到了。

另外就是,SEO方面,不知道搜索引擎什么时候能跟上这种全写h1的权重判断规则,所以商业站要这么用的话需要考虑风险。

web forms

找到一份比较全面的HTML5 web forms浏览器支持列表,根据评论推断10年5月前发表。同时作者给出的有示例页面

更新:PPK大神整理的The new input types ,11年3月9号出品。好人啊!

其他

附上一篇Nicholas C. Zakas的文章 《Using HTML5 semantic elements today》。今天Jeremy Keith讲不支持自定义HTML标签,但是Zakas总结了个namespace hack蛮有意思,可以参考下。

git中文乱码解决

分类:工具

注:这些是git bash中的中文乱码问题

ls命令查看当前文件夹下文件时,中文文件、文件名乱码:

编辑git安装目录下 git/etc/git-completion.bash ,新增一行 alias ls=’ls –show-control-chars –color=auto’

不能递交中文commit log:

  1. 像我一样把msysgit自带的vi改成gvim
  2. 修改git/etc/inputrc set output-meta on 及 set convert-meta off

git log无法显示中文注释:

在git/etc/profile中增加一行:export LESSCHARSET=iso8859

另外还有个问题,git bash中的文件对比显示出来代码中的中文也是乱码,这部分还没找到解决方法。或者干脆使用git gui,全局选项里设定字符编码UTF-8,上面问题全部搞定,只是msysgit的界面做的实在不够人性化

————————————————————

另,MAC有一些很不错的GIT图形界面客户端,我用的免费的gity