• 页面

  • 功能

  • 标签

  • 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和小范围添加新功能。因此有需要的用户可以适当更新。

    下载地址:glimve.0.20.3.tar.bz2

    当然这个项目仍然存有许多不足,希望我们能一一克服,谢谢大家的支持。

    Topics: GMLive | No Comments »

    让pidgin的文件传输工作

    By lerosua | 06月 16, 2008

    一直以来我都搞不清楚为啥pidgin已经这么成熟了,为啥它的文件传输总是不能工作。国人的网络多数是在防火墙里。而默认的pidgin设置根本不能在上面工作。

    直到pidgin 2.4.2版,我似乎看见了点曙光。

    在主界面的帐户菜单中选中需要编辑的帐户。

    在编辑帐户的对话框中选中高级。

    在File transfer proxies里填上  proxy.netlab.cz:7777

    pidgin-set.jpg

    这个代理,我试过,能行,在电信的网络里。我希望它对你们的网络也能成。祝好运。

    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 »

    « Previous Entries