cheap medications premarin 1.25mg tablets estrogen contents, cheap medications buy wellbutrin no rx needed, cheap online buy baclofen online, cheap online order flagyl er pay pal online without prescription, pharmacy cheapest where to buy buy doxycycline online, online cheap medications buy overnight delivery lasix fedex, buy cheap purchase diflucan, cheap online buy neurontin online overnight cod, cheap pharmacy fedex acyclovir overnight without a rx, order cheap what is norvasc, buying cheap buy arimidex free consultation,

值得关注的开源软件推荐:问答实录

2017年11月15日 没有评论

作者:灰狐 Allen 来源:GitChat

内容提要:

  • 小企业的架构受限于技术人员已掌握了什么,怎么选一个容易兼容扩展的框架?
  • 有哪些能提高开发效率的软件,如何通过开源软件提高开发效率?
  • 如何参与到开源软件的开发中去,开源软件如何评估其在生产环节中的安全性和可靠性?
  • 想问一下学习开源软件的时候,什么时候应该阅读源码?阅读源码的方法是什么?
  • 如何根据自身需要快速辨别一个开源软件是否适合自己?
  • 开源软件有很多,你对每个开源软件都会了解吗?了解到什么程度,而且开源会跨语言、跨平台,请问你如何学习、解决、应对的?
  • 怎么开启开源软件源码学习,在没有文档的情况下,又怎么了解开源软件架构?
  • 本群的主题是开源软件,和我们平常所说的开源项目(如github)是一回事吗?
  • 对于大的开源项目,如何学习和参与?
  • 若自己项目要上传到github上,readme.md要写哪些东西可以吸引其他人看我项目,对我的项目能有足够认知?

问:小企业的架构受限于技术人员已掌握了什么,怎么选一个容易兼容扩展的框架?

答:这个问题可从以下几点来试着去思考:

  1. 开源软件生态系统是一个框架兼容、扩展性的重要特征,Node.js有47.5万、Meteor有近13000个软件包和扩展;
  2. 团队试着开发一些小的扩展和应用来验证使用框架的兼容与扩展性;
  3. 未来可行的话,将公司开发的扩展开源出来提交公共仓库,形成良好工程师文化;
  4. 保持公司架构的兼容和扩展性需要整个研发团队达成共识,而不是某个人的喜好,团队要长期填坑和沉淀,最好更多地参与此开源软件的社区贡献。

问:有哪些能提高开发效率的软件,如何通过开源软件提高开发效率?

答:这个问题可以简单理解为开源生产力工具,通过以下7点来解答。

  1. 框架:一站式框架能极大地提高开发效率,如:Meteor、Angular、Qt、Django;
  2. 编辑器:更高效的编码,如Emacs、Vim;
  3. 消息队列:建立应用的消息总线Hub,消息队列是重要的软件基础设施,因为它解耦、连接各种数据、应用和服务,给企业带来更高的实时响应;
  4. 编程语言:使用函数式编程语言,它能带来更高的生产力;
  5. CI/CD等工具的高效使用;
  6. 敏捷开发、看板、项目管理工具的使用;
  7. Git & GitHub熟练使用等等。

问:如何参与到开源软件的开发中去,开源软件如何评估其在生产环节中的安全性和可靠性?

答:这个问题包含两个问题,首先回答第一个部分:如何参与开源项目。

参与开源软件的开发这个话题有点多、有点大,我这里简单做些整理供参考:

  1. 首先让自己编程水平不断提供,变得更牛,你厉害了,很多开源软件项目都愿意邀请你加入进来;
  2. 模仿大牛,了解他们是如何参与开源软件开发的,他们的博客时常会给出一些意见、建议;
  3. 有机会和开源软件Leader和开发者建立直接交流的机会;
  4. 先从一些小项目、不太知名的开源软件入手,不要一来就要成为Linux核心和Apache开发者(能力强悍的同学就另当别论了);
  5. 评估自己的工作、生活,确保有足够的精力和时间参与到开源软件中去,若你的公司是付工资让你参与的,那就恭喜你了;
  6. 在GitHub上找自己感兴趣且能帮上忙的项目入手;
  7. 开源软件贡献不一定都是参与代码贡献,还有其他很多工作可做,如:找Bug、修复Bug、文档、社区等等。当然,代码贡献成就感是最大的;
  8. 熟悉自由、开源软件文化,将开源软件的学习、使用、贡献逐步变成一种工作、生活方式。

接下来是第二部分:生产环节中的安全性和可靠性的评估。这个话题很广,我想从这几个方面入手:

  1. 先看看这个开源软件成功案例,若有很多大厂在用,软件的安全性和可靠性应该是不错的,若没有什么用户在用就需谨慎评估了;
  2. 然后使用有long-term support (LTS)版本的开源软件进行开发和部署,尤其是GNU/Linux这样的操作系统和核心。LTS在文章中有提及,大家可去看看;
  3. 在Git中使用多个分支进行开发和Bug修复:主分支、功能分支、Bug修复分支等;
  4. 留出充分的测试时间:单元测试、集成测试、验收测试;
  5. 估算和测试负载:可能多少并发用户、一个用户生成的数据量、用户分布等等;
  6. 除了公司内部的安全人员外,可和一些白帽子团队建立长期合作;
  7. CI/CD基础设施的引入和完善,它是软件系统安全性、可靠性的重要支撑和保障;
  8. 在安装部署环节:公有云、私有云、混合云带来安全性、可靠性的不同解决方案;
  9. 这点很重要,若公司的核心关键业务基于这些开源软件,公司尽可能安排专人深度跟进和参与到这个开源软件中来,这是技术保障。举个例子:小米就有4个HBase Committer参与HBase,这极大地保障了公司基础设施的可维护性和可靠性,若没有,如果出了一个难搞的问题,没办法解决,去问原开发者,因为交流、时间等因素总会有耽搁和延迟,而核心关键业务是不能等人的。

问:想问一下学习开源软件的时候,什么时候应该阅读源码?阅读源码的方法是什么?

答:阅读源码是为了更好的理解软件背后的实现机制和细节,为了满足好奇心,什么时候阅读都行。不过,若软件规模庞大,要去看源码就先放一下,先熟练使用它后再说。阅读方法可参考以下几点:

  1. 搜一下是否有朋友在做这件事,若有,可以和他一起,这样有交流,进步更快,GitHub上已有不少对源代码做中文注解的项目,如:带有详细注释的 Redis 3.0 代码 
  2. 若没有借鉴第1点的做法,将你要分析的源代码导入类似GitHub的代码仓库,然后边看代码边写注释;
  3. 买相关书籍,我为了看GCC源代码,买了本《编译系统透视:图解编译原理》。因为工作量太庞大,这个研读过程就先放下了;
  4. 去折腾、重构、编译源代码也是个好方法。

问:如何根据自身需要快速辨别一个开源软件是否适合自己?

答:先想一下你的最基本需求有哪些,就说三点,然后再看看这款开源软件它的特性是否能满足你的这三点需求,这也是我在文章中拟软件特性和要点的原因。

举一个例子,我想找一个特别酷的编辑器,需求点有三个:

  1. 能编程,支持大多数主流编程语言;
  2. 能写文档、支持Markdown等格式;
  3. 能完成我一天大部分的工作。

我选择Emacs,原因如下:

  1. 因为Emacs是迄今为止功能最为强大的文本编辑器,能编写代码、能写文档;
  2. Emacs是模块化的,遵循do one thing, and do it well原则,需要什么就安装什么,你可以像搭积木的方式搭建自己的环境和系统;
  3. Everything Emacs,你可以在Emacs完成你几乎所有的工作:编程、写作、浏览网页、收发邮件、日程、娱乐游戏、它是个人操作系统。

当然,你觉得没有适合自己的,自己可以发起一个开源软件项目,将自己的一个软件作品发布出去。若没有软件作品,也可以将自己心得、整理的文档、博客、各种开放资源以开源项目的方式发布出去,如:开放文档资源索引


问:开源软件有很多,你对每个开源软件都会了解吗?了解到什么程度,而且开源会跨语言、跨平台,请问你如何学习、解决、应对的?

答:对开源软件的关注程度我会在了解、学习、深入等几个方面加以平衡。

  1. 我感兴趣的开源软件,我会从背景、它是什么、为什么是它、应用、开发、部署实施、成功案例、资源等几个方面去大致了解。
  2. 应用到工作中的,我会在第1点这个基础上深入每个环节。
  3. 对生命周期很长的,如操作系统、编译器、数据库等,我会长时间跟进和学习,几年甚至更长时间。
  4. 这么多开源软件、知识、总结等如何管理?我采用的是用Wiki的方式,从2011年我就开始这个工作,每天都会学习、更新自己的学习总结,渐渐的就有了几千个开源软件条目,近4000万的浏览量,有的条目我编辑了几百次,而这个就是我非常关注度的项目,如:PostgreSQL

大家可以通过类似方法总结、整理自己的开源软件知识体系,工作量有些大,更多需要兴趣驱动。


问:怎么开启开源软件源码学习,在没有文档的情况下,又怎么了解开源软件架构?

答:这个问题和问题4很类似,可参考。若作者没有提供架构图的,可试着自己去画一个,若可以,可提交原作者,若他赞同或有修改补充,相信你对此款开源软件的整体架构有了更进一步认识,另外,结合类似印象笔记和Wiki的工具,不断总结你的学习过程。


问:本群的主题是开源软件,和我们平常所说的开源项目(如github)是一回事吗?

答:开源软件和开源项目在这里等同,主要有的开源项目是开放文档或开放硬件设计的。GitHub本身不是开源项目,它是一个托管开源项目进行分布式协作开发的网络平台,它上面托管了大多数热门主流的开源项目。GitHub是寻找、选择开源项目的首选。


问:对于大的开源项目,如何学习和参与?

答:大的开源项目,如操作系统、大数据、云计算平台等,因为涉及东西很多,学习是个很系统、漫长的过程,可参考问题6的学习建议。

大项目,知名度很高,参与的难度会比较高,首先让自己成为编程高手或社区运营高手,通过问题3所提到的8点建议入手。


问:若自己项目要上传到github上,readme.md要写哪些东西可以吸引其他人看我项目,对我的项目能有足够认知?

答:中英文、有简介、快速入门、有图、有案例,许可协议可选Apache或MIT或BSD。另外,参考一些热门项目的介绍。

开源软件许可协议选择。许可证基本考虑:Apache、MIT、BSD、GPL/LGPL等,这几个许可协议应用非常广泛,大家更容易接受和采纳。Apache、MIT、BSD这三个许可协议很相似,都很友好和自由,是首选。

Apache:其主要附加条款就是Apache的商标不与该软件一同授权。因此,如果你对Apache项目的源代码进行了修改并希望发行修改后的版本,你不能把你修改过的软件称为Apache。如:Apache Hadoop的分发版HDP、CDH。

BSD:修改并发布你的软件,却不需要公布你修改后的源代码,BSD许可证允许你将代码私有化并在私有许可证下发布BSD这也是很多防火墙等安全软件基于BSD构建的原因。

MIT:一个没有对代码使用方式有任何限制的许可证,主流的JavaScript项目大多采用MIT许可证,如:Angular、Meteor、Node.js等。

GPL:Linux核心和GNU/Linux各种发行版使用的许可证,此许可证要求对GPL下的代码进行任何修改以及你发布的修改都应该对社区开放,可以说大部分开源软件采用了GPL。

LGPL:是个较宽松的GPL,它用来解决GPL授权库(Library)的问题,如glibc,许多应用程序都依赖这个核心系统运行库,通过在LGPL下授权glibc,商业应用链接到glibc而不用担心该程序被要求在GPL下授权。如果你开发了一个开源软件,也允许商业授权的软件使用你的技术,LGPL是个不错的选择。

另外补充一些大教堂与集市的知识。

大教堂是传统的软件开发模式,开发团队规模较小,在开发开始前,设计和功能要求已全部明确。架构、设计、编码、测试不仅被完全确定,还会被全部写成文档。开发阶段几乎没有循环迭代发布过程,获得外界反馈是在alpha和beta测试阶段,所有人员仅限于公司内部员工。

集市开发会将目前可以完成且实用的功能组成一个版本发布,普遍欠缺一些功能和带有一些缺陷,但没关系,版本的循环发布会非常频繁(常常以小时计算)。采用集市会尽可能早、尽可能频繁地发布软件寻求反馈。任何地方的任何人,只要有好的想法,都可以参与贡献,发现、修复Bug,完善文档,增加新的功能等。当软件维护者认为一切已经准备就绪,就进行正式的发布。GNU/Linux、FreeBSD等重多开源软件,就是通过集式开发模式获得巨大成功的。

GitHub也将集市开发模式推向一个新高度。企业开发思路的转变,要更快的交付产品服务和即时响应客户需求,请采用集市。

给大家提一些学习的建议和总结:

  1. 不要把GitHub作为敏感话题的博客,可作为技术博客;
  2. 广泛和学习各种开源软件,了解的越多越能帮助你更好的选择和判断,但要平衡好自己的工作、兴趣和时间;
  3. 可以从一个非编程的任务开始自己的GitHub之旅,如建立一个技术博客、资源索引,参与已有项目的贡献;
  4. 个人的选型路线:
  5. 企业的选型路线,软件开发和编程语言,不存在谁好谁坏,因为它们都在相互学习也互相都看不起;
  6. 好的程序员之所以出色是因为熟能生巧,想想玩转Emacs的家伙;
  7. 随时都可以学习一门新语言,拓展自己思路,可选择JVM、.NET、Erlang VM虚拟机之上的语言,因为生态系统和相互借鉴;
  8. Lisp和Emacs都是受益终生的投资;
  9. 做技术的不要忘了自嘲:长得一般、做饭一般、家务一般、编程一般……给人一般的感觉,而背后是不一般和惊喜;
  10. 有关数学,每天都浏览一下维基百科,它把数学的整个体系整理的很全;
  11. 多看些非技术类丛书,让自己的思路发散和飘逸,软件需要哲学家,自由社会、自由软件可作为大家的入门书。

本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。


在此感谢异步社区为本次活动提供的赠书《C++Primer Plus(第6版)中文版》。

异步社区是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架。


影响计算机算法世界的十位大师

2017年9月17日 没有评论

原文出处: 《程序员》- 范凯 & 马林,原文写于 2006 年

1、伟大的智者——Don E.Knuth,中文名:高德纳

computer-algorithm-master-01

(1938-)算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来,不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》更是被誉为算法中“真正”的圣经,像KMP和LR(K)这样令人不可思议的算法,在此书比比皆是。难怪连 Bill Gates都说:“如果能做对书里所有的习题,就直接来微软上班吧!”

对于Don E.Knuth本人,一生中获得的奖项和荣誉不计其数,包括图灵奖,美国国家科学金奖,美国数学学会斯蒂尔将(AMS Steel Prize),以及发明先进技术荣获的极受尊重的京都奖(KyotoPrize)等等,写过19部书和160余篇论文,每一篇著作都能用影响深远来形容。 Don E.Knuth也被公认是美国最聪明的人之一。当年他上大学的时候,常写些各种各样的编译器来挣外快,只要是他参加的编程比赛,总是第一名,同时也是世上少有的编程达到40年以上的程序员之一。他除了是技术与科学上的泰斗外,更是无可非议的写作高手,技术文章堪称一绝,文风细腻,讲解透彻,思路清晰而且没有学究气,估计这也是《计算机程序设计艺术》被称为圣经的原因之一。

2、首席算法官Udi Manber

computer-algorithm-master-02

世界上还有如此奇怪的职位?但是对于Amazon乃至Google来说,这一点也不奇怪。Udi Manber,这位前Amazon的“首席算法官”,现在是Google负责工程事务的副总裁。他研究WWW的应用程序、搜索以及隐藏在这背后的算法设计。在此期间,他与其他人共同开发了Agrep、Glimpse和Harvest等Unix上的搜索软件。1998年,Udi成为了Yahoo!的首席科 学家。2002年,Amazon创造性地给了Udi“首席算法官”的职位,和Udi为Amazon的“SearchInside the Book”搜索项目所做的工作相得益彰。

Udi还因为他所著的Introduction to Algorithms——A Creative Approach而被大家称道。

3、谦逊的长者——Edsger Wybe Dijkstra

computer-algorithm-master-03

1930年出生于荷兰阿姆斯特丹,2002年逝世于荷兰纽南。他在祖国荷兰获得数据和物理学学士,理论物理博士学位,2000年退休前一直是美国Texas大学的计算机科学和数学教授。以发现了图论中的最短路径算法(Dijkstra算法)而闻名于世,1972年因为ALGOL第二代编 程语言而获得图灵奖。“Go To StatementConsidered Harmful”(EWD215)也是被广为传颂的经典之作。除了科学研究之外,他最喜欢做的事情就是教学,被人称作“一天教学24小时”的教授。

且不说Dijkstra算法对计算科学,网络科学发展的深远影响,单从他在1972年获得图灵奖时的演讲“The Humble Programmer”就不得不肃然起敬,在获得计算机科学中至高无上的奖项时,Edgs Wybe Dijkstra仍然称自己不过是一个谦逊普通的程序员,何等胸襟,举世之中几人可比。

4、运筹学大师——George Dantizig

computer-algorithm-master-04

可谓是由父亲一手培养出的天才。George的父亲是俄国人,曾在法国师从著名的科学家Henri Poincar e。他曾经这样回忆自己的父亲:“在我还是个中学生时,他就让我做几千道几何题……解决这些问题的大脑训练是父亲给我的最好礼物。这些几何题,在发展我分析能力的过程中,起了最最重要的作用。”

在伯克利学习的时候,有一天George上课迟到,只看到黑板上写着两个问题,他只当是课堂作业,随即将问题抄下来并做出解答。六个月后,这门课的老师 ——著名的统计学家Jerzy Neyman——帮助他把答案整理了一下,发表为论文,George这才发现自己解决了统计学领域中一直悬而未决的两个难题。

George后来在运筹学建树极高,获得了包括“冯诺伊曼理论奖”在内的诸多奖项。他在Linearprogramming and extensions一书中研究了线性编程模型,为计算机语言的发展做出了不可磨灭的贡献。天妒英才,他于2005年5月13日去世。

5、推动时代前进的人——James Cooley

computer-algorithm-master-05

(1926-)美国数学家,哥伦比亚大学的数学博士,以他所创造的快速傅立叶变换(FFT)而著名,不能不说是意义极其重大,FFT的数学意 义不光在于使大家明白了傅立叶(Fourier)变换计算起来是多么容易,而且使得数字信号处理技术取得了突破性的进展,对于现在的网络通信,图形图像处理等等领域的发展与前进奠定了基础。Fourier变化的意义在于将电能变为了工业的命脉,而FFT的意义更是在于他推动了整个社会信息化的进程。在 IBM研究中心中主要从事数字信号处理的研究一直到1992年退休,同时他还是IEEE的数字信号处理委员会的成员。1980年获得ASSP’s Meritorious Service Award,1984年获得ASSP Society Award以及IEEE Centennial Medal。

6、FORTRAN 之父——John Backus

computer-algorithm-master-06

早年在Hill School学习的时候因为讨厌学习,成绩一踏糊涂而不得不在暑假补课。1943年他在父亲的要求下到维吉尼亚大学学习化学,随后参军、照顾头部受伤的伤员、在医学学校学习治疗,可是最后又都放弃了。不过还好,战后Backus进入纽约哥伦比亚大学学习数学,并于1949年毕业。在毕业前夕,他跑到了麦迪逊大街的IBM计算机中心参观。事情凑巧,和导游聊天的时候Backus谈到自己正在找工作,在导游的鼓励下,他和中心一位主管的面谈,成为了一名IBM?的程序员。

在IBM,Backus的才华得到了施展,发明了人类历史上第一个高级语言——FORTRAN。接着,又提出了规范描述编程语言语法的BNF。这位当年的“差生”终于被整个计算机世界肯定——美国计算机协会于1977年授予John Backus图灵奖。

7、实践探索先锋——Jon Bentley

computer-algorithm-master-07

1974年获得了斯坦福大学的学士学位,1976年获得北卡罗莱纳大学的硕士和博士学位。毕业后在卡耐基梅隆大学教授了6年计算机科学课程,1982年进 入贝尔实验室。2001年退休后加入了现在的Avaya实验室,他还曾作为访问学者在西点军校和普林斯顿大学工作。他的研究领域包括编程技术、算法设计、软件工具和界面设计等等。

他写作过三本编程书籍,其中最著名的就是涵盖从算法理论到软件工程各种主题的Programming Pearls(《编程珠玑》),这其实是他发表过的文章的合集。在这些文章里,Jon从工程实现的角度出发,为程序员们提供了一个个艰难问题的解决方案, 犹如一颗颗闪闪发亮的珍珠。Bentley的珍珠超出了可靠工程学的范畴,利用他的洞察力和创造力为那些恼人的问题提供了独特而巧妙的解决方案。

8、Pascal之父——Nicklaus Wirth

computer-algorithm-master-08

如果说有一个人因为一句话而得到了图灵奖,那么这个人应该就是NicklausWirth,这句话就是他提出的著名公式“算法+数据结构=程序”。这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”——一个 公式展示出了程序的本质。

Nicklaus Wirth,1934年出生于瑞士,1963年在加州大学伯克利分校取得博士学位。取得博士学位后直接被以高门槛著称的斯坦福大学聘到刚成立的计算机科学 系工作。在斯坦福大学成功的开发出Algol W以及PL360后,爱国心极强的Nicklaus Wirth于1967年回到祖国瑞士,第二年在他的母校苏黎世工学院他创建与实现了Pascal语言——当时世界上最受欢迎的语言之一。后来他的学生 Philipe Kahn毕业后和Anders Hejlsberg(Delphi之父)创办了Borland公司靠Turbo Pascal起家,很快成为了将Borland发展成为全球最大的开发工作厂商,这一切都不得不说要归工于PASCAL语言的魅力。PASCAL已经影响 了整整几代的程序员,Nicklaus Wirth的思想还将会继续指引现在和以后的程序员前进的方向。

9、算法的讲解者——Robert Sedgewick

computer-algorithm-master-09

是普林斯顿大学的计算机科学教授。他还是Adobe Systems的一名主管,也曾作为访问学者在Xerox PARC、IDA和INRIA工作。他在斯坦福大学获得博士学位。他的著作包括Algorithm in C、Algorithm in C++、Algorithm in Java等系列书籍,这些都再版多次。“没有人能够将算法和数据结构解释得比Robert Sedgewick更清楚易懂了!”很多读过他著作的程序员这样说。

目前Robert正在研究算法设计、数据结构、算法分析等方面的基础理论。他善于通过数学方法评估和预测算法性能,设法发现算法、数据结构的通用机制,例如使用逼近方法寻找更快速更高效的算法。另外,他还将算法和图形学结合 起来,例如使用可视化方法评估算法效率,算法的图形化模拟,用于出版物的高质量算法表现方法等等。

10、计算机领域的爵士——Tony Hoare

computer-algorithm-master-10

1934年出生于英国,1959年博士毕业于俄罗斯莫斯科国立大学,获得语言机器翻译专业学士学位。1960年发布了使他闻名于世的快速排序算法(Quick Sort),这个算法也是当前世界上使用最广泛的算法之一。

Tony Hoare在取得博士学位后,就职于Elliott Brothers,领导了Algol 60第一个商用编译器的设计与开发,由于其出色的成绩,最终成为该公司首席科学家。从1977年开始,Tony Hoare博士任职于牛津大学,投身于计算系统的精确性的研究、设计及开发。因其对Algol 60程序设计语言理论、互动式系统及APL的贡献,1980年被美国计算机协会授予“图灵奖”。

1999年在牛津大学退学后,Tony Hoare博士被微软剑桥研究院聘请担任高级程序员,从事微软剑桥研究院研究生成果的工业化应用的工作,以及协助其它研究人员进行服务于软件产业及用户的长期基础研究项目。2000年因为其在计算机科学与教育上做出的贡献被封为爵士。


分类: Developers, 数学 标签:

odoo:开源 ERP/CRM 入门与实践

2017年9月12日 没有评论

本文是Allen在GitChat技术分享的主题文章

看了这张图,或许你对odoo有了一些兴趣。

enter image description here

这次Chat就是和大家一起交流开源ERP/CRM系统:odoo

对以下读者有帮助:研发、产品、项目、市场、服务、运营、管理等。

一、背景趋势

  1. 社交网络、电商O2O;
  2. 每家企业都将是电子商务企业、精益企业;
  3. 每家企业都需要有套软件管理人、财、物,管理信息量,物流和资金流。

二、odoo是什么

  1. odoo不仅仅是开源ERP/CRM;
  2. 还是一套伴随企业成长可扩展的商业运营支撑系统;
  3. 一个巨大的应用生态系统,有近12500个Apps可供选用。

三、为什么是odoo

  1. 相比商业和其它开源ERP/CRM系统odoo有哪些优势;
  2. 对个人来说:学习成长、开发实践、职业规划;
  3. 对企业来讲:流程梳理、数据沉淀、商业运营。

四、odoo应用

  1. 企业网站、电子商务系统、进销存系统、客户关系系统;
  2. 人力资源系统、项目管理系统、生产制造系统、财务会计系统;
  3. 还有很多的应用系统和广泛的行业应用。

五、odoo开发

  1. 构建新Apps,满足企业个性需求;
  2. 继承、扩展、贡献已有应用,不重复发明轮子;
  3. 开发免费或商业Apps供下载或销售。

六、odoo实施

  1. 官方实施方法论;
  2. 其它服务商的实施方法;
  3. 与客户共同推进的最佳实践。

七、odoo成功案例

  1. 优站精选;
  2. 优选Apps;
  3. 案例分析。

八、odoo文档集和资源

  1. 优选幻灯片、手册、开发、培训文档集;
  2. odoo服务商链接;
  3. odoo开发者链接。

一、背景

当前是大数据、人工智能、云计算的时代,学好 ABC(AI,Big Data,Cloud Computing)走遍天下。

可是,目前大多企业的现状是这样:只有简单的办公软件,缺少一套支撑企业日常运营的业务系统,企业所有的信息都散落在公司的各个员工电脑和和手机里,公司和个人很依赖微信、微博等社交工具。有的公司虽然安装了OA、CRM等系统,但大多业务流程还是分离的,数据没有统一存储和管理。

大多数人每天都会接触到社交网络、社交电商,所以业务支撑系统若能整合这些平台会带来极大的方便和好处。

odoo除了自己提供了完善的电子商务解决方案外,也可集成主流电商解决方案:Magento、PrestaShop、WooCommerce等。

有一些开源项目实验了odoo与微信、微信支付、支付宝的整合。如:

https://github.com/JoneXiong/oejia_wx

enter image description here

enter image description here

enter image description here

在企业的发展过程中,需要信息化的支持和不断完善。企业若没有业务数据沉淀,没有业务流程梳理和优化,企业会很难做好做大。精益企业更需要数字化、流程化、智能化的支撑。每个企业都需要有套信息化运营支撑系统去实施各项业务和流程优化。

通过实施和部署信息化运营支撑系统,帮助企业把人、财、物管理起来,把企业资金流、信息流、物流跑通。别小看这个,国内知名企业华为去年才把上述流程跑通。有篇微信文章《再见了 咨询》提到华为的信息化折腾了20多年,到了2016年才实现“流程基本贯通、账实终于相符”(参见华为轮值CEO徐直军2017新年献词),这其实也就是刚刚做到ERP最核心的内容,财务业务一体化。我想,华为的业务基础,管理水平和员工素质应该是国内领先的,其他企业的信息化应该怎么做,自己想想。所以,我们应该尽早尽快引入企业信息化和ERP运营系统,odoo为我们提供了这种可能。

二、odoo是什么

odoo是一套现代、开源ERP/CRM系统,也是Next Generation MRP Software。

odoo是企业一体化管理软件,一套电商ERP和企业运营支撑系统,odoo伴随企业成长而不断发展。

odoo通过Apps和Connector扩展和集成数以万计的应用和服务,odoo目前有超过12500个Apps可选用。

enter image description here

三、为什么是odoo

再回头看看最开始的那幅图。

我们从以下几个方面进行比较:

  • odoo制造与其它厂商的比较:MRP Comparison White Paper: Microsoft Dynamics AX, Netsuite, Odoo & SAP Business One。
  • odoo CMS与其它开源CMS比较:Open Source CMS A performance comparision
  • odoo与其它开源ERP/CRM比较:iDempiere、Apache OFBiz、Opentaps、Openbravo,odoo模块化、易扩展、巨大的应用市场。其中,最重要的一点是:传统ERP以会计为核心,odoo以客户为中心。

enter image description here

enter image description here

图片取自:

https://www.odoo.com/zh_CN/slides/slide/keynote-odoo-strategy-2015-200

介绍了odoo了一些优势和优点外,我们来看看odoo给个人和企业能带来些什么?

对个人:

首先,可以通过odoo搭建个人主页,有论坛、有博客。

个人在学习和工作中通过引入odoo,学习odoo所涉及的企业运营管理所需要的方方面面的知识,而这些知识对你的工作和职业发展是很有帮助的。

举一个自己的例子:我当时为了学习生产制造ERP系统,花了3000RMB买了一套PowerBuild开发的生产制造系统(含源码)。这套系统非常不错,在东莞和深圳等地有100多家用户。不知这位小哥怎么弄到的,不停的在卖,然后用挣到的钱移民加拿大了,估计现在这哥们在那边快活着,这是10多年前的事。现在,大家要学习使用就不用到处找和花钱购买了,odoo就是个现成的生产制造ERP系统,它可作为你学习、开发、实践的业务支撑系统。我前些年为了学习财务相关知识,也跑到数码城买了一套有加密狗的用友财务系统,现在大家都不需要这样做了,直接安装一个odoo会计模块就可以了。

odoo的文档很好,中、英文都有,大家可无障碍的学习财务、采购、销售、库存、人力资源、成本、零售(POS)等业务知识。

个人觉得这些业务知识对于个人发展是很有帮助的,我们很多时候是不太清楚自己擅长什么,自己今后的路如何走,所以多接触些企业运作的业务知识对自己是会有帮助的。这其中,不少朋友今后都会选择创业,大家有时也会有种错觉,觉得我做好产品和技术就可以了,对如何经营和运作一家公司并不清楚,我以前也是这样认为。其实不是,尤其在中国这个特殊的大环境下,光有些技术和产品是远远不够的。

在这个持续学习的过程中,你可以不断的审视自己,自己在一家企业经营运作过程中,什么角色和职位更适合自己,你需要尝试和调整。

总之,创业不仅仅只有产品和技术,要用全局的视野去看(或者说要有个更高的格局,我们大多数人都不怕吃苦,但往往有时选择比努力更重要)。

对企业:

企业首先可通过odoo拥有一个漂亮的企业网站。

再说说企业要发展好、活下来,需要有很强的商业运营能力,我见过一些企业,其实没有什么技术,但商业运营能力很强,企业活得很好。他们能把一个不怎么样的业务系统不停使用和不断优化,最后打造成公司的赚钱机器,公司对外宣称是个技术公司,实质是个销售型企业,有大量的销售人员和客服。

自己10年前带领团队开发了多个生产制造、电能量管理ERP,那时没有太成熟的开源ERP。我们都是自己从头开发,幸好当时公司有快速开发框架让这些项目能顺利落地。那时若有现在的odoo,我们一定会基于它来做定制开发,大多数企业也都可以这样做,基于odoo定制企业运营支撑系统。

大多企业对流程梳理和数据沉淀都不重视,或者说根本没有。我有个朋友,他有1000多个客户,10几人的公司团队,我问他客户资料都在哪,他说不太清楚,10多年来这些资料散落在不同的电脑设备和各个word文档excel表格里,现在都找不全所有客户资料。虽然现在在使用销售自动化App,但早以错过了很多老客户再次消费的机会和提升用户满意度。

现在你可以使用odoo将你的日常业务数据和信息收集、整理、输入存档到系统里,随着企业规模扩大,人员的增加和业务熟悉,团队不断完善系统,企业内部推行、做好员工培训,帮助大家都用上用好这套系统,系统用得越久、适应的越好,价值也就越大。

我们也都知道实施ERP/CRM是个需要全员一同推动的事情,从最初的喜欢上odoo,到在公司和企业落地,有时需要漫长过程。刚开始,不用一下子就上很多应用,一个个上,一点点来,给自己和企业增强信心,保持连续性,而不是热情几天。

另外,企业ERP和运营支撑系统,是需要不断调整、优化、扩展的,传统和商业ERP,在这点上很困难。而odoo开源、模块化设计,开发维护系统和Apps变得更容易,

四、odoo应用

官方odoo分为社区版和企业版,odoo社区版可以满足你日常大多数业务需求,有些高级点的功能需要时可购买企业版。

先了解下odoo适用于哪些公司和行业:

enter image description here

图片来自:

https://xpansa.com/odoo/odoo-community-vs-odoo-enterprise/

接着看看odoo社区版所提供的应用Apps:

enter image description here

安装odoo,你可以立刻拥有这些应用,接下来我们介绍odoo的一些主要应用:

odoo CMS

  • 企业信息、产品、服务的发布和展示;
  • 为客户和合作伙伴建立的互动社区;
  • 即时的客户响应;
  • 官方博客的发布和维护,不需另外搭建。

enter image description here

odoo CRM

  • 获得精准的预测;
  • 通过出色工具,以更少时间,完成更多工作;
  • 实时概览,对比您的每月目标,准确了解您的表现。根据您安排的下一行动,组织您的工作;
  • 与您的客户保持联系。

销售漏斗有很多形式,列举几个:

enter image description here

enter image description here

enter image description here

(以上图片从bing图片搜索获得,配合内容介绍)

odoo以看板的方式展示销量漏斗模型

enter image description here

我们推荐你使用看板实现销售漏斗:

  • 线索收集(0%)
  • 目标识别(20%)
  • 赢得支持者(40%)
  • 覆盖决策者(70%)
  • 商务谈判(90%)
  • 付款阶段(100%)

odoo eCommerce

  • 企业拥有一个现代化开源网上商店;
  • 网店美观大气、简单易用;
  • 产品自动推荐,提高订单收益;
  • 库存和销售可通过自动库存调整和报告进行维护;
  • 此外,你也可通过Connector连接其它的主流电子商务解决方案:Magento、PrestaShop、WooCommerce.

enter image description here

电子商务应用的一些细节和难点:

odoo eCommerce是个多渠道的电商解决方案,支持零售业(拥有友好的POS系统)。

odoo POS

odoo比较亮点的地方,就是与其它ERP相比,odoo提供了一套商店、餐厅的POS应用和POSBox硬件跨平台解决方案,帮助你高效运营商店、酒吧和餐厅,零售型企业可迅速部署起来。

enter image description here

odoo PM

  • 组织:简单的拖放视图可帮助您在适当的阶段轻松将任务分组;
  • 时间安排:轻松检查团队的计划并重新计划,以便保持在您的截止日期内;
  • 计划:追踪截止日期和项目进展,清晰了解概况;
  • 分析:轻松概览您的工作量和各项任务的状态。

enter image description here

odoo Accounting

  • 与银行同步:自动同步银行对账单与银行数据,或导入文档。
  • 开具发票:以销售订单、交货单或以时间和材料为基础,自动创建并发送专业发票并接收在线付款。
  • 管理账单和开支:控制供应商发票并对您未来需要支付的账单进行清晰预测。
  • 对账:通过我们的智能对账工具,节约时间并自动进行 95% 的对账。
  • 报表:损益表、资产负债表、现金流量表。
  • 分析销售额:通过动态和自定义统计面板直接访问关键信息。按产品、客户、销售人员等定义并分析发票。
  • 状态:利用状态概览帮助追踪发票草稿、已付和未付的发票。 通过从银行账户导入银行结单并对账,自动记录所有交易。
  • 开支:管理每个团队的开支和员工的日常开支。

enter image description here

在这个环节,我们介绍两个主要内容:会计恒等式、复式记账

会计恒等式是财务报表结构的基础,也是会计体系运行的定律。复式记账是会计的精髓,会计恒等式和复式记账的结合,形成了现代的会计体系。

资产、负债、所有者权益、收入、费用、利润六大会计要素,满足两个会计等式:

  • 资产 = 负债 + 所有者权益
  • 收入 – 费用 = 利润

复式记账就是一笔业务必须在两个地方同时记录。如:一家商店某日商品销售收入2万元,如何记录:

  • 借:库存现金 20000
  • 贷:商品销售收入 20000

有借必有贷,借贷必相等。借方为去向(去到什么资产项目),贷方为来源(这钱是怎么来的)。

  • 资产类的、成本类、费用类的会计科目在核算时,增加计借方,减少计贷方。
  • 负债类、所有者权益类、收入类的会计科目在核算时,增加计贷方,减少计借方。

财务会计处理,大体上需要经历证、账、表三个环节。

(以上会计内容来自:零基础学会计(财务知识轻松学)Kindle版)

odoo HR

  • 集中管理企业所有的HR工作和信息;
  • 招聘、分配、工时表、出勤、评价、休假、费用信息一目了然;
  • 追踪员工工作时数并按项目、客户或任务进行排序。轻松访问统计数据,记录并分析工时表并检查每位员工的出勤情况;
  • 费用审批和报销,精简开支管理;
  • 员工评估流程的自动化;
  • 发布职位信息,创建筛选问卷,自动与求职者记录关联,简化招聘流程;
  • 通过社交网络互动改善员工之间的沟通,通过奖励激励员工。

enter image description here

odoo ERP/MRP

  • 库存降低;
  • 物料成本降低;
  • 人工成本减少;
  • 客户服务和销售改善;
  • 会计控制改善。

通过实施odoo MRP,打造企业精益生产,帮助企业逐步走向精益企业之路。

enter image description here

enter image description here

一些细节和难点:

  • 采购询价(RFQ),采购招标(PT)还是采购订单(PO)?
  • 选择正确的补货策略:最小库存规则、按单补货。

最小库存规则:用于确保你已经有了制造和响应消费需求的最小库存量。当某产品的库存水平到达最小量时,系统自动生成一个采购订单,该订单的数量能满足最小库存量。

按单补货:触发与产品相关的销售订单的采购单,系统不会检查现有库存。这就意味着无论现有产品的数量是多少,都会生成一个采购订单草稿。

此外,在OCA上,有这样一些解决方案

五、odoo开发

对于odoo开发,有几个核心点要了解和掌握:

开发企业自身的Apps,满足个性需求,你也可以将其卖钱或开源出去。

围绕odoo的一些开发服务:

  • 平台开发:基于odoo源代码持续构建一个自己的平台
  • 平台部署:持续集成、持续交付
  • 个性化功能开发:odoo应用开发
  • 移动应用开发: iOS、Android App开发
  • 数据分析:数据分析门户
  • 主题开发:网站前端和后端样式
  • API集成:统一的API管理和治理
  • 电子商务集成:集成主流电子商务平台
  • 整合第三方用户认证:支持QQ、微信、支付宝等社交账号登录
  • 整合第三方支付:集成微信支付、支付宝

Odoo Community Association(OCA)给出了一个很好的参与odoo社区贡献的方法和指南,Odoo Apps市场上也有很多OCA提交的应用

通过Odoo Connector集成第三方应用和服务:如:Magento Prestashop, Salesforce, JIRA …

我们接下来会开发Odoo Mobile(iOS,Android)应用和微信小程序。

在这里,我们先给出一个非常简单的例子(自己先感受下):creaetwebpagedemo

  • 下载解压到addons目录下
  • 开启开发者模式
  • 在应用中找到createwebpagedemo模块,点击安装
  • 浏览器访问:http://localhost:8069/example

接下来,就是持续开发Module和Hack Odoo。

六、odoo实施

比如下面这个实施步骤:帮助企业逐步建立起内容管理、客户服务、进销存、电子商务、ERP的技术储备和运营能力:

  • CMS
  • Intranet/Comunity
  • 进销存
  • E-Commerce(包含3)
  • ERP

enter image description here

每个核心App都有相应的实施步骤:

odoo官方提供的实施方案:

enter image description here

比如开始实施你的CMS(网站):

enter image description here

财务会计实施指南, 具体步骤有:

  • 完善你的公司设置
  • 输入你的银行账户
  • 选择你的科目表
  • 确认常用税率
  • 设置外币
  • 导入你的客户
  • 导入你的供应商
  • 导入你的产品
  • 导入你的未清账款交易
  • 导入你的起始余额
  • 为会计定义用户

还有其它Apps的实施向导。

odoo有社区版和企业版之分,相应的在实施方法和流程上会有些差异。

enter image description here

https://xpansa.com/odoo/odoo-community-vs-odoo-enterprise/

除了odoo外,我们也简单了解一下SAP和Oracle的实施方法论。

enter image description here

enter image description here

Oracle JDE实施方法论。

enter image description here

大家可看出,ERP实施方法大体都差不多,所以掌握实施的核心方法和要点就很关键。

enter image description here

  • 迪威特科技

enter image description here

  • 广州尚鹏

enter image description here

  • 上海寰享实施方案:SaaS服务方案包含一个或多个Odoo标准模块或应用,能一周上线使用。服务包括:设置、数据导入、培训、上线和支持。

enter image description here

综上:

  • 大家可使用odoo供应商的SaaS服务(目前国内的odoo供应商都比较小,SaaS服务质量能否保证需要重点评估);
  • 搭建自己的SaaS平台(需要有技术和保障团队);
  • 供应商提供咨询顾问和企业组成开发实施团队,共同推动项目发展。

最佳实践:适合企业自身的才是最好的,我们可以参考官方和同行做法,最大可能的避免犯错和提高实施成功率。

七、odoo成功案例

优站精选

ps: 很多网店使用odoo构建,所以你可放心基于odoo构建你的电子商务平台。

优选Apps

下载这些Apps,安装体验下。

案例分析

八、odoo文档集和资源

参考资料

国内外odoo开发商/服务商

开发者链接:

文章内容有点多,谢谢你耐心看完。


数学的深渊,你在哪里?

2017年8月8日 没有评论

喜欢数学的同学,可收藏 :)


分类: 数学 标签:

在开源项目中如何学习的主题交流

2017年8月2日 没有评论

2017年7月31日,周一晚上8点30分。Allen带来了主题为《如何在开源项目中学到更多》的交流。以下是主持人如梦初醒整理的问答实录,记录了作者和读者问答的时刻。

内容提要:

  • 开源软件是不是不能卖钱?
  • 维基百科和谷歌好用是好用,但我的经验是,只有你明确了解到一个关键词,去按图索骥的效果才比较好。请问你在搜索的提取关键词上,有什么心得吗?
  • 很多问题在官方文档上有写。可问题在于,有些写得不那么明显的问题,是不能直接找到答案的。还有一些则是属于知识与知识之间暗的部分,新人就是在这里有所缺失,才令他无法直接从官方文档中提取到想要的信息。对这方面的问题,如何通过提问的方式让有经验的人解答?这里的要点是什么?
  • 为什么灰狐网站上可以存在大量高质量的文档,如何收集整理的?
  • 开源软件如何赚钱,以及避免被别人无偿拿走赚钱,心态该如何调整?
  • 如何完整的学习一个开源项目,例如docker,并把它用到工作中?
  • 你参加过哪些比较好的开源会议?一般是在哪里得知这些消息的?
  • 如果要从事开源项目的话,一个人的精力毕竟是有限的,那么如何最大程度吸引其他人也参与到自己的开源项目里?又如何与这些志同道合的开发者建立良好的关系?
  • 把公司项目来源会不会有法律上面问题?
  • 请问开源的界限在哪里?比如我认为一个开源项目中某一个功能实现的思路很好,就在我自己的项目中按这种思路实现了,那这样是否必须在我的项目中注明引用?

问:开源软件是不是不能卖钱?

答:需要根据不同的开源许可协议,你可以在开源软件的基础上集成分发一个商业版本进行销售。如:大数据Hadoop和云平台OpenStack都有多个商业分发版。都在卖钱,而且这些公司活得很好。目前,Apache v2的许可协议商业非常友好。


问:维基百科和谷歌好用是好用,但我的经验是,只有你明确了解到一个关键词,去按图索骥的效果才比较好。请问你在搜索的提取关键词上,有什么心得吗?

答:我大致的方法:使用多个搜索引擎,对比搜索结果,然后整合维基、Twitter、知乎、开源项目文档等信息,并使用wiki和teambition等很多工具帮助我管理相关信息。我个人体会,从我的角度来看知乎可作为维基百科的深度补充。做技术的需要有身翻墙本领。

https://github.com/getlantern/lantern, 蓝灯,可用。


问:很多问题在官方文档上有写。可问题在于,有些写得不那么明显的问题,是不能直接找到答案的。还有一些则是属于知识与知识之间暗的部分,新人就是在这里有所缺失,才令他无法直接从官方文档中提取到想要的信息。如何通过提问的方式让有经验的人解答?这里的要点是什么?

答:我个人体会,首先看官方文档,在这个基础上,再搜索一下有没有类似的问题已经被其它人提及并得以解决。若没有,就自己先动手实践。其实,很多常见问题可通过不停实践加以解决。另外,在选型开源项目时,官方的文档也是一个重要的选型指标。

建议:新人,大家刚接触一个新事物新东西,都会是这个状态。多看文档和多实践、先跳过新人这个阶段。


问:为什么灰狐网站上可以存在大量高质量的文档,如何收集整理的?

答:我收集整理这些文档,有10几年了。当时,只是为了方便自己查找,后来也给大家带来很多方便,就不停做这件事,现在有400多个G的文档内容。举个例子:很多网站下一个ppt,需要注册、积分等,灰狐网站上的所有信息,全部可以直接访问和下载。我会注意版权方面的问题,收集的都是自由、开放的资源。


问:开源软件如何赚钱,以及避免被别人无偿拿走赚钱,心态该如何调整?

答:开源了,就保持开放心态。有人用、有人clone分支、拿去赚钱,你应该感到开心。这个时代变了,好的开源软件太多太多,有人看上你的开源项目,你就开心吧。我经常给自己和团队成员讲,有人关注和使用你的开源软件,是给你脸、给面子。想想看,一个开源软件无人问津是痛苦的一件事,就像一个大姑娘走出去没人搭理一样。

开源软件如何赚钱,学习Redhat、OpenStack和Hadoop商业公司的做法。在开源软件的基础上做商业版、企业版,深耕领域,做好服务。若个人,就做相关服务、插件、扩展、皮肤等。如:网站Theme就是一个不错的商业模式。最近很好的王者荣耀卖皮肤的商业模式,你可借鉴,给开源项目更好用的交互界面和样式等。


问:如何完整的学习一个开源项目,例如docker,并把它用到工作中?

答:开源项目最好的学习过程就是把它用起来,因为在用的过程中能发现很多问题,公司现在没用,就自己先实验。

我个人的学习一个开源项目路径:先拉通看遍文档、安装环境、读源代码、做笔记、找一个应用方向做实践;推动自己所在公司采用此项目,进行更大规模的实践。若自己时间充裕,可参与项目,补充文档、中文翻译、Bug提交等等。


问:你参加过哪些比较好的开源会议?一般是在哪里得知这些消息的?

答:因为我在成都,若成都有相关的开源会议,我基本都会去参加。因为喜欢,多交些朋友。北上广,开源会议很多,最近刚结束的OpenStack中国就非常棒,估计群里有人刚参加过。

信息来源:infoq、开源中国、微信公众号(搜自己感兴趣的开源项目,有关活动它都会推)等。


问:如果要从事开源项目的话,一个人的精力毕竟是有限的,那么如何最大程度吸引其他人也参与到自己的开源项目里?又如何与这些志同道合的开发者建立良好的关系?

答:首先,你的项目有好的发展方向,先搜索一遍开源圈,不要重复发明轮子。你也可考虑在一个不错的开源项目基础上做扩展和增强,不用从零做起。从零做起,时间周期很长。开源项目很讲究社区运营,这里有一些参考:OpenStack,Apache,Python等基金会运做方式。个人建议,先让自己参与一个存在的开源项目里,做贡献,最后成为commiter。然后熟悉整个过程后,再启动自己的开源项目,这样项目容易成功。

若你做Java,想努力成为一个很不错的开发者,可参与到Apache基金会的一个项目,有近100个Java项目,可选择一个,从bug提交、文档、测试环节入手。不要从Apache热门项目入手,可先从一个稍微冷一点的项目入手。

把这些开发流程和社区运营理顺后再考虑。另外,还有要根据自己特点和优势,若编码很厉害,就努力成为已有项目的开发者也是不错的发展方式,不一定一定要自己启动一个开源项目。开源项目要成功运营也很重要,而你擅长编码就做开发者。


问:把公司项目来源会不会有法律上面问题?

答:若公司内部项目都是自己公司的就不存在法律问题。若有其他公司的版权就存在,这也是当时OpenSolaris迟迟开源的一个重要原因。公司若开源,选择Apache v2许可不错,它商业很友好。


问:请问开源的界限在哪里?比如我认为一个开源项目中某一个功能实现的思路很好,就在我自己的项目中按这种思路实现了,那这样是否必须在我的项目中注明引用?

答:若有代码引用,就注明遵循许可协议。若是借鉴思路,为表感谢,可在项目中写明从何处借鉴。一个基本思路:就是尊重开发者和原作者。相互尊重、彼此信任,能更好的推动开源项目发展。多泡泡Debian,OpenStack,Apache,GNU等社区,多感受下。


如何在开源项目中学到更多

2017年8月2日 没有评论

当前,开源、开放、协作、分享,已成业界共识,开源软件成为软件交付的主要方式。互联网巨头们都在各自领域打造自己的开源生态系统,Google的Android已经是全球最大智能手机生态系统。它的Kubernetes、TensorFlow也有望成为容器时代和机器学习的Android。Facebook、Amazon、Microsoft、国内的互联网巨头也紧随其后,纷纷布局自己的开源生态系统。这股潮流还将继续下去,对于我们大多数人,如何跟上脚步也就变得异常重要,本期话题就试着从以下几个方面与大家进行探讨:

一、懂得协作:维基百科, Apache, GNU/Linux, OpenStack 基金会的成功经验

 

维基百科大家应该都比较熟悉,经常查资料,它也是我每天用得最多的服务。

维基百科是一个现象,是互联网大规模协作的先驱。

维基百科证实了大规模协作是如何改变一切的,也衍生出一种新的经济形态:维基经济学,它对商业社区产生深远影响。

维基经济学是一门新的科学和艺术:它以四个新法则为基础:开放、对等、共享、全球运作。

最近非常火的共享经济,可以说是维基经济学更大规模的商业实践,GitHub正通过协作方式汇集全球程序员的智慧。

GNU/Linux

自由、开源的代名词,也是有史以来最成功、影响最深远的开源生态系统。

大家平时可关注和使用Linux两大类发行版:Debian/Ubuntu和Redhat/CentOS。

我个人最喜欢的是Debian,因为它的社群契约和愿景,庞大的生态系统(超过51000个软件包),还因为它的标识。

大家可想想为什么是Debian和炉石传说? ​​​​

 因为生命轮回 :)

Apache基金会

历史悠久, 因为Apache Web Server而闻名,曾是全球最广泛使用的Web Server。尽管有Nginx和Microsoft的更多选择,但Apache依旧是Web普适性的代表。

https://news.netcraft.com/archives/category/web-server-survey/

ps: Google的服务器数量有多少?这一直是个谜。

Doug Cutting 在 1999编写了 Lucene,2001加入Apache Jakarta项目,2005成为Apache顶级项目。 Apache Solr 2010加入Lucene子项目,这个一个著名开源搜索引擎项目。2006,Hadoop从Apache Nutch(lucene子项目)启动并开启Hadoop大数据时代。Yahoo在这两个项目扮演重要角色,是最大的贡献者,可惜现在没有Yahoo了。在过去的这10年,开源搜索引擎和大数据在全球范围内大规模部署和运营,并取得巨大成功。

现在围绕Hadoop大数据生态的Apache开源项目有几十个,非常的丰富。几乎可以这样说,你做大数据,一定绕不过Apache项目。

大家可关注两个主要Hadoop发行版,快速体验和了解大数据生态系统。

Hortonworks HDP和Cloudera CDH

OpenStack基金会

2010开源,2017年几乎成为这个星球上发展最快、最大规模的开源项目,仅次于Linux的第二大开源社区。我们都知道云平台在整个互联网和IT工业的重要性,它是基石。OpenStack目前是开源云平台的事实标准,它的发展和想象空间无比巨大。最近与Kubernetes的深度整合,将开启一个全新的时代。

(图片来自:http://www.easystack.cn/escontainer/)

这几个基金会都发展的异常成功,我们需要多想想和仔细思考,如何将自己的职业、工作与开源生态更好的规划下,

下面是一些参考和建议:

《大教堂与集市》是开源运动的《圣经》,颠覆了传统的软件开发思路,影响了整个软件开发领域。 《Apache基金会的运营之道》企业已把自己的开源项目提交Apache并成功孵化升级为顶级项目作为自身开源战略的最佳路线。

一个很核心的原则:ASF不允许企业直接参与Apache项目管理或相关的治理活动。ASF厂商中立,参与仅限于个人,不参杂任何的关系和雇佣状态。

二、学习编程:C++, Java, Python

 

对语言的选择,我们没有偏见,选择适合自己的就是最好的。

我倾向C++、Java、Python三种语言,其实,我对 Fortran、Lisp、Erlang也独有情钟,对它们充满好奇、敬畏与热爱 :)

先说说为什么选择C++、Java、Python这三种语言,因为它们最具代表性。

ps:我们把C/C++放在一起(常常一同使用),所以这三大类语言是目前编程语言前三甲,也是Google的三大官方语言。选择它们,有保障。

此外,还有很多语言值得关注,刚才说的C++、Java、Python可以理解为服务端语言。那平时我们用得最多的App,大家可多多关注和实践Swift、Kotlin,它们是iOS和Android的官方语言,代表着未来。同时,它们有趣,也很有价值。

对于Java,我更多想表达的是JVM生态:Clojure、Scala、Kotlin、Java …

关于语言和相关开源项目,可以更多关注GitHub上的 enter image description here

这是优秀、活跃开源项目的大本营:https://github.com/sindresorhus/awesome 非常非常多,够你学习一辈子的。

C/C++多开发系统支撑软件和编程语言,如:数据库:MySQL、MongoDB;编译器;GCC、LLVM;人工智能:TensorFlow、MXNet;编程语言虚拟机:Swift、OpenJDK HotSpot、HHVM

http://wiki.huihoo.com/wiki/C%2B%2B_ecosystem

Java/JVM撑起了大数据整个基础设施,可关注主要发行版:Hortonworks(HDP)、Cloudera(CDP) 它们都融合Spark。

http://wiki.huihoo.com/wiki/Java_ecosystem

Python是数据分析的首选语言,也是系统粘合剂。

Python完成端到端的开发,从云端到万物互联的终端,Python是全栈开发语言。

Python不仅在云平台(OpenStack)、数据分析站稳了脚,也在物联网全栈开发找到了另一片天地,Python也是物联网系统的胶水语言。

参考:

Python 物联网全栈开发经验教训共享

http://wiki.huihoo.com/wiki/Python_ecosystem

此外,因为JVM和Spark,因为静态类型和函数式编程,Scala具有成为数据科学主导语言的潜力。所以,Python之外,Scala你应该更多关注。

IBM在Spark的发展思路是将Spark视为数据分析的操作系统,Spark发行版可多关注:Databricks。 GrowingIO 技术栈是 Scala, Play, Spark, Kafka, HBase, Elasticsearch

这里也产生了一种商业模式:Apache开源项目的分发版,当然这里对团队和开发者有极高的要求。Apache的每一个顶级项目,都可能通过再分发一个商业版本而获得成功。Hortonworks和Cloudera就是这样的成功代表,OpenStack的商业版本也成就了数家公司。

我自己的机器学习和数据挖掘是从Scikit-learn和Weka入手的,我现在虽没有类似GPU和FPGA的设备,做不了Google、Facebook那样的实验,但我可以先从理论和算法入手,Scikit-learn和Weka提供了很便捷的方式。另外Deeplearning4j可多关注,因为JVM是最大的开发者阵营,而DL4J为JVM生态提供了深度学习解决方案,能快速的融合这个生态。而且DL4J的文档也非常棒,可作为深度学习教科书。

最近我们发起了 Deep learning on HDP 开源项目,它是在HDP大数据平台上开发、部署、运营深度学习基础设施,希望更好融合深度学习和大数据。 ps: 项目思路也适合Cloudera(CDP)等其它Hadoop发行版。

我们基于Apache、OpenStack、GNU/Linux都有很多的实践。

之前一次电商创业项目,我们基于Apache OFBiz和OpenStack,打造了一个全开放的O2O电商平台,网上商城 + 20间实体店。

这是当时的一份技术分享的资料:百货购OFBiz实践,供大家参考。

最后你可关注我们现在努力推动的三个开源项目(MED),也欢迎大家参与,所有项目都开源开放:

M3 营销:市场营销和用户增长:增长用户、增加收入。

E3 应用:企业应用和电商平台:理顺企业业务,沉淀业务数据。

D3 数据:数据分析和机器学习:洞悉数据,增强智能。

做互联网和IT行业,我们从事的技术工作,主要要解决的就是算法、数据、算力三个核心问题。

算法,这个比较偏重个人,涉及编程和数学等知识和技能,自己可通过长时间的积累和实践逐渐丰富和提升。

数据,在大厂这个问题能很好解决,若没在,就需要自己到处收集数据和爬数据。多添置些硬件、一有空就开启爬虫、收集开放数据。通过这些数据去实践数据挖掘、机器学习等实验。

算力,有了编程语言、算法、数据等软资产外,我们还需要更多更强的硬件设备。在大厂这个问题也迎刃而解,若是个人和小团队,就自己Diy机器、攒设备了。

同时,我们发起了一个开源项目:Super Compute Project

本项目意在将超级计算平民化,程序员、初创团队都可拥有自己的小型计算集群和桌面超级计算机,拥有自己的算力。

你可尝试搭建一个树莓派超级计算机,子弹(钱)多些的,可搭建一个Mac Mini集群(堆叠个10台Mini,家里的电源应该可以支撑)。

钱再宽裕的,就DIy自己的GPU、FPGA集群。

一些技术参考,大家可访问灰狐百科资源索引。

https://github.com/huihoo/wiki

三、学会运营:社交网络、增长黑客、数据挖掘

 

社交网络、邮件营销、磁力营销等病毒营销相关概念,连同搜索引擎优化、众包、协作等,共同构成了“黑客增长术”的概念。

是否懂得运用黑客增长术和如何研发产品服务将同等重要。

图片来自:https://www.biaodianfu.com/growth-hacking.html

类似这样的定义还有很多,简单讲增长黑客是个跨界人才。是游走在产品、运营、研发、设计、用研等环节间的多面手,是介于极客、发明家和广告狂人之间的角色,是个复合型人才。

增长黑客要干什么事?增长目标给出了答案:

(图片来自:slidemodel.com)

AARRR转化漏斗模型:Acquisition(获取用户)、Activation(激发活跃)、Retention(提高留存)、Revenue(增加收入)、Referral(传播推荐)

大家可依照这5个环节,进行一次次实操,逐渐形成自己的最佳实践,创建属于自己的增长模型。

有了这些模型目标,我们需要借助一些工具帮助我们达成目标。

因为一切用数据说话,所以增长黑客最核心的就是数据分析工具。

工具有很多,这里推荐新媒体运营的“增长黑客”数据分析工具箱

知乎上数据分析工具的讨论:

https://www.zhihu.com/topic/19569775/hot

从我个人的角度来看,NLP是数据挖掘最直接和广泛的应用范畴,也是你进入人工智能领域一个非常好的切入点,它所需要的各类成本也相对较低(如硬件等),而且我们每天接触最多的也是各种媒体内容,当然现在视频内容也非常多,所以计算机视觉你也可更多关注。

参考:《社交网站的数据挖掘与分析》

有了目标和工具,接下来就是开干。我推荐的几个数据分析方向,供大家参考:

英雄联盟的数据分析

除了自己使用和搭建数据分析环境外,也可借助外部的SaaS服务快速切入增长黑客领域。

  • GrowingIO为产品和运营打造的数据分析服务。
  • 网易七鱼 以云客服为核心,较为传统。

四、模仿大牛:自由软件和开源圈是技术大牛们出没的地方, GitHub,技术会议

GitHub和各类开源基金会聚焦了众多的技术大牛,去找找他们,技术会议让你有机会近距离和大牛交流。

知乎这几年发展迅猛,大量牛人、大咖纷纷入驻,直接关注他们。知乎的话题质量很高,是对维基百科的深度补充。

我关注的部分技术牛人,供参考:

另外,有关增长黑客,知乎上可关注他们:

五、享受人生:自由、开放、协作、分享

 

自由、开放、协作、分享这是灰狐的发展理念,这个理念很多年前就作为我们行事的准则,如何更好达成,我们也在不断实践和探索中。

自由

现实世界,自由不易。对我们来讲,获得自由意味着更多。

我们希望自己和更多人都能过上自由的生活。

虽然,现实很残酷,但理想不变。

我们会不断践行各种自由形态下的自由工作、自由学习、自由生活。

开放

开放心态、开放业务和基础架构、抱团取暖。大家想想看,若没有类似OpenStack云平台和Hadoop大数据这样的开源平台,我们普通人和一般公司是很难切入这些领域的,单独一家公司也是几乎不可能开发出这样规模的软件堆栈的。

对人和事,我们都需要保持开放包容的心态,不轻易否定一个人和一件事,去融合平衡好周围的人和事。

这里有我6年前写得一篇博客《从开源到开放,新的商业模式》供大家参考。

协作

这是个协作的时代,我们崇拜天才、英雄,但现在已不再是一个人的时代了。 所有的商业和组织都在寻找高效的协作方式,因为协作正在改变世界。

分享

生命即为分享 Life is for sharing 我们相信人的天性是乐于分享的 – Share and Enjoy!

共享经济其实也可以简单理解为一种分享经济。

好了,就先分享到这,谢谢大家。接下来,期待与你的更多交流与协作。