自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

传道自由职业

自由职业让生活变的更美好

  • 博客(32)
  • 收藏
  • 关注

原创 极客创业故事

作为一位极客,你的技术不能得到实践,不能实现其应有的价值,是多么郁闷的一件事情。虽然极客们对技术的追求都是非功利的目的,但是我们都有现实的压力,都想把我们的技术转换为生产力,改善自己的生活条件。程序员这个工作,我感觉是最能把爱好和工作相结合的工作之一,当前前提是你热爱编程,热爱技术。我们追求技术,我们想用技术创造价值,我们想用技术改变命运,这是无可厚非的事情,这是一件光荣的事情。

2013-12-18 15:21:35 2755 7

原创 逃离北京回家创业

随着那一波逃离北上广的大流,我离开了工作四年的北京,回到济南寻求发展。 有了更多的自由时间,我开始考虑自己创业的问题。我一直向往自由职业,也一直想把自由职业的环境做起来。可能我自己的能力有限,我要发动更多的人一起参与进来。构建一个可健康发展的自由职业从业环境。

2013-11-08 11:39:06 2800 26

原创 如何做好自由职业

自由职业最伟大的精神是专业和协作。我们都是以兴趣为出发点,把自己修炼成某个技术领域的专家。我们要学会和其他人合作,每个人发挥最大的效率。想在互联网世界树立自己的品牌,首先学会的是奉献。我们分享自己的技术,分享自己的经验。我们为开源项目做出自己的一些贡献,这样才能得到别人的认可,建立自己的品牌形象。

2013-11-02 17:57:09 1596 1

原创 使用sinopia搭建自己的npm服务

随着代码的积累,感觉有必要自己搭建一个npm服务,对自己的代码库进行管理。为什么选sinopia,之前有 仁兄使用Kappa 搭建私有npm私有库,看上去比较麻烦,还需要依赖CouchDB数据库。参考 https://segmentfault.com/a/1190000000491162我去强大的github上搜索了一下,发现了sinopia,纯nodejs解决方案,不需要什么依赖

2016-03-20 20:58:31 7467 1

原创 实现可以直接粘QQ贴截图的bug管理功能

很多时候我都是用qq群或者word来管理图文的todo和bug。但是这样又脱离了项目管理工具本身的功能体系。于是我们就打算在我们的协作平台上实现可直接粘贴图片的todo和bug管理功能,再配上qq的桌面截图功能,想象就让人用着舒畅。

2014-04-29 15:49:19 1784 1

原创 【传道自由职业】 自由职业意味着什么?

自由 vs 混乱很多人选择自由职业,因为自由职业意味着自由,工作时间可以自由支配。不用按点儿上下班,不用看老板的脸色行事,更不用去讨好谁。自由是有的,你不用按谁规定的时间来做比人指派的事情,你自己选择办公地点,你自己选择办公时间。但这一切需要一个好的规划,不然你可能面临的是生活规律的打乱,休息时间和周末时间都用来忙着应付客户,甚至影响你的身体健康和家庭生活。专业 vs 广泛做自由职

2014-04-02 11:51:33 1575 4

原创 HTML5视频插件,各种已解决和正在解决的问题

最近在做一个hmlt5的课件项目,客户需要在课件中嵌入HTML5视频,还需要自定义视频的一些控制,默认的视频控制条肯定不能满足,于是需要引入自定义的视频控件。经过一番研究,最后选定了mediaelement这个插件,号称还是挺强的,而且支持的平台比较多。引入了,首先需要解决的问题是整合问题,它是基于jquery的,我们现在用的包是zepto,虽然号称是通用的,但是用起来就知道区别了。首

2014-03-17 20:32:45 3452 1

翻译 9个展开头脑风暴的小贴士

糟糕!你又没有灵感了,怎么办呢?如果你是一位从事自由职业的创意工作者,没有了好的点子可是一件严重的事情。你的收入来源会收到威胁。有很多很棒的工具可以帮助你进行头脑风暴,如免费的Coggle和FreeMind。但是你要从何开始做起呢?9个头脑风暴小贴士头脑风暴是个寻找新奇想法的好方式,不过尝试过的人都知道其实这个方法不简单。因为没人愿意花一个上午的时间盯着一张白纸(或

2014-03-15 11:22:57 2207 3

翻译 5招增加你的博客流量

不管你是自由职业者写的个人博客,或者为企业而写的博客,或者通一个博客来吸引人们阅读你写的其他内容,它是获得读者访问对你来说有非常重要。从其他网站上拉客户过来不是一件轻松的事情,特别是当你第一次写博客的时候。无论你是新手,还是有一定的用户积累,你都可以通过下面的方法把用户抓过来。与你的联系人分享你的博客让别人阅读你的博客的最好的办法就是分享给别人,你可以在推特,faceb

2014-02-24 17:42:34 1267 2

原创 边学边做SEO--关键词

网站测试版上线了,下面要做的就是不断的修改bug,完善功能和推广运营。目前团队里没有推广和优化方面的人才,没办法,先自己来,边学边干。首先找了一些SEO的书,准备一边学习,一边把网站的优化做起来。

2014-02-07 10:58:09 1598 5

原创 我不是在重复发明轮子

为什么有了雅虎还会出现谷歌;为什么有了MySpace还会出现Facebook;为什么国内某些搜索引擎用户体验做的那么差,还活的那么好。有竞争才会有创新,没有竞争只能一家独大。后来者不是在重复发明轮子,是在创新,是在不断的发起竞争,在竞争中大家都会把产品做的更好,让用户获得好的体验。一个产品一旦获得了一定的市场份额,就失去了竞争的动力,而随着市场的发展,用户新的需求就会涌现,这时候新的产品进入市场的机会就出现了,老的产品不创新,新的产品出现了,逼你去创新,去改进。

2013-12-28 08:41:18 2124 11

原创 一起做开源在线IDE(mokide=nodejs+jQueryUI+CodeMirror)

最好的解决办法就是搭建在线的远程开发机,这样开发人员就不需要再本机搭建开发环境,就可以实现快速开发。于是现在摆在我们面前的就是这个任务,要实现一套在线的方便部署的集成开发环境。该项目有牧客网发起,取名mokide,辅助那些远程的团队们实现远程的协作开发。

2013-12-21 18:00:10 5481 1

原创 逃离北京回家创业--生存篇

创业的路上,并不总是激情和乐趣。当激情过了,就需要面对赤裸裸的现实。首先要考虑团队的开销问题,虽然大家拿的工资并不高,但是四个人的工资加上房租水电,对于一个穷苦出生的程序员来说也是个不小的压力。

2013-11-29 10:34:13 2741 19

原创 分享“我的作为自由职业者的那些日子”

在一篇博客上看到这篇文章,挺喜欢的,转过来供大家参考:做自由职业的第二年,我不再任何项目都接了,我开始挑选客户,接每个项目愿意出至少要500美元的客户。这样的交易不错,一个月4到5个项目,在加拿大,我的收入也算中等水平了。后来我也开始挑选项目了。很烂的项目不再接受。这感觉很好!

2013-11-15 12:06:36 1071

原创 js生成二维码插件

后来网上搜索,找到了一个可以生成二维码的js库qrcode.js,不依赖任何其他代码,看着不错就下来来试试,果然很好用。qrcode.js的下载地址http://davidshimjs.github.io/qrcodejs/,你可以现在zip压缩包,里面有一个简单的例子。

2013-11-11 15:35:38 2436 1

原创 逃离北京回家创业--团队组建篇

筹划好了自己的创业项目,然后就开始着手组建团队了。考虑到自己没有太多的资金支持,不能可能去社会上招经验丰富的员工,于是决定自己培养团队。好在我技术选择的是nodejs和mongodb,前后端都用js开发起来学习成本相对较低。我选择办公地点在大学城一方面是考虑到这里的房租相对便宜,另一方面这里周边有十几所大学,组建团队也比较方便。大学生虽然不像社会上招的熟练技术人员效率那么高,但是我坚信大学生中肯定藏龙卧虎,有潜力成长快得也大有人在。

2013-11-09 11:58:51 2099 6

翻译 js框架开发剖析--AJAX(跨域)

跨域请求非常的有用,他可以让你获取第三方服务的数据,如Twitter。跨域的请求比较麻烦,这是一般框架要提供的服务之一。jQuery通过JSONP实现了跨域,它的文档里是这样描述的: jsonp类型在url添加一个添加一个字符串参数callback。服务器预先将json数据和回调函数名字拼接成一个规范的JSONP响应。在$.ajax()的参数中,我们也可以使用自定义的参数名代替callback。

2013-11-08 16:54:57 1176 1

翻译 js框架开发剖析--AJAX

历史XMLHttpRequest也是浏览器技术战争的产物。最早提出这个概念的是微软,他在1999年发布的IE5中,使用了ActiveX实现了这一功能。直到2006年XMLHttpRequest才进入了W3C的工作草案。

2013-11-07 11:30:04 1435 3

翻译 js框架开发之旅--事件三

我们点击一个元素,会触发它的默认事件,同时事件还会传播给他的父元素。Prototype使用Event.stop()方法阻止默认事件和事件的传播。jQuery遵循W3C的标准,给事件提供了更多的接口: event.preventDefault():阻止事件目标的默认事件触发。 event.stopPropagation(): 阻止事件在DOM树上传播。 event.stopImmediatePropagation(): 阻止当前元素的后续事件触发,同时阻止

2013-11-06 16:33:53 752 1

翻译 js框架开发之旅--事件二

由于老外的叙事实在罗嗦,因此我以后仅仅翻译重点的东西,或者自己进行整理总结,如有错误之处,还请看官指正。W3C标准和IE的差异W3C标准绑定事件的方法element.addEventListener('click', function() { }, false);IE绑定事件的方法var handler = function() { };element.attac

2013-11-05 09:40:53 1018

原创 让我欣喜的一次聊天

今天在nodejs的技术群里有人发布找兼职的信息。我出于好奇,和他联系了一下,没想到竟然产生了一段让我欣喜的聊天。对方是做英语学习和桌面结合的在线系统,叫做另客网,想要开发在线视频教学的应用。我去了他们的印象笔记工作台,发现里面有好多的技术人员。据他所说,大部分都是自由职业者。其中有部分的自由职业者已经开始为的项目工作,我感到非常激动。我一直觉得我所做的事情得不到大家的认同

2013-11-04 19:05:01 850

翻译 js框架开发之旅--事件

这一篇我们将介绍事件的工作原理,和不同的框架中事件的实现方法,以及事件接口的设计。我会在最后选择一种接口的设计,来实现我们的事件功能。原理事件和Javascript的关系非常密切,你可以想象如果没有事件,页面怎么和用户进行交互。Javascript一出现的时候,就已经有事件功能了。最早的事件处理时写在html代码里的,如下:你之前一定见过这样的写法。它最早出现在Nets

2013-11-02 11:57:19 889

翻译 js框架开发之旅--选择器三

上一篇我们讨论了如何实现一个选择器的引擎。选择器引擎使用基于正则表达式的分词和扫描器,把选择器拆分成可执行的部分。这一部分我们继续讲解如何通过Searcher类实现节点的搜索。搜索器Searcher类使用分词器生产的规则来搜索DOM,搜索的实现基于Firefox的工作原理。看一下上篇提到的一个原则:选择器的最后一部分(最右边部分)称为关键选择器。浏览器首先通过关键选择器

2013-10-26 16:40:41 712

翻译 js框架开发之旅--选择器二

这一篇我要演示如何实现一个选择器引擎。实现一个选择器比想象中的要麻烦,我们会重点讲那些最关键的技术。要做一个好的选择器,你必须知道浏览器渲染页面的基本原理、DOM结构、CSS语法,还有浏览器是怎么通过选择器查找元素的。CSS选择器CSS选择器非常有用,他可以简化复杂结构的选择。解析任何东西都要先了解我们要操作的对象,我会把类库的范围限制在CSS2的一个子集内。CSS2选

2013-10-26 10:49:25 823

翻译 js框架开发之旅--选择器

提供一个跨平台的选择器接口,对于一个框架来说至关重要。不管是XPath式的还是CSS式的选择器,浏览器的支持都存在差异。为了理解选择器的重要性,我们可以回到90年代,看看在没有js框架的时候,人们是怎么做的。Prototype不是简单的给document.getElementById一个别名,它可以查询多个id,并且通过继承给元素赋予更多的功能。我们正真需要的是getElementsBySelector。我们不仅仅想通过id和tagname检索元素,我们还要对元素进行一系列操作。我们在定义样式时,经常

2013-10-19 17:07:30 1170

翻译 js框架开发之旅--函数式编程二

上一篇我们给我们的类库里添加了each方法。这一篇我将展示如何在each功能的基础上添加更多的方法。我们会参考Underscore和Prototype的一些方法,还有最近流行的对Array.prototype的扩展。过滤器过滤器让你在列表里删除不满足条件的元素:turing.enumerable.filter([1, 2, 3, 4, 5, 6], function(n) {

2013-10-17 11:29:10 806

翻译 js框架开发之旅--函数式编程

函数式编程首先让人想到了面向过程过程编程。自从面向对象的编程出现之后,面向过程编程也只有在编程入门的教程中才能用的到。让我们先看一下函数式编程的特点:专注于解决具体问题。把函数作为一等公民,并且可以作为变量来使用。避免数据的声明和变化。想Erlang和Haskell都是函数式编程语言。js不是严格的函数式语言,但是比起Ruby,Python和Java它包含有更多函数式编程的特性

2013-10-16 16:40:53 909

原创 开放平台和自由职业者

开放开发平台对于大家来说已经不是个陌生的概念。facebook、校内、腾讯、新浪等开放社交平台;googleapp、阿里云、SNE等paas平台;ISO、Android,WP等应用程序商店。所有这些都是为开发者准备的开放开发平台。由于众多开放开发的出现,让开发者的开发成本和推广成本急剧的下降。开发平台的出现同时让开发者更容易掌握开发一个成熟产品的能力。因为你不用再去考虑平台本身的维护,基础

2013-10-15 11:52:01 1256 5

翻译 js框架开发之旅--对父类的访问

上一章我们讨论了基于原型的继承和基于类的继承。这一章我们继续介绍如何实现面向对象的js,我们要阐述turing.oo的原理,并且尝试去实现super方法。更深层次的类的创建Turing的方法Class.create方法创建一个类,使用new创建的过程中会调用初始化方法。方法非常简单: create: function() { var methods = null,

2013-10-15 11:41:29 762

翻译 js框架开发之旅--原型和类

不是所有的js框架都有类的概念, Douglas Crockford在他的Classical Inheritance in JavaScript中讨论了基于类的对象模型。这是一个非常精彩的关于如何实现js继承的讨论。后来,他写了另一篇文章Prototypal Inheritance in JavaScript,他的结论是:不使用类对象模型,仅通过原型,也能完整的实现js继承。

2013-10-10 14:34:13 3373

翻译 js框架开发之旅--架构

这一篇我们要讨论框架的架构,并且确定我们框架的架构设计。经过收集大家的意见反馈,我决定把这个框架取名turing.js。如果你了解阿兰·图灵,你就应该知道为什么取这个名字了,不了解的马上去查查看吧。我们的项目也算是为计算机科学史的普及做了一点儿贡献。前期准备这篇文章会涉及到下面一些框架的知识,如果你不了解,最好先去看看。    jQuery    Prototy

2013-10-09 14:29:46 1416

翻译 js框架开发之旅--开始

这一系列文章翻译自dailyjs的Let's Make a Framework系列教程,作者是Alex R. Young。该教程介绍JavaScript web框架的开发过程,从2010年开始,每周四更新一篇。小牧能力有限,力求遵照原文翻译。有些技术或方法的更新或变化,小牧会在文中进行注释。注释是小牧的个人观点,仅供参考,欢迎指正。小牧目前在参与牧客网的创业项目,精力有限,但是尽量保证每周

2013-09-30 11:24:18 824 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除