菜菜博士

博士在网络的家

avbot 4.7 更新

对于不知道 avbot 是神码的同学,猛击这里 avbot 4.0 系列第九个版本 4.7 发布了,同时发布的还有 rpm 包 和 windows 包 rpm 包有 x86_32(用于64位系统) 的和 i686 (用于32位系统) 两个版本。其实 rpm 包解压一下也可以用在 Deb 系的系统上。 PS: sourceforge 上的 avbot 项目我开通了匿名上传权限,欢迎大家...

avbot 4.6.1 更新

对于不知道 avbot 是神码的同学,猛击这里 avbot 4.0 系列第八个版本 4.6.1 发布了,同时发布的还有 rpm 包 和 windows 包 rpm 包有 x86_32(用于64位系统) 的和 i686 (用于32位系统) 两个版本。其实 rpm 包解压一下也可以用在 Deb 系的系统上。 PS: sourceforge 上的 avbot 项目我开通了匿名上传权限,欢迎...

avbot 4.5 紧急更新

avbot 4.5 是一个紧急更新版本, 所有用户都应该升级。 因为TX的WebQQ协议有变动, 会导致无法获取群列表。* 对于不知道 avbot 是神码的同学,猛击这里 avbot 4.0 系列第六个版本 4.5 发布了,同时发布的还有 rpm 包 和 windows 包 rpm 包有 x86_32(用于64位系统) 的和 i686 (用于32位系统) 两个版本。其实 rp...

avbot 4.2 新功能解释和实现

新功能 - 讲笑话 这是一个早就被呼吁的功能,今天抽空实现了。笑话这个功能实现起来有2个要点: 第一,这个笑话虽然是隔十分钟讲一次,可是不能打断大家的讨论,所以是出现十分钟的空闲后才发 第二,这个笑话需要从网页上抓取 第一个要点, 使用办法就是 Asio 提供的 deadline_timer. 设定定时器超时 10min , 但是如果有人发言, 就重设时间. 通过链接...

avbot 结构解释

avbot 由 4 大部分构成 libavbot libavlog botctl avbotrpc +----------+ +----------+ +----------+ | libavlog | | libavbot | ---+---| libwebqq | +----------+\ /...

用概念编程

C++ 爸爸对 c++11 提出了一个 “模板概念” 提案,可是又亲自否决了它。因为他觉得还不够好,还要继续研究一番才行。C++是一个严谨的语言,新特性的加入要小心谨慎。 虽然提案没有通过,但是,C++爸爸俨然已经将那个 C with Class 的语言进化了,C++不再是一个 C with Class 的语言,而是迈出了“概念”编程的一步。 概念编程在C++中由来已久,C++爸爸的提案...

ASIO 与协程

前段时间看了 ASIO 爸爸关于ASIO的一个演讲. ASIO 爸爸说, ASIO 的设计理念就是作为一个 toolkit 而不是一个框架. ASIO并不强迫你使用某种编程模型. 它只是提供一系列的函数和类帮你更容易的编程. ASIO 的设计思想其实和 GLIB 的 g_main_loop 非常像. 但是 C++ 因为有模板, 所以能更好的实现. 使用 g_main_loop 的时候, 我...

NVIDIA 官方驱动支持 Optimus

各位,鄙人去年手贱,买了台 Optimus 的笔记本。最开始的时候用的 Bumblebee,但是觉得每 次用 optirun 非常的 egg pain。我想全局启用 NVIDIA 显卡(GT650M显卡买来不用浪费 啊!),而不是手动使用 optirun。 于是我折腾了 DRM/PRIME , 跑起了开源驱动,找到了PRIME的各种补丁,然后编译+折腾。终于 搞定。 虽然性能差了点(...

ASIO协程的思维转变

avbot 是一个纯粹的单线程程序。在设计 avbot 最初的时候,我就给自己下了一个明确的目标:必须单线程。 但是,它的逻辑可不简单。它需要处理 XMPP 协议,处理 IRC 协议,处理 WebQQ 协议,处理pop3协议,处理 SMTP 协议。 所有的处理都必须异步。绝对不能因为 IO 阻塞。 可能很多人会不以为然,这有什么, select() 一下就好了。但是你知道这意味着多少代码...

fcitx 违反了 GPL2 ? (更新, 已解决)

fcitx 是 yuking 的作品。 一直以来都是以 GPL2 协议发布。 yuking 后来将维护权交给了 csslayer. csslayer 开始了 fcitx 4.X 系列的维护工作。 最近我查看了fcitx 4 的协议, 发现 fcitx4 将自己的协议降级了。而且降级并没有说明获得过 yuking 和其他贡献者的同意。 按照 GPL2 的协议, 升级(就是变得比GPL2 ...

模板多态

需求 jack 正在实现一个 avhttp , 并且也已经相当的可用了。 他在实现http协议的时候,就对 HTTPS 和 HTTP 的实现做了一个相当重要的决定 —– HTTPS和HTTP必须是统一的代码。 那么,要优雅的做到这一点,显然只有一个办法:多态。 但是很不幸的是,SSL 需要 asio::ssl::ssl_stream , 而 TCP 则用的是 asio::ip::tcp...

深入理解C++

说一下我为何回归 C++ 了吧 : 简单: 生命有限。 用 C , 固然是只有一个范式, 学起来容易, 上手简单, 可是需要操心的问题太多了: 内存泄露, 野指针, 各种断错误。 可能你会说, 内存管理,小心点就可以了。 但我觉得,如果你总是用 200% 的精力去避免内存泄露,你就没有精力开发正常的软件了。你会对软件的逻辑进行折中,因为你实在没有精力开发需要你花很多时间写逻辑的代码了。 于...

随机编程

这个想法由来已久, 是从和 Jack 的多次交谈中逐渐悟出来的天朝程序员惯用编程模式. 所谓随机编程, 就是 _随机的_ 改动一些代码, 以求程序运行通过. 但是并不知道为啥这样修改程序就能工作了. 随机编程严重的依赖于单元测试. 给测试人员带来极大的负担. 随机编程的程序员, 对问题不求甚解. 以通过测试为编程目标. 出现问题就一头扎进 改代码 的 重复性 随机性 工作中 为啥一...

使用 boost 执行 base64 解码

base64 编码最初是为了电子邮件开发的。因为电子邮件是个文本协议,不能传输二进制数据,甚至中文也无法进行传输。只能传输ascii编码的文本。这样一来就诞生了多种将二进制数据编码到ascii里的编码方案,base64是其中之一。 base64是一种非常简单的编码,只要进行一次迭代即可完成解码。 什么?一次迭代??? 这就让我们有机会借助 Boost 提供的迭代器非常简洁的写出base...

在高处编程

C++之父在一个讲座上说过,C++是一门轻量级的抽象语言。轻量级,意味着C++尽量减小因为多加的抽象带来的负担。抽象语言,意味着C++有着很强的抽象能力,C++的抽象能力,有了BOOST这样的库之后被极大的提升了,配合着BOOST, 我将 C++称呼为 编译型脚本。 C++是一门抽象语言,使用C++的时候,千万不要去思考编译器到底是如何安排内存的。认真你就输了。使用C++的时候,千万不要去...

无栈协程

在开始之前,先来看一段代码  void pop3::operator() ( const boost::system::error_code& ec, std::size_t length ) { using namespace boost::asio; ip::tcp::endpoint endpoint; std::string status; std::stri...

Why ubuntu sucks and everyone should not use it

这篇文章早就应该发了,但是我太自私,只管自己躲在Gentoo的树阴下乘凉,不为那些在ubuntu的刀山祸害里挣扎的人提供援助。 所以,我觉得为他们提供无偿的援助——告诉他们,ubuntu很烂很烂。 ubuntu的烂要分两个部分,其一是debian的烂,其二是ubuntu的烂。 # debian之烂 debian的烂,体现在包管理器上,特别是debian特色的拆包习俗。 debian的...

博客迁移到 github pages

越来越觉得花钱买一个 VPS 是个太浪费钱的事情了,而且也没那么多精力去维护服务器,于是将博客迁移到 github 就成了上上选择。 现在终于完成迁移了,并且也开启了评论功能,真的是非常不错。可以使用 vim 编写博客了,这真的是太爽的事情了。 目前的 url 是 http://microcai.org, 支持 RSS Feed, url是 RSS Feed 每篇文章都可以使用评论功能...

2012 年总结

过去一年里,啥事情没干。 2012年来的时候,唔说,世界末日到来前不拼命工作。于是就每天宅家里啥也不做了。 要说啥都没做也不对。 乘宅在家里不用工作的机会,把很久以前丢下的C++重新学习了。 重新学习C++是一个机缘巧合的事情,jack 一直是一个C++程序员,重度Boost粉丝。一直向我灌输boost。不过,我一直和云风一样,总是黑C++,说只用C开发。 不过C++11的发布让我...

avplayer 开源软件组织成立,域名 avplayer.org

avplayer.org 项目组成立了。 avplayer 的宗旨是开发易于使用的跨平台 AV播放器框架。avplayer自带一个用 AV播放器框架写的AVPLAYER播放器。 依托于 AVPLAYER本组织还开发了用于成员沟通的 AVBOT (原 QQBOT)。 AVBOT 实现了 QQ/IRC/XMPP的互通。 为了更科学的上网,本群再次发力,开发了 AVSOCKS 科学操长城软件。...