不可能是wwWmumu模拟器切换窗口14又换别的入口了吧,怎么最进mumu模拟器切换窗口14cOm老是跳转接入点

全本小说,TXT小说免费下载-如晶小说
[]-第三十八章 把失恋丢在晨风里
[]-大结局 这些兽人都是攻
[]-第二十七章乱点鸳鸯
[]-第二十三回 一念至此数千年
[]--145- 回归-尾声
[]-把时间当作朋友
[]-第九十七章 双喜章临门(大结局)
[]-番外日常
[]-第五百三十四章 番外46
[]-第487章 首长,带你飞(大结局下)
[]-百度去吧!!!新书出来了!!
[]-第九十九章 图象后的情绪
《小说排行》
[]-【九君番外结局】 十全九美
[]-主角访谈时间!
[]-26. 神人也怒
[]-晚上没更新
[]-番外 四公主6
[]-第三十八章、肯信人间有兄弟
[]-第00章 《花丛龙王》《诸天情圣》
[]-【抽风文案】
[]-第五十四章 成绩排名
[]-第226章 完结了?只是另一个故事的开始
《刚刚更新的小说》
[]-第十二章 生死抉择
[]-现代生活十
[]-第19章如斯红颜五
[]-69番外二
[]-306 尾声2
[]-第四十四章 大结局
[]-第三十六章,主线任务完成
[]-第一百四十二章 下毒问题
[]-第一百四十四章 尾声
[]-六百六十九 神话(完)
[]-美好的生活(九) 倒霉的福康安
[]-三十九章救援
[]-终章:神界之主
[]-第一百二十九章 锲而不舍
[]-第六十九章:雷VS雷(二)
[]-第58章 _〔:3」∠〕_
[]-生日礼物
[]-169、修学旅行(5)
[]-第一章 理论和现实
[]-【 四大军校 】 第四十八章:行军布阵
[]-最近在飞卢更新!
[]-322 原来如此 准备工作(上)
[]-第385章 后记(下)
[]-第55章 风雨欲来2
[]-第四卷:伪娘:第59节:是梦是瞬... [vip]
[]-第255章 番外(完) 缘尽
[]-第860章 不周山巅
[]-第六十八章 风雪归人
[]-第二百六十一章 终章
[]-第52章 落魄书生
[]-第093章 合作
[]-第六十六章 改名换性
[]-困兽春夜
[]-第六十章:交锋
[]-第二百零九章 结局
[]-第五十二章·凉
[]-第48章 闻变
[]-第八十七章
[]-第十九章 德比拉的请求
[]-第66章:还阳
[]-第51章,坠崖
[]-终章 End&每个人的故事
[]-34.情深谁想天各一方 缘尽奈何相思犹存
[]-第一百零八节 饭馆恶战
[]-第九十二章 大结局
[]-第八十八章 黑马
[]-第229章 黑监狱
[]-第五十章 交易
所有小说均由书友上传且不做任何商业用途,仅为书友提供一个分享与交流的平台。且为非赢利性站点。
如果部分小说涉嫌色情、暴力等违法内容,或者是侵犯了作者您的合法权益,请联系admin@www.aiqingda.com我们删除!
Copyright ©2016&&在日~20日举行的上,腾讯即时通讯平台部技术总监做了题为《手机QQ的移动化实践之路》()的演讲,介绍了手机QQ在服务海量移动用户方面经历了的一些经验。
范瑞彬(hata fan),腾讯公司即时通讯平台部技术总监,T4专家。2004年加入腾讯,长期负责手机QQ后台整体建设,完整地经历了手机QQ从数千人在线到亿级在线的整个过程,见证了十多年来移动互联网服务的高速发展。目前主要负责QQ整体的接入平台建设,在海量分布式后台架构、IM系统设计、移动业务架构设计等方面积累了多年实践经验。
本文系根据演讲内容整理而成。
演讲主要涉及3个部分。第一,移动环境的特点。第二,针对移动环境的特点,如何做好接入?第三,架构设计理念方面的变化。
下图包含了云、管、端三个部分,多种终端通过多种网络访问云端的服务。上面红色部分是接入层,是首先会受到影响的。下面是逻辑存储、运营支撑和安全体系,这个系统目前终端同时在线过亿。终端每秒的请求量差不多千万,一天的请求量在数千亿的量级。
移动环境的特点
可以从三个方面看移动环境的特点。首先是移动网络,大家首先感觉是慢,而且流量又挺贵的。它还有很多种制式,差别也很大。还有终端的特点,相对PC来说手机终端资源(CPU、内存、电量等)是受限的,永远是不够用的。而且终端的平台很多,机型多,能力差异也非常大。还有一个很重要的特点就是移动性,可以随身携带,可以随时随地利用碎片化的时间,环境多变,使用频繁。
如何做好接入
面对这些环境的变化,接入首先会受到影响,而接入又是所有服务的基石。所以在移动环境下面,提供高质量的接入服务非常重要。如果将接入比作开车,那首先要选择一条快速的路线,这就相当于路由调度策略。另外还需要有一辆好车,车要快,类似于数据传输加速。然而选了一条好的路线,也有了一辆快车,并不代表就能快速到达目的地,尤其是非WIFI接入时,新增了基站、大量新增的网源系统,非常复杂。这里面有一些规则需要了解,如果不了解的话可能这些就是坑,而遇到了坑可能会翻车,所以不能把它当成黑盒,所以需要熟悉路况。路况很复杂,车也很复杂,跑的过程当中难免会遇到异常,所以还得会修车,不能抛锚,这几点是接入的几个主要工作。
1.路由调度(选快路)
分布式接入,在南方、北方和中部选择了三个地区,各自部署了一个点,每个点也覆盖了三大运营商,这是基础工作。
这时还有一个问题,如果中小运营商用户也访问到在三大运营商部署的服务,会存在跨网访问,质量很差。所以又建设了一个内容加速机房,它有独立IP,而且是TCP互联,路由直达,这样中小运营商的质量可以得到明显改善。针对海外用户,最初在香港部署了一个点,后来又在全球各大洲,每个洲选择了一个点,海外用户就近访问加速点,通过加速点再访问国内的服务器。
部署是在不断优化的,调度也需要更精准的体现。所谓调度,无非就是说什么时候,哪些用户该连到哪些server。所以这里可以分用户、server、时间三个维度。比如说用户,细化到每个网关;server,把用户调度到质量较高的server上面去;时间比较好理解,因为移动网络经常有波动,需要快速地发现波动,并及时自动干预,把它调度走。
还有一个很常见的问题,就是频繁切换网络。用户可能每天都在不同运营商,不同的网络之间来回切换。连接的时候不用域名,直接用IP,那如何保证用户不管怎么样切换网络,都能连接到连到他应该连接的server上面呢?假如说用户第一次连某个网络时,他会使用本地默认列表,连到server时,如果server发现不是最优的,会及时纠正,下发一份新的server列表。开发团队干脆把用户最近使用的50个接入点统统缓存下来。
2.数据传输加速(造快车)
做完了调度相当于选择了一条快速路线,这是不够的,还要想办法造一辆快的车。
首先是不用域名,直接用IP。这样可以减少域名解析的开销,更重要的是,可以避免域名解析带来的各种故障,还可以减少一些被屏蔽和封掉的可能。
第二点是重用连接、预连接。比如说QQ里面发图的时候,其实用户还在选择图片的时候,会先把连接建立起来,而且用户传完图以后连接不会立即断掉,会维持一段时间,后面有批量图的时候可以继续使用,减少一次连接的时间可以减少几百毫秒。
第三点是精简协议和逻辑。
第四点是参数调优。比如说“拥塞窗口”(congestion window,CWND),server的操作系统默认是4,建议调大一点,可以调到10,这样可以减轻慢启动对传输带来的影响。还有最大传输单元(Maximum Transmission Unit,MTU),之前跟运营商的朋友交流,他们给的建议是不要大于1400,现在基本上都是按照这个策略来做的。还有重新传输超时(Retransmission Timeout, RTO),一般设3秒左右,系统默认值设的是1。
还有一点叫高带宽时延积环境,在这种环境下面会遇到带宽吃不满,存在浪费的问题。以前网络都是2G网络的功能机时代。当时传图片大部分用的都是单连接。最近几年,网络越来越多,种类也越来越多,而且网络也越来越好。所以系统也进行了改进,可以根据网络状况动态地选择合适的连接数。比如说经过理论分析以及实验验证,开发团队发现其实在WIFI、3G、4G比较好的网络下面传输大数据时,用双连接比单连接提升至少10%,而且越好的网络提升效果越明显。
3.移动网络环境不是黑盒(熟路况)
不能简单地把移动网络环境当成黑核来处理,有些细节知识是需要了解的。
第一,要了解国内移动网关的一些设置,比如说它会限制某个包传输的大小,如果超过的话直接失败。之前跟设备厂商了解,华为很多网关设置的是10M,但是各家都不一样,也没有什么标准。还有网关很多时候对传输时间有限制,这个也是各家不一样的。了解了这些细节,肯定要很好地支持分片和断点续传,否则在某些地区可能会出问题。
第二,网关对很多标准的理解和实现,各家也是不一样的,尤其像影响比较大的,比如说对HTTP协议的理解和实现。比如说在HTTP的标准文档里面,提了一个range,但是没有强制去做,有的厂商支持的就不是太好。曾经遇到过一种情况,头部用到了range,在分片传输图片时,运营商网关把它过滤掉了,客户端就不知道下一次该从哪里发,所以可能又从第一片开始发,这种情况下,如果客户端没有做好相关保护,就非常危险,会大量的重传,用户流量会被大量消耗。这就是需要注意的地方,尽量不要在HTTP头部加一些字段,需要传一些信息的话,可以放在包体里面,自己解析和理解。
第三,tcp_tw_recycle。用户说网络是好的,但是连不上server。抓包分析发现,客户端三次握手的包已经发过来了,但是server没有回。这是什么问题呢?经过深入分析,研究了一下协议栈,以及一些参数设置,后来发现,假如tcp_tw_recycle是开启的,server会检查对端同一个网关IP发过来的包,时间是不是递增的,如果不是递增的可能会丢掉。但是移动网络环境下,这是很难保证的。关闭tcp_tw_recycle,问题就解决了。后来这成了外网接入层的标准配置。
第四,端口受限。有人反映某些地区的用户连server的某些端口连不上,或者是连接质量比较差。比如曾经发现香港数码通的用户连8080端口的质量非常差,很慢;还发现有些机场WIFI,比如说深圳机场WIFI,除了8080和43之外的断口都封掉了,用其他的端口用户也连不上。开发团队意识到,不应该被动地靠用户的反馈来发现问题和解决问题,所以建设了一套自动的系统,根据海量的数据去分析,根据分析结果,server在给客户端返回合适接入列表时,优先选择质量高的端口,而且也尽量注意端口搭配的多样性,这样可以提升接入质量。
最后看一下信令风暴。其实从09年开始,手机QQ这边每年会被运营商朋友拉过去一起探讨这个问题,双方本着互相理解、合作共赢的态度来对待这个问题。除了建立一些双方认可的虚拟消耗运算模型之外,双方还就移动业务达成了技术共识。比如说减少定时包,减少不必要的及时包,因为有些包真的不一定要非常及时。可以适当做一些缓存和合并。还有一点就是要有流控,万一客户端有BUG,大量的发包,这时候有压跨移动网络的可能,并不仅仅是数据网,它对电信网也有影响,所以server这时要有能力控制客户端发包的策略和频率,这样HTTP服务才能让人放心一点。
4.异常处理(会修车)
比如说业务用的是TCP长连接,但是请求有可能被劫持,可能会返回到奇怪的HTML页面,最常见的是WIFI的认证注册,这时需要及时准确地发现这些问题,展现出来提示用户。
有一种网络抖动叫先发后到,需要做一些保护。比如说要求客户端发包的时候一定要递增,而且即使进程被杀掉重新再起来,也要保证这次发包比上次大。借助这个大小能知道真实发包时间的先后顺序。
终端休眠,终端是为了省电,肯定有一些休眠策略,App为了应对这些策略,有一些自动唤醒机制,做一些自己想做的事。如果用Wakelock,拿到这个锁之后,系统再也进入不了休眠了,这个锁一般用两三秒就足够了,一定要慎重。
最后是App健康和智能检测。客户端不能保证百分之百不出问题,有时候确实有可能在一些小概率的情况下,存在异常的点,它有可能会触发一些频繁大量的发包策略。大量的发包会把用户的流量大量消耗掉,而且这还算轻的,更严重的是如果有较多用户都出现这样的问题,可能不是流量消耗的问题,而存在把移动网络压跨的可能,移动网络真的很脆弱。
《刑法》中有一条罪叫破坏通信罪,可以判三到七年,所以这种工作很危险,也是有责任的。压垮移动网络后果很严重,要想办法极早发现和干预。怎么办呢?server可以做一些准实时的流量消耗分析,如果发现在单位时间内用户流量超过某个异常值,就及时干预,而不是事后检查。比如可以把用户直接踢下线,或者更严重一点,直接让客户端的App自动自杀。
除了流量的问题,还有一些问题也是很隐蔽的,比如说用户的流量看起来没有太大变化。但是可能客户端有bug或者是设计不当,调用了几次后台操作,这个版本发出去的话,调用可能会增加好几倍甚至更多,后台的压力就非常大,于是又是过载保护,又是紧急扩容,这个也不是开发团队希望看到的,需要有更好的办法来解决它。比如可以分析这个版本,每个用户的使用频率。如果发现这个版本与上个版本相比,使用频率变化很大,多了很多,而且又没有提前报备,这里肯定有问题,就把这个问题抓出来,这些事情靠测试同学是不现实的,他很难测试到这些问题,这些问题需要技术同学自己想办法通过做智能数据分析来发现。
架构设计的理念
根据大量的实践,开发团队提炼出两个关键词:轻量交互和差异服务。
1.轻量交互
轻量交互,其实核心思想就是节省,主要思想是从协议层面以及逻辑层面做一些精简、合并、压缩、消峰、异步等等。
减少交互步骤。客户端一次请求,尽量把信息都拿下去,后台也尽量把相关的信息都加进去,完整地带下去,减少交互步骤。这里要求后台要多主动地做一些聚合工作,一些协议要重新设计。
精简交互信息,尽量减少每一次传输过程中的信息。有个原则,就是不用的信息尽量不要拉,这里要求开发团队在协议设计的时候要非常灵活和细致,要支持增量更新和同步逻辑。
复用包头。一般做协议设计的时候有包头和包体,包头里面放一些账号信息、身份凭证,还有版本信息。尤其随着现在安全压力越来越大,形势越来越严峻,身份凭证可能会越来越长。其实这些信息没必要每次都带,可以在接入server时做一些缓存,后面的包就不需要这些信息了,这样的话每个包可以减少几十个字节,甚至更可观。这样算起来收益是很大的,不光能帮用户省流量,因为传的内容烧,也能加快速度,对体验也有改善,勿以善小而不为。
智能合并压缩。这里需要对业务逻辑有深入的了解。不是所有的包一定要最快响应,可以请求分一下优先级,哪些是需要及时响应的,一定要及时保证。哪些是可以降级的,不需要很及时。可以把大量的不需要及时响应的包做一些延迟,这个延迟不仅是为了解决运营商的消耗问题,延迟以后可以做压缩。当然具体延迟多久,可能要根据具体业务的场景来看。
客户端异步削峰。还是细分问题,把一些不重要的包或者是当前这个不是立即需要的可以往后放,先让用户快点接入进来。同样,客户端也需要注意不要把UI绘制跟存储放在一个线程里面做,避免卡顿。
2.差异服务
可以把差异服务理解成个性化服务,针对网络情况和终端优化应用。下面具体看看。
怎么做好预拉取。比如说QQ会拉消息,拉过来的一堆消息里面可能有一些是图片消息,一开始看到这些图片消息只是缩略图。那何时去下载这些缩略图的原图呢?如果说等用户点了之后再去下载,自然大家会觉得这个很慢,体验不好。那提前下载该怎么做呢?这里要细致和全面一点。比如说可能要细分网络状况,在非WIFI网络下面流量是很贵的。如果把原图下载了下来,用户也不看,这样流量就浪费了,这浪费的就是钱,肯定不合适。那怎么办呢?可以设计一个算法,类似于银行家算法,给每个用户分配一个配额。比如说有500K的配额,预拉取一张原图,比如100K,如果用户看了原图,配额不变;如果用户后来并没有看,则把配额减去100K,凡是预拉取了而不看的配额都减掉,配额减到零就不会再做预拉取了,避免盲目下载造成大量的流量消耗。
在WIFI情况下,是不是可以简单地全下载下来呢?这样也不好。虽然用户的流量在WIFI下基本不收费,但是腾讯后台的出口带宽很贵。尤其是图片下载消耗非常大,这个钱是很多的。怎么办呢?可以根据业务场景做细分。比如把图片分为群图和C2C图,就是好友之间点对点的图。分析发现,C2C图相对是比较重要的,用户点看原图的概率非常大。同时C2C图占比相对来说又是非常小的,因为大部分是群图。所以C2C图可以预拉取。群图还是采用类似于银行家算法的方式进行管控。
预拉取思路很简单,但是要做好,可能还需要很细致地结合网络状况,结合用户状况和业务场景做细致全面的细分,这样才能在用户体验,以及服务成本和用户成本之间找到一个恰当的平衡。
信息繁简不一。很多信息应该分类归档,针对一些好终端、好网络,尽量返回一次很好的信息,反之只给它简化版。
多种套图规格。需要根据多种屏幕来抽象和简化出几种通用的图片规格,而且可以根据不同网络状况来定每种规格的压缩率。
终端是该轻还是重。到了手机时代,因为手机本身能力比较弱,而且产品还经常要求做一些跨终端的一致体验,很多东西必须放在云端统一处理才可以。大部分场景下是轻终端重后台,具体要看业务场景。比如说有些游戏,以前PC时代为了防止PC客户端作弊,很多信息都是客户端直接给server,一律由server统一去算。但是在手机游戏上面,为了减少信息传递以及减少交互次数,很可能会在终端也做适当的计算,把计算结果再发给server,在这种特殊的场景下面,在这些逻辑方面可能终端做的更重一些。所以这个问题有普遍性,也有特殊性,要具体分析、具体看,深入理解业务场景和逻辑。
能不差异的地方就不差异,考虑全面些。设计的时候要考虑全面,要把各种平台、各种网络都考虑到。在选择压缩算法、加密算法、图片格式和文件格式时,这些东西能通用的还是尽量通用,不要给自己找麻烦。如果有些地方没法统一,必须要差异,这里要抽象简化,简化为几大类,而且这个差异点尽量使后台可调可控。
终端版本信息管理,终端运营配置管理。需要把终端版本的各种信息记录下来,然后才可以根据这些信息,再加上用户的信息灵活调整配置给不同用户更好的体验。可以根据不同地区、不同网络、不同版本、不同运营商和不同号码,以及根据不同的CPU、不同的摄象头、不同的内存,给用户下发不同的闪屏和不同的插件,这是基础能力的建设。
范瑞彬最后还用一句话做了总结:“从实践中来,到实践中去”。
根本原因是90%这么说的人不懂技术,不了解行业,把技术实现想太简单,以为编程就是打字。
本文分开来说包含以下四个方面:不尊重程序员、不只缺一个、大大低估投入、还没到需要程序员的时候。下面我们一个一个说,末尾一些建议还请参考~1.不尊重程序员
要一起共事的基础是相互尊重,古语讲“礼贤下士”是有道理的,人才需要得到相应的尊重,但是很多人在发“就差一个码农”招人帖时是不注意这一点的。
如果你需要一个程序员,而你招人的标题真的是“我们就差一个码农了”,那多半大家看了标题就会来喷的,“码农”这个称呼可以是程序员自谦或自嘲用,但是直接这么称呼一个优秀的程序员是不合适的(除非很熟),就像母校是你可以骂一千遍却不许别人骂一遍,“码农”就是程序员自己可以自称一千遍,其他人却不能直呼一遍。很多人会说这没什么吧,玩笑都开不起么,俏皮一点不好么,是,我们喜欢活泼,但是不喜欢撒泼。别的行业也一样,比如“设计师”不喜欢被叫做“美工”,“发型师”不喜欢被叫做“剃头的”等等。
还有一种更加不尊重的行为——不尊重一个优秀程序员的才华,表现在当一个优秀的程序员根据自己丰富的经验和深厚的技术功底给出报价,并好心给出建议的时候,需求方会有如下言行:第一,由于不懂技术会不认真考虑建议,会说“那这个你看着办,应该可以”,也不转告给团队里懂技术的,即自我主义强,不懂倾听;第二,会用一些廉价的对比来讨价还价,会说“这个不复杂吧,要价高了点吧?如果外包给XX做,毛几K就可以”,那你倒是去找啊,你要知道一个优秀的程序员是可以顶十个程序员的,不要去拿三流技术的价去辱没拥有一流技术的人。
还有就是很多需求帖子找程序员和找蓝翔技工一样,认为自己做好的东西已经很完善了,就差开发这一丢丢的工作了,总认为自己做得是核心,程序员就是工具,帖子里首先夸耀一番目前团队已经做好的,然后点出“由于我们几个都是XX方向或者XX专业,不懂技术,所以来找一位技术大牛,就差你了balabala”,字里行间表现出自己做好了饺子,就差醋了,实际上是醋已经备好,我的饺子呢?曾经有技术人员帮助一个团队做挑战杯项目的网站,然后做好后由于人数限制人家认为他做的东西不是核心就把他踢出了团队。但也不是说这样的就都有问题,只是大部分是这样的。
所以,尊重是第一步,你的言行只有尊重程序员,程序员才会尊重你的需求。2.不止缺一个
很多帖子里真的有这样的字眼“就”、“一个”,可是仔细去了解下,我的亲娘,哪里是就差一个兵啊,简直是就差一个团。
大部分人以为程序员都该是全栈的,甚至全能的。不知道一个项目要分前后端,不懂为什么需要做API,这样的人占了一部分(现在占比不大,以前这部分人居多),常规思维就是“所见即所得”,网站和APP就是设计好这些图片用代码放放上去,那一个程序员应该很容易很快做好啊。曾经有人需要做一个APP,找了一个程序员来做,但是他真的以为他就差一个程序员,其他界面设计啊、交互设计啊都没的,不过看在项目简单,该程序员答应了,于是花了一个晚上画了一张交互设计图纸给他看,结果他一直以为做出来就是那样的,还怀疑人家水平。不过现在由于互联网的普及,更多的人是知道前后端,知道一些开发最基本的东西,但是依旧以为“因为自己的项目简单,所以再找一个程序员就够了”或者“这个不会也没事,你们学起来应该很快的吧”,他们的项目其实从技术角度都是有野心的项目,需要架构师、分析师、开发人员、测试、运维等等一个军团,但实际他们以为他们就需要一个会编程的,至少项目(看上去)不复杂啊。
互联网产品毕竟很多东西是不那么实实在在的,盖一栋大楼,这栋楼多高多大是实实在在感受得到的,但是互联网产品不懂行的人是不知道里面信息的交互、整体的架构等复杂度的,盖大楼的BOSS不会傻到说“我就差两搬砖的了”。
所以在发布需求前,不妨请懂技术的朋友帮助评估到底需要哪几方面的人才,自己不知道不要拍脑瓜,不灵的。3.大大低估投入
“这个都要2个月,呵呵”,“这一个外包要5万?!就几个页面啊!”,“只要你做得好,价钱不是问题,8千到毛一万可以谈的嘛”…诸如这样的我们经历或者听说过好多了,很多发“我们就差一个码农”的都想找到一个活好的技术然后快速地开发出来,再给一点劳务费么好了。
这就是大部分这类帖子的作者常犯的低估投入的问题,这里的投入包括时间和报酬。
这个其实真的看需求方对于项目的要求有多高了,你真的只要随便一点的,去猪八戒网,去威客网,去去去,几百块一个项目大家都抢,感谢猪八戒,感谢威客,哈哈。
但大部分都要求活要好,价要“合理”。一个做外包的团队给出现在这样的行情:A要找人做一个知乎网站,预算1w到3w,B报价3w,承诺40天,C报价5k,承诺30天,然后出来一个D报价1k,承诺50天,结果A找了D。B想:3w只是为了吸引你,这种项目没有10w根本不可能做;C想:5k还算合理,等我拿到钱就给你下载一些模板,然后修改修改;D想:1k我也能赚,下载一个模板,然后就完了。
但事后呢?
你想做成啥样的,你就要付怎样的代价,“就差一个码农”并不能让你花 50 块买到 LV,只会买到贴着 LV 标志的人造革。4.还没到需要程序员的时候
你的项目真的到了需要程序员的时候了么?就要“只差程序员”了?
一些招程序员的项目说是说“现在万事齐备,就差开发了”,但是看一些备好的万事,会发现,就只有idea,只有文档,没有数据,没有思考,没有实际调研资料,全是拍出来的脑浆,流出来的水。
你的idea真的有效么?解决了哪类问题呢?用户喜欢么,需要么?市场足够大么?能有商业模式么?技术上有可能实现么?核心优势是什么呢?天花板有多高?现在竞品发展如何呢?…
这些都还没搞明白,你说什么“就差一个程序员开发了,就差技术合伙人了”呢?靠谱的项目才会吸引靠谱的程序员。小建议 对于需求
懂得尊重,搞清楚目前自己项目的进展,做好技术实现之前的工作,提出招人不要像玩儿似的,讲明白自己情况,说清楚需要怎样的人才,然后给人才合理的时间和合理的报酬,做小生意的关注怎么降下眼前成本,做大生意的关注怎么放大长远利益。小建议 对于程序员
不是所有的“就差一个码农”都是找喷的,毕竟还有10%是真的靠谱的,但是在喷“就差一个码农”的同学中90%是看热闹的,是来纯粹调侃的,就算给足够报酬也是做不下来的,所以提升自己的技术,避免自己是那90%,而后再去教那90%的“就差一个码农”的同学怎么做事吧,你懂的。
原文出处:
&&欢迎分享原创到
姐妹篇中,我从用户体验角度分析了现在 Mac OS X 的安装体验糟糕的原因。
简洁优雅的命令行工具 homebrew-cask
使用homebrew-cask安装软件,只需要一行命令
brew cask install sublime-text skitch dropbox google-chrome
这样以下就安装了4个软件,轻松搞定,不需要鼠标点击,no dragging, no dropping。
* 命令行?好像很高大上的赶脚,我能学会吗? *
homebrew-cask是一套建立在homebrew基础上的Mac软件安装命令行工具(想要详细了解homebrew,自己google)。拥有她只需要简单的3步:
安装Xcode(Mac App Store免费一键下载)
安装homebrew(一行命令直接搞定,easy)
安装homebrew-cask(也是一行命令搞定,一点难度都木有)
不要一听到是命令行就被吓到,其实没有那么复杂,命令行你就简单理解为你输入一行一行指令,指令对了系统就会去执行,用狗血的拟人比喻,就是你让计算机去干活,只要命令下得对,它就屁颠屁颠卖命去了。1. 安转Xcode
Xcode安装现在已经非常简单,打开「Mac App Store」,又上角搜索 xcode 就可以找到,点击安装,耗时较长耐心等待。
这一步是鼠标操作,很简单,就这样跳过了。2. 安装homebrew
homebrew的官网是,上面有简体版本,可以了解以下homebrew是干啥的,但回到安装的正题,一行命令安装:
先打开 Terminal,找不到的可以点击Mac屏幕右上角的放大镜(这货是传说中的Spotlight),然后输入terminal回车就能直接打开。
打开Terminal后,把下面的一样命令复制粘贴到里面,按下回车:ruby -e &$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)& &
屏幕一堆英文乱闪之后,就搞定了(命令提示符号回到原来的样子)。3. 安装homebrew-cask
还是那个「Terminal」窗口,再把下面的命令复制粘贴过去,按下回车。brew tap phinze/homebrew-cask && brew install brew-cask &
在安装brew-cask的时候,会要求你输入当前用户的密码,输入过程中不会有屏幕反馈,你就闭着眼睛输入,然后回程就可以。
又一大波文字乱闪,OK啦。如何使用homebrew-cask
需要安装应用时,打开「Terminal」,输入brew cask install XXX
# 将XXX替换成你想要安装的软件名称就可以了
下面做个示范:
* 常用命令 *
brew cask search 列出所有可以被安装的软件
brew cask search drop 查找所有和 drop 相关的应用
brew cask info thunder 查看 迅雷 应用的信息,这货安装的可是最新版本的迅雷哦!
brew cask uninstall qq 卸载 QQ
特别注意 homebrew-cask是将应用程序放置在/opt/homebrew-cask/Caskroom/下,会在你的家目录中的「应用程序」文件夹中创建一个类似快捷方式的替身。在Finder的偏好设置中,第三个侧边栏勾选上你的家目录,这样找应用会方便一些。但不用太担心你,Launchpad是会找到这个目录下的应用的,需要Alfred支持请查看brew cask alfred。
homebrew-cask vs Mac App Store
homebrew-cask 和 Mac App Store 相比,目前还有很多优势:
安装软件体验非常一致简洁优雅
对常用软件支持更全面,例如 MPlayerX 已经宣布不在更新 Mac App Store上 的版本
软件更新速度快,体验好。例如Alfred 2.0已经出了很久,但在 Mac App Store 上还是1.2版本,QQ也是这样的情况
当然我承认,命令行的交互方式并不是人人都能学会和接受,homebrew-cask其实已经做的足够简单易用,习得这一技能能在以后提高效率。homebrew-cask安装省时省力,更新应用也简单,不用一个一个去找,其实先花时间学习,是值回本钱的,大家自己算算这笔帐。
Mac App Store 生态圈远不完善,审核流程过长,限制太多,维护成本过高让很多应用开发者被迫离开。虽然我个人很喜欢 homebrew-cask,但还是希望 Apple 尽快完善 Mac App Store ,等到有一天我可以不再使用 homebrew-cask。这样说是不是显得我很薄情?:) 关于软件更新
homebrew-cask团队一直还在探讨软件更新策略,以及homebrew-cask与homebrew的关系。目前倾向于:
homebrew-cask作为软件安装工具体验是不错的(相比你要自己到网页上搜索,下载,拖转安装)
大部分软件都有自更新的功能,体验也不错,绝大多数只需要一次点击就能更新
实际上软件更新没有那么频繁,使用brew cask uninstall qq && brew cask install qq 也比上网自己下载更新方便
软件更新的结论
目前通过homebrew-cask安装的软件有两种更新方法:
使用软件自己的更新流程
brew cask uninstall APP && brew cask install APP 先删除App,再重新安装
详细情况可以围观这个讨论帖子: , 具体看
一键装机?有了homebrew-cask就可以# 到目前October 5,
PM为止,homebrew-cask共收录566款应用程序
# 瞬间安装所有常用软件
brew cask install alfred
brew cask install the-unarchiver
brew cask install qq
brew cask install line
brew cask install skype
brew cask install thunder
brew cask install mplayerx
brew cask install evernote
brew cask install skitch
brew cask install dropbox
brew cask install google-chrome
brew cask install mou
brew cask install iterm2
brew cask install sublime-text
brew cask install virtualbox
05 OCTOBER 2013 on ,
升级最新的 Android studio 1.0.1 正式版后 编译出现错误提示
Gradle DSL method not found: 'runProguard()'
在网上找到一些方法来解决这个问题,与大家分享
其实在版本兼容性上 Android还是做的不错的,这个地方估计是release的时候忘记修改了
查阅官方文档之后( )之后发现,在新版本的gradle中,runProguard这个方法已经废弃了,并且改为新的方法了:minifyEnabled .
所以我们将老版本build.gradle
buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
修改为buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
然后再ReBuild Project 即可
有时候为iOS设计app并不是一件简单的事,但是如果你能找到正确的最新的苹果设备信息,并按照正确的方向,那么为iOS设计app或许会变得简单容易些。
关于这些指南
这些指南描述了如何遵守苹果的iOS 人机交互指南来设计app,而不是讲用自定义控件可以做成什么样的设计,有时候打破规则也很重要。该文档的目的并不是为一些复杂的设计问题提供解决方案。该文档是非官方的,将会定期更新和扩充内容,最近一次更新是日。
分辨率和显示屏规格(Resolutions和Display Specifications)
Points 和Pixels的区别
Pixels(像素)是数字显示屏上我们可控制的最小物理元素,在一个特定屏幕尺寸中可以有多个像素,PPI(pixels-per-inch)越高,则渲染的内容会越清晰。
Points用以衡量分辨率。根据屏幕的像素密度,一个point可以包含多个像素(比如在常规的retina屏上,1pt包含2 x 2的像素)。
当你针对多个显示屏类型进行设计时,你应该以points进行思考,但以pixels进行设计。这意味着你仍需要以3种不同的分辨率来输出设计资产,不管你针对哪个分辨率设计应用程序。
iPhone 6+缩减像素取样
在iOS上渲染像素和物理像素(physical pixels)是等同的,只有一个例外:iPhone 6 Plus的Retina HD显示屏。由于它屏幕的像素分辨率要低于一个常规的@3x分辨率,所以被渲染内容会自动调整为原始尺寸的87%(从像素来适应为像素的显示屏分辨率)
iPhone 5S, 6 以及6+显示屏区别的详细信息可参看:
自动应用效果
多尺寸的应用程序icon通常被添加到应用程序包中,当在设备上渲染时,iOS会将效果应用在应用程序icon上。
圆角半径值已经不存在了。从iOS 7开始,app icon已经使用了超椭圆的形状。由于苹果没有发布该形状的官方模板,所以你得精确地使用。
圆角的图形不应该包含在最终的输出资产中,但如果你想要添加和应用程序icon拐角对齐的描边和阴影效果,那你可能还会用到圆角图形。
提醒:因为你想将应用效果和icon拐角对齐,所以如果你正使用超椭圆的形状对icon资产进行蒙版(遮罩),那要确保在遮罩外的区域不能使用任何透明的图形。应用程序icon不支持透明度,相反作为纯黑色进行渲染。如果你的遮罩不是百分百精确,那用户将会在圆角边缘看 到黑色的锯齿。推荐将canvas的背景设置成和app icon一样的背景。
(2)边框描边(某些情况下)
如果你使用的app icon有白色的背景,那么将会应用1pixel的灰色边框,以便更容易地识别icon的边缘。这只能在设置app和App Store中进行。
(3)后续问题(iOS 6 和之前的版本)
在旧的iOS版本中,这些效果会自动应用:可以被禁用的圆角(和iOS 7+中使用的icon不同)、主屏幕上的阴影效果以及关泽效果等。
苹果开发了具有黄金分割比例的栅格系统,可用以正确地调整和对齐icon上的元素。不过,甚至是苹果设计师的原生app icon也没有完全严格地遵守栅格系统。所以如果你的icon上的元素在没有严格遵守栅格系统的情况下能更好地展示,那你可以考虑下打破一些固有的规则。
所有的iOS版本中默认字体都是Helvetica Neue。从iOS 7开始,苹果使用了稍作修改的字体,但是在你的设计过程中使用原始的Helvetica Neue是极好的。除了默认字体外,你还可以使用很多可选的字体,你可以在此查看。
自定义字体
从技术角度讲,True Type Font (.ttf)可以被用在iOS app中,但要注意许可问题。一般来说,使用完全免费或者商业化的字体是安全的。最大数量地包含了可用在app中的许可字体。
iOS 7以后,苹果在操作系统和预装app中使用了更有生机和活力的调色板。虽然你可以使用上边默认的iOS调色板,但你也可以使用自己的颜色(如果你想与众不同,当然要使用了)。
在iOS app中,icon一个很好的用法是使用视觉化的关系来支持文本标签,从而执行一些操作或者完全取代文本(最常用的比如&New&、&Delete&等)。通常,我们使用icon来区分导航栏、工具栏以及标签栏。
各种&栏&的按钮icon
各种&栏&中的按钮icon应该有两种状态:默认状态下的1或者1.5pt笔画宽度的轮廓样式,以及纯色填充的活跃状态。
不要在按钮icon上添加任何额外的效果,比如下拉阴影或者内阴影,因为这些是iOS 7之前版本中的用法。按钮icon应该在一个透明背景上以一种纯色进行绘制--icon的形状作为遮罩,颜色将会以编程形式应用。
活动视图图标
活动视图(通常指分享弹出视图)中的icon以轮廓样式设计,但苹果在iOS 8以后回归到白色背景上的实体填充icon风格。
常用设计元素
iOS提供了很多不错的现成的视图和控件,可帮开发者快速构建页面。开发者可以将一些元素自定义到某个级别,但是也有一些元素不能或者不应该进行自定义。当为iOS设计应用程序时,你应该知道一些工具集的使用,只要是可能,就应该坚持下去。但在一些情况下,可能需要设计一些自定义控件,因为你需要一个更加定制化的界面或者想要改变现有控件的功能(有点危险)。几乎任何一件事情都是有可能的,而有时候你需要打破既有的规则,不过需要三思。
状态栏包含了基本的系统信息,比如运营商、时间、电池状态以及其他等,它在视觉上通常与导航栏联系在一起,并且使用相同的背景填充。为了匹配你的app的风格,并且易于阅读,状态栏的的内容一般有两种不同的风格:深色(黑色)和浅色(白色)。
你可以隐藏导航栏,但要思考清楚。比如在app下载web内容时,用户可能对设备是否连接上WiFi网络比较感兴趣,在app要求蓝牙连接第三方硬件时,用户可能会想知道应用是否启用了蓝牙。一个令人信服的隐藏状态栏的理由是你想移除对的那个元素的所有干扰信息,比如全屏展示内容,比如图片。
导航栏包含在app多个视图间进行导航的控件,以及在当前视图中管理内容的选项。导航栏通常展示在屏幕的顶部,状态栏的底部。默认情况下,背景是半透明的,在导航栏下方还有模糊的内容。导航栏的背景可以是纯色的,渐变的或者是自定义的位图模式。
竖屏模式下的iPhone 6导航栏。
横屏模式下的iPhone 4S导航栏。导航栏的高度减了12pt,除了iPad。这也是常见的横屏模式下隐藏状态栏的方法。
元素应当遵循特定的对齐模式:
1.返回按钮通常居左对齐。
2.当前视图的标题应当居中展示在bar中。
3.Action按钮通常居右对齐。如果可能的话action按钮应当限制在一个主要操作行文,以避免错误点击,并维持其简洁性。
工具栏包含用于管理或者操作当前视图中内容的一些操作。在iPhone上,它通常出现在屏幕的底部,但在iPad上也能出现在屏幕的顶部。
和导航栏类似,工具栏的背景填充也能调整,默认情况下工具栏本身是半透明的,在其下方还有模糊的视图内容。
当一个特定视图要求三个以上主要活动,但放在导航栏上又显得凌乱时,你可以使用工具栏。
搜索栏默认有两种风格:突出的和最小化的。两种类型的搜索栏在功能上是一样的。
1.只要用户没有输入文本,搜索栏中会展示占位符文本,而书签icon则可用来访问最近或者保存的搜索。
2.键入搜索项目后,占位符消失,一个清晰的删除按钮会出现在搜索栏的右侧。
搜索栏可以利用一个提示--一个短句来介绍搜索的上下文环境。比如&键入某个城市、邮政编码或者机场&
不使用提示和使用提示两种风格
最小化搜索栏类型
想要提供对检索词条的更多控制,可用scope bar(范围栏)限制搜索栏,scope bar会使用和搜索栏一样的风格,当搜索结果有清晰的定义类别时,这种方法比较有用。比如,在一款音乐类app中,搜索结果可以按照专辑和歌曲再次过滤。
用户可使用标签栏在app的单个视图间快速导航,并且标签栏也只能用于这个目的。标签栏通常出现在屏幕的底部。默认情况下,标签栏是略透明的,并且向导航栏一样使用系统的模糊效果。
标签栏包含固定的最大数量的tabs,一旦标签数量超过其可容纳的最大数量,后边的标签将会展示在隐藏的&More-tab&列表中,并且有一个选项可重排标签顺序。
虽然iPhone上最多可展示5个标签,但是在iPad上最多可展示7个标签。
为了提醒用户视图上的新信息,有时候需要在标签栏按钮上使用标记数量。如果一个视图被临时禁用,那么相关的标签按钮不应当完全被隐藏,相反应当淡出视觉范围以表示其禁用状态。
表视图(Table View)
表视图以单列或者多列形式展示少数或者多个列表风格的信息,并有能将内容分组的选项。根据你展示的数据类型,通常可使用两种基本的表视图风格:
无格式表视图包含的几行内容的顶部可以有页眉,最后一行后边可以有页脚。可以在屏幕右边缘展示垂直导航,以便在表中进行导航,这种情况适合展示以某种方式储存的大数据集的时候,比如按照字母降序排列。
分组表视图允许用户对内容进行分组。每个分组可以有页眉(最佳用法是描述类组的上下文环境)和页脚(适用于帮助文本等)。一个分组的表视图至少需要包含一个类组,并且每个类组至少要包含一行内容。
对于以上两种表视图类型,可用几种风格来展示数据,以方便用户快速扫描、阅读和适当调整内容。
默认的表视图有一个居左对齐的可选图片和标题。
带有副标题
在每行标题下展示小字号的副标题,适用于进一步的解释说明或者简短描述。
带数值表类型可展示与行标题相关的特定数值。类似默认的类型,每行都有一个居左对齐的图片和标题。在该类型中,数值居右对齐,通常使用比标题淡一点的文本颜色。
模态视图、弹出视图以及提醒(警示)视图
iOS提供了多种风格的临时视图,可以某种方式在既定的情况下展示、编辑或者操作数据。虽然每种临时视图因某个非常特定的目的而存在,但外观上却大有不同,不过所有临时视图都有一个相同的地方:在展示时,它就是当前视图上最上方的图层,下方的内容被一个黑色的背景所覆盖。
活动视图(ACTIVITY VIEW)
活动视图用以展示特定的任务。这些任务可以是系统默认的任务,比如通过可用选项分享内容,或者是完全自定义的活动。当为自定义任务按钮设计icon时,你应当遵从活跃状态和栏按钮icon的一些设计指南--纯色填充、无任何效果、以及在一个透明背景上。
活动(ACTIONS)
活动页面用来执行可用操作列表中的单项操作,并且强迫用户确认或者取消某个活动。
在竖屏模式下(以及尺寸比较小的横屏模式下),actions以按钮列表形式滑入,并呆在屏幕的底部。这种情况下,活动列表应该有一个取消按钮来关闭视图和执行任何列表中的action。
当有足够可用的空间时(比如iPad上),活动列表可在视觉上转为弹出视图。不过此时不一定非得有一个关闭按钮,用户点击弹出视图外的任何地方都能关闭弹出视图。
提醒视图的目的是用来通知用户一些关键性的信息,并有选择地迫使用户做出选择。
提醒视图通常包含一个标题文本(最好不要超过一行)、一个(纯信息提醒,比如&OK&)或者两个按钮(要求用户做出决定,比如&Send&或&Cancel&)。
你可以在提醒视图中添加消息文本,如果需要的话则可添加两个文本域,其中之一可以是蒙版的输入区,适合密码或者PINs之类的敏感信息。
编辑菜单(EDIT MENU)
用户可使用编辑菜单执行复制、粘贴以及剪切等操作。虽然你能控制用户可以选择哪个操作,但是编辑菜单的视觉外观是设定好的,不能重新配置,除非你设计一个完全自定义的编辑菜单。
弹出视图(Popovers)
当某项特定操作要求多个用户输入才能继续进行时弹出视图就非常有用了。在水平方向上,弹出视图可通过箭头指向展示下方相关的控件(比如按钮)。弹出控件的背景透明度稍有降低,可展示其下方的模糊内容,像iOS 7以后其他很多UI元素一样。
弹出视图是一种非常强大的临时视图,可包含类似导航栏、表视图、地图或者web视图等对象。随着弹出视图所包含内容和元素的增加,其窗口也能滚动展示。
模态视图适用于需要多个命令和用户输入的情况,位于屏幕上所有内容的最上方。典型的模态视图通常提供:
1.描述任务的标题。
2.关闭模特视图的按钮,没有保存或执行任何其他操作。
3.保存或者提交任何已输入内容的按钮。
4.模态窗口主体中提供大量用户可输入的元素。
有三种可用的模态视图类型:
1.全屏模式:覆盖整个屏幕
2.页表模式:竖屏模式下,模态视图覆盖屏幕上的部分内容,仅在半透明的暗色背景上展示部分父视图的内容。横屏模式下,模态视图会像全屏模态视图那样展示。
3.表格页面模式:竖屏模式下,模态视图出现在屏幕的中间。模态视图范围之外,父视图内容展示在半透明背景之下。当需要展示键盘时,模态视图的位置会自动调整。横屏模式下类似全屏模态视图。
控件(Controls)
iOS为基本上任何类型的输入需求提供了各种各样的控件。以下列出的是最常用的控件,但想要看详细的完整的可用控件列表,请在中查看。
最常用的控件可能是按钮。iOS 7以来,默认的按钮设计看起来更像一个纯文本链接。按钮控件支持高度自定义。按钮可以有几种不同的状态,可以使用视觉语言传达:默认、突出、选择以及禁用等。
选择器(PICKERS)
选择器用来在一个可用值列表中选择某个值,和Web上的下拉选框功能类似。选择器的扩展版本是日期选择器,允许用户滚动日期和时间列表来选择一个月、日以及具体时间。
左:表视图中的日期选择器,右:选择器作为键盘
除了背景色外,不可能更改其视觉风格或者尺寸。很多时候,选择器位于屏幕的底部,像键盘一样展示,但不能用在其他地方。
分段控件(SEGMENT CONTROLS)
分段控件包含一组至少两个以上的分段,可用来过滤内容或者为清晰分类的内容创建标签。
不带icon与带icon的分段控件
每个分段可包含一个文本标签或者一个图片(icon),但不能同时包含两者。另外,不建议在一个分段控件中混合使用不同的分段风格,比如文本和图片。每个分段的宽度会基于分段的数量自动调整(两个分段各占50%,5个分段各占20%)。
滑杆(SLIDERS)
滑杆控件允许用户从允许值范围中选择一个特定的值。由于使用滑杆选择一个值的操作非常流畅,并且无需额外的步骤,所以建议在选择预估值的时候使用滑杆,而不是选择精确的值。比如滑杆可以很好地用来设置音量,用户可以听到和看到音量大小的不同,而通过输入文本来设置精确的dB值是不切实际的。
不带icon与带icon的滑杆控件
可以为最小值和最大值设置icon,icon会展示在滑杆控件的开始和末尾两端,从而在视觉上加强滑杆的目的。
进步器(STEPPER)
当用户从一个有限的值范围中(比如1-10)键入准确的值的时候,可使用进步器。进步器通常包含两个分段按钮,一个是降低当前值,一个是增加当前值。
进步器的视觉外观支持高度自定义:
1.可使用自己的icon作为进步器按钮;
2.当想维持iOS原生的外观时,你可以自定义进步器边框、背景以及icon的颜色。
3.如果你更进一步使用自定义,那你可以为进步器的按钮和分割符使用完全自定义的图片。
开关(SWITCH)
用户可使用开关在&ON&和&OFF&两种状态间切换。设计师可自定义两种状态的颜色,但是开关按钮的外观和尺寸是设定好的不能更改。
键盘(KEYBOARDS)
有多重键盘类型可为特定的文本输入提供最好的键盘。虽然你可以使用自己完全自定义的剑兰,但默认的键盘无需调整风格和尺寸,很多时候更加方便一些。
延伸阅读和资源
上述指南仅提供了开始iOS设计的基本信息,一旦深入挖掘,你可能会对更细节性的内容感兴趣,那么下边这些文章和资源或许能帮到你:
基础内容:
动画和原型
&栏&按钮icon
本文由CocoaChina翻译自,原文:,转载请注明出处。
之前,OS X 系统都可以通过如下两条命令来开启/关闭系统隐藏文件的显示://显示隐藏文件 defaults write com.apple.Finder AppleShowAllFiles Yes && killall Finder //不显示隐藏文件 defaults write com.apple.Finder AppleShowAllFiles No && killall Finder
不过当你更新到 OS X 10.9 Mavericks 系统之后,可能会发现这两条命令都不管用了。原来,在 Mavericks 中需要将上面终端命令中的第一个”Finder”改成”finder”,也就是小写的”f”才能工作。正确的命令为:
//显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
//不显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles No && killall Finder
自从QQ音乐更新了Logo后 直接让我放弃了 “百度音乐” 和 “网易云音乐”,将其摆在桌面黄金位置上。
太好看了。。。扁平化+优秀大小比例+舒服的配色 简直是艺术品
(当然还有个原因是 车载蓝牙 只有QQ音乐支持换歌,其他两款app都不行)
以下内容是在腾讯ISUX 看到的对QQ音乐GUI设计的一些初衷和想法,很有参考价值
一并分享给大家
是不是所有App都有[闪屏],它是如何诞生?
启动App一般都需要几秒钟来进行初始化或数据加载,早期为了不让用户在这过程中感觉漫长,就在启动的同时展示了一个画面,多为展示品牌logo和Slogan。闪屏即从此诞生。
后来发现,启动闪屏虽短短几秒,除了logo展示之外,其实还有很大的利用空间,包括功能展示、节日情怀、品牌气质表现、甚至还融入动态效果… 2014QQ音乐也正在为闪屏打造全新形象。
&让闪屏Fun起来
Fun(趣味) — &让人感受到愉快、有意思、有活力、有生命。
让闪屏Fun起来,必须给赋予生命。音乐不应该是枯燥的,自从年初对QQ音乐logo简化扁平设计后,线条轮廓更简明,带来更多可变型的空间。我们开始尝试把在不同节日通过logo的形变,让用户在情感上带来更多共鸣,也感受到我们QQ音乐在成长。
趣味走在前面,品牌才能沉在心里。
春节我们为你带来剪纸;情人节为你献上甜甜的巧克力;劳动节让你带着音乐旅行;5.20 侧耳倾听情话;儿童节儿歌随身听;巴西世界杯的音乐也不会让你错过…
另外,每一张闪屏都会有一张对应的歌单,通过闪屏形式快速推送每个主题/活动/节日相关的歌曲给用户。
音乐的领域是无限宽广的,我们的品牌形象也是将随着不同环境和不同时期而变化。
时下的设计趋势走向不断在变化,QQ音乐的品牌形象也顺应趋势调整,去掉了以往的厚重质感,走轻质感的扁平化风格,时刻保持时尚的元素,不间断地让品牌保持新鲜感。
为了保持品牌独特性,造型上延续QQ音乐logo基础原型,在多形态的型变过程中,配合不同元素不同主题,造型必须保持与Logo音符造型吻合,结构上我们仍然遵循QQ音乐原始形态组合,而非纯粹的形状拼凑,这样才能在品牌形象中增强认知度,使得故事融入其中,最终形成品牌传播模式。
一个闪屏只有3秒过场,但有着不为人知的幕后。
为时4年一次的世界杯,QQ音乐也相应推出世界杯为主题的音乐。以今年的[巴西世界杯]为例,在这简要分享下这一期的闪屏诞生过程。
关键词:世界杯 &/ &足球 &/ &巴西 &/ &音乐 &/
由关键词延伸到 &2014 &/ &足球场 / 巴西 / 里约大冒险 / 巴西基督像 / 海滩 / &棕榈 &…
&世界杯拟人篇
在巴西世界杯期间,我们还为球迷准备了更有趣的闪屏。
运用酒瓶拟人的手法,用各种酒杯/酒瓶来表达热情,结合各国国旗,陆续推出世界杯开幕篇、球队篇、裁判篇、球迷篇…
后续,QQ音乐还将会与更多音乐相关的文化做结合,融入著名音乐人 / 音乐历史 / 盛会等元素,为用户科普了音乐知识同时,更深层地建立品牌独特性。
近期已经推出几期节日闪屏,但这一切才刚开始。
感谢你的阅读,本文由
版权所有,转载时请注明出处,违者必究,谢谢你的合作。注明出处格式:腾讯ISUX ()
古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!以下是搜集的一些有力的XCode插件。
1.全能搜索家CodePilot 2.0
你要找的是文件?是文件夹?是代码?Never Mind,CMD+SHIFT+X调出CodePilot,输入任何你想到搜的东西吧!想搜appFinishLaunchingWithOptions?忘记咋拼了?没关系强大的代码搜索能力,appflaun一样也可以找到!超级强大的正则匹配,匹配任何你所想!
项目地址:
2.Vim控必备的XVim
XVim是一个针对Xcode的Vim插件,能让开发者在不放弃任何xcode功能的前提下体验vim的功能。
项目地址:
3.YouCompleteMe(vim的插件)
如果你比较喜欢用vim来写代码的话,这里有一个非常棒的vim插件——YouCompleteMe——当你在编写OC代码时,可以提升体验。YouCompleteMe可以在Vim中添加代码自动补全功能,并且不需要你来按某个键来查看代码补全建议——针对OC、OC++、C++以及C该插件可以自动补全建议。
项目地址:
4.XCode颜色显示插件ColorSense
代码里的那些冷冰冰的颜色数值,到底时什么颜色?如果你经常遇到这个问题,每每不得不运行下模拟器去看看,那么这个插件绝对不容错过。更彪悍的是你甚至可以点击显示的颜色面板,直接通过系统的ColorPicker来自动生成对应颜色代码,再也不用做各种颜色代码转换了!
项目地址:
5.大段文本利器HOStringSense
经常输入大段文本的时候,如果文本里面有各种换行和特殊字符,经常会让人很头疼,有了HOStringSense,再也不不用为这个问题犯愁了,顺便附送字数统计功能。
项目地址:
6.规范注释生成器VVDocumenter
很多时候,为了快速开发,很多的技术文档都是能省则省,这个时候注释就变得异常重要,再配合Doxygen这种注释自动生成文档的,就完美了。但是每次都要手动输入规范化的注释,着实也麻烦,但有了VVDocumenter,规范化的注释,主需要输入三个斜线“///”,就OK啦!(VVDocumenter在Mac OSX 10.8.5和Xcode 4.6.3上进行开发,应该能支持所有Xcode 4版本,如果想支持Xcode 5,可以对plist文件稍作修改。
项目地址:
7.CocoaPods for Xcode
非常方便的Xcode pods插件。可以很方便的在Xcode通过pods安装各种objective-c第三方库,省去以前还要手动去跑pods命令行的麻烦;此外,还支持通过cocoaDocs来安装库文档。唯一的遗憾是,它目前只支持Xcode5,4版本还用不了。
项目地址:
8.Xcode语法高亮插件
以前用eclipse开发,自带的有语法高亮的效果。做ios开发也许久了,但是没发现一款语法高亮的插件,因为xcode自己的效果是仅在变量或类名下面加了个虚线,平时看起代码来十分不舒服,最近果断为xcode写了一款语法高亮的插件,不过功能非常有限,没有eclipse的那么好用,也没对对象的作用域区分,勉强能使用吧。和有需要的分享一下吧。
下载附件,解压后放在:你的用户/Library/Application Support/Developer/Shared/Xcode/Plug-ins目录下,有的童鞋还没有Plug-ins这个目录吧,那就手动建一个,然后把解压后的highlight-Plugin.xcplugin放进去,重启xcode即可。然后就能看到高亮的菜单了。
项目地址:
9. KSImageNamed-Xcode
为项目中使用的UIImage的imageNamed提供文件名自动补全功能。使用[UIImage imageNamed:@&xxx&]时,该插件会扫描整个workspace中的图片文件。
项目地址:
10.xcode-extend-plug-in
帮助你快速格式化代码、生成注释、复制一行等。
项目地址:
11.XcodeColors
改变调试控制台颜色
项目地址:
12.SCXcodeMiniMap
一个Xcode插件,可以在当前的窗口内创建一个代码迷你地图,并在屏幕上高亮提示。
项目地址:
13.Lin本地化字符串
之前我们提到过一个开源的Mac基础工具SCStringsUtility,可以让你在一个清爽的界面编辑不同的语言,简单地输入/输出NSLocalizedString数据。Lin是一款功能相近的Xcode插件,提供了一个非常不错的操作界面,并且为不同的语言提供了不同的区域。
项目地址:
14.插件管理Alcatraz
Alcatraz是一个开源的Xcode 4包管理器,可以让你更便捷地发现、安装以及管理插件、模板和配色方案。只需要简单地点击或者勾选,不需要手工复制和粘贴。
项目地址:
15.FuzzyAutocompletePlugin--Xcode 5代码自动补全插件
FuzzyAutocompletePlugin是一个Xcode 5兼容的插件,通过添加模糊匹配来提高Xcode代码自动补全功能,开发者无需遵循从头匹配的原则,只要记得方法里某个关键字即可进行匹配,很好地提高了工作效率。
注意:该插件只在Xcode 5上进行过测试,没有测试和其他插件之间的兼容性(KSImageNamed除外)。
项目地址:https://github.com/chendo/FuzzyAutocompletePlugin
16.一个用来对齐常规代码的Xcode插件--XAlign
一个用来对齐常规代码的Xcode插件,十分强大的自定义对齐模式。这里是一个对齐模式示例,模式文件在main/main/patterns.plist.
详细信息可参看:http://github.so/XAlign/
整理自 、 &以及此前。
去年的Google大会上,Google带给我们一个小玩具——Android Studio,说它是玩具,是因为它确实比较菜,界面过时,操作不流畅,效率也不高,但是现在,虽然版本还是0.6,甚至都没到1.0,但是我们可以发现亲儿子到底是亲儿子,现在的Android Studio已经今非昔比,用了一段时间,简直爱不释手,我觉得,It’s time to say goodbye eclipse!
本文将带领大家彻底的了解一下Android Studio,注意:由于天朝的原因,我们的了解过程会比较曲折,但是最终大家会看见曙光,然后你就再也不想回到黑暗了!
首先,下载,:https://developer.android.com/sdk/installing/studio.html#download
想想还是算了吧,等你打开都可以多敲几行代码了,大家可以去一些国内的分流网站上下载,大家尽情百度吧,这个还是不难的。
或者直接访问
就是这货了!
安装我就不说了,都是程序员,没什么难的,但是有的人安装会出错:
大部分的启动失败基本都是由于JDK的环境变量问题,设置JDK的时候注意下把环境变量添加好就OK了。
然后就是启动过程:
和Eclipse还是比较像的。
选择New或者Import就可以开始我们的项目了,第一次创建的时候,要下载gradle的一些东西,会有些慢。
如果是在Eclipse里面的项目,我们可以导出为Android Studio格式,很方便的导入Android Studio开发。
选择导出为 Gradle build file 就ok了。
Import的时候,Android Studio就可以自动识别了。
这个Gradle来头很大的,是Google用于智能化构建项目的构建集成工具,具体的使用大家可以百度之,总之一句话,他可以把一大串的编译命令用一行代码完成。
既然它这么牛逼,慢点就慢点吧。
可以看见,内存使用率还是很优秀的,不像Eclipse那样动不动就上G了。
第一次配置好后,我们就可以进入启动界面了,这里我是导入的一个Eclipse项目来演示:
大家先颤抖下吧:
是不是很优秀的赶脚!
不过这个还是来之不易的,首先我们来解决下面子问题:
其实默认的界面不是这个样子的,有点像Eclipse,反正就是白底的首先我们先变脸:
点击设置:
就是那个小扳手,然后选择appearance
选择Theme为Darcula,这个是程序员装逼也好、护眼也好。总之是不二选择。
然后为了解决下中文显示问题,我们需要设置下字体,建议微软雅黑,大小自己设置。
然后设置下编辑区的字体:
随便取个名字再save as一下就可以编辑了。
满足广大程序员的心声,我们还要设置一下东西,比如自动提示,不得不说,Android Studio的自动提示功能非常之强大,但是,如果你要输入“String”,你输入“string”,这个是不会提示的,也就是大小写敏感的,不爽是吗?很简单:
选择大小写不敏感就ok了!这样你想怎么提示就怎么提示了!
然后还有一点不爽,用惯了Eclipse的人会发现,鼠标悬停在程序上的时候,啥也没有了!嗯,对的,Android Studio默认是没有鼠标悬浮提示的,要用快捷键ctrl+q,这个也有好处吧,比较配置太差的电脑不会卡死了。但是有些比较怀旧的就不肯了,OK,我们改:
看见没,按照图上的勾选就OK了,熟悉的提示就出来了。
还有些其他的设置比如行号啊,tab数啊,什么格式啊,大家在Editor里面都能找到设置,比较简单,大家自力更生吧。
OK,我们脸变好了,下面给他赋予灵魂吧。
目前最新的版本是0.6,如果是前面的版本升级到0.6的,大家会惊奇的发现,新建一个pj都出错了!嗯,是的,比较坑爹是不是,我刚开始的时候也郁闷了,甚至都卸载了N次。最后总结下如何修正这个问题:
一句话,这个问题是敏感词,大家都懂的,有钱的请使用VPN,有钱没钱的,都请修改host文件,具体可以参考我前面的文章:
然后我们打开SDK Manager,不出意外的话,大家是看不见下面的东西的,除非改了host,用了VPN,我在这里纠结了近2个小时,
最后在各种资源的帮助下,碰巧搞对了,在此分享下,但愿不要再被墙了!
当然,要勾选force,这个大家都知道了
首先我们要升级build tool这个是导致错误的根源!
各种错误,比如:
error:1 0 plugin with id ‘android’ not found.
还有什么:
error:2 0.。。。。。。。。。。。。
我们首先要升级下到19.1.0.
然后我们需要修改下项目中的
将默认的19.0.3改成19.1.0再try aging就ok了
到此为止,基本上不会再出错了,如果出错请洗手洗脸,找个黄道吉日再试。
下面我们来看看它狂帅酷霸拽的一些地方:
可以看见,比起Eclipse,它可谓是后现代化了,Google工程师花费大量时间,分析了各种代码编写规范,并在Android Studio中以实现,一段代码如何写更好,一点便知,代码折叠功能,也让大家看的更赏心悦目。
代码提示功能更是越来越完善,这点是Eclipse不能比的。
下面我们要看看它最炫的地方了,实时的UI设计功能,大家都知道这次apple来了个playground,可以在编程的同时预览效果,感觉确实很牛逼的样子,我们Android程序员都要吓尿了,其实尿完了才发现,它真的是个playground,目前功能还只是让你玩的,还没有牛逼到我们想要的那种程度,不过确实要赞一个,如果真能这样编程,估计Every One Is A Coder了。
这次的版本,UI设计越来越牛逼了,可以在编程的同时预览效果,当然只是xml的,不是实时编译运行预览,唉,希望这一天早点到来。
随便弄了个界面,不要喷我,谢谢:
design界面差不多,再看text界面:
真心的,现在做UI是不是方便多了,再也不用像个傻逼一样的不停切Tab来看效果了。
再看一些常用功能:
为什么说它也牛逼呢,因为他可以根据你选择的地方来判断你要新建的类型,是java文件还是资源文件,同时提供各种模板:
http://ww1.sinaimg.cn/mw690/6941baebjw1ekojd1cf4hj20at06iq3c.jpg
很方便有木有。
再看新建工程:
自动集成各种模板,方便+1有木有。
再看新建的各种模板:
再回去用用Eclipse,你行吗,反正我是不行了。
嗯,你没看错,这个不是Visual Studio,Android Studio也有这样的小提示了,很智能也很有效果,集成了Google大神们的汗水啊。
以上我们都看到的是一个Android的开发IDE,实际上,Google的野心并不限于此,他的目的是想把它打造成一个超越Visual Studio,超越xCode的集成开发环境,在这里,可以很轻松的使用git、使用svn或者其它项目管理工具,同时Google还提供云服务:
算了,这个就不说了,说多了都是泪,天朝的看看就行了。
既然是集成环境,各种插件就不可少了:
大家可以看看,基本上Eclipse上有的插件,这里都有!
以上是我这段时间使用Android Studio的一些所见所得,希望跟大家分享下,支持下Google的亲儿子,虽然他才0.6,但是可以预见,他的未来不可限量。
最后附上一些Android Studio的快捷键,当然,习惯了Eclipse的可以直接在设置的keymap中设置快捷键风格为Eclipse即可,看看,她就像一个女生,不仅长的好看,学习又好,还知书达理,温柔善良,尊老爱幼。叫人怎能不心动呢!
—-常用快捷键
1.Ctrl+E,可以显示最近编辑的文件列表
2.Shift+Click可以关闭文件
3.Ctrl+[或]可以跳到大括号的开头结尾
4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方
5.Ctrl+F12,可以显示当前文件的结构
6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择
7.Ctrl+N,可以快速打开类
8.Ctrl+Shift+N,可以快速打开文件
9.Alt+Q可以看到当前方法的声明
10.Ctrl+W可以选择单词继而语句继而行继而函数
11.Alt+F1可以将正在编辑的元素在各个面板中定位
12.Ctrl+P,可以显示参数信息
13.Ctrl+Shift+Insert可以选择剪贴板内容并插入
14.Alt+Insert可以生成构造器/Getter/Setter等
15.Ctrl+Alt+V 可以引入变量。例如把括号内的SQL赋成一个变量
16.Ctrl+Alt+T可以把代码包在一块内,例如try/catch
17.Alt+Up and Alt+Down可在方法间快速移动
—-不常用快捷键
18.在一些地方按Alt+Enter可以得到一些Intention Action,例如将”==”改为”equals()”
19.Ctrl+Shift+Alt+N可以快速打开符号
20.Ctrl+Shift+Space在很多时候都能够给出Smart提示
21.Alt+F3可以快速寻找
22.Ctrl+/和Ctrl+Shift+/可以注释代码
23.Ctrl+Alt+B可以跳转到抽象方法的实现
24.Ctrl+O可以选择父类的方法进行重写
25.Ctrl+Q可以看JavaDoc
26.Ctrl+Alt+Space是类名自动完成
27.快速打开类/文件/符号时,可以使用通配符,也可以使用缩写
28.Live Templates! Ctrl+J
29.Ctrl+Shift+F7可以高亮当前元素在当前文件中的使用
30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果
31.Ctrl+Shift+J可以整合两行
32.Alt+F8是计算变量值
原文出处:

我要回帖

更多关于 mumu官网 的文章

 

随机推荐