由软件+硬件想到的

由软件+硬件想到的

自从苹果重新崛起后, “软件+硬件”的产品形态引起了大家的关注. 以往要么关注硬件, 要么关注软件. 而一体化设计带来的革命性体验, 重新引发了再思考: 专注在硬件, 或者专注在软件还是未来的趋势么?

其实不仅是苹果在终端层面带来一体化体验, 在核心网络层面, IBM也实际上走软硬一体的路子, 包括现在的Oracle也在进行这方面的尝试.

由此我们对通信领域进行再思考: 通信设备提供商和通信业务服务商(运营商)在未来有没有可能融合呢? 早期的AT&T毫无疑问是这种模式的实践者, 并达到了让人惊恐的量级. 而目前随着云计算\云技术的发展, 基于这些技术提供分布式虚拟通信设备, 并提供个性化通信服务似乎不在是梦想.

自己构造通信基础设施, 直接面对终端用户, 直接迭代式开发, 快速满足用户的个性化需求, 带给用户全新的通信体验, 这似乎不能依赖各自分离的通信设备商或者通信运营商来完成了. 传统的通信生态圈在很大程度上是由硬件的复杂性决定的, 各种各样的硬件设备\通信协议\电气协议\网络等级等因素造成了整个网络的复杂性, 封闭性. 而IP技术不断渗透到通信领域, 实际上在不断降低通信的门槛, 并将整个通信网扁平化, 开放化.

可以设想, 如果将来的通信网全部IP化后会怎样? 首先就是目前的那些专有硬件设备大部分都不再需要了, 通信网将是一个扁平的平等网络, 原有的基础通信概念都将被颠覆. 现有的通信设备和运行模式无法满足更有弹性, 更大容量, 更个性化的通信需求.

而融合产品设计实现与业务运营的模式, 可能是未来的趋势. 这种模式在传统的PSTN通信网络体系中是不可能出现的, 而在未来的全IP通信网中极有可能实现.

kubuntu12.04下的中文输入问题

kubuntu12.04下的中文输入问题

升级到Kubuntu12.04(英文版本)后,感觉很好,系统各方面都很让人满意。 不过有个意外的情况,所有的纯qt程序,例如kconsole, kate等, 按Ctrl+Space无法调出fcitx中文输入法。

在kate中,Ctrl+Space快捷方式被占用了,因此需要修改掉冲突。在kate主界面, 点击菜单“settings / configure shortcuts”, search “ctrl+space”, 然后将其修改为其他值。

完成上述修改后,还是无法在kate中调出fcitx. 需要配置qtconfig。缺省情况下,居然没有安装该软件。

sudo apt-get install qt4-qtconfig

安装后, 运行qtconfig, 在interface中,设置”default input method”为fcitx。

然后重启kate/konsole等qt程序即可。

让人比较奇怪的是, 以前的kubuntu版本中没有遇到这个问题,不知道为什么在12.04中需要做这样的配置。

努力赚钱

努力赚钱

“爸爸, 你是不是要努力赚钱养家啊?”

“哦, 是的”

“那您一定非常辛苦吧?”

“嗯, 比较辛苦”

“我送您一朵康乃馨, 祝您父亲节快乐”

“啊, 真的?! 太好了, 谢谢”

“您是不是很高兴啊?”

“对, 非常高兴”

“那您现在是不是觉得要更努力赚钱养家?”

“嗯, 哦, 是, 是的…”

要用VPN访问本站了?

要用VPN访问本站了?

采用独立IP也无法摆脱这个噩运!

尼玛的, 到底害怕什么呢? 我这么一个网站有什么必要封锁??

2012-06-11 updated: 现在又能正常访问, 看来是墙抽疯了.

哦的神啊, 90天40万行代码

哦的神啊, 90天40万行代码

新闻链接: http://news.163.com/12/0604/11/835EHV450001124J.html

这个必须要记录 .

40万/90days=4K/day

每天代码量超过4K行! 这完全打破了我对软件工程, 对软件神人的一切看法. Bill, Linus等人与她相比, 也就是个P啊. 我军威武!

大家都是人, 怎么差距就这么大呢?! 虽然说现在码农越来越贱, 不过编程这种事多少还是需要一点思考的, 而我就算是每天打4K行字, 连续90天, 估计手也会抽筋吧. 看看人家神女! 仰慕之情悠然而生啊.

定时自动备份MySQL数据库

定时自动备份MySQL数据库

网上搜索的一些文章或者脚本, 在Ubuntu/Kubuntu中似乎都有这样或者那样的问题, 经过一番摸索后, 以下方式是可行的.

step1: 创建定时任务, 例如在早上1:30备份数据库. 编辑/etc/crontab文件, 添加内容:

30 1    * * *   root    sh  /home/yxh/cronDayBackupMySQL.sh

step2: 创建shell脚本cronDayBackupMySQL.sh. 要非常注意脚本中的标点符号(不得不说, shell脚本是怪折磨人的)

#!/bin/bash
currDateStr=`date +%Y%m%d`
mysqlBackFileName=mysql${currDateStr}
mysqldump -u root -p db_yxh --password=1234 | gzip > /var/backups/$mysqlBackFileName.sql.gz

其中, 数据库是db_yxh, 数据库root用户密码是1234, 备份的sql文件压缩存放在/var/backups目录下.

解压缩gz文件也很简单, 直接试用gzip即可:

gzip -d xxx.gz

 

基于HTML5的SIP客户端

基于HTML5的SIP客户端

项目名称是:sipml5,地址:http://code.google.com/p/sipml5/

该项目基于Google的WebRTC项目。这点与我以前写的一篇blog吻合,将SIP引入WebRTC不仅是可能,而且已经有人搞定了!

粗略地看了一下该项目的情况,界面是比较丑陋,不过看介绍应该是基本可用的。这是个好消息啊,尤其对企业用户而言,可能都不需要每个员工安装部署SIP终端,直接部署该终端即可,再结合云通信平台,整个系统都能简化不少。

如果该项目能覆盖Chrome, Firefox以及IE三个主要平台,基本就可以在实际环境中部署。非常让人期待啊。

修改button的宽度

修改button的宽度

缺省情况下,<button>根据button的内容自动调整自身的长度。然而在内容比较简短的情况下,我们有时希望button本身的长度要更灵活一些。常用的设置width属性的方法无法调整<button>的宽度,需要采用style属性进行调整,如下所示:

<button id="btnPrev" style="WIDTH: 6%"> < </button>
极其垃圾的D-Link产品

极其垃圾的D-Link产品

极烂无比的产品!极烂无比的技术支持!

在京东上购买了一款D-Link的无线路由器产品(带ADSL功能):DSL-2740EL(固件CN_2.10),想替换已有的TP-Link+ADSL拨号器,减少一个设备,想法很美好,过程很恶心,结果很郁闷。

替换后,能成功拨号上网。于是测试了一下公司的应用服务,噩梦开始了。

问题1:外网服务器(设置在美国)通過UDP5060端口向动态DNS的地址发包,没有收到。怀疑是网络问题,因此在服务器上抓包,发现已经发出了包。折騰了半天,未果。换回TP-Link+ADSL拨号器,内网计算机能成功接受到包。于是怀疑D-Link有问题,打技术咨询电话,答复一堆什么防火墙不对、端口映射不对、运营商过滤等等。我靠,根本就没防火墙好不好?! 端口映射不就一条虚拟服务器配置吗?!运营商怎么就不过滤TP-Link呢??扯了半天,最后转给一个所谓的开发人员,接着又相同的废话重新扯一遍。最后不了了之,没有答复。

最后外网服务器改成通过UDP6060端口发包,内网计算机居然就能收到包。这说明什么?这说明D-Link路由器内部肯定屏蔽了外网5060端口的数据包(推测可能因为5060是SIP标准端口,D-link屏蔽了该端口),或者该设备内部逻辑的确存在bug。又打电话过去,D-link人员就是不相信,又开始扯防火墙、运营商屏蔽、端口映射不对等废话。实在让人怀疑,他们可能不是技术有问题,而是听力有问题!

问题2:在问题1终于消停后,开始比较正式的应用。结果又出问题了。现在外网服务器能与内网计算机建立连接,开始正常工作。同一内网的其他计算机又不能通过动态DNS与该计算机建立连接了。用wireshark抓包,发现内网发给动态DNS对应的外部IP地址的包全部都返回“地址不可用”。也就是说,动态DNS对应的外部IP地址,只能在外部使用,不能被内部使用。这真是弱智!这样导致的结果就是:我们在外面工作时,要将应用地址改成动态DNS的域名,回到公司,又要改回内部IP地址进行访问。

不得已,又打电话过去,这次回答很干脆:不支持“端口回流”。我X!一个简单的路由而已,搞什么飞机,还“端口回流”,晕死!

吐血!不伺候了!换回TP-Link+ADSL,多一个设备就多一个设备吧,世界清静了!以后再也不采用D-Link的设备了,浪费了大量时间给他们作测试,还不讨好,悔死!

wine环境中字体平滑设置

wine环境中字体平滑设置

WINE中运行windows程序,发现字体都有锯齿,比较难看。google之后发现,设置注册表中的参数即可解决。运行regedit,然后修改以下值:

[HKEY_CURRENT_USER\Control Panel\Desktop]
"FontSmoothing"="2"