这是FreeCodeCamp其中一篇文章,趁着学习英文的时间,翻译这篇文章,其中讲到作者创建FCC过程,本文属于原创,第一次翻译,翻译还有诸多不足之处,请大家包含。

原文地址:https://medium.freecodecamp.com/transparency-in-action-free-code-camp-is-now-open-source-9dae1985d925?gi=a0f3f763f735#.gzz9xmlvl

 

透明行动:Free Code Camp 现在开源了

  现在我们非常激动地宣布Free Code Camp完全开源了。你可以fork我们的代码库,用它来创建一个属于你自己的交流学习网站。如果你发现一个bug或者想到一个提升FCC的方法,你可以即刻行动,提交你的请求。

我们的代码

我最初是用Ruby on Rails建立FCC的,因为用着它很舒服。但是现在很明显javscript才是未来。Node.js和Express.js这些新工具已经可以把FCC整合到一个完全javascript的栈了,确切来说,很多学校和公司正在做这件事。FCC正在帮助勤奋的人们消除杂念,集中精力于学习一个自用的工具集。如果一个代码库不支持javascript,它会发出错误,因此我们学习了全栈的javascirpt。之后我如在刀尖漫步中废除了Rails 应用,学习足够多的异步Node.js知识,来开始搭建FCC。

图片1:我建立FCC 0.1.0 的小办公室

我评判了Meteor.js 和 Mean.js ,(在Mean.io分支出现之前这样做是正确的),甚至考虑只使用angular.js来做Google App Engine的后端。但是由于Hackathon Starter App的认证套件、集成API和本身的框架,最终我决定使用它。

不久后,我启动了FCC,那时候里面没有超过五个编码挑战,还有一个叫HipChat 聊天室。慢慢地,人们开始访问我的网站。我很吃惊,因为大部分人都选择驻足观看。

图片2:从开始搭建到10周后,FCC长成这个样子

FCC是我的第一个Node.js应用。我将代码展示给一位js大牛看,他翻阅我的代码库后,嚷嚷对我说,“你在想什么鬼?” 。不过老司机说FCC也不是太糟糕,毕竟它一天内打开上千个页面不崩溃。

所以我们安装了Helmet.js来增加安全性,把API密钥放入a.nev文件中,来清理git的历史线。看,精准化的代码现在可以免费使用了。

我们的基础设施

之前我们只是使用一个免费的Heroku dyno云平台,直到网站偶尔出现超过20个并发会话后,我们增至两个,需要35刀一个月。我们通过amazon S3来服务图片、视频、音乐、文档这些资产,为我们有发言权的论坛实现一个小小的AWS实例。我们每一年花费在Vimeo Pro和Screen Hero 上是240刀,一个独立的企业级Google Apps 是60刀。所有的这些基础设施,每年花费不超过2000刀。

我们的志愿者和训练营的指导员

我们是一群热衷学习代码的人,我们自称“代码训练者”。其中一部分人甚至更加勤奋,因为我们志愿用自己的时间来积极改进FCC上。我们的训练营的指导员团队会逛聊天室、论坛,会尽我们最大努力欢迎新同学和回答各类代码问题。我们唯一的目标是想让更多像我们一样,用自己方式通过挑战的人加入我们,共同创建一个非营利性的投资项目,然后获得一份工作。

图片3:提问者们以及热心的指导员

没有人会获得报酬。如果我们最终接受投资或者通过项目合作来赚钱,我们会找出一条公平、公开的方式给我们的志愿者发行股票、给他们发工资。我们大部分交流通过聊天室和频繁地组对来编程。虽然我们身处异地,但是只要有可能,我们就会见面。我们的指导员会提出新的特点和内容、讨论其优先级和细节,然后配对,开始建立。举个例子,这篇博客帖子,已经被几个辅导员编辑和校对过了。

我们的目标

不到3个月的时间,我们发展到接近5000个成员。但是真正让我们自豪的是成员的质量而不是数量。将宝贵的时间投入到编码上的他们,有的是参加工作的,有的是学生,有的是孩子,有的甚至是孙子女辈的。在三周前,我们彻底颠覆我们的课程,从那以后,成百上千的人通过我们的小时挑战。我们将所有公共有用的指标放在这里。作为边注,如果你对分析匿名数据感兴趣,或者想帮助我们更好地显示它,欢迎你来推动它。

我们的展望

不要期望任何形式的秘密启动仪式或者宏大的的开幕式。我们更感兴趣的是在公共场合中进步,就像互联网一样 ,然后像原子弹爆炸一样做一个爆炸性的登场。我们相信开源的副歌说的,“给予足够多的眼球,所有的错误都是肤浅的”,并且欢迎任何能让FCC更好、更有效率地学习编码的建议。

最后,我更喜欢把FCC的哲学与Ubuntu的哲学进行比较。不是促进了互联网的Ubuntu Linux发行版,而是跟它同名的非洲南部的Ubuntu 哲学。Ubuntu是一个祖鲁语,大致意思是,“我就是我,因为我们都是”。

莱伊曼·古博薇,利比里亚和平活动人士和诺贝尔和平奖得主,负责最被广泛接受的Ubuntu的英文定义。

FCC就是FCC,因为我们都是代码训练者。勤奋的人帮助其他人学习编程,使得我们不断进步。

  

尝试自己翻译了FreeCodeCamp的文章,技术方面多认识了几种技术,文章标题:Transparency in Action Free Code Camp is Now Open Source的更多相关文章

  1. IT软件人员的技术学习内容(写给技术迷茫中的你) - 项目管理系列文章

    前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想 ...

  2. 现在学习 JavaScript 的哪种技术更好:Angular、jQuery 还是 Node.js?(转)

    本文选自<开发者头条>1 月 7 日最受欢迎文章 Top 3,感谢作者 @WEB资源网 分享. 欢迎分享:http://toutiao.io/contribute 这是一个发布在 Quor ...

  3. 搞懂分布式技术21:浅谈分布式消息技术 Kafka

    搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topi ...

  4. 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术

    在前一篇文章 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术. 1 底层热替换原理 在各种 Android 热修复方案中 ...

  5. 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!

    第一部分:Html5市场的力量 我们太忽略Html5的市场力量了.如果你把Html5当作一种技术,就大错特错了!忘掉你的产品,忘掉你的技术,想想移动时代的信息传播和消费场景.作为2B,我们实在是没有重 ...

  6. 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展

    导读:技术人员的常态是“左手支持业务签单,右手提升系统性能”,却经常陷入技术和业务该如何平衡发展的困惑?今天,且听一位硅谷牛人分享他的平衡之道. 以个人名誉申请31个国内外技术和产品专利,中国最佳CT ...

  7. J2EE的十三种技术——JNDI

    背景: 上一篇博客中介绍了J2EE的十三种技术之一--JDBC,主要用于提供了统一访问多种数据库的方式.这篇文章我们继续介绍J2EE的技术--JNDI. JNDI: Java Naming and D ...

  8. 深入探索Android热修复技术原理读书笔记 —— 资源热修复技术

    该系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 1 普遍的实现方式 Android资源的热修复,就 ...

  9. 🏆【Alibaba微服务技术系列】「Dubbo3.0技术专题」回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)

    RPC服务 什么叫RPC? RPC[Remote Procedure Call]是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范.它允许程序调用另一个地址空间(通常是共享网络的另 ...

随机推荐

  1. jwplayer播放器停止 单页内多个jwplayer对象停止问题

    单页内多个jwplayer对象停止问题,一直没有找到单页内多个jwplayer播放器停止问题,点击其中一个停止其他播放器; 整个播放代码Remove(),这样就可以停止了,也在ie下防止暂停不了.重音 ...

  2. python备忘

    1.引用已经编写好的.py文件(Windows系统) >>>import sys >>>sys.path.append("C:/python") ...

  3. IL指令详细

    名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...

  4. WCF创建RESTService

    这篇博客将介绍在WCF中创建REST服务相关内容.首先先看一下的项目结构: Contract,Service两个工程为类库工程,需要添加System.ServiceModel, System.Serv ...

  5. 【leetcode】Climbing Stairs

    题目简述: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either ...

  6. Javascript函数重载,存在呢—还是存在呢?

    1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...

  7. Could not open Selected VM debug port (8700) (转)

    Could not open Selected VM debug port (8700) 2014年11月14日 ⁄ 综合 ⁄ 共 446字 ⁄ 字号 小 中 大 ⁄ 评论关闭   在运行项目的时候, ...

  8. [C++][数据结构]队列(queue)的实现

    对于队列的定义,前人之述备矣. 队列的实现方法与栈非常相似.我直接在我实现的那个栈的代码上加了一点东西,全局替换了一些标识符,就实现了这个队列. 我实现的是一个queue<value>容器 ...

  9. STM32F051芯片解密STM32F091IC解密STM32F042单片机破解多少钱?

    STM32F051芯片解密STM32F091IC解密STM32F042单片机破解多少钱? STM32F0系列解密的芯片: STM32F031解密 | STM32F051解密 | STM32F091解密 ...

  10. checkedListBox

    checkedListBox一键删除多个选中items private void button3_Click(object sender, EventArgs e) { ; i < checke ...