<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangqs1988</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangqs1988]]></copyright><item><title><![CDATA[求同存异——写一个代码对比程序]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7602093</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7602093</guid><author>wangqs1988</author><pubDate>Fri, 25 May 2012 16:07:25 +0800</pubDate><description><![CDATA[有时希望能对比两个不同版本的代码，当然可以用版本控制工具的对比功能。但笔者蠢得连SVN都不会用，所以只好自己动手，丰衣足食。
        先定义需求：比较1000行以内的代码文件，因为自己不会写1000行以上的文件。
        基本的思路是以代码行为单位，动态规划求最长公共子序列。开发语言是Lua。
        首先把文件转化为代码行数组：

--file_name: st]]></description><category></category></item><item><title><![CDATA[长干行]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7551170</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7551170</guid><author>wangqs1988</author><pubDate>Wed, 09 May 2012 18:48:25 +0800</pubDate><description><![CDATA[在ios中调用lua脚本，本以为容易；孰料好事多磨——lua解释器在debug输出中抗议不断，拒不就范。后历经坎坷，笔者才让objc与lua在ios中成功牵线，喜结良缘。所用的方法较为悲催，但可行。


独上高楼，望尽天涯路。

        最初的想法是，把lua文件放到resource文件夹里，作为资源供objc调用。相关代码如下：

p_lua_stack_ = luaL_n]]></description><category></category></item><item><title><![CDATA[在iOS中挂起主线程]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7547642</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7547642</guid><author>wangqs1988</author><pubDate>Tue, 08 May 2012 20:44:26 +0800</pubDate><description><![CDATA[通常而言，ios中涉及IO的操作是多线程的，而不会在主线程中完成，这是为了避免耗时过长IO操作卡住主线程。但某些时候，我们希望让主线程等待IO操作完成——例如主线程创建了一个文件夹后，等待完成，再往文件夹中创建文件。
      NSObject类有一个方法performSelectorOnMainThread:withObject:waitUntilDone可以让主线程挂起，但selector]]></description><category></category></item><item><title><![CDATA[一些vim的插件和配置]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7525080</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7525080</guid><author>wangqs1988</author><pubDate>Tue, 01 May 2012 00:58:22 +0800</pubDate><description><![CDATA[vim的一个强大之处在于广大vimmer所无私奉献的插件，令我等不懂vim脚本的小白受益无穷。在此介绍一些我所安装的插件和配置，都是针对写程序的，没有文本编辑的，也没有日历，也不能煮咖啡。
1) A
      功能简单但很有用的一个插件，键入:A即可切换头文件和源文件。默认支持C，C++，但不支持objc，对此可修改a.vim，在 a.vim 中加入如下语句：
call AddAltern]]></description><category></category></item><item><title><![CDATA[【译】Objective-C的特性（The Disposition of Objective-C）]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7321981</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7321981</guid><author>wangqs1988</author><pubDate>Mon, 05 Mar 2012 18:25:46 +0800</pubDate><description><![CDATA[原文地址：http://amattn.com/2011/10/15/the_disposition_of_objective-c.html
        笔者经过十年的Objc编程，在此谈一些对Objc的评论。
冗长（Verbose）
        这是最显然的Objc特性。Objc编程中总会用到极为冗余的语法，你只能对此习以为常。有经验的Objc程序员相当倚赖于IDE等多种工具来辅助编]]></description><category></category></item><item><title><![CDATA[攘外必先安内——单元测试 In C++]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7316491</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7316491</guid><author>wangqs1988</author><pubDate>Sun, 04 Mar 2012 01:58:24 +0800</pubDate><description><![CDATA[本文介绍笔者在C++开发中的单元测试实施之法，参考过Netbeans自动生成的单元测试代码。

      首先在通用的头文件中定义宏：

#define _QSW_TEST
 
#ifdef _QSW_TEST
    #define DLog(...) printf(__VA_ARGS__);printf("\n")
#else
    #define Dlog(...)
#endif]]></description><category></category></item><item><title><![CDATA[攘外必先安内——单元测试 In C++]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7316485</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7316485</guid><author>wangqs1988</author><pubDate>Sun, 04 Mar 2012 01:52:06 +0800</pubDate><description><![CDATA[本文介绍笔者在C++开发中的单元测试实施之法，参考过Netbeans自动生成的单元测试代码。

      首先在通用的头文件中定义宏：]]></description><category></category></item><item><title><![CDATA[在iOS开发中告别未定义selector]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7283098</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7283098</guid><author>wangqs1988</author><pubDate>Wed, 22 Feb 2012 13:58:01 +0800</pubDate><description><![CDATA[objc和C++同为由C语言衍生出的OOP语言，但他们实现OOP的方式并不相同：在C++中，对象与方法在编译器绑定；而在objc中，称“方法”一词为“消息”，在程序运行时向对象发送消息，即运行期绑定。

      两种方式各有优劣，C++注重性能，objc注重灵活。

      然而运行期绑定给开发带来问题——编程时拼写错了方法名，编译器并不报错。笔者曾debug一小时，最后发现是方法]]></description><category></category></item><item><title><![CDATA[情人节乃浮云——再谈单例对象的Lua实现]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7259775</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7259775</guid><author>wangqs1988</author><pubDate>Wed, 15 Feb 2012 01:31:38 +0800</pubDate><description><![CDATA[之前发了篇有失水准的文章，声称可以用文中的方法实现lua单例对象。
        确实可以现实，但是太ugly了，体现不出lua之美，还附带命名污染。百科了下FP，遂想出一种更优雅的实现方案：

Hello = {}


function Hello:new() --private method.
    local store = nil

    return function(sel]]></description><category></category></item><item><title><![CDATA[Lua的一种二维数组表示法]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7253036</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7253036</guid><author>wangqs1988</author><pubDate>Sun, 12 Feb 2012 19:52:19 +0800</pubDate><description><![CDATA[《Lua程序设计》中介绍了两种方法：
        1）用一维数组，也就是一个table模拟二维数组的行为。此方法性能不错，但实现起来略嫌麻烦。
        2）table套table，类似于C语言的“指针的数组”，外层table的value是内层table的引用。此方法优劣反之。
        其实在某些场景下，适合用方法2）的优化方案，例如：
local DIR_ARRAY =]]></description><category></category></item><item><title><![CDATA[单例对象的lua实现]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7249116</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7249116</guid><author>wangqs1988</author><pubDate>Fri, 10 Feb 2012 16:42:56 +0800</pubDate><description><![CDATA[前几天看了云风大侠用lua写的OOP模板，膜拜不已，用这个模板会让人误以为lua是显式支持OOP的，而感觉不到这是用lua现成的语法写就的模板。
        不过个人还是抗拒用这个模板，因为一旦用这个模板实现OOP，就没法控制一些细节。尽管可以扩充这个模板，但总不如自己写的元表灵活。比如，这个模板不支持单例对象。
        单例是一种很有用的设计模式。在OOP中会发现，在业务逻辑或是]]></description><category></category></item><item><title><![CDATA[lua学习小记（2）]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7243068</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7243068</guid><author>wangqs1988</author><pubDate>Wed, 08 Feb 2012 17:27:37 +0800</pubDate><description><![CDATA[lua本身并没有提供OOP的机制，但可以通过表，元表，闭包这些强大的特性构造出OOP。在此介绍两种实现OOP的方法，来自《Lua程序设计（第2版）》（此书已绝版，淘宝上可以买到质量很不错的影印版。云风大侠在豆瓣读书上力荐此书）。
        有一个名为Speak的类，它的唯一功能就是设计和输出它的成员变量s，以下用两种方法构建Speak及其对象speak。
        1）通过闭包和表]]></description><category></category></item><item><title><![CDATA[读《C和指针》]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7240522</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7240522</guid><author>wangqs1988</author><pubDate>Tue, 07 Feb 2012 20:44:22 +0800</pubDate><description><![CDATA[这本书不是C语言入门教材，读这本书之前至少会用C写个反转字符串什么的。
        书里晰了很多概念，有些知识点是《C程序设计语言》里所无的，有些巩固了自己不确切的经验。 
        最近读《软件随想录》读到一些深为赞同的话，比如作者称不懂C语言和指针的，不会写递归程序的CS学生都不该得到CS bachelor，并嘲讽了某些学校的CS只教java的做法。 
        这在国内]]></description><category></category></item><item><title><![CDATA[lua学习小记（1）]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7237447</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7237447</guid><author>wangqs1988</author><pubDate>Mon, 06 Feb 2012 18:02:00 +0800</pubDate><description><![CDATA[决定学一门动态脚本语言，感受一下不受拘的coding，发现比较流行的又不是只能用来写网页的有python，lua，ruby等。lua兼具运行效率高，表达能力强的优点，成了我的首选。更何况“月亮”听起来要比“蟒蛇”和“红宝石”文艺多了。
       这是第一篇，但我不知道会不会写第二篇。题目括号里的数字是1，因为lua里的数组下标习惯上是从1开始的，当然从-1234开始也没有错，但不建议在一个团]]></description><category></category></item><item><title><![CDATA[lua学习小记（1）]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7237292</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7237292</guid><author>wangqs1988</author><pubDate>Mon, 06 Feb 2012 16:46:31 +0800</pubDate><description><![CDATA[决定学一门动态脚本语言，感受一下不受拘的coding，发现比较流行的又不是只能用来写网页的有python，lua，ruby等。lua兼具运行效率高，表达能力强的优点，成了我的首选。更何况“月亮”听起来要比“蟒蛇”和“红宝石”文艺多了。
        这是第一篇，但我不知道会不会写第二篇。题目括号里的数字是1，因为lua里的数组下标习惯上是从1开始的，当然从-1234开始也没有错，但不建议在一个]]></description><category></category></item><item><title><![CDATA[【转】吴英死了，邓亚萍才可以活着]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7216961</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7216961</guid><author>wangqs1988</author><pubDate>Sat, 28 Jan 2012 19:00:16 +0800</pubDate><description><![CDATA[吴英终审被判死刑，消息传来，我想说的太多了，千言万语，不知从何开始。总之，吴英的死，印证了中国特色：权力最大。那些开宝马车横冲直闯，嚣张无比的富家子弟能否得到一点教训？管你爸爸是亿万富翁，在权力面前，其实不过是小儿科。 


吴英如果不出事，她的世界永远与我们隔着深深的迷雾。可是，她要发展，不与权力结盟，是不可能短时间爆发的。权力的春药，有几个有雄心大志的人敢不吞服？吞下权力春药，他们从此就]]></description><category></category></item><item><title><![CDATA[读Dennis的《C程序设计语言》小记]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7215962</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7215962</guid><author>wangqs1988</author><pubDate>Fri, 27 Jan 2012 10:59:14 +0800</pubDate><description><![CDATA[这两天把《C程序设计语言》过了一遍。并非出于悼念伟人的目的而拜读他的著作——只是打算把传说中的“C语言四大圣经”拜读一遍，这是第一本。基础的，经典的东西最具学习价值，学这些东西也最感愉悦，安全。
        不知道这本书是不是入门教材，大概因为C基础在，看得飞快。看完觉得一些国内的C教材颇具中国特色，只是把语法翻来覆去地讲，令读者知其然而不知其所以然。]]></description><category></category></item><item><title><![CDATA[90%程序员写不对二分搜索？]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7214697</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7214697</guid><author>wangqs1988</author><pubDate>Tue, 24 Jan 2012 15:31:26 +0800</pubDate><description><![CDATA[近期看过几篇文章，讲90%程序员写不对二分搜索——看到这个观点时顿感受宠若惊，看下去才发现自己也属90%之列——原因是(low + high) / 2的写法有可能溢出，应该这么写——low + (high - low) 
        其实我怀疑low + (high - low)的写法出自16位时代；现在通常没有必要这么写。编程的时候，有时不必未雨绸缪。]]></description><category></category></item><item><title><![CDATA[if (a & 1 == 0)]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7214273</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7214273</guid><author>wangqs1988</author><pubDate>Mon, 23 Jan 2012 18:40:24 +0800</pubDate><description><![CDATA[以前用C++编程时碰到过一个“神奇的bug”，在前文中有述；就是判断变量a的奇偶性时，我写了if (a & 1 == 0)，明明a为偶数，判断结果却为假，程序就跑到else分支里去了，打印a & 1的结果却为0。
        今天看书时终于明白原委了——不管a是什么，这个条件判断出来都是假的～]]></description><category></category></item><item><title><![CDATA[HDOJ 1240，兼谈A*算法之实现]]></title><link>https://blog.youkuaiyun.com/wangqs1988/article/details/7213555</link><guid>https://blog.youkuaiyun.com/wangqs1988/article/details/7213555</guid><author>wangqs1988</author><pubDate>Sat, 21 Jan 2012 19:27:32 +0800</pubDate><description><![CDATA[题目地址：http://acm.hdu.edu.cn/showproblem.php?pid=1240
        题目描述很长，其实题意很简单——在一个3维立方体中，求两坐标点间的最短距离。数据规模不大，边长至多为10，也就是一共1000个坐标点，也许用BFS也能A，不过我还是偏爱用更快的A*。于是这道题的重点也就在于写个A*算法，首先贴个A*算法的伪代码(之前转载过，不过没贴全)：
A]]></description><category></category></item></channel></rss>