这是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. React学习笔记-3-非dom属性介绍

    非dom属性?dangerouslySetInnerHTML,ref,key非dom标准属性,也就是说dom标准里面没有规定的属性,react引入了三个非dom属性,如上.dangerouslySet ...

  2. C#设计模式之工厂方法

    工厂方法模式: 1.不再提供一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成 如果出现新的按钮类型,只需要为这种新类型的按钮定义一个具体的工厂类就可以创建该新按 ...

  3. 【学习笔记】ES6标准入门

    这里简要记录一下对自己感触比较深的几个知识点,将核心的应用投放于实际的项目之中,提供代码的可维护性. 一.let和const { // let声明的变量只在let命令所在的代码块内有效 let a = ...

  4. 分布式追踪系统dapper

    http://www.cnblogs.com/LBSer/p/3390852.html 最近单位需要做自己的分布式监控系统,因此看了一些资料,其中就有google的分布式追踪系统dapper的论文:h ...

  5. 《图形学》实验五:改进的Bresenham算法画直线

    开发环境: VC++6.0,OpenGL 实验内容: 使用改进的Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h ...

  6. Win10 UI入门RelativePanel

    <RelativePanel Background="Black" > <Rectangle x:Name=" RelativePanel.AlignH ...

  7. 去掉移动端页面 input, textarea, button, a 标签获取焦点时显示的黑影

    input, textarea, button, a{ -webkit-tap-highlight-color:rgba(0,0,0,0); }

  8. C++ 数字转换为string类型

    经常需要循环读入多组序号的图像,需要将int转换为string,简单的函数代码如下: #include <sstream>#include <string> string In ...

  9. 《DSP using MATLAB》示例Example5.16

    代码: x1 = [1,2,2,1]; x2 = [1,-1,-1,1]; x3 = conv(x1,x2); % N = 5 n1 = 0:1:length(x1)-1; n2 = 0:1:leng ...

  10. 非常详细的/etc/passwd解释

    root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nol ...