- 浏览: 228557 次
- 性别:
- 来自: 北京
最新评论
-
wahahachuang8:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
Comet初步研究与实践 – PHP到C#应用程序的数据推送DEMO -
xiaoshu666:
博主能不能把你测试工程的代码发上来看看啊。我怎么运行起来没反应 ...
.NET下WebBrowser的一个BUG以及其替代品——geckofx -
huangkai1729:
您好,您这个dealString方法中有个runtime = ...
java简单封装ffmpeg -
wangyanqiu02:
呵呵,幽默风趣思想深邃的对话
一段我和同学有意思的争论 -
nogocn:
你小学时,我大学。一样人成长过程。。。我岁数在你前,现在在学你 ...
闲话,我的编程小历史
文章列表
FFMPEG命令行工具目前无法针对视频实时流进行转码,而我们可以用它的新版本提供的支持TCP SERVER的特性来实现这一功能。实现边录边用FFMPEG提供的命令行工具进行转码。(实践证明,FFMPEG 的SDK针对实时流开发比较繁琐,命令行工具相对来说稳定)
我们将实时流录制成正在增长的文件,这样问题就变成了FFMPEG如何针对正在增长的视频文件转码。(首先我们保证视频格式是可以支持正在增长文件解码,这不在本文的讨论范畴)
而我们如果直接使用它对正在增长的文件转码,我们会发现FFMPEG转码到文件末尾(转码速度比录制速度快)就会退出。我们要做的就是在FFMPEG转码到末尾时如何将其挂起 ...
- 2011-10-11 16:05
- 浏览 6448
- 评论(0)
WCF默认配置文件中,给定的数组大小为65536,
若传输数据数组元素超过该数,则会异常。
解决方式:
服务端增加配置
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="tru ...
- 2011-08-31 15:49
- 浏览 824
- 评论(0)
python服务端:使用SimpleXMLRPCServer
代码如下:
from SimpleXMLRPCServer import SimpleXMLRPCServer
def getTest():
return 'test message'
if __name__ == '__main__' :
server = SimpleXMLRPCServer(('localhost', 8888))
server.register_function(getTest, "getTest")
server.serve_foreve ...
- 2011-08-26 17:08
- 浏览 3265
- 评论(0)
今天编写一个异步通信框架的,异步派发任务,单路并发,
与直接INVOKE相比的好处是可以使任务的执行代价根据时间均匀化,
请看代码
public class ServiceTask
{
public ServiceTask(Action action)
{
_action = action;
}
private Action _action;
public void Execute()
{
_action.Invoke( ...
- 2011-08-20 22:16
- 浏览 648
- 评论(0)
当一个程序员有“洁癖”的时候,它的代码才会越写越好。
虽然不敢说自己水平有多高,但是自己写代码也越来越染上洁癖,
不允许自己的代码中有一丝敷衍或者是架构的别扭。
每个细节都要优美,考虑设计模式。每个逻辑都考虑如何复用,虽然代码写起来可能比较慢,但是出自自己手下的代码一定要是“精品”。
这里奉上网上一个兄弟提供的WPF中数据绑定的属性精简写法,
本来很长一段,如下。微软官方代码生成的例子
public string Password {
get {
return this.PasswordField;
...
- 2011-08-20 12:53
- 浏览 548
- 评论(0)
最近一直专注于忙研发管理,谈一点小体会吧。
1. 要将压力下发到小组成员,同时要敢于放权
2. 压力下发的同时必须界定每个人的责任范围
3. 边界交界处必须指定牵头人,避免互相推诿的情况
4. 必须学会批评,且要严厉
5. 文档一定要时刻与开发同步,否则将导致项目失败。产品化进程中的重点
6. 越早参与评审,越能对质量把控得好。
7. 管理者必须敢于迈出关键步伐,推进项目进程
8. 必须制定研发计划,计划必须严格的执行(说的容易做的难)
9. 将客户关注点放在第一位(做技术的容易对客户产生鄙视心理)
10. UI需要提高重视程度
- 2011-07-12 00:25
- 浏览 621
- 评论(0)
计算机CPU体系架构的设计RISC最终战胜了CISC,生成如今PC机的主流。
软件架构设计也一样,在完成同样事情的情况下,力争越简单。
今天晚上和原公司首席科学家及老总促膝长谈到2点钟才回家,
将我自认为比较满意简洁的设计砍得七零八落,最终得出一个极为精简优雅的架构,
得出设计理念收获如下:
1. 流水作业级调度基于文件系统/共享文件系统最为简单,可移植度也最高(语言/平台);
2. 数据和索引/关联数据是一个整体,尽量不要设计上让他们分开(尤其是数据库ID映射到资源路径的方式),应该尽量考虑让它们存储方式也统一,然后数据库再做冗余。
3. 文件命名应该严格推敲,遵循 ...
- 2011-04-28 02:35
- 浏览 571
- 评论(0)
ffmpeg在转码的时候可以指定使用线程数,
而对于同一个源、使用同一台转码机器,到底如何配置线程数量才能达到比较好的效率,我们做了一次简单的实验,结果如下:
转码机器:
4核8线程HP DL380 G7服务器。
thread是每个任务的线程数,task是并发跑的转码任务数, time是耗时,e是平均每个任务用时(time/task)
能看出,跑8个线程,并发跑2个任务效率最高。
基本上可以得出结论,任务线程数 = CPU线程数得到比较高的效率,而此时CPU未占满,如果这样并发跑2个转码任务,可以得到最好的效率。
- 2011-04-27 13:08
- 浏览 4735
- 评论(0)
最近要改一段别的公司的代码,我疯了啊!
一个while循环里面逻辑500行啊!
临界区他用文件啊!
临界区的锁他再用一个文件啊!
两个进程访问临界区他还开两个临时文件啊!
日志文件还不能丢啊!还有逻辑耦合在里面啊!
数据库操作从来不封装啊!
每个函数都生连数据库啊,每个函数里都硬写了数据库用户名和密码啊!
从来没有配置文件啊!
所有的东西都是硬编码啊!!
连socket都要先把本机IP发过去啊!
这程序部署在N台机器就要改N个版本啊!
补丁上面还打补丁啊,一看代码就是狗咬的啊!
到处都是sleep啊!
程序还到处 ...
- 2011-04-22 15:26
- 浏览 1058
- 评论(0)
随着架构的工作越来越具体,已经不局限于软件结构方面了。
更多是深入到计算机体系知识,包括体系结构、组成原理、网络原理。
书到用时方恨少,完全是本科应该学的知识,可是就是不牢固。
SO,决定回归,作为一个系统架构师,重新捧起曾经不屑的书,以一个科学体系的态度重新学习。
曾经把自己定位一个纯软件人员,现在真正的体会到一切都是无法分割的。
所谓大道至简,殊途同归,莫过如此。回归,作为一个计算机学科的学子,而不是一个纯粹的码农。
- 2011-04-13 22:44
- 浏览 610
- 评论(0)
在 apache中配置Alias,如下格式
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
...
- 2011-04-11 17:34
- 浏览 1258
- 评论(0)
两个方便的DOMDocument小函数
1. 取唯一节点的值
function getSingleValue($doc,$node){
return $doc->getElementsByTagName($node)->item(0)->nodeValue;
}
2. 创建孩子节点
function createChild($doc,$father,$childname,$value="",$cdata=false){
$c = $doc->createElement($childname);
if($v ...
- 2011-04-11 17:29
- 浏览 616
- 评论(0)
一个JAVA工程,在原环境(LINUX下)跑得好好的。拷到新的环境(WIN XP)以后,部署在tomcat,我修改了一下proxool配置文件(保证没改错,就改了一下指向的数据库IP),之后就一直说找不到指定的连接池。
特别崩溃的做了N多的实验,都找不到问题所在。
最后居然!
居然!
居然是我用utral edit修改proxool配置文件的时候,UTF8格式默认加了BOM头。
而proxool的解析程序居然解不出来这个配置文件,而且还不报错!
非常值得注意啊!proxool的源代码没有处理BOM头!所以务必不要用UE修改它的配置文件。
- 2011-04-02 17:22
- 浏览 724
- 评论(0)
import re
def getFromPatten2(patten,src):
p = re.compile(patten,re.S)
all = p.findall(src)
rst = {}
for matcher in all:
rst[matcher[0]]=matcher[1]
return rst
def readConfig():
f = open('config.txt','r')
content = f.read()
content +=&qu ...
- 2011-04-02 17:15
- 浏览 733
- 评论(0)
经过对videologger的进一步了解,其架构很有意思的将一些插件处理为C/S模式。
比如语音识别,其是另外跑一个名为softsound的SERVER。在videologger安装它的客户端插件。
最终的数据处理方式就是videologger解出裸数据(比如softsound应该是音频PCM),TCP的形式发送到softsound server。softsound server进行集中运算,然后将结果返回VL,或者自己处理存储。
个人认为优势有下:
1. 共用了vl的demux、decode模块,源数据永远只过一次解码器;
2. 集成在vl平台,享受平台优势(如调度等 ...
- 2011-03-24 23:27
- 浏览 694
- 评论(0)