开源软件的盈利模式

盈利模式之一:多种产品线
在这种模式中,利用开源软件为直接产生收入的专有软件来创造或维持一种市场地位。例如,开放源代码的客户端软件带动了服务器软件的销售,或者借用开源版本带动商业许可版本的产品销售。这种模式应用的比较普遍。如 MySQL 产品就同时推出面向个人和企业的两种版本,即开源版本和专业版本,分别采用不同的授权方式。开源版本完全免费以便更好的推广,而从专业版的许可销售和支持服务获得收入。再如 Redhat 自 Redhat Linux 9.0 后将原桌面操作系统转为 Fedora 项目,借 Fedora Core Linux 在开源社区的声望而促进 Redhat Enterprise Linux AS/ES/WS 服务器产品线的销售。
盈利模式之二:技术服务型
在这种模式中,开放源代码软件采用了一种全新的市场定位,并非面向产品,而是针对技术服务。JBoss就是这种模式的典型代表。JBoss 应用服务器完全免费,而通过提供技术文档、培训、二次开发支持等技术服务而获得收入。
盈利模式之三:应用服务托管(
这种模式适用于基于开源软件的应用服务供应商(ASP)。
例如, Live! 就是一种构架于 、MySQL 之上的开源软件,它可为企业用户提供实时交谈服务。目前已经有数十家公开提供 Live! 托管服务的应用服务提供商。
盈利模式之四:软、硬件一体化
这种模式是针对硬件制造商的。随着竞争的普及,市场压力迫使硬件公司开发并维护软件,但是软件本身却并不是利润中心,因而采用开源软件。 这种模式为大型公司广泛采纳,比如 IBM HP 等服务器供应商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。SUN 公司近期将其 Solaris 操作系统开放源码,以确保服务器硬件的销售收入,也是这种模式的体现。
盈利模式之五:附属品
在这种模式中,出售开放源代码的附加产品。比如在低端市场,出售杯子和T恤衫等;在高端市场上,出售专业编辑出版的文档和书籍。O’Reilly集团是销售开源软件附加产品公司的典型案例,他出版了很多优秀的开放源代码软件的参考资料。O’Reilly实际上雇用和支持了一些著名的开放源代码黑客(例如Larry Wall和Brain Behlendorf),并以此提高它在市场上的声望。
盈利模式之六:品牌战略、服务致上
在这种模式中,开源公司通过开源软件先天的传播优势,以极低的成本建立和传播品牌。并通过向用户提供产品相关的服务来获得回报。 康比尔公司的 Compiere ERP & CRM 软件是这种模式的典型案例。康比尔公司开发了开源的 ERP & CRM 软件,由于其产品优秀,很快便获得了北美、欧洲和亚洲中小企业用户的认可,Compiere 品牌也因此迅速地传播到了世界各地,在企业管理软件市场已经成为全球知名品牌。
盈利模式之七:市场策略
这种模式,是一种快速抢占市场的营销策略,主要是为以后增强版产品的销售打下基础。 这种情形的案例有很多。比如,微软宣称部分的公开 Office 的源代码,就是执行这种策略。另一个案例则是CRM 领域的新星 SugarCRM,这款由速加科技开发的开源版本从2004年上半年公开下载后广为传播,为在9月推出的盒装专业版套件做好口碑上的准备。
开源软件的经营模式多种多样,随着开源软件的发展,会有更多的盈利模式应运而生。事实上,一家公司可能混合采用其中的几种盈利模式,比如康比尔公司不仅采用了第六种品牌策略,同时也采用了第二种提供技术服务的方式。 在开源软件大潮的冲击之下,包括微软在内的商业软件公司,也开始认可开源软件”软件成为服务”的本质。微软支持的金牌合作伙伴已经提供包括 Exchange 2003、SharePoint 2003 等在内的托管服务,如 ASP-One.com 每月每用户起价1美元的 SharePoint 2003 租赁服务和全包价9.95美元每月的Exchange 2003 租赁服务。 在欧洲和亚太地区各国政府的压力下,微软被迫开放Windows 和Office 的部分源代码,以改善政府的信任度,赢得庞大的政府采购订单。 开源软件的商业运动正方兴未艾。这是否会对传统的商业模式构成致命一击?开源软件在走向成熟的过程中,企业用户和政府用户由怀疑上升到愿意尝试,并最终形成了信任。开源软件已经成为软件业未来发展的重要趋势。正如 Navica 公司 CEO 本纳德·高登所说,”短短两三年间,任何人在选择任何企业软件之时,都开始考虑一个问题:是否有开源软件可作替代?”
***老文章,不知道原文出处
标签Tags:, , , , , , , , , , , ,

Nginx限速

看了网上很多的Nginx介绍,就跟着弄,发现总是限制不了速度: 配置如下

http {
limit_zone   one $binary_remote_addr 10m;

{ …..

location /attachments/ {
limit_conn   one 1;
limit_rate 100k;
}
}

}

在万般无奈下,找到这样句话“如果把limti_rate直接放在server{}中,而不是location中,确实能实现限速,但我只想限制附件下载的速度,请问大大该怎么搞?” (更多…)

标签Tags:, , , , , , , , , , ,

帝国备份王(Empirebak)拿webshell

fhod 邪恶八进制
帝国备份王(Empirebak)简介
EmpireBak是一款完全免费、专门为Mysql大数据的备份与导入而设计的软件,系统采用分卷备份与导入,理论上可备份任何大小的数据库.
可在 http://www.phome.net/ebak2008os/ 下载到
默认账号密码为
admin  123456
登陆后先备份一次数据
备份时可选择备份到的目录。。默认有个safemod
当然也可以是别的..这里以safemod来说了
备份完毕后来到
管理备份目录
打包并下载
把开始备份到的数据可以先下回分析..当然数据库比较大的话可以省略这一步..因为我之前下载已经分析完毕了
(更多…)

标签Tags:, , , , , , , , , , , , , , , , ,

让IIS只监听指定IP

放入Windows 2003安装光盘,在目录\Support\Tools\下面找到Support.msi文件,安装他。
  安装文件也可以在http://www.cdnunion.net/soft/support.rar下载。
b.用cmd进入C:\Program Files\Support Tools目录。
c.删除0.0.0.0
 httpcfg delete iplisten -i 0.0.0.0
d.设定HTTP.sys(iis)只是侦听192.168.0.2这个IP地址,运行如下命令:
httpcfg set iplisten -i 192.168.0.2
返回的错误代码0代表成功完成
e.重起http.sys,依次在dos模式执行如下命令。
net stop http /y
net start w3svc

f.查询现在http.sys侦听Web服务的端口。
在dos模式用如下命令:
netstat -an
看看 tcp 0.0.0.0:80 0.0.0.0 listening 是否存在,如果不存在,先恭喜一下。
看看 tcp 192.168.0.2:80 …………… 是否存在,如果是,那就真正恭喜你了。
##########################################################

httpcfg query iplisten 查询

标签Tags:, , , , , , , ,

最令PHP初学者头痛的十四个问题

(更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

PHP和Socket简介

Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用socket进行连接,服务器端将详细的处理信息发送给客户端。

当你看到完整的socket过程,那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器,客户端是一个Web浏览器,这是一个单一的 客户端/服务器 的关系。 (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , ,

php的文档句法(heredoc)<<<和PHP字符串操作

不多说了,看代码。自己体会

<?
echo “濙水河边的PHP演示”;
echo “<br>”;
$db=_connect(“localhost”,”root”,”123456″);
mysql_select_db(“jaycee”,$db);
$rs=mysql_query(“select * from gbook”,$db);
while($row=mysql_fetch_row($rs))
{
echo <<< eod
<table width=”99%” border=”1″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
</tr>
<tr>
<td>$row[2]</td>
<td>$row[3]</td>
</tr>
</table>
eod;
}
?>

<<<也就是可以让我们在PHP代码内实现一大段的HTML代码,并且可以在其中,使用PHP变量。

淡水河边这厮,找到许多PHP入门呀,php起步呀==的书,从没提到用到这个。郁闷,用不到么?

居然不提。愤怒! (更多…)

标签Tags:, , , , , , , , , , , , , , , ,

深入探讨PHP中的内存管理问题

一、 内存

  在PHP中,填充一个字符串变量相当简单,这只需要一个语句”"即可,并且该字符串能够被自由地修改、拷贝和移动。而在C语言中,尽管你能够编写例如”char *str = “hello world “;”这样的一个简单的静态字符串;但是,却不能修改该字符串,因为它生存于程序空间内。为了创建一个可操纵的字符串,你必须分配一个内存块,并且通过一个函数(例如strdup())来复制其内容。

以下为引用的内容:

  {

  char *str;

  str = strdup(“hello world”);

  if (!str) {

  fprintf(stderr, “Unable to allocate memory!”);

  }

  }

  由于后面我们将分析的各种原因,传统型内存管理函数(例如malloc(),free(),strdup(),realloc(),calloc(),等等)几乎都不能直接为PHP源代码所使用。 (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , ,

PHP对文本数据库的基本操作方法

PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法
我用一个留言本程序作为例子,阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。
此文本数据库共有字段10个:客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。

1、加入数据程序段。

$date=date(“Y-m-d H:i:s”);//取得系统时间
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得发言的IP地址
$text=encode($gb_text);//去掉留言内容后面的空格.
$fp=fopen(“gb.dat”,”a”);//以只写模式打开gb.dat文本文件,文件指针指向文件尾部.
$str=$ip.” ”.$date.” ”.$gb_name.” ”.$gb_email.” ”.$gb_home.” ”.$face.” ”.$gb_qq.” ”.$head.” ”.$text.” ”.$reply.”\n”;//将所有留言的数据赋予变量$str,” ”的目的是用来今后作数据分割时的数据间隔符号。
fwrite($fp,$str);//将数据写入文件
fclose($fp);//关闭文件
showmessage(“留言成功!”,”index.”,”3″);//留言成功,3秒后自动返回主界面。
其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由发言表单传过来的数据。
(更多…)

标签Tags:, , , , , , , , , , , , , , , , , , ,

require和include的异同

第一点:require() 和 () 除了怎样处理失败之外在各方面都完全一样。() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就用require() 吧,它直接会中止脚本。而include() 就不是这样,脚本会继续运行,但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_

就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。

第二点:require() 无论如何都会包含文件,而 include() 可以有选择地包含:
<!–p  if(FALSE){  require(‘a.’);  }  if(FALSE){  include(‘b.’);  } –>

比如上面这段代码,a.php一定会被包含,而b.php一定不会被包含。require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。大家应该明白这个区别了吧:)

同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

第一点:require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就用require() 吧,它直接会中止脚本。而include() 就不是这样,脚本会继续运行,但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。

就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。

第二点:require() 无论如何都会包含文件,而 include() 可以有选择地包含:
<!–p  if(FALSE){  require(‘a.php’);  }  if(FALSE){  include(‘b.php’);  } –>

比如上面这段代码,a.php一定会被包含,而b.php一定不会被包含。require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。大家应该明白这个区别了吧:)

同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

标签Tags:, , , , , , , , , , , ,