Feeds:
Posts
Comments

Archive for July, 2010

Overwrite stdout

Linux下很多程序的输出通过重写标准输出造成动画的效果,比如wget的输出。
这个可以通过打印回退字符’\r’和’\b’来实现。
‘\r’表示回车但是不换行,回车的意思就是回到行开始,于是就可以覆盖上次写的一行的内容。
‘\b’表示回退一个字符,于是可以覆盖上次写的单个字符。
写程序的时候注意要用fflush()刷新stdout,避免缓冲。

这里有一个例子。

Advertisements

Read Full Post »

-c 只编译成.o文件。
-S 生成汇编源文件。
-E 生成预处理后的源代码。
-std 设置gcc遵循的语言规范。
-w 禁用全部警告。
-Wformat  检查printf,scanf等函数的form string是否跟提供的参数一致。
-Wreturn-type 检查函数的实际返回类型(包括void)是否跟函数的声明一致。
-Wuninitialized  自动变量未初始化报警。
-Wfloat-equal 存在浮点数相等比较。
-Wfatal-errors 碰到第一个错误就退出,默认行为是继续编译。

Read Full Post »

用apache和python可以方便的写cgi程序。下面是一些注意事项:

  • 在apache的配置文件里面设置cgi程序的路径,配置项名字是ScriptAlias。
  • 在apache的配置文件httpd.conf增加一下条目:
    1. AddHandler cgi-script sh py 来说明哪些文件是需要执行的cgi。
    2. User *
      Group *
      说明运行cgi程序的用户名
    3. AddDefaultCharset   utf-8 配置编码方式
  • cgi程序一定要先输出一行“Content-type: text/html“,并且后面至少带一个空行。
  • os.environ包含了全部环境变量,需要import os。
  • 使用post的表单输入通过stdin读入,输入长度由os.environ(‘CONTENT_LENGTH’)确定。
  • 中文的输入会被编码,使用urllib2.unquote()进行解码,当然编码是urllib2.quote()。
  • 在cgi程序里面使用os.system()执行任何有stdout输出的shell命令会到导致apache出错,原因未知。避免的方式是将输出重定向到文件,然后再读文件打印到stdout。

Read Full Post »

做过好几次了,每次都得上网搜步骤,这次记下来。

  1. 在本地用ssh-keygen -t rsa 生成rsa密钥对。
  2. 确认远程机器存在目录 ~/.ssh,并且权限是700。
  3. 确认远程机器存在文件~/.ssh/authorized_keys,并且权限是600。
  4. 将本地的rsa公钥id_rsa.pub的内容附加到远程文件~/.ssh/authorized_keys的末尾。
  5. 使用ssh name@host " cmd string"来执行远程命令。

Read Full Post »