Category Archives: 开源Open Source

开源主要包含发布到网上的各种跟Swift语言有关的开源项目或例子

Set the newest OpenSSL for your Development Environment on macOS

在 macOS 上为你的开发环境设置最新的OpenSSL。

There thousands of questions asking about upgrade of OpenSSL. I think I just got my best answer from Patrick Bougie (GitHub link: https://github.com/pbougie ).

网上有成千上万的贴子在问如何升级OpenSSL。经过一轮老司机式的谷歌搜索和比较,我觉得我从Patrick Bougie (GitHub链接:https://github.com/pbougie) 那里找到了最适合我的答案。

So thank you, Patrick Bougie for the great works.

感谢 Patrick Bougie ,你做了这么棒的指南。

And here is the url for the detail: http://mac-dev-env.patrickbougie.com/openssl/. Please check the ‘ Compiling a Web Development Environment on macOS ‘ article from him here: http://mac-dev-env.patrickbougie.com.

这儿是该指南链接:http://mac-dev-env.patrickbougie.com/openssl/。同时别忘了访问 ‘ 在 macOS 上编译 Web 开发环境 ‘ 全集指南,链接是:http://mac-dev-env.patrickbougie.com

🙂

Swift语言编程实战系列教程(四)—从swift调用C函数

转自CC(CocoaChina)论坛上jamszhy的帖子

本节课的主要目的是熟悉从swift调用C函数。

本系列教程旨在通过简单、易懂、有趣的程序让大家熟悉swift语法,并且学会编程

我们发现swift语言目前没有提供输入语句,那我们可以让它调用C语言的输入函数就可以解决。

1. 新建一个项目

在Choose a template for your new project对话框中,点击左边OS X下的Application,再选择Command Line Tool,然后点击“ Next ”。

2. 给项目增加一个桥接文件:

使用“ New File… ”来创建文件,在Choose a template for your new file对话框中,点击左边OS X下的Source,再选择Objective-C File,然后点击“ Next ”。

输入文件名,点击“ Create ”,Xcode会弹出“ Would you like to configure an Objective-C bridging header? ”问题对话,点击“ Yes ”,Xcode会自动造成一个桥接头文件(假设名称为bridging-header.h)。

3. 然后再创建一个C语言的文件

使用“ New File… ”来创建文件,在Choose a template for your new file对话框中,点击左边OS X下的Source,再选择C File,然后点击“ Next ”。

输入文件名(假设文件名为CFile.c),点击“ Create 。

4. 然后在桥接文件中声明C语言的函数

在刚才自动生成的桥接头文件(参考bridging-header.h)中声明C语言函数,比如:
void youCanCallMeFromSomeWhere();

5. 然后在C文件中定义你的C函数

在刚才创建的C File(参考CFile.c)文件中定义之前在桥接头文件中声明的C函数,内容比如:
void youCanCallMeFromSomeWhere() {
printf(” Yeah, you can reach me now.\n “);
}

6. 最后在main.swift文件中就可以直接调用C函数了,比如用下面的代码:

println(“正在测试从Swift语言中调用C语言函数…”)

youCanCallMeFromSomeWhere()

Swift语言编程实战系列教程(三)—一颗爱你的心

转自CC(CocoaChina)论坛上jamszhy的帖子

本节课的主要目的是熟悉循环的概念及循环语句的使用。
一颗爱你的心,时时刻刻为你跳不停!需要使用循环语句!

//
//  main.swift
//  jumpHeart
//
//  Created by jamszhy on 14/6/6.
//  Copyright (c) 2014年 jamszhy. All rights reserved.
//  weibo.com/jamszhy

import Foundation

//一颗跳动心,可以看成不同大小的心不停的在屏幕上出现
//由于需要重复跳动,那我们需要使用循环
//先用最简单的循环:死循环

while true {
print(“\n\n”)
print(”                           \n”)
print(”                          \n”)
print(”                          \n”)
print(”                          \n”)
print(”                         \n”)
print(”           *****  \n”)
print(”            ***  \n”)
print(”             *  \n”)
print(”                      \n”)
print(”                     \n”)
print(”                     \n”)
print(”                     \n”)
print(”               \n”)
print(”                \n”)
usleep(100000)
system(“clear screen”)

print(“\n\n”)
print(”                           \n”)
print(”                \n”)
print(”                   \n”)
print(”              \n”)
print(”          ******  \n”)
print(”         ********  \n”)
print(”          ******  \n”)
print(”           ****  \n”)
print(”            **  \n”)
print(”       \n”)
print(”            \n”)
print(”             \n”)
print(”               \n”)
print(”                \n”)
usleep(100000)
system(“clear screen”)

print(“\n\n”)
print(”                           \n”)
print(”                \n”)
print(”                   \n”)
print(”       **** *****  \n”)
print(”      ************  \n”)
print(”       **********  \n”)
print(”        ********  \n”)
print(”         *****  \n”)
print(”          ***  \n”)
print(”           *  \n”)
print(”            \n”)
print(”             \n”)
print(”               \n”)
print(”                \n”)
usleep(100000)
system(“clear screen”)

print(“\n\n”)
print(”                           \n”)
print(”                \n”)
print(”       ***** *****  \n”)
print(”     ***************  \n”)
print(”    *****************  \n”)
print(”     ***************  \n”)
print(”      *************  \n”)
print(”        *********  \n”)
print(”          *****  \n”)
print(”           ***  \n”)
print(”            *    \n”)
print(”             \n”)
print(”               \n”)
print(”                \n”)
usleep(100000)
system(“clear screen”)

print(“\n\n”)
print(”                           \n”)
print(”      ******   ******  \n”)
print(”    ********* *********  \n”)
print(”   **********************  \n”)
print(”  ************************  \n”)
print(”   **********************  \n”)
print(”    *******************  \n”)
print(”      ****************  \n”)
print(”        *************  \n”)
print(”          *********  \n”)
print(”            *****  \n”)
print(”             ***  \n”)
print(”              *   \n”)
print(”                \n”)
usleep(100000)
system(“clear screen”)

print(“\n\n”)
print(”      ******       ******   \n”)
print(”    **********   **********  \n”)
print(”  ************* *************  \n”)
print(” *****************************  \n”)
print(“*******************************  \n”)
print(” *****************************  \n”)
print(”  ***************************  \n”)
print(”    ***********************  \n”)
print(”      *******************  \n”)
print(”        ***************  \n”)
print(”          ***********  \n”)
print(”           *******  \n”)
print(”              ***  \n”)
print(”               *  \n”)
usleep(100000)
system(“clear screen”)
}

//我们现在想控制循环次数
//那么需要定义变量:
var num = 0
while num < 10 {
//重复执行的语句
num++
}

//for循环的两种格式
for num in 0..10 {
//重复执行的语句
}
for num = 0; num < 10; num++ {
//重复执行的语句
}

//do while格式
do
{
//重复执行的语句
num++

}while num < 10
本系列教程旨在通过简单、易懂、有趣的程序让大家熟悉swift语法,
并且学会编程

Swift语言编程实战系列教程(二)—女朋友数玫瑰

转自CC(CocoaChina)论坛上jamszhy的帖子

本系列教程旨在通过简单、易懂、有趣的程序让大家熟悉swift语法,
并且学会编程。
代码很长,但思路简单,适合初学者!后面的课程我们会使用循环和函数的知识来重写。到时你就会看到代码很简短!

//
//  main.swift
//  countRose
//
//  Created by jamszhy on 14/6/6.
//  Copyright (c) 2014年 jamszhy. All rights reserved.
//  weibo.com/jamszhy

import Foundation

println(“Hello, World!”)

//女朋友数玫瑰花的动画
//1.先清屏
system(“clear screen”)
println(” 我送你18朵玫瑰花,”)
sleep(1)
println(” 你开始数:”)
sleep(1)
//2.然后不停的拍照,让照片一次在屏幕上放
println(“{@}”)
println(” | “)
println(“\\|/”)
println(” | “)
println(” |”)
println(” 1″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}”)
println(” |  | “)
println(“\\|/\\|/”)
println(” |  |  “)
println(” |  |  “)
println(”    2″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}”)
println(” |  |  | “)
println(“\\|/\\|/\\|/”)
println(” |  |  |  “)
println(” |  |  |  “)
println(”       3″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}”)
println(” |  |  |  | “)
println(“\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  “)
println(” |  |  |  |  “)
println(”          4 “)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}”)
println(” |  |  |  |  | “)
println(“\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  | “)
println(” |  |  |  |  | “)
println(”             5″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  | “)
println(” |  |  |  |  |  |  “)
println(”                6 “)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  | “)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  | “)
println(”                   7 “)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备
println(“{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  | “)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  | “)
println(” |  |  |  |  |  |  |  | “)
println(”                      8 “)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  | “)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  | “)
println(” |  |  |  |  |  |  |  |  | “)
println(”                         9″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备
println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  | “)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |”)
println(”                            10″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |”)
println(”                               11″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备
println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                  12″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                     13″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备
println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                        14″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                           15″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                              16″)
sleep(1)  //3.然后控制照片之间的切换速度
system(“clear screen”) //4.清楚屏幕,为新照片放映做准备

println(“{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}{@}”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(“\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/\\|/”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(” |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |”)
println(”                                                 17″)
sleep(1)  //3.然后控制照片之间的切换速度

println(” 你数来数去,”)
sleep(1)
println(” 只有17朵!”)
sleep(1)
println(” 因为,”)
sleep(1)
println(” 还有一朵,”)
sleep(1)
println(” 就是你!!!!”)
sleep(1)
println(” 你是我的玫瑰,你是我的花,”)
sleep(1)
println(” 你是我的爱人,是我的牵挂!!!”)

Swift语言编程实战系列教程(一)— 给女朋友写情书

转自CC(CocoaChina)论坛上jamszhy的帖子

本节课的主要目的是熟悉swift语言的输出函数:println与print
本系列教程旨在通过简单、易懂、有趣的程序让大家熟悉swift语法,
并且学会编程。
你是风,你是雨,娶到你我就能呼风唤雨!
你是天,你是地,娶到你我就能顶天立地!
你是财,你是宝,娶到你我就能招财进宝!
//
//  main.swift
//  girlfriendCountRose
//
//  Created by jamszhy on 14/6/6.
//  Copyright (c) 2014 jamszhy. All rights reserved.
//  weibo.com/jamszhy

import Foundation

println(“Hello, World!”)
println(“Hello Swift, nice to meet you!”)

//给女朋友写一封情书:
println(你是风,你是雨,娶到你我就能呼风唤雨!)
println(你是天,你是地,娶到你我就能顶天立地!)
println(你是财,你是宝,娶到你我就能招财进宝!)

//给女朋友送一朵玫瑰花
println(“{@}”)
println(” |”)
println(“\\|/”)
println(” |”)
println(” |”)

//printprintln的区别:
//print不自动加\n

print(“Hello, World!\n”)
print(“Hello Swift, nice to meet you!\n”)

//给女朋友写一封情书:
print(你是风,你是雨,娶到你我就能呼风唤雨!\n”)
print(你是天,你是地,娶到你我就能顶天立地!\n”)
print(你是财,你是宝,娶到你我就能招财进宝!\n”)

//给女朋友送一朵玫瑰花
print(“{@}  \n”)
print(” |   \n”)
print(“\\|/ \n”)
print(” |   \n”)
print(” |   \n”)