Category Archives: 编程技术

精通 C++ 是一种怎样的体验?

没什么用,精通C++不代表能写出好程序,就像知道回字有四种写法照样无法写出好文章来。不要把精力浪费太多具体某语言上,不管你搞网络,还是搞数据库,搞数字信号处理还是搞人工智能,或者和李开复一样搞语音识别,你会发现,功夫都在语言之外。 花太多时间学C++一点用都没有,不如打牢基础然后具体去学习各种知识,或者直接进行一些具体实践性的开发。所以我看简历,只会注意他具体做了什么,解决哪些问题,取得何种成绩。精通或者熟悉C++基本都是当垃圾信息过滤掉的,如果你简历上最耀眼的只是熟悉某语言,那和垃圾简历没区别。 所以,不要雇佣号称精通C++的人就是这个理由。 其实最精通中文的的人是各种语言学家,大学里专门研究中文的人,哪个字的出处,哪个用词正确与否,那个生僻字怎么念都了然于胸。so what ?能代表他们就能出口成章,提笔成文么? 就像《三体》写得好,是因为大刘在科学在剧情构思上的知识牛逼,而不是大刘会咬文嚼字。Kaiser 在知乎上谈笑风声,因为他历史知识丰富,《史记》《汉书》《三国志》信手拈来,外加观点独到,幽默风趣,从来不是因为他知道回字有四种写法,或者八种写法。 我们说 Fabrice牛逼,因为他对 数学,信号处理,计算机体系等三个方面有着深刻的认识,从而他能做出 ffmpeg, qemu, tinycc 这样的项目来,从而他算 pi可以算到世界第一快,所以大家觉得很牛逼,这并不是因为听说他 C++有多牛。 所以看到简历上如果没什么值得称道的东西,只有一个 “精通C++”,在用人公司眼里就和一个笑话差不多。 补充, @欧阳婕 网友提到的陆游诗, 《示子遹》 ——陆游   我初学诗日,但欲工藻绘;   中年始少悟,渐若窥宏大。   怪奇亦间出,如石漱湍濑。   数仞李杜墙,常恨欠领会。   元白才倚门,温李真自郐。   正令笔扛鼎,亦未造三昧。   诗为六艺一,岂用资狡狯?   汝果欲学诗,工夫在诗外。 注意第一句,“我刚学诗,只想精通辞藻” 就是这个所谓 “精通C++” 的状态

Loading

Posted in 编程技术 | Tagged | 3 Comments

如何实现移动设备的通用手势识别?

移动设备多用手势进行输入,用户通过手指在屏幕上画出一个特定符号,计算机识别出来后给予响应的反应,要比让用户点击繁琐的按钮为直接和有趣,而如果为每种手势编写一段识别代码的话是件得不偿失的事情。如何设计一种通用的手势识别算法来完成上面的事情呢? 我们可以模仿笔记识别方法,实现一个简单的笔画识别模块,流程如下:   第一步:手势归一化 1. 手指按下时开始记录轨迹点,每划过一个新的点就记录到手势描述数组guesture中,直到手指离开屏幕。 2. 将gesture数组里每个点的x,y坐标最大值与最小值求出中上下左右的边缘,求出该手势路径点的覆盖面积。 3. 手势坐标归一化:以手势中心点为原点,将gesture里顶点归一化到-1<=x<=1, -1<=y<=1空间中。 4. 数组长度归一化:将手势路径按照长度均匀划分成32段,用共32个新顶点替换guestue里的老顶点。   第二步:手势相似度 1. 手势点乘:g1 * g2 = g1.x1*g2.x1 + g1.y1*g2.y1 + … + g1.x32*g2.x32 + g1.y32*g2.y32 2. 手势相似:相似度(g1, g2)=g1*g2/sqrt(g1*g1 + g2*g2)   由此我们可以根据两个手势的相似度算成一个分数score。用户输入了一个手势g,我们回合手势样本中的所有样本g1-gn打一次相似度分数,然后求出相似度最大的那个样本gm并且该分数大于某个特定阀值(比如0.8),即可以判断用户输入g相似于手势样本 gm !

Loading

Posted in 人工智能, 编程技术 | Tagged | 4 Comments

快速可靠协议-KCP

KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,并以 callback的方式提供给 KCP。连时钟都需要外部传递进来,内部不会有任何一次系统调用。 整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到用户自己的协议栈中。也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的 ARQ可靠协议实现,那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。 URL:https://github.com/skywind3000/kcp

Loading

Posted in 编程技术, 网络编程 | Tagged , | 21 Comments

Windows字体为什么那么难看?

1)很多字库比如宋体,12号以下都是点阵字体。 2)GDI太老了,只有5级灰度,而且AA是横向的,Y轴方向没有AA。 3)雅黑又不能通用,且小字号时高低不平。   改进: 1)字体SuperSample。 2)勾边。

Loading

Posted in 图形编程, 编程技术 | 1 Comment

【原创】快速除以255的方法

经过若干次试验修改,研究出下面这个快速/255的宏,可以在 X属于[0,65536]的范围内误差为零: #define div_255_fast(x) (((x) + (((x) + 257) >> 8)) >> 8) 传统来说,人们习惯于将 /255改为 >> 8,但是这样误差挺大的,比如先乘以255再除以255,连续做十次,如果用>>8来代替除法,那么十次之后,误差为10. 另外一种常见的近似法是((x) + 255) >> 8,这种累积误差也挺厉害的。 因此>>8代替/255结果是比较粗糙的。而这个宏的开销比起>>8来说成本大12%。 经过测试65536000次计算中,使用/255的时间是325ms, 使用div_255_fast的时间是70ms,使用>>8的时间是62ms,div_255_fast的时间代价属于可以接受的范围。 下面是测试程序(点击more展开):

Loading

Posted in 编程技术 | Leave a comment

[转载] Why I Love Python – Thinking in C++ 作者用Python后的想法

  他横向对比了: Perl, C++, Java, Python,然后给出了10大使用Python的理由,比较经典。 下载地址:http://www.skywind.me/mw/images/c/c2/Why_I_Love_Python.rar

Loading

Posted in 编程技术 | Tagged | 1 Comment

[讲义] 游戏客户端十二小时入门

这是我2005-2007年在公司培训时候的讲义,当时现场效果相当热烈: 可以到下面地址下载:

Loading

Posted in 图形编程, 大浪淘沙, 游戏开发, 编程技术 | Tagged | 1 Comment

内存拷贝优化(1)-小内存拷贝优化

相信大家代码里有很多地方用到memcpy这个函数,相信这个函数的占用是不小的,有时优化了memcpy,能使整个项目的运行效率提升。通过适当的编码技巧,让我们的内存拷贝速度超过memcpy两倍,是可以实现的。

Loading

Posted in 编程技术 | Tagged | 12 Comments