2015年6月3日星期三

Swift学习笔记一 - FirstLovt

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Swift学习笔记一 - FirstLovt  阅读原文»

  最近计划把Swift语言系统学习一下,然后将MagViewer用这种新语言重构一次,并且优化一下,这里记录一下Swift的学习笔记。

  Swift和Objective-C相比,在语法和书写形式上做了很多改进,面向开发者的体验更好了。比如:

  println("Hello, world!")

  就可以打印出这个字符串,这条语句就是完整的一句,句末不需要添加分号,也不需要引入额外的头或者库文件比如标准输入输出等。在全局作用域内书写的代码就会作为程序的入口,因此不需要编写main函数了。

  简单值

  用let声明常量,用var声明变量。常量的值在编译的时候不需要知道,但是必须在某个地方真正给它赋值一次,因此常量通常是在一个地方声明和赋值,在很多地方使用的。

var myVariable = 42
myVariable
= 50
let myConstant
= 42

  常量和变量的类型必须和所赋的值保持一致。但是,并不用每次都显示地写明变量类型,可以只给它们提供值,而让编译器去推测它们的类型。上面的例子就是这样的,也可以显示地写明类型:

let explicitDouble: Double = 70

  变量不会隐式地进行类型转换,如果需要类型转换,必须要开发者显示地进行,比如:

let label = "The width is "
let width
= 94
let widthLabel
= label + String(width)

  在字符串中引用变量还有更简单的方式,就是直接用反斜杠加上圆括号就可以了,比如:

let apples = 3
let oranges
= 5
let appleSummary
= "I have \(apples) apples."
let fruitSummary
= "I have \(apples + oranges) pieces of fruit."

  

  创建数组和字典是用中括号,获取数组或字典的值也是。

var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[
1] = "bottle of water"

var occupations
= [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations[
"Jayne"] = "Public Relations"

创建空数组或空字典时,用初始化语法更为简便:

let emptyArray = [String]()
let emptyDictionary
= [String: Float]()

如果元素类型能够被推理出来,甚至可以省略类型声明,用[]表示空数组,[:]表示空字典,比如:

shoppingList = []
occupations
= [:]

控制流

  用if和switch做条件选择,用for-in,for,while,do-while做循环,选择条件的圆括号和循环变量是可以省略的,但是主体部分的大括号不能省略:

let individualScores = [75, 43, 103, 87, 12]
var teamScore
= 0
for score in individualScores {
if score > 50 {
teamScore
+= 3
}
else {
teamScore
+= 1
}
}
println(teamScore)

在if结构中,条件语句的值必须是一个Boolean表达式,这就使得上面的例子中if score {。。。}无法通过,而不是将score值隐式地转换了。

if和let可以结合使用,这样可以避免找不到该变量。这种变量相当于可省略的,可省略的变量要么等于某个值,要么就是nil(未找到该变量),在变量类型之后加上一个?来标明该变量是可省略的:

var optionalString: String? = "Hello"
println(optionalString
== nil)

var optionalName: String
? = "John Appleseed"
var greeting
= "Hello!"
if let name = optionalName {
greeting
= "Hello, \(name)"
}

switch支持任何数据类型以及很多种条件比较表达式(并不限定为整数或者判断是否相等):

let vegetable = "red pepper"
switch vegetable {
case "celery":
let vegetableComment
= "Add some raisins and make ants on a log."
case "cucumber", "watercress":
let vegetableComment
= "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment
= "Is it a spicy \(x)?"
default:
let vegetableComment
= "Everything tastes good in soup."
}
//
Is it a spicy red pepper?

default分支是必须的,否则编译会报错。

注意是如何用let将满足一个表达式的值赋给一个常量的。

在进入合适的case之后,程序会跳出switch块,忽略其他case,因此不需要在每个case最后都加上break;

用for in来遍历数组或字典,数组是按顺序排列的,而字典则是随机排列的键值对。

let interestingNumbers = [
"Prime": [2, linux下创建svn代码库 - 郝峰波  阅读原文»

1、安装svn客户端

2、创建svn代码库


1、安装svn客户端

  1.1、使用命令安装

  1)CentOS

$ yum install subversion

  2)ubuntu

sudo apt-get install subversion

  1.2、源码安装

  http://www.cnblogs.com/fengbohello/p/4142810.html


2、开启svn服务进程

  2.1、我的习惯是把代码仓库放在/opt/svn目录下,所以先创建目录/opt/svn

$ mkdir /opt/svn -p

  2.2、开启svn服务进程

svnserve -d -r /opt/svn/

  这个命令的作用是开启svn服务进程,并且把/opt/svn/目录作为我们的svn服务的根目录。以后,当我们要在客户端checkout代码的时候,svn服务进程就会从这里开始进行查询,类似于apache的/var/www/目录的作用。

  运行如下命令检查svn服务是否开启了。

# ps -ef | grep svn
root
2572 1 0 09:22 ? 00:00:00 svnserve -d -r /opt/svn/

  如果,出现以上结果,这说明svn服务正常开启了。

  2.3、创建我们的第一个代码仓库:firsttest

# cd /opt/svn/
# svnadmin create firsttest

  这就创建了我们的第一个代码仓库,这个代码仓库的名字就叫做“firsttest”,可以看到其中的文件

# ls firsttest/
README.txt conf db format hooks locks

  2.4、下面对我们的代码仓库进行权限设置

  1)进入conf目录

# cd firsttest/conf/

  2)编辑svnserve.conf。这个文件是要告诉svn服务进程,我们的firsttest项目的认证权限和认证需要的密码文件以及认证文件的存放位置。

  在第8行左右找到“[general]”,对其下面的内容进行编辑

# vim svnserve.conf
### Visit http:
//subversion.tigris.org/ for more information.

[general]

### These options control access to the repository
for unauthenticated
### and authenticated users. Valid values are
"write", "read",

  其中需要编辑的地方分别是

  2.1)

### and "none". The sample settings below are the defaults.
# anon
-access = read
# auth-access =
write
### The password
-db option controls the location of the password

  修改为

### and "none". The sample settings below are the defaults.
anon
-access = none
auth-access =
write
### The password
-db option controls the location of the password

  注意,红色的两行前面不能有空格,否个svn会读取失败,下面的修改也要注意这些。

  2.2)

### Uncomment the line below to use the default password file.
# password
-db = passwd
### The authz
-db option controls the location of the authorization

  改为

### Uncomment the line below to use the default password file.
password
-db = passwd
### The authz
-db option controls the location of the authorization

  2.3)

### Uncomment the line below to use the default authorization file.
# authz
-db = authz
### This option specifies the authentication realm of the repository.

  修改为

### Uncomment the line below to use the default authorization file.
authz
-db = authz
### This option specifies the authentication realm of the repository.

  对于一般的情况,修改到这里就可以了,下面的选项是加密选项等的加强版,这里就不说了。

  3)下面修改passwd文件。

# vim passwd

  3.1)找到“”,在此选项下添加用户“woshihehe”,“woshihehe”用户对应的密码是“123456”


# harry
= harryssecret
# sally
= sallyssecret
woshihehe
= 123456

  4)修改authz文件

# vim authz

  在最后添加两行

# [repository:/baz/fuz]
# @harry_and_sally
= rw
#
* = r
[
/]
woshihehe=rw

  这两行的意思是,目录[/](代码根目录)下的所有文件,如果没有特殊约定的话,woshihehe用户将具有读(r)和写(w)的权限。

3、下载代码

  假如我的svn服务器的IP是192.168.1.105,在其它的机器上,执行如下代码

# svn co svn://192.168.1.105:/firsttest --username woshihehe
认证领域: <svn://192.168.1.105:3690> My First Repository
“woshihehe”的密码:

  那么接下来输入密码就可以了

-----------------------------------------------------------------------
注意
! 你的密码,对于认证域:

<svn://192.168.23.216:3690> My First Repository

只能明文保存在磁盘上
! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“
/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes
/no)?

没有评论:

发表评论