python学习笔记

 

#还是2个参数的都用命令行来传吧
# -*- coding: utf-8 -*-
import os,sys
CDROM ='e:\windows'
def cdWalker(cdrom,cdcfile):
    export=""
    for root,dirs,files in os.walk(cdrom):
        export+="\n %s;%s;%s" % (root,dirs,files)
    open(cdcfile,'w').write(export)
#cdWalker('e:\windows','cd1.cdc')
cdWalker(sys.argv[1],sys.argv[2])

Posted by Alex 2011年8月25日 23:59


python学习笔记之傻瓜错误

代码来自可爱的python 

 

# -*- coding: utf-8 -*-
import os,sys
CDROM ='e:\windows'
def cdWalker(cdrom,cdcfile):
    export=""
    for root,dirs,files in os.walk(cdrom):
        export+="\n %s;%s;%s" % (root,dirs,files)
    open(cdcfile,'w').write(export)
#cdWalker('e:\windows','cd1.cdc')
if "-e"==sys.argv[1]:
    cdWalker(CDROM,sys.argv[2])
    print "记录光盘信息到 %s" %sys.argv[2]
else:
    print '''PyCDC使用方式:
    python pycdc.py -e mycd1-1.cdc
    #将光盘内容记录为mycd1-1.cdc
    '''

然后先前我设置了环境变量,结果就直接cmd下执行python e:\pycdc1.py -e e:\mycd1.cdc

后来一次不小心关掉cmd之后,我想起了Python(command line) 打开之后我输入了同样的命令

 

>>> python e:\pycdc1.py -e e:\mycd1.cdc
  File "<stdin>", line 1
    python helloworld.py
                    ^
SyntaxError: invalid syntax

谷歌之

the >>> prompt indicates you are already running python interpreter.

You need to enter that command from the shell prompt.

Press Ctrl-D to exit Python to the ordinary shell prompt and try again.

Posted by Alex 2011年8月25日 23:51


Python 幽默剧?

Python学习手册上的一个笑话  看不懂

在Python学习手册的第33页 

送给Python代码的例子加入一种幽默的特质。比如,一般说来,传统的变量名为"foo"和"bar",在Python的世界中变成了"spam"和"eggs"。而有时出现的"Brian"、"ni"、"shrubbery"等也是这样来的,这种方法设置很大程度上影响了Python社区:Python会议上的演讲往往叫做"The Spanish Inquisition" 。

当然,如果你熟悉这个幽默剧的话,所有这些你都会觉得很有趣,否则就那么有意思了。你没有必要为了理解引自Monty Python(也许这本书中你就会找到)的例子而刻意去熟悉这一串剧情,但是至少你现在应该知道它们的来源。

 

有点好奇,虽然以后可能会在书中看到,我还是打算先把这个记录下来。。

Posted by Alex 2011年8月23日 09:15


第一个python程序

    很早很早就想学python,一直没开动,今天突然兴起,照着书敲了2个demo,第一个if语句那一直报错,不知道错哪。。。。

     

#!/usr/bin/env python
'makeTextFile.py -- create text file'

import os
ls = os.linesep

#get filename
while True:

if os.path.exists(fname):
    print "ERROR: '%s' already exists" %fname
else:
    break

#get file content (text) lines
all = []
print "\nEnter lines ('.' by itself to quit).\n"

#loop until user terminates input
while True:
    entry = raw_input('>')
        break;
    else:
        all.append(entry)

#write lines to file with proper line ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x,ls) for x in all])
fobj.close()
print 'DONE!'

 

第2个 可以运行了。。

 

#!/user/bin/env python

'readTextFile.py -- read and display text file'

# get filename
fname = raw_input('Enter filename:')
print

#attempt to open file for reading
try:
    fobj = open(fname,'r')
except IOError,e:
    print "***file open error:",e
else:
    #display contents to the screen
    for eachLine in fobj:
        print eachLine,
    fobj.close()

先这样了  还要做俯卧撑,然后洗澡睡觉~

 

 

2011-08-23  09:13

经过网友的热心帮助  修改makeTestFile.py如下 

 

#!/usr/bin/env python
'makeTextFile.py -- create text file'
 
import os
ls = os.linesep
 
#get filename
while True:
 
    if os.path.exists(fname):
        print "ERROR: '%s' already exists" %fname
    else:
        break
 
#get file content (text) lines
all = []
print "\nEnter lines ('.' by itself to quit).\n"
 
#loop until user terminates input
while True:
    entry = raw_input('>')
    break;
else:
    all.append(entry)
 
#write lines to file with proper line ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x,ls) for x in all])
fobj.close()
print 'DONE!'

Posted by Alex 2011年8月22日 23:48


APUE学习笔记

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <dirent.h>
  4
  5 int main(int argc,char *argv[])
  6 {
  7     DIR *dp;
  8     struct dirent *dirp;
  9
 10     if(argc != 2)
 11         printf("err argument");
 12
 13     if((dp = opendir(argv[1])) == NULL)
 14         printf("can't open %s",argv[1]);
 15
 16     while((dirp = readdir(dp)) != NULL)
 17         printf("%s\n", dirp->d_name);
 18
 19     closedir(dp);
 20     exit(0);
 21 }

 

 

  1 #include "stdio.h"
  2 #include "apue.h"
  3 
  4 int main(void)
  5 {
  6     int c;
  7     while((c=getc(stdin))!=EOF)
  8         if(putc(c,stdout)==EOF)
  9             printf("output error");
 10 
 11     if(ferror(stdin))
 12         printf("input error");
 13 
 14     exit(0);
 15 }
~          
 
 
wucy@wucy-laptop:~/app$ vim fig1.4.c
 
  1 #include "apue.h"
  2 int main(void)
  3 {
  4     printf("hello world from proces ID %d\n",getpid());
  5     exit(0);
  6 }
 
wucy@wucy-laptop:~/app$ gcc -o fig.1.4 fig1.4.c
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1933
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1934
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1935
wucy@wucy-laptop:~/app$ 
 

Posted by Alex 2011年8月21日 21:49


vim的安装和设置

wucy@wucy-laptop:~$ ls
app      examples.desktop  公共的  视频  文档  音乐
apue.2e  src.tar.gz        模板    图片  下载  桌面
wucy@wucy-laptop:~$ cd app
wucy@wucy-laptop:~/app$ ls
wucy@wucy-laptop:~/app$ vim ls.c
程序“vim”已包含在下列软件包中:
 * vim
 * vim-gnome
 * vim-tiny
 * vim-gtk
 * vim-nox
请尝试:sudo apt-get install <选定的软件包>
wucy@wucy-laptop:~/app$ sudo apt-get install vim
[sudo] password for wucy:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会安装下列额外的软件包:
  vim-runtime
建议安装的软件包:
  ctags vim-doc vim-scripts
下列【新】软件包将被安装:
  vim vim-runtime
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 433 个软件包未被升级。
需要下载 6,572kB 的软件包。
解压缩后会消耗掉 27.1MB 的额外空间。
您希望继续执行吗?[Y/n]y
获取:1 http://cn.archive.ubuntu.com/ubuntu/ lucid/main vim-runtime 2:7.2.330-1ubuntu3 [5,706kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu/ lucid/main vim 2:7.2.330-1ubuntu3 [865kB]
下载 6,572kB,耗时 6分 18秒 (17.3kB/s)                                                    
选中了曾被取消选择的软件包 vim-runtime。
(正在读取数据库 ... 系统当前总共安装有 125450 个文件和目录。)
正在解压缩 vim-runtime (从 .../vim-runtime_2%3a7.2.330-1ubuntu3_all.deb) ...
正在添加 “diversion of /usr/share/vim/vim72/doc/help.txt to /usr/share/vim/vim72/doc/help.txt.vim-tiny by vim-runtime”
正在添加 “diversion of /usr/share/vim/vim72/doc/tags to /usr/share/vim/vim72/doc/tags.vim-tiny by vim-runtime”
选中了曾被取消选择的软件包 vim。
正在解压缩 vim (从 .../vim_2%3a7.2.330-1ubuntu3_i386.deb) ...
正在处理用于 man-db 的触发器...
正在设置 vim-runtime (2:7.2.330-1ubuntu3) ...
Processing /usr/share/vim/addons/doc

正在设置 vim (2:7.2.330-1ubuntu3) ...
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/vim (vim),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/vimdiff (vimdiff),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/rvim (rvim),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/rview (rview),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/vi (vi),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/view (view),于 自动模式 中。
update-alternatives: 使用 /usr/bin/vim.basic 来提供 /usr/bin/ex (ex),于 自动模式 中。

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <dirent.h>
  4
  5 int main(int argc,char *argv[])
  6 {
  7     DIR *dp;
  8     struct dirent *dirp;
  9
 10     if(argc != 2)
 11         printf("err argument");
 12
 13     if((dp = opendir(argv[1])) == NULL)
 14         printf("can't open %s",argv[1]);
 15
 16     while((dirp = readdir(dp)) != NULL)
 17         printf("%s\n", dirp->d_name);
 18
 19     closedir(dp);
 20     exit(0);
 21 }
                                                                 

vim 自动对齐 在/etc/vimrc中设置

只要在 /etc/vimrc中加上这两句就行了
set autoindent
set smartindent
--------------------------------------------------------
pip我说过vim很好很强大滴
--------------------------------------------------------
 

====================================

详细:

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进

等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。
在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,

所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:
$vi ~/.vimrc
设置完后
$:x 或者 $wq
进行保存退出即可。
下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:
“双引号开始的行为注释行,下同
“去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
“显示行号
set number
“检测文件的类型
filetype on
“记录历史的行数
set history=1000
“背景使用黑色
set background=dark
“语法高亮度显示
syntax on
“下面两行在进行编写代码时,在格式对起上很有用;
“第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;
“第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编
“写上很有用
set autoindent
set smartindent
“第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格
set tabstop=4
set shiftwidth=4
“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
“去除vim的GUI版本中的toolbar
set guioptions=T
“当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声
set vb t_vb=
“在编辑过程中,在右下角显示光标位置的状态行
set ruler
“默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示
set nohls
“查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一
“个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依
“次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
“时,别忘记回车
set incsearch
“修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀
if has(“vms”) //注意双引号要用半角的引号" "
set nobackup
else
set backup
endif
如果去除注释后,一个完整的.vimrc配置信息如下所示:
set nocompatible
set number
filetype on
set history=1000
set background=dark
syntax on
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
if has("vms")
set nobackup
else
set backup
endif

wucy@wucy-laptop:~/app$ vim ls.c
wucy@wucy-laptop:~/app$ gcc ls.c -o ls
wucy@wucy-laptop:~/app$ ls ./
ls  ls.c  ls.c~
wucy@wucy-laptop:~/app$

 

Posted by Alex 2011年8月21日 21:35


VirtualBox虚拟机下安装增强包

    以前一直使用VM虚拟机,后来看某同事使用VirtualBox还是蛮方便的,毕竟VM的好多功能我暂时也用不到。于是后来我也改用VirtualBox。上次装RedHat的时候就为增强包折腾了好长时间,后来发现是版本的问题,换了个版本的VBox就安上了增强包,这样就很方便的全屏了。

    这次又出现了同样的问题,我起先也以为是版本的问题,因为毕竟装的版本是不一样的。我开始以为直接运行VBoxLinuxAdditions-x86.run就可以了,但提示没有管理员权限无法运行。然后我还切换到了ROOT用户,照样是没有权限,起先我以为是redhat的权限管理不一样,毕竟不怎么用redhat,然后也没去管它了,心里想着就是找到我以前那个版本的VirtualBox。今天我装了ubuntu之后发现sudo还是照样没权限。

    Google了下,后来发现是我命令打错了,尴尬。   sudo sh VBoxLinuxAdditions-x86.run   是sh命令。

    我的Linux基础果然很烂啊。

    

     

     

Posted by Alex 2011年8月21日 16:26


博客居然还有时区设置

is-programmer博客居然还有时区设置,起先的时间不知道是啥的,看了下,发表时间是凌晨3点,哇,这样太无敌了,别人都以为我晚上在写博客类,吼吼,不过为了方便以后自己查看这个时间段在看过什么,我还是把时间改成北京时间了。

Posted by Alex 2011年8月21日 16:19


最近的计划

 

先列下某人的书单

 

《计算机程序设计艺术》、《算法导论》和《编程珠玑》。

 

(麻省理工免费课程)计算机科学和编程导论

 

(麻省理工免费课程)C语言内存管理

用gdb调试程序

Nginx的反向代理机制

《代码大全》《重构》《代码整洁之道》

《C++虚函数表解析》

《C++对象内存存局(上)(下)》

《C/C++返回内部静态成员的陷阱》

《设计模式》《深入浅出设计模式》

C++虚函数表解析

ACE

关于负载均衡的文章

多层分布式系统

服务器备份,双机备份系统

BT和电驴的算法

虚拟化技术

Hadoop

NoSQL数据库搞一个了解下

 

 

分布式:

分布式系统:概念和设计

分布式系统:原理和范例

高性能集群计算:结构和系统,第1卷

高性能集群计算:编程和程序,第2卷

建造Linux集群

并行程序设计:使用网络工作站和并行计算机技术和程序

网格计算

 

《分布式计算(第二版)》

《分布式系统原理与范型》

分布式系统:概念与设计(原书第4版)

 

Posted by Alex 2011年8月21日 16:13


打算重读APUE

 

突然想起来5.1的时候曾经注册了is-programmer. 于是上来看看,发现好多优美的文章  

譬如 http://sd44.is-programmer.com/categories/6366/posts 这个是APUE的学习笔记。

看着这些高亮代码好舒服的感觉,只是我一向都是心动而不行动,泡妞也是如此。

后来又链接到http://sunxiunan.com/?p=1597  标题是谈如何学习一门新的语言。

 

于是乎我决定重读APUE。好好做做读书笔记。然后第一个就是apue.h的问题,于是乎百度头条

如下:

http://hi.baidu.com/%C2%DE%C0%ED%C7%BF/blog/item/cf6953d549c2ee0ea08bb76f.html

 

 

自己抄的程序可能会出现以下错误:
/tmp/ccmKY9AX.o: In function `main':
myday.c:(.text+0x35): undefined reference to `err_quit'
myday.c:(.text+0x6c): undefined reference to `err_sys'
myday.c:(.text+0xd9): undefined reference to `err_quit'
myday.c:(.text+0x106): undefined reference to `err_sys'
myday.c:(.text+0x13e): undefined reference to `err_sys'
myday.c:(.text+0x182): undefined reference to `err_sys'
collect2: ld 返回 1

这是因为没有包含error.c文件导致的。
可以在书上原文#include "unp.h"下面添一句 
                       #include "../lib/error.c"即可。
apue中也一样,总是找到一个叫做error.c的文件然后include 进去即可。(一般都在lib文件夹里)

 

说明:本文合并转载了2篇文章。

 


转载自:http://blog.chinaunix.net/u1/52350/showart_426726.html

最近学习Linux编程,收获真的很多。以前看都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。

linux要编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。


1.APUE2源代码下载:http://www.apuebook.com/src.tar.gz
2.我保存到了/root下.解压缩:tar -xzvf src.tar.gz
3.cd apue.2e进入apue.2e目录,查看README,告诉我们linux系统只要修改Make.defines.linux再make
4.vi Make.defines.linux 修改WKDIR=/root/apue.2e 就是说工作目录为WKDIR=/root/apue.2e
5.修改/root/apue.2e/std/linux.mk把全部的nawk改为awk.因些linux默认没有nawk
6.make

一个需要注意的地方:
apue编程的例子都有关include "apue.h"的代码,其实apue.h并不是系统自带的,它是作者编写的头文件,源代码在附录B中.因此一个方法是.把刚才生成的 /root/apue.2e/include/apue.h直接复制到/usr/include下.
还有像err_sys的函数也在附录B中.同样的方法是在/usr/include新建一个 my_err.h的文件,把Figure B.3. Error functions that output to standard error内容复制进去.这样按例子编程就只需要在行首添加:#include "my_err.h"就可以了.

Posted by Alex 2011年8月21日 14:59