一直觉得CodeSmith是个好东西,最近正好有点时间来研究下,其实以前也想学习怎么用,在博客园搜一下有很多介绍CodeSmith的文章,我就收藏过一个写得很详细的http://terrylee.cnblogs.com/archive/2005/12/28/306254.aspx,一看里面文章这么多,一篇一篇去学,瞬间觉得很难有木有?于是就放弃了,想着以后有时间再慢慢看,久而久之就忘了,后来想起来又打开这个收藏,发现还是不想看,又放弃了。放在收藏里的东西并不是自己的东西,只有真正自己学过的才是自己的东西。

借此来谈一下程序员的学习方法。当然这是我的一家之言。如有雷同,不胜荣幸。

想学一个新的技术,最好的方法莫过于看官方文档,外加官方的例子。

就拿CodeSmith来说,装完软件后,从开始菜单打开第一个选项就是文档。地址:https://codesmith.atlassian.net/wiki/display/Generator/Welcome+to+CodeSmith+Generator

前面的介绍神马的就不用看了,从Introduction and Tutorials-->Tutorials-->Getting Started 开始一页一页往下看,每页的内容都很短,关键地方还有图片,比起别人写的长篇文章来说好懂多了(并非别人写的文章不好,相反他写得很好,只是我一看满屏的文字就眼晕)。跟着文档学,很容易就明白了是怎么回事,这就是学习的技巧。特别是国外的开源项目,一般都会提供文档,有些会提供实例下载,如同我的上一篇文章微软企业库就提供了例子。

这也是我做了几个项目总结出来的方法,别的不多说了,免得文章冗繁,各位看官不爱看了。

顺便附上一段代码,因为CodeSmith官方文档在这一篇用的是VB,我改成了C#的

<%@ Template Language="C#" TargetLanguage="Text" Debug="False" %>
<%@ Property Name="InitialState" Type="StateEnum" Category="Options" Default="STARTED" Description="" %>
<%@ Property Name="Authentication" Type="AuthenticationEnum" Category="Options" Default="INTEGRATED" Description="Authentication method." %>
<%@ Property Name="Port" Type="PortsEnum" Category="Options" Default="CLEAR" Description="Port to use." %>
<script runat="template">
public enum StateEnum
{
STARTED,
STOPPED,
DISABLED
}
public enum AuthenticationEnum
{
BASIC,
DIGEST,
NTLM,
KERBEROS,
INTEGRATED
}
public enum PortsEnum
{
CLEAR,
SSL
}
public string GetState(StateEnum state)
{
switch (state)
{
case StateEnum.STARTED:
return "STARTED";
case StateEnum.STOPPED:
return "STOPED";
case StateEnum.DISABLED:
return "DISABLED";
default:
return "STARTED";
}
} public string GetAuthentication(AuthenticationEnum state)
{
switch (state)
{
case AuthenticationEnum.BASIC:
return "BASIC";
case AuthenticationEnum.DIGEST:
return "DIGEST";
case AuthenticationEnum.NTLM:
return "NTLM";
case AuthenticationEnum.KERBEROS:
return "KERBEROS";
case AuthenticationEnum.INTEGRATED:
return "INTEGRATED";
default:
return "BASIC";
}
} public string GetPort(PortsEnum state)
{
switch (state)
{
case PortsEnum.CLEAR:
return "CLEAR";
case PortsEnum.SSL:
return "SSL";
default:
return "CLEAR";
}
}
</script> CREATE PROC dbo.PersonAddressTypeProc
AS
SELECT
AddressTypeID,
Name,
rowguid,
ModifiedDate
FROM
Person.AddressType
GO
CREATE ENDPOINT GetAddressType
STATE = <%=GetState(InitialState) %>
AS HTTP
(
PATH = '/AddressType',
AUTHENTICATION = (<%=GetAuthentication(Authentication) %>),
PORTS = (<%=GetPort(Port) %>),
SITE = 'localhost'
)
FOR SOAP
(
WEBMETHOD 'AddressTypeList'
(NAME='AdventureWorks.dbo.PersonAddressTypeProc'),
BATCHES = DISABLED,
WSDL = DEFAULT,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://AdventureWorks/AddressType'
)
GO

从学CodeSmith谈程序员学习方法的更多相关文章

  1. 浅谈程序员创业(要有一个自己的网站,最好的方式还是自己定位一个产品,用心把这个产品做好。或者满足不同需求的用户,要有特色)good

    浅谈程序员创业 ——作者:邓学彬.Jiesoft 1.什么是创业? 关于“创业”二字有必要重新学习一下,找了两个相对权威定义: 创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合,从而 ...

  2. [置顶] think in java interview番外篇-谈程序员如何修练英语

    一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. ...

  3. IBM总架构师寇文东谈程序员的职业规划

    有些年轻的程序员向我咨询,将来的路该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功,到底选择哪条路,取决于自己的兴趣.可能有程序员会问:如果还没有找到自己的兴趣怎么办?我的建议是多尝试,努力做, ...

  4. 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  5. 阿里面试回来,想和Java程序员谈一谈(转载)

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  6. Coding girl一个老程序员谈到的一个女程序员的故事

    因为有人说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件 ...

  7. fw: 专访许鹏:谈C程序员修养及大型项目源码阅读与学习

      C家最近也有一篇关于如何阅读大型c项目源代码的文章,学习..融合.. -------------------- ref:http://www.csdn.net/article/2014-06-05 ...

  8. 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)

    前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...

  9. 程序员肺被切掉一块还得去加班... 再谈“工作996,生病ICU”

    如题,为什么要说再谈“工作996,生病ICU”,因为996问题早已不是一个新问题,在我最近刚出版的新书<SOD框架“企业级”应用数据架构实战>写作期间,爆发了一次程序员“起义”,出现了一个 ...

随机推荐

  1. Word图片上传控件卸载教程-Xproer.WordPaster

      卸载教程:      卸载控件-IE          Windows XP          Windows 7(x86)          Windows 7(x64)      卸载控件-C ...

  2. Linux后台开发工具箱

    https://files-cdn.cnblogs.com/files/aquester/Linux后台开发工具箱.pdf 目录 目录 1 1. 前言 3 2. 脚本类工具 3 2.1. sed命令- ...

  3. Matlab作图

    修改线宽 plot(x,y,'LineWidth',1.5) 在xlabel,ylabel,title中使用latex语言 xlabel('$x$','interpreter','latex') yl ...

  4. 一份不太简短的LaTeX模板

    编译环境: Ubuntu16.04 texllive2016 sublime text3 + latextools 该模板使用与自己写文档,记笔记,记录代码,写作业等等. %!TEX program ...

  5. redis之hello

    1.创建一个maven工程 2.进入redis官网 https://github.com/xetorthio/jedis 3.找到 <!--导入到pom.xml文件中--><depe ...

  6. noip第27课作业

    1. 繁忙的都市 [问题描述] 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个 ...

  7. 分形之谢尔宾斯基(Sierpinski)四面体

    前面讲了谢尔宾斯基三角形,这一节的将对二维三角形扩展到三维,变成四面体.即将一个正四面体不停地拆分,每个正四面体可以拆分成四个小号的正四面体.由二维转变到三维实现起来麻烦了许多.三维的谢尔宾斯基四面体 ...

  8. lnmp mysql添加用户命令

    cd /usr/local/mysql/bin/grant all privileges on *.* to 'root'@'%' identified by '12345678';flush pri ...

  9. Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析

    Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again Loaded pl ...

  10. 【转】OAuth2.0的refresh token

    转载自http://www.html-js.com/?p=1297 最近看人人网的OAuth认证,发现他是OAuth2.0,之前一直看的是新浪的OAuth,是OAuth1.0. 二者还是有很多不同的, ...