zoukankan      html  css  js  c++  java
  • 从学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
    View Code

     

     

     

  • 相关阅读:
    3.6
    2.26
    2.22
    出差记录(每日食谱)
    关于本博客的样式
    知乎搜索/(引擎)的故事
    【历史/对越自卫反击战】刘立华||我的战地笔记——陵园祭
    如何在Xpath路径中添加变量?如何将字符串传递给Xpath?
    阿里网盘搜索网站汇总
    经济学人下载
  • 原文地址:https://www.cnblogs.com/uptothesky/p/3556123.html
Copyright © 2011-2022 走看看