一、运维项目管理
工作职责:
1、负责IT资源项目的管理工作,确保项目团队协同工作;
2、负责IT资产管理和定期资产盘点工作;
3、跟踪IT资源的使用,并对数据进行分析,完成日常报表;
4、协助IT成本管理工作,预算制定、供应商沟通等。
职位要求:
1、具备数据敏感性和探知欲、分析和解决问题的能力、良好的数据呈现能力;
2、工作认真、负责、严谨,有良好的团队合作精神;
3、有良好沟通能力和技巧;
4、有外语沟通能力、海外背景优先。
二、数据开发工程师
工作职责:
1、负责直播业务的数据调研,数仓模型设计,ETL开发,任务监控和优化等;
2、负责数据仓库多场景的应用产品建设,如快报,告警推送等;
3、负责基于数据仓库之上的数据探索,如特征工程,标签挖掘等;
4、负责数据管理相关的开发和实施。
任职要求:
1、计算机、数学相关专业全日制本科及以上学历;
2、熟练使用SQL, 了解数仓ETL开发;
3、熟悉R、Python、Shell等脚本的至少一种语言,有实战经验的优先;
4、有Java/Golang 开发经验优先;
5、业务理解能力强,技术学习能力强,工作积极主动,有良好的团队合作能力。
三、前端开发工程师
工作职责:
1、参与哔哩哔哩各产品线web前端研发工作;
2、优化产品交互逻辑,提升产品易用性;
3、参与前瞻性技术的研究,为持续性的产品创新做准备。
职位要求:
1、精通HTML、CSS及JavaScript等Web前端技术;
2、具备跨浏览器、跨终端的前端开发经验;
3、了解至少一种Server端语言(Node.JS/PHP/Python/Java等;
4、熟悉一种使用较广泛的前端框架;
5、具备扎实的计算机基础,对数据结构和算法设计较为深刻的理解;
6、学习能力强,具有良好的沟通能力和良好的团队合作精神。
四、测试工程师
工作职责:
1、负责哔哩哔哩客户端和服务端测试工作;
2、参与制定测试方案,设计并执行测试案例,整理对应项目测试文档;
3、跟踪线上反馈问题,协助开发定位和推进解决问题;
4、参与对项目流程和工具进行优化,提升整个项目的交付效率。
职位要求:
1、计算机相关专业,本科以上学历;
2、熟悉软件工程、软件测试理论和方法,熟悉相关的测试流程和软件工程原理;
3、对二次元互联网产品感兴趣,善于学习接受新事物,具备良好的文档编写习惯和能力,良好的团队协作能力,有较强的逻辑思维及自我学习能力;
4、熟悉一门或者多门编程语言者(Python,Java,Golang等)优先。
五、游戏测试
工作职责:
1、能够根据游戏功能设计文档,以及根据游戏实际内容表现编写测试用例;
2、根据测试用例对游戏进行功能测试,能及时发现产品缺陷,对测试中发现的问题进行及时的记录、跟踪、反馈、分析;
3、负责撰写测试报告;
4、负责bug生命周期的跟踪反馈,能协调相关人员定位bug,协助研发人员修复bug;
5、对iOS,Android双端进行兼容性测试。
任职要求:
1、本科及以上学历;
2、热爱游戏,对自己玩过的游戏在特定的领域有自己独到的见解;
3、严密的逻辑性,能客观分析问题并通过图文工具表述;
4、有积极上进心和强大的自驱力,抗压能力强;
5、有良好的团队合作精神,优秀的沟通技巧,以及高度的职业素养;
6、平时有追番的习惯。
扩展资料:
B站主要业务:
1、直播
哔哩哔哩(bilibili)直播是B站推出的国内首家关注ACG直播的互动平台,内容有趣、活动丰富、玩法多样,并向电竞、生活、娱乐领域不断延伸。
“电竞+游戏”都是B站直播的重要品类。目前B站已经覆盖了包括《英雄联盟》LPL职业联赛、《DOTA2》TI国际邀请赛、《王者荣耀》KPL职业联赛等在内的各大赛事;在泛娱乐直播方面,B站则以音乐、舞蹈、绘画、美食、萌宠、明星访谈为主。
此外,B站也在开拓学习直播、虚拟主播等新兴直播品类。2019年一季度内,共有超6000位虚拟主播在B站开播,观看人数近600万。
2019年12月6日,B站宣布获得《英雄联盟》全球总决赛S10至S12连续三年(2020年至2022年)的国内独家直播版权。
2019年12月19日,哔哩哔哩直播宣布签约冯提莫。
2、游戏
B站是国内重要的二次元游戏分发渠道,代理了超 500 款联运手游,13 款独家代理游戏,及1 款自研手游。
从2014年开始,bilibili开启游戏联运和代理发行业务,成功推出《梦100》《FGO》《碧蓝航线》《幻想战姬》《Fate/Grand Order》《明日方舟》等多款业内知名游戏,并帮助《阴阳师》《崩坏3》等产品获得成功,是当前国内一家二次元游戏发行平台。
2019年,与腾讯全球联合发行的听觉探案游戏《Unheard-疑案追声》在Steam上线后升至国区热销榜第二位,一周之内售出15万份。
2019年7月,B站首次举办独立游戏发布会,发布包括《一起开火车!》、《妄想破绽》在内的5款独立游戏。
3、广告
B站广告业务主要分为效果广告和品牌广告。2018年,B站举办了对广告主的广告推介会AD TALK,首次开放自制内容的招商。
在2019年的AD TALK上,B站明确了自己的商业化进程,宣布2020年将向所有品牌合作伙伴开放生态。B站确定开放的生态资源包括14部国产动画、15部纪录片、6部综艺、30余位UP主、11项大事件以及电竞、虚拟偶像等。
4、电商
B站拥有自己的电商平台“会员购”,于2017年上线,以漫展演唱会票务、手办、模型、潮玩、周边的销售为主, 在不到两年的时间已经占领了二次元票务域最大的市场份额。
2019年10月底,B站今年的电商业务GMV已经突破10亿元。
参考资料来源:华南农业大学-上海哔哩哔哩科技有限公司2020招聘简章
情形一:非指定网点停车+还车
若乘客用完车辆后,将车辆停放在非指定网点或区域,则gofun出行将收取车辆调度费200元,同时还要收取因为停放车辆而产生的停车费,收费标准以所停放车辆停车场收费标准进行收取。
情形二:特殊停车费
1,适用条件:(1)车辆行驶中出现低电量或无电情况(2)还车网点无停车位
2,停车收费标准:此种情况下仍旧可以停车,但是gofun将收取30元的停车费。
情形三:非指定网点临时停车
此种情况下,用户需按照停车场收费标准支付停车费,goufun出行不承担此项停车费用。
情形四:停车网点提车
因为是从停车网点提车,您不需要为此支付任何的停车费用,只需要根据您的选择将车开走即可。
情形五:指定还车网点临时停车
在指定网点内临时停车,将不收取停车费,但是车辆在使用期间产生的使用时长费用须由用户承担。
建议各位,若停车时间较短则没有问题,若是停车时间过长,就先把车还了,再出发时再从停车场提车即可。
情形六:非停车网点提车
此种情况非常特殊,因为在您准备将车开出停车场时,收费员会根据标准向您收取停车费,这部分费用实际不应该是您来支付,但是出于现实情况的考虑,您可以预支付,同时将此信息告知客服,要求其在后面将此停车费返还。
扩展资料:
共享汽车按照「0.1元/分钟+1.5元/里程」方式合并计算价格。以20公里行驶40分钟为例,则收费4元时长费+30元里程费,合计34元。
此批上线的宝马i3续航里程近300公里,百公里加速为7.3秒,最高车速可达每小时150公里,车尾印有Gofun出行升级版品牌标识“Gofun Pro”,车内还配备香氛、定制化座椅套等。
据了解,宝马i3仍采用“分钟+公里”的计费方式,推广期优惠价格为1.99元/公里+0.19元/分钟。平台上奇瑞eQ车型价格为1.5元/公里+0.1元/分钟。
参考资料:百度百科-GoFun出行
这些年,许多人问过我下面相同的问题: 我开始了一个新项目,你认为我该使用什么技术呢? 通常,这些人属于下面两类中的一类: 已经做出决定的技术人员 需要鼓励支持的非技术人员 在一天结束的时候,我怀疑这些人是否真正关心我的答案。或许他们只是想知道我们是否面对相同的问题或只是需要鼓励支持。 坦白的说,作为一名工程师,我信奉这个说法:伟大的想法可由几乎任何技术构建。它们都有自己的优点和缺点。无论你选择什么技术,你都要为它带来的风险买单。但真的,你项目的成功与否更多的取决于愿景、领导团队、执行和市场,而并非技术的选择。 现在,我是一个负责人,我每天做技术上的决断。当我选择了一个特定技术时,我要能够证明这个决定,向我自己、我的合合伙人/员工和潜在的投资者。我根据项目及公司愿景做技术选择。 项目要成功你必须有一个坚定的愿景。如果你能将你的愿景转化成一组衡量你每个决定的值,你的前进道路会更清晰,也更容易找到合适的加入你的人。 除了愿景,许多初创公司专注于文化。人们都说文化是由创始人、最初的几个员工及产品本身确立的,然而,技术抉择对公司文化有直接影响这个说法却没怎么被提到。 你的项目初创可能基于J2EE、Oracle、Perl、PHP、Rails、Node.js或.NET,随之而来你的团队工程师将有不同的期望,不同的价值观,和不同的关注点。这些技术没有本质上是坏的。伟大的事情都有各自不凡的所在。它们伴随而来的是一种文化。 几年前,我遇到一位负责人选择使用Node.js来搭建自己的应用。出于好奇,我问他为什么选择Node。他的回答很简单:基础的工程师对Node.js很兴奋,所以我可以更容易招募到愿意免费贡献的人,因为他们希望积累相关经验。 这个决定显式地定义了工程师文化和团队成员——那些能够在这个项目中工作或感兴趣这个项目上工作的人。 问一个不一样的问题 那么我们不应该问什么技术是我们需要使用的, 我们应该问我们自己: 这个技术符合我们公司的核心价值观吗? 这显然是个更为之困然的问题,因为你需要切切实实地了解你公司的核心价值观。这将是创建一个成功项目的关键。 你不能盲目地套用技术就像你不用套用别人的商业计划那样。这是公司身份的一部分,你的核心价值观,你的目标,你的团队,你的期望都是跟别人不一样的。 关于“这技术在某某公司用得适合啊”这样的论据是很少有效的。例如Facebook使用PHP,它“在Facebook公司用得很适合”,但是这意味着我们选都应该使用PHP吗? 技术文化联盟 要具体描述这些技术社区的特性是很困难的,但我会个你分享我在不同选择上的观点与看法。请自由在评论里分享自己的看法,也可以包括关于其他技术社区的。 古典学校: 这里有些是“经典“的语言:他们已经被使用很长的一段时间,并且被证明他们的价值。他们的使用范围已经很广泛,但却引不起别人更大的激情。 注意:我在这没有提及Perl,因为我并不知道有哪个创业项目是以Perl作为核心技术来创建的(6?)。 PHP 理念: 功能都实现出来,这非常重要 就像互联网的基础一般 只要有一个方法去实现它,那么就不会被破坏 只要它运行起来并且速度很快,那么其他东西都是没有意义的 不要太理论化了,我们的语言是非常通熟易懂的,任何人一眨眼的功夫就能上手了。你可以用Java做同样的事情看看! 面向对象是种落后的想法 常见的使用例子: (在2013年中期) 你的第一个web app Wordpress/Drupal的扩展 个人观点: PHP拥有它光荣的日子。它真的让web开发更加简单,容易上手. 但是, 大概因为大量新的程序员开始使用PHP并且它拥有个不是那么地坚持自己观点的社区,所以只有少数人能写出漂亮的PHP代码。 良好的拥有规范的代码例子是很难找到的,并且我甚至不敢肯定PHP拥有自身的规范。这导致了PHP社区以糟糕的代码质量,缺乏测试,安全问题如同梦魇和像在2000年代初期般的落后品味而著名。 拥有良好规范约定,开发流程和指南的强大的PHP团队,是可以完成伟大的事情的,但这样团队很稀少。 Java 理念: 可移植性 像C/C++般的能力和表现,但却能够自动管理内存 更多地关注面向对象 IDE是必须有得 我们要消耗所有的内存,因为它们是一文不值的 线程处理是个好方法! 不要提起Java applets 看看我可爱的JVM! 开源(但拥有者为Oracle) 缓慢但更为安全的开发流程 个人观点: Java是非常有趣的。在几年前很多开发者已经厌倦了Java,他们找到了其他新大陆。他们开始转向一些脚本语言,像PHP,Pyhton,Ruby或者一些更加难懂小众的语言像Erlang。 尽管如此,Google通过Android展示了Java并不像我们脑海里的那么糟糕(只要你并不是使用J2EE或者Swing)。现在有一种”赶时髦“的趋势视乎暗示着Java再次变得酷起来了。这些大多建立在两件事情上: JVM 让人难以置信高质量的代码库 即便如此,对于我们来说,花一整天来编写Java程序看起来并不是一件吸引人的事。如果你打算依靠Java的堆栈,那么有一系列的其他JVM语言供你选择,他们成熟而且兼容Java扩展的库(例如:Scala, Groovy, JRuby, Clojure),你总是可以混搭使用它们。 自从大量毕业生学习Java后,聘请Java程序员并非一件难事,但是要找那些前期创业公司,高水准的工程师并且对写Java程序感兴趣是一件极具挑战性的事情。 另外注意:如果你的目标是Android,那么不用想得太复杂,即使你认为其他JVM语言更好,你也要坚持使用官方的堆栈。 我们仍然有许多的原因在你的创业项目里使用Java技术,但你可能会想同时使用一些的”更快,更灵活“的解决方案(Ruby, Python, Node…)。对于公司跟工程师来说,一个多语言环境带来了大量的价值,这就是为什么Java社区看起来节奏很慢,但却肯定是活跃的。 Java绝大部分是吸引了那些受到了传统的训练的工程师,他们向往舒适,有重复性,总所周知的编程模式。他们习惯关于使用这种语言,这种工具,这种自然的节奏。或许他们并不是最具有求知欲的开发者,但是他们却是很可靠的(当然,你要挑选了正确的人)。 C#/.NET 理念: 是更加好的Java 最初是为了桌面与嵌入式软件设计的 我们比开发Java的小伙伴们拥有更好的IDE 虽然是企业级般的重量了,但是我们提供了大部分Rails很酷的特性 我们有矛盾的开源版本 缓慢但更为安全的开发流程 个人观点: 当我回顾C#在发布C#5的时候,我不得不惊叹,我真的对该语言新的特性留下了深刻的印象。单从纯粹的语言设计角度来看,C#是有一丁点的领先于Java。在Visual Studio里写Javascript时的欣悦感让我感到很惊喜(自从我用VS主要为了C++后,我真的再也没有期待过什么了)。 另一件让我印象很深的是:C#可利用的文档的质量非常显著!但是C#并不是开源的,和Visual Studio + MSDN 非常昂贵,并且整个环境都因为licenses跟内存损耗而变得很糟糕,这些事实多少让这个好印象打折扣了。 微软正在慢慢地往开源发展,所以有了更多像Azure的开源方案。但是作为一个社区,.NET仍然是微软开发的中心。作为创业者,你应该考虑下你对开源与拥有企业支持的文化之间对比的看法。 C#大部分吸引了Java群体中的变向者:这些工程师们寻求稳定性和有保障的合同远胜于追求开源。还有他们可以容忍IIS! 明确的可替代品 在过去的这些年,有两个动态语言对于新的创业项目来说变得十分受宠:Python and Ruby。这两个语言实际上有非常多相似的地方。现在Python因为后台apps而著名(因为NLP, biotech, APIs, SOA的因素 )而另一方方面,Ruby因为面向用户的apps而著名。尽管这两个语言都受到了一样的限制(主要是性能跟并发性),但是他们的核心价值和社区有着不一样的专注点。 Python 理念: 只有一种显而易见的做事方法 代码要漂亮简洁和明确 文档是关键 有较强的语言设计引导 个人观点: 作为一个更喜欢ruby的人来说,我常常嫉妒python项目文档的质量。同时python设计的初衷——给你一个正确的编程方式却又让我又爱又恨。通常这一初衷对于团队来说很好,但某些时候可能令人抓狂。 在某些领域python有很多优秀的库,并且这些库和你想解决的问题有关,这种情况下python可能是最好的选择。python开发者知道怎样去讨论交流他们的代码。他们用文档记录所做的事情并且用面向过程来描述他们务实的方法。 但是python在互联网流行前就已经存在,如果你关注的是并发和高吞吐量,那么这个并发性很差的动态解释语言可能不是一个很好的选择。 python主要吸引的是那些想要一个现代但通过充分验证的语言的更加务实和经验丰富的全栈开发者。 Ruby/Ruby on Rails 理念: 为人而不是机器而设计的Designed for humans, not machines 极端的灵活性:如果陷入困境的话,是你的原因,那是你 一切力求简单、优雅并充满乐趣 DSL至上,尽DSL 测试非常重要 事情变化很快,保持学习 激情活力的社区 个人意见: 就我而言,Ruby是我几年来的首选语言。你会发现令人难以置信的、大量的Ruby开源代码。Rails实在是一个了不起的Web框架,如果你知道如何使用工具的话它让使大多数的Web项目容易实现。 但灵活性和过快的开发周期也有缺点。随时准备在你的代码上投入大量时间以保持其更新以及分离废弃老的库。如果不能依靠缓存,一个成功应用的吞吐量往往被缺乏良好的并发支持限制。 Ruby开发者主要是用Rails开发,所以与框架特性相比基本不会去深入核心语言本身的特性。他们往往是充满好奇心且机会主义的(以一个很好的方式),有些实用主义,关心代码质量/结构和测试覆盖率。Rails开发者早期采用它的典型原因是由于该框架本身默认使用的一些新技术(coffeescript、turbolinks、CSS预处理器……)。 Ruby和Rails主要吸引了那些想把事情做得快而优雅的开发者。相比于底层计算细节,这些开发者往往是以产品导向的,他们更关心的目的和客户价值的实现。 新成员 这是些让人们兴奋的语言/技术。他们代表了运行在“云端”的编程语言的设计新浪潮。 Node.js (Javascript) Node.js不是一门编程语言,但它是使JS在服务器端运行最流行的方法。和我对Ruby的大部分评论是关于Rails一样,相比JS我更关注Node。 理念: 为实时驱动的应用程序而设计,高吞吐量、低延迟 DIY 小的内核,剩余的内容由社区维护 低耦合 借鉴Ruby/Python 个人意见: 我觉得Node.js很有趣。在技术上Node没有太多新内容。Python有Tornado/Twisted,Ruby有EventMachine,C有 libevent。 事件驱动的框架已经使用了一段时间,但Node具有两大优势:*大多数JS库是非阻塞*大多数Web开发者不管怎样都要写一些JS。 在前端和后端使用相同编程语言的想法吸引了不少人,但值得与否还有待验证。 Node提供了巨大的吞吐量(只要你坚持IO操作),它很容易上手,而且写起来很有趣。 由于其本身具有事件驱动性,调试及测试面临挑战,回调处理是可维护性的地狱。我希望Node能够提供一种官方的今后或承诺的解决方案。略显凌乱的文档使在现有项目里跳转时有些困难。 Node的开发者大都是它的早期的接受者,他们更喜欢自定义而不是按惯例创建结构/模式,这样使他们觉得更舒服。它吸引开发者使用已知的语言(JS)去处理高层的并发。Node作为一个框架处理的水平比经典的MVC更底层一些。Node开发者们也真的喜欢这个在服务器和客户端使用相同语言的想法。 Clojure 理念: 实用且符合现代人使用的Lisp 一切皆是数据 并发性,并发性,并发性 让那该死的可变状态见鬼吧 能够很好地与Java协作 稍微靠近科研路线,但并不影响他的实用性 个人观点: 我最喜欢Clojure的一点是它的lisp精神。一旦你攻克了它的圆括号和操作符/参数顺序,那么Clojure将很可能让你重新思考你构建代码的方式。对于处理数据跟强迫你保持代码简短这两方面来说,它真的很棒并且高效。 让我头疼的是我并非拥有足够的聪明去更多地编写Clojure。当我尝试去追踪那些数据时,我的大脑会出现栈溢出。对于该语言来说异常通常是没意义的,假如你尝试解决别人代码的bug,这将会是机具挑战的事情因为Clojure本身是复杂的语言,并且可以用宏来拓展。最后,Clojure社区并不是真的面向web开发,Clojure完成的大多数作品都是以数据作为中心的。 Clojure主要吸引了那些处于边缘,对编程语言有求知欲,面相数据的程序员。如果你寻找有编程语言怪癖的数据处理专家,那么Clojure将会是吸引他们的好方法。 Scala 哲学: 同时具有面向对象与函数编程世界的最佳优点 让编译器为你做一些工作 并发事务 比Java少一些规范,但是目标在于相同或更好的性能 与Java生态系统和谐共存 个人意见: 当目标是JVM时,Scala目前是我所选择的语言。它的学习曲线陡峭。 知道何时使用 FP 与 OOP是非常复杂的,而且在应对该语言语法本身时也是如此。 那就是说,获得使用FP的好处,同时又在需要的时候仍然保持OOP,是非常有用的。一旦你“掌握”了该语言的风格,写Scala实际上是令人愉快的,而且它的社区也非常友好。 Play框架确实很好,它提供了一个很好的替代Rails的选择,特别是对API开发来说。Twitter的工程师团队为此提供了许多资源与开源代码。 目前使用Scala是一个非常安全的选择。Java开发者会有舒适感并会尝试这种更加“现代的”语言。动态语言开发者不会感觉太陌生,并且获得了Java生态环境,性能提升,并发性和永恒性。如果编译时间不会使你感到沮丧的话,现有工具以及惯例使得在一个成长的团队中使用Scala非常不错。 不过就像Ruby,Scala社区的文档不是很丰富。我真的希望 API文档 可以重新编写得更直观,总的说来就是更有用。但是公平的说,已经有许多非常好的资源了,比如Martin Odersky (Scala的创造者)提供的Twitter的 Scala学校和Coursera的Scala 课堂之 FP 。 Scala主要是吸引了好奇的Java开发者,他们想要一些更现代的东西,就像Ruby/Python开发者想要他们语言的一个更具伸缩性的版本。对于吸引那些想拓展它们现存开发环境的伟大的开发者,以及那些可以充分利用该语言二元性的开发者来说,Scala是一个好方法。 Go 更强大的C 你可以自己管理内存,前提是你不能粗心大意 直观的代码更好 丰富的代码库 效率很快..对于任何一个部分来说(从编译到执行) 存在并行编程模式,并且简单使用 文档很关键 个人观点: 我真的很喜欢Go(亦称Golang)。在我使用它几年之后,我选择使用它来开发我自己新项目的API。Go或许对于一些人来说有些无聊,但它的简洁与效率是真材实料的。 Go强迫你更多地去思考你的代码的结构,你的数据/代码行为,因为你不能总是坚持面向对象的编程模式。我发现我的代码总算变得容易调试,结构更简洁,但有时会重复性比较大(例如:错误处理)。 没有比Go更加方便地开发并发业务的语言了。一旦需要编译,你的代码编译加上运行的时间会比Rails服务器启动的时间还快。Go支持一些鸭子类型(duck typing,动态类型的一种风格),这造就了从Ruby(举个例子)转换过来显得颇为简单。对比起一些脚本语言,它所编写产品的性能实在让人觉得惊叹,并且它占用的内存很小。 Go被设计为一个人或是一个大团队都可以为同一代码库工作的语言,而且它的身旁有很多很棒的工具值得你使用。 然而,它不是完美的语言。有时第三方依赖库很让人头疼。当你在高水平编程中运用了Go会让你觉得它的水平太低了。有些语言设计时的决策有时会引起困惑(例子:交互式接口和结构化设计)。 初创公司里,Go看起来在性能和并发事务方面变得越来越流行。我见过很多初创公司用Go替代了Node,而且另一些公司添加了Go应用作为扩展程序。 Go社区里看起来混合了一些老的C/C++学校黑客和一些喜欢低水平语言的年轻人。Go语言和社区的领导者固执的相信让人们理解他们的想法是很容易的。同时他们也允许你能快速的评估你接受他们哲学后是有多么的舒适,而且可以发现是否能达到你的预期效果。 Go主要吸引着面向性能和结构体系的开发者。他们想要轻易的实现并发,要达到C的执行速度,也要达到Python/Ruby的开发速度。他们不想在找一个新的有趣的语言,他们需要一个坚定的妥协。 技术驱动理念 技术的选择会受到理念的影响。你需要清楚而谨慎地权衡你选用的技术是否与企业的价值观一致。做出正确的决定有助于你从技术细节的纠缠中摆脱出来,拥有更多投入商务运作的时间。
Docker技术在Ruby社区是有影响力的,我所知道的一些创业团队很早就在运用它来解决环境管理、持续集成以及部署的问题了。但是,也有一些同学尚未注意到这个技术,或者了解过后认为它不是很重要,所以我想讨论一下Docker对Ruby系技术的帮助。
有的人可能对Docker技术不太了解,不妨参考论坛里的这篇文章( )以及肖德时写的系列文章( )。 Docker 与 Vagrant
我一直很喜欢Vagrant这个工具,两三年前就用它来进行自己项目的环境维护,那时候主要是做测试,由于Vagrant将操作系统环境进行了标准化,我很容易就能让自己的应用系统以及相关的测试结果保持稳定。
Vagrant还有一个好处,Ruby社区比较偏爱Mac,但是线上的系统基本都是Linux,所以开发环境所做的测试是有疑问的,特别是遇到一些有so依赖的gem,这时一个和线上完全一样的环境就特别重要。
其实上面的表述不太准确,Vagrant也有各种provider,我所说的场景,基本上都是virtualbox的provider,所以这些地方正确的说法是 vagrant/virtualbox。
和Docker相比,vagrant/virtualbox组合的成本还是很高的,无论是setup一个环境还是reset一个环境,都需要一段时间的等待,Vagrant只是把virtualbox的操作DSL了而已,底层的做法没有变化。而Docker由于本质上就是一个进程,因此天生就是轻量级的。对于运行时间在分钟级别的自动化测试工作,Docker显然有很大的优势。
当然,也有人会认为Docker不能模拟完整的操作系统,不过这恐怕是一个优点而不是缺点。我在以前的文章中已经说过了,这里概述一下主要观点——
Docker简化了操作系统这个基础设施,让应用精简为其最核心的形态——携带有限资源的进程,在此基础上更有利于架构上的最佳实践。
而对Ruby工程师而言,这个“最佳实践”中肯定少不了的一条就是——微服务。
微服务
Ruby工程师中有很多就是Rails工程师,而Rails实际上更倾向于单体架构,因此后来社区的工程师们才需要在实际工作中总结1 to 30这样的实践。
其实微服务本身不是个教条,即使没有人教,我们也常常自发的去进行服务化改造,但是这个工作并不容易,主要是会受到一些问题的掣肘,比如运维复杂度和系统测试成本会大幅度上升等等。
处理这些困难,首先当然是看是否必要,一些简单场景我们也可以用单体架构直接搞定,但是我们很容易会注意到,这两年大家越来越多的提到了微服务或者服务化,这背后其实是有趋势的——各种业务形态都在朝着互联网级的用户规模推进,同时大家都在努力从每一个用户的各种维度上挖掘价值(这导致了大数据的需求),这些场景变得越来越常见,单体架构是难以支持的。
既然微服务或者服务化不可避免,那么就要有相应的对策,虽然Ruby社区也有很多人在不同问题点上针对微服务进行改进(比如完善异步化框架,以及对服务协议的探索等),但是在基础设施层面,Docker是最重要的武器,没有之一!
对Ruby工程师来说,Docker能做两件事:约束边界和建立通用基础服务。
约束服务边界
Ruby项目Docker化,并不是简单换个虚拟机那么简单,我们会面对拆分的压力,相信很多人尝试用Dockerfile来描述自己的项目的时候都会觉得束手束脚,但这些地方其实是促使我们想清楚——这个应用到底要做什么?它和外界是什么关系?对于外界的变化它如何响应?失败后怎样恢复?
这类的问题对系统架构非常重要。比如应用到底要做什么,这是让工程师去思考系统的目标,无论是提供web服务,管理调度后台任务,还是提供实时分析,它们都应该有一个尽可能单一的目标,在这个基础之上,我们建立的服务才有可能是易测试、易扩展和易维护的。
其它问题也类似,这些地方以前如果没有留意,很可能不是没问题,而是没意识到,使用Docker有助于我们意识到这些问题。
另外补充一点,由于Ruby项目不能完全脱离动态库依赖(java大都可以),本身的打包机制又没有自包含结构(gem+bundle不包括动态库,相比之下,Golang是静态联编的),在分布式环境中的交付和软件包分发其实是有着先天不足的,Docker的Image恰好补上了这一块,简直是睡觉时候有人送枕头了。 建立通用基础服务
当我们将应用系统分裂为各种服务并明确其边界以后,就出现了“分久必合”的问题,这很自然,服务化改造并不是各行其是,应用之间还是要协作,而对应用的运维——服务发现、水平扩展、容错等等——都需要基础设施的支持。
以前,对于这种运维基础设施,各公司甚至同一个公司的各个团队的做法都千差万别,但是借助Docker以及周边的生态圈,我们可以很容易的得到通用的服务发现框架,享受自动的部署和弹性扩展。
更好的消息是,这些基础服务是通用的——不但不关心是rails还是sinatra,甚至根本不关心是不是Ruby。
这也很好理解,Docker是对进程这个操作系统工作单元进行了简化约束,而进程的概念本来就是与语言和框架无关的。
这使得Ruby工程师以及Ruby项目可以更为自由的选择合适的技术去扩展公司的产品线。
延伸技术框架
Ruby 刚出来的时候,有很多来自 Java 社区的工程师加入其中(我也算是其中之一吧),很多人最大的感受是——视野被打开了。曾经象口号一样的“all in java”变成了落后的标志,大家意识到,一把钥匙开一把锁,用最合适的技术针对性的解决问题才是聪明的做法,单纯排斥某种技术或者语言框架并不明智。
这个道理在Ruby/RoR应用开发中也不例外,但是不少人在使用了几年Ruby以后都会遇到一个问题——“Ruby确实很适合开发Web,但是现在有些问题需要使用XX技术,而我们的系统严重依赖Ruby环境,这该怎么办呢?”
我认为问题就出在“系统严重依赖Ruby环境”上,研发的基础设施,比如配管、自动化测试、打包、部署,不应该仅满足一种技术或是语言,它一开始就要考虑到通用性,否则我们就只能“手里拿着锤子,看谁都像钉子”。
Docker本身和语言无关,它唯一的约束大概就是要运行在Linux上,这个对互联网服务端系统来说也算是标准了,问题不大。所以,我们应该以Docker为核心打造研发的基础设施,这将是未来的一笔重要投资。
当然,为未来画饼是危险的,不过还好,Docker领域的创业很活跃,有很多团队和公司已经做了相当多的基础工作,对于Ruby工程师和Ruby创业团队,去用现成的基础设施其实更方便。
1.(新增)全新的壁纸和快捷条图标(在“桌面设置-个性化设置”)
2.(新增)开关和日历小部件更新2套全新样式
3.(新增)增加私密安全锁功能
4.(修复)重置的问题 1.(新功能)功能表 增加自动整理图标选项
2.(新功能)增加3种手势操控选项
3.(新功能)增加4种桌面划屏特效
4.(修复)修复部分bug 1.(新功能)增加2个滑屏特效(渐影、玻璃)
2.(新功能)主题预览、锁屏图标增加主题更新数提示
3.(新功能)增加淘宝小部件(菜单-添加-GO小部件)
4.(修复)修复某些情况下主题购买后无法使用的问题
5.(修复)针对酷派手机无法清除系统桌面默认选项的问题 1.(新功能)增加自动清理屏幕上图标的功能(菜单-屏幕清理)
2.(新功能)桌面设置增加新功能预告提示(关于GO桌面)
3.(新功能)支持Toucher主题切换(添加-主题-Toucher)
4.(修复)评分弹出的错误弹出问题 1.(新功能)全新 的系统设置页面
2.(新功能)增加GO桌面插件管理功能(菜单-周边)
3.(优化)桌面设 置增加快捷设置模块
4.(优化)支持部 分其他第三方桌面主题
5.(修复)多次弹 出评分提示框的问题
6.(修复)收费主 题在4.1系统上无法使用部分图标的问题 1(新功能) 多屏多壁纸支持选择主题壁纸
2(新功能)新建功能表文件夹可自动命名
3(优化)桌面设置分类和操作
4(修复)功能表出现两个相同图标的问题
5(修复)选择壁纸时桌面崩溃的问题 1.修复插件使用问题
2.新增多款主题 1. 增加了元旦人气主题;
2.(新功能)多屏多壁纸插件支持选择主题壁纸;
3.(优化)资源浏览模块插件化;
4.(优化)快捷条功能表图标支持删除操作(长按功能表图标-删除);
5.(优化)功能表首栏文件夹支持点击操作(功能表-长按应用图标);
6.(优化)个性化设置操作细节; 1.(优化)修改GO手册部分内容
2.(修复)Home键手势失效的问题
3.(修复)主屏幕快捷方式失效的问题
4.(修复)跳转到主屏幕时的过渡特效
5.(修复)划动屏幕出现黑屏的问题 1.(修复)进出功能表出现 残影的问题
2.(修复)Nexus 7添加界面被截断的问题
3.(修复)下划手势在4.2系统上无法使用的问题
4.(修复)GO省电导致的4.2系统崩溃问题
v3.17 更新:
1. (新功能)全新的设置界面风格(桌面菜单-桌面设置)
2. (新功能)桌面推荐小部件支持批量下载
3. (新功能)图片、音乐、视频快捷方式图标(可通过GO快捷方式添加)
4. (优化)功能表图标放入文件夹的操作体验
5. (优化)桌面图标/小部件拖动轨迹动画
6. (优化)应用中心搜索功能的操作体验
7. (优化)主程序集成通讯统计插件
8. (修复)图标裁剪的问题 1、(新功能)功能表支持上下滑手势隐藏选项卡与操作栏;
2、(新功能)图标排序支持按使用频率排序;
3、(新功能)资源浏览支持内置播放器;
4、(优化)图标自定义大小选项支持更大数值;
5、(优化)自定义手势列表缩略图增加动画效果;
6、(优化)快捷栏+号增加空白选项;
7、(修复)功能表菜单主题背景丢失的问题。 1、(新功能)UI3.0全新配套图标和网格绘制;
2、(新功能)快捷条支持自适应个数及大小;
3、(新功能)全新的操作提示UI界面;
4、(优化)软件管理支持提示可移动的手机内存/SD卡应用;
5、(优化)隐藏快捷栏后屏幕使用区域;
6、(优化)添加GO小部件的UI界面(长按桌面空白处进入)。 1、(新功能)更便捷的添加界面(长按桌面空白处进入);
2、(新功能)功能表全新的UI界面和操作体验;
3、(优化)软件管理支持区分手机内存/SD卡应用;
4、(优化)初始安装的用户提示界面和桌面摆设;
5、(优化)提升划动桌面的流畅度;
6、(修复)文件夹新样式的部分问题。 1、(新功能)全新的屏幕预览界面和操作体验(拖动删除屏幕);
2、(新功能)支持从其他桌面复制图标(高级设置内);
3、(优化)提升屏幕划动时的流畅性;
4、(优化)修改初次安装桌面的用户提示体验;
5、(修复)竖向功能表使用瀑布特效时的显示问题。 1、(新功能)GO桌面消息中心上线;
2、(新功能)GO精品全面调整UI体验,新增1x4小部件;
3、(优化)调整上下滑操作手势的默认选项(支持手势激活Menu菜单);
4、(优化)Menu菜单的“更多”选项栏的按钮排序;
5、(修复)操作手势导致的无法卸载GO桌面问题(需要安装开关小部件来使用手势锁屏功能)。 1、(新功能)Menu菜单增加消息中心入口;
2、(优化)文件夹的界面匹配和操作体验;
3、(优化)通过功能表进行应用更新的操作体验;
4、(修复)加载内存卡时导致的freeze问题。 1. (新功能)可通过“检查垃圾数据”功能清除功能表重复图标(桌面设置-高级设置);
2. (优化)功能表的历史记录显示隐藏图标问题;
3. (优化)新建功能表文件夹的响应速度;
4. (修复)功能表文件夹图标重复的问题;
5. (修复)在使用主题时出现屏幕花屏的问题; 1. (新功能)支持GO桌面整体主题,可一次性更换桌面、小部件和锁屏主题;
2. (新功能)桌面文件夹支持自定义应用图标位置;
3. (新功能)操作手势增加锁屏功能(需要申请锁屏权限,卸载时请先清除权限;
4. (优化)手势设置的设置选项和操作流程;
5. (修复)图标合并文件夹背景显示错误问题;
6. (修复)Galaxy Nexus的默认行列数错误问题。 1、新功能,桌面和功能表特效支持自定义随机特效;
2、优化桌面文件夹不显示隐藏应用;
3、优化功能表搜索的图标显示问题;
4、优化更新版本后的默认桌面设置问题。 1.(优化)功能表隐藏菜单增加确定和取消按钮;
2.(优化)修改GO精品图标的更新标识显示机制;
3.(优化)修改功能表的应用更新提示显示机制;
4.(修复)功能表在特定情况下出现的崩溃问题。 1. (新功能)桌面移动图标及小部件时显示网格标识;
2. (优化)合并文件夹后自动弹出编辑列表,可快速添加应用进入文件夹;
3. (优化)调整桌面设置内的选项排序和描述;
4. (优化)桌面锁定编辑后,不可编辑文件夹内的图标;
5. (优化)更新分享功能的文案和链接(请帮助我们分享GO桌面到微博)。 1.(新功能)快捷条图标跟随自定义图标大小功能一并修改 ;
2.(优化)选择大图标模式时,指示器返回桌面顶部 ;
3.(优化)当前屏幕空间不足添加GO小部件时,进入屏幕预览选择其他屏幕 ;
4.(优化)删除和修改大部分的弹出文案提示;
5.(优化)用户提示界面的指示器显示效果。 1.(新功能)Menu菜单新Tab样式(左右滑动);
2.(新功能)QA用户提示(关于GO桌面选项内);
3.(新功能)桌面文件夹+号快速编辑功能 ;
4.(修复)小分辨率下功能表的界面问题。 1.(新功能)GO桌面小部件添加列表支持提示更新(长按桌面——GO桌面小部件) ;
2. (新功能)完善提示系统功能表提示;
3. (优化)锁定屏幕的用户提示信息(通知栏显示解锁路径);
4. (优化)图标点击颜色的选择界面(取消返回键的提示框);
5. (修复)自定。 1.(新功能)隐藏主题图标底图(个性化设置);
2.(新功能)自定义图标字体大小;
3.(优化)功能表文件夹操作体验 ;
4.(优化)桌面图标推压的动态效果;
5.(修复)文件夹的图标缩略图放大问题。 1.(新功能)自定义图标大小(桌面设置——个性化设置——图标设置——图标大小设置);
2.(优化)GO桌面小部件管理流程;
3.(优化)屏幕预览模块提示信息 ;
4.(修复)开关小部件卸载问题。 1. 新增锁屏功能;
2. 新增功能表图标特效(3D效果);
3.(新)主题商城正式上线;
4.修复Menu键没有振动的问题;
5.优化桌面图标快捷菜单。 1.新功能:桌面支持更多行列数选择;
2.新功能:支持轨迹球屏幕翻页;
3.优化:新的快捷条图标和功能表样式;
4.修复:壁纸没有随主题更换的问题。 1.修复:在某些机型上的卡死问题(MOTO);
2.新功能:MENU菜单加入更多选项;
3.优化:退出GO桌面后清除内存残余;
4.修复:无法进入功能表编辑模式的问题;
5.修复:在高分辨率下快捷条背景错误的问题;
6.修复:乐Phone壁纸及图标错误的问题;
7.修复:修复上个版本中遗留的大量问题。 1. (新功能) Menu菜单加入更多选项;
2. (优化) 退出GO桌面后清除内存残余;
3. (修复) 无法进入功能表编辑模式的问题;
4. (修复) 在高分辨率下快捷条背景错误的问题;
5. (修复) 乐phone壁纸及图标错误的问题。 1. (修复) v2.26的严重bug;
2. (新功能) 功能表翻屏特效(5款酷炫效果);
3. (优化) 桌面及功能表图标重新加载的问题;
4. (优化) 整体内存使用率;
5. (修复) 无法进入屏幕预览的问题。 1. (新功能) 功能表翻屏特效(5款酷炫效果);
2. (优化) 桌面及功能表图标重新加载的问题;
3. (优化) 整体内存使用率;
4. (修复) 无法进入屏幕预览的问题。 1. (优化)功能表文件夹打开与关闭的背景颜色淡入淡出效果;
2. (修复)进入桌面设置崩溃的问题 – 是由于内存不足引起,请重启桌面试试(菜单-退出桌面,再进入);
3. (修复)部分机型启动卡的问题;
4. (修复)部分小分辨率/特殊分辨率机型设置壁纸不正确的问题。 1. (新功能) 更换字体功能支持扫描SD卡特定文件夹(GOLauncherEX/fonts)中的字体文件;
2. (优化) 桌面及功能表图标重新加载的问题;
3. (修复) 部分小分辨率及M9机型的主题预览和屏幕预览问题;
4. (修复) M9机型的快捷条点击问题;
5. (修复) 使用Menu键解锁时不会弹出菜单(CM6);
6. (修复) 进入桌面设置和系统设置的崩溃。 1. (新功能) 桌面操作手势支持隐藏快捷栏(桌面设置-操作设置);
2. (新功能) 新的Menu菜单界面;
3. (新功能) GO桌面小部件-任务管理支持点击单个图标关闭程序及上下翻动查看任务;
4. (优化) 提升功能表滑动流畅度;
5. (修复) 快捷条重复图标和图标消失问题;
6. (修复) 如果你经常遇到图标加载问题,请开启“常驻内存”选项(桌面设置-高级设置-常驻内存)。 1. 发布两款GO桌面小部件 - 任务管理、联系人;
2. 支持功能表文件夹与桌面文件同步;
3. 优化快捷条更换背景图的操作流程;
4. 修复内存不足导致的问题。 1. 支持更换桌面显示字体(桌面设置-高级设置);
2. 添加至桌面菜单支持批量添加应用;
3. 修复功能表文件夹卡的问题;
4. 优化功能表进出特效的效果(风车特效);
5. 优化快捷条操作体验。 1. 桌面文件夹列表增加功能表文件夹选项;
2. 增加垃圾桶和DOCK移除时的动画;
3. 修复小分辨率的机型壁纸适配问题;
4. 优化桌面图标的操作体验细节;
5. 优化功能表文件夹的操作体验细节;
2010/4/1更新:手绘主题、经典主题、水墨主题、浪漫主题、木纹主题、情人节主题特别版、喜庆主题。 1. 快捷条支持更换不同主题样式(需更新主题);
2. 优化功能表新安装程序的排序方式;
3. 文件夹打开应用后自动关闭;
4. 优化功能表进出动画;
5. 优化快捷条的通讯统计模块;
2011/3/21更新:浪漫主题、木纹主题、情人节主题特别版、喜庆主题。 1. 增加桌面图标的通讯统计显示(需先安装GO桌面通讯统计);
2. 增加进出功能表特效;
3. 增加功能表新建文件夹动画效果;
4. 修复桌面和快捷条图标重复问题(请通过“桌面设置-高级设置-检查垃圾数据”选项进行修复);
5. 修复Pure Widgets等桌面小插件无法点击及添加错误的问题;
6. 修复退出其他程序后强制关闭的问题。 1. 修复几个可能导致耗电的问题;
2. 修复关闭壁纸滚动选项后未生效的问题;
3. 修复功能表滑动屏幕缓慢的问题(2.3系统);
4. 修复重启手机后,主题图标消失的问题;
5. 优化屏幕预览的进出特效;
6. 优化屏幕预览删除屏幕的准确性;
7. 增加功能表卸载程序小动画;
8. 支持功能表文件夹图标排序。 1.增加设置备份与还原功能(高级设置内);
2.支持自定义快捷条背景;
3.支持不滚动壁纸(显示设置内的“壁纸滚动”选项);
4.修复屏幕MENU菜单settings按钮无法打开问题(Galaxy S /Epic 4G /Droid);
5.修复widget显示不完整的问题(Pure Widget /Jorte /Greek Eortologio);
6.修复桌面联系人快捷方式奔溃问题 (Droid)。 1.快捷条图标支持打开快捷方式;
2.增加功能表关闭程序白名单;
3.增加常驻内存与阻止强制关闭选项;
4.修复内存溢出崩溃与功能表图标重复问题;
5.提升打开功能表速度;
6.支持繁体中文语言。 1.增加圣诞元素主题;
2.支持长按搜索键响应;
3.修复重启后自定义图标失效问题;
4.修复内存溢出后程序崩溃问题。 1.修复V1.20中直接更新导致的问题与崩溃问题;
2.新增功能表文件夹:在功能表内拖动图标重叠可新建文件夹;
3.支持可滑动窗口小部件与调整小部件大小;
4.支持自定义图标样式(测试功能);
5.解决某些机型奔溃问题,例如Droid和Droid X;
6.解决图标更新后消失与动态壁纸交互问题。 1.新增功能表文件夹:在功能表内拖动图标重叠可新建文件夹;
2.支持可滑动窗口小部件与调整小部件大小;
3.支持自定义图标样式(测试功能);
4.优化运行速度与功能表响应速度;
5.解决某些机型奔溃问题,例如Droid和Droid X;
6.解决图标更新后消失、错位问题;
7.支持动态壁纸交互响应。 1.支持日文使用;
2.修复小写字母开头应用排序错误问题;
3.修复部分初次进入强制关闭问题;
4.修复部分机型滑动缓慢问题;
5.改善运行中的电池消耗量。 1.修复部分初次进入强制关闭问题;
2.修复部分机型滑动缓慢问题;
3.改善运行中的电池消耗量。 1.支持功能表字母排序;
2.支持功能表时间排序。 1.提升屏幕滚动速度(更顺畅);
2.修复SD卡应用程序图标遗失问题;
3.修复某些机型的异常崩溃问题。 1.修复使用app organize添加文件夹消失问题;
2.修复隐藏状态栏功能。
本文链接:http://task.lmcjl.com/news/1487.html