Aug 07

gasp_lessons How to think like a computer scientist : Learning with Python v2nd edition

很不错的一个教程,不仅仅从头讲解了Python,更重要的是帮助我把计算机编程知识进行了一次梳理。

学习笔记(一)针对的是第一章 The way of the program

作为一名计算机科学家,最重要的是解决问题的能力。(Problem solving)

Python

编程语言可以分为高层语言(High-level language)和低层语言(Low-level language)。高层语言,比如c++,java,python,需要先转换成低层语言,比如汇编,因此会花费一些时间,这也是高层语言的缺陷。但是高层语言有很大优势

  1. 编程方便,容易理解
  2. 更加轻便(portable),可移植性更好,底层语言需要针对不同平台进行修改

高层语言转换为地层语言的程序有两种:解释器(interpreter)和编译器(compiler)。解释器读取代码,一步步执行代码。编译器把源代码 (Source code)编译为对象码(Object code),然后再执行。

现代的编程语言普遍采用了这两种方式,先把源代码编译为字节码(Byte code),然后在虚拟机(Virtual machine)中解释执行。

Python也采用了这两种方式,但是由于程序员编程的方式,一般把python看做解释性语言。Python有两种解释方式:shell modescript mode

什么是程序

程序是顺序的计算指令。它包含了input, output, math, conditional execution, repetition,任何程序都是由这几个要素组成的。

什么是Debug

程序的错误就是bug,解决bug就是debug

程序的错误分为三种:语法错误(syntax error),运行时错误(runtime error),语意错误(semantic error)。

对于一些人,编程和debug是同时进行的,可以保证程序的可运行性。

形式语言和自然语言

自然语言(Natural language)就是世界上的语言,英语法语等
形式语言(Formal language)是人们为了某个目的设计的,比如数学和化学中语言

形式语言有两个要素:tokenstructure。分析语言的过程就是parsing

相比于形式语言,自然语言不明确(ambiguity),重复(redundancy),literalness。

written by Kyle Wu \\ tags: ,

Jul 18

第一次使用dom4j进行xml文件的处理,使用很简单,开发很高效。

测试中中文会出现乱码,看了一下生成的文件,默认为utf-8存储,这样乱码必然会出现。

解决方法也很简单,见如下代码

        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("gbk");
        XMLWriter writer = new XMLWriter(new FileWriter("commands.xml"), format);
        Document document = reader.read("commands.xml");
        writer.write(document);
        writer.close();

也就是在写入文件时设置一下编码格式就可以解决乱码问题。

written by Kyle Wu \\ tags:

Jun 01

在Windows下,Code::Blocks的设置很简单,找到GTK+所在的文件夹,将include,lib文件夹分别写入就可以了。但是在Ubuntu下没有一个单独的文件夹保存所有这些文件,所以配置要麻烦一些。

不过使用pkg-config就很简单了。pkg-config可以帮助我们找到include和lib路径。

命令行下直接键入:

pkg-config –cflags gtk+-2.0

pkg-config –libs gtk+-2.0

可以看一下效果。

打开Code::Blocks,在Global variable选项里,将include和lib中分别填入如下配置:

`pkg-config –cflags gtk+-2.0`

`pkg-config –libs gtk+-2.0`

这样就可以了,写一个示例程序直接跑就可以了,不会再报找不到头文件的错误了。

这里补充几个可能用到的内容

sudo apt-get install build-essential #这将安装gcc/g++/gdb/make 等基本编程工具

sudo apt-get install gnome-core-devel #这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件

sudo apt-get install pkg-config #用于在编译GTK程序时自动找出头文件及库文件位置

sudo apt-get install devhelp #这将安装 devhelp GTK文档查看程序

sudo apt-get install libglib2.0-doc libgtk2.0-doc #这将安装 gtk/glib 的API参考手册及其它帮助文档

sudo apt-get instal glade libglade2-dev #这将安装基于GTK的界面构造程序

written by Kyle Wu \\ tags:

May 30

去年的此时,我参加了百度之星2008的比赛,最终得到一件T-shirt。
今年,百度之星比赛依旧。
今晚将有第一场初赛,需要承认,这一年我没有去看算法的东西,尽我能力吧。

written by Kyle Wu

Apr 23

前面几篇教程已经把Google Web Toolkit 和 Google App Engine 两方面的代码完成了很大部分,这篇教程将让Google Web Toolkit 的客户端代码与 Google App Engine 的服务器端代码联合起来,实现客户端和服务器端的交互。

Google Web Toolkit 如何与服务器交互?

Google Web Toolkit 的程序最终会以JavaScript代码的形式在用户的浏览器上运行。所以,如果要与服务器交互,要使用JavaScript支持的方法。Google Web Toolkit 为我们提供了3种方法。

远程过程调用 (Remote Procedure Calls, GWT RPC)

如果项目的服务器端使用Java,并且为服务器端的操作都使用了各种接口,那么 GWT RPC是最好的选择。因为我们使用 Google App Engine 作为服务器端,使用Java编码,所以接下来将使用 GWT RPC来完成我们接下来的教程。
更详细的有关 Remote Procedure Calls 的介绍,请看这里

HTTP 取回 JSON

如果项目的服务器端没有使用Java,亦或是已经使用了JSON 或 XML,那么就可以通过HTTP来取得JSON来实现与服务器端的交互。
更详细的有关 JSON 的介绍,请看这里

利用 JSONP 协议

如果你对 mashup 很感兴趣,那么一定不能错过 Google Web Toolkit 提供的这种方法。
更详细的有关 JSONP 的介绍,请看这里

定义 Service Interface

Continue reading »

written by Kyle Wu \\ tags: , , , , ,