• typecho学习札记

    近日用typecho搭建了一个小站www.jingang.org (为何不用WP?那个VPS的内存不够大,WP是比较耗资源的,而且WP的速度不是很快,typecho在这方面是很有优势的),但是由于typecho的资料比较少,而且刚试用这个程序,很多都不懂,找了半天解决了一些小问题。

    首先是typecho的title我觉得写的不是很好,就找到了默认模板中header.php做了些修改。

    原来的title是这样的

    <title><?php $this->options->title(); ?><?php $this->archiveTitle(); ?></title>

    我把他改成这样的

    <title><?php if ($this->is(‘index’)){
    $this->options->title();
    }else{
    $this->archiveTitle(”,”,’|’);
    $this->options->title();
    }
    ?>
    </title>

    这样的效果是如果是首页就显示你的博客title,如果是其他页面就显示你的日志标题+你的博客title。

    还有一个就是对header.php中调用的那个$this->header() 做了个修改 ,$this->header()的定义在 /var/Widget/Archive.php中(开始我找了好久不知道在哪里定义的,后来在typecho坛子中羽中在回答别人的问题时提到了这个文件,激动哇)

    原来的$this->header()在header.php中加入了不少feed还有generator等信息,有的我不想要,就删除了。

  • 简述C及 C++ 程序员学习历程

    觉得这篇文章说的很不错 给大家分享下。

    1、可以考虑先学习C.

      大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。

      C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。

      毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。

      因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解决大问题的能力。就是先学习怎么走路,再学习怎么跑步。

      2、学习C的过程中,一定要理解结构化编程思维。

      为什么呢,我前面有文章说过,软件语言的发展过程,就是一个数据私有化的过程,大型工程应用,强调高内聚,低耦合,模块化设计,保持代码最大的灵活性和安全性。
    这是现代工程化开发的核心和灵魂。

      因此,利用C这门语言入门,借此理解结构化开发思维,可以说是个很方便的路子。因为C的函数,本来就是为重用做准备的。同时,全局变量和cpp内部私有变量的差别,其使用原则,这些都能学到很多结构化开发思维。

      3、开始学习C++

      C++不难学的,很多人觉得C++难学,其实是因为它在C之外,又提供了很多的概念,尤其是对象,很难以理解。

      不过我经过这么多年,把这个问题反而看淡了,我认为面向对象相对面向过程,仅仅是结构化程序设计的一个具体体现,是编译器提供手段,强迫程序员必须遵循数据私有化的一个实例,C++和C的关系,最核心的莫过于此。

      现在我们回到C再看看,如果我们把一个全局变量,写到一个cpp里面,并且在对应的h文件中不声明,它是不是就只有这个模块可以使用?它是不是就是私有变量,以这个理解,类能明白了吗?

      4、学习C++的深入技巧

      C++在类的基础上,经过这么多年的发展,其实提供了很多深入的概念,看起来很复杂,其实我看也很简单。比如模板,我的理解就是“类的类”,大家说是不是?

      既然模板理解了,STL,ATL这些,静态模板库,动态模板库,还难理解吗?就是一大堆类的类,可以借此实现很多应用中需要的类,不需要程序员再自己写而已。

      ok,STL都理解了,泛型开发还难吗?所谓泛型开发,其实就是我做一个模板,来定义一套算法规则,但是呢,我希望这个算法规则,能进一步抽象,对核心数据类型不要限死,我把各种数据套进去,都可以用,这样,仅算法这部分,我不需要重写了。你想想是不是这个道理?

      学到这里,C++和C,其实已经差不多了。再学语言,就是求全责备,过于钻牛角尖了。

      5、学习应用开发

      前面说了,学习语言,目的不是让别人认为自己是专家,是为了写程序赚钱。因此,语言学完,要学习应用开发。

      什么叫应用开发呢,我会一门语言,但是,客户不懂,客户说的很直接,在Windows下给我写个程序,我要什么什么功能。为啥Windows呢?因为我习惯。

      OK,很多时候,应用开发要尊重客户习惯,一般说来,语言这个东东,还是要结合具体平台的开发,才能开发出有意义的应用程序卖钱。那么,一般说来,客户端是Windows系统,服务器是Linux,这些都是行业习惯,嵌入式不好说,各种平台都有,Palm,S60,Linux,WinCE,等等。要根据自己的目标客户来定。

      当我们选定目标平台后,有一个问题,选什么语言,很多时候,学生和商用程序员差别就在这里,学生一般没得选,自己会啥就用啥呗,企业里的程序员不会,要先评估需求,看哪个语言更合适,不会的语言,要去学。

      ok,假定我们选了C和C++,那么,我们需要选择开发平台,Windows下不用说了,VC,这是最好用的,Linux下呢,gcc,其他的也差不多。

      假如我们开发VC,并且使用C++,这个时候,才需要考虑学习MFC了,因为这是微软的标准类库,至少Windows平台下,它最权威,你看见没有,我们从学习开始,走了多少步,才走到MFC?是不是MFC不是学习C++上来就必须学的?

      6、学习MFC

      学习MFC,很多人一上来就开始看其体系架构,看得一头雾水,那个模块关系依赖图,我到现在都看不懂。

      呵呵,其实不是啦,和学语言一样,我们学MFC的目的,也不是希望成为MFC的专家,而是要利用MFC开发Windows应用程序,为我们赚钱。看见没?MFC是手段,不是目的,目的是开发Windows程序。

      其实Windows下,有一套很标准的C接口,叫Win32API,这个才是Windows的标准编程核心,因此,学习MFC,真实的目的是理解Windows程序开发,建议可以先学习Win32API,看来我们又回到C了哈,呵呵。刚开始学C有用吧?

      7、Win32API

      其实Win32APi不难学的,因为虽然它很大,有很多接口,但不是必须的,我们真正做个简单的Windows应用,其实用不到这么多的。做个简单的Dialog,然后实现个功能,你遇到的接口函数,其实绝大多数,就是以后常用的了。把常用的记熟练,就ok了。

      关键是,这个时候要通过WinMain方式,去理解Windows的事件机制,这是核心,其实说起来简单得要死。就是以前你的程序,由于没有系统支撑,很多事必须自己做,比如检查鼠标和键盘输入,你需要写个死循环,自己不断去看,而Windows说,这些事你不要做了,我来做比你好。你没事就玩去吧,我把和你相关的消息放到一个队列里,就是你的事件队列,你自己没事去找找看,有没有新消息来,有就做事,没事就玩好了。很简单是不?

      当然,Windows是多任务操作系统,有时候,我们的逻辑需要并发一些功能,比如说,我在等鼠标键盘消息的时候,需要再看看打印机准备好了没有,这里就需要理解并行计算了,这和语言无关,和操作系统无关,这是另外一个话题,这里不多说了,你可以自己找找线程开发的相关资料看。

      看见没,为了学习好Windows编程,其实我们不仅仅需要学习语言,还要学习操作系统,并行计算原理,内存原理,可能有时候还需要学习网络通信,等很多知识,所以说,单凭学习语言,是成不了商用程序员的,一个合格的程序员,需要理解的东西,太多了,要广为学习。

      当我们把Win32API,以及基本的窗口化程序设计理解了,就可以回到MFC继续学习了。是不是有点递归返回的意思?呵呵。

      8、回到MFC

      原来学MFC很难的,因为其封装了太多细节,很难理解透彻。不过还好,我们有侯老师的深入浅出MFC,去找本来看看,如何从Win32API的纯C编程,改变为MFC的C++方式,看这个最快,基本上前6章看完,已经会了,这里我就不多说了。

      9、COM

      COM、COM、COM,我最头疼的COM,呵呵。

      COM就是一种远程过程调用,即你请求的代码是在另外一个进程中运行的,通过某种通信协议来回传递参数和结果。仅此而已。DCOM进了一步,服务者可以在另外一台计算机上。在公司开发中,大家可能各做一块,如果要合作,Windows下建议多使用COM.(我个人喜欢socket通信哈)

      简单说,COM提供了一种机制,可以跨进程通信,甚至跨机器通信。不过,为了传递各种类型的参数,COM可谓是无所不用其极,它发明了智能指针,可以指向任何类型的数据,同时,为了实现智能指针,它使用了大量的C++泛型设计,看见没,C++的基本功就起作用了,还用到了ATL.

      学习COM,要注意一个接口的概念。由于开发者是不同的人,调用程序和服务程序,可能不是同一种语言,OK,不能简单提供一个C或C++的。h文件来解答接口,因此,COM提供了标准接口,使用者在程序内部,以查询方式获得可用接口,进而以接口ID调用。很累人的。

      学会了COM,就可以多理解一点ActiveX了,那么再学习一点dll(动态链接库)的知识,我们就已经可以写OCX控件了。一般说来,OCX控件是个很好的设计,哪都能用,一个软件的模块,最理想是开发成这个样子,比exe灵活。

      10、没了。

      按少林派说法,学了上述这些,其实已经算打过18铜人阵了,已经可以下山助明主,扫奸佞,扭转乾坤,解万民于倒悬了。

      不过,关键是你通过上面的过程,是不是已经学会了学习的方法,再遇到新的东东,是不是已经不难学了?这大概就是武学中的悟性了,有了这个根基,以后只要慢慢修炼,估计20年后,可与天下英雄一较短长了。

       呵呵,你说是不是?
      呼呼,好累。

    本文来自CSDN博客 http://blog.csdn.net/deerfpp/archive/2009/10/13/4666333.aspx

  • zenoven:新手JAVA路(3) HelloWorld

    上一节我们讲了Eclipse的基本安装,但是没有具体说明怎么用Eclipse编写程序,这一节我们就来用Eclipse编写最基础的HelloWorld程序。

    首先启动Eclipse,依次点击File>New>Java Project ,然后在project name 上面输入工程的名字,这里我们输入ch1

    eclipse5

    然后点击finish

    eclipse6

    然后在ch1上面点击右键,依次选择new> classeclipse7

    然后在Name上面填写HelloWorld(注意大小写,JAVA严格区分大小写,另外Java的class(类)的名字的命名规范是每个单词的首字母大写,其他字母小写),然后选中public static void main(String[] args)

    eclipse8

    点击finish。

    其实到现在才进入真正的JAVA编写阶段。

    在中间的代码窗口中加入这样一行语句

    System.out.println(“你好,这是我的第一个JAVA程序!”);

    下面是全部代码

    eclipse9

    然后按Ctrl+S保存,点击菜单栏的Run>Run,这样在屏幕的最下方就会输出一行文字

    eclipse10

     

    eclipse11

    这样我们的HelloWorld 程序就真正的显示出来啦~~

  • zenoven:新手JAVA路(2) Eclipse的基本使用

    从Eclipse官网下好Eclipse,在SUN官网下好JRE(或JDK)后,安装完JRE(JDK) 就可以开始写JAVA程序了。(当然,只要装有JDK,不用Eclipse,用任何文本编辑器编辑器都是可以的。)

    JDK和JRE以及Eclipse的下载地址在上一节里面有,点这里可以查看。

    首先安装JRE或是JDK,然后把Eclipse解压出来就行了。
    初次打开Eclipse会让你选择workspace,也就是你以后编写的Java文件存在哪里。

    eclipse1

    这个可以根据实际需要设置,最好设置在非C盘。

    下面就进入了Eclipse的欢迎界面

    eclipse2

    我们点右边的Workbench 进入Eclipse主界面

    eclipse3

    这里就可以进行JAVA程序的编写了

    eclipse4

  • zenoven:新手JAVA路(1) JAVA基本概念

    JAVA其实不是很难学,本人学JAVA也没多久,最大的体会是和C/C++风格很像,因为以前学过C++所以上手并不是很难。

    JAVA是完全面向对象的,是由众多的类组成的,如果从C刚过渡到这可能会有些不适应,但是很快就好了,毕竟和C很像的。。。

    关于JAVA的历史本人就不多说了,可以去百度看看。。。

    要运行JAVA程序,首先得有JAVA运行环境,可以下载个JDK,然后用Eclipse就行了。这里先说下几个概念,JRE,JDK,JAVA SE,JAVA EE,JAVA ME。
    这些名字其实都是英文的短写,只要知道了英文单词意思并不难理解。

    1.  JRE –Java Runtime Environment,JAVA运行时环境,要想运行JAVA程序,这个是必须的
    2. JDK–Java  Development Kit,意为JAVA 开发环境,JDK本事包含了JRE,所以如果有了JDK就不用下载JRE了
    3. JAVA SE,EE,ME– Java Standard Edition,Enterprise Edition,Micro Edition,就是JAVA开发的不同版本,依次为标准版,企业版和微平台版本。

    这里是JRE和JDK的当前最新版下载地址

    JRE 6u16 for Windows

    JDK 6u16 for Windows

    下面介绍下Eclipse,Eclipse是SUN公司的开源平台,其不仅能开发JAVA,如果装上各种插件后,开发像C/C++,PHP等各种开发语言都是可以的。Eclipse可以到www.eclipse.org 下载。

    这是官网的下载地址  eclipse-SDK-3.5-win32.zip

    当然也可以不用Eclipse,用任何文本编辑器编写然后 javac编译,java 运行就行。

  • 资深JAVA讲师推荐的JAVA学习顺序

    1.学习Java SE部分的内容,这部分是基础内容。掌握的越扎实,后面的内容学习起来就越容易。
    2.学习SQL和数据库的内容 ,这个也是非常基础的内容,举个例子:程序员的面试题中一定会有SQL部分的考试。
    3.学习HTML、css、JavaScript的内容。
    4.学习,JSP、Servlet、JavaBean、标记库、JSTL、MVC、JSP EL等Web编程的部分
    5.学习Struts 或者Spring MVC。二者取其一即可,推荐选Struts
    6.学习Java与XML ,重点掌握使用Java技术对XML文件的解析
    7.学习Java EE的核心技术 ,例如:JNDI、EJB3等,同时还需要学习使用与配置应用服务器,例如:webLogic Server,Websphere,JBoss
    8.学习Hibernate 等持久层的技术
    9.学习Spring
    10.学习AJAX
    11.学习ANT、Subversion等开发工具,熟悉常见的软件开发模型,例如:rup、XP
    12.学习OOA与OOD,uml,设计模式
    13.学习Web Services、SOA的原理与应用开发
    最后,现在很多公司都使用Linux系统做为服务器系统,并且使用Linux系统进行程序的开发(都是出于使用正版的考虑),所以Linux系统的安

    装、使用和简单管与配置,也是需要学习,这部分内容,跟其他内容没有关联,可以在任何时候学。推荐学习完SQL与数据库之后进行学习。

    你要想找到一份不错的Java程序员工作,最基本的也要把1-12都学习了,当然有的内容需要深入掌握,有的内容可以慢慢的深入掌握的。