gmlive 0.20.3
By lerosua | 07月 15, 2008
gmlive 0.20系列的版本,0.20.3有如下更新:
1.添加嵌入状态中画面双击全屏切换功能。
2.添加西班牙语言支持 。(jjgomera@gmail.com提供)
3.bug修正,主要见http://code.google.com/p/gmlive/issues/list里fix的项目。
0.20.3是继0.20版本以来的更新,主要是在0.20的版本上修正BUG和小范围添加新功能。因此有需要的用户可以适当更新。
当然这个项目仍然存有许多不足,希望我们能一一克服,谢谢大家的支持。
Topics: GMLive | No Comments »
让pidgin的文件传输工作
By lerosua | 06月 16, 2008
一直以来我都搞不清楚为啥pidgin已经这么成熟了,为啥它的文件传输总是不能工作。国人的网络多数是在防火墙里。而默认的pidgin设置根本不能在上面工作。
直到pidgin 2.4.2版,我似乎看见了点曙光。
在主界面的帐户菜单中选中需要编辑的帐户。
在编辑帐户的对话框中选中高级。
在File transfer proxies里填上 proxy.netlab.cz:7777
这个代理,我试过,能行,在电信的网络里。我希望它对你们的网络也能成。祝好运。
Topics: 系统设置 | 1 Comment »
使用Linux共享上网设置案例
By lerosua | 06月 10, 2008
环境:一台Linux机器单网卡,一台window机器单网卡,一个四口集线器。
背景:房东只提供了一条上网线,并且限定了只能用一个网卡上网(就是
我的Linux机器的网卡)。
目的:通过Linux共享上网设置将window机器也带入网络中。
方法:利用Linux机器做个DHCP服务器,用集线器做成一个局域网。再转
发此网段的IP请求。
一。建立Linux DHCP服务器。如果是Ubuntu系统的话,直接
#apt-get install dhcp
安装完毕后更改/etc/dhcpd.conf文件,加入:
option domain-name-servers 202.96.134.188,202.96.134.133;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.200;
option routers 192.168.20.1;
}
DHCP设置完毕。
下面就需要将Linux主机设置多一个IP,并设置好IPtable规则。
sudo ifconfig eth0:1 192.168.20.1
sudo sh -c “echo 1 >/proc/sys/net/ipv4/ip_forward”
sudo iptables -A FORWARD -s 192.168.20.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT
可以将上面语句写入一脚本中。需要时执行一下就是打开共享功能了。
而window机器只需要设置成自动获取IP(或者设定为192.168.20.x网段,
网关则是192.168.20.1)。物理连接则是通过集线器。
(以上动作均有通过网络查找验证,各人情况都有不同,大家根据自己情况修改)
Topics: 系统设置 | No Comments »
Gtkmm系列:交叉编译Window版本的Gtkmm程序示例
By lerosua | 05月 26, 2008
Gtkmm是跨平台的,这句话听了很多次,倒是没怎么去试过。今天就试着在Linux下用mingw
编译一个win32版本的Gtkmm测试程序试试。
test.cpp
#include <gtkmm/main.h>
#include <gtkmm/window.h>
int main(int argc, char **argv)
{
Gtk::Main main_obj(argc, argv);
Gtk::Window win;
main_obj.run(win);
return 0;
}
上面是一个简单的gtkmm窗口程序。只会跳出一个窗口,啥也不干。
平时在Linux编译是这样的:
g++ test.cpp -o test `pkg-config gtkmm-2.4 –cflags –libs`
然而我们需要将它编译成win32的程序时呢。就要用到交叉工具链mingw了。
首先在您的系统里安装mingw32软件包。在ubuntu或debian系统中可以通过apt管理工具获取
软件:
#apt-get install mingw32
安装完毕后,您系统中应该有以下命令了:
$ i586-mingw32msvc-g++ -v
Reading specs from /usr/lib/gcc/i586-mingw32msvc/3.4.5/specs
Configured with: /build/buildd/mingw32-3.4.5.20060117.1/build_dir/src/gcc-3.4.5-20060117-1/configure -v –prefix=/usr –target=i586-mingw32msvc –enable-languages=c,c++ –enable-threads –enable-sjlj-exceptions –disable-multilib –enable-version-specific-runtime-libs
Thread model: win32
gcc version 3.4.5 (mingw special)
现在您已经有了交叉编译器,但是要跨平台编译Gtkmm,这时候还需要Gtkmm的win32开发库。
恰巧 Inkscape 这个软件提供了打好包的Gtkmm win32开发库。
到inkscape的win32指导地址 下载最新的gtk28-YYMMDD.7z 文件。在这里我下载的是
gtk28-060502.7z(注意链接有可能失效)
将这个文件解压到您想放置的地方,在这里我将之解压到了 /usr/local/gtk28
创建一个链接:
ln -sf /usr/local/gtk28 /target
设置交叉编译用到的环境变量
export PKG_CONFIG_PATH=/target/lib/pkgconfig
现在,可以用交叉工具编译gtkmm的win32版本了。
i586-mingw32msvc-g++ test.cpp -o test.exe `pkg-config gtkmm-2.4 --cflags --libs`
最后把编译得出的小程序放到win平台上去跑吧。注意,win平台还需要安装gtkmm的运行库才行。
PS.本文参考了Cross Compiling Gtkmm Applications to Window
随着时间的推移,mingw已经有4.x版本,而gtkmm的win32库也出了2.10以上的版本。因此本文只是
演示交叉编译的一个大概过程。聪明的读者应该会更新其中相应的软件版本的。:-)
Topics: Gtkmm | No Comments »
5*12灾难
By lerosua | 05月 19, 2008
地震发生以来,已经有无数的人受难,无数的人受灾。
死者已矣,而生者还具希望。我相信灾区的人能坚强地生存下去(在大家的帮助下)
而远离灾区的,应懂得珍惜所拥有的幸福。
举国哀悼,默哀三分钟.
Topics: 水园 | No Comments »
算是随笔吧
By lerosua | 05月 9, 2008
最近似乎百无聊赖,整天对着机器,一天说不过十句话,也越来越木讷于言语了。
表达的欲望也只维持一瞬间,之后总觉得想说的不过尔尔,不值得写出来,于是许久
没有(写)博一次了。
不过最近倒是发生了好多事。火车相撞,公车自燃?还有南亚那的风暴。都是不好的事情。
关于奥运也是,zd啦,法国家乐福啦。之前关于这些敏感话题都想说些什么的。不过竟然找
不到能发表的地方。回来想想,算了。我也不想只做个口头上的暴君。发现越如此却就越消极。
但我又能做什么呢?我没有答案。现实还有问题待我去处理哩。所以圣火来临我都兴趣不大,况且
比较烦往人多的地方挤。再次,我可没假。
开源也许是我的一个精神庇护场所。 不过这样一个人写程序也是让人很是郁闷的。早前GCC4.3的转换
害我在编译这段吃了不少苦头。这丫也太语法严格了点。不过也许是好事。
今天还看到自己博客的一个外部链接,Henry的文章 , 引用了我之前对Ubuntu半年一次的抱怨。我得
告诉他,我已经不抱怨了,因为我把系统转到ARCHLinux去了。玩累了半年升一次的游戏了。现在天天
升。
Topics: 水园 | 1 Comment »
gmlive 0.20.2
By lerosua | 05月 3, 2008
gmlive 0.20系列的版本,0.20.2有如下更新。
1.添加全屏功能(工具栏里有一个全屏按钮,也可以按F11来回切换)
2.修正GCC4.3编译。
3.BUG修正。
0.20.2是继0.20版本以来的更新,主要是在0.20的版本上修正BUG和小范围
添加新功能。因此有需要的用户可以适当更新。而下一版本0.21仍在开发中。
敬请期待。
Topics: GMLive | 10 Comments »
升级系统到8.04了。
By lerosua | 04月 6, 2008
三天的宅男生活有些无聊。于是又过起了做小白的生活。我一直坚信稳定才是王道,但还是
耐不住那句“冲动就是魔鬼”。
结果花了一整天来升级系统。由ubuntu 7.10升级到8.04(正式版还没出,不过实在是等不及了)
升级的过程也是在ubuntu中文论坛看来的。升了这么多年了也就是几个命令而已.
主要参考了论坛里ljj_jjl2008 的帖子。 由于我的系统有点年份了,以前装了n多软件。所以需要
升级的东西也多的多了。搞了几个小时。也装了几个小时。最后的结果当然是升级失败。原因竟然是
装某个包时,/usr/share/man/man8里的某个文件不可覆盖。于是整个man8目录改名。重建了一个
空的man8目录,以让它能拷贝文件进去。 执行完这步就又升级顺利完成了。
一启动就又进不了X。又搞了一个小时,最后才发现不知啥时候升级系统给我的Xorg.conf文件加多了一个
分辨率,就是1680×1680.我的屏幕的分辨率是1680×1050。默认都以1680×1680起来了。所以X起不来。
改完,继续折腾。终于进到X了。
进入X才发现新的问题,我原来给系统设置的字体配置不起作用了。后来一查又发觉8.04的字体配置又变化
了。真是累死人啊。原来的/etc/fonts/language-selec×.conf分成了conf.avail目录里的几个文件。经过
一番查证,又在/etc/fonts/conf.avail/69-language-selec×-zh-cn.conf里调整了字体的顺序。终于又回
到了原来的界面。
经过一番体验。新系统仍旧是有许多不稳定的地方。 比如nautilus打开fat32的分区竟然会崩溃~~emerald
也不能执行。总而言之,s概而言之,小白不是那么容易做的。
几乎每半年我升级一次系统。每半年我折腾一次做一回小白。每半年都有换系统的打算。每半年都有一个人
在我升级系统的时候劝说我换成arch。
Topics: 水园 | 3 Comments »
MMS列表的烦恼
By lerosua | 03月 21, 2008
GMLive有一个播放流地址的mms列表。但是这个列表只是安装时的一个文件。固定写好了几个频道。
而这些地址有可能会失效。也有可能有网友发现新的流地址。 但也不能及时地更新这个地址。因此我
一直是想把这个mms列表做成是上网下载的,和sopcast的列表类似。但由专门的人来维护编辑。这样
可以及时有效地加入新频道和去掉失效的频道。
只是,找不到一个好的地方来放这个列表。 要是能有个类似wiki的页,方便下载又方便编辑。或者是
要在本地修改完后上传覆盖吗?大家有什么好的想法啊!
Topics: GMLive | 4 Comments »
Gtkmm系列:TreeModelFilter的简单用法
By lerosua | 03月 13, 2008
Gtkmm是Gtk+的C++绑定。不过在国内比较少开发者采用,因此中文资料也不多。
彼人目前正在使用Gtkmm开发两个开源的项目。因此也学习了不少Gtkmm的用法。
因此打算作一系列文章,探讨下Gtkmm里某些控件的用法。丰富一下中文Gtkmm
资料。不过,这不是教程,有些文章会基于项目里的代码来说明,所以是面向
有些基础的开发者的,让大家在搜索的时候能找到些资料,而这些说明又能帮
到您的话,那我的目的就算是达到了。
TreeModelFilter的简单用法
TreeModelFilter是用于过滤TreeModel的一个类。或者这样说吧。
这个功能大意就是查找匹配的好友成员,让其显示。
这里将会作个简要的说明。代码说明基于 iCalk(http://code.google.com/p/icalk)
声明好我们的TreeModelFilter成员在您的TreeView实现的头文件里。
Glib::RefPtr <Gtk::TreeModelFilter> m_treemodelfilter;
从TreeS×e中生成TreeModelFilter:
m_treemodelfilter = Gtk::TreeModelFilter::create(m_trees×e);
m_trees×e 就是您代码中设置好的TreeS×e类.
用TreeModelFilter代替TreeS×e类成为这个TreeView的model:
set_model(m_treemodelfilter);
这样将会使用你的TreeView里的元素成为可被过滤的。
最后设置过滤函数:
m_treemodelfilter->set_visible_func(sigc::mem_fun(*this,&BuddyView::
list_visible_func));
这个set_visible_func,将会依次调用TreeView里的元素,判断是否符合过滤条件,
返回真则显示,返回假则隐藏。(BuddyView是icalk里的TreeView的继承类).
然后再来看看这个过滤函数的内容:
bool BuddyView::list_visible_func(const Gtk::TreeIter& iter)
{
/** 得到此列中表示好友成员的jabber id */
Glib::ustring email = (*iter)[buddyColumns.id];
/** 得到此列中表示好友成员的昵称*/
Glib::ustring name = (*iter)[buddyColumns.nickname];
/** 得到此列中表示好友成员的类型,在icalk中,会设置为成员或组*/
int type = (*iter)[buddyColumns.status];
/** filterText是过滤的关键字,为空则返回真,即全部显示*/
if(filterText.empty())
return true;
/** 在jabber id中查找是否匹配关键字 */
else if(email.lowercase().find(filterText.lowercase())!=Glib::ustring::npos)
return true;
/** 在昵称中查找是否匹配关键字 */
else if(name.lowercase().find(filterText.lowercase())!=Glib::ustring::npos)
return true;
/** 如果此列是一个组的话,返回真*/
else if(type == STATUS_GROUP )
return true;
/** 以上条件都不匹配,返回假,隐藏*/
return false;
}
在设置完毕之后,就需要发动过滤引擎了,我们只需要设置关键字filterText,然后
调用一下m_treemodelfilter的成员函数refilter()就行了。 在icalk的代码里是:
void BuddyView::setFilterText(const Glib::ustring& text)
{
filterText = text;
m_treemodelfilter->refilter();
}
下来的工作是获取一个Gtk::Entry,让用户输入关键字。将这个关键字传递给上面
的setFilterText()就可以了。更详细的代码可以参看icalk的BuddyView.cpp文件。
Topics: Gtkmm | 1 Comment »