菜菜博士

博士在网络的家

avplayer 维基站点建立

avplayer 社区的维基站点建立了, 欢迎大家访问 http://wiki.avplayer.org 目前 avplayer 的维基站点开发免注册编辑权限. 大家可以把 avplayer 社区项目的一些心得分享进行编辑. 比如在 windows 上如何编译 avbot, 希望辛苦解决的人能给后来人以提示.

avbot 6.1 发布

对于不知道 avbot 是神码的同学,猛击这里 avbot 前不久悄悄迎来了半周岁的生日. 因此 avbot 也进入了 6.X 开发周期. avbot 6.0 系列第2个版本 6.1 发布了,同时发布的还有 rpm 包 和 windows 包 avbot 6.1 发布, 添加了股票报价功能, 另外也对 WebQQ 协议进行了更新. 下面是 Changelog — 6.1 * ...

avbot 5.1 发布

对于不知道 avbot 是神码的同学,猛击这里 avbot 5.0 系列开始了. avbot 5.0 系列第3个版本 5.1 发布了,同时发布的还有 rpm 包 和 windows 包 avbot 的版本规则是, 每月提升一个大版本号, 因为是开发 avbot 的第 6 个月了, 所以大版本号提升到 5 了. avbot 5.1 发布, 修复了一个非常严重,困扰了我们很久的一个 1...

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的...