手把手教你在CoreOS部署一个WordPress程序

摘要:你可能听过服务器操作系统CoreOS的名字,那你试过在上面建立个小程序么?今天,我们就来手把手地教你建立一个简单的WordPress程序。

CoreOS是一个专门为大规模服务器部署定制的Linux精简系统,它将操作系统和应用程序完全分离,从而降低操作系统和应用程序的耦合度,同时解决了现有Linux服务器在容器资源、权限管理方面出现的问题。就目前来说,CoreOS会是未来操作系统的发展趋势。

那你有没有亲自在CoreOS上部署一个应用程序呢?相信大多数人都没有过这样的经验,在CoreOS上建立一个应用程序可以说是非常辛苦及沮丧的。因为在开始建立程序之前你首先必须了解所有不同的技术。

下面,我们将手把手地教你来创建一个简单的WordPress应用程序,采用MySQL作为服务器,在CoreOS上运行。

1. 安装CLI来控制CoreOS

如果你的电脑是Mac,可以在本机安装fleetctl和etcdctl来控制CoreOS集群:

2. 安装本地集群

使用部署虚拟化开发环境Vagrant来安装本地集群很容易:

现在集群就安装好了,简单吧!下面就让我们来检查一下本地fleetctl:

真棒,它起作用了!3. 使用fleet部署一个应用程序

fleetctl命令可把应用程序部署到CoreOS集群的节点中,但要为fleet写服务文件真的是太糟糕了。幸运的是,你不必自己编写,你可以使用yaml format来生成服务文件:

fleetctl客户端工具使用的是etcd系统的Key/Value存储形式,以分享配置和服务发现。下面教大家如何把程序部署到集群中:

现在程序就运行了,但是还没有注册etcd的服务,幸运的是fig2coreos生成的服务发现文件可以帮助我们:

这样就完成了!如果你使用的是Vagrant 1.5及Vagrant Cloud,那么你就可以实现 WordPress程序并看到它可以实行了:

下面就是做好的效果图:

其实我们可以在CoreOS上能做很多事,今天这个只是基础,感兴趣的你可以动手试一试

 

原文链接:http://www.csdn.net/article/2014-03-26/2818984

服务器操作系统 CoreOS

传统的服务器操作系统,包括大多数Linux发行版,每隔几年都会更换。在这期间,开发者会不断用安全补丁和更新完善这个系统,但是不会进行特别大的改动,最终这个操作系统以及其上的软件会慢慢僵化。但是CoreOS的思想是成为一个随时可被替换的操作系统,甚至在这个替换的过程中,应用程序的运行不会被打断。

CoreOS有两个root分区,我们暂且称其为root A和root B。CoreOS会与更新服务进行交互,查找更新并自动下载可用的更新,如果初始状态下,系统在root A下启动,更新就会被安装到root B,重新在root B下启动系统就可以完成更新。这个个过程中,被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。

CoreOS为现代网络的服务器量身定做,Polvi团队对这个服务器操作系统做了最大的精简,所有附加的功能都被剔除了,并将操作系统和应用程序做了完全的分离。CoreOS核心思想是降低操作系统和应用程序的耦合度,使运行这些服务器的公司可以更快速、更廉价地更新自己的线上业务。

在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。Polvi说:“我们之所以能够持续、快速地更新操作系统就在于我们能够保证应用程序的持续运行。”

开发一个这样的系统比想象中要复杂的多,但是Google已经在ChromeOS上做了很多基础性的工作,并且一个现有的“集装箱”项目Docker也解决了很多软件构建的问题。CoreOS和ChromeOS一样,都基于Linux内核,运行container的方式也类似于其它Linux操作系统。

LibreSSL 替代OPENSSL

LibreSSL

开发者 OpenBSD计划
稳定版本 2.0.3 / 2014年7月21日;3天前
开发状态 进行中
编程语言 C,汇编语言
操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
类型 安全库
许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
网站 http://www.libressl.org
LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

历史编辑

在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

变化编辑

更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]

开发者 OpenBSD计划
稳定版本 2.0.3 / 2014年7月21日;3天前
开发状态 进行中
编程语言 C,汇编语言
操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
类型 安全库
许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
网站 http://www.libressl.org
LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

历史编辑

在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

变化编辑

更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]

智能时代的安全

安全市场的不透明导致了人们本身对隐私问题的担忧。软件技术智能化发展的同时,很多软件省掉了和用户打招呼就开始自作主张动用客户隐私数据。随着云技术的发展,本地安全和隐私越来越界限模糊。不只是360,我们的智能输入法,搜索引擎,广告供应商,邮箱,即使通讯软件以及电子商务系统等等,都在收集用户相关或不相关的隐私。进行云端统计和分析,然后针对性的优化服务或者针对性的窃取隐私。包括智能手机系统,要放弃智能和保证安全付出的代价就是不安全和复杂的操作。我们需要适当的智能化和个性化服务,但是我们不能容忍我们隐私的泄露与非法入侵。我们需要明确所谓的智能带给我们普通用户方便的同时,我们会付出哪些个人数据的代价并且有权申请不进行监控以及删除这些数据的权利

VPS虚拟化架构

现在国内外的VPS服务商非常多,每个服务商使用的VPS架构都不同。VPS属于虚拟化服务器,中文名:虚拟专用服务器。

常见的VPS虚拟化架构有多种:OpenVZ、Xen、Hyper-V、KVM、VMWare。

1、OpenVZ

OpenVZ(简称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用母服务器(母机)中的内核,模拟生成出子服务器(VPS,小机),所以,它经过虚拟化后相对于母服务器,性能损失大概只有的1-3%。

当然OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台以上的子服务器。因为他的虚拟架构关系属于:客户用多少,就扣除母服务器多少,所以OpenVZ架构的VPS较为便宜。但由于存在超售因素,如果服务商毫无休止的超售会导致服务器的性能急剧下降。

OpenVZ另一个特点是,它是直接调用母服务器的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。

OpenVZ适用人群:新手、低预算客户
OpenVZ注意事项:资源不是自己独有的,安装VPN服务需要注意《检测虚拟网卡支持》。
OpenVZ可用系统:Linux(不支持Windows)
OpenVZ代表商家:Buyvm.net

2、Xen

Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。

Xen是不能超售的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。

Xen-PV:半虚拟化,所以它仅仅适用于linux系列VPS,但它的性能损失比较少,大概相对于母机的4%-8%左右。
Xen-HVM:全虚拟化,可以安装windows或自由挂载ISO文件安装任意系统,由于是全虚拟化,所以性能损失较大,大概相对于母机性能损失8%-20%左右。

Xen适用人群:预算较为充足,且希望VPS有较高性能的客户
Xen注意事项:注意Xen-PV和Xen-HVM的区别。
Xen可用系统:Xen-PV:纯Linux,Xen-HVM:支持Windows、Linux等。
Xen代表商家:LOCVPS.COM

3、Hyper-V

Hyper-V是微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构,主要是因为其转为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。

Hyper-V完美支持Windows系统,包括32位和64位。如果大家选购Hyper-V架构的VPS,强烈建议使用Windows。

Hyper-V目前不能超售内存,但可超售硬盘,硬盘是根据客户使用情况扣除。一般来说,服务器的硬盘不会100%用完,这点不用担心。

Hyper-V适用人群:Windows系统爱好者
Hyper-V注意事项:Linux操作系统性能较低
Hyper-V可用系统:Windows、Linux

4、KVM

KVM是Linux下的全功能虚拟化架构,基于KVM架构的VPS,默认是没有系统的,可自己上传ISO或调用服务商自带的ISO手动安装系统。这个非常适合热爱DIY自己VPS的客户。

由于KVM架构全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对母服务器性能影响较大,所以基于KVM的VPS较贵,但KVM VPS相对其它架构的VPS较为自由。

KVM适用人群:折腾帝
KVM注意事项:虚拟化性能比Xen略低
KVM可用系统:Windows、Linux系列
KVM代表商家:hostgation.com

5、VMWare

VMWare是全球桌面到数据中心虚拟化解决方案的领导厂商开发的一款全功能完全虚拟化的软件。但由于VMWare用于开设类似VPS(含独立面板)的系列产品授权费用非常昂贵,所以大部分使用VMWare服务商会使用 VMware工作站(VMware Workstation)提供VPS。

使用VMware工作站(VMware Workstation)开设的VPS是无控制面板的,操作系统需要服务商手动安装,但现在网上寻找VMware Workstation的神KEY非常容易,对于VPS服务商来说节省不少成本。一般用于新创业的VPS服务商。

使用VMWare Workstation实质上的VPS可以超售,因为其和OpenVZ架构一样,子机用多少内存,就扣除系统多少内存,但如果物理内存不足时可能导致母服务器使用Windows虚拟内存。

VMWare适用人群:认真建站或挂机的客户
VMWare注意事项:无控制面板
VMWare可用系统:Windows、Linux系列

Python与Ruby对比

1.应用环境不同:

查阅的结果似乎对于这两种语言的评价都很好,在网络开发上的性能都很好。都很适用于快速的应用程序开发,开发的效率很高。

Python:

摘取了跟项目有关的一些应用方面的叙述

跨平台开发:

Python 以中立方式支持不同的一系列平台,如果用户使用的系统包含不同的平台,使用 Python 开发应用程序则再好不过;它这种适应性也可以为系统预留使用其它工具的可能。对于频繁更换平台用户,Python 是个理想的选择。

为最终用户提供软件服务时,Python 也是个备选方案,可以避免同时用不同应用软件编程的时间和费用。

互联网程序设计

Python 带有的标准模块可以对网络插槽进行初级和协议级别的通讯,比如,如果要从 POP 服务器上读取电子邮件,Python 随带的库模块可以做到。另外, Python 还支持 XML、HTML和 CGI 库文件,所以利用它可以解析用户输入的需求,并通过网络服务器产生最佳质量的成果。

程序员还可为拥有 Python 内置解释器的 Apache、Unix 和 Windows 网络服务器编译模块。基于 CGI 程序的功效,可以很方便地执行 Python 语句而不用单独装载。 

针对于python的网络编程,有一本很好的书:《python网络编程基础》

这本书全面介绍了使用Python语言进行网络编程的基础知识,主要内容包括网络基础知识、高级网络操作、Web Services、解析HTML和XHTML、XML、E-mail服务、FTP、使用Python操作数据库、SSL、几种服务器端框架(包括Socket服务器、SimpleXMLRPCServer、CGI和mod_python),以及多任务处理(包括Forking、线程和异步通信)等。本书实用性强,共提供了大约175个实例,6600行以上的代码,是帮助读者全面而快速地学习Python语言、编写网络程序的最佳实践。 

Ruby:

功能强大,面向对象的脚本语言,可以使您方便快捷地进行面向对象编程,有时使用像Smalltalk、Eiffel或C++这样正式的面向对象语言来开发一些小项目显得有点”小题大做”,而Ruby刚好可以满足这些面向对象编程的需求.当然了,您也可以使用Ruby进行普通的面向过程编程。

Ruby支持很多网络协议,不管是高层的还是底层的。ruby提供了一些基本类,让你可以使用TCP,UDP,SOCKS等很多协议交互,而不必拘泥在网络层。这些类也提供了辅助类,让你可以轻松的对服务器进行读写。进行网络编程也是很不错。

2.开发运行环境

Python:

相比之下,就是没有一个很强的集成开发环境。有人说开源软件相对于收费的那种软件好用一些。

用得较多的几个:

Python自带的idle:

不是python的IDE中最好的……

PythonWin :

使用起来非常得心应手(就像使用 Windows 那样舒服)。它有个好用的编辑器,包括代码合并、语法标签高亮显示以及代码自动完成特性。PythonWin 和有些 IDE 一样,不包含任何类型的表单设计器;但它提供一个优秀的调试器,具有监视、代码检查、交互调试窗口、断点、和其他调试器该有的功能。最重要的是,PythonWin 很稳定,尽管有时候在 Win95r2 系统上使用时会奇怪地“停止响应”。界面上来说,PythonWin 比较简单,但非常吸引人,很好的运用了可嵌入和可对接的元素(我有点偏爱 Idle 风格的 “many windows everywhere”,它也为其他许多 IDE 所采用的)。PythonWin 还集成了 ActiveState 的 HtmlHelp 版本的 Python 说明文档和 PythonCOM。

eclipse的pydev插件,eclipse+pydev

Pydev 基于Eclipse的,非常棒的Python环境,改进速度非常快。提供的一些功能

UliPad :

一个编辑器,你可以用它来进行你的文档写作,编程开发。它使用 Python 编程语言开发,用户界面基于 wxPython 。它除了想要完成一般编辑器的常用功能之外,最主要是想实现一种方便、灵活的框架,开发者可以方便地开发新的功能。而且有编程经验的用户还可以针对日常工作中的特别问题编制处理的插件,从而使之与自已的日常工作紧密结合起来。由于使用的是 Python 这种功能强大的编程语言,你可以方便地对本软件进行修改,从而满足自已的需要。

UliPad 支持代码着色、智能补全、代码调试、Python类浏览、代码片段、Ftp功能、目录浏览等等强大功能,其 Doc 目录下的文档更是非常丰富,是你编写 Python 的绝世好帮手!
系统要求:

python 2.4+

wxPython 2.6+ 

我们最后选择的是UliPad,还是挺棒的。

Ruby:

Ruby有极好的高级调试器。

可以用netbeans的ruby插件或eclipse的ruby插件

Eclipse下安装开发环境的大致过程:

1. 安装 Ruby 1.8.6 One-Click Installer

2. 将 Eclipse Platform Runtime Binary 压缩包解压到某个目录。
      3. 将 Ruby Development Tools 压缩包的内容解压缩到 Eclipse 相应目录下。 

运行环境在其官方网站上下载相应的版本再安装即可,windows下面的安装较为简单,双击运行即可安装。

 

3.可移植性

Python:

由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC!

Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。

可以安装一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用.在Symbina智能手机上支持C++和JAVA开发的两类程序,装上Python后,也就可以支持众多以Python开发的各种程序了。对于普通的手机用户,我们不用了解太多,只是安上Python这个平台就可以了,可以让我们的手机支持更多以Python开发的程序。目前在Symbian手机上已经有相当多的Python开发的程序,也都是比较实用的。 

Ruby:

它大部分是在Linux上开发的,但是可以在很多类型的Unix, Dos, Windows95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2等系统上运行。

关于ruby跟手机开发的资料很少,有在windows CE上运行的版本,但是好像现在相关的资料还特别少,而且安装失败、编译不通过的例子偏多。日文页面上有少量的日文介绍。

然后针对于Python跟Ruby在朋友的建议下还给出了如下一些参考意见,在此感谢他:

1.  Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。Python语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。Python在其他部分的设计上也坚持了清晰划一的风格,这使得Python称为一门易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。同一个问题用Python几个人分别写写出来的代码会很相近。但Ruby则设计思想不一样,用它写出来的程序太过于灵活,不同的人写出来可能相差会很大。

2.  Ruby英文文档极度缺乏,中文文档就更不用说。Python社区相对成熟,也有一大堆的资料。

   最后给出Python的几个网站

     1.http://www.python.org/ – Python 的官方网站
       2.http://python.cn/ – Python 中文社区 
       3.http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython – Python For Dot Net 的网站

向爵士致敬:庆祝万维网成立21周年

二十一年,一个说长不长、说短不短的时光。21年前,也就是1991年时,素有“魔术师”之称的湖人队控球后卫埃尔文-约翰逊宣布它感染了艾滋病病毒;世嘉公司(SEGA)推出了第一款以竞速为主的游戏《刺猬索尼克》;蒂姆•伯纳斯•李宣布了万维网项目并在lt.hypertext新闻组中发表了简短的介绍,于是“info.cern.ch”域名就这样诞生了。蒂姆•伯纳斯•李凭着那一时的灵感改变了整个时代,将我们带入了信息交流的新世界。万维网最初,作为一个学生或许还不是真正了解什么是万维网,只知道是与互联网相关的。尽管不是很正确,但是却从中得知网络给我们带来了大量的文本文件和其他资源,通过超链接和URL链接从浏览器上访问Web服务器的网页,多姿多样的生活也因此拉开了序幕。如今在庆祝万维网二十一周年之际,更应该向万维网的创造者蒂姆•伯纳斯•李致敬。由于其突出贡献,蒂姆•伯纳斯•李在2004年被封为爵士。在伦敦奥运会开幕式期间,蒂姆•伯纳斯•李爵士还现身并接受了全世界的致意。万维网的出现,给我们的生活带来了太多太多,它创建了一个全球性的市场,不管你是企业还是消费者都可以参与进来,在里面你可以与他人交流与共享信息,直接推动了企业的产品和服务。一个网站成功的前提是规范虽然万维网创建起来了,但是仅有一个网站是不够的,还需要管理人员,伯纳斯 – 李爵士显然也意识到了这一点,于是在麻省理工学院又成立了W3C理事会,汇集成员的意愿创建了一些标准和建议,以提高网站质量。另外由于蒂姆•伯纳斯•李坚持免费和开放的原则,对自己的工作成果,既不申请专利,也不征收版税,因此W3C理事会制定了免版税标准,使任何人都可以免费进入。向爵士致敬即使已经过去了21年,但是对于蒂姆•伯纳斯•李爵士作出的贡献,都值得我们向他致以深深的敬意。他——真正的互联网缔造者。Viacmswire本文由最科技金鑫编译,转载请注明出处:http://www.zuitech.com/13719.html

PHP中魔术方法的声明属性public visibility

在调试一段程序,学习封装的过程中,会出现
Warning: The magic method __get() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 8

Warning: The magic method __set() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 21
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性的时候,自动调用了这个__get方法
姓名:张三
在直接获取私有属性的时候,自动调用了这个__get方法
性别:男
在直接获取私有属性的时候,自动调用了这个__get方法
年龄:20

[php]

<?php
class Person
{
private $name;
private $sex;
private $age;
//__get()方法来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性的时候,自动调用了这个__get方法<br>";
if (isset($this->$property_name))
{
return ($this->$property_name);
}
else
{
return (NULL);
}
}
//__set方法设置私有属性
private function __set($property_name,$value)
{
echo "在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
}

$p1=new Person();
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员的属性值
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
?>

[/php]

对于PHP中的魔术对象中的__get() 和__set(),很多教程中出现类似的问题。主要原因为function __get()方法设置为了private私有属性。PHP中能识别并正确处理,但是它会警告我们function __get()和function  __set()必须具备公有属性。即默认的不加private或者增加public,即不再出现该提示。

Php类中构造函数__construct的双下划线之谜

折腾了很久,写一个类实例化后,总是出现无法实例化的情况。对照源码了N次,总觉得没差错。后来直接拷贝源码进去看,才发现__construct竟然要双下划线。切记切记。

[php]

<?php
class Person
{
var $name;
var $sex;
var $age;

function __construct($name, $sex, $age)
{
//通过构造方法传进来$给成员属性$this->name赋初始值
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
function say()
{
echo "我的名字叫:".$this->name."性别:".$this->sex."我的年龄是:".$this->age.'<br>’;
}
}
//创建三个对象,传入不同实参

$p1=new Person("张三","男",20);
$p2=new Person("李四","女",30);
$p3=new Person("王五","男",40);

//访问对象的说话方法
$p1->say();
$p2->say();
$p3->say();
?>

[/php]

折腾在Cent OS和Dedbian间

最近这样一个VPS,拿出不怕死的折腾精神和万能的百度谷歌。一番折腾。曾经一段时间也在VM虚拟机上正了CENTOS,下面就说说二者的一点感觉。

首先,我们测试的是两者作为WEBSERVER使用。环境是架构简单的LNMP。使用的是http://lnmp.org 的LNMP安装包。

整体来说吧,CENTOS和DEBIAN都作为LINUX的分支,有着各自的特色。

DEBIAN作为最遵循标准开源系统标准的LINUX,具备完善的社区支持,发行版本稳定可靠,资源使用率高,占用率也低。一个256M的小VPS正个DEBIAN作为WEBSERVER绰绰有余。

CENTOS作为REBHAT LINUX的社区开发板,其实绝大多数东西还是来自REDHAT 的开源程序和内核,重新编译发行的一个版本。但是作为社区开发版本,CENTOS的开发相对缓慢和陈旧。但是抵不住人家亲戚是贵族,所以大多数东西还是稳定可靠,使用安全。但是也拜REDHAT所赐,这些各种方便和稳定付出的代价就是相对系统资源占用较高(有点像WINDOWS)。

在我的小VPS上安装了各种DEBIAN版,基本上没出太大问题,装个LNMP套件,内存占用才50M左右;换成CENTOS时候发现,它根本不让低于512内存的机器安装,后来干脆一狠心花银子把内存升到512M。装上CENTOS,还没装LNMP呢,内存以及使用了80M,装上LNMP差不多内存120了。不过相对来说稳定性,我选DEBINA,安全性我认为CENTOS更安全成熟,很多人特别是国人,多爱CENTOS,对于VPS WEBSERVER我还是建议换成DEBINA。

DEBINA对内存的使用控制你的比较好,对于瘦硬件环境使用起来,还是得心应手。CENTOS安全,但是附加的东西较多,方便安全实用,不钻牛角尖的人,富硬件的环境下,非常适用。