【实习第八周】Time To Bye

时间终究来到了2014年8月30日,实习第八周的周六

这一周没有写博客,间接原因是没有继续研究Golang,而直接原因是这一周很忙。从周一开始就一直用不熟悉的Laravel框架和同事一起开发一个网站管理后台,4个人,一共7个模块,我分到了3个。由于不熟悉框架的使用方式,在开发过程中出现了很多的bug ,于是这一周就在不断的增加功能、验证代码、修改bug 中很快的度过了,而每天晚上回来不到10点就睡觉了,就这样过了5天。忙碌的时候时间过得很快,所以如果自己无聊的时候可以试着给自己找点儿事情做,专注某件事的时候,时间是不重要的。于是程序员喜欢熬夜。但不管怎么说,今天是8月30日,两个月8周40天的实习算是结束了。Time To Bye ,总是觉着应该说一些话儿的。

昨晚公司专程为我们实习生举办的欢送宴很棒!喝了很多酒,吃了很多菜,同时玩的是相当high,在这里对上海热璞科技全体同事说一声 谢谢大家!虽然两个月时间不长,和很多同事的交集也不多,但是既然相见便是缘分,公司虽然不是很大,但这样的氛围说实话是我很喜欢的:工作时候专注,平时就是兄弟姐妹,一起玩,一起吃饭,感觉很棒!如果我今年毕业的话,或许我就不用回去了,在这样的公司工作,我很开心。这就够了。年轻的时候不应该就要去做自己想做的事情么?不管怎么样,这个假期的实习经历,此生不忘。

昨晚KTV的时候好累,不多说,唱歌的时候都没有力气了。回到房子里是2点半,洗个澡就睡觉了。今早9点起床。

然后今天第二次去了豫园城隍庙。把公司发的中秋福利200块大洋差点儿都花掉……但是正事没办成,坑爹的华夏银行一周竟然只有周六不上班,然后明天还得去一次。

这个暑期学到了很多东西,最大的收获是认识了公司这么多优秀的程序员,让我对这个行业的理解上升了一个层次。另一个收获是对golang 有了一些积累,并且喜欢上了这一门语言,但是我回去以后似乎没有人和我一起写golang 了。如果有兴趣,我们自己成立一个golang学习小组吧,Go语言值得一学,真心的。

马上就要回学校了,大三要怎么过,我真的没有想好。参与创业,自己创业,接项目做,自己做自己的项目,带团队,或者自己单独研究云计算,或者是,将自己清零,重新做一个单纯的自己。不知道,还没有想得很清楚。但是有几件事情是确定的,个人网站要开始运营起来,一直想写的文章页应该写起来,同时C2P博客也会坚持下去。既然买了虚拟主机,就不要让钱白花,好好利用自己的资源,做一些真心能留下记忆的事情。还有就是多读书。手中的资源太多,于是便不知道珍惜,于是就变得麻木。多看书,会让自己的见识更有深度。大三说来就来哦,不知不觉就变身成为大三的学长。学的不行,长的也不行,真的愧对这个词,以后就叫我大三的就好。

Time to bye ,总有很多话想说,却思绪混乱说不出来。新学期,期待新的自我。我认识的朋友们,还有我的好兄弟们,新的一年,加油!

刘凯宁@C2P
20140830

Share

【非技术】实习第七周:也许是应该想一想有关学习能力的问题了

于是,第七周

时间过得好快啊,今天又是一个周六。实习第七周的周六。这一周主要做了两件事,第一件是分析学习七牛云存储的PHP SDK,实现了对文件的基本操作,第二个就是学习并使用了那个堪称当今最优秀的专门为Web 艺术家设计的PHP框架:Laravel 。从接触到Laravel 到了解其基本的原理再到实现最基本的MVC流程和对数据库的CRUD操作,用了2天。然后就是昨晚应刘总邀请为公司同事分享了这两个月来学习Golang的一些想法。原本只想简单讲一讲,却没想到正是昨晚的分享会让我真正的认识到了一些看似简单但又不是那么简单的事情。关于一些对于学习能力的看法。

第一次见到“授人以鱼,不如授人以渔”是什么时候呢?想不起来了,但那个时候这话绝对是一句有用的废话。应试教育体制下谈“渔”,想想就觉得可笑。没有人关心怎么找到答案的,只关心答案是什么,并且一定要去确认答案对不对。不要把学习知识当做学习本身,这句话没错儿,一如另外一句也是看似矛盾但实际是毋庸置疑的话:不要把遵守制度当做制度本身。学生时代除了用考试来衡量一个人,还能有什么?学生时代除了考试,我们还能做什么?学生时代不断的被扔给一条鱼然后心安理得的吃掉然后等着下一条鱼还有别的什么?

学习是有目的的。这个目的是不断提高自己学习的能力。除此之外,没有其他。

没有什么事情是不会的,只是因为没有做过。要怎么才能去做?去学习。学不会啊!学习能力不够。不要在意你曾经会什么现在会什么,你需要时时去判断当面对一个新的事物的时候,应该需要多久时间能够了解其基本原理然后为自己所用。高大上的概念、理论、语法、论文、案例等等等等,对学习者的意义究竟有多大?实践是检验真理的唯一标准。虽然这句话很官方但这真的是官方少有的不扯淡的话。另一句话是实事求是。当面试官问你某一个技术问题时候你突然想起来哦哦这个东西老师课堂上讲过哎不过我没记住哎。没记住的原因是没有实际的印象,没有实际印象的原因是那时候就是简单的几句话而已连一条鱼都不算。于是活该。这个能去怪老师没有讲么?不能谢谢。要去怪谁呢?不知道谢谢。为什么不知道?因为这TM就是一句话而已记住了就能答上记不住就答不上啊还能怎么样!学习能力太弱。

这个学习能力,怎么说呢,真的可以看出来的,并且会很容易的看出来。没有什么好学生差学生,所谓的差学生只不过也许是在搞学习这一方面的学习能力有点儿弱而已,谁能保证他在其他方面的学习能力不强呢?”差学生“都是老师叫的,所有的老师应该为创造并传播这个词而感到悔恨,正是因为这三个字让多少也许在其他方面很出色的学生不能去做真正适合自己的事情,并且在学生时代得永远背负沉重的心理压力。成绩单上的那个数字真的太重要了,而本来就是一件小事就让太多的老师学生为这东西搞得觉都睡不了,不得不为了那些东西而苦苦学习。然后毕业把那些东西全部忘记,连书都撕掉撕掉撕掉!!!有必要么?庆幸我以及远离了苦逼的高中时代。

然而上了大学突然发现事情似乎看起来是有点儿改进仔细一想却又明白过来本质还是一样。

培养学生的XX能力、XX能力、XX能力,还不是凭学习成绩发奖学金还不是做根本没有价值的社会调研混学费混项目经费还不是上课玩手机下课打游戏考试抱佛脚放假High到爆。恩,挺好的不是么。史上最难就业年是吧?搞笑,应该是史上最差学习能力年才对吧。什么软实力硬实力最重要的就是学习能力造就的学习实力。心灵鸡汤娱乐八卦恶搞端子欧巴思密达我们的大学时代真的是不能太赞。恩咯,难道不是这样么?

学习能力这个命题,关乎到自己究竟怎么看待学习的本质怎么看待教育的本质。大城市和小山村的孩子究竟有什么不同?眼睛。因为看到的东西不一样,于是学习能力不一样,于是于是于是就那么于是下去了。如果我们不能从根本上重视学习的能力培养,任何层次上的高考改革教育改革都是没有意义的。没有任何意义。学习资源不平等,教学质量不匹配,学习内容不一致,都扯淡的。学习能力培养方式不一样。

但这些事情我们又没有办法改变。也不用期待能有改变。我不报希望。唯一能做的就是通过不断学习心得知识来不断提高自己的学习能力,只是犯错误也是一种学习的效果很多人却看不到,不敢做,怕犯错,于是没有学习的机会,于是学习能力得不到提高,于是于是于是最后把鱼吃掉了没有别的吃了。然而更多情况是提高学习能力的过程总会被很多很多事情所打搅,比如我是学外语的你让我去敲代码比如我是软件学院的你让我去写活动策划比如我是商学院的你让我去做数学建模大赛。恩就是这样我们自己把自己的发展范围给划定了,不想去尝试,不想去花时间去做,想着还不如看看韩剧打打游戏的好。人之常情嘛不是么?于是这种情况下就出现了很多很多的大神。每一个大学里都不缺那种风云人物的,除过用特殊手段达到的那种,还有风云的范围不一样以外,这些大牛最根本的相似点就是学习能力很强,至少比一般人强。有时候不是你不努力,而是你不知道为了什么努力。也有时候你发现你努力了似乎没有用,如果做一件事儿之前和之后你的学习能力没有得到相应的提高,那还能有什么用?

自信。无条件的自信。
除了自己,还能相信谁呢?
连自己都不相信,谁还敢相信你呢?

如果你看完这篇感觉不短的文以后有点儿思考,那么请去尝试做一件没有做过的事情吧。毫不动摇的坚持提高自己学习能力的思想,我们才有可能在移动互联网的时代更好的生存。如果不知道要做什么的,那么下面有一个很好的尝试命题:去学习HTML5。不管你是什么专业不管你是什么想法,HTML5在当下时代值得一学。Enjoy HTML5 。

刘凯宁@C2P
20140823

Share

【C2P】推荐几个需要了解的PHP开源软件

今天为大家推荐几个好玩的软件

我们为什么要做软件开发?为了解决当前的问题。

我们需要了解一些优秀的软件,从其中体会,领悟,从而做属于自己的产品。二次开发,仿制,甚至抄袭,都不重要,重要的是理解优秀软件的思想价值。OK,开始。

1、WordPress  http://cn.wordpress.org/ 
当下最优秀的博客系统,没有之一。
全世界使用人数最多的博客网站,不计其数的插件,不计其数的主题,不计其数的使用者和开发者。简单,优雅,高效。支持多用户,支持二次开发,基于WP有众多的开源项目, 个人博客首选。可做CMS,可做企业展示网站。想单个玩的,想折腾的,WordPress都可以满足你的需求。如果自己开发一个插件能被万千用户认可,做开发的也就无憾了。

唯一不好的,正因为功能多,使用人数众多,于是每次看到大大的W时候,都觉得一见如故。这种感觉怎么说呢,木有惊喜……

2、Typecho http://www.typecho.org/

国人开发的开源博客系统,优雅,简洁。和WP唯一不同的就是,恩这真的是单纯的博客系统,并且是专门为开发者准备的博客系统。整个博客系统只有4张表,只有不到500K代码:简约,但不简单。Typecho自己带的编辑器很干净,使用markdown语法,一般人也不怎么会用(⊙o⊙)……搜索分类主题插件一应俱全,只不过木有WP种类多啦!作为开发者来说,500K的代码完全可以看懂,所以如果想用什么插件,完全可以自己去开发。官网上提供的主题和插件不是很多,于是给了开发者很大的权限。想耍一把的,可以一试。国人软件,于是你可以随时和作者取得联系,听起来就很棒!

3、Discuz http://www.discuz.net/forum.php

不多说,你所能见到国内的论坛或者BBS,百分之八十都是基于社区动力的,而高校、企业、开发者社区则覆盖率超过90%。功能强大,强大到使用手册都得让你看的头疼。Discuz和众多的软件都可以整合起来,比如PHP的thinkPHP框架和CI框架,还有另外一个UCenter 社区。站长太多了,于是你不知道的话就OUT了。

4、WeCenter  http://www.wecenter.com/

专业的问答网站软件。集合知识问答,社交,博客,CMS管理,以及微信平台,致力于打造一站式问答社区,为企业、开发者提供优质的知识交流。前端和bootstrap 完美结合,做二次开发很容易,并且在一定程度上拥有一个wecenter 站点比拥有一个wordpress站点会让人更加有成就感!建议下载下来一试,你绝对不会失望。

5、iWebShop  http://www.aircheng.com/

国内一流的完善的安全的堪称完美的电子商务网站,开源。想做一个淘宝网店,想做一个二手市场,想做产品推广店面产品展示,iwebshop是你最好的选择。集合支付宝支付、微信支付、块钱支付,不用任何开发技术就可以掌管一个完善的电子商务网站。同时集合了较强的安全验证机制,保证数据安全,完美支持安卓ios 移动端系统,国人制作,可以随时联系。个人版免费,企业版更加安全,收费。

如果能把这5个网站代码都能好好研究透,看懂,OK , web开发你还能有什么不会的?

下载下来玩一玩吧!

刘凯宁@C2P
20140821

Share

【C2P】谈谈MVC

简单的谈谈自己对MVC模式的理解

MVC,Model View Controller,所谓的当今软件开发最为流行的一种模式。

MVC将整个系统分为三个部分:Model,负责业务模型,主要是数据库和对数据的操作;View 负责界面展示,主要用不同的方式表现出需要的结果;而Controller,控制器便是业务逻辑的实现。

一个好的MVC框架必须要将View和Controller分开,Model 则在小型的开发中常常与Controller 混合,通过强有力的C来实现业务逻辑。MVC模式中,C是核心,一切的一切都是控制器来操作整个系统的运行,而M则可以让数据操作和业务逻辑分开,良好的model只需要为controller提供需要的接口就OK了而没有必要去仔细考虑其内部实现。View则是整个系统直接与用户接触的模块,注重的是用户体验还有UI设计。

MVC的使用可以将整个开发团队分为前端和后端两个部分,使得程序员能够专注于业务逻辑实现和模型创建,而美工设计人员可以毫无拘束的实现自己的才能而不用考虑数据的来源于业务的逻辑实现。

但不是说V一定不重要而C一定很重要。View是整个系统能否受到用户欢迎最重要的因素。我们现在的开发者很多时候没有很好的理解团队合作方式,没有清楚的理解自己在团队中的职能,于是就只是去写后台代码,完全不考虑代码复用性以及界面展示,忽略了最基本的用户体验,这是不好的。写代码时候不需要重复的去造轮子,并且要学会把代码分模块然后组合在一起,降低犯错的风险。每一个小的模块实现最基本的功能,然后组合起来就可以变得很强大。当然模块的组合并且实现通信是我们需要去想的。

常见的MVC框架介绍,Java的当然要说struts 。这是MVC界元老,超过10年的使用。现在spring、struts2和Hibernate 与struts 组合变成了最为实用的S2SH ,企业级用户标配。S2SH学习成本不高,但是如果要深入去了解各种机制,还是有点儿费劲的,只是S2SH一般适合用大型的项目,小型的项目没有办法去完美的体现MVC的强大。

PHP中,当然要说zendframework 。ZF是PHP最大最专业最完善的MVC框架,于是显得不是那么优雅,学习成本相对较高。还有就是smarty,这个东西当年很火,现在不想提,拿来做MVC的入门还是可以的。CodeIgniter ,CI是一个非常轻量级的框架,于是简洁明了同时就是因为简单而做不了很重要的项目,文档很全,学习成本很低,上手很容易,开发很简单,性能很棒。ThinkPHP是国人开发的比较优雅的PHP框架,MVC模式能够很好的体现,国内使用者众多。最后一个是我正在使用的神器:laravel.这个框架被PHP专业人士所津津乐道,并且是2014年最优秀的PHP框架。简洁的思想,艺术性的语法,完善的文档,使得laravel成为当今最火的框架。真心赞!用了两天,很棒,过几天写写关于这个的东西。

MVC能够合理的实现团队合作机制,这是对开发者最慷慨的馈赠!

刘凯宁@C2P
20140820

Share

【PHP】七牛云存储API两种本质关系分析

为了七牛大赛!

昨天研究了一下七牛云存储SDK of PHP ,尝试实现了基本的文件上传、移动、复制、删除、下载、生成二维码等等功能,同时对图片文件实现了简单的缩放、查看图片、查看信息、添加水印等等,现在还没有尝试的是大文件上传处理和音视频文件的处理。一整天的研究学习下来发现,其实七牛提供的主要API有两种处理好两种关系就好:第一种是处理文件与服务器之间的关系,第二种是处理文件与客户端的关系。现在简要分析如下。

第一种关系:文件与服务器关系

这里的服务器是指七牛云存储的服务器。
这个关系主要实现七牛对文件的存储管理。存储管理,就是对文件在七牛服务器中的一些操作,简单一点说就是识别、存储、移动、删除、查看信息等等。
国内有各大提供存储服务的厂商,2013年的网盘大战就可以说明国内存储行业竞争是有多么激烈,而如今七牛算是一个比较好的选择。
将自己的文件存储在七牛的 服务器上必须要能辨别出个人的信息,七牛采用了AS和SK的方式保障了这一条要求的实现。AccessKey,SecretKey。一对儿AK/SK来实现对用户 唯一性认证已经是很多平台的选择了,SAE也采用这种方式。这里要注意的是,绝对不要把自己的SK透露给任何人,也绝对不要在开发的时候把自己的SK发送到客户端。通常需要用这一对秘钥生成上传、下载的Token,获取到相应的权限才可以做一些实用的操作。
文件在服务器中是以K-V 键值对存在的,于是在管理界面就没有类似百度云、金山快盘那种文件夹的概念。同时对于每一个用户来说,对文件的管理可以用bucket  这个来实现分类。bucket,空间,每一个用户都可以新建多个空间,而空间也可分为公开空间和私人空间,顾名思义私人空间就是不允许外链或者外部请求的时候需要获取下载Token才可以。

七牛为不同语言都提供了类似的接口,实现了上传、下载、移动、复制、删除等等文件操作,我分析发现PHP、java 、Go三种当中最容易实现的是PHP,功能最多的是Java,而Go语言的怎么说呢,因为七牛本身大部分的核心代码都是Go写的,所以相比其他任何SDK,Go的稳定性以及性能是最好的。只是国内支持Go的空间不多,因此一般没有办法选择Go去做开发。并且Go本身懂的人也不多……

客户端要实现上传、下载、复制、移动等等操作,最重要的是要获取到Token,而最常见的参数是一个空间名和一个文件名,专业一点说是一个bucket和一个key。这两个概念如果不懂可以去看看官网上对上传下载模型的分析。

综上,文件和服务器的关系就是这样了,我们主要做的就是根据不同语言的SDK去调用相关的方法就OK 。

第二种关系:文件与客户端关系

这种关系主要是对HTTP请求的操作。

实现文件下载、查看信息、生成二维码以及对图片的缩放、加水印、旋转等等操作,其实都是基于一个基本的URL然后去做相应的URL改写从而去调用七牛自己的内部处理函数最后返回相应的结果。比如我想缩放一个图片并且自己指定大小,我就可以构造这么一个URL


http://liukaining.qiniudn.com/02.jpg?imageView/w/100/h/300

如果我想给一个图片生成一个二维码,我就可以构造这么一个URL


http://liukaining.qiniudn.com/02.jpg?qrcode/0/L

就是这样!
我们对URL做处理就可以返回想要的结果了,而如此类似的,我们可以为图片加上水印,或者是旋转、裁剪甚至添加样式。

文件和客户端的关系就是,去发出一个HTTP请求,这个请求的URL是基于文件的URL的,然后你做一些修饰加上一些参数,我们就能够得到想要的结果。

上面说的都是公共空间的访问,而一旦客户端想要去访问私有空间的内容,那么就得先去获得token,这是自己服务器去给客户端发送的。

OK,这就是七牛API的两个最重要关系。只要处理好这两个关系,做基本的开发是没有问题的。顺便吐槽一下官网的文档,真的就是一群程序员写的……简单的东西非要绕来绕去说不清楚……真的是……

刘凯宁@C2P
20140819

PS:这是第100篇博客!!!

Share