竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


119月/160

linux 查看系统信息命令(比较全)

发布在 邵珠庆

# uname -a # 查看内核/操作系统/CPU信息 
# head -n 1 /etc/issue # 查看操作系统版本 
# cat /proc/cpuinfo # 查看CPU信息 
# hostname # 查看计算机名 
# lspci -tv # 列出所有PCI设备 
# lsusb -tv # 列出所有USB设备 
# lsmod # 列出加载的内核模块 
# env # 查看环境变量资源 
# free -m # 查看内存使用量和交换区使用量 
# df -h # 查看各分区使用情况 
# du -sh <目录名> # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg # 查看系统负载磁盘和分区 
# mount | column -t # 查看挂接的分区状态 
# fdisk -l # 查看所有分区 
# swapon -s # 查看所有交换分区 
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) 
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络 
# ifconfig # 查看所有网络接口的属性 
# iptables -L # 查看防火墙设置 
# route -n # 查看路由表 
# netstat -lntp # 查看所有监听端口 
# netstat -antp # 查看所有已经建立的连接 
# netstat -s # 查看网络统计信息进程 
# ps -ef # 查看所有进程 
# top # 实时显示进程状态用户 
# w # 查看活动用户 
# id <用户名> # 查看指定用户信息 
# last # 查看用户登录日志 
# cut -d: -f1 /etc/passwd # 查看系统所有用户 
# cut -d: -f1 /etc/group # 查看系统所有组 
# crontab -l # 查看当前用户的计划任务服务 
# chkconfig –list # 列出所有系统服务 
# chkconfig –list | grep on # 列出所有启动的系统服务程序 
# rpm -qa # 查看所有安装的软件包

301月/160

Linux系统下各文件目录的含义

发布在 邵珠庆

/bin bin是Binary的缩写。这个目录存放着最经常使用的命令。  
/boot 这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。  
/dev dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。  
/etc 这个目录用来存放所有的系统管理所需要的配置文件和子目录。  
/home 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。  
/lib  这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。  
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。  
/mnt 在这里面中有四个目录,系统提供这些目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/cdrom上,然后进入该目录就可以查看光驱里的内容了。  
/proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件
/root 该目录为系统管理员,也称作超级权限者的用户主目录。  
/sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。  
/tmp 这个目录是用来存放一些临时文件的。  
我们要用到的很多应用程序和文件几乎都存放在usr目录下。具体来说:  
/usr/X11R6存放X-Windows的目录;  
/usr/games存放着XteamLinux自带的小游戏;
/usr/bin存放着许多应用程序;  
/usr/sbin存放root超级用户使用的管理程序;  
/usr/doc Linux技术文档;  
/usr/include用来存放Linux下开发和编译应用程序所需要的头文件;  
/usr/lib存放一些常用的动态链接共享库和静态档案库;  
/usr/local这是提供给一般用户的/usr目录,在这里安装一般的应用软件;  
/usr/man帮助文档所在的目录;  
/usr/src Linux开放的源代码,就存在这个目录,爱好者们别放过哦;  
/var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。如果你想做一个网站,你也会用到/var/www这个目录。
 
2411月/140

解读大型网站系统架构的演化

发布在 邵珠庆

前言

一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段可以广泛运行在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构

最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:

image

二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。

image

三、利用缓存改善网站性能

在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

image

缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Membercache、Redis。

四、使用集群改善应用服务器性能

应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

架构4

常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。

架构3

六、使用CDN和反向代理提高网站性能

假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取,也减少了获取数据的成本。反向代理有Squid,Nginx。

架构5 

七、使用分布式文件系统

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS。

架构5.5

八、使用NoSql和搜索引擎

对于海量数据的查询,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

架构6

九、将应用服务器进行业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

架构7

十、搭建分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择。

架构8

小结

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

1211月/140

php/mysql/jquery实现各系统流行的瀑布流显示方式,实现很简单的!!!!

发布在 邵珠庆

大家在用这个东西的时候一定要计得有这么几个文件,一个是jquery.js 还有就是你自己数据库的密码。和相对应的图片才可以正常看到效果。下面就是这里所有的代码!!!

HTML文件:waterfall.html

1. [代码][PHP]代码     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
View Code
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>瀑布流-Derek</title>
 <script type="text/javascript" language="javascript" src="jquery.js"></script>
 <link type="text/css" rel="stylesheet" href="waterfall.css" />
 <script type="text/javascript" language="javascript" src="waterfall.js"></script>
 </head>
 <body>
  
     <ul id="stage">
         <li></li>
         <li></li>
         <li></li>
         <li></li>
     </ul>
  
 </body>
 </html>
/*
 *  Javascript文件:waterfall.js
 */
$(function(){
     jsonajax();
 });
  
 //这里就要进行计算滚动条当前所在的位置了。如果滚动条离最底部还有100px的时候就要进行调用ajax加载数据
 $(window).scroll(function(){   
     //此方法是在滚动条滚动时发生的函数
     // 当滚动到最底部以上100像素时,加载新内容
     var $doc_height,$s_top,$now_height;
     $doc_height = $(document).height();        //这里是document的整个高度
     $s_top = $(this).scrollTop();            //当前滚动条离最顶上多少高度
     $now_height = $(this).height();            //这里的this 也是就是window对象
     if(($doc_height - $s_top - $now_height) < 100) jsonajax();   
 });
  
  
 //做一个ajax方法来请求data.php不断的获取数据
 var $num = 0;
 function jsonajax(){
      
     $.ajax({
         url:'data.php',
         type:'POST',
         data:"num="+$num++,
         dataType:'json',
         success:function(json){
             if(typeof json == 'object'){
                 var neirou,$row,iheight,temp_h;
                 for(var i=0,l=json.length;i<l;i++){
                     neirou = json[i];    //当前层数据
                     //找了高度最少的列做添加新内容
                     iheight  =  -1;
                     $("#stage li").each(function(){
                         //得到当前li的高度
                         temp_h = Number($(this).height());
                         if(iheight == -1 || iheight >temp_h){
                             iheight = temp_h;
                             $row = $(this); //此时$row是li对象了
                         }
                     });
                     $item = $('<div><img src="'+neirou.img+'" border="0" ><br/>'+neirou.title+'</div>').hide();
                     $row.append($item);
                     $item.fadeIn();
                 }
             }
         }
     });
 }
 
/*
 *  CSS文件:waterfall.css
 */
 
body{text-align:center;}
/*Download by http://www.codefans.net*/
#stage{ margin:0 auto; padding:0; width:880px; }
#stage li{ margin:0; padding:0; list-style:none;float:left; width:220px;}
#stage li div{ font-size:12px; padding:10px; color:#999999; text-align:left; }
 
 
/*
 *  php文件:data.php
 */
<?php
 $link = mysql_connect("localhost","root","");
 $sql = "use waterfall";
 mysql_query($sql,$link);
 $sql = "set names utf8";
 mysql_query($sql,$link);
 $num = $_POST['num'] *10;
 if($_POST['num'] != 0) $num +1;
 $sql = "select img,title from content limit ".$num.",10";
 $result = mysql_query($sql,$link);
 $temp_arr = array();
 while($row = mysql_fetch_assoc($result)){
     $temp_arr[] = $row;
 }
 $json_arr = array();
 foreach($temp_arr as $k=>$v){
     $json_arr[]  = (object)$v;
 }
 //print_r($json_arr);
 echo json_encode( $json_arr );

2. [文件] waterfall.zip ~ 8KB     下载(850)     

1210月/120

31个国外社会化媒体运营管理系统一览

发布在 邵珠庆

随着企业使用社会化媒体的深入,聚集了越来越多的粉丝,企业也面临了很多单靠人力和创意所不能解决的问题,如有效倾听,大规模的数据挖掘和分析,多账户管理以及效果的评估等,这就需要借助于一些工具,比如国外一些热门的如buddy media,Hootsuite等,本文就汇集了国外30多家社会化媒体运营管理系统,供参考。

为什么要使用社会化媒体运营管理系统

痛点:社会化媒体团队需要应对分散的交流内容

我将从战略家LaSandra Brill得到一些能够使社会化营销者在多个渠道快速管理、维护和生成报告的新技术的介绍和要求。因为缺乏规模的问题引起了社会化战略家们的共鸣,市场正在开发一种新工具。它是社会化客户关系管理系统的一个组成部分,如果您还没有听过社会化客户关系管理,请阅读社会化客户关系管理的18个应用案例报告(更新:这只是您首先需要了解的全部社会化商业应用体系中的一个软件细分领域,见下图)

The Social Business Stack: 7 Categories, 18 Discrete Classes, for 2011

更新日期:2012年1月5日

经对这个新市场大约2年的观察,Altimeter出版了一个将正在增加的供应商细分的报告。《管理社会化媒体扩散策略

解决方案:社会化媒体管理系统正在升起,如同用于网站集中管理的内容管理系统和网站管理系统,社会化媒体管理系统给予社会化媒体团队从一个地点管理多个分散社会化渠道的能力,给予团队通过一次操作在多个渠道建立深入关系的可能。

定义:社会化媒体管理系统是管理不同的社会化媒体环境下工作流程的程序集合。这些程序,可以手动或以计算机为基础,使管理者从一个工具倾听,汇总,发布和管理多个社会化媒体渠道。

它是如何工作:最基本意义上的三个简单功能,这些管理工具执行下列操作:1)连接Facebook,Twitter,LinkedIn等社会媒体渠道。 2)允许管理者迅速从一个位置向这些渠道发布内容,一些还提供每个通道可以定制发布的能力3)聚集和管理社会化数据。该系统提供允许管理者(从评论意见中)看到正在发生什么的聚合视图,并可提供某种形式的分析和转换指标。

 

社会媒体管理系统名单(SMMS

按母公司字母顺序排列,而不是优先或能力。

1.Argyle Social

提供发布和调度,管理社会化收件箱和评测工具的功能,并有贴牌服务的解决方案。

2.Awareness Networks, Social Marketing Hub

企业级社区平台,已经推出了自己的工具,提供Facebook、YouTube、Flickr、Twitter和自己社区相连的功能。特别是,这是一个现有的企业级供应商(以前我发表过对他们进行彻底研究的报告),这预示着其潜在的服务,支持能力和市场生存的水平。

3.Buddy Media

拥有一套管理工具,帮助品牌管理Facebook,Twitter,并提供监测和报告。你会发现品牌和机构的重叠。在他们网站上有大品牌和媒体的案例研究。

4.Constant Contact

购买具有关键字监控的Nutshell Mail邮件系统,可以使小企业主,收到他们的社交账户预警。在2月28日,他们收购的SCRM公司Bantam Live具有一些销售和营销的SMMS功能。

5.Context Optional

为调整Facebook页面提供管理工具

6.Conversocial

提供解决方案,帮助管理者在大多数社交网络如Facebook和Twitter,计划更新和学习什么类型的内容与你的粉丝和追随者能产生共鸣

7.CoTweet

最近被ExactTarget收购。他们提供Twitter整合工具,日程安排,工作流管理,倾听工具,多作者管理,和仪表板管理工具

8.Distributed Engagement Channel

由DEC系统提供内容发布,调整用户产生内容(UGC)的提交,并跟踪和优化信道性能。他们也有如ID整合,媒体处理和报告的功能。

9.Engage Sciences

允许营销人员在Facebook,Twitter,LinkedIn和企业网站开展社会化促销,与客户互动,同时汇总,过滤和储存来自全国各地的社会网络的信息流,让企业轻松展示倡导者的声音。

10.Engage121

本业务的重点是:通过连贯一致的社会媒体消息加强品牌形象,使当地网点获取社会媒体工具,增强社会化的接触,调动员工作为品牌大使,监测和管理成千上万的当地代理商和专营店的权限。

11. Expion

允许大型企业发布和聚合社会媒体的谈话,可以扩展到数百个本地Facebook网页,Twitter账户,和YouTube频道。该工具有跨越这些渠道倾听,发布,管理,响应,治理,并收集情报的能力。

12.Hootsuite

集成Facebook和LinkedIn帐户。 以前,你可以通过Ping.fm功能更新Facebook和LinkedIn。 现在不同了,对待Facebook和LinkedIn帐户如同对待Twitter帐户:您可以在这些社会化网络中创建专栏, 读你朋友的状态更新,并更新多个Facebook帐户。 Facebook的整合提供及时的评论功能。

13.Involver

观众管理平台,提供营销人员内容发布,监管交流内容,管理应用程序,并跟踪性能的解决方案。

14.MediaFunnel

提供与Facebook和Twitter的集成。他们有几个基于工作流程的许可,包括各种的角色,如贡献者,管理员,出版商。这类似传统的CMS系统中使用的编辑过程。

15.MessageMaker

一个社会的媒体管理系统(SMMS),让您发布和管理大量跨社交互动点的有针对性的内容,同时产生可操作的情报。

16.Moderation Marketplace

提供社会化媒体管理和内容聚合解决方案,根据您的品牌提供给您的客户内容。

17.Mutual Mind

提供品牌监测,工作流程的许可以及报告工具。

18.Objective Marketer

提供管理者按照营销活动将信息结构化能力,功能包括用户管理,角色和权限管理,工作流程,内容日程安排,整合,分析和报告。他们告诉我,Objective Marketer目前的客户构成60%是企业的,30%是机构和10%是博主/独立顾问。 (2011年1月,Objective Marketer被Email Vision收购)

19.Postling

允许单个的客户或品牌从一个单一的管理系统管理像博客,Facebook粉丝页面,Twitter帐户,Flickr帐户这样的资产。也有评论聚合以及团队之间的工作流程。

20.Seesmic

Seesmic提供Twitter,Facebook,LinkedIn,Ping.fm,Foursquare和Google BUZZ多个账户的支持。还提供iPhone、Android、 WP7和黑莓平台的应用。语言翻译支持包括:英语、汉语、法语、德语、日语、葡萄牙语、罗马尼亚语、西班牙语和更多。 Seesmic已收到来自Salesforce的投资,并有一个集成的聊天产品。

21.Shoutlet

提供一个多用户的应用,帮助全球知名品牌、小企业和营销机构通过一个平台建设,参与,并衡量他们的社会化媒体营销传播。

22. SocialVolt

提供一个完整的社会化媒体管理平台,整合公司与他们在社会化网络上的客户成功地进行交互需要的所有工具。

23.SpredFast

是后起之秀,这个位于奥斯汀的公司提供核心功能,并声称有40%的企业客户群。他们与Convio、 Radian6、Crimson Hexagon、 Sysomos,、Trackkr、 IBM、Porter Novelli,、Sierra Club,、HomeAway建立合作伙伴。他们的产品定位为协作活动管理,提供内容调度功能,类似于FriendFeed上的事件和社会流整合功能。

24.Sprinklr

提供社交媒体管理工具,他们的网站在发布前有很强的倾听聚焦功能,这很有趣。

25.SproutSocial

SproutSocial带来帮助你倾听,参与和建立忠诚度,增加你的观众和您的业务的一切功能。

26.Strongmail

传统的电子邮件营销平台,提供营销活动多级分享活动方式和转换的跟踪,到达分析,交流活动, Facebook粉丝墙的反馈。

27.Syncapse (formerly SocialTalk)(原名SocialTalk)

提供与Twitter、Facebook、WordPress和MoveableType的集成,这种管理工具提供治理,工作流程,调度等功能。

28.Targeted

Targeted的企业社会门户,一个社会媒体管理系统,是特别为大型企业网络,渠道管理和分销网络设计的。ESP™是有针对性的专为集团的内容同步开发,并授权最终用户,同时降低企业管理的工作量。该平台不仅允许经企业认可的消息在本地发布,也支持社会网络数据的聚集和社会数据情报报告度量。

29. Vitrue

社会媒体管理系统,具有与Facebook和Twitter集成,提供调度的功能,能够连接多个Facebook网页。

30.Webtrends

提供了一个解决方案,帮助营销人员快速定义和执行社会营销策略。解决方案是以满足不同的社会营销需求为目的提供自助和全方位的服务套餐。

31.Wildfire

提供社会化抽奖活动,促进口碑以及从他们的平台发布到多个社交网络的管理功能,分析功能。

退市

这类厂商从未进入市场或进入死池。

KeenKong 提供类似管理工具的仪表板,不仅汇聚了来自Twitter和Facebook的交流内容,还试图从自然语言处理中发现内容的意义。 (更新2011年3月,自此还未发布产品).

使用社会化媒体运营管理工具的指导原则

你进入市场,并利用这些工具之前,首先要遵循这一指导原则。

1.从市场中获取人气,避免社会化媒体喷涌:

仅仅因为你能,并不意味着你应该。漫无目的地喷企业内容到每一个知名的社会化媒体渠道,可能使你的生活更容易,但作为一名营销人士,可能会导致社区的信任有严重的后果。记住这像联谊会,每一个兄弟会成员有不同的关系,话题,兴趣,不要以为一种类型的内容将适用于所有。

2.这是人的愚蠢,不要地毯式轰炸:

对社会的承诺之一,是与客户建立有意义的关系,传统的喷涌和祈祷的营销策略不适用。通过使用这些工具,你可能错过了可以是更深更多忠诚度的真实的关系,及倡导的好处,。

3.不要分散的太薄:

在任何时候在所有地方都可以意味着你并不存在。选择你的战场,并记住,LinkedIn的社区的需求与MySpace的远远不同,选择前要先知道你的客户群社会化性。


在你已经建立一个社会化的战略后使用这些工具,

每种技术都有积极以及不利的一面,总是要有权衡。虽然这些工具可以帮助社会战略家管理不可扩展的情况 – 他们有缺点:

行业见解:商品的功能,总伴随着潮流的要求

预计几乎每一个社区平台(有超过100个)都会推出这些功能,迅速地被专注于此的初创企业跟随,然后是CoTweets或者类似Seesmic的其他Twitter平台迅速进入企业领域。在几个季度内,预计传统的CMS和WMS企业能终于醒悟过来,并采取相关的动作;在Salesforce AppExchange的应用程序开发者能推出自己的产品。从长远来看,这将只是整体社会化商业软件商品的功能集,但会是社交型CRM的一个重要组成部分。

如果你知道某一个供应商提供这些功能,请留言,我会仔细看看,并计划与这些厂商的一些简报。注:我对这篇文章的修改了很多,它几乎处于实时修改中。

318月/1183

BSP系统和工作原理

发布在 邵珠庆

BSP(Billing and Settlement Plan)是旅行代理和航空公司之间数据和资金流动的中心点。所有的信息都被BSP系统整合在一起,从而避免了每一个代理都要和每一家航空公司都要建立一个联系。
航空代理人只要通过汇款做一次付款就可以支付给所有的在BSP系统内的航空公司。所有国家/地区,所有代理的销售都可以通过BSP做一个统一的付款给每一家航空公司,。
BSP系统为代理人也提供了一个统一标准旅行文档(Standard Traffic Document, STD)用来销售所有航空公司的机票。
代理人工作流程
1.为航空公司售票作准备
在代理人为航空公司销售机票之前,必须作如下准备:
申请一段电子客票号码段和一定数量的STD
代理机构从当地IATA(International Air Transport Association 国际航空运输协会)申请标准管理表格(Standard Administrative Forms),在一些地区还需要打票机和认证标牌
BSP替航空公司为代理人授予售票权利
代理机构要能够访问一个IATA许可的售票系统,比如说一个GDS(全球分发系统,Global Distribution System)
2. 代理人工作职能
每到一个汇报时间,代理人要汇报所有的售票和资金情况。这个过程可以电子化处理,也可以通过填写代理销售汇报表(Agency Sales Transmittal Form, ASTF)。所有的文档都会被发送到一个中央BSP数据处理中心(Data Processing Centre, DPC)
3. BSP处理过程
当DPC收到文档,从代理人优惠/退票报告或者GDS,售票系统以及其他自动系统中提取出客票和款项数据。
处理所有的相关数据,给每一个代理人生成一个代理人付款分析报告。这个分析报告是从一个或很多时间段生成的。
发送一个代理人销售报告表给每一家BSP航空公司。这个报告是从一个或很多时间段生成的。
检查STD的储备量,如果需要则补充。
4. 付款
代理人只需要做一次汇款就可以为他一段时间内所售的所有航空公司的机票进行支付。BSP首选支付方式是直接转账(Direct Debit)
5. 航空公司的后续工作
每个航空公司的会计部门审计收入数据。
217月/119

Linux系统工程师课程体系

发布在 邵珠庆

课程介绍:

本课程共计60课时,内容包括Linux系统管理、Linux网络管理和LAMP环境搭建及管理三部分。课程学习可掌握Linux系统管理,包括服 务器安装及部署、常用命令及使用技巧、文本编辑器Vim/Vi、系统引导流程、软件管理、用户和用户组管理、服务和进程管理、计划任务、文件系统管理与维 护、Shell编程等;Linux网络管理部分,包括网络管理命令、网络配置文件、互联网寻址机制解析、远程控制管理、文件共享服务等; LAMP环境搭建及管理部分,包括LAMP环境搭建、Apache服务器配置与管理、FTP服务器配置、安全设置、防火墙应用、典型互联网应用案例等。

学完本课程后,可配置和管理基于Linux架构的Web服务器及Linux各种应用服务器的日程管理工作。

课程特点:

 

  • 1. 课程设计注重实用性,针对实际企业应用
  • 2. 零基础即可学习,课程循序渐进,层层分解
  • 3. 案例式教学,以实际企业案例为导向
  • 4. 采用最新应用最广的Linux操作系统为例讲解
  • 5. 由易而难,课程注重学习者接受逻辑性设计,降低Linux学习难度
  • 6. 课程最后企业虚拟主机商服务应用案例串联所有讲解内容

预期目标:

 

  • 1. 掌握LAMP环境搭建及安全和优化设置
  • 2. 掌握Apache典型企业应用案例
  • 3. 掌握Linux及跨平台的文件系统备份及管理
  • 4. 掌握Linux常用的网络设置及管理
  • 5. 掌握Linux系统管理
  • 6. 熟悉运用Shell编程及计划任务实现自动化管理
  • 7. 了解Linux的应用领域及特点
  • 8. 掌握Linux系统常用故障排除

适合目标群体:

 

  • 1. PHP程序员,Web开发工程师
  • 2. 对计算机、互联网和Windows操作系统有基本了解的学生
  • 3. 网络管理员和技术支持工程师
  • 4. 对网络管理和Web开发有兴趣的本专科院校的大学生
  • 5. 对Linux有兴趣的开源爱好者

项目案例:

建立企业虚拟主机商服务

科目 内容 完成目标 课时(60) 课上实例
Linux系统管理
  • Linux应用简介
  • Linux服务器系统安装与部署
  • Linux常用命令
  •    -文件处理命令
  •    -权限管理命令
  •    -文件查找命令
  •    -帮助命令
  •    -压缩解压命令
  •    -网络命令
  •    -关机重启命令
  • Shell使用技巧
  • Vim/Vi文本编辑器应用

了解Linux系统特点及应用领域,掌握虚拟机软件的应用,掌握如何安装部署一台Linux服务器,学会远程登录管理软件的应用,掌握Linux常用命令操作及基本权限管理,掌握Shell命令使用技巧,熟悉文本编辑器Vim/Vi的应用与技巧。

12
  • 实训1:虚拟机软件安装与使用
  • 实训2:Linux服务器安装与部署实例
  • 实训3:Linux权限管理实例
  • 实训4:Linux问题解决思路实例
  • 实训5:Linux文件搜索实例
  • 实训6:Linux命令使用技巧实例
  • 实训7:Vim/Vi应用技巧实例
Linux系统管理
  • Linux系统引导流程解析
  • Linux运行级别管理及服务管理
  • Linux故障分析及解决方法
  • Linux软件包管理
  •    -二进制包管理
  •    -源代码包管理
  •    -脚本安装
  • Linux用户及用户组管理
  • Linux特殊权限设置及应用
  • 管理员授权管理
  • Linux服务与进程管理
  • 计划任务应用及典型案例
  • 文件系统管理与维护
  • 硬盘分区及设备管理
  • 磁盘配额应用

掌握Linux系统的所有管理知识。了解Linux引导流程每个步骤及错误分析,掌握各个运行级别及服务启动控制,掌握Linux各种软件包的安 装、卸载、升级、校验、查询和文件提取操作,熟悉Linux用户和用户组配置文件及命令操作,掌握管理员如何授权,掌握SetUID及粘着位等特殊权限应 用,掌握文件系统权限及ACL权限控制,掌握服务与进程管理命令,熟练计划任务编写,掌握Linux文件系统结构及文件系统操作命令,掌握日常硬件的添加 和管理,掌握磁盘配额设置。

24
  • 实训1:Linux系统修复实例
  • 实训2:系统服务定制
  • 实训3:Linux下各种软件包管理实例
  • 实训4:特殊权限应用实例
  • 实训5:企业计划任务案例剖析
  • 实训6:添加硬盘分区实例
  • 实训7:磁盘配额设置案例
  • 实训8:管理员授权典型应用
  • 实训9:备份与恢复典型案例
Shell编程
  • Shell脚本结构
  • Shell变量定义
  • Shell基本语法
  • Shell脚本调试
  • Shell典型应用案例

掌握编写Shell脚本及典型的企业自动化脚本实现

4
  • 实训1:计划任务与Shell脚本结合应用
  • 实训2:批量添加删除用户案例
  • 实训3:批量设置用户磁盘配额
  • 实训4:自动搜集系统信息与用户信息案例
  • 实训5:企业备份脚本案例
  • 实训6:自动化进程管理脚本
Linux网络管理
  • Linux网络管理命令
  • Linux网络配置文件
  • 互联网寻址机制解析
  • Linux文件共享服务
  •    -Samba服务器配置
  •    -FTP服务器配置
  •    -NFS服务器配置
  •    -SSH与rsync应用

可以完成Linux的网络配置,掌握互联网的寻址流程和原理,掌握如何通过Window远程管理Linux服务器,掌握如何构建FTP服务应用,掌握如何实现不同系统平台之间的文件共享,掌握企业自动化异地备份应用的实现。

8
  • 实训1:Linux网络配置应用实例
  • 实训2:FTP服务器应用实例
  • 实训3:Linux与Windows混合网络文件共享实例
  • 实训4:Linux/UNIX文件共享应用实例
  • 实训5:企业自动化异地备份应用典型案例
LAMP环境搭建及管理
  • LAMP环境搭建(Apache、MySQL和PHP源码包安装与优化)
  • Apache网站服务器的配置与管理
  • Web服务器的虚拟主机的实现
  • Apache站点登录控制
  • Linux系统安全
  • Netfilter/Iptables配置及应用实例

学会搭建LAMP环境,架设Apache服务器,实现Apache的典型应用,学会虚拟主机实现,学习站点登录控制实现。掌握Linux安全知识,学会配置Linux防火墙。

8
  • 实训1:LAMP工作环境搭建实例
  • 实训2:典型Apache服务器配置实例
  • 实训3:虚拟主机应用实例
  • 实训4:站点登录控制应用实例
  • 实训5:Apache优化实例
  • 实训6:防火墙配置应用案例
项目设计(综合复习)
  • 模拟虚拟主机商服务
搭建Linux服务器实现虚拟主机服务提供 4
  • 实训:架设企业虚拟主机应用

146月/100

通过对web日志的挖掘来实现内容推荐系统

发布在 邵珠庆

先说一说问题,不知道大家有没有这样的经验,反正我是经常碰到。

举例1,某些网站每隔几天就发邮件给我,每次发的邮件内容都是一些我根本不感兴趣的东西,我不甚其扰,对其深恶痛绝。
举例2,添加具有某功能的一个msn机器人,每天都有几次突然蹦出一个窗口,推荐一堆我根本不想知道的内容,烦不烦啊, 我只好将你阻止掉。

每一个观众只想看他感兴趣的东西,而不是一下与之无关的事物,那么如何才能知道观众的兴趣所在呢,还是数据挖掘,经过一番思考,终于有点思路,即根据用户 以往的浏览历史来预测用户将来的行为,也就是基于内容的推荐。
基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象 的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。 基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
基于内容推荐 方法的优点是:
1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
2)能为具有特殊兴趣爱好的用户进行推荐。
3)能推荐新的或不是很流行的项目,没有新项目问题。
4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情 况。

要实现内容推荐系统总体来说要经过4个大的步骤:
1 搜集数据,即搜集用户的行为资料,其中也包括很多方法,根据我找到的资料与以往的经验来看,web日志可以作为我们的切入点,即我们的数据来源。
2 过滤数据,web日志中有很多无用的信息,我们要把这些无用的信息排除掉,而且要区分出用户和日志数据之间的联系。
3 分析数据,利用分类聚类技术分析出这些日志数据之间的关联性,以及这些日志数据和用户之间的关联性,这也是最重要的一步。
4 输出结果。

有了这个思路之后,我们可以着手做第一步,即日志数据的收集
我们知道,大多数的web服务器都是有自己的日志记录的,比如说apache安装之后有一个logs目录,其中就有它的日志文件,一般说来它有自 己的一个格式,比如说:
1浏览器所在主机的 IP 地址(ip);
2访问日期和时间(date-time);
3客户机与服务器通信所用的方法(methed,get or post);
4客户机请求访问页面的 URL;
5服务器返回的状态(status);
6客户端浏览器的类型;
但是这个日志文件有一些不能克服的问题,或者我不知道如何克服,那么我先说说我的疑问,首先,这个日志文件中记录的是ip地址,据了解,网络中有很多计算 机的ip地址是相同的,因为他们在一个统一的路由后面,这个比例可能达到25%。那么我们就无法根据ip地址来唯一确定一个用户。其次,一般的web服务 器中都会用多个应用,那么其他应用的访问信息对我们来说有可能是多余的。再者,web服务器的日志形式比较单一,灵活性不大,可定制的余地很小,在日志数 据中有效数据所占的比例较小。还有,一些静态文件的请求也会被web服务器记录下来,比如说js文件,css文件,还有图片文件,等等这些东西对内容推荐 来说都是无用的资源。

基于上面3点原因,我认为可以自定义日志数据。为了解决用户唯一性,我们让应用为每一个浏览器生成一个clientId保存在对应的浏览器上,这样该浏览 器只要访问网站,我们就可以确定这个浏览器的唯一性,当然我们仍然不能确定浏览器使用者的唯一性,但是我们可以更进一步,如果浏览器的使用者登陆网站的 话,我们就可以使用用户id来确定用户的唯一性,不过大多数网站用户可能在使用网站的时候并不会登陆,我也是这样,没有关系,即使使用clientId问 题也不会太大,随着社会的发展,计算机的拥有量逐渐增加,一般来说一个人只会使用一台固定的电脑,在公司里尤其是这样。所以我认为clientId的方案 是可行的,也许有人要问,别人的浏览器禁止了cookie怎么办,那么我只能说没有办法,不过还好事实是绝大多数人都没有这样做。

接下来我们可以定义一下我们所需要的日志数据的格式,比如这样,
ip,clientId,userId,url,datetime,get or post等等。
这样数据有效性会大大提高。

在得到较为有效的数据之后,我们还需要对这些数据进行再次过滤:
1 去掉一些非内容的url,这些数据也是无效数据,这些非内容的url需要我们自己手工的统计出来,然后和日志数据中的数据进行比对,将这些非内容数据从日 志数据中清除出去。
2 同时我们也需要把post请求从日志数据中清除出去,或者我们在记录日志的时候根本不应该把post请求记录下来。
经过以上步骤之后我们就可以开始第3个阶段了,统计每个用户的访问的url,对这些url进行访问,得到对应的html中所包含的数据,这些数据都是文 本,将有用的文本提取出来,然后对这些有用的文本进行聚类。这样就可以得到每个用户喜欢的几个类别。

聚类完成之后我们就可以开始分类了,即把最新的文章或者内容和对应的类别进行匹配,匹配成功之后,我们可以认为这个新文章或者内容可以推荐给对应的用户。

问题:以上的流程只适用于没有使用缓存的系统,但是一般大型的网站都会使用varnish,squid等等,使用它们之后我们就无法得到用户访问的日志数 据了,所以如果使用了varnish或者squid,我们不得不再次面对web服务器的日志数据。

在不考虑varnish或者squid的情况下,使用lucene+jamon+htmlparse基本就可以实现以上推荐系统。