Author Archive

 
Jul
08
Posted (xurenlu) in 未分类 on 07月-8-2008

本本声卡比较新,windows下装上官方驱动才能使,在linux倒是有声,就是音箱和耳机一起响,上班时没法听音乐。后来终于解决了这个问题,记录一下过程:

1:
运行lsmod|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

事先知道声卡就是intel了,那就只记下第一行的snd_hda_intel这个名称。

2.
然后再查看:
cat /proc/asound/card0/codec#1|head
结果是:
Codec: Realtek ALC883
Address: 1
Vendor Id: 0×10ec0883
Subsystem Id: 0×10190000


接着下载alsa源代码中的一个文档,我是下载了alsa-driver的源码代码,然后在
alsa-driver-1.0.16/alsa-kernel/Documentation/中找到了ALSA-Configuration.txt
文件。
然后:
vim ALSA-Configuration.txt ,
搜索alc833,找到:
ALC883/888
3stack-dig 3-jack with SPDIF I/O
6stack-dig 6-jack digital with SPDIF I/O
3stack-6ch 3-jack 6-channel
3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
6stack-dig-demo 6-jack digital for Intel demo board
acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
acer-aspire Acer Aspire 9810
medion Medion Laptops
medion-md2 Medion MD2
targa-dig Targa/MSI
targa-2ch-dig Targs/MSI with 2-channel
laptop-eapd 3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE)
lenovo-101e Lenovo 101E
lenovo-nb0763 Lenovo NB0763
lenovo-ms7195-dig Lenovo MS7195
haier-w66 Haier W66

好了,我的本本就是haier的,估计haier的就都是用的同一种芯片。于是我记下,haier-w66。
3:
再打开:vim /etc/modprobe.conf
加入一行:
options snd-hda-intel model=haier-w66
再重启,音箱和耳机可以单独控制音量了。

由于系统的不同,上面的各文件的路径可能略有不同。


Tag:lenovo 然后 就是 找到 不同 stack- ch-dig aspire 记下 medion 
相关文章


 
Jul
05
Posted (xurenlu) in 未分类 on 07月-5-2008

接在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, 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);

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);

DESCRIPTION
SP_receive 函数主要实现接收消息的功能。这个函数不仅接收数据消息,也接收成员关系数据。当前连接所在的所有组的消息都会到达同一个
“收件箱”,因此SP_receive函数一次会从任意一个组中间取回一条消息。当接收完成后,一些成员变量会被设置值,以标记这条消息的各种属性。
因为这个函数是程序从spread 系统中取回消息的唯一渠道,因此在Spread中的应用也是最复杂的。基于这条消息是数据消息,还是成员关系消息,许多
参数的含义都会改变。
没有消息到达的时候,SP_receive函数会阻塞。
mbox参数指定了要在哪个(spread)连接上获取消息。Service_type是指向一个变量的指针,这个变量会
指出当前接收到的消息是”数据消息“,还是成员关系消息。这个变量要么是REG_MESSAGE,要么是
MEMBER_SHIP_MESS,当然会是特定的类型.这个变量也是一个输入参数,在一般的情况下应该被置为0。如果您置为”DROP_RECV”,则表示您愿意接收“不可信消息”,这可能导般如果为消息或组列表分配的缓冲不够的话,消息会被清空。更多关于DROP_RECV的介绍会在后面提到。
后面的参数的含义是依赖于service_type这个变量的取值的.如果service_type的取值是REG_MESSAGE(比如数据消息),那么:
sender参数是一个指向字符的指针,至少需要能容纳MAX_GROUP_NAME个字符。(很拗口吧?其实就是一个长度至为MAX_GROUP_NAME的字符串…)
这个参数将会被设置成为消息发送方的名称(它的组内名称)
max_groups参数是你为groups参数分配的地址所能容纳的最大的组的个数。
Num_groups是一个整型指针,指向在groups参数中返回的组的个数。
groups 参数可以容纳max_groups个组名,每个组名是一个最多有MAX_GROUP_NAME个字符的字符串。所有接收这个消息的组都会被更在这儿,除非数组太小(此时groups尽可能多地接纳至到它满了为止,并且
num_groups会设为负的值).比如,如果你的groups数组能接收5个数组名,而这个消息被7个组接收,前5个组的名字会存在groups这个数组中,num_groups会被设为-7.

真正的消息内容存在命名为mess的缓冲区中,这个缓冲区最少要有max_mess个字节。如果接收的消息的长度要比这个缓冲区大,默认将会返回BUFFER_TOO_SHOFT错误,并在endian_mismatch字域中提供需要的长度。如果DROP_RECV标记被在service_type中传进来,那么mess会尽量多地存储消息内容,多余的内容会被丢弃掉,同时,SP_receive的返回值会指示一个错误。如果使用SP_scat_receive,那么mess和length参数会被一个scat_mess scatter结构体所取代,这个结构会存储它收到的消息和消息的长度。它们会被以接收的次序存储。
如果是MEMB_MESSAGE(比如,成员关系消息),并且特别指出是TRANS_MESS,那么:
sender这个字符数据(字符串)就会设置为成员关系发生变化的组的名字。
max_groups和max_mess_len参数没有用,num_groups会是0,而groups参数因为当前正处于变动之中,暂时没有
了正常的组,由sender参数取代。mess_type参数设为-1,endian_mismatch参数为0(也因为组关系处于变动之中).mess参数只包含
关系变化作用的group的group_id。因此消息体就是:
group_id;

因此本质上你所得到的信息就是通过sender参数和group_id值反映的哪个组产生了变动。

TRANS_MEMB_MESS 的重要性在于,它告诉应用程序,在它之后,在来自同一组的REG_MEMB_MESS之前,接收到的消息都是’clean up’消息,这些消息在真正改变成员关系之前需要保持常态。请阅读其他文档或研究文献以得到更多相关资料。

如果这是一条MEMB_MESSAGE(比如成员关系消息)并且指定了是REG_MEMB_MESS,那么:
sender 字符数组指定了成员关系发生改变的组的名称。
max_groups和max_mess_len参数的含义跟前面一样,mess_type参数设定为当前进程在组成员数组中的索引。endian_mismatch会再次设为0.
groups参数和mess内容用来提供当前组内发生的变化的两种信息。num_groups参数设置为新成员关系中的当前组的成员数(指变动发生后)。相对地,groups 这个数组会被设置为新成员关系中当前组的所有成员的组内名称。这个名称的顺序常常是按接收方的顺序排序的,这样当程序需要一个做代表时就能取一个出来。不同的Spread版本的顺序不同,当前版本的首先按连接到守护进程的顺序,其次是它的私有名称。守护进程的顺序是按照它们在spread.conf文件中列出来的顺序排列的。
第二类信息存储在消息体中,提供了当前进程中所有私有组名称,这些名称从原来的成员关系迁到了新的成员关系中。
所有的内容都一个挨一个地放在message缓冲中。因为这个结构在各个版本中经常变,最好的处理办法就是使用
我们提供的解析函数来将消息体翻译成定义好的描述成员关系的结构体。解析函数有两个变量,一个用来处理字
节流,一个用来处理scatters格式的消息体。
SP_get_memb_info
SP_get_vs_sets_info
SP_get_vs_set_members
SP_scat_get_memb_info
这四个函数填入标准的应用程序用来设置以成员关系的gid和vs信息的结构体。
SP_scat_get_vs_sets_info
SP_scat_get_vs_set_members

这样,如果一个程序需要得到它自己的vs_set(Spread版本4之前提供的信息),他们可以被两个函数调用来文档化。先用SP_get_memb_info然后用SP_get_vs_set_members;

每个vs_set定义成若干成员和一个成员关系字符数组(字符串)。这个数组的类型是char members[][MAX_GROUP_NAME];
每个成员关系型的消息都可能含有一系列的vs_sets,当一个网络合并动作发生时,几个不同的部分可能同时发生合并,每个区块都有它自己的成员集合,这些既有旧成员关系的又有新成员关系的。
如果你想自行解析这个成员关系消息内容,下面的段落指出了当前的数据格式。这个格式肯定会改变(过去已经改变过好几次了),我们不对未来的改变做保证。如果您想自行解析数据,在更新Spread的版本时您需要更新您的代码。
成员关系消息体包含以下几段(它们是有顺序的)。每一段数据都是一个结构体,或者是一个整数(是整数时,一定是一个32位无符号的整数)。vs sets是这样定义的:
group_id gid;
unsigned int num_vs_sets;
unsigned int local_vs_set_offset;
以及一系列vs_sets;
所有的vs_sets都序列地存在成员关系消息体中,读完了一个vs_set,另一个vs_set就在下一个字节开始了。
每一个vs_set都以一下整数num_vs_members开始,因而程序能够得到members数组的长度来进行读取。
unsigned int num_vs_members;
char members[][MAX_GROUP_NAME]

vs_set members数组有num_vs_members个组名,每一个都是一个固定长度的字符串。vs_set members
数组的内容取决于成员关系变更的类型:
CAUSED_BY_JOIN:
vs_set包含有加入进来的进程的私有组名。
CAUSED_BY_LEAVE:
vs_set包含有退出的进程的私有组名。
CAUSED_BY_DISCONNECT:
vs_set 包含有关闭连接的进程的私有组名。
CAUSED_BY_NETWORK:
vs_set包含有形成新成员关系的各个成员组的组名称。每个加入的成员集合都有一个vs_set对应。包含有本地应用程序的私有组名的vs_set会有后来加入的成员。
如果这是一条MEMB_MESSAGE但是既不是REG_MEMB_MESS也不是TRANS_MEMB_MESS,那这就表明这种情形是接收消息的成员离开了组,这是一条通知消息。这种有时被称作”闪人通知”。
这个成员刚刚离开的组的成员们会收到一个正常的TRANS_MEMB_MESS,REG_MEMB_MESS消息对,就跟前面描述的一样。
SP_receive的参数如下:
sender参数就是成员关系发生改变的组的名字。
mess_type and endian_mismatch fields will again be set to 0.
max_groups和max_mess_len参数的含义与原来一样,mess_type和endian_dismatch参数再次置为0.
groups数组和消息体提供发生变动的组的两种信息。num_groups会置为0,groups数组会置为0(既然这个成员不再是组的一个成员了。mess的消息体内容也是空。

返回值:返回返回消息的长度(当成功时)或在失败时返回以下任何一个:
ILLEGAL_SESSION
指定的mbox不正确。
ILLEGAL_MESSAGE
消息包含一个正常的结构,比如一个scatter结构没有正确填充。
CONNECTION_CLOSED
在通信时发生了连接错误,接收无法完成。
GROUPS_TOO_SHORT
如果你的groups数组设定的太小了无法存下返回的数组,会返回一个GROUPS_TOO_SHORT的错误。
这时num_groups会返回负数。
BUFFER_TOO_SHORT
如果消息体缓冲(mess)设置的太短,存不下返回的消息时,会返回这个错误,就会返回这个错误,同时endian_mismatch参数会设置为需要的缓冲的长度。


Tag:消息 成员 一个 参数 关系 这个 如果 groups 接收 返回 
相关文章


 
Jun
23
Posted (xurenlu) in 未分类 on 06月-23-2008

提起大熊猫的故乡,很多人首先想到的是卧龙,那里是人工养殖大熊猫的基地。可是你们知道吗?在四川省西北部岷山深处,有一块四万公顷的原始森林,其间坐落着唐家河大熊猫自然保护区,那里生活着60多只野生的大熊猫和众多的国家一级、二级保护动物。阿里巴巴赈灾重建小组考察发现,由于5.12地震, 唐家河道路损毁、山体严重坍塌、众多珍贵野生动植物遭到毁灭性破坏.这对当地民众的生产生活造成了严重的影响.其中,原本不愁销路的天然蜂蜜积压了4吨无法销售出去,这些可都是养蜂人辛苦劳作的结晶啊! 为帮助唐家河大熊猫自然保护区解决这一问题.我们决定团购这4吨的蜂蜜.我们团购蜂蜜的价格也很优惠哦,单价是15元/斤,和超市的蜂蜜比起来,便宜很多呢,而且是纯天然的没有经过掺杂的蜂蜜哦!

ID 规格 单价 运费 总价(元)
1 6斤桶装蜂蜜 90 5 95
2 4斤桶装蜂蜜 60 5 65
3 大礼盒装(2000g) 78 5 83
4 中礼盒装(1000g) 45 5 50
5 小礼盒装(800g) 40 5 45
6 迷你礼盒装(600g) 36 5 41

这是我们集团打算做的一点小事,有需要的可以联系我一起买!到货后我再转发给大家
顺便提示一下大家,大家在超市里看到的蜂蜜,大多像水一样,而有些天然的蜂蜜,浓得呈固体状态,我还不知道这次团购的蜂蜜会是什么样的,但是既然是纯天然的,应该不会差。
我的联系方式:msn:helloasp@hotmail.com
我的邮箱:xurenlu@126.com


Tag:熊猫 严重 生活 那里 野生 众多 当地 毁灭性 破坏 这对 
相关文章


     
    Jun
    22
    Posted (xurenlu) in 未分类 on 06月-22-2008

    经过摸索,我决定给HyperEstraier加上由Hightman写的scws支持,使之支持中文分词。
    实地看了代码之后,发现Hyperestraier的结构划分并不好,这可能决定了他只能是某些Hacker的心血之作,而不适用多人协作开发,大规模推广应用。这是旁话。
    既然找到分词默认是使用的estraier.c的est_break_text函数,那我的目标就是改造这个函数,现在这个函数被我改成了:

    1. scws_t seg;
    2. /* Break a sentence of text and extract words. */
    3. void est_break_text(const char *text, CBLIST *list, int norm, int tail){
    4. // hack by renlu.xu
    5.   CBLIST *words;
    6.   const unsigned char *word, *next;
    7.   unsigned char *utext;
    8.   char *tmp;
    9.   int i, j, k, size, cc, wsiz, nsiz, tsiz;
    10.   assert(text && list);
    11. if(seg==NULL)
    12. {
    13. seg=scws_new();
    14. scws_set_charset(seg,"UTF-8");
    15. scws_set_rule(seg,"/home/y/etc/rules.utf8.ini");
    16. int xmode=0;
    17. scws_set_dict(seg,"/home/y/etc/dict.xdb",(xmode & XMODE_DICT_MEM) ? SCWS_XDICT_MEM : SCWS_XDICT_XDB);
    18. if(seg->d == NULL && !(xmode & XMODE_NO_TIME))
    19.         fprintf(stderr, "WARNING: input dict file load failed. /home/y/etc/dict.xdb\n");
    20. }
    21. int fsize;
    22.     fsize=strlen(text);
    23.     scws_send_text(seg,text,fsize);
    24. scws_res_t res,cur;
    25. while ((cur = res = scws_get_result(seg))!= NULL)
    26. {                                                           
    27. while (cur != NULL)                                     
    28. {             
    29. cblistpush(list,text+cur->off,cur->len);
    30. cur = cur->next;                                   
    31. }                                                       
    32. scws_free_result(res);                                 
    33. }
    34. int iter_i;
    35. int wsize=0;
    36. fprintf(stderr,"\nsegmented words:\n");
    37. for(iter_i=0;iter_i<cblistnum(list);iter_i++){
    38. word=CB_LISTVAL2(list,iter_i,wsize);
    39. fprintf(stderr,"%s\t",word);
    40. }
    41. return ;
    42.  }

    Ok,其中函数中最后一个for语句是为了调试,看看分词结果如何。
    这里用到的scws_send_text等函数是hightman的scws中定义的,因此需要在estraier.c的文件头加上:

    1. #include "scws.h"

    并修改Hyperestraier的Makefile:

    1. LIBS = -lqdbm -lz -lm -lc  -lscws

    然后make && make install
    下面作个测试:

    1. #!/bin/sh
    2. #file:test.sh
    3. rm -rf test_db
    4. estcmd create test_db
    5. find ./ -name "1.txt" -type f |estcmd gather -cl -fm -cm test_db -
    6. estcmd search -vx -max 10 test_db '索引'

    根据打印的结果,中文分词已经加入到索引过程中去了!

    社区全文检索引擎Hyper Estraier 学习笔记[1]

    社区全文检索引擎Hyper Estraier 学习笔记[2]

    社区全文检索引擎Hyper Estraier 学习笔记[3]


    Tag:
    相关文章


       
      Jun
      22
      Posted (xurenlu) in 未分类 on 06月-22-2008

      hyperestraier是在前文已经介绍过一的一个开源搜索引擎程序。
      分词:采用N-gram,char_category等来分词,良好地支持中文等东亚文字。
      分词程序在:estraier.c中
      est_break_text
      est_break_text_perfng
      est_break_text_chrcat
      等分法。
      相关的函数有
      276 static int est_char_category(int c);
      277 static int est_char_category_perfng(int c);
      278 static int est_char_category_chrcat(int c);

      分词默认采用est_break_text
      当创建数据库时采用 estcmd create dbname -apn 时,采用est_break_text_perfng来分词
      当创建数据库时是用 estcmd create dbname -acc 时,用est_break_text_chrcat来分词
      采用est_break_text来分词时,结果这样样的:
      今天 天突 突然 然想 想起 起霍 霍炬 炬曾 曾告 告诉 诉过 过我 我的 的一 一个 个日 日本 本人 人开 开发 发的 的全 全文 文检 检索 索引 引擎 擎, , 于是 是找 找他 他问 问了 了,
      是双字连着的分词法,这样会占用多至少一倍的检索空间,同时精确度差一点(但是精确度比按字分词好一点)。


      系列文章:
      社区全文检索引擎Hyper Estraier 学习笔记[1]

      社区全文检索引擎Hyper Estraier 学习笔记[2]

      社区全文检索引擎Hyper Estraier 学习笔记[3]


      Tag:
      相关文章


         
        Jun
        19
        Posted (xurenlu) in 未分类 on 06月-19-2008

        项目网站: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的编程接口.


        Tag:
        相关文章


           
          Jun
          15
          Posted (xurenlu) in 未分类 on 06月-15-2008

          无意中发现的


          Tag:
          相关文章


             
            Jun
            14
            Posted (xurenlu) in 未分类 on 06月-14-2008

            今天去湖北省驻京办去补办身份证,报和身份证号,就在凳子上等照相,但却告知我不是本人。
            过去凑到电脑前一看,果然,名字、住址,都对,身份证号也对,但是出来的人的头像照片却不对,根本不是我的照片。
            这一下我成真正的黑户了,不仅身份证丢了,连通过身份证号查出来的人也不是我了。


            Tag:
            相关文章


               
              Jun
              11
              Posted (xurenlu) in 未分类 on 06月-11-2008

              中国雅虎应用技术部现招聘PHP开发工程师。招聘的岗位职责是:与社区运营业务部门紧密配合,完成财经、奥运等主题社区的新产品系统设计、开发、优化工作。工作地点:北京

              要求:
              * 计算机相关专业大学本科以上学历,具有扎实的计算机基础理论知识;
              * 一年以上业界工作经验,具有大型互联网应用开发经验;
              * 精通PHP语言,精通CGI标准和HTTP等互联网协议;
              * 熟练掌握HTML语言、JavaScript脚本语言;
              * 熟悉Unix/Linux操作系统和开发环境,能够熟练配置Apache服务器;
              * 具有一种以上关系型数据库应用开发经验,熟练MySQL开发者优先;
              * 熟练掌握Perl、Python和Unix Shell等其中一种语言;
              * 具有良好的中英文沟通能力,具有项目管理经验者优先;

              欢迎技术精英加盟雅虎,有意者发送简历到ncp.recruit@yahoo.com.cn 邮箱!


              Tag:
              相关文章


                 
                May
                30
                Posted (xurenlu) in 未分类 on 05月-30-2008

                拖了很久了,一直没有机会去武汉把户口的事给办了,终于有机会倒休几天了,刚巧是在端午节前,因此可以把这事给办了。
                手里的项目从立项到上线,就不到两个月时间,五月一个月拼死了赶了一个月,这两天已经快崩溃了。这两天鼻炎终于发作了,呼吸不畅,今天还流鼻血了,难受。
                今天发了工资我一时脑子短路就全存定期了,房租和租服务器的钱是预留下了,可是忘了回武汉的开销。惨。


                Tag:
                相关文章


                   
                  May
                  23
                  Posted (xurenlu) in 未分类 on 05月-23-2008

                  (根据老李子的经历稍改了改)
                  话说米国那边来了几个金发绿眼的鬼子同事,我们这边几个工程师一起开会。
                  其间担任翻译的同事本来要挨个介绍一下的,但是一想中国人的名字老外记不住,就只打算介绍一下怎么称呼。
                  不料,几个工程师全姓李,于是这位是这样介绍.
                  This is Mr Lee,and this is Mr Lee,This is ,Mr Lee…
                  鬼子同事大惊,然后疑惑地问:Lee one?Lee two?Lee three?


                  Tag:
                  相关文章


                     
                    May
                    23
                    Posted (xurenlu) in 未分类 on 05月-23-2008

                    据说在昵称前加一个啥啥啥标记你们就捐多少多少款…
                    操!
                    就惦记着你的营销、你的PR了吗?
                    爱捐不捐。
                    爱心是不需要讲要件的。


                    Tag:
                    相关文章