SamXu's blog

A blog for programmers like me.

I Am Back

wuhahaha, i am back

Swift学习

前言

在这里我认为有必要提一下Bret VictorInventing on Principle,Swift编程环境的大部分概念都源自于Brec这个演讲。

接下来进入正题。

Swift是什么?

Swift是苹果于WWDC 2014发布的编程语言,这里引用The Swift Programming Language的原话:

Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility.

Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible and more fun.

Swift’s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to imagine how software development works.

Swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language.

简单的说:

  1. Swift用来写iOS和OS X程序。(估计也不会支持其它屌丝系统)
  2. Swift吸取了C和Objective-C的优点,且更加强大易用。
  3. Swift可以使用现有的Cocoa和Cocoa Touch框架。
  4. Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。

Swift语言概览

JNI实战

引子

对于刚入门的Android开发者来说,JNI是较难掌握的。JNI有一层神秘面纱,让人敬而远之。需要同时掌握C/C++语言与Android应用开发技术也提高了进入门槛。 让我们揭开面纱,由浅入深地学习JNI技术。

JNI是什么

JNI是Java Native Interface的缩写,直译成中文就是Java本地接口。JNI并不是Android特有的技术。在Android之前就在Java中得到广泛应用。Java能做到平台无关是因为运行在虚拟机上,而不同虚拟机在各自平台的实现,大多采用C/C++语言。通过JNI技术,Java代码可以调用C/C++的函数,反过来,C/C++也可以调用Java层的函数。JNI是沟通Java世界与Native世界的桥梁。

2013年度总结

1.工作变动

  • 从原本舒适的职位辞职。主要是缺乏挑战,公司业务也一蹶不振,觉得自己已经中年,不能再荒废了。
  • 渴望成功。再不寻求改变,这辈子会遗憾吧。
  • tx这边的确给了学习和成长的空间,通往成功的每一步都比较透明(GR, 职级晋升等流程),企业文化也较好。
  • 相比过去,精力不如以前旺盛,更加懂得需要珍惜时间,提高效率。养成总结的习惯。建立知识库。

2.学习

  • 渲染研究 未完成
  • cocos2d 基本了解,缺乏实战
  • 设计模式基本常用
  • 算法学些未完成
  • 养成了记录的习惯,evernote,dayone等工具的使用
  • 读书的任务未完成
  • 开放课程学习未完成

Understanding Dynamic_cast in C++

在面向对象程序设计中,有时我们需要在运行时查询一个对象是否能作为某种多态类型使用。与Java的instanceof,以及C#的as、is运算符类似,C++提供了dynamic_cast函数用于动态转型。相比C风格的强制类型转换和C++ reinterpret_castdynamic_cast提供了类型安全检查,是一种基于能力查询(Capability Query)的转换,所以在多态类型间进行转换更提倡采用dynamic_cast。本文主要介绍dynamic_cast的意义,用法和注意事项。

轻松编写 C++ 单元测试

作为一个TDD的脑残粉,凡事都想测试先行。现在回归C++开发,顿时觉得各种不方便。特别是手头没有好用的单元测试框架,开发效率简直无法忍受,写好的代码重构起来也畏手畏脚。

敏捷开发过程剖析及工具推荐

敏捷开发,要求在开发过程中不断增强,从而提高软件质量,以达到提高商业收入的目的。它是一个迭代的过程,一个不断提高企业投资回报率和服务质量的过程。值得注意的是,成功的敏捷开发,单纯依附于活跃的开发过程和理解敏捷所带来的效益并对此有浓厚兴趣的企业用户。

本文将介绍敏捷开发的五大过程及这些过程中所要用到的工具。

Texture Compression

Texture compression support

Texture compression can significantly increase the performance of your OpenGL application by reducing memory requirements and making more efficient use of memory bandwidth.