<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gemo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/gemo</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; gemo]]></copyright><item><title><![CDATA[(C++)跨平台日志库——yaolog v1.6]]></title><link>https://blog.csdn.net/gemo/article/details/8499692</link><guid>https://blog.csdn.net/gemo/article/details/8499692</guid><author>gemo</author><pubDate>Tue, 15 Jan 2013 10:42:32 +0800</pubDate><description><![CDATA[写代码总免不了要看日志。就C++而言，不少程序员只是简单地用printf来输出日志，或者临时写个日志类，log4cpp等比较“重型”的日志库的使用率反而并不怎么高（至少从我经历的项目而言）。也许是不想为不需要的功能付出额外的学习成本，但无论如何，对于通用类别的工具采取临时手写的方式来应付，从长远考虑，在功能性和健壮性方面是得不偿失的。写这个日志类(yaolog)的最初的想法只是为了实现“输出到文件]]></description><category></category></item><item><title><![CDATA[通过javascript判断本地是否安装了客户端]]></title><link>https://blog.csdn.net/gemo/article/details/8498757</link><guid>https://blog.csdn.net/gemo/article/details/8498757</guid><author>gemo</author><pubDate>Sun, 13 Jan 2013 20:35:52 +0800</pubDate><description><![CDATA[我们都知道js被设计为不可访问本地资源，因此理论上js无法知道本地是否安装了特定程序。但是凡事无绝对，对于IE，给出如下两种思路：
    1 ActiveX
       在页面中用js去new一个指定的ActiveX对象，如果抛出异常，则说明目标客户端没有安装。这种方法的问题在于容易弹出安全性提示，但是经过我的试验，编写ocx时实现isafeobject接口并在注册表中写入特定键值，就可以]]></description><category></category></item><item><title><![CDATA[(C++)读写注册表的类]]></title><link>https://blog.csdn.net/gemo/article/details/8498227</link><guid>https://blog.csdn.net/gemo/article/details/8498227</guid><author>gemo</author><pubDate>Sun, 13 Jan 2013 15:38:05 +0800</pubDate><description><![CDATA[直接用API读写注册表还是比较麻烦的，于是就封装了一个类来操作，类声明如下：

class rw_reg
{
public:
	static BOOL GetRegStr(
		tstring strKeyName, 
		tstring strValueName, 
		tstring& strValue, 
		DWORD dwMaxLength = 260, 
		HKEY hKeyPa]]></description><category></category></item><item><title><![CDATA[(C++)带有元数据信息的结构体]]></title><link>https://blog.csdn.net/gemo/article/details/8496800</link><guid>https://blog.csdn.net/gemo/article/details/8496800</guid><author>gemo</author><pubDate>Sat, 12 Jan 2013 20:00:04 +0800</pubDate><description><![CDATA[C++的结构体和类不像C#和java那样有完整的元数据信息，但是我们可以用宏和模板近似地做到这一点。代码在这里：点击下载
    例如PersonInfo是一个超级结构体，那么可以这样使用：

#include "PersonInfo.h"
#include 

int main()
{
	PersonInfo info;
	info.name = "Jack";
	info.age = 4]]></description><category></category></item><item><title><![CDATA[(C++)注释末尾的反斜杠]]></title><link>https://blog.csdn.net/gemo/article/details/8486727</link><guid>https://blog.csdn.net/gemo/article/details/8486727</guid><author>gemo</author><pubDate>Wed, 09 Jan 2013 17:44:02 +0800</pubDate><description><![CDATA[今天用GCC编译遇到如下警告（使用了-Wall选项）：warning: multi-line comment [-Wcomment]
    导致警告的代码是一个函数声明上面的注释，如下：

// this arg is a driver, for example c:\
// and you can ...

    查了下原来在注释行的末尾加上反斜杠会导致编译器连接本行和下行（和宏定]]></description><category></category></item><item><title><![CDATA[(C++)计算事件发生可能性的函数]]></title><link>https://blog.csdn.net/gemo/article/details/8481164</link><guid>https://blog.csdn.net/gemo/article/details/8481164</guid><author>gemo</author><pubDate>Tue, 08 Jan 2013 15:03:34 +0800</pubDate><description><![CDATA[比如你要想在软件里附加一个彩蛋给用户玩，每次软件启动后只有5%的机率会触发这个彩蛋。那么怎么根据5%这个规定来知道某次是否触发呢？于是就有了下面这个函数：

bool GetBoolByProbability(int numOfHundred)
{
	assert(numOfHundred >= 0 && numOfHundred <= 100);
	return numOfHundred =]]></description><category></category></item><item><title><![CDATA[(C++)使用自定义的异常类获取源代码信息]]></title><link>https://blog.csdn.net/gemo/article/details/8473854</link><guid>https://blog.csdn.net/gemo/article/details/8473854</guid><author>gemo</author><pubDate>Sun, 06 Jan 2013 18:24:52 +0800</pubDate><description><![CDATA[如果在项目中使用异常机制，我们一般会定义一个类继承自std::exception，在throw时附带上自定义的信息。但是有时我们还希望知道某个异常是从何处抛出的，也就是源代码的文件，函数，行号信息。于是就写了这个ExceptionEx类，继承该类就能够很容易地获取上述信息。ExceptionEx的实现在这里：ExceptionEx
        用法如下：

#include 
#incl]]></description><category></category></item><item><title><![CDATA[(C++)UrlEncode的标准实现]]></title><link>https://blog.csdn.net/gemo/article/details/8468311</link><guid>https://blog.csdn.net/gemo/article/details/8468311</guid><author>gemo</author><pubDate>Sat, 05 Jan 2013 14:12:07 +0800</pubDate><description><![CDATA[关于UrlEncode的实现(C++)，网上有很多不同的版本，对需要编码的字符集的选取并不统一。那么到底有没有标准呢？答案是有的，参见wiki

    绝对不编码的，只有字母、数字、短横线(-)、下划线(_)、点(.)和波浪号(~)，其他字符要视情况而定，所以一般性的urlencode只需保留上述字符不进行编码。
    下面给出实现：



unsigned char ToHex]]></description><category></category></item><item><title><![CDATA[在windows的cmd中使用adb的颜色问题]]></title><link>https://blog.csdn.net/gemo/article/details/8465077</link><guid>https://blog.csdn.net/gemo/article/details/8465077</guid><author>gemo</author><pubDate>Fri, 04 Jan 2013 16:15:43 +0800</pubDate><description><![CDATA[在windows的cmd中，用adb连接手机时，ls命令有时会显示乱码，原因是cmd无法解析颜色代码，所以先执行这一句就能正常了：
alias ls="ls --color=never"]]></description><category></category></item><item><title><![CDATA[(C++)定制一个可输出更多信息的assert]]></title><link>https://blog.csdn.net/gemo/article/details/8464135</link><guid>https://blog.csdn.net/gemo/article/details/8464135</guid><author>gemo</author><pubDate>Fri, 04 Jan 2013 14:53:46 +0800</pubDate><description><![CDATA[我们经常用assert来除错，它能告诉我们断言失败的代码行和表达式。但是，有时我们希望能在assert失败时得到更多信息，例如：当GetLastError()  != ERROR_SUCCESS时，还希望将这个ErrorCode到底是多少也显示在assert弹出的对话框中。
    废话就不多说了，直接上代码：
#pragma once

///////////////////////////]]></description><category></category></item></channel></rss>