<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dev in Nightmare]]></title><description><![CDATA[程序设计+图形图像+游戏开发]]></description><link>https://blog.youkuaiyun.com/Nightmare</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Nightmare]]></copyright><item><title><![CDATA[C++并不支持Unicode，即使是utf8]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/39780931</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/39780931</guid><author>Nightmare</author><pubDate>Sat, 04 Oct 2014 17:41:36 +0800</pubDate><description><![CDATA[时至今日，字符串使用unicode已经是不需要理由的常识，但对一些有着悠久历史的编程语言来说，这仍然是个头痛的问题。如果抛开第三方库的支持，C++其实并不能实际有效地支持unicode，即使是utf8。（注：本文讨论的是字符串在内存中的编码方案，而不是文件或网络数据流。）]]></description><category></category></item><item><title><![CDATA[OpenGL驱动质量的事实现状（精简翻译版）]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/25835699</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/25835699</guid><author>Nightmare</author><pubDate>Wed, 14 May 2014 22:10:21 +0800</pubDate><description><![CDATA[原文：http://richg42.blogspot.com/2014/05/the-truth-on-opengl-driver-quality.html

一、厂商A：
为大多数开发者所使用，功能最全，测试得最好，几乎是事实上的标准驱动。其驱动性能很高，而且其设计偏向于实际中管用，而不是GL标准的纯粹性。大多数你所能听到的GL的好话，比如可以和D3D12/Mantle抗衡，源自使用这家驱]]></description><category></category></item><item><title><![CDATA[翻新并行程序设计的认知整理版（state of the art parallel）]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/25454481</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/25454481</guid><author>Nightmare</author><pubDate>Sat, 10 May 2014 08:30:48 +0800</pubDate><description><![CDATA[近几年，业内对并行和并发积累了丰富的经验，有了较深刻的理解。但之前积累的大量教材，在当今的软硬件体系下，反而都成了负面教材。所以，有必要加强宣传，翻新大家的认知。

首先，天地倒悬，结论先行：当你需要并行时，优先考虑不需要线程间共享数据的设计，其次考虑共享Immutable的数据，最糟情况是共享Mutable数据。这个最糟选择，意味着最差的性能，最复杂啰嗦的代码逻辑，最容易出现难于重现的bug]]></description><category></category></item><item><title><![CDATA[内核模式驱动不推荐使用C++的缘由]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/17094549</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/17094549</guid><author>Nightmare</author><pubDate>Tue, 03 Dec 2013 13:36:40 +0800</pubDate><description><![CDATA[本文所讲内容主要源自Windows DDK文档。

一、内存页面交换
和用户模式程序不同，内存页面交换对内核模式的代码不是透明的，而是需要一定程度的主动管理，要保证在代码执行过程中不会需要载入新的页面。编译器有相关的扩展#pragma指令来帮助C代码显式控制生成的二进制代码布局，以便相关的代码被放在一起，被调用时只需载入最少的页面。

而对C++而言，还存在一些编译器自动生成的代码块和数]]></description><category></category></item><item><title><![CDATA[C++/C#/Java等非web语言交叉编译到JavaScript的实用现状]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12838101</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12838101</guid><author>Nightmare</author><pubDate>Thu, 17 Oct 2013 15:38:14 +0800</pubDate><description><![CDATA[自从两年前见识了浏览器里用JavaScript运行Linux后，看看如今JavaScript交叉编译的进展。看来我也要考虑一下这东西的实用性了。
以下为翻译转述。


常见交叉编译器：
C/C++: Emscripten, Mandreel
Java: Google Web Toolkit (GWT)
C#: JSIL, Script#
Python: pyjs
Lua: lua]]></description><category></category></item><item><title><![CDATA[程序员才能看懂的幽默]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12443933</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12443933</guid><author>Nightmare</author><pubDate>Tue, 08 Oct 2013 17:26:08 +0800</pubDate><description><![CDATA[这孩子有成为程序员的天赋：



吐槽JavaOne大会]]></description><category></category></item><item><title><![CDATA[常见开源协议大白话说明]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12405109</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12405109</guid><author>Nightmare</author><pubDate>Mon, 07 Oct 2013 22:07:22 +0800</pubDate><description><![CDATA[GPL：只要你用了任何该协议的库、甚至是一段代码，那么你的整个程序，不管以何种方式链接，都必须全部使用GPL协议、并遵循该协议开源。商业软件公司一般禁用GPL代码，但可以使用GPL的可执行文件和应用程序。

AGPL：即Affero GPL，是GPL的更严格版本。只要你用了任何该协议的库、甚至是一段代码，那么运行时和它相关的所有软件、包括通过网络联系的所有软件，必须全部遵循该协议开源。据律师说]]></description><category></category></item><item><title><![CDATA[GC与显式内存管理]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12322601</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12322601</guid><author>Nightmare</author><pubDate>Sat, 05 Oct 2013 23:46:32 +0800</pubDate><description><![CDATA[C++复兴的话题至今已被鼓吹两年有余，Herb Sutter和Bjarne Stroustrup等大牛们也为C++带来了大步伐的革新。然而，从这两年的效果而言，C++的复兴并没有发生。一方面随着世界经济的动荡，IT行业也出现了一定程度的衰退；另一方面这也是个新兴语言如雨后春笋的时代，尤其是web平台上，CoffeeScript、Dart、TypeScript等，新人阶前花更红。抛开非技术原因不谈，]]></description><category></category></item><item><title><![CDATA[k-thread 与 n-thread]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12111883</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12111883</guid><author>Nightmare</author><pubDate>Fri, 27 Sep 2013 22:06:41 +0800</pubDate><description><![CDATA[一段程序，如果最多只能利用有限常数个数的线程，那么它为k-thread的。比如，如果设计一个线程加载资源、一个线程计算、一个线程显示，那么最多能利用3个线程，在一个8核处理器上至少5个核是没有利用的。
而如果一段程序能利用任意多个线程，则被称为n-thread的。比如，在单核机器上是单线程跑，在n核机器上是n线程跑。当然这么说不准确，现实中实际利用线程数经常会大于核数，因为有些线程会因锁、IO等]]></description><category></category></item><item><title><![CDATA[并行（parallel）和并发（concurrency）]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/12111851</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/12111851</guid><author>Nightmare</author><pubDate>Fri, 27 Sep 2013 21:56:46 +0800</pubDate><description><![CDATA[并行（parallel）和并发（concurrency）是两个不同的概念。
并行是指多个任务同时都在执行，一般通过多线程、多进程或多台计算机实现。
并发是指至少两个任务都在推进，不一定是并行的，也可以是时间片切分的方式串行。

Windows 3.x时的协作式多任务（cooperative multitasking），是基于并发的多任务，一个进程交出执行权后下一个进程才能继续执行。Wind]]></description><category></category></item><item><title><![CDATA[说说游戏制作的build系统]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/9078239</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/9078239</guid><author>Nightmare</author><pubDate>Wed, 12 Jun 2013 09:25:05 +0800</pubDate><description><![CDATA[如今的大牌游戏都是动则10G、20G的，build系统已经成了一个创新的新领域。暴雪在GDC2013上就讲了他们自主研发的分布式build系统。

游戏的build不只要build程序代码，还包括各种美工资源的预处理，比如资源提取、校验、格式转换、组合等。而且这些资源普遍比较大，比如一个纹理图片的原始图片文件就可能有10M，模型的原始文件比如fbx或collada。Build系统会根据需要从原]]></description><category></category></item><item><title><![CDATA[应用结构：pattern的终结是anti-pattern]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/8549850</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/8549850</guid><author>Nightmare</author><pubDate>Mon, 28 Jan 2013 17:59:50 +0800</pubDate><description><![CDATA[以下讨论只针对应用开发，库开发的情况有所不同。


起初，人们大多在用C，人们讨论函数（functions）和编译单元（compilation unit）。
OO（面向对象、对象导向、物件导向）兴起后，人们开始认为，全局函数不好，全局变量不好，应该都封装到类（class）里。


随着程序越来越大，对象越来越多，人们发现，有很多对象几乎要被所有其它的类引用，而且这些对象被四处传递，不]]></description><category></category></item><item><title><![CDATA[更靠谱一点的编程语言排行榜]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/8464088</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/8464088</guid><author>Nightmare</author><pubDate>Fri, 04 Jan 2013 13:10:52 +0800</pubDate><description><![CDATA[TIOBE的编程语言排行榜如今很火，优快云月月拿它当头条。但相信很多人也对其排名和趋势变化感到惊奇。真有那么多人用Objective C?真有那么多人在用C?Javascript用户竟然会比Perl用户少？

其实，这不过是个数据分析方法问题。不同的方法是可以导致非常不同的结果的。要分析得尽可能正确，还是需要点统计专业知识的。比如这个分析的就更专业一点，其结果可以和indeed job tr]]></description><category></category></item><item><title><![CDATA[反斜线的历史]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7946729</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7946729</guid><author>Nightmare</author><pubDate>Wed, 05 Sep 2012 15:30:07 +0800</pubDate><description><![CDATA[Windows用户对\字符都不陌生，它是路径分隔符，同时也是C风格字符串的换码符。（正斜线和反斜线很容易搞混，交流时不妨称作撇和捺。）

该符号由Bob Bemer发明，最初用于在ALGOL语言中构造/\和\/符号，也就是逻辑与和或。此人亦是ASCII制定者之一、换码序列（ESCape）的发明者。

DOS 1.0并没有层级目录功能。2.0主要针对具有10M硬盘的IBM PC/XT开发，于]]></description><category></category></item><item><title><![CDATA[基于stackoverflow.com问题标签的对语言、平台流行度的统计]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7666239</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7666239</guid><author>Nightmare</author><pubDate>Fri, 15 Jun 2012 14:15:45 +0800</pubDate><description><![CDATA[注意：本结果仅供参考。局部统计结果不代表整体结果，任何脱离统计背景的解释都是不合理的。
统计时间：2012年6月15日
注1：ruby-on-rails的问题数高于c的问题数，故ruby理应排在c之前。但如此处理又对其他语言不公平，则都得考虑框架，但很多无法将语言和框架数量合理组合，故使用原始标签数量。
注2：中国用户上stackoverflow的不算多，故不反映国内情况。
注3：问题多不]]></description><category></category></item><item><title><![CDATA[微软平台生态圈已经改变]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7621669</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7621669</guid><author>Nightmare</author><pubDate>Thu, 31 May 2012 22:29:26 +0800</pubDate><description><![CDATA[二十年来微软主宰了PC，但如今形势已经发生转变，而且这种转变是从微软内部开始的。长话短说，Windows平台Server和Client发展方向明确分离，Server向着云服务、Web应用、数据中心靠拢，Client向手机、平板等消费型产品靠拢，PC沦为向后兼容的过渡品。对普通用户，这种转变不会很快带来影响，但对软件开发者，已经是眼皮底下的事。

    Windows 8和Visual Stu]]></description><category></category></item><item><title><![CDATA[简化字始见年代一览表]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7594492</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7594492</guid><author>Nightmare</author><pubDate>Wed, 23 May 2012 14:06:50 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[术语： Marshal （编列、列集）]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7328118</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7328118</guid><author>Nightmare</author><pubDate>Wed, 07 Mar 2012 11:40:40 +0800</pubDate><description><![CDATA[这个术语因.NET的Interop（不同技术间交互）而流行。取自部队等整编列队集结的本意，引申为对数据格式的重新编排转换，以便在不同标准的二进制接口间传递数据。
注意，这个和数据类型转换不同，数据类型一般并不改变，而只是数据的存储结构改变，从一个标准的结构转换成另一个标准的结构。比如.NET的Boolean是1字节，而Win32是4字节。
专业翻译词典上对此含义给出了两个译词：编列、列集。编列]]></description><category></category></item><item><title><![CDATA[CurrentCulture 与 CurrentUICulture]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7299698</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7299698</guid><author>Nightmare</author><pubDate>Mon, 27 Feb 2012 20:57:03 +0800</pubDate><description><![CDATA[这两个都是对应Windows系统的设置。
CurrentCulture和数字、时间日期等的格式化相关，和字符串比较、排序、大小写转换相关。属于软件国际化（Globalization）。
CurrentUICulture用于选择界面语言，和界面语言的翻译相关。属于软件本地化（Localization）。
两者经常值相同，但也可不同。比如，可以用英文版WIndows系统，CurrentUICul]]></description><category></category></item><item><title><![CDATA[Silverlight消散，WinRT登台]]></title><link>https://blog.youkuaiyun.com/Nightmare/article/details/7226678</link><guid>https://blog.youkuaiyun.com/Nightmare/article/details/7226678</guid><author>Nightmare</author><pubDate>Wed, 01 Feb 2012 20:43:42 +0800</pubDate><description><![CDATA[2011年，Silverlight刚开始有蓬勃发展的起色，不利的传言就开始大量流传。不安的Silverlight开发者们要求微软澄清，但得到的只是沉默。终于随着微软在BUILD上亮相Window 8以及新的API WinRT，开发者们意识到，Silverlight的故事结束了。尽管微软在年底如期发布了大幅改进的Silverlight 5，但大势已去，微软甚至都没怎么宣传。随后传闻Silverlig]]></description><category></category></item></channel></rss>