通过 Yii 框架从数据库导出大批量数据

最近有客户想一次性把客户的客资数据导出备份,经过几年的使用,很多客户的客资量都接近百万,如果要一次性导出这么多量,就不能直接从数据库读取放到数组里面,一个是 php 默认会限制内存使用量,另外内存也不应该浪费在这个上面。

Yii 框架提供了 BatchQueryResult 对象,该对象实现了 Iterator 接口,这样从数据库获取数据不会受限于内存,影响系统的稳定了。

环境说明:PHP 7.2

Swift: 避免 C 样式的循环

作者:Thomas Hanning 原文链接

C样式的循环将会在 Swift 3 中被移除。一开始看到似乎有点奇怪,但是 Swift 提供了更好的循环结构。

C样式的循环

让我们先来看看C样式的循环:

let programmingLanguages = ["Swift","Objective-C","Java"]

for var i = 0; i < programmingLanguages.count; i++ {
    print("index: \(i), value: \(programmingLanguages[i])")
}

这段代码运行没问题,但是它既不好用也不够 “swifty”。实际上,它不太容易学习和记忆。

2016年全球与iOS开发者相关的会议

作者:Thomas Hanning 原文链接

作为一个iOS开发者你应该去参加一些开发者大会。这是个学习新技术和结识其他开发者一个很好的机会。此外在大会中沟通交流也能锻炼自己。下面是2016年iOS开发者相关的会议列表。

3月

  • 3月2日 - 4日:try! Swift,日本,东京
  • 3月11日 - 12日:RWDevCon 美国,亚历山大
  • 3月17日 - 18日:Mdevcon 荷兰,阿姆斯特丹
  • 3月25日 - 26日:CocoaConf 美国,芝加哥

如何在一个iOS项目中使用 Objective-C 和 Swift

作者:Thomas Hanning 原文链接

Objective-C 和 Swift 能很好的交互,所以在同一个项目中可以很容易的同时使用两者。

在 Swift 文件中使用 Objective-C 写的代码

  你可以在一个我们称它为 bridging-header 文件里面导入 Objective-C 文件。Xcode 会把这些(Objc 文件)转换成 Swift 可用,后面使用起来就感觉和 Swift 一样了。

  创建 bridging-header 文件很容易,新建 Objective-C 类的时候,如果你的项目里面还没有 bridging-header 文件,Xcode 会提示你来新建(译注:确认之后建立的文件名是:项目名-Bridging-Header.h)。当然你可以选择不创建而自己手动来建立,直接新建 Objective-C 头文件,取名:Bridging-Header.h(译注:你也可以另外取个),然后定位到 “Build Settings” 里面的 “Swift Compiler – Code generation” 设置项,把 “Objective-C Bridging Header” 设置成刚才的文件名。

Network Link Conditioner

作者:Thomas Hanning 原文链接

  在这篇文章里,我们将讨论通过使用 Network Link Conditioner 来模拟网络条件不好的情况。

糟糕的网络链接

  iOS应用的运行环境相对于桌面计算机软件的运行环境要艰难的多,你只有有限的内存和CPU资源,更糟的是网络链接也不稳定。我们不仅在家里会使用应用,在火车上也会,当我们在咖啡店里面使用的时候,会有其他很多的手机应用都依赖一个网络,所以提供良好的用户体验是至关重要的,即使是在糟糕的网络环境下。

在 Swift 中的父类里面使用 IBInspectable 属性

作者:Jameson Quave 原文链接

  一个非常有用的功能就是在代码里面添加 IBInspectable 属性的背景图片。在一个娱乐类的应用里面,我写了一个可设计的 Cell,代码如下:

@IBDesignable
class TrailerCollectionViewCell: MediaCollectionViewCell {
    @IBOutlet weak var lengthLabel: UILabel!
    @IBInspectable weak var bgImage: UIImage! {
        didSet {
            imgView.frame = self.bounds
            self.addSubview(imgView)
            imgView.image = bgImage
            imgView.contentMode  = UIViewContentMode.Center
            self.sendSubviewToBack(imgView)
        }
    }
}

Swift Magic: Public Getter, Private Setter

作者:Natasha The Robot 原文链接

  在我的这篇 Constructor Injection blog中,我写了一个结构体的例子,它有一个属性,属性可以从外部读取,但是写权限只能在内部,之前的代码看起来是这样的:

struct Counter {
    // `count` here has to be a var 
    // but I never want to set the `count` externally, 
    // so I made it private
    private var count: Int

    // so this is the only way to access the count externally
    func getCount() {
        return count
    }
}

在iOS应用内打开PDF文件

  作者:Arthur Knopper 原文链接

  在iOS应用内显示PDF文件内容可以使用Web View来解决,这篇文章将从本地读取PDF文件并显示到屏幕上。教程的代码使用Xcode7.1、iOS9编译运行。

  打开Xcode新建一个新的名字为“IOS9OpenPDFTutorial”的项目,语言选择Swift,设备选择iPhone,其他随意。

image