<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Apogee</title>
	<atom:link href="http://bigasp.com/feed" rel="self" type="application/rss+xml" />
	<link>http://bigasp.com</link>
	<description>I&#039;ll take a quiet life. A handshake of carbon monoxide.</description>
	<lastBuildDate>Wed, 15 Feb 2012 16:51:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>充电什么的最不能停止了</title>
		<link>http://bigasp.com/archives/518</link>
		<comments>http://bigasp.com/archives/518#comments</comments>
		<pubDate>Wed, 15 Feb 2012 16:51:16 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=518</guid>
		<description><![CDATA[在经过了一年的折腾之后，发现有太多东西是在是没有学好了，去年买了很多书，也都还没有看。今年是要好好充电了，很多事情都是心有余而力不足，人生没有目标什么的，迷茫什么的，实在太讨厌了。恩，列下比较重要又还没有好好看完的书单，争取在今年把他们都解决掉。 《Windows核心编程》 《Windows内核原理与实现》 《STL源码分析》 《软件调试》 恩，加油！]]></description>
		<wfw:commentRss>http://bigasp.com/archives/518/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X Lion Spotlight 优化指南</title>
		<link>http://bigasp.com/archives/516</link>
		<comments>http://bigasp.com/archives/516#comments</comments>
		<pubDate>Sat, 11 Feb 2012 13:55:59 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=516</guid>
		<description><![CDATA[原创文章，转载请标明出处：Soul Apogee (http://bigasp.com)，谢谢。 Spotlight是一个让人又爱又恨的东西，一方面他确实相当好用，但是另外一方面，他也确实占用了不少系统资源，在进行大量文件操作的时候，经常将CPU占满，可以将我可怜的macbook pro烧到80度左右，所以不能不好好的折腾他一下了，这里总结一些这两天摸索出来的Spotlight调优的方法，希望能对大家也有些帮助。 本人使用Mac现在总时间还不超过一周，所以很多东西理解的可能是不对的（什么可能啊，是应该吧），有不正确的地方，还请大家多多指正。 以下优化是在Mac OS X Lion 10.7.2 的系统上实践出来的，其他版本的系统可能有一些不一样，大家可以Google一下具体的方法，但是基本步骤应该是差不多的。 如果没有大量的文件操作，Spotlight对系统的影响还是不大的，占用CPU一般是3% &#8211; 5%左右，没有太大必要进行优化。但是如果发现最近电脑温度很高，或者电池消耗很快，就可以检查一下Spotlight，参照这篇文章进行优化了。 Spotlight简介 Spotlight是Mac系统中的查找服务，为了能使查找更加的迅速，Mac系统会在后台运行一个索引服务，在有文件操作或者资料更新，如iTunes，Mail等，就会为他们建立一个索引，用于加速Spotlight的查找。 所以，Spotlight其实分为两个部分：前台Spotlight的查找服务Search.bundle，和后台的索引服务mds。 优化Spotlight，其实就是优化这两个服务。 基本优化方案：减少需要索引的内容 根据上面的介绍，那么我们可以想到，最简单的优化就是减少需要索引的内容。 首先，在Spotlight的设置中选择我们需要索引的内容。 打开系统偏好设置-&#62;Spotlight，在搜索结果这个Tab栏内，我们把所有我们不关心的内容全部勾选掉。 我只勾选了：应用程序，系统偏好设置，通讯录和音乐。这些对我来说够用了。 然后，将我们不需要索引的文件夹都加入Spotlight的黑名单。 在系统偏好设置-&#62;Spotlight中的隐私Tab中，我们可以选择那些目录是Spotlight不用去索引的，我们可以利用这个目录来大大减少我们需要索引的文件量。 打开Finder，点击菜单中的前往-&#62;前往文件夹，转到根目录/， 将文件夹中除了应用程序和用户的目录，全部放入黑名单。 需要注意的是：其实用户目录也可以放入黑名单，Spotlight中显示的音乐，联系人和邮件，其实是靠和这些软件数据库直接联系来建立索引的，所以和文件夹的索引没有太大的联系，也可以放入黑名单。这里看大家的喜好，我全放进去了。 另外还需要注意的是：这里需要在Finder里面显示所有隐藏文件，因为一些和系统相关的目录，如/usr，其实都没有索引的必要，都可以放入黑名单。如果显示文件的方法不会的话，大家可以去Google一下。 最后，我们还需要再设置一下Spotlight需要索引的硬盘，一些移动硬盘和U盘什么的，其实就不需要索引了。 打开终端，输入下面的命令： # 关闭所有磁盘的索引服务 sudo mdutil -a -i off # 只打开主硬盘的索引服务，我的主硬盘被挂载到/Volumes/Macintosh HD目录下（默认设置），大家可以根据具体情况修改。 sudo mdutil -i on "/Volumes/Macintosh HD" 如果上面的指令执行错误，可以使用如下命令来恢复对所有磁盘的索引。 sudo mdutil -a -i on 好，到此我们已经完成了第一步优化了。 [...]]]></description>
		<wfw:commentRss>http://bigasp.com/archives/516/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决QT在VS下中文乱码的问题</title>
		<link>http://bigasp.com/archives/494</link>
		<comments>http://bigasp.com/archives/494#comments</comments>
		<pubDate>Tue, 21 Jun 2011 15:32:27 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[vs]]></category>
		<category><![CDATA[中文乱码]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=494</guid>
		<description><![CDATA[我们用VS编译出来的QT程序，经常会遇见中文乱码，其实解决方法很简单： 在main函数所在文件的包含如下文件： #include &#60;QtCore/QTextCodec&#62; 然后，在main函数的开头加入这么一句话就可以了。 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); 之后在调用的时候，所有的字符串记得使用tr()函数包裹起来。比如： QMessageBox::warning(this, tr("出错啦！"), errorInfo, tr("OK")); 这个是因为VS默认的编码是GB2312，而函数tr的作用，是将默认的字符串转换成QT内部的编码：Unicode，所以我们这里只需要设置好编码即可。 如果碰到一些2312里面没有的生僻字，我们也可以尝试使用Windows默认的多字符编码GB18030来解决。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/494/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>年假！音乐周！</title>
		<link>http://bigasp.com/archives/489</link>
		<comments>http://bigasp.com/archives/489#comments</comments>
		<pubDate>Mon, 20 Jun 2011 15:56:37 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=489</guid>
		<description><![CDATA[一年一度的公司旅游，结果去的地方我已经去过了，于是抓住机会请了三天年假，想在家里好好休息休息。当然MM还要上课，所以去不了什么远的地方，于是，打算这几天在北京逛逛，然后听听音乐会就这么休息过去吧。 中央音乐学院真是一个好地方，时不时就有演出可以看，有时候还是大师来演出，质量也是相当的高，最后外加一个双休，五天听了五场，很爽很震撼。 第一天是一场几米的漫画主题音乐会，开场比较搞，为了和几米的漫画造成反差，居然用了德国战车的Engel当开头，不过后面真的很感人，期间有一首德彪西的音乐，基本上改变了我极度不喜欢他的看法，后面在看《蓝石头》+ 《空顶之光》的时候，居然被感动到流泪了，没有办法，那样干净的旋律，配上蓝石头这么煽情的剧情，再加上一个杯具的北漂程序猿，怎么不感动。当然最后被MM狂笑了一顿。。。。。一个爷们，感情神马的，哪来这么丰富。。。。。 第二天是一场巴赫的室内乐音乐会，我也终于见到了真正的羽管键琴，曲目从维尔瓦蒂到巴赫，一共演出了4首室内乐，外加一首咏叹调，巴洛克时期的音乐确实很好听，但是怎么说呢。。。真的听起来都差不多，不管曲式有多么复杂，但是听起来都非常的有规律。。。于是基本是在朦脓中度过了两个小时。。。各种朦脓。。。 第三天是美国西北大学的一个教授，Alan Chow，看介绍那是获了N多的奖，大师真的就是大师，海顿，李斯特到肖邦，各个都表现的让人震撼不已，最后由于大家掌声异常热烈，大师还加演了一首，这一首没有听过，不知道名字，但是技巧要求应该非常高，应该不属于人类可以弹的曲子吧。。。嗯。。。反正当时看的时候，我是这么认为的。。。嗯。。。我脑袋里面只有一个人物在飘。。1900。。。 第四天是侯乐天的音乐喜剧，虽然早到了半个小时，但是却已然没有座位了。。不知道为什么来了这么多人，听人讨论貌似还有某医院的二三四楼的所有员工。。。嗯。。总之就是人超多啦。。还有各种小孩子在吵闹，再加上音响效果不好。。。结果可想而知。。。很多时候实在听不太清楚上面在干什么。。不过能听清楚的地方笑点还是很多的。。 第五天是一场爵士音乐会，演出了很多首歌，关键是即便是现成的爵士乐，他们也会把他改编掉，而且确实很好听，所以从头到尾都听的很high，全场一直叫声不断~ 另外，这几天还完成了一个很久就想做的事情，那就是把我的民谣修好，真的可惜了，一段时间没有玩它，居然琴颈就弯了，于是那天和MM还有思思老师一起去了平安里，找了家店子把琴修好了，只花了20，另外换了套Martin的弦用了50，价格算是相当公道了，琴行叫做楠木秀，老板人是个很有意思的人，原来是在重庆组乐队的，搞蓝调，赚老外的钱，后来散了，就来了北京，搞了这个琴行。。。嗯。。。 一年才一次的三天年假就这么用完了。。。用完了才发现，原来时间真的过的快。。。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/489/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何正确使用C++多重继承</title>
		<link>http://bigasp.com/archives/486</link>
		<comments>http://bigasp.com/archives/486#comments</comments>
		<pubDate>Thu, 16 Jun 2011 18:10:31 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=486</guid>
		<description><![CDATA[原创文章，转载请标明出处：Soul Apogee (http://bigasp.com)，谢谢。 C++多重继承一直是一个让人搞不太清楚的一个问题，但是有时候为了实现多个接口，多重继承是基本不可避免，当然在Windows下我们有强大的COM来帮我们搞定这个事情，不过如果你想自己实现一套类似于COM的东西出来的时候，麻烦事情就来了。 在COM里面，有两个很基础的，而且我们都会用到的特性： 1. 纯虚接口：一般使用一个只有纯虚函数的类来作为接口 2. 引用计数：在C++中一般都使用引用计数来管理对象的生命周期 这两个功能在一般设计C++接口的时候也经常用到。其实说到底，上面这两个特性牵扯到的是多重继承的二个表现： 1. 多重继承中的数据存储 2. 多重继承中的虚函数 在COM中，纯虚接口是使用的interface来定义的，引用计数是通过IUnknown接口来实现的，所有的接口都是从IUnknown这种接口中派生出来的。当我们需要某一个类实现多个接口的时候，就经常会遇见这样的多重继承： 哦？！是不是很眼熟，ios，istream，ostream，iostream。。各种C++书籍最喜欢用的一个示例。好吧，现在我们先自己实现一个吧，看看到底要怎么使用多重继承。 多重继承中对象的的数据存储 #include &#60;stdio.h&#62; class IBase { public: IBase() : n(0) {} virtual ~IBase() {} void show() { printf("%dn", n); } int inc() { return ++n; } int dec() { return --n; } protected: int n; }; class IA : [...]]]></description>
		<wfw:commentRss>http://bigasp.com/archives/486/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>记忆碎片</title>
		<link>http://bigasp.com/archives/481</link>
		<comments>http://bigasp.com/archives/481#comments</comments>
		<pubDate>Sat, 28 May 2011 05:10:46 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[06 Screen Sucker]]></category>
		<category><![CDATA[movie]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=481</guid>
		<description><![CDATA[这部经典的片子已经出来10多年了，一直久闻他的大名，却没有什么时间看，直到前天晚上，和MM一起看了这部经典作品，看完之后确实有些感触。 10多年前的片子，剧透神马的应该就是浮云了，我就随便乱说了。 故事的主人公是一个没有记忆力的人，在一起事故中，主人公失去了自己的妻子，也失去了记忆力，他只能记住很短一段时间内发生的之后，一旦过了一会儿，他就不知道自己在哪，在干什么，所以他只能把他知道的事情记录在纸上，利用这些记录下来的纸片帮助他对当前的事情做决定。设定什么的大概是这样。于是故事开始了。 和普通的影片不同，这部片子有两条时间线，一条从最开始向后叙述，另外一条从后向前叙述，最后在中间汇合，并交待故事的前因后果。开始主要是后面这条线，我们可以看到主人公是怎么样利用他身上的纹身，带在身上的照片来帮助自己继续的正常的生活，可是事情越向前发展，越不对，那些原本帮助他记忆的纸片，却成为了诱导他犯错的原因。仅仅一句“不要相信他的谎言”，却导致他对后面所有发生的事情都推断错误，一个在帮助他的人，却被他杀害了，而一直在玩弄他的人还好好的活着。而影片最后发现他在那次事故中并没有失去他的妻子，他的妻子是被他自己害死的，而他却把他和他的一个案子里的人记混了，误以为他的妻子是在那次事故中死掉的，最后一直追杀杀害他妻子的凶手。一切就是这么戏剧。。。 看完之后我就在想，那既然短期的记忆实际上记得并不会很长久，笔记也不一定能帮助我们正常的工作，长期记忆更是经常容易记混，我们应该如何来对正在发生的事情做出正确的判断呢？ 从影片看来似乎是不可能的，导演也没有给我们一个方法，但是影片却确实给我们留下了一个答案： 按照自己的规则去过自己的人生吧，即便它是错的，但是只要你自己坚持下去，你自己就会觉得它有意义。只要自己觉得一切是有意义的，这就足够了。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/481/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome学习笔记（一）：线程模型，消息循环</title>
		<link>http://bigasp.com/archives/478</link>
		<comments>http://bigasp.com/archives/478#comments</comments>
		<pubDate>Wed, 25 May 2011 15:15:54 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[MessageLoop]]></category>
		<category><![CDATA[线程]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=478</guid>
		<description><![CDATA[原创文章，转载请标明出处：Soul Apogee (http://bigasp.com)，谢谢。 看Chrome已经有一段时间了，但是一直都没有沉淀些内容下来，是该写写笔记什么的了，免得自己忘记了。看的都是Windows平台下的代码，所以记录也都是记录的。。。废话。。 那么首先，先从最基础的东西记录起吧：Chrome的线程模型和消息循环。 多线程的麻烦 多线程编程一直是一件麻烦的事情，线程执行的不确定性，资源的并发访问，一直困扰着众多程序员们。为了解决多线程编程的麻烦，大家想出了很多经典的方案：如：对资源直接加锁，角色模型，CSP，FP等等。他们的思想基本分为两类：一类是对存在并发访问资源直接加锁，第二类是避免资源被并发访问。前者存在许多问题，如死锁，优先级反转等等，而相对来说，后者会好很多，角色模型，CSP和FP就都属于后者，Chrome也是使用后者的思想来实现多线程的。 Chrome的线程模型 为了实现多线程，Chrome思路是简单且尽可能的少用锁，所以它在实现中并没有使用如角色模型之类的复杂的结构，而只是引入了自己的消息循环作为多线程的基础。它足够简单，方便使用，而且很容易实现跨平台。 相比平时的消息循环（如：Windows的消息循环，Linux中的epoll模型），它唯一增加的功能就是可以运行自定义的任务：Task。 如果在一个线程里面需要访问另一个线程的数据，则把接下来要运行的函数和参数包装成一个Task，并将其传递给另外一个线程，由另外一个线程来执行这个Task，从而避免关键数据的并发访问，而又因为任务执行是有顺序的，这样就保证了代码执行的确定性。 其实，这就是一个典型的Command模式，而通过这个模式，简单的在线程之间传递Task，就实现了Chrome的多线程模型。 Task 1. Task 为了统一所有消息循环中的任务调用方式，所有的任务的基类都是这个Task类，他唯一的方法就是run()，MessageLoop只需要调用这个虚函数即可。 如果为了简化大家的开发，Chrome可谓下足了功夫，光是一个Task，就提供了各式各样的派生类供大家使用，并提供了良好的实现。 派生出来的Task有：CancalableTask，ReleaseTask，QuitTask等等。 根据调用条件的不同，将Task又分为即时处理的Task、延时处理的Task和Idle时处理的Task。 为了简化开发，还引入了RunnableMethod，封装对象的方法，减少我们自己实现Task的时间。 调用PostTask时，还需要传入一个TrackedObject，用于追踪Task的产生位置，为调试做准备。 2. RunnableMethod RunnableMethod是一个很非常有用的类，这个方法通过模版将一个对象和他的方法和参数封装成一个Task，抛入另外一个线程去工作，其中为了保证对象的生命周期，对象的指针必须有引用计数，如果这个Task跨线程调用的话，这个引用计数必须是线程安全的。参数则通过Tuple来进行封装。在Task执行的时候通过另外一个模版将Tuple解开成参数即可。 线程和消息循环 Chrome将其线程分为了三类：普通线程，UI线程和IO线程。他们之间的区别是： 普通线程：只能执行Task，没有其他的功能。 UI线程：所有的窗口都需要跑在UI线程上，它除了能执行Task以外，还能执行和界面相关的消息循环。 IO线程：和本地文件读写，或者网络收发相关的操作都运行在这个线程上，它除了能执行Task以外，还能执行和IO操作相关的事件回调。 由于这三类线程中Task的执行部分基本是一样的，而其他的功能却完成不同，为了实现这不同的三类线程，Chrome将消息循环分成了两个部分：MessageLoop和MessagePump。 MessagePump被提取出来负责执行Task的时机和处理线程本身的消息，如：UI线程的Windows消息，IO线程的IO事件。 MessageLoop则仅仅是做Task的管理，它实现了MessagePump的Delegate的接口，这样MessagePump就可以告诉MessageLoop何时应该处理Task了。 另外实现上虽然Chrome为这三种线程实现了三套MessageLoop，但是它们之间的区别，也仅限于暴露出现的MessagePump的接口不同而已。 消息循环之MessageLoop 1. 减少锁的请求 一般我们在实现任务队列时，会简单的将任务队列加锁，以避免多线程的访问，但是这样每取一次任务，都要访问一次锁。一旦任务变多，效率上必然成问题。 Chrome为了实现上尽可能少的使用锁，在接收任务时用了两个队列：输入队列和工作队列。 当向MessageLoop中内抛Task时，首先会将Task抛入MessageLoop的输入队列中，等到工作队列处理完成之后，再将当前的输入队列放入工作队列中，继续执行。 这样，就只有当将Task放入输入队列时才需要加锁，而平时执行Task时是无锁的，这样就减少了对锁的占用时间。 2. 延时任务 为了实现延时任务，在MessageLoop中除了输入队列和工作队列，还有两个队列：延迟延迟任务队列和需在顶层执行的延迟任务队列。 在工作队列执行的时候，如果发现当前任务是延迟任务，则将任务放入此延迟队列，之后再处理，而如果发现当前消息循环处于嵌套状态，而任务本身不允许嵌套，则放入需在顶层执行的延迟任务队列。 一旦MessagePump产生了执行延迟任务的回调，则将从这两个队列中拿出任务出来执行。 消息循环之MessagePump MessagePump是用来从系统获取消息回调，触发MessageLoop执行Task的类，对于不同种类的MessageLoop都有一个相对应的MessagePump，这是为了将不同线程的任务执行触发方式封装起来，并且为MessageLoop提供跨平台的功能，chrome才将这个变化的部分封装成了MessagePump。所以在MessagePump的实现中，大家就可以找到很多不同类型的MessagePump：如MessagePumpWin，MessagePumpLibEvent，这些就是不同平台上或者不同线程上的封装。 Windows上的MessagePump有三种：MessagePumpDefault，MessagePumpForUI和MessagePumpForIO，他们分别对应着MessageLoop，MessageLoopForUI和MessageLoopForIO。 下面我们从底层循环的实现，如何实现延时Task等等方面来看一下这些不同的MessagePump的实现方式： 1. MessagePumpDefault MessagePumpDefault是用于支持最基础的MessageLoop的消息泵，他中间其实是用一个for循环，在中间死循环，每次循环都回调MessageLoop要求其处理新来的Task。不过这样CPU还不满了？当然Chrome不会仅仅这么傻，在这个Pump中还申请了一个Event，在Task都执行完毕了之后，就会开始等待这个Event，直到下个Task到来时SetEvent，或者通过等待超时到某个延迟Task可以被执行。 2. MessagePumpForUI MessagePumpForUI是用于支持MessageLoopForUI的消息泵，他和默认消息泵的区别是他中间会运行一个Windows的消息循环，用于分发窗口的消息，另外他还增加了一些和窗口相关的Observer等等。 [...]]]></description>
		<wfw:commentRss>http://bigasp.com/archives/478/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>小可爱啊小可爱</title>
		<link>http://bigasp.com/archives/476</link>
		<comments>http://bigasp.com/archives/476#comments</comments>
		<pubDate>Sun, 22 May 2011 01:37:30 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[02 My Soul Perigee]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://bigasp.com/archives/476</guid>
		<description><![CDATA[昨天打完篮球回来，mm居然用ipad给我画了一幅画当作5月20号的礼物，哈哈。。小可爱啊小可爱，你能不这么可爱么？ 不过为什么说画的是我？这到底哪里像我了？]]></description>
		<wfw:commentRss>http://bigasp.com/archives/476/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPad入手！</title>
		<link>http://bigasp.com/archives/472</link>
		<comments>http://bigasp.com/archives/472#comments</comments>
		<pubDate>Wed, 18 May 2011 05:38:42 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://bigasp.com/archives/472</guid>
		<description><![CDATA[感谢MM，帮我买了一个iPad2，了却了我一大心愿，开心(^_^) 玩了一天，感觉确实不错，屏幕很大，做很多事情都很舒服，比如写博客，发右键，看电子书。 先测试一下发博客，WordPress的应用在iPad上用起来感觉还挺舒服的，自带的输入法使用起来也很不错，整句输入貌似准确率还可以啊。不过遗憾的是暂时还没有破解，神马东西都要钱。。(T_T)]]></description>
		<wfw:commentRss>http://bigasp.com/archives/472/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>樱花节去看樱花</title>
		<link>http://bigasp.com/archives/470</link>
		<comments>http://bigasp.com/archives/470#comments</comments>
		<pubDate>Sun, 27 Mar 2011 16:10:11 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=470</guid>
		<description><![CDATA[快四月份了，传说中的樱花终于盛开了，于是和MM一起跑到玉渊潭，准备来一场浪漫的樱花之旅。结果。。。 这是我幻想中的樱花节： 河河路花花路路路花花路河河 河河路花花路路路花花路河河 河河路花花路人人花花路河河 河河路花花路路路花花人河河 河河路花花路路路花花路河河 河河人花花路路路花花路河河 河河路花花路路路花花路河河 河河路花花路路路花花人河河 河河路花花路路人花花路河河 河河路花花路路人花花路河河 结果现实中的樱花节是这样的： 土土土土土土土土人土土土土 人土树土土树树土土土土人土 土人树土土土土土土树土土土 土土土土土树树人人土人土土 土土树树土人土人人人人人土 人土土土土土人树树人树人土 土土土土树土人人人花人人土 土人树土土土土人人树人人土 土土人土土人土人人人人土土 土土土树土土树土树土树土土 土土人土土土土土土土土土土 =。=&#124;&#124;&#124; 真是坑爹啊！不过，凑近了看，看是有好看的景色的。。嗯。。凑近了看。。近了看。。了看。。看。。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/470/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[WordPress Plugin] UBB Master——管理你自己的UBB代码</title>
		<link>http://bigasp.com/archives/466</link>
		<comments>http://bigasp.com/archives/466#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:45:51 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[ubb]]></category>
		<category><![CDATA[ubb-master]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=466</guid>
		<description><![CDATA[前几天想在wordpress里面插入一小段ubb来生成一些链接，结果发现居然没有，于是自己写了一个很弱的小插件来管理自己的ubb代码。语言暂时只有英文，不过内容是中文也是可以用的。 Wordpress的用户信息真的不是很友好啊，找了半天也没有找到我自己的项目列表，寒。 现在代码总算是提交了，不过也不知道什么时候才能生效，姑且先这么放着，看看明天结果如何。 ============= 我是欢乐的分隔线 ============= 插件名称：ubb-master 插件地址：http://wordpress.org/extend/plugins/ubb-master/ 插件用法： 一段典型的ubb代码，一般如下： &#91;search&#93;put your keyword here&#8230;&#91;/search&#93; 然后我们就可以这样替换这段ubb代码了： !{content}: 在[ubb]和[/ubb]标签之间的内容。 !{encoded_content}: 经过urlencode之后的!{content} !{attr:attribute_name}: [ubb]标签中名为attribute_name的属性 !{encoded_attr:attribute_name}: 经过urlencode之后的!{attr:attribute_name} 比如： 如果我们将search的ubb格式定为如下这段代码： &#60;a target=”blank” href=”http://www.google.com/search?ie=UTF-8&#38;q=!{encoded_content}”&#62;!{content}&#60;/a&#62; 那么上面这段ubb在输出中将会被转变为如下的内容： &#60;a target=”blank” href=”http://www.google.com/search?ie=UTF-8&#38;q=put+your+keyword+here%26%238230%3B”&#62;put your keyword here…&#60;/a&#62; 这样，我们就可以自己定义自己的ubb代码，而不用四处找适合自己的wordpress插件了。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/466/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>又要上班了</title>
		<link>http://bigasp.com/archives/463</link>
		<comments>http://bigasp.com/archives/463#comments</comments>
		<pubDate>Fri, 11 Feb 2011 16:29:04 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=463</guid>
		<description><![CDATA[春节还真是快，一下子就又结束了，回到家，本来打算看看《Windows核心编程》给自己好好充充电，结果也没能如愿，摆弄了下博客，就又要回去上班了，囧啊。 算上原来在深圳的半年，跟着这个项目已经有一年的时间了，期间经历了很多，这里真的要感谢很多人对我的帮助，让我这个Windows小白也能在这个项目上发挥自己的作用。马上又要开始上班了，但愿新年我能表现的更好。 兔年要做机灵的小兔子，不能做成了一个2！]]></description>
		<wfw:commentRss>http://bigasp.com/archives/463/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>推荐几个小游戏</title>
		<link>http://bigasp.com/archives/460</link>
		<comments>http://bigasp.com/archives/460#comments</comments>
		<pubDate>Mon, 07 Feb 2011 14:42:07 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[05 G.A.M.E]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[minigame]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=460</guid>
		<description><![CDATA[回了趟老家，除了陪陪爷爷奶奶之外，生活实在是空虚，于是下了点小游戏，发现还是有很多不错的小游戏的。在这里推荐一下~ 蜡笔物理学（Crayon Physics Deluxe） 大名鼎鼎的蜡笔物理学，经典中的经典，以下是驴子上的介绍： 这个游戏跟《疯狂机器》差不多，不过是2D卡通风格的，极具趣味，而且英文也简单易懂，只要你学过英语肯定会玩啦！ 话说，一只被牛顿灵魂附体的苹果从树上掉落下来，缓缓滚动，踏上了自己的人生路。我们的游戏也由此开始。。。 游戏操作也相当简单，遵循严格的物理定律，让小球碰到黄色星星：通过你用一支“蜡笔”绘制各种形状的方块，石头，线条等来让这个苹果碰到小星星就成功了。 大家可以发挥自己的想象力。更换蜡笔颜色(鼠标滚轮)，橡皮擦(右键)，施展你的才华，丰富的机关搭配可以有意想不到的效果，到后面还有各种特殊道具等候你哦！游戏会在你过关的过程中不断教你使用各种道具。 苹果要克服重重困难，誓要集齐世界上所有的星星。游戏分为8个大陆，超过70个关卡，难度由浅入深。过程中要留意作者给的提示 还支持关卡设计。工具左上是蜡笔，移动，和绳索，下方一次是图钉，小球，星星，高级工具：轴，方向标记和导弹。 蜡笔是基本绘画工具，移动工具可以使图案做360旋转，绳索链接图钉会有吊链，弹簧床的效果。图钉还可以固定住用蜡笔画的图形使之成为成为背景，方向标记到一个图钉上，会让图钉所在位置的图形向标记所指的方向旋转。轴和导弹都是游戏中可以使用的工具。后者特别有趣。设计完毕后，按下右下角的PLAY就可以玩了。 小怪兽求包养（They Need To Be Fed） 一个很另类的游戏，不知道谁翻译成了小怪兽求包养。主人公是一只具有重生能力的小强，唯一的目的就是翻山越岭，披荆斩棘，最后送去给一个奇丑无比的怪物吃掉。（做为一名食物，你到底有多么勤劳啊） 游戏操作很简单，空格是跳，方向键控制左右，ESC键退出游戏。游戏中一些比较难比较长的关卡中间都有存档点，一旦碰上了各种机关挂了，主人公会马上从存档点复活。但是游戏有一个非常恶心的地方，那就是，一旦在游戏中间的关卡退出，比如2-5关，那么整个2大关都要重新来。 另外，钻石可以重复吃，所以如果漏吃了，找个简单的关卡补吃一下就好了。 美味星球I和II（Tasty Planet I &#38; II） 某个神奇的实验室制造了一种厕所清洁剂，通过细菌吞食脏东西来达到清洁的目的，结果，这货变身了！他开始吃所有比他小的东西，然后越吃越大，越吃越大。就这样，游戏开始了。 一贯的小游戏，操作很简单，移动鼠标控制主人公的移动就可以了。游戏中每过一个大关都会有一个小漫画来描述当时的情形，非常搞笑。 P.S: 某些关卡比较变态，可能要玩很多次，掌握了规律之后才容易过关，另外，请尽量用鼠标玩，我用笔记本的触摸板通的关，真是玩的我痛不欲生。 谁在飞？！（Who&#8217;s That Flying?!） 作为一个横版打飞机类型的小游戏，这个游戏真是相当搞笑，主人公就是一个奥特曼，专打小怪兽，与以往打飞机类型游戏不同的是，因为主角是奥特曼，所以你是永远打不死的，但是如果你漏了的怪物数量超过了一个固定值，城市就被毁灭了，你就失败了。 小游戏难免的有bug，这款游戏里面就有一个令我崩溃掀桌砸机器的bug，那就是，游戏中提示按空格，但是实际上是需要按回车的，而在boss战中，不按这个，就根本无法完成任务。这个设定真的是，弄了我好久，空格键都砸穿了，还是没有用。最后还是我老弟发现了，才能继续玩下去，这个游戏也因此得名：WTF！ 虽然这样，游戏本身貌似还是不错的，画面不错，简单，容易玩，但是也没有那么容易过关，算是不错的小游戏了。 无聊的时光就靠这几个游戏打发了，本来想看下书，但是在那种环境下，看书基本是不可能的。所以小游戏真是打发时间的首选啊~哈哈~玩了很多个小游戏，这四个算是里面最好的了，推荐给大家，希望大家也喜欢，闲暇无聊的时候，也可以玩一玩，解解闷~]]></description>
		<wfw:commentRss>http://bigasp.com/archives/460/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Breakpad 完全解析（二） —— Windows前台实现篇</title>
		<link>http://bigasp.com/archives/458</link>
		<comments>http://bigasp.com/archives/458#comments</comments>
		<pubDate>Mon, 07 Feb 2011 02:16:24 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[03 Binary Life]]></category>
		<category><![CDATA[breakpad]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=458</guid>
		<description><![CDATA[原创文章，转载请标明出处：Soul Apogee (http://bigasp.com)，谢谢。 好，看完了如何使用breakpad，我们现在看看breakpad在Windows下到底是如何实现的呢？ 代码结构 在我们来看breakpad是如何实现其强大的功能之前，我们先来看一下他的代码结构吧。 Google breakpad的源代码都在src的目录下，他分为如下几个文件夹： client：这下面包含了前台应用程序中捕捉dump的部分代码，里面按照平台分成各个子文件夹 common：前台后台都会用到的部分基础代码，字符串转换，内存读写，md5神马的 google_breakpad：breakpad中公共的头文件 processor：用于在后台处理崩溃的核心代码 testing：测试工程 third_party：第三方库 tools：一些小工具，用于处理dump文件和符号表 我们先来看Windows下前台实现的部分，也就是client文件夹下的代码。 breakpad的崩溃捕获机制 在Windows下捕获崩溃，大家很容易会想到那个捕获结构化异常的Api：SetUnhandledExceptionFilter。 breakpad中也使用了这个Api来实现的崩溃捕获，另外，breakpad还捕获了另外两种C++运行库提供的崩溃，一种是使用_set_purecall_handler捕获纯虚函数调用产生的崩溃，还有一种是使用_set_invalid_parameter_handler捕获错误的参数调用产生的崩溃。 &#160;&#160;&#160;&#160;if (handler_types &#038; HANDLER_EXCEPTION) &#160;&#160;&#160;&#160;&#160;&#160;previous_filter_ = SetUnhandledExceptionFilter(HandleException); #if _MSC_VER >= 1400&#160;&#160;// MSVC 2005/8 &#160;&#160;&#160;&#160;if (handler_types &#038; HANDLER_INVALID_PARAMETER) &#160;&#160;&#160;&#160;&#160;&#160;previous_iph_ = _set_invalid_parameter_handler(HandleInvalidParameter); #endif&#160;&#160;// _MSC_VER >= 1400 &#160;&#160;&#160;&#160;if (handler_types &#038; HANDLER_PURECALL) &#160;&#160;&#160;&#160;&#160;&#160;previous_pch_ = _set_purecall_handler(HandlePureVirtualCall); 另外由于C++运行库提供的崩溃回调中，并不会提供当前的线程现场和崩溃信息，所以breakpad会自己生成好这些信息，然后请求生成dump。 这里值得一说的是，在非异常崩溃处理中，breakpad获取线程现场使用的函数是RtlCaptureContext而不是GetThreadContext。 RtlCaptureContext只能捕获当前线程的现场，而GetThreadContext可以捕获任意线程的现场，只要有这个线程的句柄即可。 但是GetThreadContext有两个不好的地方：不能获取当前线程的现场；获取现场前必须先用SuspendThread暂停目标线程。 而RtlCaptureContext虽然只能获取当前线程的现场，但是调用他时可以不用暂停线程的运行。 [...]]]></description>
		<wfw:commentRss>http://bigasp.com/archives/458/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>终于回家了</title>
		<link>http://bigasp.com/archives/456</link>
		<comments>http://bigasp.com/archives/456#comments</comments>
		<pubDate>Mon, 31 Jan 2011 04:24:45 +0000</pubDate>
		<dc:creator>Asp J</dc:creator>
				<category><![CDATA[01 My Soul Apogee]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://bigasp.com/?p=456</guid>
		<description><![CDATA[过年了，经过了令人崩溃的春运，终于回到了家。 老妈又老了一点，给她的笔记本还是没有装着Ubuntu，不过她已经受不了Linux了，命令行这种东西对她来说还是太难接受了。 不过正好，我就用上了久违了Linux。装上个Chrome，架起GAE，然后开始看各种小网站，哈哈。 湖南果然很冷，而且关键是没有暖气，不过幸运的是遍地都是火炉，不然真的是要被冻成小冰块，哦不，是大冰坨。 再过两天就要回老家了，之间有5天左右应该是与网络隔绝了，初5重新回来，哈哈。到时候，在和朋友们一起搞起~~ 话说，最近有神马魔兽的任务关好玩么？RPG神马的最给力了。]]></description>
		<wfw:commentRss>http://bigasp.com/archives/456/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src="http://bigasp.com/wp-content/plugins/mystat/mystat.php?act=time_load&id=219272&rnd=1484301690" /></channel>
</rss>

