ubuntu 14.04 LTS下从源代码编译安装linphone

linphone是一个开源的音频, 视频通话软件, 在liblinphone框架的基础上, 可以为包括android, ios, wp8, desktop ( linux, windows, mac os ), 以及web在内的平台开发应用程序. 并且不同平台之间的应用程序可以互相通信.

本文介绍如何在ubuntu (linux) 下从源代码编译安装linphone 3.7.0. 我刚开始研究音视频通话系统, 还没有弄清楚各组件的作用, 所以本文不会解释linphone依赖的各组件有什么作用, 只是列出组件之间的依赖关系, 以及如何安装他们.

本文的主体结构和安装步骤主要来自两个资料, 一是linphone 3.7.0源码包里面的README文件, 另一个是这篇文章: Compiling Linphone 3.7.0 with TLS and ZRTP support. 除此之外, 就是由于系统环境的差异, 以及自己对linux操作还不太熟悉而碰到的问题, 我会在文章末尾列出我解决这些问题的参考资料.

阅读全文

AnyChat音视频对讲演示版本部署

如果需要测试AnyChat的视语音、视频对讲,需要运行的有一个服务器程序,以及用来两个互相通话的客户端程序。我这里将服务器程序运行在一台装有windows server 2008 R2的PC上,一个客户端程序运行在一台装有windows 7的PC上,另一个客户端程序运行在android手机上。几个设备之间只要保证客户端能和服务器通信就可以了,并不要求服务器有独立IP。AnyChat是跨平台的,你可以选择任意支持的平台部署客户端和服务器:

AnyChat支持跨平台的应用,服务器支持WindowsLinux、Unix等所有主流服务器操作系统,客户端目前支持WindowsLinux(x86、ARM)Android以及iOS(iPhone、iPad)平台等,目前正在研发Win Phone8等平台。

阅读全文

斯托克代尔悖论: 从一则故事中得到的启示

以下内容摘自从优秀到卓越, 第四章 直面残酷的现实(但决不失去信念). 这则故事应该会对我产生长期地深远的影响, 让我活得更释然.

当然,不是所有实现跨越的公司都面临如同联邦国民抵押协会一般的可怕危机;至少一半以上没有。但是每一家实现跨越公司在通往成功的道路上都是困难重重,经历这样或那样的挫折。如吉列公司面临收购战,纳科尔公司面临进口问题,富国银行遭遇银行业取消管制,皮特尼·鲍斯公司有失去垄断的危险,雅培公司面临产品撤消,克罗格公司必须改变几乎所有商店的经营模式,等等。但在每一个案例中,他们的管理队伍都显示出极大的心理承受能力。一方面,他们平静地接受了残酷的现实;另一方面,他们对自己坚信不移,相信不论道路如何险阻,前途一定是光明的。我们把这种耐力称之为“斯托克代尔悖论”。

说到这里,我们有必要谈及海军上将吉姆·斯托克代尔,他是越战激烈的时期“河内希尔顿”战俘营关押的美方最高军事指挥官。 阅读全文

利用GoAgent及SwitchySharp登陆stackoverflow.com

由于stackoverflow使用了包括google在能的js CDN, 这些CDN文件有些必须通过代理才能访问. 所以当你试图登陆stackoverflow的时候, 首先是要等很久才能加载完成, 再一个页面也变得很奇怪, 这是因为浏览器没能成功加载那些js文件. 所以登陆stackoverflow是需要翻墙的.

问题是, 虽然google的CDN是可以直接访问的, 但由于goagent代理是运行在google自己的服务器上, 所以google不允许使用goagent访问其他google服务, 包括这些CDN文件

这让我们面临一个两难的境地, . 也就是说, 如果你用goagent来翻墙, 那么虽然你可以加载stackoverflow使用的其他CDN提供的js文件, 但你不能加载google提供的js文件, 所以不管你用不用代理, 总有一些js文件没能加载. 阅读全文

部署rails应用程序 – 以及使用capistrano将部署过程自动化

这篇文章介绍如何将一个rails 4.1.0网站部署在一台ubuntu server 12.04 LTS 服务器上, rails 网站将运行在 apache 2.4.9 + phusion passenger 下, 并且使用 mysql 5.5 数据库. 部署过程最终通过capistrano自动化, 之后网站的更新操作只需要在开发机上运行一条指令就可以了.

阅读全文

apache: 文件下载配置

默认情况下, 当浏览器访问一个web服务器上的一些资源如html, txt和pdf 文件时, 会直接在浏览器页面打开显示这些文件的内容. 然而有时我们需要让浏览器直接下载保存这些文件.

之前对apache了解比较少, 上网搜了很久, 大多是用其他开发语言比如php, servelet来实现. 这种方法其实用于下载动态生成的文件比较合适, 对于静态文件, 还是直接用apache效率高一点.

以上是需求, 实现起来其实很简单. 比如要配置files目录下的文件都可以直接下载, 只需要在这个目录下创建一个名为.htaccess的文件, 文件里添加如下配置:

这个配置的意思是, apache向客户端发送当前目录下的资源是, 将Content-Type消息头的值设置为application/octet-stream

阅读全文

mysql 常用操作

create user 'name' identified by 'password';

This will create a user 'name' for host '%', with password 'password', and a row with these data is inserted in the mysql.user table.

 

grant all on 'db_name'.* to 'name';

This will grant all database privileges on dabatase 'db_name' to user 'name', and a row with these information is inserted in the mysql.db table.

 

load data local infile 'input_file_path' into table 'table_name';

Load data from local text file into the specified table, input text file is an tab seperated csv file by default, but you can specify its format by some options. For security reasons, you need to specify '–local-infile' option when connecting to mysql server using 'mysql' command line client program.

搭建ubuntu14.04下web开发环境

Install by package manager

Install from source

apache

Follow the instructions on http://httpd.apache.org/docs/current/install.html.

In the requirements step, I downloaded APR and APR-Util manully and put it into apache source as decribed, pcre has been installed already when I install apache.

In the configuration step, I run “./configure –enable-so” as documented by http://cn2.php.net/manual/en/install.unix.apache2.php.

Because option –prefix defaults to /usr/local/apache2, that is where apache2 get installed.

To start httpd server:

To stop httpd server:

 

mysql-server-5.5 can still be installed from aptitude

 

php5

After downloading the source code, run following confirutaion command as documented in http://www.php.net/manual/en/install.unix.apache2.php and http://www.php.net/manual/en/mysqli.installation.php. This selects the mysqli api and mysqlnd driver.

The make and install steps go normally after this configuration.

After installing, apache is configured to load the php module. The configuration you need to do manually is to tell apache to parse certain extensions as PHP. You can achieve this by put following configuration section at the end of apache2/conf/httpd.conf


Configuration done, you can restart apache, and check that php code file is executed correctly by apache web server.

在windows及linux下使用goagent代理

goagent是一个开源、运行在google app engine下的代理服务器,由于google对免费应用有限制24小时只能用1G的流量(这个限制是针对刚过去的24小时,也就是说即使你是在晚上11点到12点之间用了1G,你也得等到第二天晚上12点才能继续使用),因此普遍的使用goagent代理上网的方式就是自己搭建一个google app engine应用并且并且上传goagent源代码到服务器运行。这里就讲一下如何在windows和linux下部署goagent。

首先下载goagent

然后在用google app engine创建一个应用,这个我以后会写详细的文档。你需要注册google帐号(Gmail邮箱)才能创建应用,一个帐号限制只能创建10个应用,每个应用都有一个appid。

创建应用之后,就可以上传该应用的运行代码进行部署,对于我们,当然就是上传goagent了。

你下载的goagent解压之后可以看到两个文件夹,一个是local,一个是server。顾名思义,server是要上传并且运行在服务器端的,而local是运行在要代理上网的电脑上的。

在上传服务器代码之前,先要做一个配置修改。打开server/python/app.yaml文件,将application的值(也就是"application: "后面的内容)改为你前面创建的应用的appid。

保存之后即可上传,上传方式windows和linux稍有不同。linux下是在server目录下运行"python uploader.zip";windows用户直接双击运行server/uploader.bat文件就可以了,其实原理和linux下相似,只不过由于下载的goagent自带了一个python(在local文件夹),就不要求用户安装了,如果你打开uploader.bat文件,就会发现其实它也是运行了"python uploader.zip",只不过使用的是goagent一起打包的python。虽然操作方式不同,但后面都会要求你输入appid,以及你的google帐号的用户名和密码,提供这些信息之后就开始上传代码了,要上传的文件不大,因此正常几秒中就可以完成了。

上传之后可以在google app engine上确认一下你的应用已经部署成功并且正在运行。

服务器部署好并且正确运行之后,就可以配置运行客户端连接服务器了。

与服务器一样,客户端也得配置appid,配置方法是打开local/proxy.ini文件,修改其中"appid = "后面的内容。

配置之后即可运行,运行方式也是windows和liunx有所区分。windows直接运行local/goagent.exe文件,这会打开一个命令行窗口,要想隐藏这个窗口,点击右下角通知栏的goagent图标就行了。linux下的运行方式是用python执行local/proxy.py这个文件,即"python proxy.py"。

记住每次开机之后,要使用代理的话都得这样运行一下。

到这步的时候你的电脑只是有了和代理服务器通信的能力,但是如果你要你的浏览器使用代理上网的话,还得安装浏览器插件。

chrome浏览器可以安装Proxy SwitchySharp扩展,并且在配置里面的Import/Export中,点击"Restore From File"(从文件恢复)按钮,选择goagent/local/SwitchyOptions.bak文件并保存。装好后重启浏览器,在地址栏右边能看到一个地球样式的图标,点击这个图标可以选择需不需要使用代理上网。

 

 

 

使用阿里云

阿里云不只是云服务器一种产品,数据存储服务也将会是我要用到的服务之一,这里先介绍一下我正在试用的云服务器,更多的体验后续会更新。

首先要在阿里云注册一个帐号,在购买或者申请试用云服务器之前,必须得实名认证,这可以通过绑定已经实名认证过的支付宝帐号完成。

然后就可以申请试用云服务器,一般提交申请几分钟后就会审批完成,并且短信告知远程登录的IP地址,用户名和密码。申请的时候可以选择需要的配置,尽管选择高的没有关系,都是免费试用。 各种配置参数会互相限制,比如我用的是ubuntu 12.04 64bits,内存只能选1G以上的。

我选择用putty远程登录服务器,指定IP地址,输入用户名密码就可以了。连上之后的所有软件安装等操作都是在命令行完成,系统原本没有安装web服务器,需要自己安装。我装了apache2之后,就可以直接在浏览器访问了。