<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>互联网，请记住我 &#187; linux/unix</title>
	<atom:link href="http://www.162cm.com/archives/category/linuxunix/feed" rel="self" type="application/rss+xml" />
	<link>http://www.162cm.com</link>
	<description>一米六二的北漂生活</description>
	<pubDate>Fri, 09 Jan 2009 11:52:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux/Windows双系统并存方案:andLinux (不是虚拟机也不是双系统哦）</title>
		<link>http://www.162cm.com/archives/748.html</link>
		<comments>http://www.162cm.com/archives/748.html#comments</comments>
		<pubDate>Wed, 03 Dec 2008 15:36:38 +0000</pubDate>
		<dc:creator>xurenlu</dc:creator>
		
		<category><![CDATA[linux/unix]]></category>

		<category><![CDATA[colinux]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.162cm.com/?p=748</guid>
		<description><![CDATA[andLinux介绍:
1:来自linuxtoy:是一个基于 Ubuntu 的自由软件项目，其目的是让你不需要使用诸如 VMWare 之类的虚拟机就可以在 Windows 下运行 Linux，而且最有意思的是，你可以同时使用 Windows 和 Linux 而不需要像使用虚拟机那样来回切换！
2:andLinux实际上是Colinux的一个包装。coLinux是一个修改过的linux内核，修改后成为windows下的一个应用程序。然后其它linux进程就在这个内核的管理下运行。所以，这个colinux里运行的程序所能访问到的硬件就很有限了。但是colinux里跑的程序并不需要经过修改，也就是说，colinux里可以通过apt,yum等方式来安装，使用的就是debian,ubuntu,fedora的源。
3.andLinux基于colinux,是专门用coLinux来跑Ubuntu的。目前的版本就是Ubuntu 7.10,gutsy.和colinux相比，andLinux进行了一些更友好的设置，比如colinux默认的tap设备的ip取的太常见了，很多人装上就和原有网段冲突，andLinux就改的很好。
我已经成功地在XP sp2上安装好了andlinux.并成功设置好了中文显示和中文输入。具体过程介绍一下:
a:安装andLinux Kde版。有一步骤是要选择linux和windows的通信方式。我选择了cofs,并设置了D盘。
b:启动andLinux,然后注意看网上邻居里新增的网卡。这个网卡可能打开了防火墙。注意随时关闭这个防火墙。如果防火墙没有关闭，你将无法通过Xming运行需要X环境的软件。
c:安装中文环境：
以下从这里学来,感谢之.
首先，升级andLinux
    sudo apt-get update
然后安装中文基本包
   sudo apt-get install language-pack-zh
再安装kde的基本中文包
   sudo apt-get install language-pack-kde-zh-base language-pack-kde-zh
d:设置字体:
  安装wqy:
 apt-get install xfonts-wqy
 运行kcontrol,设置字体和区域。
e:好了，现在再启动andLinux应该能够显示中文了。但是中文还是无法输入啊！别着急，嘿嘿。
设置环境变量:
PATH=&#8221;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games&#8221;
LANG=&#8221;zh_CN.UTF-8&#8243;
LC_ALL=&#8221;zh_CN.UTF-8&#8243;
LANGUAGE=&#8221;zh_CN.UTF-8&#8243;
export XMODIFIERS=@im=fcitx

注意照着修改。嘿嘿。接着安装fcitx:
apt-get install fcitx.
f:试试:重新启动andLinux,在终端运行fcitx &#038;;怎么样，是不是出现了fcitx的小窗口?
恩，试试！
结果，还是打不出来中文啊!我试了好几次发现，fcitx也使用Ctrl+space切换的。于是，我先把windows的输入法换到英文，然后鼠标点击fcitx窗口的企鹅图标，哈哈，中文输入能用了！再按Ctrl+space,就能切换linux下的中英文了。
这里注意：如果fcitx启动了没报错却没有看到fcitx的窗口，请在windows里点击快速启动按钮的&#8221;回到桌面&#8221;小图标，这样所有窗口就都最小化了，这时再打开andLinux的终端。现在就能看到了。
好了，上几个图:
xfce4-terminal:


kcontrol:(现在我觉得kde也挺漂亮的嘛)

根据我的使用经验来看，确实值得一用。我最终选择XP+andlinux这样的方案的考虑是因为：在windows下我的声卡显卡都能发挥到最好，而且我可以玩下游戏腐败一下。另外我的手机和相机什么的设备也可以很好的工作。而且，作为一个网页开发人员，我确实需要IE.因此xp+andlinux是我最好的组合了。现在我启动andLinux主要是用一下终端下的vim,来搞搞编程。另外一些网络服务(lighttpd+php),运行在andlinux下。
]]></description>
			<content:encoded><![CDATA[<p>andLinux介绍:<br />
1:来自linuxtoy:是一个基于 Ubuntu 的自由软件项目，其目的是让你不需要使用诸如 VMWare 之类的虚拟机就可以在 Windows 下运行 Linux，而且最有意思的是，你可以同时使用 Windows 和 Linux 而不需要像使用虚拟机那样来回切换！<br />
2:andLinux实际上是Colinux的一个包装。coLinux是一个修改过的linux内核，修改后成为windows下的一个应用程序。然后其它linux进程就在这个内核的管理下运行。所以，这个colinux里运行的程序所能访问到的硬件就很有限了。但是colinux里跑的程序并不需要经过修改，也就是说，colinux里可以通过apt,yum等方式来安装，使用的就是debian,ubuntu,fedora的源。<br />
3.andLinux基于colinux,是专门用coLinux来跑Ubuntu的。目前的版本就是Ubuntu 7.10,gutsy.和colinux相比，andLinux进行了一些更友好的设置，比如colinux默认的tap设备的ip取的太常见了，很多人装上就和原有网段冲突，andLinux就改的很好。<br />
我已经成功地在XP sp2上安装好了andlinux.并成功设置好了中文显示和中文输入。具体过程介绍一下:<br />
a:安装andLinux Kde版。有一步骤是要选择linux和windows的通信方式。我选择了cofs,并设置了D盘。<br />
b:启动andLinux,然后注意看网上邻居里新增的网卡。这个网卡可能打开了防火墙。注意随时关闭这个防火墙。如果防火墙没有关闭，你将无法通过Xming运行需要X环境的软件。<br />
c:安装中文环境：<br />
以下从<a href="http://www.cnblogs.com/bigshow/archive/2008/11/01/1324450.html">这里</a>学来,感谢之.</p>
<blockquote><p>首先，升级andLinux<br />
    sudo apt-get update<br />
然后安装中文基本包<br />
   sudo apt-get install language-pack-zh<br />
再安装kde的基本中文包<br />
   sudo apt-get install language-pack-kde-zh-base language-pack-kde-zh</p></blockquote>
<p>d:设置字体:<br />
  安装wqy:<br />
 apt-get install xfonts-wqy<br />
 运行kcontrol,设置字体和区域。<br />
e:好了，现在再启动andLinux应该能够显示中文了。但是中文还是无法输入啊！别着急，嘿嘿。<br />
设置环境变量:</p>
<blockquote><p>PATH=&#8221;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games&#8221;<br />
LANG=&#8221;zh_CN.UTF-8&#8243;<br />
LC_ALL=&#8221;zh_CN.UTF-8&#8243;<br />
LANGUAGE=&#8221;zh_CN.UTF-8&#8243;<br />
export XMODIFIERS=@im=fcitx
</p></blockquote>
<p>注意照着修改。嘿嘿。接着安装fcitx:<br />
apt-get install fcitx.<br />
f:试试:重新启动andLinux,在终端运行fcitx &#038;;怎么样，是不是出现了fcitx的小窗口?<br />
恩，试试！<br />
结果，还是打不出来中文啊!我试了好几次发现，fcitx也使用Ctrl+space切换的。于是，我先把windows的输入法换到英文，然后鼠标点击fcitx窗口的企鹅图标，哈哈，中文输入能用了！再按Ctrl+space,就能切换linux下的中英文了。<br />
这里注意：如果fcitx启动了没报错却没有看到fcitx的窗口，请在windows里点击快速启动按钮的&#8221;回到桌面&#8221;小图标，这样所有窗口就都最小化了，这时再打开andLinux的终端。现在就能看到了。<br />
好了，上几个图:</p>
<p>xfce4-terminal:<br />
<a href="http://www.162cm.com/wp-content/uploads/2008/12/andlinux1.gif"><img src="http://www.162cm.com/wp-content/uploads/2008/12/andlinux1-300x187.gif" alt="" title="andlinux1" width="300" height="187" class="alignnone size-medium wp-image-749" /></a><br />
<Br><br />
kcontrol:(现在我觉得kde也挺漂亮的嘛)<br />
<a href="http://www.162cm.com/wp-content/uploads/2008/12/andlinux2.gif"><img src="http://www.162cm.com/wp-content/uploads/2008/12/andlinux2-300x187.gif" alt="" title="andlinux2" width="300" height="187" class="alignnone size-medium wp-image-750" /></a><br />
根据我的使用经验来看，确实值得一用。我最终选择XP+andlinux这样的方案的考虑是因为：在windows下我的声卡显卡都能发挥到最好，而且我可以玩下游戏腐败一下。另外我的手机和相机什么的设备也可以很好的工作。而且，作为一个网页开发人员，我确实需要IE.因此xp+andlinux是我最好的组合了。现在我启动andLinux主要是用一下终端下的vim,来搞搞编程。另外一些网络服务(lighttpd+php),运行在andlinux下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.162cm.com/archives/748.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>LinuxQQ已发布预览版</title>
		<link>http://www.162cm.com/archives/670.html</link>
		<comments>http://www.162cm.com/archives/670.html#comments</comments>
		<pubDate>Thu, 31 Jul 2008 05:19:29 +0000</pubDate>
		<dc:creator>xurenlu</dc:creator>
		
		<category><![CDATA[linux/unix]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[QQ]]></category>

		<guid isPermaLink="false">http://www.162cm.com/?p=670</guid>
		<description><![CDATA[这是腾迅官方出来的QQ for linux,下载地址：
http://im.qq.com/qq/linux/download.shtml
]]></description>
			<content:encoded><![CDATA[<p>这是腾迅官方出来的QQ for linux,下载地址：<br />
http://im.qq.com/qq/linux/download.shtml</p>
]]></content:encoded>
			<wfw:commentRss>http://www.162cm.com/archives/670.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux 声卡设置(喇叭和耳机同时出声的解决)</title>
		<link>http://www.162cm.com/archives/661.html</link>
		<comments>http://www.162cm.com/archives/661.html#comments</comments>
		<pubDate>Tue, 08 Jul 2008 10:17:34 +0000</pubDate>
		<dc:creator>xurenlu</dc:creator>
		
		<category><![CDATA[linux/unix]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.162cm.com/?p=661</guid>
		<description><![CDATA[本本声卡比较新，windows下装上官方驱动才能使，在linux倒是有声，就是音箱和耳机一起响，上班时没法听音乐。后来终于解决了这个问题，记录一下过程:
1:
运行lsmod&#124;grep snd,结果是:
snd_hda_intel         457780  4
snd_usb_audio         100608  0
snd_usb_lib            24960  1 snd_usb_audio
snd_rawmidi            30336  1 snd_usb_lib
&#8230;
事先知道声卡就是intel了，那就只记下第一行的snd_hda_intel这个名称。
2.
然后再查看:
 cat [...]]]></description>
			<content:encoded><![CDATA[<p>本本声卡比较新，windows下装上官方驱动才能使，在linux倒是有声，就是音箱和耳机一起响，上班时没法听音乐。后来终于解决了这个问题，记录一下过程:</p>
<p>1:<br />
运行lsmod|grep snd,结果是:<br />
snd_hda_intel         457780  4<br />
snd_usb_audio         100608  0<br />
snd_usb_lib            24960  1 snd_usb_audio<br />
snd_rawmidi            30336  1 snd_usb_lib<br />
&#8230;<br />
事先知道声卡就是intel了，那就只记下第一行的snd_hda_intel这个名称。</p>
<p>2.<br />
然后再查看:<br />
 cat /proc/asound/card0/codec#1|head<br />
结果是:<br />
Codec: Realtek ALC883<br />
Address: 1<br />
Vendor Id: 0&#215;10ec0883<br />
Subsystem Id: 0&#215;10190000<br />
&#8230;<br />
。<br />
接着下载alsa源代码中的一个文档，我是下载了alsa-driver的源码代码，然后在<br />
alsa-driver-1.0.16/alsa-kernel/Documentation/中找到了ALSA-Configuration.txt<br />
文件。<br />
然后:<br />
vim ALSA-Configuration.txt ,<br />
搜索alc833，找到:<br />
  ALC883/888<br />
      3stack-dig    3-jack with SPDIF I/O<br />
      6stack-dig    6-jack digital with SPDIF I/O<br />
      3stack-6ch    3-jack 6-channel<br />
      3stack-6ch-dig 3-jack 6-channel with SPDIF I/O<br />
      6stack-dig-demo  6-jack digital for Intel demo board<br />
      acer      Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)<br />
      acer-aspire   Acer Aspire 9810<br />
      medion    Medion Laptops<br />
      medion-md2    Medion MD2<br />
      targa-dig Targa/MSI<br />
      targa-2ch-dig Targs/MSI with 2-channel<br />
      laptop-eapd   3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE)<br />
      lenovo-101e   Lenovo 101E<br />
      lenovo-nb0763 Lenovo NB0763<br />
      lenovo-ms7195-dig Lenovo MS7195<br />
      haier-w66 Haier W66<br />
&#8230;<br />
好了，我的本本就是haier的，估计haier的就都是用的同一种芯片。于是我记下,haier-w66。<br />
3:<br />
再打开:vim /etc/modprobe.conf<br />
加入一行:<br />
options snd-hda-intel model=haier-w66<br />
再重启，音箱和耳机可以单独控制音量了。</p>
<p>由于系统的不同，上面的各文件的路径可能略有不同。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.162cm.com/archives/661.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Spread学习系列[1]-SP_receive函数说明</title>
		<link>http://www.162cm.com/archives/660.html</link>
		<comments>http://www.162cm.com/archives/660.html#comments</comments>
		<pubDate>Sat, 05 Jul 2008 14:17:15 +0000</pubDate>
		<dc:creator>xurenlu</dc:creator>
		
		<category><![CDATA[linux/unix]]></category>

		<category><![CDATA[C]]></category>

		<category><![CDATA[spread]]></category>

		<guid isPermaLink="false">http://www.162cm.com/?p=660</guid>
		<description><![CDATA[接在Spread 简介(试译)之后，我跟啃骨头一样一点点儿地把SP_receive的man文档看完了。
这是我做的笔记，基本就是原文翻译，但是我英文太差，翻得太烂了点:(
SP_receive
NAME
       SP_receive, SP_scat_receive - Receive message from Spread
SYNOPSIS
       #include 
       int     SP_receive(     mailbox     mbox,     service    *service_type,  [...]]]></description>
			<content:encoded><![CDATA[<p>接在<a href="http://www.162cm.com/archives/656.html">Spread 简介(试译)</a>之后，我跟啃骨头一样一点点儿地把SP_receive的man文档看完了。<br />
这是我做的笔记，基本就是原文翻译，但是我英文太差，翻得太烂了点:(<br />
SP_receive<br />
NAME<br />
       SP_receive, SP_scat_receive - Receive message from Spread</p>
<p>SYNOPSIS<br />
       #include <sp.h></p>
<p>       int     SP_receive(     mailbox     mbox,     service    *service_type,    char sender[MAX_GROUP_NAME],    int    max_groups,     int     *num_groups,     char groups[][MAX_GROUP_NAME],   int16   *mess_type,   int   *endian_mismatch,   int max_mess_len, char *mess);</p>
<p>       int   SP_scat_receive(    mailbox    mbox,    service    *service_type,    char sender[MAX_GROUP_NAME],     int     max_groups,     int    *num_groups,    char groups[][MAX_GROUP_NAME],  int16  *mess_type,  int  *endian_mismatch,   scatter *scat_mess);</p>
<p>DESCRIPTION<br />
	SP_receive 函数主要实现接收消息的功能。这个函数不仅接收数据消息，也接收成员关系数据。当前连接所在的所有组的消息都会到达同一个<br />
&#8220;收件箱&#8221;,因此SP_receive函数一次会从任意一个组中间取回一条消息。当接收完成后，一些成员变量会被设置值，以标记这条消息的各种属性。<br />
	因为这个函数是程序从spread 系统中取回消息的唯一渠道，因此在Spread中的应用也是最复杂的。基于这条消息是数据消息，还是成员关系消息，许多<br />
参数的含义都会改变。<br />
	没有消息到达的时候，SP_receive函数会阻塞。<br />
	mbox参数指定了要在哪个(spread)连接上获取消息。Service_type是指向一个变量的指针，这个变量会<br />
	指出当前接收到的消息是&#8221;数据消息“，还是成员关系消息。这个变量要么是REG_MESSAGE，要么是<br />
	MEMBER_SHIP_MESS，当然会是特定的类型.这个变量也是一个输入参数，在一般的情况下应该被置为0。如果您置为&#8221;DROP_RECV&#8221;,则表示您愿意接收“不可信消息&#8221;,这可能导般如果为消息或组列表分配的缓冲不够的话，消息会被清空。更多关于DROP_RECV的介绍会在后面提到。<br />
	后面的参数的含义是依赖于service_type这个变量的取值的.如果service_type的取值是REG_MESSAGE(比如数据消息),那么:<br />
	sender参数是一个指向字符的指针，至少需要能容纳MAX_GROUP_NAME个字符。（很拗口吧?其实就是一个长度至为MAX_GROUP_NAME的字符串&#8230;)<br />
	这个参数将会被设置成为消息发送方的名称(它的组内名称)<br />
	max_groups参数是你为groups参数分配的地址所能容纳的最大的组的个数。<br />
	Num_groups是一个整型指针,指向在groups参数中返回的组的个数。<br />
	groups 参数可以容纳max_groups个组名,每个组名是一个最多有MAX_GROUP_NAME个字符的字符串。所有接收这个消息的组都会被更在这儿，除非数组太小（此时groups尽可能多地接纳至到它满了为止，并且<br />
num_groups会设为负的值).比如，如果你的groups数组能接收5个数组名，而这个消息被7个组接收，前5个组的名字会存在groups这个数组中，num_groups会被设为-7.</p>
<p>   真正的消息内容存在命名为mess的缓冲区中，这个缓冲区最少要有max_mess个字节。如果接收的消息的长度要比这个缓冲区大，默认将会返回BUFFER_TOO_SHOFT错误，并在endian_mismatch字域中提供需要的长度。如果DROP_RECV标记被在service_type中传进来，那么mess会尽量多地存储消息内容，多余的内容会被丢弃掉，同时，SP_receive的返回值会指示一个错误。如果使用SP_scat_receive,那么mess和length参数会被一个scat_mess scatter结构体所取代，这个结构会存储它收到的消息和消息的长度。它们会被以接收的次序存储。<br />
	如果是MEMB_MESSAGE(比如,成员关系消息),并且特别指出是TRANS_MESS,那么:<br />
		sender这个字符数据（字符串）就会设置为成员关系发生变化的组的名字。<br />
		max_groups和max_mess_len参数没有用，num_groups会是0，而groups参数因为当前正处于变动之中，暂时没有<br />
	了正常的组，由sender参数取代。mess_type参数设为-1,endian_mismatch参数为0（也因为组关系处于变动之中).mess参数只包含<br />
	关系变化作用的group的group_id。因此消息体就是:<br />
		group_id;</p>
<p>		因此本质上你所得到的信息就是通过sender参数和group_id值反映的哪个组产生了变动。</p>
<p>		TRANS_MEMB_MESS 的重要性在于，它告诉应用程序，在它之后，在来自同一组的REG_MEMB_MESS之前,接收到的消息都是&#8217;clean up&#8217;消息，这些消息在真正改变成员关系之前需要保持常态。请阅读其他文档或研究文献以得到更多相关资料。</p>
<p>	如果这是一条MEMB_MESSAGE(比如成员关系消息)并且指定了是REG_MEMB_MESS,那么:<br />
	sender 字符数组指定了成员关系发生改变的组的名称。<br />
	max_groups和max_mess_len参数的含义跟前面一样，mess_type参数设定为当前进程在组成员数组中的索引。endian_mismatch会再次设为0.<br />
	groups参数和mess内容用来提供当前组内发生的变化的两种信息。num_groups参数设置为新成员关系中的当前组的成员数（指变动发生后）。相对地，groups 这个数组会被设置为新成员关系中当前组的所有成员的组内名称。这个名称的顺序常常是按接收方的顺序排序的，这样当程序需要一个做代表时就能取一个出来。不同的Spread版本的顺序不同，当前版本的首先按连接到守护进程的顺序，其次是它的私有名称。守护进程的顺序是按照它们在spread.conf文件中列出来的顺序排列的。<br />
	第二类信息存储在消息体中，提供了当前进程中所有私有组名称，这些名称从原来的成员关系迁到了新的成员关系中。<br />
	所有的内容都一个挨一个地放在message缓冲中。因为这个结构在各个版本中经常变，最好的处理办法就是使用<br />
	我们提供的解析函数来将消息体翻译成定义好的描述成员关系的结构体。解析函数有两个变量，一个用来处理字<br />
	节流，一个用来处理scatters格式的消息体。<br />
			SP_get_memb_info<br />
			SP_get_vs_sets_info<br />
			SP_get_vs_set_members<br />
			SP_scat_get_memb_info<br />
	这四个函数填入标准的应用程序用来设置以成员关系的gid和vs信息的结构体。<br />
              SP_scat_get_vs_sets_info<br />
              SP_scat_get_vs_set_members</p>
<p>	这样，如果一个程序需要得到它自己的vs_set(Spread版本4之前提供的信息)，他们可以被两个函数调用来文档化。先用SP_get_memb_info然后用SP_get_vs_set_members;</p>
<p>	每个vs_set定义成若干成员和一个成员关系字符数组(字符串)。这个数组的类型是char members[][MAX_GROUP_NAME];<br />
	每个成员关系型的消息都可能含有一系列的vs_sets,当一个网络合并动作发生时,几个不同的部分可能同时发生合并，每个区块都有它自己的成员集合，这些既有旧成员关系的又有新成员关系的。<br />
	如果你想自行解析这个成员关系消息内容，下面的段落指出了当前的数据格式。这个格式肯定会改变(过去已经改变过好几次了），我们不对未来的改变做保证。如果您想自行解析数据，在更新Spread的版本时您需要更新您的代码。<br />
	成员关系消息体包含以下几段（它们是有顺序的）。每一段数据都是一个结构体，或者是一个整数（是整数时,一定是一个32位无符号的整数）。vs sets是这样定义的:<br />
		group_id gid;<br />
		unsigned int num_vs_sets;<br />
		unsigned int local_vs_set_offset;<br />
		以及一系列vs_sets;<br />
	所有的vs_sets都序列地存在成员关系消息体中，读完了一个vs_set,另一个vs_set就在下一个字节开始了。<br />
	每一个vs_set都以一下整数num_vs_members开始，因而程序能够得到members数组的长度来进行读取。<br />
		unsigned int num_vs_members;<br />
		char members[][MAX_GROUP_NAME]</p>
<p>		vs_set members数组有num_vs_members个组名，每一个都是一个固定长度的字符串。vs_set members<br />
	数组的内容取决于成员关系变更的类型：<br />
	    CAUSED_BY_JOIN:<br />
			vs_set包含有加入进来的进程的私有组名。<br />
        CAUSED_BY_LEAVE:<br />
			vs_set包含有退出的进程的私有组名。<br />
        CAUSED_BY_DISCONNECT:<br />
			vs_set 包含有关闭连接的进程的私有组名。<br />
        CAUSED_BY_NETWORK:<br />
			vs_set包含有形成新成员关系的各个成员组的组名称。每个加入的成员集合都有一个vs_set对应。包含有本地应用程序的私有组名的vs_set会有后来加入的成员。<br />
		如果这是一条MEMB_MESSAGE但是既不是REG_MEMB_MESS也不是TRANS_MEMB_MESS,那这就表明这种情形是接收消息的成员离开了组，这是一条通知消息。这种有时被称作”闪人通知”。<br />
		这个成员刚刚离开的组的成员们会收到一个正常的TRANS_MEMB_MESS,REG_MEMB_MESS消息对，就跟前面描述的一样。<br />
	SP_receive的参数如下:<br />
		sender参数就是成员关系发生改变的组的名字。<br />
		mess_type and endian_mismatch fields will again be set to 0.<br />
		max_groups和max_mess_len参数的含义与原来一样，mess_type和endian_dismatch参数再次置为0.<br />
		groups数组和消息体提供发生变动的组的两种信息。num_groups会置为0,groups数组会置为0（既然这个成员不再是组的一个成员了。mess的消息体内容也是空。</p>
<p>	返回值:返回返回消息的长度（当成功时）或在失败时返回以下任何一个：<br />
    ILLEGAL_SESSION<br />
		指定的mbox不正确。<br />
	ILLEGAL_MESSAGE<br />
		消息包含一个正常的结构，比如一个scatter结构没有正确填充。<br />
    CONNECTION_CLOSED<br />
		在通信时发生了连接错误，接收无法完成。<br />
    GROUPS_TOO_SHORT<br />
		如果你的groups数组设定的太小了无法存下返回的数组，会返回一个GROUPS_TOO_SHORT的错误。<br />
		这时num_groups会返回负数。<br />
	BUFFER_TOO_SHORT<br />
		如果消息体缓冲(mess)设置的太短,存不下返回的消息时，会返回这个错误，就会返回这个错误，同时endian_mismatch参数会设置为需要的缓冲的长度。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.162cm.com/archives/660.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Spread 简介(试译)</title>
		<link>http://www.162cm.com/archives/656.html</link>
		<comments>http://www.162cm.com/archives/656.html#comments</comments>
		<pubDate>Thu, 19 Jun 2008 09:38:46 +0000</pubDate>
		<dc:creator>xurenlu</dc:creator>
		
		<category><![CDATA[linux/unix]]></category>

		<category><![CDATA[perl]]></category>

		<category><![CDATA[C]]></category>

		<category><![CDATA[spread]]></category>

		<guid isPermaLink="false">http://www.162cm.com/?p=656</guid>
		<description><![CDATA[   	项目网站:http://www.spread.org/
    Spread 是一个开源工具,它提供高性能的的消息服务,这种服务在局域网和广域网上能有效地避够失效。它在分布式程序中充当一个统一的消息总线的角色,并且提供高调谐的应用级的消息多路播送、组通讯、点到点支持。Spread的应用范围既包括高可靠的消息传送，也包括有序消息的传输(有保证).
    Spread可用在许多需要高可靠性,高性能,以及各种子集和成员之间健壮的消息传播的分布式程序中。这个工具封装了异步网络的复杂性,便于创建可高靠和可扩展性的分布式程序.
   Spread包含:一些需要被用户程序包含的库文件,一个守护进程(它需要运行在这个一组应用的每台机器上),以及一些工具和演示程序。
Spread提供的功能和便利有:
	可靠的、可扩展地消息传播和组通讯。
	可以简化分布式程序架构的简单而功能强大的API
	易于使用,开发和维护
	从本地局域网到复杂的广域网的可扩展性
	支持有不同数目的成员的上千个组
	提供在机器失效、应用崩溃和网络划分、重组时的可靠的消息传送的能力
	为消息传送提供了可靠和排序、稳定保证。
	重视健壮性和高性能
	完全的分布式算法，不会有中央节点失效风险
	为什么使用Spread
	* 功能强大而简单的API.只需要六个基本的调用就可以使用Spread了!
	* Spread做了优先，在本地局域网中可以支撑每秒8000个1Kbytes的消息
	* 在网络划分或系统某部分失效时的可靠性和可用性，不管系统是由几台电脑构成的cluster,或是一些cluster,还是分布于广域网的几千台电脑组成的系统。
	* 允许系统无缝地增长扩容而不需要改变架构.
	* Spread允许单播,多播,多组多播,scatter-gather calls,或是多路查询。
	* Spread能处理网络和机器的重新划分并且能够安全地重新组合，能通知应用当前的状态.
	* 跨平台:Spread 支持跨平台的操作:Unix( BSD,Linux,Solaris,Irix,AIX,Mac OS X,etc)和Windows(2000/NT/98/95)
	* Spread当前有C/C++,C#,Java,Perl,Python和Ruby的编程接口.
]]></description>
			<content:encoded><![CDATA[<blockquote><p>   	项目网站:http://www.spread.org/</p></blockquote>
<p>    Spread 是一个开源工具,它提供高性能的的消息服务,这种服务在局域网和广域网上能有效地避够失效。它在分布式程序中充当一个统一的消息总线的角色,并且提供高调谐的应用级的消息多路播送、组通讯、点到点支持。Spread的应用范围既包括高可靠的消息传送，也包括有序消息的传输(有保证).<br />
    Spread可用在许多需要高可靠性,高性能,以及各种子集和成员之间健壮的消息传播的分布式程序中。这个工具封装了异步网络的复杂性,便于创建可高靠和可扩展性的分布式程序.<br />
   Spread包含:一些需要被用户程序包含的库文件,一个守护进程(它需要运行在这个一组应用的每台机器上),以及一些工具和演示程序。<br />
<strong>Spread提供的功能和便利有:</strong><br />
	可靠的、可扩展地消息传播和组通讯。<br />
	可以简化分布式程序架构的简单而功能强大的API<br />
	易于使用,开发和维护<br />
	从本地局域网到复杂的广域网的可扩展性<br />
	支持有不同数目的成员的上千个组<br />
	提供在机器失效、应用崩溃和网络划分、重组时的可靠的消息传送的能力<br />
	为消息传送提供了可靠和排序、稳定保证。<br />
	重视健壮性和高性能<br />
	完全的分布式算法，不会有中央节点失效风险</p>
<p><strong>	为什么使用Spread</strong><br />
	* 功能强大而简单的API.只需要六个基本的调用就可以使用Spread了!<br />
	* Spread做了优先，在本地局域网中可以支撑每秒8000个1Kbytes的消息<br />
	* 在网络划分或系统某部分失效时的可靠性和可用性，不管系统是由几台电脑构成的cluster,或是一些cluster,还是分布于广域网的几千台电脑组成的系统。<br />
	* 允许系统无缝地增长扩容而不需要改变架构.<br />
	* Spread允许单播,多播,多组多播,scatter-gather calls,或是多路查询。<br />
	* Spread能处理网络和机器的重新划分并且能够安全地重新组合，能通知应用当前的状态.<br />
	* 跨平台:Spread 支持跨平台的操作:Unix( BSD,Linux,Solaris,Irix,AIX,Mac OS X,etc)和Windows(2000/NT/98/95)<br />
	* Spread当前有C/C++,C#,Java,Perl,Python和Ruby的编程接口.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.162cm.com/archives/656.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
