九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

新的转变

2012总归是来了,这句话因为某种原因,听起来很悲壮。而这个时候,似乎也是该总结下2011的时候了,虽然过去的一年,我写的博客是越来越少了。 过去的一年对于我个人来说,应该算是工作以来最具有历史意义的一年吧,人生的轨迹在这里算是有了一个转折,或者说,有了一个比较突兀的变化。在年初的时候,我做了一个不那么艰难的决定,离开了那个曾经做出艰难决定的公司,加入了一家不到十人的初创企业,而这,决定了我将经历对于我个人来说最不平凡的一年,事实上,的确不平凡。 以前的工作对于我来说太容易,太没有挑战了,我需要一些更有难度的工作,这话由我说来似乎太过于自负或者自大,但是,这个话是前领导在年初的时候想要让我做出一些改变,给我的一个评价。背后的故事就不多说了,现在想想这个话说的的确有道理,假如我能够在每天晚上学习到半夜2~3点,因为兴趣去研究一些与工作不甚有关系的技术问题,写一堆乱七八糟的技术文章,而第二天半晕着去工作,但是工作却还总是不错的,甚至能够常常受到上级的认可,那这个工作对于我来说,的确有些过于容易了。 说这些没有啥自我膨胀的意思,虽然知道在中国当前环境下说这个话有些危险~~~~其实,说这些只是用于感叹今年我个人角色的一些转变,以及逐渐不那么容易的工作历程。

阅读全文....

移动平台现在可用的C++ 11特性

移动平台特指iOS和Android,并且Android使用的是NDK,因为开发的时候是在Win32平台下,所以还需要考虑VS的支持。

当前(2011-12-21)最新的版本:

Win32: Visual Studio 2010

Android NDK: GCC 4.4.3

iOS: Apple LLVM compiler 3.0(Clang)


本文所描述的C++ 11特性仅在上述三个平台,所写的版本号中有效,请先确认这点。

apache的WIKI上有个较为详细的列表。可以看到,现在能用的特性其实不怎么多:

  1. auto
  2. decltype
  3. extern template
  4. long long
  5. New function declaration syntax for deduced return types
  6. Right Angle Brackets
  7. R-Value References
  8. static_assert
  9. Built-in Type Traits

如下图:

上面是整体的描述,具体的各个编译器对C++ 11的支持情况见下面的链接:

Win32:
Visual Studio 2010支持情况:C++0x Core Language Features In VC10: The Table
Lambdas, auto, and static_assert: C++0x Features in VC10, Part 1
Rvalue References: C++0x Features in VC10, Part 2
decltype: C++0x Features in VC10, Part 3
Visual Studio 2011支持情况:C++11 Features in Visual C++ 11
Android NDK: GCC 4.4.3

Status of Experimental C++0x Support in GCC 4.4

C++0x/C++11 Support in GCC

iOS:

Apple LLVM compiler 3.0(Clang):C++ and C++'11 Support in Clang

The LLVM Compiler Infrastructure

 

使用方式:

1.Build Options选择Apple LLVM compiler 3.0

2."Apple LLVM compiler 3.0 - Language"中"C++ Language Dialect"选择“C++0x" (

3.”C++ Standard Library"选择libc++(LLVM C++ standard library with C++ '0X support)" (默认为"Compiler Default")

其他有意思的东西:

"libc++" C++ Standard Library

在线试用LLVM编译器

最新修改的原文所在地址


原创文章作者保留版权 转载请注明原作者 并给出链接

九天雁翎(JTianLing) -- www.jtianling.com

阅读全文....

三个乔布斯相关的视频

三个乔布斯相关的视频,“谨献给我们这个时代的疯子,那个真的改变这个世界的人” — Steve Jobs。

乔布斯在斯坦福大学的演讲视频

I'm convinced that the only thing that kept me going was that I loved what I did.

我坚信让我一往无前的唯一力量就是我热爱我所做的一切

 

You've got to find what you love, and that is as true for work as it is for your lovers.

所以,一定得知道自己喜欢什么,选择爱人时如此,选择工作时同样如此

 

Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work, and the only way to do great work is to love what you do.

工作将是生活中的一大部分,让自己真正满意的唯一办法,是做自己认为有意义的工作。做有意义的工作的唯一办法,是热爱自己的工作

 

If you haven't found it yet, keep looking, and don't settle.

你们如果还没有发现自己喜欢什么,那就不断地去寻找,不要祈求安逸

 

乔布斯45秒谈改变世界

在你成长的过程中,肯定一直会有人告诉你:世界原本就是这样,你的人生使命就是在这固有的世界中很好地生存,建立一个美满的家庭,多存一点钱,并尽量寻找生活的乐趣。其实这是非常狭隘的人生观,生活的舞台是非常广阔的。实际上,你生命中很多事物的缔造者甚至还没有你聪明和智慧,当你懂得了这么一个简单的道理之后,你会发现其实你也可以改变生活、影响世界,你可以创造属于你自己的东西,你的生命也将从此与众不同。 -- 来自kr

苹果Think Different电视广告

1997 年苹果的广告,由 Steve Jobs 亲自配音的版本。

Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. While some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.

这是送给那个「疯子」、那个「不称职」、那个「叛逆份子」、那个「麻烦制造者」,那个用不一样的角度看这个世界的人。  他不喜欢规矩,对现状没有任何尊敬。  你可以引述他、你可以反对他、把他视为大师或是把他视为小丑。但有一件事情你没办法做,那就是忽略他。因为他改变这个世界,他把人类向前推进。  或许有些人认为他是一个疯子,我们认为他是一个天才。因为那些疯狂到认为他可以改变这个世界的人,才是那些真正改变这个世界的人。

 

阅读全文....

总算差不多恢复了

博客的主题,插件基本恢复~~~因为这次有cPanel的帮助,效率高了很多,几个小时的时间,博客就恢复到丢失前的水平了,果然还是应该用这种强大的工具啊~~~用命令行折腾的其实也没有多么有趣,早就比不上以前自己用gcc和make的时代了,光是yum/apt-get install一下,也不见得有什么乐趣可言,还不如点鼠标........明天接着恢复一些内容~~~

写博客的孩纸真伤不起啊,把自己的业余时间全部都搭进去了......

阅读全文....

博客重建~~~

因为刚刚开始自己尝试建wp博客,买了VPS,并且用的月付费,结果因为上个月忘了付钱了,尽管我在发现博客停止的第二天就补上了钱,但是托管商已经直接把数据删了,所以完全无法恢复,这个太悲催了,最悲催的是,我前段时间在服务器面板上使用的备份功能被告知没有用,只能从服务器上的备份数据恢复,不能上传数据(我备份后下载回来的)恢复...........于是,重建博客吧.........

首先尝试用amazon ec2来搭建wordpress,上手还算比较容易,但是我发现amazon的RDS太贵了,折算到人民币要5K多一年,而且没有免费的一年试用,所以作罢。

然后不过这次不再使用VPS了,我发现我其实也不需要,以前想要VPS做一些服务器要做的事情,其实现在可以通过amazon ec2来完成了。让blog就是blog吧,这样买个虚拟空间也便宜,还能用cPanel....干什么都挺方便的,不要再自己折腾linux的配置了,呵呵,我发现我现在越来越懒于折腾了,难道是老了吗?曾经我认为人生在于折腾......

阅读全文....

把握趋势, 把握未来 -- 小评"只有偏执狂才能生存"

只有偏执狂才能生存(一下以”偏执”来替代)一书听起来就像是某个大牛的布道式自传, 要告诉你需要怎么偏执才能生存, 自己又是怎么通过偏执成功的, 其实, 真正讲的是与战略转折点到来时, 企业的应对之道. 就像书上封面上写的那样: “战略转折点来的时候, 如果你不想被摧毁, 就只能快速反应, 适应, 并且改变. “

阅读全文....

cocos2d-x开发游戏时,使用Texture packer来合并图片

Texture packer的确比Zwoptex更加强大,功能更多,跨平台,在使用cocos2d-x在win32下开发的时候,能够在win32下使用的优点就更加明显了。何况Zwoptex以前是完全免费的,在用户多了以后坑爹般的开始收费了,连个可用的免费版本都没有(只有自己保留的老版本可用),而Texture packer一直有可用的免费版本,虽然Pro版本贵的离谱(对于中国人来说,100多块钱的工具太贵了,但是对于美国人来说又很便宜)。另外,假如你是博客作者或者是框架开发者,可以向作者申请免费的license,我的确收到了。有意思的是,作者后来以做SEO为由,要求我添加以Sprite Sheet Maker为文字的链接,链接到他们网站,真让人感叹,天下没有免费的午餐啊~~~~

Texture packer的主界面如下:

1.Add Sprites

上图中的样子就是用Add sprite功能,添加了cocos2d的示例图片后的样子。texture packer能够自动的用较为优化的算法来排列图片,使得占用空间尽量的少,作为初级版本,没有一些包括裁剪在内的高级功能(在强行使用高级功能后,会有提示,也可以导出图片,但是会随机在某些图片上印上一些英文文字)

2.设置导出文件的位置

这个位置是一个绝对位置,此时可以保存一份texture packer的工程。这个工程会记录这个导出的位置。有一点用户体验非常好的地方是设置了plist的位置后,texture的为止texture packer会自动生成一个。

3.导出

点击publish按钮即可。将来在原始图片更改的时候,直接载入这个工程,然后也只需要再次点击public按钮即可,会同时生成plist和texture文件。相当易用。

Enable auto alias非常有用,可以将相同的图片自动合并,对于三维导出的序列帧和flash自动导出的序列帧动画,常常可以节省很多空间。

到目前为止,这已经很强大了。但是Texture packer的强大不仅如此,手工编辑再方便,也不如自动化来的快~~~~

Texture packer在安装后,在安装目录下(windows)会有一个叫texture packer的可运行文件,直接将刚才生成的tps文件作为参数传进去,就能自动的生成~~~再配合VS或者XCode的工程配置,完全可以做到生成程序的时候对texture的全自动化处理。(不过这个需要pro的license)

4.程序中的使用

先通过以下接口预加载

void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist)

然后通过以下接口使用:

CCSpriteFrame* CCSpriteFrameCache::spriteFrameByName(const char *pszName)

CCSprite* CCSpriteFrameCache::createSpriteWithFrameName(const char *pszName)

CCSpriteFrameCache本身是个单件。

阅读全文....

wordpress安装及配置

用一个周末总算在ubuntu下把www.jtianling.com博客搭建好了,这里分享一些不成熟的经验。

准备工作

安装wordpress前需要安装的软件如下:

1.apache2,这个不用说了,没有apache就没有http服务器啊。

apt-get install apache2

2.php5,wordpress是用php写的

apt-get install libapache2-mod-php5 php5

3.mysql,wordpress以mysql为标准的数据库

apt-get install mysql-server-5.0 mysql-common mysql-admin php5-mysql

4.额外的东西,比如phpmyadmin,用于方便管理mysql,比如unzip,用于解压zip包。

大部分情况下,以上软件的安装只需要用apt-get install就能简单的安装。

/etc/init.d/apache2 restart

来重启apache服务器,基本上以上服务就可用了。

apache mod加载

可以通过

ls /etc/apache2/mods-enabled

来查看已经加载的apache mod,

通过

ls /etc/apache2/mods-available/

来查看安装了但是没有加载的模块。

假如没有加载好的话,可以通过a2enmod 加载。比如加载php模块。

a2enmod php5

加载后,需要重新启动apache。

phpmyadmin与mysql的配置

需要注意一点,在mysql刚刚安装好的时候,密码为空,而phpmyadmin偏偏不允许空密码,于是矛盾就产生了,也就是你第一次时没法直接就用phpmyadmin管理mysql服务器。

解决办法:

在phpmyadmin的配置

/etc/phpmyadmin/config.inc.php

中找到并取消调AllowNoPassword=TRUE一行前面的注释。

登录后,再修改密码,为了安全,最好记得回来再次注释调这一行。

在phpmyadmin为wordpress建立一个数据库,可以任意取名,默认的wordpress以wordpress命名数据库,数据库中以wp_开头建立表格。

安装wordpress

安装wordpress再简单不过了,你可以直接apt-get install一个,然后通过ln链接/share/wordpress到/var/www目录即可。不过这个一般是英文版,而且版本较老。

这里我用http://cn.wordpress.org/这里的中文版本,最新版本的下载地址,可以先下载在本地,然后通过ssh或者ftp传到服务器,也可以通过wget直接在服务器端下载,这个自己选择。

ssh传文件:

参考:http://bingu.net/653/howto-use-ssh-upload-and-download-files/

apt-get install lrzsz

安装rz,sz命令。

使用SecureCRT工具,登录后,使用rz传文件到服务器,sz从服务器传文件到本地。(默认存在我的文档)

wget下载:

这个就更加简单了,

apt-get install wget

然后直接wget file_link,就能直接下载地址指定的文件到服务器。

ftp需要配置ftp服务器,这个先不谈了。不管用什么办法,把http://cn.wordpress.org/wordpress-3.2.1-zh_CN.zip这个文件弄到服务器后,用unzip命令解压一份,然后直接mv到/var/www下,假如你愿意将整个apache都作为wordpress 博客(即apache的主目录),那么就直接将所有内容都放到www目录下,不然的话,可以放到/var/www/blog下。

然后通过

chmod -R 777 /var/www/

修改权限(上面操作不够安全)

也可以尝试通过

chown -R www-data:www-data /var/www

来修改文件本身所属的组和用户(我没有实验该操作)

解压后,wordpress目录还没有wp-config.php配置文件,一种方法是直接用wp-config-sample.php修改成wp-config.php,见此文档

事实上在此时直接用浏览器访问wordpress所在的地址,就能有自动安装的配置页面引导安装,如下图:

这个非常简单,配置好mysql的数据库名,用户名,密码等信息,wordpress的用户名,密码即可。

然后,登录后即可见到wordpress的管理页面。

此时说明安装已经成功了,直接到你配置的地址去看看效果吧,wordpress默认给你建立了一个博客文章,一个页面。

配置及美化

wordpress的安装别提有多简单了,根本不费时间,但是实际上,为了让日志www.jtianling.com正常工作,用了我几乎整整一个周末,原因就在于wordpress虽然强大,但是强大在可配置性强,所以我用了很多时间找合适的主题,插件等来合理的搭配,并取得较好的效果。(目前我也实在不想再在blog的效果上再花太多时间了~~~其实我最喜欢的是可能吧的主题,但是好像没地儿找去...)

主题:

我很喜欢coolshell.cn,于是找到了酷壳的主题,主题的名字叫做inove

并且inove主题的主题选项中,附带Feed配置,页面上也有个较为符合中国人习惯的RSS按钮。

还附带Google analytics的代码输入地址,非常方便。

插件:

酷壳无私的介绍了其博客使用的插件,因为博客的类型类似,也为了节省时间,就尝试了几个他列出的插件:

其中Akismet,因为用户不够多,还没有用上 。

All in One SEO Pack 不知道用了有什么用,看不到明显的效果。

Google XML Sitemaps没有兴趣使用。

WP Super Cache,也没有感觉到用途。

SyntaxHighlighter Evolved,安装了,也还没有使用......

倒是发现了其他几个插件的好用之处:

Faster Image Insert - 批量图片插入插件,非常好用。

WP-PostRatings 下载地址。评分插件,我才不管IE浏览器是否能看呢,我的读者里面有用IE浏览器的吗?

插件开启使用后,需要进行一定的配置。

在single的页面,插入

<?php if(function_exists('the_ratings')) { the_ratings(); } ?>

<?php include('templates/comments.php'); ?>

之前,也就是放在评论之前。

在index的页面配置文件,插入到

<div id="pagenavi">

之前,也就是页面浏览之前。

这个也可以自己把握。

日志自动截断 - 自动截断日志文字的插件的中文版,使用此插件后,撰写日志时无需再加入more标签进行文字截断操作。采用UTF-8模式截取,中文无乱码。这个插件是为了达到coolshell那种首页只显示文章一部分内容而需要的,实际使用效果不错。

feeds:

参考:http://codex.wordpress.org/WordPress_Feeds

最后我用了

http://www.jtianling.com/feed=rss2

这个,然后用域名

http://feed.jtianling.com转向支持,作为永久的feed地址。

字体:

参考:http://www.qiyecao.org/wordpress/wordpress-fontstyle-setting.html

简单的说是,

font-family:宋体,微软雅黑,Arial,Verdana,arial,serif;

font-size自己进行合适的修改,一般来说,普通的12px改为14px,其他的酌情放大处理。原因在于主题是英文的,而英文一般用12px,中文用12px偏小,用14px较为合适。

备份

好不容易搞了这么多东西,不备份一下心里不踏实啊:
tar czvf www.tar /var/www

然后用sz传回到本地保存起来

最后的样子,也就是本博客的样子了~~~~

阅读全文....