Jump to Navigation

C++

C/C++编程

konsole-4.9.2的简单功能补丁

通过使用kbookmark类的description字段存储密码(当然是明文存储的),

在执行kbookmark中的ssh会话连接时,取出这个字码的值,

通过系统的sshpass执行自动登陆。

补丁.patch

Category:

php_gearman-1.0.3与gearmand-1.1.0在centos上的安装补丁

1、gearmand开发活跃,现已从0.x时代跨入了1.x时代

但是,有点问题,gearmand的编译系统对比较老的linux发行版不太友好

从0.x起,在centos-5.x上安装经常出编译问题,虽然其代码本身没有问题。

2、php-gearman扩展的开发速度落后gearmand的开发,不得不在升级gearmand的时候,

对php-gearman扩展稍做修改才能正常编译执行。

3、对gearmand-1.1.0包的修改,以linux sed命令方式做自动修改。

Category:

QCoreApplication小测试

为了健壮和安装的原因,程序功能经常分割成几个小的二进制(后台的)程序,而不是合并成一个庞大的程序。

Qt 4为那些需要GUI的Qt后台程序引入了模块的Qt库。多亏了面向嵌入式和许多明智的架构决策,Qt 5步入了新的层次。

看看几个简单的函数:

QCoreApplication app(argc, argv);
QTimer::singleShot(3000, &app, SLOT(quit()));
return app.exec();

这个非GUI Qt程序睡眠3秒后退出。

在我的原装i386 Kubuntu 12.04, Qt 4.8.1平台上,valgrind工具报告堆内存使用达102k,callgrind报告使用1.9M(×)内存。

让我们看一下现在的Qt 5版本的数据:valgrind报告堆内存使用为4.9k,callgrid报告使用了大约114k内存。

这意味着Qt5少使用了20倍的内存,少用了16倍的指令来构造QCoreApplication和控制一个事件循环。

Category:

Gearman分布式任务处理系统学习与研究

1. 主页: http://gearman.org/

2. 介绍

3. 同类软件

beanstalkd

Category:

LLVM 3.1发布了

延迟发布,不过还是发布了。
不少改进,主要是c11, c++11的新语法支持,其他性能优化和bug修正。

原文链接:
http://www.llvm.org/releases/3.1/docs/ReleaseNotes.html

Category:

初步使用Android NDK的感受

Android NDK是Android平台提供的C/C++开发接口。

NDK整套工具链完全由google提供,升级支持。

由于Android的底层是基于linux的,内核及之上,java虚拟机以下,

而NDK则正针对是的这一部分,所以,与正常的linux gcc编译工具链差不多,

不同的地方在于,

1. 这是一个交叉编译工具链,链接目标为ARM系

2. 这个工具链自定义了一些android平台相关的宏

3. 有自己的Makefile规则及扩展

对于一般的命令行项目,移植还比较容易,当然这不包括音频、视频处理。

像linux常用的音频软件,alsa,pulseaudio目前都没有成熟的移植,使用了这些的软件包移植时,需要把这部分扩展到android的音频、视频框架。

直接使用NDK做GUI的功能非常弱,非常不成熟,稍微好点的有个qt移植lighthouse,使用起来比较麻烦,并且做出的界面风格与android普通应用风格区别很大。

使用NDK的好处是可以移植大量的linux C/C++开源开发库。

最近移植了几个开发库,遇到的问题还不太多,一般在asm这块,或者一些不常见的函数实现问题。

Go语言入门Hello go!!!

Google前不久发布了Go语言正式版本go1,号称web时代的C语言。

这了工作需要,也了解了一下这个语言的基本原理及应用。

今天从最入门级的Hello go!!!开始,虽然go语言是看了眼前一亮的语言,在发文不免也有点落了俗套了。

上代码:

$ cat hello.go
package main

import "fmt"

func main() {
fmt.Println("Hello go!!!");
}

假设已经全局安装了go编译系统,go命令在PATH中
使用go build 即可编译出可执行程序,程序名为hello
执行./hello看到结果。

代码解释:
package main这是必须的,每一个go语言源文件都必须作为某个包的一个源文件存在

import "fmt" 也许不是必须的,如果不引入任何包,go语言能做什么?import与 java中的import指令功能相同,引入一个包

func main () 这是作为入口的源文件必须的函数,对应C的main函数

Category:

GCC 4.7.0 发布,庆祝 GCC 25周年

GCC 首个公开发布版本是在 1987 年由 Richard Stallman 发布的,到今天已经整整 25 年了。

 

为了庆祝 25 周年,GCC 也相应发布了 GCC 4.7.0 版本,这是 GCC 一个全新的重要版本。

 

GCC 4.7.0 带来了一组关于链接时优化 (LTO) 框架可提升伸缩性和降低内存使用,据开发者称,在 64 位系统上需要 8G 内存来对 Firefox 进行优化,而是用了 LTO 后只需 3G。

 

此外就是体验的支持软件事务内存,支持更多 C++11 标准,包括原子性、C++11 内存模型,用户定义文字、别名声明、构造器委派和可扩展的语法等。

 

GCC 4.7.0 还改进对 Fortran 的支持,支持 Google Go 1 等等多项改进。

 

Category:

Boost与Qt的信号/槽及执行线程

Boost与Qt均提供了线程功能,信号/槽功能,
但Qt有自己的事件循环功能,Boost没有自带的事件循环,如需要使用的话,需要自己实现。

Qt的了自带的事件循环,但在使用的时候可能与某些库的线程有冲突,
最近遇到一个此种类型的奇怪问题,没有找到问题所在,也没有好的解决方法。

经过多次测试,理清了Boost与Qt的信号/槽及执行线程之间的一些关系,记录下这些规律以备份后用、讨论。

针对这个Qt事件循环冲突的问题,设计了一个GUI应用程序的架构,说来也比较简单,把GUI线程与核心功能模块分离,GUI相关操作在Qt的事件循环中执行,核心功能在另一自己编写的简单boost线程中执行。
两模块之间的通信不是使用的直接的函数调用实现,而时使用实现了异步调用,相互之间不会有任何事件交叉,不会引起问题。异步调用有两种方式,可以使用两者的信号/槽,或者可以使用一些进程间通信(IPC,SOCKET,管道,消息队列,共享内存)的功能。

在本次测试实现中,由于功能的需要,两种方式都实现了相应的功能。

Category:

nullfxp中的ssh反向端口代理功能模块说明

ssh的反向代理功能,可以实现基于ssh连接的安全地端口转发功能。还可用于把内网机器端口安全转接到外网服务器。

Category:

页面

订阅 RSS - C++


Main menu 2

by Dr. Radut