分类:代码

码农是第一生产力。

cmake: How to set visual studio intermediate directory?

I googled this question, these’s no easy way. Cmake does not provide any variable or property to modify visual studio intermediate dierectory. So I modified cmake source code to implement the feature.I’m using VS2005, and I test the modification under VS2005. It just work.

NOTE: New property VS_INTERMEDIATE_DIRECTORY_(CONFIG) can be used to change VS intermediate directory. VS_INTERMEDIATE_DIRECTORY global variable is not supported.

godaddy托管空间添加新域名

以前使用过godaddy economy linux主机,通过.htaccess可实现多域名访问。现在这个漏洞已经被godaddy补上了,要想在一个托管空间中使用多域名,就必须购买deluxe linux主机。以下所有操作可登录后,直接在linux cPanel中完成。

添加数据库

  1. 点击”MySQL数据库”按钮,进入数据库管理页。
  2. 在“新建数据库”一栏中输入数据库名称,比如fyh,再点击“添加数据库”
  3. 在“向数据库添加用户”一栏中,选择当前已经存在的用户,再选择新数据库fyh,点击“添加”。

添加附加域

  1. 附件域就是新域名。点击“附加域“按钮进入管理页。
  2. 直接输入“新域名”,其它不用修改,点击“添加”

安装wordpress

  1. 点击“wordpress博客”按钮,再点击“安装这个应用”,进入wordpress安装界面。
  2. 域名选择刚刚添加的附加域,一般选择带www.前缀的。
  3. 目录留空
  4. “数据库管理”选择“让我来选择数据库”,数据库名称选择刚刚添加的数据库,选择对应的用户户密码,数据库前缀修改成 fyh_ ,方便以后迁移。
  5. 最后点击“安装”

hexo博客平台

hexo基于node.js,下载安装node.js后,用npm包管理系统安装hexo。npm有很多镜像站点可用,设置一个国内镜像可以提高下载速度。修改文件 D:nodejsnode_modulesnpmnpmrc ,增加一行:

registry = http://npm.cbyun.com/

hexo的安装使用方法官网有详细说明: http://hexo.io/

部署方法,网上讲得比较多的是github部署,如果是个人博客,要用到rsync工具。下面是 rsync配置:

deploy:
  type: rsync
  host: www.hostname.com
  user: username
  root: ~/html/hostname
  port: 22
  delete: true

用org2blog写博客

orgmode,emacs党最为推崇的笔记模式,如果不能完成写博客这样的小事情,神怎么能答应呢,于是有了org2blog这个插件。

我会告诉你我是为了用上org2blog才开通的博客么?很早就买了博客空间,但是一直苦恼没有一款好用的博客软件,于是空间一直处于闲置状态。总不能直接在网页上写博文吧,网页出错丢失内容怎么办?总不能用msn writer套件吧,谁愿意装那么大一玩意就为了编辑文本。总不能用notepad吧,格式怎么办?
有了orgmode+org2blog,这都不是问题。

org2blog的设置不多说,参考github官网就可以搞掂。使用时,可以发布整个页面,也可以发布subtree,我偏好把所有博客记录在一个文件中,每次只发布一个subtree。修改文章后,再次发布可以修改原来的文章。

说说缺点,org2blog只能push,不能pull,用其它终端发布或修改的内容不能被同步下来。作者写了个python脚本专门用来下载博客内容,没有整合到emacs中,还是有点遗憾。

博客域名和空间,用的都是goddady服务。托管空间,用的最便宜的经济型linux托管,名义上只能建一个站,实际上,通过.htaccess 文件配置,可以建多个站。我的三个站都放在这个空间里。

手机端的博客工具,目前直接用wordpress客户端软件。

字符集和编码

编码

代码页

  • 代码页即编码的值,同样的字符,在不同的代码页中,值是不同的;
  • 最常用的代码页有 GBK,BIG5,UTF-8,UTF-16;
  • GBK 是 GB2312 的扩展,代码页都是 CP936
  • GB18030 是 GBK 的扩展,代码页是 CP54936 , 一般低端设备不会支持这么全的编码;
  • GB18030,GBK,GB2312 是向下兼容的,即同一字符的值在不同编码中都相同;
  • BIG5 是繁体字的代码页;

编码格式

  • GBK 只有一种编码方案,ascii 码占一个字符,中文字符占两个字节;
  • UNICODE 有三种编码方案:UTF-8,UTF-16,UTF-32;
    • 通常所说的 UNICODE 是指 UTF-16 编码方案,UTF-8,UTF-32 需要特指;
    • UTF-8 字符是以 8 位序列来编码的,用一个或几个字节来表示一个字符,ASCII 码占一个字节;
    • UTF-16UTF-32 分别是 UNICODE 的 16 位和 32 位编码方式;

编码转换

  • GBK 等与 UTF-8 之间都必须通过 Unicode 编码(即 UTF-16)才能相互转换;

编程相关

char / wchar_t

  • 定义 char * 类形的窄字符串时,采用的是内码编码,即源文件的编码。在 Windows 中文系统下即 GBK 编码,因为文本文件默认以 GBK 编码保存;
  • 定义 wchar_t * 类型宽的字符串时,采用的 UNICODE 编码,在 Windows 中文系统下即 UTF-16 格式,在 Linux 下采用 UTF-32 格式;

string / wstring

  • string 一般用来存储 GBK, UTF-8 编码;
  • wstring 一般用来存储 UTF-16 编码;
  • 通常用到的 string2wstring 编码转换即 GBK->UNICODE;wstirng2string 即 UNICODE->GBK;

printf / wprintf

  • printf 格式化输出 %s 时,可输出 GBK 编码;格式化输出 %S%ws 时,可输出 UNICODE 编码;
  • wprintf 格式化输出 %s 时,可输出 UNICODE 编码;格式化输出 %S%ws 时,可输出 GBK 编码;

OS 相关

系统内码

  • Windows 中文系统默认的内码是 GBK ,即以 GBK 解析字节流;
  • Linux 系统默认的内码是 UTF-8 ,即以 UTF-8 解析字节流;

内部存储

  • Windows 中 UNICODE 默认采用 UTF-16 格式存储,即一个字符存放于两个字节;
  • Linux 系统中 UNICODE 默认采用 UTF-32 格式存储,即一个字符存放于四个字节;