Browsed by
Author: YI

WebRTC与SIP

WebRTC与SIP

毫无疑问,WebRTC是个好东西。之所以这么说,是因为他居然开源了GIPS的audio引擎。GIPS的回声抑制、噪声消除等方面的技术,几乎独步天下。当年GIPS仅靠这些个算法包,就活得有滋有味。Skype、MSN、QQ等等,凡是做IP语音通信的,都无一例外地使用了GIPS的技术,这里还没包括各硬件芯片厂商。

Google居然将它开源了,牛啊!实在是让人佩服!

既然已经开源了,我们也希望在已有的free项目中引入webrtc的相关模块(主要是EC, NS等)。看了一下webrtc的文档(目前还是非常简陋),忽然有个想法,其实我们没有必要将webrtc的模块引入我们的项目,相反,我们只需要基于webrtc,将我们已经实现的SIP会话层以及GUI层添加到webrtc中。从webrtc的模块分层看,这样似乎更可行一些。

替换掉webrtc的会话层,或者新增SIP会话层似乎都是可行的。不过编译webrtc实在是麻烦,居然要vc2005(还不能是express版本)/ Win7 SDK / DirectX SDK等等,个个都是巨无霸。

另外,这个对Speex项目应该也有影响吧?Speex项目自己实现了一个audio引擎,不过其中的EC,NS等关键部件效果还是不太让人满意,不知道他们会不会从webrtc中获得灵感。

升级到WordPress 3.2

升级到WordPress 3.2

今天登陆进blog的时候,系统提示可以升级到新的3.2版本。我本来就是个升级控,加上对wordpress的印象非常好,自然毫不犹豫就升级了。

感觉很不错啊,各方面都有提高。新增加的Twenty eleven比原来的主题有很大的提高,看上去和谐多了,每篇blog之间的分割也非常明显,缺省字体也似乎没有以前那么硕大(当然,现在还是很大 :-) )

wordpress升级的步伐很快,看得出这是个生机勃勃的社区。wordpress很多功能的设置和实现也是简洁、有效,非常让人欣赏。反观phpbb社区,我都不好说什么了,反垃圾功能到现在都没有什么改观。

 

使用python编写简单的守护进程

使用python编写简单的守护进程

server程序与桌面程序最基本的差别在于:server程序通常需要更加稳定地运行,最好是永远都不会中断,确保服务的持续性。

要做到这点,首先当然应当提高程序本身的稳定性,程序本身必须足够稳定才有意义。

然而,天有不测风云,无论多简单的软件,总是会有bug,会有可能导致程序crash。这种情况下,仅仅依赖提高程序本身的稳定性是不够的。我们还需要另外的手段来保证服务的持续性。

最简单的办法就是用守护进程监视当前程序,一旦发生异常或者crash,就重新启动程序。使用python就可以简单地做到这点。
例如,我们通过python脚本(start_mss_app.py)来监视msscli服务程序的运行:

#start_mss_app.py -- run and monitor msscli application

import os
import sys

sys.path.append("./")

def monitor(appName):
    pid = os.fork()

    if 0 == pid:	# child process
        os.system(appName)
        sys.exit(0)

    else:  # parent process
        os.wait()

if __name__ == '__main__' :
    while 1:
        monitor('./msscli')

运行时很简单,使用命令 python start_mss_app.py & 即可。

当msscli程序发生异常导致crash或者退出时,python脚本会自动重起msscli程序。

在进行系统维护或者升级时,我们也有必要强制关掉msscli服务程序,此时由于上述守护进程的存在,我们先必须kill掉守护进程,然后才能kill掉msscli服务程序:

sudo killall python

sudo killall msscli

真不巧,遇到了美国独立日

真不巧,遇到了美国独立日

我们新产品的发布时间居然是美国独立日,这实在是很不巧,大部分美国人都放假了,可能没有人会关注到我们的这次更新信息。

晕死!

RTMP

RTMP

RTMP全称是Real Time Messaging Protocol。这个协议由Macromedia公司开发,为Flash player以及Flash media server提供语音、视频流媒体服务的私有协议。目前Macromedia已经公开了这个协议的细节。

值得注意的是,虽然Flash player/media server/RTMP通常用于提供网络视频流媒体,例如各种各样的视频网站,它们的组合也可以提供在线会议的功能。考虑到几乎所有的浏览器都可能安装有flash,因此终端用户几乎不需要另外安装软件,就可以访问视频、会议等服务,对这些业务的在线部署实在是非常方便。

Macromedia公开RTMP协议,可能是出于与HTML5竞争的需要。这对最终用户而言,无疑是有利的。

而吸引我注意的则是另外一则消息:FreeSwitch最新版本中实现了mod_rtmp模块,通过这个模块,FreeSwitch可以成为RTMP Server,并与传统的SIP进行转换和互通。这是个很不错的想法,让人有很多想象空间。

安装phpmailer

安装phpmailer

phpmailer是一个全功能的发送email的模块,安装很简单:

sudo apt-get install libphp-phpmailer

缺省会安装在/usr/share/php/libphp-phpmailer目录。

还需要设置php.ini文件,将上述目录加入include路径:sudo vi /etc/php5/apache2/php.ini

在该php.ini文件中,找到include_path并修改为:

include_path = “.:/usr/share/php:/usr/share/php/libphp-phpmailer”

完成修改后,重启apache2即可。

 

Filezilla Failing to Retrieve Directory Listing

Filezilla Failing to Retrieve Directory Listing

在EC2上安装完pure-ftpd后,用Filezilla访问,登录都很正常,最后在获取目录时超时失败。

根本原因可能在于:EC2给各server分配的是private地址,我又assign了一个public地址。server本身是不知道这个public地址的,因此ftp client如果用public地址请求信息,可能就导致失败。

解决方式也比较简单,修改FileZilla的配置即可:

点击菜单 “Edit / Setting / Connection / FTP”,其中:

(1)”Active mode”选择“Ask your operating system for external IP address”

(2)”Passive mode”选择”Fall back to active mode”

php5,MySQL以及Apache2

php5,MySQL以及Apache2

在Ubuntu server (也包括Desktop)版本中,缺省情况下,php5没有安装MySQL模块。需要单独安装:

sudo apt-get install php5-mysql

注意:安装完该模块后,需要手动重启Apache2,否则不会生效。这与其他模块不太一样,通常情况下,安装完php的模块后都会自动重启Apache2。

Apache report error: [error] (13)Permission denied: exec of ‘/cgi-bin/signup.php’ failed

Apache report error: [error] (13)Permission denied: exec of ‘/cgi-bin/signup.php’ failed

在桌面版本Ubuntu上,通过Apache2测试PHP程序时,会遇到几个问题:

(1)Apache2把PHP文件当成普通文档,没有执行php文件,反而提示文件下载并询问存放路径。

(2)Apache2提示无权读取cgi-bin目录的文件。

问题(1)是由于没有安装Apache2的php模块导致的,而问题(2)是由于Apache2没有足够的权限操作cgi-bin目录中的php文件。安装以下模块可以解决:

sudo apt-get install libapache2-mod-php5

sudo apt-get install libapache2-mod-suphp

可能会有一个女儿了

可能会有一个女儿了

今天(2011-06-22)“海马”台风逼近香港/深圳,时不时下起瓢泼大雨,而且狂风大作。不过黄历上说今天适合出行,于是陪老婆去香港作产检,过程比较顺利,基本上没怎么费事就办好了。

这也是我来深圳11年来,第一次去香港。如果不是国内的计划生育政策限制,可能我永远都不会去香港。这次的香港之行,让我颇有感触。香港市民的素质确实是比较高,香港的物价也很高,相应香港市民的生活压力也是相当高。

产检的结果说是女儿的可能性比较大,这让我感到很高兴。同样也面对这孩子未来的教育、医疗等特殊情况。深港两地目前在各方面都有非常大的差异,这孩子未来将同时面对两种体制,这样对孩子本身可真不是件好事。