共 7 页, « 1 2 [3] 4 5 6 » ... 最后一页 »
如何统计代码的修改规模?如果肯花钱,则能买到统计代码修改规模的专业工具。这里介绍一种利用subversion和grep组合的方法简单统计代码修改规模。下面假设程序代码中的注释有两种格式,一种以 // 开头,另一种是Javadoc格式,即
/**
* This is a function.
* @param {String} v str
*/
为清晰起见,下面的统计命令分成了几行来写。
svn diff -r4:320 # 获取rev4和rev320之间的差异
| sed -e 's/\r//g' # 删除行尾的换行符^M。Windows下必须
| grep "^+[^+]" # 取得修改部分
| grep -Ev "^+[[:space:]]*(\/\*)|(\*)|(\/\/)" # 删除注释
| grep -v "^+[[:space:]]*$" # 删除空行
| wc -l # 统计行数
Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了。下面是我的.screenrc,仅供参考。
#
# ~/.screenrc
#
# 启动时不显示欢迎屏幕
startup_message off
# 定义screen的功能键为Ctrl-Z。向终端输入Ctrl-Z时应按 Ctrl-Z z。
escape ^Zz
# 屏幕缓冲区 1024 行。
defscrollback 1024
# 在最下一行显示窗口列表和时钟
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "
# 关闭错误提示
vbell off
# 按 Ctrl-Z w 或 Ctrl-Z Ctrl-W 显示窗口列表
bind w windowlist -b
bind ^w windowlist -b
阅读全文 »大家都知道Linux下的date命令可以查看或修改系统时间,其实它还能用于日期计算等,十分方便。
首先是最基本的查看、修改时间。
[root@local ~]# date Thu Dec 7 21:47:52 JST 2006 [root@local ~]# date --set='2006-12-08 14:01:00' Fri Dec 8 14:01:00 JST 2006
指定日期显示格式,具体的格式指定方法参见 date --help。
[root@local ~]# date +%Y%m%d 20061208 [root@local ~]# date +%F 2006-12-08 [root@local ~]# date +%s 1165554109 [root@local ~]# date -R Fri, 08 Dec 2006 14:02:09 +0900
时间计算。
[root@local ~]# date -d "2 days ago" +%F 2006-12-06 [root@local ~]# date -d '15 years' +%F 2021-12-08 [root@local ~]# date -d '30 minutes ago' Fri Dec 8 13:57:17 JST 2006
用curl下载网页估计大家都会,但是模拟 multipart/form-data 形式的 form 上传文件则稍稍复杂些。命令行如下。
curl -F "action=upload" -F "filename=@file.tar.gz" http://localhost/action.php
如果使用了-F参数,curl就会以 multipart/form-data 的方式发送POST请求。-F参数以name=value的方式来指定参数内容,如果值是一个文件,则需要以name=@file的方式来指定。
如果通过代理,上面的命令有可能会被代理拒绝,这时需要指定上传文件的MIME类型。
curl -x myproxy.com:1080 -F "action=upload" -F "filename=@file.tar.gz;type=application/octet-stream" http://localhost/action.php
另外,如果不上传文件,则可以使用 -d 参数,这时curl会以 application/x-www-url-encoded 方式发送 POST 请求。
curl -d "action=del" -d "id=12" http://localhost/action.php
主机名一般是在安装时设定好的,若想修改,则需要进行以下步骤。
- 执行命令 hostname,修改当前系统的主机名
# hostname newhost
- 修改 /etc/sysconfig/network,使得下次启动时使用新的主机名
hostname=newhost
- 修改 /etc/hosts。不修改的话,apache等需要解析主机名的服务将不能启动
127.0.0.1 newhost localhost
- 最后就是命令行提示符中的主机名还没有改变,如果很在意的话,重新登录一下就行了
这里有一篇关于如何安装 Ubuntu 6.06 的文章,虽然有些老了,但是本文是在这篇文章的基础上写成的,看看也许能有些参考。
修改 /etc/source.list,将其中的所有 dapper 替换成 edgy。
如果你使用了 http://packages.freecontrib.org/ubuntu/plf/ 的源,则要将这个源的 dapper 替换为 edgy-plf,并执行以下命令以添加公钥。
# wget http://packages.freecontrib.org/ubuntu/plf/12B83718.gpg -O- | sudo apt-key add -
然后执行
# apt-get dist-upgrade
注意观察要更新的软件包,你会发现安装程序需要删除一部分软件,包括显卡驱动!所以升级之后图形界面会有问题,这个问题我们升级以后再修复。
然后就是漫长的下载和安装过程。
如果你以前修改过登录界面(gdm)的主题,那么在安装新版时,安装程序会提示你是否要覆盖/etc/gdm/gdm.conf-custom文件。
Configuration file `/etc/gdm/gdm.conf-custom'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : background this process to examine the situation
The default action is to keep your current version.
*** gdm.conf-custom (Y/I/N/O/D/Z) [default=N] ?
这时你可以选择 d,然后复制下自己修改过的部分,然后选择 Y 安装新版 gdm.conf-custom,安装结束后将自己的修改内容恢复即可。
安装成功之后重新启动计算机……啊?gdm启动失败……这正是由于上面升级时删掉了显卡驱动的问题。此时先按Ctrl+F2切换到控制台,然后登录系统并切换到 root 用户,执行下列命令:
# apt-get install libgl1-mesa-glx
然后再执行
# apt-get install xorg
如果你以前安装过 ATI 或者 GeForce 的官方显卡驱动,那么系统中的 /etc/X11/xorg.conf 为使用官方驱动的版本,而升级时官方显卡驱动被卸载了,因此需要将 xorg.conf 恢复成安装显卡驱动之前的状态。假设当初安装的是 ATI 驱动并且使用 aticonfig 命令自动配置了显卡,那么原始的 xorg.conf 会备份成 /etc/X11/xorg.conf-original-0,用这个文件恢复即可。
# cp /etc/X11/xorg.conf-original-0 /etc/X11/xorg.conf
然后再次重新启动,这样就可以进入图形界面了。
备注:据旺旺同学的经验,如果按照以上的方法还是不能恢复的话,可以试试以下两个命令:
# apt-get remove xserver-xorg-driver-ati # apt-get install xserver-xorg-video-ati
前面介绍cygwin下安装sshd时简单地提到了ssh的公钥认证。 下面将这种认证方式详细地解释一下。
阅读全文 »查看myprog(二进制文件)依赖的库文件
ldd myprog
查看myprog的符号表
nm myprog
删除myprog中的符号,减小文件大小
strip myprog
myprog的详细信息
readelf -a myprog
另外这篇文章可以在调试时作为参考。
最近在用 perl 写一个Linux下的多进程守护进程,因此研究了一下Linux下的进程相关的知识。 现将心得总结一下。主要是关于进程创建和回收。
阅读全文 »前面这篇文章简单地阐述了用Perl创建守护进程(daemon)的方法。 实际上,创建一个多进程的守护进程需要注意很多事情。
阅读全文 »