部门之间

我现在坐在公司的电脑前,等着一个人到家。因为他到家了,意味着我很快就能下班了。

为什么呢?因为我今天下班前要提交一个完成的项目到AppStore,但是最终发布前要进行一个最终的测试——其实就是用一个账户登录一下正式服务器(之前一直是用测试服务器),看看能不能成功——这是一个极其简单的功能,因为我只需要修改一行服务器的网址就行了,但是却从下午5点多一直等到现在都没登上去。

为什么呢?因为可供测试的正式账号居然只有一个,而这个被我不小心输错密码三次,然后就被锁定了。一开始我以为锁定了等一会就自动解锁了,类似“15分钟后再登录”这样的。没想到我等了20多分钟了还是提示锁定,我就去问人,结果被告知,这个锁定了不会自动解锁的,你只有去找管理员手动解锁。我说这管理员是谁啊?他说他也不知道,谁给你这账号你问谁。然后我就去问A,A说,账号是B给我的,我只是拿来用,你问问C吧,然后给了我一个电话号码。C我并不认识,打过去后,他告诉我他正在回家的路上,大约15分钟后到家帮我弄,我表示谢意后坐下来等,十五分钟后他短信告诉我,你的这个我看了没有权限,帮你改不了。我说,那你知道不知道谁能改的了?他说不知道。

这个时候我意识到了事态的严重性,我把此事报告给了项目经理,项目经理说咱们移动部跟他们这个不是同一个部门,我打电话试试吧,然后项目经理辛苦地一个个电话问,D不接电话直接挂掉了,E好像是说也没权限,F说你问问G,G终于根此事相关,他说你问H,H就是这个项目的,H直接被叫到这里,他说这个他也搞不了,得找他们的老大才可以,不过老大正在下班的路上,要等半个多小时才能到家。然后项目经理对我说,那你只好等他回家喽。

所以我现在就坐在公司电脑前,等着他到家。因为他到家了,意味着我很快就能下班了。

 

三位一体

昨天晚上加班到大半夜才回来,这次的这个项目可以说我是被忽悠了,此事稍候再详说。昨天测试人员给我提了一个Bug说是金额显示有的没有格式化成xxx,xxx,xxx.xx的样子,我这个类是从之前同事的项目中复制过来的,大致瞄了一眼发现看不懂它的算法,我心说这种非常通用的类网上应该有现成的吧,没想到搜了下全是什么JS的JAVA的,郁闷,犹豫一下,决定自己写一个算了。

为了快速方便而且不出错,决定用最笨的办法来搞,由于我们服务器返回的数值全是字符串,所以我把它以小数点为界拆成左右两部分,再做一些判断处理就行了,虽然不优雅占内存,但是这都算是“穷举”了的方法稳定性应该不差。

做着做着自测时,就费解了,金额的数字干嘛要以3位做为分隔呢?123,456,789.01这样的数根本不方便读啊,反而我觉得1,2345,6789.01这样每4位进行一个分隔多方便啊,人们一看就能出来——一亿两千三百四十五万六千七百八十九块零一分。

这是为什么呢?想了半天也没想明白。后来和朋友聊起这个,顿觉自己还是太不国际化了——我们是按4位以万、万万(亿)来分隔数字的,可人家老外是按3位以“骚人的”、“迷林”、“逼林”来分隔的啊,我国加入WTO了,应该是要和人家国际“接轨”吧,毕竟全球一体化经济嘛,谁叫人家老美老大呢。

不过不知道古时候阿拉伯数字刚传入中国时,是不是按1,2345,6789.01的形式来记账的呢,改天得调查下。

 

 

不伤外壳给iPod Classic换SSD

前几天就发现iPod Classic硬盘转动的声音不对,果然没过两天它就开不了机了,还发出咔咔的声音,硬盘这东西真的不靠谱。去淘宝看了下发现可以换SSD,价格也还行,于是撸了一个回来,不过看了一些教程,大家都说难点在于拆后盖,因为它太紧了,必须锤子刀片一起上,这样不可避免会造成损伤,所以好多人都直接再买个原装外壳回来。可我这种穷屌丝舍不得花钱在外壳上啊,只好自己尝试看看,没想到还真给它完美拆开了,一点划痕没留下,看图:

下面说说要诀吧,关键有两点,第一,不要用金属锐器;第二,耐心。行百里者半九十,我之前有很多电子产品都是拆着拆着火大了,一不小心前功尽弃。

首先找一张不用的银行卡,剪成长条形,弄若干个。然后用塑料撬棒从iPod侧面插进去一点,开了缝后把塑料片塞进去,使劲推到底,然后往旁边移动撬棒,隔个大约1cm再插一张塑料片进去。如此这般,最终塞成下图中的样子:

这个塑料片的位置一定要按上面来,因为它正好把壳里的卡扣给压住。这时只需再用一点点力,可以把后壳拿下来了,不过要注意拿的时候小心,因为苹果非常不科学地在主板两侧各放了一根连接背壳的排线,别拉断了。另外下图这个地方的排线不要蛮力拨,上面的黑色塑料块是可以向上提起的,然后线就非常轻松地自己掉出来了:

打开后将原硬盘拆下,换上新的SSD,避免短路用原来装SSD的防静电袋剪成合适的大小将之包裹。原硬盘的橡胶垫不能可以利用一下防止震动,最后用高温胶带固定之。

如果怕掉下来,可以多粘一些,我就粘了不少。

确认都没问题后,安回去就容易多了,直接用力扣上就行了。话说苹果这东西,方便了富士康的工人,却是在难为售后维修人员啊。不过有钱任性,可能他就是想让你坏掉后直接买新的吧。

 

不是自己的电脑

这次再次体验到“工欲善其事,必先利其器”这个道理,本来两个小时能搞定的事,竟然足足用了9个小时,也就是说白白浪费了7个小时。

这次我哥结婚,考虑到刚来新单位不久,所以只请了周一周二两天假,但我这个项目正好周三上线,而周五时还留有一个bug,抱着负责的态度,我决定回去后抽空把它修复。因为我哥也有macbook,我还得带重重一大箱的行李后,所以决定只带个U盘拷上源码和XCode,考虑到他可能是用Wind7的,顺便把Yosemite的安装包也拷了一份。由于Yosemite太大了,我那8G的U盘放不下,所以找了一张32G的SD卡放了这些东西。

但是实事证明我还是没想周全,我哥这台Mac是08年的版本,机身竟然没带读卡器,我只好找到我妹的Acer笔记本,用她的电脑做一个转移。但她的电脑是ghost的xp,没有装读卡器驱动,我去官方找了下载。安装好发现提示我的sd卡未格式化,好吧,xp sp2之前的好像不认extFat(为了放大于4G的Yosemite),于是又去下载补丁。

限于速度,十来分钟才复制到U盘,然后我去给mac升级,没想到Yosemite.app竟然不支持升级,我一看系统版本,10.6.2,我靠,这。。。看来我哥这mac当年是买回来就直接上windows了。好吧,那做个安装U盘直接覆盖吧,打开Terminal输入命令,靠 ,提示遇到error,搜索了一下,原来10.6.8之前的不支持那个命令!还是版本问题,这下我没辙了,更新吧。然后我打开系统更新,家里网不比魔都,只有4M好慢的说,半个小时过去了,一半还没到,那我下去吃个饭再上来吧,一个小时后我上来,靠,连接中断!我打开百度,发现也不行,ping一下路由,发现跟外界已经隔绝了。我又试了十来分钟修复这个网,发现搞不定,正在我感叹天绝我也时,网又突然好了!靠,网通太不靠谱了吧!然后我继续更新,40分钟后终于完成,安装了10来分钟,进入10.6.8.

我喜滋滋地把安装包复制到Application下,双击,哇,界面出来了,一个爽啊,那就安装呗,没过一分钟,靠,提示我空间不够,系统还需要4.66G的可用空间!我打开磁盘管理看了下…mac只留了20来G,剩下的全给了Bootcamp分区…怨念啊…这咋办,试试删东西吧,我非常狠地把除了磁盘管理外的所有app全删除了,但还是不够…无奈之下,我只好把U盘再格式货成hfs,把Yosemite.app拖了进去,用U盘安装,这下硬盘可用空间够了。但是我没想到,U盘升级比想象中还慢,提示“剩余40分钟”,实际上两个多小时才安装好。完了我又用我妹电脑把XCode转移到U盘再拖到mac解压…到工程打开时,已经累积过去了5个多小时,买嘎。那么开始修复bug吧…不过我怎么这么困,看下表,靠,已经1点半了,睡觉,明天再说。

第二天起来忙这忙那…到中午吃饭时终于有时间了,我赶紧边吃饭边改bug啊。靠,怎么打(出来的是*,难道键盘也会飘移?仔细一看,我靠他上学时用的这电脑竟然是个德文键盘,Y的地方是Z,{的位置是Ü。只好纯盲打了,不看它,不看它,终于打出来是对的了…此处省略两小时,bug改好…我准备测试,上Develper下载证书,安装,测试成功。到发布了最后一步发现还得有Distribution的,那再去下一下吧,靠,不能创建,只好再revoke掉之前的,发现还是灰色,根据经验,这种情况只有等了,我等啊等,刷新啊刷新,半个小时又过去了,灰色的终于可以变黑了。创建下载导入,终于打包ipa成功。

接下来我上公司web邮箱发送安装包,结果微软的这个邮箱太坑了,mac下上传不了附件,那用QQ邮箱发吧,还得抄送很多人,我复制带格式的收件人,发现粘贴进去不能用,只好一个个复制,妈蛋,写收件人用掉5分钟!还好终于是发成功了。

靠,我现在很郁闷哇!看来电脑这东西必须得用自己的,不然实在让人崩溃啊。我决定了,回去我就买台11.6的MBA,以后出门带着!气死我了!

有去无回

最近Evernote同步时越来越慢了,总不能写个笔记都要连VPN吧,看来是时候迁到国内了。上印象笔记大陆官网查看了下,竟没有完美的搬迁方法!不客气地说,他们提供的方法太实在是太渣了。不说那个一小时只复制了10来篇的NoteDup,本地文件的导入导出居然会丢失结构……我的神,这是在最初架构设计时就没想好数据结构吗?

难道没有别的办法了么我搜索了一下发现好像还真是没有什么好办法,现在摆在我面前的只有两条路了:1,全部导出再导入再分类;2,按分类一个个导出再一个个导入。呃,好像都不很省力。还是用方法2吧,用了20多分钟将所有笔记导出,发现又麻烦了,我这个免费版每个月只有60M的上传流量,而导出的文件有400M。这怎么办,难道花30块升级一个会员,靠这太贵了,完全不符合中国国情嘛!不科学不科学,既然它不科学的地方这么多,我不如择木而栖好了。调研了一下,发现国内云笔记现在其实是三足鼎立的,那就是换另外俩个试试吧。



下载了之后让人大跌眼镜了,这也太简洁了,几乎完全是最基础的功能嘛,甚至连导入都没有。去Windows下看看吧,果不其然,比Mac版强太多了,尤其是Wiz笔记,功能看起来非常丰富强大嘛。嗯,开始导入evernote的数据,我导,我倒。怎么提示导入完成却啥也没看到,笔记本里还是空啊。这这,重试,还是不行。这也太不稳定了,以后还让人怎么敢用哪。


再试试有道吧,嗯,有道还好,很快就就全部导入完成了,和预料中一样,所有分类都变成了”导入笔记”,得,我一个个重命名好了。改啊改啊改啊,用了足足一个小时才全部改完,我这分类太细了……不过看着同步的速度刷刷的,也感觉心满意足了。不过有一点不不的地方就是,它和前两个”只限制每月上传流量而不限制总容量”不同的是,它的限制存储空间的,我这个免费的初始容量是3G,不知道以后写多了会怎么样,另外就是它的Mac版更更简陋。

最后要说的是,这些云笔记们对用户的态度都是”进来容易想走难”,导入容易,却不方便导出给对手用。虽然这种心情可以 理解,却不够大气,而且用户真要想走了这种方法是根本留不住的,倒不如把心思花在做的更好更稳定上面,让用户舍不得走。

最后放一个自己使用这三个笔记的对比,以供参考。

Evernote ?为知笔记 有道云笔记
导入格式 印象笔记,OneNote txt,html,印象笔记,有道云 有道云,evernote
导出格式 印象笔记,mht,html mht,html,txt 有道云,PDF
Mac版功能 比Windows版都好 基础功能 最最基础功能
iOS移动端 iOS6以上 iOS7以上(6能下载但闪退) iOS7以上
特色功能 圈点 功能极强大,还能自己做插件 有密码锁

iOS使用矢量图的总结

 原理

苹果最擅长使用障眼法,之前是障用户的眼,现在又来障开发者。XCode6的这个“支持矢量图”,实际上只是编译项目时,根据矢量图自动生成对应的@1x,@2x和@3x的png格式图像。

不过这也有好处,首先是不用担心运行时扩展尺寸而降低性能,另外可以兼容更早的iOS版本,经实际测试,除了iOS8外,iOS6、7是没问题的,5目前没有条件测试。

For Coding人员

对于开发者来说,使用非常方便。唯一要做的就是在Images.xcassets目录中将图片Image Set的Type改成“Vectors”,之后你会发现原先左边的一排@1x,@2x,@3x的格子不见了,转而只留下一个“Universal”。此时将美术人员提供的pdf文件,像以往那样拖进来就OK了。

ios_vector_1

使用方法同过去一模一样,既可以在xib或storyboard中直接指定,也可以在代码中用

self.logoImageView.image = [UIImage imageNamed:@”logo”];

来进行设置。

值得注意的是,它本质上还是个png,所以如果你“机智”地加了pdf后缀,就像下面这样,那么很遗憾,这就就上了苹果的当。

self.logoImageView.image = [UIImage imageNamed:@”logo.pdf”];

上面这个样子是无法显示出来的。

编译后,可以清楚地看到,三种大小的图片和以往一样面熟,如图:

ios_vector_2

是的,已经没有了,对于开发人员来说,除了使用上更方便外,几乎和过去一模一样。

For UI人员

目前Xcode只支持PDF这和种矢量图格式,无论用AI或PS都可以,只要是可以放大不变形的都可以,比如路径或矢量字体。

存储时设置为PDF格式即可。

ios_vector_3

(AI)

ios_vector_4

(PS)

不过要注意的是,务必去掉“保留编辑功能”前面的勾,见下图:

ios_vector_5

另外,虽然矢量图文件一定程度上放大并不会变形,比如这个2×2像素的

ios_vector_6

在放大后仍然很清晰:

ios_vector_7

 

但是在编译完成时,却被XCode转成了真的只有2×2像素的png:

ios_vector_8

解决的方法是在创建时设置画布的尺寸为@1x的大小基准,也就是假设屏幕分辨率为320*480的大小来做。这一点可能和当前流行的以640宽度或750宽度做有些不同,我这里的方法也不是最终方法,这个还要由设计师来自行评估。

ios_vector_9

 

这样当创建一个比如150x150px的pdf时:

ios_vector_10

XCode就会以它为基准自动生成适合不同分辨率的@1x,@2x,@3x的png图片了:

ios_vector_11

(150×150)

ios_vector_12

(300×300)

ios_vector_13(450*450)