服务器基础知识

服务器(英文名称server),也称伺服器。指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。服务器的构成与一般的PC比较相似,但是服务器在稳定性、安全性、性能等方面都要求更高,因为CPU、芯片组、内存、磁盘系统、网络等硬件和普通PC有所不同。
服务器是网络环境中的高性能计算机,它侦听网络上的其他计算机(客户机)提交的服务请求,并提供相应的服务,为此,服务器必须具有承担服务并且保障服务的能力。有时,这两种定义会引起混淆,如域名注册查询的Web服务器。
它的高性能主要体现在高速度的运算能力、长时间的可靠运行、强大的外部数据吞吐能力等方面。服务器的构成与微机基本相似,有处理器、硬盘、内存、系统总线等,它们是针对具体的网络应用特别制定的,因而服务器与微机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在差异很大。一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器(能使用户在其它计算机访问文件),数据库服务器和应用程序服务器。
服务器是网站的灵魂,是打开网站的必要载体,没有服务器的网站用户无法浏览。服务器就像一块敲门砖,就算网站在搜索引擎里的排名再好,网站打不开,用户无法浏览,网站就没有用户体验可言,网站能被打开是*个重点。
服务器软件的定义如前面所述,服务器软件工作在客户端-服务器(C/S)或浏览器-服务器(B/S)的方式,有很多形式的服务器,常用的包括:
文件服务器(File Server) – 如Novell的NetWare
数据库服务器(Database Server) – 如Oracle数据库服务器,MySQL,PostgreSQL,Microsoft SQL Server等
邮件服务器(Mail Server) – Sendmail,Postfix,Qmail,Microsoft Exchange,Lotus Domino等
网页服务器(Web Server) – 如Apache,thttpd,微软的IIS等
FTP服务器(FTP Server) – Pureftpd,Proftpd,WU-ftpd,Serv-U等
域名服务器(DNS Server) – 如Bind9等
应用程序服务器(AP Server) – 如Bea公司的WebLogic,JBoss,Sun的GlassFish
代理服务器(Proxy Server) – 如Squid cache
电脑名称转换服务器 – 如微软的WINS服务器

Mac 终端命令行启动自带的python和自带的idle

1、启动python
查看Mac自带python的路径:终端输入$ which python

%title插图%num

打开路径在Finder中进入路径 /usr/bin/python

%title插图%num

双击这个exec可执行文件就可以打开python了(也可以直接在终端输入
$ open /usr/bin/python),终端会弹出Python的窗口

2、启动idle
Mac自带的idle的路径跟其自带的python处于同级目录,即 /usr/bin/idle

%title插图%num

跟上面的一样,可以双击/usr/bin/idle路径下的exec可执行文件打开idle,
也可以在终端输入$ open /usr/bin/idle

idle的窗口界面是这样的

%title插图%num

iOS Xcode中的Workspace、Project、Target、Scheme

Project

Xcode中的project是一个包含了所有文件、资源以及构建一个或者多个product所需信息的一个仓库。project包含编译product所用的所有元素,并帮我们组织这些元素之间的关系。一个project可以包含一个或者多个target,target指定了如何编译product。project定义了其内部所有target的默认编译配置(每个target可以通过重新设置(重写)编译配置来定义自己的特殊编译配置)。

project包含了以下信息:

1、对如下源文件的引用:
    (1)代码的.h文件和.m文件
    (2)Libraries 和 frameworks
    (3)Resource files(资源文件,如文本,xml,plist等)
    (4)图片
    (5)Interface Builder files(xib、storyboard等)

2、用来组织资源文件的group(比如哪个文件放在哪个文件夹路径下)

3、project级别的编译配置,比如你对debug、release两种环境的分别设置。

4、targets的配置,这些配置指定了:
    (1)工程编译的引用
    (2)工程编译所需要的资源文件的引用
    (3)工程编译的编译配置,包括对其他target和配置的依赖关系,还包括没有target重写(覆盖)的project级别的编译配置

5、用于debug和测试程序的执行环境,这些执行环境指定了:
    (1)xcode在run或debug时的可执行文件
    (2)传递给可执行文件的命令行参数(若有)
    (3)程序运行时设置的环境变量(若有)

 

一个project可以独立存在,也可以包含在一个workspace下。
你可以用Xcode schemes来指定当前的target、编译配置、可执行文件配置。

Target

target指定了要编译的product, 并包含’用project 或 workspace里中的一系列文件来编译一个product的说明‘。一个target只能定义一个product,target将输入(包括编译product所需的源文件和处理这些源文件的说明)组织到构建系统中。一个project可以包含一个或多个target,每个target可以对应产生一个product。

上面的编译一个product的说明的表现形式就是我们xcode里的build settings和 build phases。

一个target和由它产生的product可以关联其他的target。如果一个target的编译依赖于另外一个target的输出,我们就说前者依赖于后者;如果这两个target在同一个workspace中,Xcode就能识别这个依赖;这种依赖关系我们称之为隐式依赖(implicit dependency)。你也可以在build settings明确指定target依赖关系,也可以将Xcode中的隐式依赖指定为无依赖关系,比如,你可以同时编译处于同一workspace中的library和链接这个library的application,Xcode会识别library和application的关系,然后先编译library,但是如果你的本意是想要链接这个library的version而不是library本身,你可以在build settings中创建一个显式的依赖来覆盖这个隐式依赖。

Workspace

workspace是一种xcode文件,用于分组projects和其他文件,便于我们使用它们。workspace可以包含多个project和其他你想要引入的文件。除了组织各个project中所有的文件之外,workspace还提供存在于projects和它们对应targets之间的隐式和显式关系。

一个project可以属于多个workspace。

默认情况下,workspace中的projects编译在同一目录下,我们称之为workspace build directory,每个workspace都有各自的编译目录。因为同一workspace下的每个project中的所有文件都在同一编译目录下,所以这些文件彼此之间是相互可以引用的。因此,如果workspace中的多个projects使用了相同的libraries的时候,我们就不需要给每个工程都拷贝一个。

workspace中每个project依然都是独立的。如果你想单独的使用这个project,并且不希望影响其他project,或者被其他project影响,你可以直接打开这个project而不是通过workspace,或者你也可将这个project添加到其他workspace中。一个project可以同时从属于多个workspace,所以你可以在任意的组合中使用这个project,而不需要去重新配置project或者workspace。

你可以使用workspace中默认的编译目录,也可以自己指定一个。注意,如果你为一个project指定了一个编译目录,那么当你编译这个project时,这个目录会被此project所属的任何workspace的编译目录所覆盖。

Scheme

scheme定义了可以用于编译若干target,以及编译这些target时的一些配置和要执行的测试。我们可以定义多个scheme,但是每次只能使用其中一个。我们可以设置scheme保存在project中还是workspace中。如果保存在project中,那么任意包含了这个project的workspace都可以使用。如果保存在workspace中,那么只有这个workspace可以使用。选择了scheme就意味着选择了运行目标。

Mac上使用Source Tree的一些总结

作为一名Max/Xcode/iOS的初学者,学习仅有3个月时间,很多东西还不是很懂。在公司做项目集成代码用的是svn,在*开始听了一位同事说使用versions来进行svn访问,但是versions并不是一个免费的软件,于是上网下载几个破解版才搞好,终于能访问到svn了。但是随着自己的使用,发现了一些坑爹的问题,如今这个破解版versions,总是在不经意间就奔溃了,都快要玩哭我了。于是昨天,想起了一位大神说Source Tree都可以使用svn,于是想自己动手弄一个,毕竟Source Tree是免费软件。

在App Store中下载了Source Tree,安装完成后弹出了一个页面被告知现在Source Tree已经不在App Store更新了(由于没有细看,只是想起那位大神也说过类似的话,就就想想自己理解应该没错),于是从昨晚开始打开sourcetreeapp.com,打开啊打开,总是load不出来,发现网络妥妥把我压制了。*后只能边下载新版本边使用旧版本了。

好了,在使用Source Tree过程中,使用Gitbub是能正常使用的,可是一旦连接svn服务器,就出现错误了,上网找了找,再结合错误信息,初步认为是系统的Perl和Source Tree的svn中Perl没有进行必要的链接,Source Tree查找不到svn相关信息。我的系统中只有Xcode中自装的Perl版本有5.12和5.16,可是这个App Store中下载的Source Tree版本只是1.5.6,里面包含的Perl版本*高只有5.12,这样和错误不符,错误显示的是Perl5.16版本错误,于是只能等待*新Source Tree版本下载完成再作尝试(可是还是网络压制呀~~)。

历尽千辛万苦,终于把40+M的Source Tree dmg文件下下来了,进行安装。在不进行任何设置的情况下使用svn资源库,的确还是

Can’t locate SVN/Core.pm in @INC (@INC contains: /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/5.16.2/darwin-thread-multi-2level /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/5.16.2 /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl /Library/Perl/5.16/darwin-thread-multi-2level /Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level /Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2 /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16 /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level /System/Library/Perl/Extras/5.16 .) at /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
BEGIN failed–compilation aborted at /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
Compilation failed in require at /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/Git/SVN.pm line 26.
BEGIN failed–compilation aborted at /usr/local/Cellar/git/1.8.4.1/lib/perl5/site_perl/Git/SVN.pm line 33.
Compilation failed in require at /usr/local/Cellar/git/1.8.4.1/libexec/git-core/git-svn line 25.
BEGIN failed–compilation aborted at /usr/local/Cellar/git/1.8.4.1/libexec/git-core/git-svn line 25.
果然还是因为Perl 5.16版本没有进行链接的问题,于是把之前上网查找到的方法进行了一番设置,再次使用svn。诶,行了。

而设置很简单,就只是建立两个文件夹间的软链接即可:

1. ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.16/darwin-thread-multi-2level/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.16.2/darwin-thread-multi-2level/

2. ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.16/darwin-thread-multi-2level/auto/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.16.2/darwin-thread-multi-2level/auto/

OK,现在正在从svn服务器导到本地,希望能成功啦。貌似这个资源库很大,要很久的样子。

好吧,还是待它导完再更新了~~

第二日

昨晚忘记更新了,昨晚经过长时间导到本地,终于成功了,随后测试了git的基本功能,能上传代码到github了。至此,Source Tree的安装总结就到一段落了。

以此记录自己的一次经历,望学习交流。

iOS--字符编码,NSString和UTF-8间的转换

ASCII码相信很熟悉了,只是自己一直都记不住基本规律,有时候用起来十分不爽。

ASCII,共7位,表示128个字符,一般都在前面加0补全8位形成一个Bit。0~31以及127为控制字符,不能打印;32为空格;48(HEX: 0x30)为0;65(HEX: 0x41)为A;97(HEX: 0x61)为a。

GB2312:ANSI编码中的一种,对ASNI编码*初始的ASCII编码进行扩充,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉子字符集国家标准编码,统称为GB码,或国标码。其中*有影响的是于1980年发布的《信息交换用汉字编码字符集 基本集》,标准号为GB 2312-1980,因其使用非常普遍,也常被通称为国标码。GB2312是一个简体中文字符集,由6763个常用汉字和682个全角的非汉字字符组成。GB2312编码用两个字节表示一个汉字,所以理论上*多可以表示256×256=65536个汉字。(摘自百度百科)

GBK:汉字内码扩展规范,K为扩展的汉语拼音中“扩”字的声母。GBK兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位。(摘自百度百科)

Unicode:把世界上所有的符号都纳入其中,包括英文、日本、中文等等,现在能容纳100多万个符号。这样效率上就不好,于是UTF-8出现了,它可以根据不同的符号自动选择编码的长短。

iOS中对字符串进行UTF-8编码:输出str字符串的UTF-8格式

[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

解码:把str字符串以UTF-8规则进行解码

[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

iOS--坐标变换Quartz 2D中的CGContextTranslateCTM、CGContextScaleCTM、CGContextRotateCTM、CGContextConcatCTM等

iOS讲义总结

在iOS中,Quartz 2D提供了坐标变换支持。

一、特殊的坐标变换(平移、缩放、旋转)

1. – void CGContextTranslateCTM ( CGContextRef c, CGFloat tx, CGFloat ty ):平移坐标系统。

该方法相当于把原来位于 (0, 0) 位置的坐标原点平移到 (tx, ty) 点。在平移后的坐标系统上绘制图形时,所有坐标点的 X 坐标都相当于增加了 tx,所有点的 Y 坐标都相当于增加了 ty。

2. – void CGContextScaleCTM ( CGContextRef c, CGFloat sx, CGFloat sy ):缩放坐标系统。

该方法控制坐标系统水平方向上缩放 sx,垂直方向上缩放 sy。在缩放后的坐标系统上绘制图形时,所有点的 X 坐标都相当于乘以 sx 因子,所有点的 Y 坐标都相当于乘以 sy 因子。

3. – void CGContextRotateCTM ( CGContextRef c, CGFloat angle ):旋转坐标系统。

该方法控制坐标系统旋转 angle 弧度。在缩放后的坐标系统上绘制图形时,所有坐标点的 X、Y 坐标都相当于旋转了 angle弧度之后的坐标。

为了让开发者在进行坐标变换时无须计算多次坐标变换后的累加结果,Quartz 2D还提供了如下两个方法来保存、恢复绘图状态。

– void CGContextSaveGState ( CGContextRef c ):保存当前的绘图状态。

– void CGContextRestoreGState ( CGContextRef c ):恢复之前保存的绘图状态。

需要说明的是,CGContextSaveGState() 函数保存的绘图状态,不仅包括当前坐标系统的状态,也包括当前设置的填充风格、线条风格、阴影风格等各种绘图状态。但 CGContextSaveGState() 函数不会保存当前绘制的图形。

二、通用的坐标变换(通过变换矩阵进行变换)

除了以上3个坐标转换方法之外,Quartz 2D提供更通用的坐标转换方法。

void CGContextConcatCTM ( CGContextRef c, CGAffineTransform transform ):使用 transform 变换矩阵对 CGContextRef 的坐标系统执行变换,通过使用坐标矩阵可以对坐标系统执行任意变换。

CGAffineTransform CGContextGetCTM ( CGContextRef c ):获取CGContextRef的坐标系统的变换矩阵。

上述两个方法中都涉及一个关于矩阵的API:CGAffineTransform。

创建CGAffineTransform的4种方式:

1. CGAffineTransform CGAffineTransformMakeTranslation ( CGFloat tx, CGFloat ty ):创建进行位移变换的变换矩阵。该函数的两个参数与前面介绍的位移变换的两个参数的作用相同。

2. CGAffineTransform CGAffineTransformMakeScale ( CGFloat sx, CGFloat sy ):创建进行缩放变换的变换矩阵。该函数的两个参数与前面介绍的缩放变换的两个参数的作用相同。

3. CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle ):创建进行旋转变换的变换矩阵。该函数的参数与前面介绍的旋转变换的参数的作用相同。

4. CGAffineTransform CGAffineTransformMake ( CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty ):该函数使用自定义变换矩阵执行变换。

其中 ( a, b, c, d )会形成变换矩阵,tx、ty为横向和纵向的位移,变换后结果应该为:

a, b

(x, y) x (c, d) + (tx, ty) = (xa x yc, xb x yd) + (tx, ty) = (xa x yc + , xb x yd + ty)。

一般坐标变换矩阵

1)水平镜像(绕 Y 轴做对称变化):CGAffineTransformMake ( -1, 0, 0, 1, 0, 0 )

-1, 0

0, 1

2) 垂直镜像(绕 X 轴做对称变化):CGAffineTransformMake ( 1, 0, 0, -1, 0, 0 )

1, 0

0, -1

3)绕 x=y轴做对称变化:CGAffineTransformMake ( 0, 1, 1, 0, 0, 0 )

0, 1

1, 0

4)绕x =-y轴做对称变化:CGAffineTransformMake ( 0, -1, -1, 0, 0, 0 )

0, -1

-1, 0

5)做“水平倾斜”的变换,此时 Y 坐标无须变换,只要将 X 坐标增加 tan( angle ) x X 即可(angle 代表顺时针转过的角度):CGAffineTransformMake ( 1, 0, tan(angle), 1, 0, 0 )

1, 0

tan(angle), 1

6)做“垂直倾斜”的变换,此时 X 坐标无须变换,只要将 Y 坐标减少 tan( angle ) x X 即可:CGAffineTransformMake ( 1, -tan(angle), 0, 1 )

1, -tan(angle)

0, 1

三、复合矩阵坐标变换

1. CGAffineTransform CGAffineTransformTranslate ( CGAffineTransform t, CGFloat tx, CGFloat, ty ):对已有的变换矩阵 t 额外增加位移变换。

2. CGAffineTransform CGAffineTransformScale ( CGAffineTransform t, CGFloat sx, CGFloat sy ):对已有的变换矩阵 t 额外增加缩放变换。

3. CGAffineTransform CGAffineTransformRotate ( CGAffineTransform t, CGFloat angle ):对已有的变换矩阵 t 额外增加旋转变换。

4. CGAffineTransform CGAffineTransformInvert ( CGAffineTransform t ):对已有的变换矩阵 t 进行反转。

5. CGAffineTransform CGAffineTransformConcat ( CGAffineTransform t1, CGAffineTransform t2 ):将两个变换矩阵进行叠加。

四、对CGPoint、CGSize和CGRect进行坐标变换

1. CGPoint CGPointApplyAffineTransform ( CGPoint point, CGAffineTransform t ):对指定的CGPoint执行变换,函数返回坐标变换后的CGPoint。

2. CGSize CGSizeApplyAffineTransform ( CGSize size, CGAffineTransform t ):对指定的CGSize执行变换,函数返回坐标变换后的CGSize。

3. CGRect CGRectApplyAffineTransform ( CGRect rect, CGAffineTransform t ):对指定的CGRect执行变换,函数返回坐标变换后的CGRect。

五、对UIView进行坐标变换

UIView提供了一个transform属性,该属性支持设置CGAffineTransform变换矩阵,这样就可对UIView控件本身进行坐标变换,从而改变UIView控件本身的外观。

Mac--快捷键

1. 退出应用
command + q

2. 全屏截图,默认保存路径为桌面
shift + command + 3

3. 自定义区域截图,默认保存路径为桌面
shift + command + 4

4. 新建应用窗口
command + n

5. 滚动到头部
command + 上方向键

6. 滚动到底部
command + 下方向键

7. 浏览器--关闭标签页
command + w

8. xcode--运行(run)项目
command + r

9. xcode--编译(build)项目
command + b

10. xcode--clean项目
shift + command + k

扫盲加扯淡——网友随笔画之云计算

今天在论坛看到网友自创的漫画,也许就是随笔画画吧, 且不说这位网友是否真的理解云计算(老实说,我也不清楚云计算是什么。),但确实是这位网友还是很有才的,能把自己的看法用这种形式表达出来,已经很难为 可贵了。

“我看了N多的相关介绍也找不到一个好的解释,应该说是我看不懂吧。

谁给个简单通俗点的解释啊

我看了大概就像是网络硬盘吧可以上传电脑备份和文件的还可以在线编辑本人啥的,没啥特别的啊不是已经实现了,只觉的现在大头就是想把他们规划下罢了,
没 啥特别的怎么那么多公司参与呢”
网络硬盘不是云计算。
————————
什么是云计算呢?
*开始,人们使 用算盘。
clip_image001[1]
后来,人们用电脑。
clip_image003[1]
再后来,人们有了网络。

clip_image004[1]

再后来,中国人口大爆炸,男女比例男的比女的多 3700万,这三千多万人没事干,都去上网。于是服务器吃不消了。
clip_image005[1]
于是人们就发明了牛逼的技术,用更好更多的服务器。
clip_image007[1]
再后来,人更多了,于是服务器也更多了。
clip_image009[1]

但事实上这样的效果并不好,过度繁重的结构加大 了网站设计和构架的难度,而且越是复杂的系统越是不稳定。有可能一个出问题,这样一个完整的系统就彻底挂掉。如果考虑到系统的崩溃情况,那势必要引入一个 更复杂的方案来保证不同的服务器可以做不同的支援。这是一个无解的循环,大量的计算资源被浪费在无限制的互相纠结中,很快到了瓶颈。
clip_image011[1]
人们想,那我不用这么乱七八糟复杂的系统,我上个*其牛逼 的服务器不就好了?可是,太贵了……而且*牛逼的也还没制造出来……
clip_image013[1]
于是人们突然想到了一个好办法。将服务器不是简单的链接起 来,说你是缓存,我是数据库。

而是并发使用系统资源,每个操作请求都可以按照一定的规则分割成小片段,分给不同的机器同时运算,每个机 器其实只要做很小的计算就可以,这是哪怕286机器都轻松完成的。*后将这些机器的计算结果整合,输出给用户。

对用户看来,他其实根本 面对的不是许多机器,而是一个似乎真正存在的计算能力巨大无比的单个服务器。

事实上这个服务器是不存在的。但它拥有着成千上万台服务器 的能力。

下面来看实例。

clip_image015[1]
clip_image017[1]

实际上过程没这么简单。哪怕是统计收集资料的过 程也会占据可怕的处理时间。这就将云计算的任务进一步划分下去,哪个服务器的CPU干什么,处理哪个任务段。 这个其实可以由算法安排成自动分配的。 总之,压榨每一个步骤的潜力,让一个任务被服务器集群们一起上,自然能飞速达成。

别忘了,云计算不是弄个两三台服务器就可以达成的。云 计算虽然和分布式计算有着深厚的渊源,但我们现在说的云计算基本上还是海量级别的服务器基数才能达成的。说成千上万台服务器*不夸张。

过 去我们做的是乘法。用户请求多,计算任务重,那么就把服务器叠加,这是一个计算能力的加法。

云计算走的另一个方向。我们在已有的计算资 源的基础不变的情况下,我们把用户的任务请求做除法,一个请求进来,我们把它变成许多个小任务段,*后汇总出去给用户一个完整的结果。
对用户来 说,他根本感觉不到里面哪个cpu做了什么处理,哪部分是哪部分拼接起来的,他就感觉自己面对一台5亿内存3亿GHZ的巨无霸电脑一样。

用 户对这样的计算莫名其妙,云里雾里的,于是他就把这个东西,叫做云计算。
clip_image019[1]
上面对百度的例子其实连雏形都不算。实际上照样有许多的节 点在里面。但总的意思上没错。工程师主要潜心的是算法,提高输出速度这些方面的考虑。除了初期架构和部署的麻烦外,以后考虑到主要还是搜索引擎本身的功能 实现了。

+++++++++++++++++++++++++++++
PS:以上纯为扯淡。我说的是真是假,哪里可信哪里可以 嘲笑,你自己看着办

 

 

云计算 之漫画图解

云计算如今已成为又一风靡的概念,什么是云计算?它究竟怎么工作?将为IT产业带来怎样的变革?

首先,我们看一下云计算的定义: 云端(cloud)就代表了互联网(Internet),通过网络的计算能力,取代使用你原本安装在自己电脑上的软件,或者是取代原本你把资料存在自己硬 盘的动作,你转而通过网络来进行各种工作,并存放档案资料在网络,也就是庞大的虚拟空间上。我们通过所使用的网络服务,把资料存放在网络上的服务器中,并 借由浏览器浏览这些服务的网页,使用上面的界面进行各种计算和工作。

clip_image021[1]

clip_image022[1]

  就像是不论 你在哪边都看得到天空,你可以在任何能够使用网络访问的地方,连接你需要的云计算服务,即便你不是在自己的电脑上

clip_image023[1]

clip_image024[1]

clip_image026[1]

看完漫画,你将 更加形象的了解云计算,深入云计算。

 

云计算细分之七大类商业 模式

云计算时下可谓风靡一时,正如Gartner咨询公司资深分析师Ben Pring所说:”云计算已经成为大家津津乐道的话题”。但问题是每个人看起来似乎都有自己不同的定义。

“云”是个大家熟悉的名词,但当它与”计算”相结合,它的含义就演变的泛泛而且虚无缥缈。一些分析师和厂商将云计算狭义的定义为效用计算(Utility computing)的升级版本:*基本的就是在网络范围内应用虚拟服务器。其他方面的应用也很广泛。

当我们考虑到IT的实际需求时,云计算的概念也逐渐清晰起来:那就是在不需要增加基础设施投入,新员工培训或者*新软件授权的前提下提升闲置资源性能和能 力的一种方法。云计算包含了任何通过网络实时提供订阅型(subscription-based)或者按照使用量付费(pay-per-use)的服务模 式,扩展了IT行业现有的能力。

云计算目前还处于萌芽阶段,有大大小小鱼龙混杂的各色厂商在开发不同的云计算服务,从成熟的应用程序到存储服务再到垃圾邮件过滤不一而足。不错,效用模式 基础架构供应商是提供多种服务,诸如Salesforce.com这样的SaaS(软件即服务)的供应商亦是如此。如今在很大程度上,IT业界必须个别的 去接受云服务,不过云计算的开发商和集成商已经开始初具规模。

根据不同的厂商,分析师和IT用户对云计算的看法,我们将云计算细分如下:

1. 软 件即服务(SaaS)

这种类型的云计算是采用multitenant架构通过网络浏览器将单个的应用软件推广到数千 用户。从用户角度来说,这意味着他们前期无需在服务器或软件许可证授权上进行投资;从供应商角度来看,与常规的软件服务模式相比,维护一个应用软件的成本 要相对低廉。迄今为止Salesforce.com是企业应用软件领域中*为知名的供应商,但是软件即服务(SaaS)在人力资源管理软件方面运用比较普 遍,还有诸如Workday这样的ERP软件供应商。谁又能预测来自Google和oho Office的软件即服务(SaaS)桌面系统应用软件是否会出现突然的飞跃呢?

2. 效 用计算(Utility computing)

这种想法本来并无新意,但这种类型的云计算有了 Amazon.com, Sun, IBM和其他从事存储服务和IT随需访问的虚拟机厂商的参与就焕发出了新的生命力。早期的企业主要将效用计算作为补充,不会应用在关键性任务需求上。但是 时至今日效用计算逐渐在数据中心开始占据一席之地。一些供应商向用户提供解决方案来帮助IT企业从商业服务器开始创建数据中心,诸如3Tera的 AppLogic和Cohesive Flexible Technologies的Elastic Server都提供这种随需服务。Liquid Computing公司的LiquidQ也有类似的服务,能帮助企业将内存,I/0,存储和计算容量通过网络集成为一个虚拟的资源池来使用。

3. 云 计算的网络服务

网络服务与软件即服务(SaaS)是密切相关的,网络服务供应商提供API能帮助开发商通过网络拓展 功能性,而不只是提供成熟的应用软件。他们的服务范围从提供分散的商业服务(诸如Strike Iron和Xignite )到涉及到Google Maps, ADP薪资处理流程,美国邮电服务,Bloomberg和常规的信用卡处理服务等的全套API服务。

4. 平 台即服务(Platform as a service)

平台即服务(Platform as a service)是软件即服务(SaaS)的变种,这种形式的云计算将开发环境作为服务来提供。你可以创建自己的应用软件在供应商的基础架构上运行,然后 通过网络从供应商的服务器上传递给用户。比如乐高公司(Legos)就是这么做的。但这些服务会受到厂商设计和容量的限制,因此用户就没有足够的自由。代 表公司包括Salesforce.com的Force.com和Coghead。

5. 管 理服务供应商(MSP)

管理服务是云计算*古老的形式之一,管理服务是面向IT厂商而并非*终用户的一种应用软件, 诸如用于电子邮件的病毒扫描服务或者应用软件监控服务。由SecureWorks, IBM和Verizon公司提供的管理安全服务就归为此类,还有目前被Google收购的Postini以云为基础的反垃圾邮件服务。其他的产品还包含桌 面系统管理服务,诸如CenterBeam和Everdream提供的产品。

6. 服 务商业平台

服务商业平台是软件即服务(SaaS)和管理服务供应商(MSP)的混合体,这种云计算服务提供了一种与 用户相结合的服务采集器。在贸易领域中应用*为普遍,诸如费用管理系统能允许用户在用户设定的规格范围内从普通平台上订购与所要求的服务和价格相符的旅游 产品或者秘书台服务,就好比一个自动化服务局,知名公司包括Rearden Commerce和Ariba。

7. 网 络集成

云基础服务的集成尚处于初始阶段。软件服务供应商OpSource目前推出了OpSource Services Bus,使用的就是被成为Boomi的云集成技术。软件即服务供应商Workday*近收购了这一领域中的另外一家公司CapeClear,这家 ESB(企业服务总线)供应商主要从事B-TO-B商业模式的服务。Grand Central公司也致力于向用户提供集成解决方案,日前被Google所收购。

如今,云计算的运用还不是非常广泛,对于云计算更精确 的描述可能是”天空运算”。同时,随着虚拟化和SOA在企业中的逐渐普及,这种想法也开始为大家所认同。可扩展的基础架构应该*终能将每一家企业都*为云 的节点。这是个长期可发展的趋势,但是不可否认的是,云计算在很长的时期内还将是业界争论的难点之一。

 

 

八大厂商的云计算理念

这些年 技术产业围绕云计算可谓热点不断,我们将来自8大顶尖*厂商的对云计算的观点逐一盘点并总结如下,希望从深度上让大家更多了解云计算。

 

 

2012年企业云计算及云服务开支将达420亿美元

据市场调研机构IDC称,当下美国的经济危机让那些投资云计算的IT公司看到了希望的曙光,这将给他们未来五年带来大幅度的增长。

基于对企业主管、CIO和其他业务领导的调查结果,IDC近日表示,到2012年在IT云服务上的开支将达到420亿美元,而这个增长部分是由于美国经济 危机以及波及全球范围的经济衰退所推动的。

IDC首席分析师兼高级副总裁Frank Gens发表声明称:“云模式为企业提供了一种获得IT和使用IT的更经济的方法,尤其是在经济衰退的情况下。这对中小企业来说非常重要,而中小企业也正 式任何经济恢复计划的主要目标。”

据IDC称,除了经济危机之外,还有其他三个市场力量正在推动向云计算和云服务的整体转移,其中包括在巴西、俄罗斯、印度以及中国等新兴市场的增长以及来 自这几个市场的收入,还有整个中小企业市场领域。

另外两个促进增长的因素是:帮助这些新市场增长IT收入的传统方式存在的不足;来自那些推出新的基于云技术业务和IT模式的厂商的竞争压力。

虽然IDC对云服务和云计算有着不同的定义,但是IDC认为两个领域都将实现大幅度的增长。IDC将云服务定义为人们用过因特网使用的业务和消费者服务, 云计算则是通过因特网向用户实时提供产品和服务的一种新兴IT配置和模式。

IDC预测,到2012年云计算开支将增长25%,到2013年的增长率将近1/3。

而且,到2012年用户在云产品上的开支将占到整个IT开支的10%,其中包括SaaS和云存储。

他说:“云服务将更多地应用到那些制造、金融、医疗、能源、媒体和其他行业的传统公司中,这些用户需要更好地向现有用户提供服务,同时也需要获得新的客 户、新的增长以及更高的利润。”

这*终自然而然地就要归结于推动云计算的发展,因为这些服务需要高可扩展性、经济实惠的、灵活的IT基础架构来提供支持。随着企业越来越多地依赖于通过网 路向用户提供服务,所以他们对服务器、存储、IP网络架构、系统管理软件等的需求也将有所增长。

倪光南:中国的机会在于云计算尚不成熟

clip_image059[1]

中国工程院院士 倪光南

    特别感谢电子学会召集这个会,云计算是科技前沿,很新。我们如果还搞以前的研究那就不行。云计算我感觉还是一个趋势,每家说的不完全一样,所以说明不成 熟。我觉得这个时机很好,中国一个省等于欧洲一个国家,我们现在有很多比较大的信息系统,我们现在需要探讨的就是能不能以省为单位构建自己的云?这片云不 能交给Google或者IBM?我们怎么构建自己的云?所以这是个机会,是个好东西但也不能炒作。

我们的网络系统变成云结构的,也很复杂,用户的系统很容易把云计算的优势发挥出来。但我们的大企业,政府大的信息系统,我们需要重视。比如重大专项可不可 以支持一下,我觉得适当的支持是没问题的。我们要有一些引导,新技术确实有一定的优势的,更加经济、更加高效。我们可以适当的启动一些支持,引导一下,也 是跟上潮流。从理论上来讲这个云是新的东西,所以整个应用系统都会改变。正好我们有机会拿出我们的方案,哪怕某一个应用上有自己的创新,*后我觉得可以成 立云计算专门委员会,可以去推动云计算的发展。

云计算——你 必须掌握的十大科普知识

云计算这个新名词*近甚嚣尘上,*近周围不少朋友都在谈,有必要写一个关于云计算的科普了。

一般的业界比较喜欢用一些新名词来体现自己的战略眼光和与对手的区隔。当几个月前google提出云计算的概念的时候,amazon说自己做的事情就是云 计算,IBM、intel、Sun都声称自己在云计算领域有深刻的计划。只可惜大家听了半天仍然不知道什么是云计算,依旧云里雾里知道这个与计算有关,干 脆就叫“云计算”吧。

到底云计算是什么呢?

这个问题不好回答,专业一点的回答是:云计算是依靠强大的计算能力,使得成千上万的终端用户不担心所使用的计算技术和接入的方式等都能够进行有效的依靠网 络连接起来的硬件平台的计算能力来实施多种应用。

非专业一点的回答就是,一堆你不需要搞清楚的硬件、软件在服务你。这堆硬件和软件构成的东东大的像朵云彩,又拥有*强的计算能力,这就叫云计算。

那么云计算是怎么来的?我们为什么又需要云计算?

1. 云计算的前身是grid computing。

说起grid computing 可能知道的人就很多了,就是传统的网格计算。网格计算就是将一个计算分割成片段,提交到网络系统上的各个计算机上(格点),工作做好进行汇总完成。比较流 行的软件例如globe bus + afs(提供存储映射服务)。不过grid一般都是用在学术界,例如cern的几个实验都采用了大规模的grid计算,例如进行新粒子的发现,需要处理t 级别的数据,单台计算机的运算和存储显然是不可能完成的,因此就必须使用网格计算了。

2. 云 计算有实实在在的例子么?

很幸运,我们还可以找到几个:google appengine,Amazon的S3+EC2系统都是云计算的雏形。

3. 云 计算的基础是什么?

*基本的需求:存储+处理器,当然,要支持无数的应用请求并负责保证存储和计算的性能,这两方面 都是挑战。

4. 我自己能够搭建一个云计算环境么?

当 然可以,我们可以利用开源的项目来搭建一个云计算环境:你可以利用hadoop+hbase+php(包装API)也许就实现一个简单的云计算环境。

5. 有没有更简单的例子?

也许一个分布式的邮件系统就是一个云计算的雏形:计算分 布在各个节点上,应用(邮件收发)通过一个统一的平台来处理,也算是符合云计算的定义了,不过只能支持*简单的一种固定应用。

6. 有没有复杂一点的例子?

google的云计算的逻辑关系:gfs 实现存储,bigtable 实现结构化、半结构化数据存储,map/reduce 实现将分布在各个节点上的计算和merage起来,剩下的就是进行job的管理器,管理工作的提交和触发,然后就是我们看到的appengine了。

7. 程序员应该关注哪些软件?

hadoop 项目应该是一个比较有前途的一个,当然powerset在hadoop之上的Hbase应该是一个更接近能够替代简单database的应用。

8. 我 们为什么需要云计算?

很简单,企业的雄心+个人电脑性能进展缓慢+我们处在数据指数膨胀的年代。当我们在 google上提交一个搜索的时候,会有成千上万的计算机被卷入这一个简单的一个查询过程中,未来的计算越来越庞大,到了我们干脆说“云”来替代其中的一 切细节的时候。

9. 云计算平台的下一步是什么?

云 计算api的标准化也许是一个*需要进行竞争的,可惜基础的技术平台的完善还需要时日,而且云计算未来也许会是免费的,这个遵从 “竞争导致利润下降”的原则,难度不是么?当更多的云计算平台出现的时候,然而跑在云上的应用却没有那么多,当然免费的午餐就会来。

10. 还有更有趣的么?

当然,你可以提供一个云计算,利用 google,amazon的云计算包含在你自己的云计算里,然后提供一个统一的api,或者也许未来的云计算会整合在一个,云里雾里,成为一个超大的云 计算平台,那个时候,也许自己家的电脑也可以接入云计算平台成为其中的一个计算的提供者。这个听起来很有意思,不过13年前就已经存在了,那个分布在全球 电脑上的寻找外星et的屏保就是一个云计算的平台,如果他们该行做云计算的话,估计能够盖过 google和amazon。

iOS--UILabel字体默认宽度和高度

今天发现了UILabel的一个属性:intrinsicContentSize,这个属性能返回UILabel对象的内容宽高(1行文本)。

宽度
接着发现UILabel对象的文字宽度是由文字的font属性和文字个数确定的,而且中文、英文、数字的宽度计算还不一样,我认为的一个原因是iOS默认的字体中,中文是等宽字体,而英文和数字并不是等宽字体。

中文
由于等宽,所以很好计算,包括全月角标点符号也是可以这么计算的,就是:每个中文文字的宽度 * 文字个数。文字个数就很好确定了,但每个中文文字的宽度是怎样确定的呢。通过一个小测试可知,中文文字的宽度是由UILabel的font属性确定的,font属性设置了多大号的字体,中文问题宽度就为多大号,即两者呈线性关系(PS:这个关系的前提是使用系统默认的字体。此外,若没有显式设置font属性的话,UILabel默认的字体大小为17),如:

label.font = [UIFont systemFontOfSize:12]; // 每个中文字宽度就为12
label.font = [UIFont systemFontOfSize:17]; // 系统默认字体大小,每个中文文字宽度为17
label.font = [UIFont systemFontOfSize:20]; // 每个中文文字宽度为20

数字
数字在系统默认字体内就不是等宽的了,所以宽度也会随着数字的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:
%title插图%num

  • 英文
    英文在系统默认字体中也是不等宽的,所以宽度也是会随着字母的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:%title插图%num%title插图%num%title插图%num

    高度

    UILabel的高度就貌似没有线性关系了:

    %title插图%num%title插图%num%title插图%num

iOS--xcodebuild命令记录

描述
build Xcode projects and workspace

xcodebuild可以编译打包Xcode项目内的一个或多个targets,或Xcode工作区或项目内的一个scheme。

要编译打包Xcode项目,需要在项目目录下执行xcodebuild命令(如目录包含name.xcodeproj文件)。如果目录下有多个项目文件,则需要使用“-project”来指定需要编译打包的项目。xcodebuild编译打包命令默认使用基本编译配置来编译项目内列出的*个target。

编译打包Xcode workspace,必须设置“-workspace”和“-scheme”参数来定义编译信息

xcodebuild [-project name.xcodeproj] [[-target targetname] … | alltargets] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]

xcodebuild [-project name.xcodeproj] -scheme schemename [[-destination destinationspecifier] …] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]

xcodebuild [-workspace name.xcworkspace] -scheme schemename [[-destination destinationspecifier] …] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]

xcodebuild -version [-sdk [sdkfullpath | sdkname]] [infoitem]

xcodebuild -showsdks

xcodebuild -showBuildSettings [-project name.xcodeproj | [-workspace name.xcodespace -scheme schemename]]

xcodebuild -list [-project name.xcodeproj | -workspace name.xcodespace]

xcodebuild -exportArchive -archivePath xcarchivepath -exportPath destinationpath -exportOptionPlist path

xcodebuild -erportLocalizations -project name.xcodeproj -localizationPath path [[-exportLanguage language] …]

xcodebuild -importLocalizations -project name.xcodeproj -localizationPath path

Options
1. -project name.xcodeproj
编译项目name.xcodeproj。如果目录中有多个项目文件,则此参数必须。

2. -target targetname
编译项目中指定的target。

3. -alltarget
编译项目中所有target

4. -workspace name.xcodespace
编译项目name.xcodespace

5. -scheme schemename
编译项目指定scheme的项目。如果是编译workspace的话,此参数必须。

6. -destination destinationspecifier
使用destinationspecifier来指定特定的目标设备。默认选择的是和对应scheme兼容的目标设备。

7. -destination-timeout timeout
找寻指定目标设备信息的超时时间,默认为30s。

8. -configuration configurationname
编译每个target时指定的configuration

9. -arch architerture
编译每个target时指定的architecture(系统架构)

10. -sdk [sdkfullpath | sdkname]
编译项目(project)或工作区(workspace)是所使用的SDK版本。参数为SDK的*对路径或SDK的名称。

11. -showsdks
列出Xcode识别的可用的SDK信息,其中包含可用在“-sdk”命令中规范的SDK名称。此命令不会执行build命令。

12. -showBuildSettings
列出一个项目(project)或者(一个工作区(workspace)和scheme)中的编译设置信息。此命令不会执行build命令。后面可跟参数“-project”或(“-workspace”和“-scheme”)

13. -list
列出一个项目(project)或一个工作区(workspace)中scheme的target和configuration信息。此命令不会执行build命令。后面可跟参数“-project”或“-workspace”

14. -enableAddressSanitizer [YES | NO]
15. -enableCodeCoverage [YES | NO]
16. -derivedDataPath path
17. -resultBundlePath path
18. -exportArchive
19. -archivePath xcarchivepath
20. -exportPath destinationpath
21. -exportOptionsPlist path
22. -exportLocalizations
23. -importLocalizations
24. -localizationPath
25. -exportLanuage language
26. action …

Specify
build
analyze
archive
test
installsrc
install
clean

27. -xcodefig filename
28. -dry-run -n
29. -skipUnavailableActions
30. buildsetting=value
31. -userdefault=value
32. -tooolchain [identifier | name]
33. -verbose
详情模式

34. -version
35. -license
36. -usage
37. Destinations

OS X
iOS
iOS Simulator
watchOS
tvOS
tvOS Simulator

38. Exporting Archives
39. Environment Variavles
40. Exit Codes
Example
xcodebuild clean install
清除build文件夹的内容,接着编译及安装Xcode项目中*个target。
xcodebuild -project MyProject.xcodeproj -target Target1 -target Target2 -configuration Debug
编译项目MyProject.xcodeproj中的target1和target2,编译过程是Debug模式。
xcodebuild -target My