最新文章

关于开源软件的销售问题

自由不是无代价的,自由软件也不一定都是免费的。Simon Phipps是Open Source Initiative的前任总裁,目前是Open Rights Group和Open Source for America的董事会成员。以下是他对于销售开源软件的看法。 用户是否需要向开源软件付费,开源软件是否可以收费,是开源社区的一个热点问题。当人们看到有人在网上商城出售开源软件CD时,十有八九会认定其中有欺诈。很大程度上是由于free software这个词,free在英语中既可以表示免费,又有自由的意思。大多数人看见free software时,会把它当作是免费的软件。而另一方面,大多数的自由软件是免费的,所以很多人认为自由软件是不可以商业化的。 当然,中国早期的翻译者也大多把它翻译成免费软件。 根据自由软件之父Richard Stallman对自由的软件的定义,不仅是自由软件的作者可以向用户收费,用户在向其他用户传播时也可以收费。而开源软件的定义明确地指明了开源软件是可以收费的,虽然赚钱并不是开源软件的目标。收费是一种软件自由,如果不允许软件作者收费,那么这个软件就不是自由软件。GNU计划明确地说道:“我们鼓励人们在向他人传播自由软件的同时收取费用,他们能收多少钱是他们的自由。如果一个软件许可不允许用户复制软件以向他人销售,那么这个许可就不是一个自由的软件许可。” 在传递软件的同时进行收费是一项最基本的自由,每一个人都有这个自由。但由于每个人都能免费地获取自由软件,所以你要向别人收费,那么你得在传递软件的同时提供额外的有价值的服务。比如刻录CD后将CD邮寄,这对于网速差的人来说是一项有价值的服务。 有些开源软件项目并不希望用户销售他们的软件,比如Mozilla基金会很不希望你销售Firefox,所以他们利用Firefox的商标来阻止用户销售,这就是为什么Debian的默认浏览器不是firefox,而是iceweasel浏览器的原因。iceweasel只是把firefox的图标给替换了,其他代码跟firefox一模一样。 肮脏的利润 虽然收费是一项基本的软件自由,但收费在开源软件中非常少见,所以人们认为收费是不允许的。即使在软件中插入广告也被认为是有损自由精神或开源精神。因为任何一个软件开发者都可以获取源代码,然后将广告的代码删除,重新发布。windows 10看起来是免费的,但实际上window...

Ubuntu/LinuxMint使用PPA安装Git2.6.1

Ubuntu/LinuxMint/ElementaryOS使用PPA安装Git2.6.1

Git是一个免费、自由、开源的分布式版本控制系统,可以快速高效地处理大中小型项目。它是github的一个客户端。在这篇教程中,我将介绍如何在ubuntu,linuxmint和elementary OS上安装 git 2.6.1。2.6.1是一个稳定版本,于2015年9月28日发布。git是最流行的版本控制系统之一。 安装git的命令 添加GIT的官方PPA sudo add-apt-repository ppa:git-core/ppa 更新本地的软件包索引 sudo apt-get update 安装git 2.6.0 sudo apt-get install git 当然,你也可以不使用PPA安装,直接输入sudo...

javascript

WordPress如何只在主页加载JavaScript

我的主页有一个Slideshow,这个slideshow需要加载一个jquery脚本才能正常显示。但其他的页面没有slideshow,所以其他的页面不需要加载这个jquery脚本。但我的wordpress主题默认在所有页面都加载这个jquery脚本,这个脚本有110K。所以,我需要修改一点代码,让这个脚本只在主页加载。 代码 下面这一段代码检测页面是否为主页,如果是主页就加载<script>标签里的脚本。如果不是主页,那么显示“ This is not the homepage”消息。 <?php if( is_home() ) { ?> <script> content </script> <?php } else...

最小化

WordPress如何最小化JavaScript和CSS文件

什么是JavaScript和CSS最小化? 所谓最小化(minification)就是将JavaScript和CSS文件中的空白、注释等不必要的字符删除以降低文件大小的过程。这可以提升网站速度,使网页加载得更快。通过最小化,文件的大小可以降低10%~40%。借助适当的工具,我们可以轻松地将JavaScript和CSS文件最小化。 CSS文件的最小化 首先,备份原来的CSS文件,你可以将备份的CSS文件命名为style-old.css。 然后前往这个网站:http://www.freeformatter.com/css-minifier.html  自动帮你最小化CSS文件。在这个网站上,你可以输入CSS文件的URL,然后点击minify按钮以进行最小化。 最小化完成后,它会自动弹出最小化后CSS文件的下载对话框。将最小化后的CSS文件放在原来CSS文件在网站中的目录。最小化后,我的CSS文件的大小从90K变成了72K。CSS文件最小化后的模样: JavaScript文件的最小化 首先,备份原来的JavaScript文件,你可以将备份的JavaScript文件命名为js-old.js 然后前往这个网站: http://jscompress.com 自动帮你最小化JavaScript文件。在这个网站上,你要将JavaScript文件的内容粘贴到文本框,然后点击Compress JavaScript按钮以进行最小化。你可以在浏览器地址栏中输入JavaScript的URL,然后按CTRL+A复制全部内容,粘贴到文本框中。 最小化完成后,会有一个下载的按钮,点击这个按钮下载最小化后的JavaScript文件。我的JavaScript文件从155K压缩到了124K。然后将最小化后的JavaScript文件放在网站中对应的目录。 另外一个提供最小化CSS和JavaScript文件的网站 http://refresh-sf.com/

wordpress设置

WordPress网站将多个JavaScript文件合并成一个

在一个网页加载完之前,浏览器会发出很多个HTTP请求。网页中有很多元素,如图片、CSS样式、JavaScript脚本等等。每一张图片、每一个CSS样式文件、JavaScript脚本都需要浏览器做出一次HTTP请求。减少HTTP请求可以大幅提升网页的加载速度。WordPress网站一般都会有大约10个JavaScript文件。而将10个JavaScript文件合并成一个文件就可以减少9次HTTP请求。在这篇文章中,我将介绍如何将多个JavaScript文件合并成一个文件。 找出网站有多少个外部JavaScript文件 首先,打开网站主页,然后右击鼠标,选择“查看源码”。再按CTRL+F快捷键调出搜索框,在搜索框中输入 script type='text/javascript' 后回车。选择“高亮全部”,你就能看见网页中有多少个外部javascript文件了。如下图,head中有两个外部JavaScript。一般在footer部分也能找到外部JavaScript。 合并多个JavaScript文件的方法 创建main.js文件 首先在网站根目录下面创建一个文件,命名为main.js。然后编辑main.js文件。我们需要将外部JavaScript文件的内容全部粘贴到main.js文件中。在网页的源码页面,点击JavaScript文件的地址,也就是上图中 src 后面的地址。打开了JavaScript文件,按CTRL+A选择全部内容,然后CTRL+C复制全部内容,将内容粘贴到main.js文件中。再点击下一个JavaScript文件的 src 地址,依次它们的内容粘贴到main.js文件中。最后保存。 引用main.js文件 main.js创建好以后,我们需要在wordpress主题文件夹的footer.php文件中引用main.js。footer.php文件的路径一般为/var/www/html/wp-content/themes/themename/footer.php。 在<?php wp_footer(); ?>的上一行,粘贴下面的<script>标签,将域名替换成你自己的域名。保存文件。 <script type='text/javascript'...

wordpress安全

WordPress网站将多个CSS文件合并成一个

为什么要将多个CSS文件合并为一个? 你的WordPress很可能有四五个CSS文件,这样浏览器在加载你的网页时,光是加载CSS文件就得发出四五个请求。我们知道,浏览器在加载一个网页时发出的请求越多,那么加载的速度就越慢。另外,有些CSS文件可能不是存储在你的服务器上,而是存储在另外一个服务器上,而这时又会增加DNS查询的次数。在DNS查询完成之前,浏览器是不能加载任何元素的。而且,也许你的服务器上的CSS文件加载得快,但你不能保证其他服务器上的CSS文件也加载得快。 所以把多个CSS文件合并成一个,合并后的CSS文件缓存在CDN服务器上,既可以减少浏览器发出的请求次数,又可以减少DNS查询次数,从而加快网页的加载速度。 找出网站有多少个外部CSS文件 首先,打开网站主页,然后右击鼠标,选择“查看源码”。再按CTRL+F快捷键调出搜索框,在搜索框中输入stylesheet后回车。选择“高亮全部”,你就能看见网页中有多少个外部CSS文件了。 在你登录WordPress后,你还会看到下图中间三个外部CSS文件,open-sans-css,dashicons-css和admin-bar-css是登录WordPress后才会加载的外部CSS样式。我们不需要合并这三个CSS文件,因为普通浏览者不会登录你的WordPress后台,所以他们的浏览器不会请求这三个CSS文件。 合并多个CSS文件的方法 创建main.css文件 首先在网站根目录下面创建一个文件,命名为main.css。然后编辑main.css文件。我们需要将外部CSS文件的内容全部粘贴到main.css文件中。在网页的源码页面,点击CSS文件的地址,也就是上图中 href 后面的地址。打开了CSS文件,按CTRL+A选择全部内容,然后CTRL+C复制全部内容,将内容粘贴到main.css文件中。再点击下一个CSS文件的href地址,依次它们的内容粘贴到main.css文件中。最后保存。 引用main.css文件 main.css创建好以后,我们需要在wordpress主题文件夹的header.php文件中引用main.css。header.php文件的路径一般为/var/www/html/wp-content/themes/themename/header.php。 在<title>标签下一行,其他<link>标签的上一行,粘贴下面的<link>标签,将域名替换成你自己的域名。保存文件。  <link rel="stylesheet" href="http://www.linuxdashen.com/main.css" type="text/css" media="screen" />...

wordpress死链接

如何找出并删除WordPress网站中的死链接

什么是死链接? 如果浏览器向web服务器发出一个请求,但web服务器找不到相应的文件,如图片,这叫做 Bad Request。而请求中给出的相应文件的链接,就是死链接(Broken Links)。在WordPress网站中,由于主题或插件开发者的疏忽或其他原因,可能会产生一些死链接。 为什么要删除网站中的死链接? 死链接让浏览器发出了不必要的请求,而浏览器在加载网页时发出的请求越多,网页加载就越慢。 如何找出并删除网站的死链接? 我们可以在pingdom网站上测试我们的网站速度。输入自己的域名后,pingdom会给出网站的速度分析报告。在分析报告里,可以查看网站是否有死链接。如下图,背景色为黄色,并且前面有一个感叹号的这个请求就是一个坏请求(Bad Request),也就是死链接。点击右边的小按钮可以查看对应的浏览器请求。在右边的Request Headers下面的Referer一栏中可以找出是哪个文件要求浏览器发出这个请求。 在上图中可以发现,web服务器找不到bx_loader.gif这个文件。我用文件编辑器打开了Referer指出的文件。然后在文件中查找 bx_loader.gif,如下图。 在这个CSS文件中,我将url(images/bx_loader.gif)删除。之后在pingdom网站上重新测试,这一次没有发现死链接。

wordpress javascript

WordPress网站如何将JavaScript从head移到footer

JavaScript是一个客户端脚本语言,它的执行是由浏览器完成的。JavaScript一般放在head部分和footer部分。在这篇文章中,我将展示如何将WordPress网站的JavaScript脚本从head移到footer。 为什么要将JavaScript移到footer 很简单,将JavaScript移到footer可以提升网页的加载速度。JavaScript有一个特点叫做“阻止渲染”。如果JavaScript放置在网页的head部分,那么在加载网页的时候,首先要加载JavaScript。这些head部分的JavaScript在加载完成之前,网页中的其他元素是不可以同时加载的。这就叫做“阻止渲染”(render blocking)。所以,我们最好要将JavaScript放置在网页的底部。这样网页的文字、图片等其他元素可以先呈现在浏览者面前,然后JavaScript在后台加载。 如何将JavaScript移到footer 步骤非常简单。打开WordPress主题文件夹下面的functions.php文件,在文件末尾添加下面的代码。 // Custom Scripting to Move JavaScript from the Head to the Footer function remove_head_scripts()...

nginx gzip

Nginx服务器如何启用gzip压缩功能

压缩的好处 压缩可以减小HTTP回复的大小,从而降低web服务器的响应时间。gzip是web服务器广泛使用的压缩工具,可以将HTTP回复的大小降低到原来的50%~30%。既提高了网页的加载速度,又可以节约服务器流量。 Nginx服务器启用gzip压缩的方法 打开/etc/nginx/nginx.conf配置文件 sudo vi /etc/nignx/nginx.conf 将下面的文字粘贴到 http 部分,如果配置文件中有下面的文字,但前面有个#符号,那么将对应的#符号去掉就行了。 gzip on; gzip_comp_level 2; gzip_http_version 1.1; gzip_proxied any; gzip_min_length 1100;...

Debian

Debian 8 Jessie如何安装Nginx1.9.5

Nginx1.9.5版本于2015年9月22日发布,属于mainline版本,而Nginx 1.8属于stable版本。Nginx官方推荐优先使用mainline版本。如果你担心mainline版本与第三方模块存在兼容问题,或者你总是担心mainline版本中会有bug,那么stable版本更加适合您。这篇文章将介绍如何在Debian 8 Jessie服务器上安装Nginx 1.9.5。 安装过程 首先,删除旧的Nginx版本: sudo apt-get remove nginx nginx-common nginx-full 安装Nginx团队的PGP签名钥匙: wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key 然后将下面两行添加到/etc/apt/sources.list文件的末尾:...

nginx性能优化

Nginx性能优化之配置缓冲、超时、压缩和日志

Nginx的缓冲配置 请求缓冲在Nginx请求处理中扮演了重要的角色。当收到一条请求时,Nginx将请求写入缓冲当中。缓冲中的数据成为Nginx的变量,比如$request_body。如果缓冲容量比请求容量小,那么多出来的请求会被写入硬盘,这时便会有I/O操作。Nginx提供了多个directive来修改请求缓冲。 client_body_buffer_size 这个directive设定了request body的缓冲大小。如果body超过了缓冲的大小,那么整个body或者部分body将被写入一个临时文件。如果Nginx被设置成使用文件缓冲而不使用内存缓冲,那么这个dirctive就无效。client_body_buffer_size在32位系统上默认是8k,在64位系统上默认是16k。可以在http, server 和 location模块中指定,如下: server {         client_body_buffer_size 8k; } client_max_body_size 这个directive设定Nginx可以处理的最大request body大小。如果收到的请求大于指定的大小,那么Nginx会回复HTTP...

nginx服务器性能

Nginx服务器性能优化的三大方面

Nginx服务器非常快,但是Nginx的默认设置并没有针对具体的硬件进行调优。在这篇文章中,我们要把Nginx的性能发挥到极限。Nginx的配置分为三大部分:worker进程配置、I/O配置、TCP配置。我们将分别对这三大配置展开讨论,并在最后给出综合性的配置。 Nginx的worker进程配置 worker_processes worker_processes directive指定nginx worker进程的数量。它是一个全局性配置,不属于events模块,也不属于http或location模块。 worker_processes 1; 默认的值是1,意味着nignx只打开一个worker进程。最优的设置是worker进程数量要与CPU的核数相等。我们可以用lscpu命令来找出CPU的核数。 lscpu 也可以用 cat /proc/cpuinfo | grep 'processor' | wc -l 另外,我们也可以将worker_processes的值设为auto,这样nginx会自动检测CPU核数并打开相同数量的worker进程。...

Debian VPS使用optipng和jpegoptim自动压缩网站图片

读者会发现,我的网站上有很多图片。有句话叫做“一张图胜过一千句话”。图片对于技术类文章尤其重要,对读者理解文章的内容有很大的帮助。但是JPG和PNG这些图片文件体积大,不仅会对服务器处理请求产生额外的压力,也会延长网页从服务器传送到用户所花的时间。在这篇文章中,我将介绍如何在Debian VPS下使用命令行压缩图片以提高网页加载速度,然后将命令行写成一个cron任务,以实现每天自动压缩图片。 安装optipng和jpegoptim来压缩图片 我们可以用optipng和jpegoptim来分别压缩PNG和JPEG文件。大多数Linux发行版的软件库中都有这两个软件。在Debian服务器上输入下面的命令安装: sudo apt-get install optipng jpegoptim 安装好后,切换到网站根目录,如: cd /var/www/html/ 然后执行下面的两条命令在网站根目录下面分别查找PNG和JPEG文件,然后压缩。 find . -iname '*.png' -print0 | xargs...

nginx服务器性能

使用Apache JMeter测试web服务器性能

在这篇文章中,我将介绍Apache JMeter,一个强大的免费自由开源的web应用性能测试工具。JMeter不仅可以模拟负载,而且可以进行回应验证。 JMeter的特点如下: 可以测试各类web应用的性能,如web服务器、SOAP、FTP、JMS、邮件服务器(SMTP/POP3/IMAP)等等。 既可以测试静态内容,又可以测试动态内容 提供GUI界面 100%纯Java代码写成,可以安装在Linux、Mac OS、Windows操作系统上。 多线程框架 可以进行分布式测试,从不同的机器上对web应用进行测试 有大量插件 离线分析功能 安装Java JMeter完全用Java编写,所以在安装JMeter之前,我们需要安装好Java。使用下面的命令查看系统上有没有安装Java java --version 如果没有安装好,可以使用下面的命令安装: sudo apt-get install...

nginx性能优化

Linux系统下安装siege 网页服务器性能测试工具

我们可以用很多工具来测试web服务器的性能,有些是免费开源的,有些是需要商业许可的。siege是一个免费开源的工具,用于web服务器的压力测试。 给siege指定一个URL,siege就可以模拟大量用户来测试web服务器性能。siege提供的测试结果包括耗费时间、总数据传输量,服务器响应时间、吞吐量、并发连接数量等。 源码编译安装siege 很多Linux发行版的软件库中都收录了siege,但软件库中的版本一般都比较旧,我们可以自己下载最新版本来安装。在写这篇文章时,最新版本为3.1.2。首先下载安装包,在终端中输入下面的命令: wget http://download.joedog.org/siege/siege-latest.tar.gz 解压安装包: tar -xvf siege-latest.tar.gz 切换到解压目录 cd siege-3.1.2/ 编译前需要做一点配置。./configure命令会为siege生成配置信息,并检查编译所需要的库文件。 ./configure configure完成后,输入下面两条命令编译并安装siege: make sudo make install...

postfix黑名单

Postfix如何添加域名黑名单和白名单

在这篇教程中,我将介绍如何用Postfix添加域名黑名单,以拒收垃圾邮件。同时也可以用这个方法来添加白名单。如果你还没有安装好Postfix邮件服务器,那么请看这篇文章。 /etc/postfix/main.cf 首先登录邮件服务器,编辑/etc/postfix/main.cf文件 sudo vi /etc/postfix/main.cf 在文件中添加下面一行文字,你可以把它插入到文件末尾。 smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/sender_checks 保存文件。 /etc/postfix/sender_checks 然后在/etc/postfix/目录下创建一个sender_checks文件 sudo vi /etc/postfix/sender_checks 在这个文件中,每一行添加一个域名,域名后面输入OK表示将这个域名添加到白名单,域名后面添加REJECT表示将这个域名添加到黑名单。 example.com  ...

Debian

Debian服务器Perl本地化设置失败

我们安装Debian或Ubuntu时,可能本地化设置(locale)并不完整。所以安装Perl应用程序时会警告本地化设置失败。你可能会看到如下警告信息: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings:         LANGUAGE =...

mailman

将mailman邮件列表打造成电子邮件营销系统

大多数站长知道有QQ邮件列表这个东东。但QQ邮件列表功能比较简单,每天只能给用户发两篇文章,不能对它个性化配置。其他功能较强大的邮件营销工具如aweber是要花钱的。其实捏,在QQ邮件列表出现之前,国外早就有了一款强大的邮件列表程序,这就是免费开源的mailman。在上一篇文章中,我向大家初步介绍了如何在Debian 8 + Nginx + FastCGI+Postfix环境下安装mailman邮件列表程序。现在,我们要将mailman打造成一个强大的邮件营销系统。 1.更改语言 首先要做的就是更改mailman的语言,在浏览器中访问下面的地址登录mailman网页管理后台: http://example.com/cgi-bin/mailman/admin/listname 将example.com修改成你自己的域名,listname修改成你的邮件列表名称。默认的listname是mailman,你可以访问下面的地址新建一个列表: https://example.com/cgi-bin/mailman/create 登录邮件列表管理后台,点击左上方的”Language options“,然后在下方的”Default Language for this list“中选择“Chinese(China)“,最后提交修改就行了。如果下拉菜单中没有中文这一项,那么先要在下面添加中文。   2. 生成邮件订阅表单...

Debian 8, Nginx, Postfix, FastCGI环境安装mailman邮件列表程序

关于Mailman mailman是一个邮件列表程序,它是一个自由软件。有很多开源社区网站在使用mailman。这篇文章介绍如何安装并使用mailman来创建邮件列表,向订阅用户发送邮件。 先前条件 这篇教程假定你已经安装好了LEMP以及Postfix。点击此处阅读如何安装LEMP,点击此处学习如何安装Postfix邮件服务器。 1.安装fcgiwrap 为了让Nginx正确地展示mailman的网页后台界面,我们需要安装fcgiwrap软件包: sudo apt-get install fcgiwrap 安装好后,打开/etc/init.d/fcgiwrap文件 sudo vi /etc/init.d/fcgiwrap 在29行和30行,确认FCGI的用户名和组名与Nginx的用户和组名一致。Nginx默认的用户和组名是www-data。 FCGI_USER="www-data" FCGI_GROUP="www-data" 修改好后,重启fcgiwrap sudo service...

电子邮件

电子邮件系统是如何运作的?

电子邮件的历史 电子邮件的出现比Internet的出现要早。电子邮件于1965年在MIT诞生。当时,MIT开发出了一种分时操作系统,可以让多个用户在各自的终端同时登录并使用同一个大型机。一个用户可以给同一个大型机上的另外一个用户发送电子邮件。随着Internet的出现,电子邮件可以发送到世界的任何一个邮件服务器上。 电子邮件系统的六个组成部分 如今的电子邮件系统由以下六个部分组成: MTA      MDA      mailbox    POP3/IMAP Server      MUA      MSA...