2009年8月4日星期二

一个网卡连接两个网段(公网与虚拟网)

我的个人资料是存贮在虚拟机里Mysql中的.通过php方式进行维护.
所以要控制虚拟机中的BSD系统,或是访问PHP网页都需要与虚拟机做网络连接.

这本身没什么问题,但同时又要与外网接,这就比较麻烦了.因为外网有时不固定,有时可以用dhcp获取,有时只能静态设置.有时还没有网络,就更没
法用.
外网一改,虚拟机系统的网络配置也要改.BSD配置一改,SSH连接也要改.就显得比较麻烦.

后来从网上看到,可以加一个虚拟网卡.
方法是从"控制面板"选择"添加硬件",然后在已安装的硬件中选择"添加新的硬件设备",下一步选择"安装我手动从列表选择的硬件(高级)",在下步
中选择"网络适配器",下一步中左侧选择"Microsoft"右侧选中"Microsoft Loopback
Adapter". 安装完成后,就会在硬件列表里多出一个网卡,但其实这个网卡是不存在.

同时,在网络连接里也会多出一个连接.可以给它起名"Virtual Link".
我将它的IP地址改为"192.1.1.1".Mask"255.255.255.0"网关"192.1.1.1"

这样就可以用 Virtual
Link来连接虚拟机,而正常的网卡来连接外网.虚拟机的IP就相对固定.不需要再改.
但这样做之后有一个问题就是,你要访问外网时,很有可能它走的是Virtual
Link这个链接.

之前我就被这个问题困扰,但今天一个同事提示,原来可以用route命令来解决.

只要运行两句命令就好:
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 10.90.65.23

这样系统就明白,除指定的192.1.1.1其它的IP都从10这个网段走......
因为192.1.1.0已被自动"route add"到系统路由表中

[分享]ip地址和网关不在同一个网段,上网解决之道!

例如:本机IP地址是 202.*.*.*
netmask是255.255.255.192
网关是 61.*.*.*。
两者不在同一网段
这样搞定:
###先将网关IP当成一个主机加进来,这样在这两个IP直接建立一个连接,并且不设置掩码,即能到达所有其他网段。
route add -host 61.*.*.* netmask 0.0.0.0 dev eth0
##然后再将网关IP加成网关
route add default gw 61.*.*.* netmask 0.0.0.0 dev eth0

人弃我取 人取我与

1.新开户数
2.上海证券交易所综合指数
 

2009年8月3日星期一

opera for linux 版本的区别

opera-10.00-b1.gcc4-qt4.i386.rpm
opera-10.00-b1.gcc4-static-qt3.i386.rpm
一种是用Qt4开发,一种是用Qt3开发。如果你系统有Qt4/Qt3的话,安装第一种或者shared目录里的; 否则就安装static版的。

opera-10.00-b2.gcc4-bundled-qt4.i386. tar.gz
opera-10.00-b2.gcc4-qt4.i386.tar.gz
bundbled 里面有 usr/lib/opera/libQtGui.so.4 和 usr/lib/opera/libQtCore.so.4 这两个文件,并且 opera 里多了这么几行:
代码:
~% diff -u ./opera-10.00-4502.gcc4-qt4.x86_64/opera ./opera-10.00-4502.gcc4-bundled-qt4.x86_64/opera
--- ./opera-10.00-4502.gcc4-qt4.x86_64/opera 2009-07-21 18:50:22.000000000 +0800
+++ ./opera-10.00-4502.gcc4-bundled-qt4.x86_64/opera 2009-07-21 18:53:27.000000000 +0800
@@ -352,6 +352,19 @@
fi
done

+# Use Qt provided by the host, if available. Set OPERA_QT_LIBPATH to override the path to Qt shared libraries.
+if [ -z "$OPERA_QT_LIBPATH" ]; then
+ OPERA_QT_LIBPATH=`LD_PRELOAD=libQtGui.so.4 LD_TRACE_LOADED_OBJECTS=1 usr/lib/opera/works 2>/dev/null | sed -ne '/^.*libQtCore\.so\.4 => \(.*\)\/libQtCore\.so.*$/s//\1/p'`
+fi
+if [ -n "$OPERA_QT_LIBPATH" ]; then
+ if [ -r "$OPERA_QT_LIBPATH/libQtCore.so.4" -a -r "$OPERA_QT_LIBPATH/libQtCore.so.4" ]; then
+ LD_PRELOAD="$OPERA_QT_LIBPATH/libQtCore.so.4:$OPERA_QT_LIBPATH/libQtGui.so.4${LD_PRELOAD:+:}$LD_PRELOAD"
+ export LD_PRELOAD
+ else
+ echo "Cannot find Qt shared libraries in $OPERA_QT_LIBPATH" >&2
+ fi
+fi
+
# Setting environment relative to current working directory
# Bundled Qt will be found here unless preloaded by the stance above
LD_LIBRARY_PATH="$PWD/usr/lib/opera${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"

看样子貌似是在系统里没有 Qt4 的时候用自带的,有的话还是用系统的~ 看来 qt4 版本的都不是静态链接的了~

投资基金当注重复利效应淡待大盘点位

  投资基金特别是以投资股票为对象的股票型和偏股型基金,一般而言,收益在一定时期内与大盘点位的涨跌升降有着同方向、紧密性的变化的;但从基金投资的长期复利效应观察看,则与大盘点位的关系就不哪么十分密切了,动辄有时还会出现与大盘方向相反的情况,也即大盘跌时它反涨。所以,对长期投资并欲深谙基金赚钱机理者,"注重复利效应而淡待大盘点位"才是理性明智的可取之态。这缘自于:

  一、投资基金的复利效应乃基金的本身内在特性所决定
  以投资股票为对象的股票型和偏股型基金,因内在配置资产的类型不同、股票资产的占比不同和个股的构成不同,便有了各自不同特性的蕴涵:诸如成长股票型的、价值股票型的、均衡股票型的、收益偏股型的、混合偏股型的、平衡偏股型的等不同品种的基金。在不同收益与风险的对称性中,虽因有几十到逾百只的不同数量、不同行业、不同盘别、不同板块、不同题材的不同个股构成及其仓位高低的不同,都在市场中呈相同、相近或不同的净值增长变化表现,但寻根究源的是:在其基金制度设计上的股票投资最高达95%、最低只有20%的可调控变换的十分宽泛性,既利于紧跟或应对市场的涨跌调整变化,又便于周而复始地把行情中赚得的前一波又一波的红利投入到后一波又一波的行情中去博弈,用赚得的钱再去赚钱,以此不断"滚动"的"利滚利",把基金投资的"复利效应"奥秘显示出来;进而随着时间上的日积月累,其"复利效应"的叠加递进,便又顺理成章地"升级"成了人们常说的"时间红利"了。这当然全有如此内在特性的基金,主动结合了市场的"涌动",才有的结果。
  故而,正是有了基金这种独有的自身特性,一方面由于其所有资产最高只有95%参与市场的运作和所投资单只个股的最高比例限制与精选全部个股有机组合的风险分散,常常是大盘涨时基金的净值涨,大盘跌时基金的净值跌得少;另一方面由于基金红利所产生的复利效果,既能抵消或摊薄大盘下跌时的基金市值的下跌,又能加速超赶大盘回调时的基金市值上升速度。所以,投资基金当注重其复利效应而淡待大盘的点位高低,并要与市场长厢斯守,才能尽享其复利效应带来的"超强"之回报。

  二、投资基金的复利效应乃基金管理人的主动运作所铸就
  股票型和偏股型基金在制度设计上,从资产的构成、股票的占比和个股的组合及只数的多少等的全方位的三个不同层次上,都赋予了基金管理人的"进可攻、退可守"的主动运作空间。基金管理人依基金设立时或更新后的投资理念、目标、策略、风格和业绩比较基准等要求,经对上市流通的股票及其上市公司的筛选和深入地调查研究,用不断更新形成的股票池,再结合适时地紧跟对市场地预测和把握:在市场正常运行和热点板块轮动的市场境况下,对于已投资的并赚到了"资本利得"的价格相对已经高估的股票卖掉,而为投资人把赚到的钱实实在在地拿到手,同时再将包括本利在内的钱买进被市场相对低估的或者增发与新上市的"股票池"中的股票;在市场的调整波动变化来临前,主动通过调整降低持股仓位,同样把投资股票赚到的钱巧妙地留下,再将本利投资于能暂时规避市场调整波动风险的工具与品种,一样能让红利的复利效应得到发挥,待市场调整波动结束前再一次地做基金全部资产的调动布局,以赢得更加可观的复利收获。对投资者而言,要想使投资基金的复利效应发挥的更充分,必须要经历基金管理人有利于既能保住红利、又能充分发挥红利的复利效应的多个主动运作的轮回,才能实现;倘若是时间短了,则是不行的;再倘若是逢市场已步入调整期,基金投资人若再去势单力薄"单挑独斗"地做赎回避险,显然是在"步"基金管理人的"后尘",而做有损红利、复利的无谓"自我牺牲"。
  因此由上述可知,有基金管理人用极专业的专家团队理财智慧,在前方一线"知己知彼"的与市场在博弈,一般情况下,早就为投资人做了应对与打理,什么大盘"点高点低"的也就不在话下了。

  三、投资基金的复利效应乃股票市场波浪式螺旋上升中所孕育
  股市的运行总是在涨涨跌跌、跌跌涨涨中进行,无论"熊市"还是"牛市",均概莫能外;因人气和资金的进退,便助推了一波又一波的市场涨跌行情,而呈波浪式螺旋上升的一种总态势。正是这波浪式螺旋上升之态势,融一波又一波的市场行情中,在持续不断地把基金投资的复利效应来孕育:热点板块的轮动而致市场中股票投资价值的高估或低估、老股增发而扩大了市场容量增加了供应、新股上市而在稀释市场风险中凭添了新生力量,获利盘的回吐在释放市场风险中酝酿健康、永无休止的技术修复在调整与掌控着市场的步骤、探底回调演义着多空双方"势不罢休"的能量与智慧的博弈……这"摸"不到但却能看到和感受得到股市中的一幕幕"波澜壮阔"的"场景",对市场研究透彻的基金管理人,在积极应对中,或"该出手时就出手"增加仓位,或保持仓位"按兵不动"蓄势待发,或"收兵回营"降低仓位寓"小憩"中"司机返扑",或"修筑工事"调仓换仓等,借以把未分红的红利与投资人的分红再投,融入前浪推后浪的波浪式的螺旋上升的市场大潮中,获得一波又一波的复利之复利。
  这同样不难看出,投资基金的复利获得,其"每一波"自然得多少借助市场的上行来实现,但就在整个持续不停的市场博弈中,则少不了基金管理人及基金经理们,能恰到好处地做到了将基金资产与市场行情的最佳结合,致此相比之下,大盘点位的是高是低就显得不那么重要了。
  以上的"基金、基金管理人、股市"的"三位一体"的有机融合,只是能从资本市场的不断运行变化中获得复利的一种机制,但欲求能从"这种机制"中真正得到回报,有两门"功课"的"作业",是投资者必须要做要交的:一是要投资于选中的基金特别是配置股票资产的基金;二是要长期坚持,否则就"前功后弃"得不偿失了。

这个时代的个十百千万

坐拥一百多万房产。

身背几十万元房贷。

手握几万元钱基金。

每月几千块钱工资。

身穿几百块钱名牌。

上班十几块的车钱。

天天几块钱的早饭。

Linux摄像头编程

这次是在linux下开发摄像头的程序,主要用的是video4linux来做的,界面用qt来实现,开始准备用framebuffer来直接写屏但是效果不怎么好,后来就用qt来做了,这样用起来效果还蛮好的,帧率也可以,可以上到30fps;运用v4l来编程主要掌握其api,要提高帧率最重要的是用到内存映射,其实用qt和framebuffer的时候都要用到内存映射来做,只有这样才可以达到较高的帧率,不过要注意资源的利用问题.mmap后一定要munmap.对于framebuffer是很有意思的一个东西,特别是驱动的设计.
代码如下:
1.open device:
video_dev = open("\dev\video0",O_RDWR));
2.get the information of the video device
struct video_capability video_cap;
memset(&video_cap,0,sizeof(video_cap));
if(ioctl(video_dev,VIDIOCGCAP,&video_cap) == -1)
{
perror("Cann't get the information of the video device");
close(video_dev);
exit(1);
}
3.get the information of the channels
struct video_channel video_chan;
memset(&video_chan,0,sizeof(video_chan));
for(channel = 0;channel < video_cap.channels;channel++)
{
video_chan.channel = channel;
if(ioctl(video_dev,VIDIOCGCHAN,&video_chan) == -1)
{
perror("Cann't get the information of the channels");
close(video_dev);
exit(3);
}
if(video_chan.type == VIDEO_TYPE_TV)
{
#ifdef DEBUG
printf("NO.%d channel is %s,type is
tv!\n",channel,video_chan.name);