从学CodeSmith谈程序员学习方法
一直觉得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谈程序员学习方法的更多相关文章
- 浅谈程序员创业(要有一个自己的网站,最好的方式还是自己定位一个产品,用心把这个产品做好。或者满足不同需求的用户,要有特色)good
浅谈程序员创业 ——作者:邓学彬.Jiesoft 1.什么是创业? 关于“创业”二字有必要重新学习一下,找了两个相对权威定义: 创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合,从而 ...
- [置顶] think in java interview番外篇-谈程序员如何修练英语
一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. ...
- IBM总架构师寇文东谈程序员的职业规划
有些年轻的程序员向我咨询,将来的路该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功,到底选择哪条路,取决于自己的兴趣.可能有程序员会问:如果还没有找到自己的兴趣怎么办?我的建议是多尝试,努力做, ...
- 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 阿里面试回来,想和Java程序员谈一谈(转载)
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- Coding girl一个老程序员谈到的一个女程序员的故事
因为有人说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件 ...
- fw: 专访许鹏:谈C程序员修养及大型项目源码阅读与学习
C家最近也有一篇关于如何阅读大型c项目源代码的文章,学习..融合.. -------------------- ref:http://www.csdn.net/article/2014-06-05 ...
- 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...
- 程序员肺被切掉一块还得去加班... 再谈“工作996,生病ICU”
如题,为什么要说再谈“工作996,生病ICU”,因为996问题早已不是一个新问题,在我最近刚出版的新书<SOD框架“企业级”应用数据架构实战>写作期间,爆发了一次程序员“起义”,出现了一个 ...
随机推荐
- CImageList
创建 有五个重载函数,分别如下: BOOL Create(int cx, int cy, UINT nFlags, int nInitial, int nGrow); BOOL Create(UINT ...
- TypeError: 'MongoClient' object is not callable
在声明数据库的时候,将中括号[ ]换成了圆括号() 错误:
- libtool 创建库的工具
libtool 创建库的工具 1. 背景 在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的用法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样. 对于开发人 ...
- sqlserver,杀掉死锁的进程
USE [erpdb1]GO/****** Object: StoredProcedure [dbo].[p_lockinfo_MyKill] Script Date: 12/26/2014 ...
- ELK冷热数据分离
通常情况下,我们使用ELK日志分析平台最常用的数据时间为1周或一个月(因业务场景不同,可能存在差别),时间比较长的数据没有特殊情况可能我们就没有必要再进行查询了,但是因业务需求或者作为凭证,这些日 ...
- IIS伪静态配置,使用URLRewriter实现伪静态
前段时间开发公司官网,用到了URLRewriter实现伪静态,在VS调试模式下没有任何问题,部署到IIS上后总是提示404的错误,查了很久才知道IIS需要做相应的配置才能实现动态跳转的功能,现将IIS ...
- EF三种编程方式详细图文教程(C#+EF)之Database First
Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...
- 【转】JS中的call()和apply()方法
原文:http://uule.iteye.com/blog/1158829 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) ...
- CopyOnWriteArrayList源码解析(1)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 注:在看这篇文章之前,如果对ArrayList底层不清楚的话,建议先去看看ArrayList源码解析. ht ...
- Python运维脚本整理
Python 实现的自动化服务器管理 import sys import os import paramiko ssh = paramiko.SSHClient() ssh.set_missing_h ...