随笔分类 -  Linux

上一页 1 ··· 18 19 20 21 22
摘要:eth0连接ADSL Modem,设成DHCP,同时要让ADSL自动启动,所以eth0就不要自动启动了。eth1做内网连接网卡,IP地址是192.168.3.1,将网关设成0.0.0.0,DNS不要设置。因为ADSL拨号成功之后,会自动获取网关和DNS的设置,所以eth1不能设置网关和DNS。设置iptables,如下:[代码]以上设置开通了ssh和https两项服务,其他来自ppp0的连接都将被drop。以上设置是输入了iptables命令之后,使用iptables-save生成的,保存以上内容为:/etc/iptables-config,然后修改/etc/rc.local,加入:[代码]完 阅读全文
posted @ 2010-12-10 14:16 super119 阅读(396) 评论(0) 推荐(0) 编辑
摘要:[代码] 阅读全文
posted @ 2010-12-10 14:13 super119 阅读(506) 评论(0) 推荐(0) 编辑
摘要:1. 在Ubuntu 10.10的Ubuntu software center中找不到LAMP安装包了。以前的Ubuntu是有打好包的LAMP的安装包的,不需要自己一个一个的去安装apache/mysql/php...2. Google了一下,可以这样:sudo apt-get update; sudo apt-get install taskselsudo tasksel3. 在出现的界面中选择LAMP server,然后就开始安装了。安装的过程中会需要设置mysql root的口令。4. sudo vi /var/www/index.php:Code highlighting produc 阅读全文
posted @ 2010-12-10 14:11 super119 阅读(257) 评论(0) 推荐(0) 编辑
摘要:GObject中一般我们会把需要给子类继承的函数放在class结构里面,以供继承类来重载。一般的逻辑是,继承类重载了之后,实现了自己的自定义逻辑,然后再调用父类的该函数的默认实现。这样就会引起一个问题:多个子类可能会同时调用父类的某个函数默认实现。这样就会要求父类的这些函数实现必须是thread safe的。之所以不把这些函数指针放在父类的instance结构中,就是因为放在instance结构中的话,子类重载了之后,就没法再调用父类的默认实现了,这样会导致代码冗余,难以维护。为了验证上面的想法,写了一个程序。父类Dad,两个继承类son和daughter。通过测试程序可以看到,在父类开放的一 阅读全文
posted @ 2010-12-10 13:19 super119 阅读(346) 评论(0) 推荐(0) 编辑
摘要:g_closure_marshal提供了一些常用的closure的实现,但是由于返回值和参数列表的可能性实在太多,无法穷举,所以,gobject提供了一个程序:glib-genmarshal来帮我们生成指定的closure的实现(自动生成代码)。在当前目录下创建一个文件,比如:marshal.list,包含内容如下:VOID:UINT,UINT就是返回值和参数列表。然后:glib-genmarshal --header --prefix=gst_play_marshal marshal.list这样就生成了头文件的内容,保存下来存成gstplay-marshal.h,搞定。glib-genma 阅读全文
posted @ 2010-12-10 12:57 super119 阅读(457) 评论(0) 推荐(0) 编辑
摘要:git merge的时候,一定要注意看最后的输出信息,如果输出信息是merge失败的话,那最好看前面是哪里merge失败了,然后(注意最后有一个点):git reset HEAD . git checkout -- .来全部undo merge,然后到被merge的branch中去,手动修改掉merge失败的问题。然后再重新merge。如果merge的输出信息中没有报告失败,只是说让我们去Fix content conflict,那么merge是OK的,此时只需要打开unmerged的文件,搜索merge关键字,然后fix掉没能自动merge成功的内容即可。 Merge失败的话会导致不完整的m 阅读全文
posted @ 2010-12-10 12:53 super119 阅读(3981) 评论(0) 推荐(0) 编辑
摘要:First, make sure your git version is higher than 1.6.3Then:git config --global diff.tool vimdiffgit config --global difftool.vimdiff.cmd "vimdiff"git config --global difftool.prompt falseThat's OK. Next time, use "git difftool ..." replace "git diff ..."To view all your global settings: git config - 阅读全文
posted @ 2010-12-10 12:51 super119 阅读(503) 评论(0) 推荐(0) 编辑
摘要:How to checkout a specific version of one file?git checkout commit hash filepath in this commitgit checkout commit hash -- checkout all files in this commit=======================================================================How to diff two versions of one file?git diff HEAD^ HEAD filepath 阅读全文
posted @ 2010-12-10 10:36 super119 阅读(498) 评论(0) 推荐(0) 编辑
摘要:以一个例子来说明。比如要把代码中的close调用,替换成abcclose。写了一个脚本,有了一些收获。脚本如下:[代码]1. 使用grep -E来打开grep的扩展正则表达式的功能。所谓扩展,就是像+, ()这样的元字符才能使用。sed使用-r来打开扩展正则表达式。打开了扩展之后,如果要表示一个常量的+, (),就需要用\来转义了。2. grep -e可以用来表示多个匹配pattern3. 最后一句sed的时候,使用了正则表达式中的分组功能,也就是将[ =({;?:\t]+这个部分定义成一个组,然后在后面就可以用\1来引用(注意\0已经被默认分配成整个pattern)。如果定义了第二个组,那么 阅读全文
posted @ 2010-12-10 10:33 super119 阅读(3245) 评论(0) 推荐(0) 编辑
摘要:1. Bash只支持整数计算,语法是这样的:value=$(( $var1+$var2 ))2. Bash不支持浮点数计算,要做浮点数计算,可以用awk,例如:newts=`awk -v x=$curts -v y=$ts_frame 'BEGIN {printf "%d", x+y}'`将printf中的%d换成%f, %.2f就可以输出浮点数了。注意不能写成:newts=`awk 'BEGIN {printf "%d", $curts+$ts_frame}'`这样awk是无法正常计算的。一定要用-v定义两个awk认识的变量才行。 阅读全文
posted @ 2010-12-10 10:21 super119 阅读(334) 评论(0) 推荐(0) 编辑
摘要:mencoder的命令行看起来有点吓人,所以用ffmpeg。事实上,现在绝大部分的所谓转换软件都是基于ffmpeg的,mencoder也用的是ffmpeg。ffmpeg就是做mplayer的组织做的。所以,为什么很多软件转换不了某些文件和codec呢?就因为ffmpeg不支持。比如:wmvv3(wmv9) encoding,ffmpeg现在不支持,所以,基本上现在能看到的转换软件都不支持,只能支持wmvv1(wmv7), wmvv2(wmv8)的decode和encode。以下是一些步骤和关键点:1. 自己编译ffmpeg。Ubuntu reposiroty中的ffmpeg功能不全(主要是看怎 阅读全文
posted @ 2010-12-09 18:24 super119 阅读(1747) 评论(0) 推荐(0) 编辑
摘要:glibc提供了backtrace这个库函数,可以用来打印call stack。比如我们可以在程序中注册常见的一些signal,比如SIGSEGMENT, SIGPIPE,然后在这些信号的回调函数中,利用backtrace打印出call stack,这样debug就非常的方便。backtrace的使用很简单,使用man手册中的Example代码即可,例如: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define SIZE 100 8 9 void dump_stack()10 {11... 阅读全文
posted @ 2010-12-09 17:09 super119 阅读(1555) 评论(0) 推荐(0) 编辑
摘要:Call glibc/program functions in GDBIn GDB, we can use "call" command to execute functions, for example:call close(1)This can be used to close the target program's stdout. Similiarily, we can call program's own functions by call command.By executing functions in GDB, we can hack the program to modify 阅读全文
posted @ 2010-12-09 16:47 super119 阅读(4863) 评论(0) 推荐(0) 编辑

上一页 1 ··· 18 19 20 21 22