This document discusses new interactive ways for electronic books and demonstrates gesture controls for an iOS app called "Our Choice". It shows how to implement swiping left and right to change pages, pinching to zoom, and tapping. Code examples are provided for using UIScrollView, UIPinchGestureRecognizer, UIPanGestureRecognizer, UISwipeGestureRecognizer and UITapGestureRecognizer to enable these gestures. The document also introduces Reload Tech and its CEO Kevin Zhang.
Using cloud computing and virtualization technologies, continuous delivery focuses on automating the process of deploying code changes to production environments as quickly and frequently as possible while ensuring quality. Techniques like Chef automation, Amazon VPC, and Vagrant help configure and provision virtual servers that simulate production environments for testing purposes before deploying to actual production servers. A continuous delivery pipeline with stages like acceptance testing, staging, and production releases helps validate and release code changes.
DevOps is a software development approach that emphasizes collaboration between development and operations teams. It aims to shorten the systems development life cycle and improve quality by automating infrastructure and using lean principles and infrastructure as code. DevOps teams work to improve lead time, quality, and collaboration through practices like continuous integration, deployment, and monitoring.
15. Why Goovy?
? 更多简洁代码的示例
– System.out.println => println
– 可选的return
– GString: "${i++}: $it"
– GroovyBean(左)让JavaBean(右)更简洁
class MyBean{
class MyBean{ private int a
int a public int getA(){ return a}
} public void setA(int a){this.a = a}
}
21. Why Goovy?
? Duck Typing:更高级的多态
– 如果走路像鸭子,叫声像鸭子,那它就是鸭子
class Rectangle{
def draw(){
println "This is rectangle"
}
}
class Square{
def draw(){
println "This is Square"
}
}
def draw(painter){
painter.draw()
}
draw(new Rectangle())
draw(new Square())
22. Why Goovy?
? GPars:并发编程其实也不是那么难 :)
– 从Groovy 1.8起,作为扩展包随Groovy发布。
– 对多种并发编程模型提供了简洁的DSL:
? Actor、STM、Agent、CSP、Data Flow等
final Actor actor = new DynamicDispatchActor({
when {String msg -> println 'A String'; reply 'Thanks'}
when {Double msg -> println 'A Double'; reply 'Thanks'}
when {msg -> println 'A something ...'; reply 'What was that?'}
})
actor.start()