懵懂的编程历史是从高中开始,第一门编程语言是Basic,第一台变成机器是文曲星。05年进入了高中,和小左童鞋同桌的时候发现他总是捣鼓着文曲星,看看知道这就是在写程序,于是就让他教我写程序,但是简单的Basic程序,虽然计算机课也上,但是当时还是特别简单的计算机基础知识,不过后来就教了关于VBScript的东西~
高中编写程序的日子还是很幼稚的,主要是写几十行的代码,没有复杂的逻辑,小左的爱好是写各种特效,后来就直接写一个小的RPG游戏了。可惜我这人不够聪颖,于是代码始终停留在低级水平。一度认为Basic是牛B的语言,后来发现还有更多高级的东西,但是毕竟是高中生,时间、精力有限,加上老班总会盯梢,Basic也没多久就不再写了~现在回到家还会看到当时的文曲星,但是程序已经删除殆尽了,可惜了~
有段时间,学校组织信息竞赛,也就是编程,没有报名,因为觉得自己还差太多,看到班里的童鞋学着数据结构、算法、Fortran很是羡慕,即使是现在也会后悔当时没有试一试~
大学了以后不认为会能够在计算机方面有建树,因为我们是文科学院,虽然都是一群呆呆的理科生,但是环境造人,于是开始混学生会,知道大二了才醒悟,发现原来我们专业还是需要技术作为敲门砖,便在大二前的那个暑假留在了学校,自己学习C#。其实,大一下已经开始学c了,但是觉得指针这东西很麻烦,动不动就出错,就没有坚持学习下去,一个直接后果就是后来的数据结构没有学好。
c#是大学里用的做多的语言,也是比较喜欢的语言。其实,我觉得相比于语言,可能是更喜欢IDE,因为太白痴了,能够让人很解放~
Basic大学里有因为专业的原因学起来了,感觉有些熟悉但又陌生,毕竟高中的时候已经习惯了那种简单的程序。还好,作业是一个计算器很成功的完成了,以后就再也没有接触过,除了帮同学复习过计算机二级的考试之外。
其实,使用c#主要是因为能够通过拖放做出可以运行的桌面程序,让人很有成就感,不过,因为写的很简单,甚至幼稚,成长很少,这个时期开始更多的关注互联网,成为了谷歌的粉丝,更成为一个博客人,呜哈哈,以前的文章很装的写各种how-to,现在想想算是学习的积累吧。发现,大家更多的关注与Web的编程,了解到了Django这样的框架,想要学习Python这门语言,不过同期,师兄成立了团队,便尝试学习Web端的编程,虽然假期在郑州学习CCNA,时间挺紧,不过还是通过小聪明做出了自己的第一个完整的Web程序—–一个简单的导航网站,呜哈哈,其实很鸡肋的,但是成就感不低。同期,每天来往的班车上开始看JAVA,那本大厚本看了一大半,到了最后实在是不想看了就作罢,最后得到的结论是java不如C#
对于语言的关注是一个方面,更多的开始想到了构架,因为一个同样的问题,别人写出来就很优美,自己总是在CRUD,就更多的关注别人的博客,尤其是一些大牛的,知道了设计模式的存在、知道了IoC等等,但是,因为还是有限的能力没有在具体的项目中实施~
大三上是在团队中学习的时期,主要是熟悉C# WebForm,后来发现诸多弊端,但介于时间、精力,最后在寒假的时候才真正的看完了MVC的教程,并且写了一个切实的项目~
现在又是一个新的学期,目标放在python上、linux上,希望利用这些技术来完成毕业设计的技术实现部分,不过貌似还有点早,技术上的储备明显不够,而且Ubuntu的界面实在不优美,受不了呀~受不了~
Orchard是微软这两年的一个项目,现在正式对外公开,部署在codeplex,从官方的页面可以看到Orchard
的运行环境是.NET 4.0,并且其构架中以微软的技术为主,而一些开放的软件业同样被纳入项目中,例如NHibernate作为ORM工具而不是自家的EF,想想可能是现在EF不成熟,以后的变动将会比较大的缘故,还有就是没有使用Unity而是采用的Autofac作为IoC容器,想来应该也是不成熟的缘故。不过,微软的这个项目毕竟是本着为行业做个典范的目的,所以就效果来看已经不错了。
比较欣赏Orchard的构架,但是这么庞大的代码对我来说还是有些不好消化,因此,就有了简化Orchard的念头,有以下的几点作为构架基础:
1 使用MVC作为整体框架基础
2 使用Autofac做Ioc框架
3 使用EF4CTP中CodeFirst作为ORM的工具
4 使用Log4net作为Logging工具
在此之上,构建Framework分别处理如下方面的内容:
1 数据库
2 安全
3 路由注册
4 Log
5 模块加载与调用
Framework是这个系统的基础,其他的模块应该直接调用,而不应该再自定义类型。然后就是系统具有构架在Framework之上的Core部分,这个部分包含能够让系统运行的最小模块集合,包含的功能如:
1 初始化系统
2 加载系统中的模块
3 初始化模块
4 具有模块的管理界面
最后一部分就是模块的制作,这里参考Orchard希望模块应当具有如下的组织结构:
+ Controller
—– AdminController.cs
+ View
—– + Admin
———+ Index.cshtml
+ Model
+ Content
+ MenuInject.cs
+ DatabaseGenerate.cs
+ Module.txt
其中Module中定义了加载模块的信息,DatabaseGenerate.cs用来初始化模块以后创建相应的数据库表等,Controller中的AdminController是必须的,用来提供统一的后台管理接口,MenuInject.cs用来加载选项到后台管理页面。
最后,因为从简的需要,整个Module的组织是依据Areas的结构创建的,同时,也是有Area来提供各种支持。但是,因为Area的逻辑在一定程度上和现在的需要有差异,因此还要对原来的AreaRegistration做出修改,实现动态的热插拔。
这就是对我这个学期的20%项目的简介,主要是实现类似于Wordpress功能的博客系统,而功能的增加将会使用Module的方式按照接口运行第三方来创建。
因为准备在dotask做完以后就转向python以及linux,因此也想顺便把svn抛弃试下git.不像是微软那么财大气粗,提供免费git服务的站点貌似不多,这里大家推荐使用github,不过你只能免费想有300M的仓库空间,对于一般的小项目是足够了~貌似国内没有专门的服务站点,希望有人能够弥补空白~

对于git,简单的说就是一个版本控制系统,是linux的开发者牵起的项目,但是不同于svn,这个东西没有中心,也就是说是分布式的版本控制。对于各个操作系统兼容性良好,不过还是xunix下表现最佳。
如果首次使用,还是倾向于使用GUI界面管理,但是这不是学习此类系统的最佳途径,所以尽量抛弃GUI,使用bash来进行管理更新吧~对于github,你可以使用ssh来做链接,但是你需要一个key来做通行证,这么没有直接说明,所以,新手会翻迷糊,我就是折腾了半天,还好有教程指导:参见这里
其中,最后的复制key不是那个一堆:的字符,而是你的id_rsa.pub文件,这个可以查找下,在windows中默认在c:/user/yourname/.ssh/id_rsa.pub中~剩下的就照只是走~
因为git这东西会有一堆新的概念需要学习,所以,暂时说到了这。以后,将会以一个实际的项目作为说明来进行学习,当然是使用python作为开发工具,希望能够顺利把东西开发出来,同时能够学习到git的神奇之处吧~