How to Think Like a Computer Scientist,我已经读完了,由于时间紧迫,没有继续写笔记,对不起各位同学。
有一个好消息是,Dive into Python 3,已经可以看到了,希望学习Python的同学可以去看一下。
How to Think Like a Computer Scientist,我已经读完了,由于时间紧迫,没有继续写笔记,对不起各位同学。
有一个好消息是,Dive into Python 3,已经可以看到了,希望学习Python的同学可以去看一下。
Chapter 2. Variables, expressions and statements
每个值属于不同的类型,如整形(int),字符串(str),浮点型(float)
变量是代表一个值的名称。(assignment statement)新建了一个变量,并为其赋值。(assignment operator)即“=”
变量名有一定的要求,并不是每个名称都可用。
关键字是编程语言用来表述规则或结构的名称,变量名不能是关键字。
python有31个关键字。
声明是python可以解释执行的一条指令。
包括+ – * / **以及括号。一般的编程语言在计算时采用普通的计算顺序,括号>成方>乘除>加减。
python的输入函数
raw_input(“Please enter your name: “)
input(“Enter a numerical expression: “)
注释(Comment)
用#进行注释
How to think like a computer scientist : Learning with Python v2nd edition
很不错的一个教程,不仅仅从头讲解了Python,更重要的是帮助我把计算机编程知识进行了一次梳理。
学习笔记(一)针对的是第一章 The way of the program
作为一名计算机科学家,最重要的是解决问题的能力。(Problem solving)
编程语言可以分为高层语言(High-level language)和低层语言(Low-level language)。高层语言,比如c++,java,python,需要先转换成低层语言,比如汇编,因此会花费一些时间,这也是高层语言的缺陷。但是高层语言有很大优势
高层语言转换为地层语言的程序有两种:解释器(interpreter)和编译器(compiler)。解释器读取代码,一步步执行代码。编译器把源代码 (Source code)编译为对象码(Object code),然后再执行。
现代的编程语言普遍采用了这两种方式,先把源代码编译为字节码(Byte code),然后在虚拟机(Virtual machine)中解释执行。
Python也采用了这两种方式,但是由于程序员编程的方式,一般把python看做解释性语言。Python有两种解释方式:shell mode和script mode。
程序是顺序的计算指令。它包含了input, output, math, conditional execution, repetition,任何程序都是由这几个要素组成的。
程序的错误就是bug,解决bug就是debug。
程序的错误分为三种:语法错误(syntax error),运行时错误(runtime error),语意错误(semantic error)。
对于一些人,编程和debug是同时进行的,可以保证程序的可运行性。
自然语言(Natural language)就是世界上的语言,英语法语等
形式语言(Formal language)是人们为了某个目的设计的,比如数学和化学中语言
形式语言有两个要素:token和structure。分析语言的过程就是parsing。
相比于形式语言,自然语言不明确(ambiguity),重复(redundancy),literalness。
第一次使用dom4j进行xml文件的处理,使用很简单,开发很高效。
测试中中文会出现乱码,看了一下生成的文件,默认为utf-8存储,这样乱码必然会出现。
解决方法也很简单,见如下代码
也就是在写入文件时设置一下编码格式就可以解决乱码问题。
在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的界面构造程序
去年的此时,我参加了百度之星2008的比赛,最终得到一件T-shirt。
今年,百度之星比赛依旧。
今晚将有第一场初赛,需要承认,这一年我没有去看算法的东西,尽我能力吧。
前面几篇教程已经把Google Web Toolkit 和 Google App Engine 两方面的代码完成了很大部分,这篇教程将让Google Web Toolkit 的客户端代码与 Google App Engine 的服务器端代码联合起来,实现客户端和服务器端的交互。
Google Web Toolkit 的程序最终会以JavaScript代码的形式在用户的浏览器上运行。所以,如果要与服务器交互,要使用JavaScript支持的方法。Google Web Toolkit 为我们提供了3种方法。
如果项目的服务器端使用Java,并且为服务器端的操作都使用了各种接口,那么 GWT RPC是最好的选择。因为我们使用 Google App Engine 作为服务器端,使用Java编码,所以接下来将使用 GWT RPC来完成我们接下来的教程。
更详细的有关 Remote Procedure Calls 的介绍,请看这里。
如果项目的服务器端没有使用Java,亦或是已经使用了JSON 或 XML,那么就可以通过HTTP来取得JSON来实现与服务器端的交互。
更详细的有关 JSON 的介绍,请看这里。
如果你对 mashup 很感兴趣,那么一定不能错过 Google Web Toolkit 提供的这种方法。
更详细的有关 JSONP 的介绍,请看这里。
前面已经向同学们简要介绍了Google Web Toolkit 和 Google App Engine ,并且做出了一个初步的界面。在这篇教程里,我们将一起学习如何使用Google App Engine 的数据库。
Google App Engine 的数据库提供了健壮的可扩展的分布式数据存储,我们不必考虑连接哪一个数据库,也不需要配置连接参数。我们需要做的是调用简单的API来进行各种操作。
Google App Engine 的数据库提供了两套API : 标准API和底层API。标准API是与App Engine解耦的,所以使用标准API你可以很方便的将你的应用移植到其他环境中;而是用底层API,你可以让你的应用拥有更好的性能。
Google App Engine 支持两种连接数据库的标准: Java Data Objects (JDO) 和 Java Persistence API (JPA)。从Google App Engine 的网站中可以看到,它们都是由DataNucleus Access Platform提供的,不过我没有细看,有兴趣的同学可以自己点进去学习。
Java Data Objects (JDO) 是存储对象的标准接口。使用了JDO的应用程序不需要关心数据库类型,不论是关系数据库,层次数据库还是对象数据库,这样在我们更换数据源的时候会非常的方便。
要在Google App Engine项目中支持JDO,需要进行配置,不过Eclipse的插件已经帮我们做好了,再次请有兴趣的同学移步这里仔细学习。
Java Persistence API (JPA) 和JDO的作用相似,我现在使用的JDO,所以就不多做介绍了,链接补上。
前面进行了简单介绍,下面来实际操作一下。新建一个net.kylewu.idea.db.dataobject.Idea类。
诸位还不清楚Google Web Toolkit 和 Google App Engine是什么的同学,请移步这里,看我的综合教程 启蒙篇。
请装好Eclipse的插件,后面的程序都是以插件为准,用命令行的同学请自己注意。
点击最左面的小图标就开始创建新的Web应用。我这里创建了一个名为kylewuidea的Project,包设为net.kylewu.idea,我们这里要同时使用Google Web Toolkit 和 Google App Engine,所以两个都要选择支持。确认后可以看到Eclipse为我们创建好了整个Project,结构见图。


打开Kylewuidea.java,里面已经写好了一个事例程序,有兴趣的同学可以先熟悉一下。接下来删除这个文件里多余的代码,仅保留下面这些。
Google Web Toolkit : 如今,编写网络应用程序是一个单调乏味且易于出错的过程。开发人员可能要花费 90% 的时间来处理浏览器行话。此外,构建、重复使用以及维护大量 JavaScript 代码库和 AJAX 组件可能困难且不可靠。Google Web 工具包 (GWT) 通过允许开发人员用 Java 编程语言快速构建和维护复杂但高性能的 JavaScript 前端应用程序来减轻该负担。
Google App Engine : Google App Engine 使您可以在支持 Google 应用程序的同一可扩展系统上构建网络应用程序。
上面是直接摘自Google Web Toolkit 和 Google App Engine 的主页。总的来说,前者提供一个用Java编写Javascript的工具,后者提供一个网络平台,用户可以在上面搭建自己的应用。
首先,如Google一贯作风,两者都是免费的,是code.google.com下的项目。
其次,Google App Engine开始支持Java,这样,两个工具在一起使用更加方便了。
当然,熟悉了Google Web Toolkit有助于开发JavaScript,了解Google App Engine可以在网上搭建自己的应用。
最后,学习新技术是提升自己的途径,能够开阔自己的眼界,锻炼自己的思想。
我推荐最简单的方法就是去下载Eclipse插件。具体的方法请Google或者baidu,有空的话我会再写一篇介绍的文章。
Google Web Toolkit 和 Google App Engine 都有各自的教程,喜欢看的可以看一下。当然在这里就不是仅仅翻译一下教程了,我将带领大家来构建一个Google Web Toolkit 和 Google App Engine 整合的应用。
最近我总是有一些想法或者创意,可总是没时间实现,这样时间一长,就忘记了,所以我想写一个列表,这样,每当我有新的想法,那么我就可以记录下来,以后就可以回顾,看看自己都想了什么都做了什么
上面就是我问什么做这个应用的原因,东西十分的简单,其实主要还是希望能够与大家一同入门,熟悉Google Web Toolkit 和 Google App Engine 的开发。
好了废话不多说了,开始吧,这个教程最终的结果见这里。