张志敏的技术专栏

iOS 开发中经常看到 CFBundleShortVersionString 和 CFBundleVersion 两个都可以用来标识应 用版本号的变量, 究竟应该用哪个呢? 下面就一探究竟。 CFBundleShortVersionString CFBundleShortVersionString (String - iOS, OS X) 表示 bundle 发布版本号, 标识应 用的一个发布迭代。 发布版本号是由三个用句点 . 分割的整数组成的字符串, 第一个数字是主版本 号,表示重要的功能或重大的更新, 第二个数字表示次要功能的更新,第三个数字表示维护更新, 具体规则也可以参考... 阅读全文

iOS 2014-07-22

什么是 Scss Scss 是 CSS 的扩展, 在保证兼容性的基础上, 允许使用变量、 嵌套、 混合、 导入等特性, 在编写大量的 CSS 文件时很有帮助。 特色 完全兼容 CSS3 在语法上扩展了变量、 嵌套以及混合等 操作颜色以及其它的有用的函数 高级特性, 比如针对类库的控制声明 格式良好并且可控制的输出 Firebug 集成 基本语法 Scss 是 CSS3 的扩展, 在 CSS3 的基础上, 添加了下面几个重要的特性: 变量 Scss 使用 $ 符号来定义变量, 支持的变量类型有 数字(可带单位)、 字符串 、颜色 以及 布尔值 等,... 阅读全文

1、不要浪费时间找最佳环境。 许多学生认为只要找到了最佳的学习环境,学习就会变得轻而易举,所以他们花了大量的时 间找寻和尝试不同的地方,寝室、咖啡馆、图书馆、草坪……大把的时间浪费于此。更糟的是, 你会觉得,除非你找到理想的学习地点,否则你根本无法学习。有没有什么好办法?找一个 相对安静的地方开始学习。一旦你投入到学习中去,你会觉得周围的环境还不错。 2、不要把准备工作当学习。 一些学生常常‌‌“准备好要学习‌‌”,却从没有真正开始。不要把清理桌子、整理电脑文件和‌‌“准 备好要学习‌‌”当成学习。即使在学习的地方,如果你只是泡在Facebook上,发状态说我正在 学习,也不是... 阅读全文

转载 2014-06-30

Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏、 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 “身临其境” 的体验。 Android 4.4 中提供了 IMMERSIVE 和 IMMERSIVE_STICKY 标记, 可以用这两个标记与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_FULLSCREEN 一起使用, 来实现沉 浸模式。 注意: 这些标 记在Xamarin.Android 中被映射为 Android.Views.SystemUiFlags... 阅读全文

从源代码编译最新版本的 mono 网上已经有很多从源代码安装 mono 的资料了, 所以就不再啰嗦了, 没有做过的可以参考这两篇文章: 在 Ubuntu Server 上安装配置 Mono 生产环境 CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4 推荐用 git 从源代码获取 mono 源代码的方式来编译安装, 以后更新也很方便。 我获取 mono 最新版 源代码编译安装之后, 版本信息如下图所示: 对于某些 linux 发行版, 可能还没有下列网站的 https 证书, 因此需要导入并同步一下几个网站的 https 证书, 否则无法继续后面... 阅读全文

.Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate 配置为: var cfg = new Configuration(); cfg.SetProperty(Environment.ConnectionString, "Data Source=(localdb)\\Projects;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServ... 阅读全文

结构 说明 Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一个代理以控制对这个对象的访问。 适用条件 远程代理: 为一个对象在不同的地址空间提供局部代表; 虚代理: 根据需要创建开销很大的对象; 保护代理: 控制对原始对象的访问; 智能指引: 取代了简单的指针, 并在访问对象时执行一些附加操作。 实现 public interface IImage { void DisplayImage(); } public c... 阅读全文

设计模式 2014-05-20

结构 说明 Use sharing to support large numbers of similar objects efficiently. 通过共享以便有效的支持大量小颗粒对象。 适用条件 一个程序使用了大量的对象; 完全由于使用大量的对象, 造成了很大的存储开销; 对象的大多数状态都可以变为外部状态; 如果删除对象的外部状态, 那么可以使用相对较少的共享对象取代很多组对象; 应用程序不依赖于对象标识, 由于享元对象可以被共享, 所以概念上明显有别的对象, 标识测试将返回真值; 实现 public interface ICoffeeOr... 阅读全文

设计模式 2014-05-14

结构 说明 Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. 为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 适用条件 为一个比较复杂的子系统提供一个简单的接口; 将客户程序与子系统的实现部分分离, 提高子系统的独立性和可移植性; 简化子系统间的依赖关系。 ... 阅读全文

设计模式 2014-05-11

结构 说明 Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality. 向某个对象动态地添加更多的功能。修饰模式是除类继承外另一种扩展功能的方法。 适用条件 在不影响其他对象的情况下, 以动态且透明的方式添加单个对象的功能; 处理那些可以撤销的功能; 不能采用生成子类的方法扩充... 阅读全文

设计模式 2014-05-07

结构 说明 Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. 把多个对象组成树状结构来表示局部与整体,这样用户可以一样的对待单个对象和对象的组合。 适用条件 四则运算、逻辑运算以及 SQL 语句等都可以用组合模式表示; 命令: 一个命令经常可以有若干个子命令表示; 事务: 最典型的事务时测试用... 阅读全文

设计模式 2014-05-02

结构 说明 Decouple an abstraction from its implementation allowing the two to vary independently. 将一个抽象与实现解耦,以便两者可以独立的变化。 适用条件 不希望在业务和业务的具体实现之间存在固定的绑定关系; 希望类的抽象和实现部分可以扩充, 进而实现不同的抽象接口和实现部分的组合; 复用实现部分。 实现 interface IDrawingApi { void DrawCircle(double x, double y, double radius); ... 阅读全文

设计模式 2014-04-29