中小企业网站CMS的最佳数据库选择-SQLite

SQLite 是一个类似Access的轻量级数据库系统,但是更小、更快、容量更大,并发更高。为什么说 SQLite 最适合做 CMS (内容管理系统)呢?并不是说其他数据库不好, oracle、MySQL、SQLServer 也都是非常优秀的 DBS,只不过他们设计目标不同,特性不同,所以只有更适用某个应用场景,没有绝对的好坏之分。

归纳的中小型站点的CMS的特点如下:

1、数据量不超过10万
2、日页面访问量不超过10万
3、 一部分网站全部生成静态页面,一部分网站实时查询数据库动态访问
4、 站长不懂技术,不懂得复杂的数据库维护,只会用 FTP 管理网站
5 、个人站点基本上是一个人管理,一般情况下只有一个人在访问后台,没有并发
6、 对数据库来说是读多写少,只有在站长访问后台的时候才会写入
7、 多运行于虚拟主机,大部分PHP主机均同时支持MySQL,小部分PHP主机需要单独购买MySQL,PHP+MySQL的主机价格较PHP主机价格高。(以万网为例:最便宜的PHP空间780元,最便宜的PHP+MySQL的PHP空间1150元)
8、 多数中小站点的HTTP服务与MySQL部署在同一服务器上

SQLite 的优点在中小网站CMS应用场景下表现突出:

1、与MySQL相比,它更彻底的免费,并且没有任何使用上的限制
2、非常小巧,PHP5以上版本中无需任何配置即可支持SQLite
3、无需单独购买数据库服务,无服务器进程,配置成本为零
4、整个数据库存储在一个单个的文件中,数据导入导出备份恢复都是复制文件,维护难度为零
5、读速度快,在数据量不是很大的情况下速度较快,更重要的是:省掉了一次数据库远程链接没有复杂的权限验证,打开就能操作

SQLite的缺点在中小网站 CMS 应用场景下被规避:

1、并发低 动态访问时当访问量不超过10万PV的时候,SQLite 超过 Access 的并发能力已经绰绰有余;生成静态页后更无需考虑数据库的并发问题
2、在大数据量的情况下表现较差 但是中小站点一般情况下数据量不超过10万,而SQlite 在 100 万数据量之下表现还不错,因为省掉了对数据库服务器的远程连接甚至会更快
3、写入较慢 默认配置下的 SQlite 的写入速度比MySQL慢了很多,但是 CMS 应用场景的写入操作较少。在插入新文章的时候基本感受不到慢。集中的写数据库操作只有在安装的时候会出现,不过只出现一次,可以忽略
4、为已有的表加索引较慢 但是在中小站点CMS中不会有这样的需求,可以忽略
5、无法将 MySQL 部署到与前端机不同的服务器上,但是中小站点也没有分开部署的需求
综上所述:在中小站点 CMS 的应用场景下 SQLite 能最大限度的降低建站成本,降低维护难度,又很好得规避了自身的缺点。所以我认为未来支持 SQLite 的 CMS 系统一定会成为主流。

Linux中dd命令详解

一、dd命令

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

参数注释:

  1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
  2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
  3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes:同时设置读入/输出的块大小为bytes个字节。
  4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
  5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
  6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
    注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
  7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
  8. conv=conversion:用指定的参数转换文件。
  • ascii:转换ebcdic为ascii
  • ebcdic:转换ascii为ebcdic
  • ibm:转换ascii为alternate ebcdic
  • block:把每一行转换为长度为cbs,不足部分用空格填充
  • unblock:使每一行的长度都为cbs,不足部分用空格填充
  • lcase:把大写字符转换为小写字符
  • ucase:把小写字符转换为大写字符
  • swab:交换输入的每对字节
  • noerror:出错时不停止
  • notrunc:不截短输出文件
  • sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。 继续阅读

对象不支持此属性或方法: 'Response.CharSet'

对象不支持此属性或方法: 'Response.CharSet'给客户开发的一个web系统,本来计划是在IIS下运行,无奈客户那边的电脑操作系统IIS无论怎样都安装不了,总不能要求客户为了这个web系统重新安装操作系统吧?所以想到了NetBox。 

开发的时候都是在IIS下进行调试,然后用NetBox运行,基本上一切正常,客户使用了一段时间后,提出增加一个新的功能,于是用ajax增加了一个新功能,NetBox下运行出错,
错误提示:
运行时错误 '800a01b6'
对象不支持此属性或方法: 'Response.CharSet'
---------------------------------------------------------------------
(百度一下,还有很多人遇到同样的错误)
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Response.Charset'   

检查出错代码:
Response.CharSet    =    "GB2312"  

这行代码主要是为了解决ajax用get获得数据时,中文乱码的问题。
删除这行代码后netbox正常运行,但是ajax返回的中文数据成了乱码。
说明 NetBox不支持 Response.CharSet 。

打开netbox的使用手册,依次展开:
对象参考 → Response 对象 → Response 方法
AddHeader 方法
AddHeader 方法用指定的值添加 HTML 标题。该方法常常向响应添加新的 HTTP 标题
语法
Response.AddHeader name, value
参数
name
新的标题变量的名称
value
存储在新的标题变量中的初始值
注释
为避免命名不明确,name 中不能包含任何下划线字符 (_)。ServerVariables 集合将标题中的下划线字符解释为反斜杠。例如,下面的脚本使服务器查找一个名为 MY-HEADER 的标题名。 


示例
下面这个示例使用 AddHeader 方法要求客户端使用 BASIC 验证。 


注意 前面的脚本仅通知客户端浏览器使用哪个验证。若您在 Web 应用程序中使用该脚本,则一定要启用 Web 服务器的 BASIC 验证。 

于是将
Response.CharSet    =    "GB2312"
替换成:
Response.Addheader "Content-Type","text/html; charset=gb2312"

NetBox环境下ajax用get获取数据,中文乱码的问题解决!

Linux上读写挂载NTFS和FAT32分区

NTFS 具体实现的内部细节被保密,因此这导致第三方开发者试图制作处理 NTFS 的工具变得异常困难。
Linux中完整并安全的对 NTFS 的读写功能由 NTFS-3G 驱动程序提供。该驱动程序包含在绝大多数Linux发行版中。

同时也存在过时的,大部分仅只读的解决方案:

Linux 内核 2.2:从版本 2.2.0 开始,可以读取 NTFS 分区。
Linux 内核 2.6:包含一个由 Anton Altaparmakov(来自剑桥大学)和 Richard Russon 编写的驱动程序,该驱动程序支持读取文件以及在部分情况下的改写文件和调整文件大小。
NTFSMount:使用 ntfsmount 可以通过一个用户级驱动程序对文件和目录进行有限的读写操作。[35]
Tuxera NTFS: 高性能可读写上业内核驱动, 主要是针对嵌入式设备, 他还开发了开源的 NTFS-3G 驱动.
NTFS for Linux:由 Paragon 提供的对 NTFS 提供完整读写支持的商用驱动程序。
Captive NTFS:一个使用 Windows 自身的驱动程序“ntfs.sys”并进行简单封装的驱动程序。

请注意,上面所有三个用户级别驱动程序(NTFSMount、NTFS-3G 以及 Captive NTFS)都基于用户空间文件系统(FUSE),该系统是一个用于在用户空间和内核代码间通讯以获取或保存数据的 Linux 内核模块。技术上面所有的驱动程序(除了 Paragon NTFS for Linux)都是开源(GPL)的。由于 NTFS 内部结构非常复杂,内置的 2.6.14 内核驱动程序和 FUSE 都不允许修改被认为是不安全的卷,以避免发生损坏事故。

Debian系统的NTFS文件系统驱动程序:
1、ntfs
安装方法:无需安装,内核集成
使用方法:
1、手动挂载:
mount -t ntfs /dev/sda1 /mnt/windows
2、开机挂载(vim /etc/fstab)
/dev/sda1 /mnt/windows ntfs ro,user,uid=1000,gid=1000,dmask=0222,fmask=0333 0 0
Linux内核的NTFS驱动程序,提供只读访问。

2、ntfs-3g
通过FUSE用户空间的NTFS驱动程序,提供读取和写入访问。

安装方法:
apt-get install ntfs-3g
使用方法:
1、手动挂载:
mount -t ntfs-3g /dev/sda1 /home/shares/public/disk1
2、开机挂载(vim /etc/fstab)
/dev/sda1 /home/shares/public/disk1 ntfs-3g rw,uid=1000,gid=1000,dmask=0002,fmask=0003 0 0
NTFS-3G采用FUSE(用户空间文件系统)提供微软Windows所使用的NTFS文件系统的支持。它可以:
*创建,删除,重命名或移动文件,目录,硬链接,和流;
*读写文件,包括流,稀疏文件,和透明压缩文件;
*处理符号链接,设备和FIFO等特殊文件;
*提供标准的管理文件所有权和权限,包括POSIX的ACL。

3、ntfsmount
安装方法:下载地址
使用方法:
1、手动挂载:
ntfsmount /dev/hda1 /mnt/ntfs -o locale=be_BY.UTF-8
2、开机挂载(vim /etc/fstab)
/dev/hda1 /mnt/ntfs fuse.ntfs locale=be_BY.UTF-8 0 0
通过FUSE用户空间的NTFS驱动程序,提供读取和写入访问。

Debian系统的FAT32文件系统挂载(可解决FAT32格式在Linux下正常显示长文件名):
使用方法:
1、手动挂载:
mount -t vfat /dev/sda2 /home/shares/public/disk2 -o utf8=1
2、开机挂载(vim /etc/fstab)
/dev/sda2 /home/shares/public/disk2 vfat umask=0000,utf8=1 0 0
3、卸载
fusermount -u /mnt/ntfs

参考资料:

http://zh.wikipedia.org/wiki/NTFS

http://wiki.debian.org/NTFS

http://www.tuxera.com/community/ntfs-3g-download/ (NTFS-3G官方主页)

http://manpages.ubuntu.com/manpages/hardy/man8/ntfsmount.8.html

HTTPS的七个误解

开发网页的时候,往往需要观察HTTP通信。

我使用的工具主要有两个,在Firefox中是Firebug,在IE中是Fiddler。但是,一直听别人说,付费软件HttpWatch是这方面最好的工具。

前几天,HttpWatch的官方网志刊登了一篇好文章,澄清了一些HTTPS协议容易产生误解的地方。学习之后,我增长了不少网页加密通信的知识。

我觉得这篇文章很实用,值得留作参考,就翻译了出来。 继续阅读

Pinterest架构:两年内月PV从零到百亿

Pinterest正经历了指数级曲线般的增长,每隔一个半月翻翻。在这两年里,Pinterest,从 每月PV量0增长到10亿,从两名成立者和一个工程师成长为四十个工程师,从一台MySQL 服务器增长到180台Web 服务器(Web Engine),240台接口服务器(API Engine), 88台MySQL 数据库 (cc2.8xlarge) ,并且每台DB有一个备份服务器,110台Redis 实例服务(Redis Instance),200台 Memcache 实例服务(Memcache  Instance)。

令人叹为观止的增长。想一探Pinterest的传奇吗?我们请来了Pinterest的两位创立者Yashwanth Nelapati 和 Marty Weiner,他们将以 Scaling Pinterest为题讲述关于Pinterest架构的充满戏剧化的传奇故事。他们说如果能在一年半前飞速发展时能看到有人做类似题材的演讲的话,他们就会有更多的选择,以避免自己在这一年半里做出的很多错误的决定。

这是一个很不错的演讲,充满了令人惊讶的细节。同时这个演讲也是很务实的,归根结底,它带来了可让大家选择的策略。极度推荐

这篇演讲中有两个我最为看重的经验:

1.强大的架构在处理增长时通过简单增加相同的东西(服务器)来应对,同时还能保证系统的正确性。当遇到某种(性能)问题时,你想通过砸钱来扩容指的是你可以简单增加服务器(boxes)。如果你的架构能够做到这一点,那它就如金子一般强大而珍贵!

2. 当某些(性能问题)快到极限时大多数技术都会以他们自己的方式失败。这导致他们在审核工具时要考虑以下一些特性:成熟,好且简单,有名气且用的人多,良好 的支持,持续的优异性能,很少失败,开源。按照这样的标准,他们选择了:MySQL, Solr, Memcache, and Redis,放弃了Cassandra ,Mongo。 继续阅读

禁止WordPress将半角符号转换为全角符号

WordPress处于安全考虑,会自动将文章中的英语标点符号(半角) 转换成 中文标点符号(全角),以防止恶意脚本运行。虽然增强了安全性,但是对于英文站点来说,是个不小的麻烦。

[全角举例]AabB1234@$%^&*;,。:
[半角举例]AabB1234@$%^&*;,.:

解决办法:

  • 打开/wp-includes/formatting.php,找到以下4行代码:

// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

将黄色两行删除,或者 在前面加上 //,如下:

// static strings
//$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

保存即可,其实就是禁用Wordpress默认的 将半角转化为全角 的功能。

查看Linux系统的系统和版本信息

查看centos内核的版本:

1)
[root@localhost ~]# cat /proc/version

Linux version 2.6.18-194.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:14 EDT 2010

2)
[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

3)
[root@localhost ~]# uname -r

2.6.18-194.el5

继续阅读

Debian设置IP,DNS,VNC

IP地址设置:
vi /etc/network/interface
设置启动系统激活设备
auto eth0
A、设置网卡eth0设置为DHCP类型
iface eth0 inet dhcp

B、设置为静态IP。
iface eth0 inet static
设置IP地址、子网掩码、网关

address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1

设置DNS(必须设置.否则无法访问任何URL)
vi /etc/resolv.conf
修改为你所需要设置的DNS的ip地址。

nameserver 8.8.8.8
nameserver 202.96.128.86

重启系统后即可生效。

安装VNC远程桌面服务。
apt-get install tightvncserver tightvnc-java
启动VNC服务
vncserver -depth 24 -name Josen -httpport 9001 -geometry 1024x768 :1
执行这个命令后会提示输入密码,输入两次一样的即可。
参数解释:
1. -depth 24 使用24位颜色,这里一般用16或者24
2. -name aru_desktop 桌面名字,这个参数并非必要,可以随便起个喜欢的名字
3. -httpport 9001 使用浏览器连接的端口,请用1024以上的端口,如果是多个用户都开vnc server,那每个用户要使用不同的端口
4. -geometry 1024×768 桌面分辨率,根据要求调整
5. :1 会话数字,同3
第一次运行会要求你输入一个密码,这个密码和你的ssh登录密码是分开的,当然你也可以用同样的密码

关闭命令:
vncserver -kill :1
:1 是会话数字,和启动的会话数字一致

如果是第二次启动vnc server的话就只执行:vncserver 命令即可
# vncserver

CentOS命令行安装桌面环境并开启VNC远程桌面

多数情况下我们需要最小化安装,这样就没有桌面了。所以,我们需要在命令行安装桌面环境。

一、YUM安装桌面

#yum groupinstall 'X Window System' -y
安装GNOME桌面环境(CentOS 5.x)
#yum groupinstall 'GNOME Desktop Environment' -y
安装GNOME桌面环境(CentOS 6.x)
#yum groupinstall 'Desktop' -y
如果安装KDE桌面环境
#yum groupinstall 'KDE (K Desktop Environment)' -y

卸载GNOME桌面环境
#yum groupremove "GNOME Desktop Environment"
卸载KDE桌面环境
#yum groupremove "KDE (K Desktop Environment)"

二、安装中文支持 继续阅读

从小型网站到超大规模网站的MySQL参考架构

Oracle发布了《面向大规模可伸缩网站基础设施的MySQL参考架构》白皮书,针对将MySQL用作数据存储的不同类型和不同规模的网站给出了推荐的拓扑结构。

根据不同的服务规模:用户和会话管理、电子商务、分析类应用 (多结构数据)和CMS(元数据),这份白皮书给出了4个参考架构:

请注意,这里给出的指导方针只是基本建议,实际应用中需要根据读写模式、负载平衡和所用的缓存机制等因素进行调整。 继续阅读

国外PHP大师给初学者的8条建议

如果你还不清楚PHP是什么,可以留意下那些你天天使用的web应用,例如Facebook、Wordpress都是用PHP构建起来的。

学习一门新语言可能会是一件很艰巨的任务,最好的办法就是借鉴前辈的经验已达到事半功倍,下面就是为PHP新手们准备的一些经验餐(笔者也还是新手)。

如果你是个PHP开发者,无论是新手还是高手,笔者都希望你能在此讨论下自己对PHP的想法或者技巧。

继续阅读

回顾塞班简史:一个时代的终结

曾经辉煌的塞班手机联盟
曾经辉煌的塞班手机联盟

尽管谁都知道早晚会有这么一天,但它真的到来的时候,所有人仍会唏嘘不已。

北京时间1月24日晚间,诺基亚在2012年第四季度财报中确认,去年发布的808 PureView是最后一款Symbian(塞班)系统手机,这意味着,塞班系统已经死亡。

塞班,这个曾经辉煌无限的智能手机操作系统,终于走到了它的尽头。此时,有必要回忆一下这个陪伴无数手机玩家一起成长的手机操作系统。 继续阅读

Mysql 查看连接数,状态

有些时候,我们需要查看MYSQL当前有哪些连接,比如IP,用户等信息。在命令行和phpmyadmin上执行如下SQL命令即可。

命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。

列出当前连接和状态(默认只列出前100条)
mysql> show processlist;

列出所有连接
mysql> show full processlist; 继续阅读

比尔盖茨经典的十句话

1 、社会充满不公平现象。你先不要想去改造它,只能先适应它。(因为你管不了它)。

2 、世界不会在意你的自尊,人们看的只是你的成就。在你没有成就以前,切勿过分强调自尊。(因为你越强调自尊,越对你不利)。

3 、你只是中学毕业,通常不会成为CEO,直到你把CEO职位拿到手为止。(直到此时,人们才不会介意你只是中学毕业)。

4 、当你陷入人为困境时,不要抱怨。(你要悄悄地振作起来,重新奋起)。

5 、你要懂得:在没有你之前,你的父母并不像现在这样“乏味”。你应该想到,这是他们为了抚养你所付出的巨大代价。(你永远要感恩和孝敬他们,才是硬道理)。

6 、在学校里,你考第几已不是那么重要,但进入社会却不然。不管你去到哪里,都要分等排名。(社会、公司要排名次,是常见的事,要鼓起勇气竞争才对)。

7 、学校里有节假日,到公司打工则不然,你几乎不能休息,很少能轻松地过节假日。(否则你职业生涯中一起跑就落后了,甚至会让你永远落后)。

8 、在学校,老师会帮助你学习,到公司却不会。如果你认为学校的老师要求你很严格,那是你还没有进入公司打工。因为,如果公司对你不严厉,你就要失业了。(你必须清醒地认识到:公司比学校更要严格要求自己)。

9 、人们都喜欢看电视剧,但你不要看,那并不是你的生活。只要在公司工作,你是无暇看电视剧的。(奉劝你不要看,否则你走上看电视连续剧之路,而且看得津津有味,那你将失去成功的资格)。

10 、永远不要在背后批评别人,尤其不能批评你的老板无知、刻薄和无能。(因为这样的心态,会使你走上坎坷艰难的成长之路)。