Swift 笔记:函数


Apple-Swift-logo

函数是一段完成特定任务的独立代码片段。在 Swift 中,每个函数都有一个由函数的参数值类型和返回值类型组成的类型。函数的定义可以写在其他函数定义中,这样可以在嵌套函数范围内实现功能封装。

函数的定义与调用

定义一个函数时,可以定义一个或多个有名字和类型的值,作为函数的输入,称为参数,也可以定义某种类型的值作为函数执行结束时的输出,称为返回类型。要使用一个函数时,用函数名来“调用”这个函数,并传给它匹配的输入值(称作实参),函数的实参必须与函数参数表里参数的顺序一致。

func sayHello(name: String) -> String {
    return "Hello, " + name + "!"
}
print(sayHello(name: "Ryan"))

继续阅读 “Swift 笔记:函数”

Swift 笔记:控制流


Apple-Swift-logo

Swift提供了多种流程控制结构,包括 for-in 循环、while 循环、if 语句、guard 语句、switch 语句、break 语句、continue 语句等。

For-In 循环

for-in 循环可以遍历一个集合中的所有元素:

let names = ["Anna", "Brain", "Jack", "Ryan"]
for name in names {
    print("Hello, \(name)!")
}

for-in 循环也可通过遍历一个字典来访问它的键值对:

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}

for-in 循环可以使用数字范围:

for index in 1...5 {
    print("\(index) times 5 is \(index*5)")
}

如果不需要区间序列内每一项的值,可以使用下划线(_)替代变量名来忽略这个值。

继续阅读 “Swift 笔记:控制流”

Swift 笔记:集合类型


Apple-Swift-logo

Swift 语言提供数组(Arrays)、集合(Sets)和字典(Dictionaries)三种基本的集合类型来存储数据。数组是有序数据的集,集合是无序无重复数据的集,字典是无序的键值对的集。

CollectionTypes-intro

Arrays、Sets、Dictionaries 中存储的数据值类型必须明确,不能把不正确的数据类型插入其中。如果创建一个集合并分配为变量,那么这个集合将会是可变的;如果分配成变量,那么这个集合就是不可变的,它的大小和内容都不能被改变。 继续阅读 “Swift 笔记:集合类型”

Swift 笔记:字符串与字符


Apple-Swift-logo

字符串(String)是有序的字符(Character)类型的值的集合。Swift 中 String 和 Character 类型提供了快速和兼容 Unicode 的方式供代码使用。

字符串字面量

字符串字面量是由一对双引号包裹着的具有固定顺序的字符集:

let someStr = "Hello, Swift!"
var someStr2:String = "Hello, Swift!"
var someStr3 = String("Hello, Swift!")

多行字符串字面量是由一对三个双引号包裹着的具有固定顺序的文本字符集:

let quotation = """
This is a multiline string.
This is a multiline string, too.
"""

初始化空字符串

要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量:

var emptyStr = ""
var anotherEmptyStr = String()

可以使用 isEmpty 属性来检查字符串是否为空:

if emptyStr.isEmpty {
    print("Nothing to see here")
}

继续阅读 “Swift 笔记:字符串与字符”

Swift 笔记:基础运算符


Apple-Swift-logo

Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。Swift 中赋值运算(=)不能返回值,以防止与判断相等运算符(==)混淆。

运算符分为一元、二元和三元运算符。一元运算符对单一对象操作,分前置运算符和后置运算符,运算符与操作对象间不能加空格,必须紧密相连;二元运算符操作两个对象,是中置的;Swift 三元运算符只有一个,即三目运算符 a ? b : c

赋值运算符

赋值运算符(a = b),表示用 b 的值来初始化或更新 a 的值。需要注意的是 Swift 的赋值不返回值,不能做如下的判断:

if a = b {
    // 此句错误, 因为 x = y 并不返回任何值
}

算术运算符

Swift 中所有数值类型都支持基本的四则算术运算和求余运算:

  • 加法(+)
  • 减法(-)
  • 乘法(*)
  • 除法(/)
  • 求余(%)

加法运算符也可用于 String 的拼接。

组合赋值运算符

Swift 也提供把其他运算符和赋值运算(=)组合的组合赋值运算符,组合加运算(+=)是其中一个例子: 继续阅读 “Swift 笔记:基础运算符”

Linux 技巧:利用 Alias 简化命令


Alias 是 Linux 中常用的别名命令,利用它我们可以为一些常用的相对复杂的命令创建一个简介的别名,这样在后续使用时会方便很多。

方法很简单,举个简单的例子:为常用的目录路径创建一个别名。

首先,使用 vi 打开 ~/.bashrc

vi  ~/.bashrc

然后添加一行:

alias cdt="cd /www/wordpress/wp-content/themes"

保存并退出,执行 source ~/.bash_profile 使命令生效。后续我们只要使用命令 cdt 就可以进入上面的路径了,就不用再输入完整的路径了!

WordPress 插件:WordPress 同步微博


banner-1544x500

插件说明

wp2wb 将你的 WordPress 网站与新浪微博关联,在发布文章时自动将文章同步发布到新浪微博,并且可以选择以普通微博方式发布或者头条文章方式发布。

使用 wp2wb 需要先在 新浪开放平台 创建网站网页应用。

插件下载

安装插件

  1. 下载插件 zip 压缩包,解压并上传到网站 /wp-content/plugins 目录,或者通过在 插件中心 在线下载安装
  2. 插件->已安装的插件 中激活插件
  3. 设置->同步微博设置 中按相关提示设置插件。

继续阅读 “WordPress 插件:WordPress 同步微博”

CentOS 服务器使用 Certbot 安装配置 Let’s Encrypt SSL证书


lets-encrypt

Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。

申请 Let's Encript 证书主要有以下三种方式:

这里我们以 Certbot 脚本的方式为例,介绍 CentOS 下 Nginx 安装配置 Let's Encrypt 的过程。

安装 Certbot

sudo yum install certbot

自动安装配置

执行:

sudo certbot --nginx

Certbot 会查找当前服务器上的 Nginx 里面的虚拟主机,为你签发 SSL 证书,并且会自动修改主机的 Nginx 配置,让它支持 HTTPS,根据提示一步一步操作即可。

手动安装配置

申请证书

# 使用方法:certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos
# 例如:
certbot certonly --webroot -w /opt/www/mydomain.com -d mydomain.com -m myname@gmail.com --agree-tos

完成后,在 /etc/letsencrypt/live/ 会生成对应域名的文件夹,里面有指向证书的快捷方式。

配置 SSL 证书

server {
 server_name mydomain.com;
 listen 443;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
 ...

自动更新证书

Let's Encrypt 证书只有 90 天有效期,我们可以通过 cron 定期自动更新证书,(如果系统未安装 cronie,需先安装)执行:

crontab -e

如果我们希望每周一凌晨 2:30 自动执行证书更新操作,并自动重启nginx服务,添加一行:

30 2 * * 1 sudo /usr/bin/certbot renew --quiet && sudo /usr/bin/systemctl reload nginx

证书在到期前30天内才能更新,多余的更新会自动忽略掉的。

配置生阿里云 LEMP 产环境(二)


alibaba-cloud-logo

配置生产环境

配置网站目录

首先需要在 ECS 实例上创建我们网站的根目录,使用 mkdir -p 命令进行,比如我网站的根目录路径为 /public_html/iiryan.com

mkdir -p /public_html/iiryan.com

完成后,可以目录下新建一个 phpinfo.php 的文件,以方便我们后续测试,文件内容为:

<?php phpinfo(); ?>

配置 Nginx

在 Nginx 的配置目录 /etc/nginx/conf.d 下,新建一个名为 default.conf 的配置文件,文件内容为:

server {
        listen          80;
        server_name     iiiryan.com;
        root            /public_html/iiryan.com;
        index           index index.html index.php;

        location / {
                 try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include fastcgi_params;
        }       
}

上面配置信息中,服务器地址、文件目录可以根据实际情况自己设置。完成后重新加载 Nginx:

systemctl reload nginx

因为,之前已经建了一个 phpinfo.php 的文件,我们可以在浏览器中打开:http://iiiryan.com/phpinfo.php ,如果能够正常打开 PHP 的信息页面,就说明配置成功了。 继续阅读 “配置生阿里云 LEMP 产环境(二)”