技术开发

作为开发设计人员,开发框架与开发库,以及工具的选取是一个重要的课题。没有万能,只有合适的,好的选择事半功倍。在此介绍一些开源的项目,仅供参考。技术无止境,修行在个人,愿大家一同成长:



《开发框架,中间件,开发库、发布,以及监视》
分类 简要说明 相关链接
ACE Network The ADAPTIVE Communication Environment
ACE是一款优秀的面向对象的网路通讯Framework,支持多平台

  • schmidt




  • Ice Network Ice是又一款优秀的面向对象的网路通讯Framework,支持多平台
  • Home




  • libcurl Network libcurl是Multiprotocol file transfer library,支持FTP,LDAP.HTTP,POP3,SMTP,SCP,RTMP,TELNET等多种协议
  • Home




  • commoncpp Library GNU Common C++,非常好的class framework
  • Home




  • Boost Library Boost是强大的跨平台C++开发库,基本上封装了常用的文件,线程,网络,定时器等各种接口API
  • Home




  • Qt Library Qt是一款cross-platform application and UI framework
  • Home




  • wxWidgets Library wxWidgets是cross-platform(Windows,Unix,iPhone) UI library
  • Home




  • Metro Library Metro是一款性能优越的web service协议栈的JAVA实现。支持JAXB, JAXP等,也可以代替SOAP而使用RESTful,代替XML而使用JSON。使用wsimport可以方便轻松地由WSDL生成Java代码,完成协议的透明封装。
  • Home




  • Metro vs Axis2




  • log4cpp Library log4cpp是经典的日志处理C++类库,可以输出到本地文件,syslog,以及其他网络机器。早已移植到JAVA平台。
  • Home




  • Apache log4j




  • D-Bus IPC D-Bus是跨平台的进程间通信【プロセス間通信】中间件,支持C, Java, C++, C#, Python, Ruby, Perl, GTK+, Qt, Maemo等多种开发语言
  • wikipedia




  • freedesktop




  • winDBus




  • Connect desktop apps




  • Qpid Messaging Qpid是开源AMQP Messaging,支持C++, Java JMS, .Net, Python, and Ruby等
  • Apache Qpid




  • RabbitMQ Messaging RabbitMQ是又一款AMQP实现,支持XMPP, SMTP, STOMP以及HTTP。
  • Home




  • YAMI4 Messaging YAMI4是跨平台的Messaging Solution for Distributed Systems,支持Ada, C++, Java和Python等
  • Home




  • RSMB Messaging RSMB是来自IBM的开源项目Really Small Message Broker
  • ibm:alphaworks




  • MOM Messaging Message Oriented Middleware
  • Vendor Lists




  • AMQP+flex




  • as3-amqp




  • Queuing Protocol




  • Firebird DataBase Firebird是有别于PostgreSQL、MySQL,由InterBase演化而来的一款轻量级关系型数据库,支持嵌入式。
  • Home




  • SQLite DataBase SQLite是非常有名的跨平台的文件关系型数据库,小巧快速可靠,支持事务。通过C/C++接口API可以方便地实现各种操作控制。另外,数种语言开发包也实现了对其的支持。
  • Home




  • Cassandra DataBase Cassandra,源于Facebook,是可以承载高负荷的第二代分布式数据库,采用KVS(Key Value Store)形式,所谓的NoSQL(Not only SQL),最近的热点话题之一。Twitter和Digg已经实际采用。
  • Home




  • NoSQL数据库笔谈




  • Hadoop Computing Apache Hadoop project develops open-source software for reliable, scalable, distributed computing
  • Home




  • Pidgin IM Pidgin是完美的IM(Instant Messaging)客户端和开发库。支持几乎现存所有的聊天工具,AIM, MSN, YahooMessenger, GoogleTalk, ICQ, QQ, Bonjour, GaduGadu, XMPP, Zephyr等等,iPhone上也能使用,超强!
  • Home




  • iPhone版




  • Subversion CVS Subversion是CVS之后新一代代码管理工具,支持目录的移动和删除等新功能。目前有很多种Client实现,日语版的WIKI中有一些链接。
  • Home




  • wikipedia(EN)




  • wikipedia(JP)




  • Valgrind Debug Valgrind是优秀的多平台运行时内存检测工具,包括内存泄漏,非法访问,等等。
  • Home




  • mpatrol Debug mpatrol是一款古老的支持多平台的运行时内存检测工具。
  • Home




  • Jmeter Test Jmeter是基于Java的系统压力测试工具。
  • Home




  • InnoSetup Setup InnoSetup是免费的Windows下安装包制作工具,支持UNICODE。
  • Home




  • NSIS Setup NSIS是又一款开源的Windows下安装包制作工具。
  • Home




  • IzPack Setup IzPack是跨平台的安装包制作工具,只需要安装JRE。
  • Home

  • AMANDA Backup Advanced Maryland Automatic Network Disk Archiver
    AMANDA是跨平台的LAN网络磁盘备份系统,使用标准的tar和dump工具,支持磁带tape和disk硬盘。

  • Home

  • rsync Backup rsync是一款快速的增量式文件传输工具,一般的类Linux发行版中都有标配。
  • Home

  • Nagios Monitor Nagios是超级强大的开源的系统监视工具。实现CPU占有率,内存,进程,磁盘空间,HTTP/POP3/SMTP/SNMP等网络服务,日志追踪等多类型,多层次网络系统监控。
  • Home

  • Wireshark Monitor Wireshark是经典的网络抓包工具,Tcpdump的Windows版,绝对是网络软件开发和通讯问题分析的首选。
  • Home

  • TTCP Network Test TCP (TTCP) is a command-line sockets-based benchmarking tool for measuring TCP and UDP performance between two systems
  • Home

  • Iperf Network Iperf, a modern alternative for measuring maximum TCP and UDP bandwidth performance
  • Home

  • BWPing Network BWPing is a tool to measure bandwidth and response times between two hosts using Internet Control Message Protocol (ICMP) echo request/echo reply mechanism
  • Home

  • Dia Design Dia是基于Java的开源的流程图制作工具
  • Home

  • ArgoUML Design ArgoUML是基于Java的开源的UML建模工具
  • Home

  • GanttProject Management GanttProject是跨平台的项目进度管理工具
  • Home

  • SpeQ Computing SpeQ是功能强大的轻量级数学计算工具,虽说比不上MATLAB,足以满足一些常用的需求了,更何况是免费的
  • Home



  • 《网络多媒体以及SIP相关》

    谈到多媒体处理,视频和视频编解码是核心关键,各个公司推出的产品过于昂贵,在这里简单地介绍一些优秀的开源项目。

    Speex: audio compression format designed for speech
    Ogg Vorbis: audio encoding
    FLAC: Free Lossless Audio Codec, an audio format similar to MP3
    Theora: video compression
    MPEG Advanced Audio Coding(AAC)
    WebM: Google主推的媒体规格,采用Matroska为MediaContainer,视频VP8,音频Vorbis
    Matroska Media Container
    Voice Codec Summary table
    Lossless codecs comparison
    音声処理: 理論から、音声ファイルの構造、さらに音声CODECの性能比較まで
    FOURCC: 视频四字符代码Four character code, an identifier for a video codec
    中国数字音视频编解码技术标准工作组AVS


    具体开发过程中,DirectShow是Windows平台的不二选择,前辈高人已经实现了一些强大的媒体开发库,采用这些框架可以方便地处理各种编解码。

    ffdshow: DirectShow and VFW codec for decoding/encoding many video and audio formats
    Xiph.Org Foundation
    Directshow Filters for Ogg Vorbis, Speex, Theora, FLAC, and WebM
    FFmpeg: complete, cross-platform solution to record, convert and stream audio and video, including libavcodec
    FFmpegX: Mac OS X graphic user interface
    PortAudio - portable cross-platform Audio API(Unix上为OSS/ALSA)
    Windows Mixer API:可以实现音频设备的高度控制,尤其是硬件设备音量调节(注意,不是流音量)

    Windows Multimedia Device (MMDevice) API
    Windows Audio Session API (WASAPI)
    Windows DeviceTopology API
    Windows EndpointVolume API


    今年,随着宽带的普及,各种网络媒体服务已经走进了公众的生活,比如,视频会议,VOD,VoIP,网络电视,网络电影,IP电话,等等,不可或缺。用简单的技术术语来解释,就是【流服务】。一些网络协议是这些服务的技术支撑。包括,RTSP(Real Time Streaming Protocol),SDP(Session Description Protocol),RTP(Real-time Transport Protocol),RTCP(RTP Control Protocol),SIP(Session Initiation Protocol),MGCP(Media Gateway Control Protocol),RSVP(Resource reSerVation Protocol)等等。

    Request for Comments (RFC)
    Reference guide to all things VOIP
    Open Source VOIP Software:权威珍藏版,几乎集合了所有的开源SIP-Proxy,SIP-Client,以及SIP协议栈,RTP协议栈,还有PBX等实现
    Multicast over TCP/IP HOWTO
    MBONE: Multicasting Tomorrow's Internet
    Reliable Multicast Transport (rmt)
    RTP Tools(rtpplay,rtpsend,rtpdump,rtptrans)


    排除局域网LAN,以及VPN等特定环境之外,网络应用不可回避的问题之一,就是穿越NAT和防火墙。
    NAT traversal的解决方案主要有2种,也就是基于Behavior和基于Control,其中STUN和TURN,以及UPnP等广为人知。顺便说几句,链接的建立最关键,链接建立以后还需要维持,因为防火墙打开一个洞以后,配置的时间(一般为几分钟)内如果没有数据包通过的话,可能会将其关闭,也就是必须注意NAT防火墙的生命周期,周期内必须要有数据流动,以保持连接,比如SIP的重复注册。

    Peer-to-Peer Communication Across NAT(Network Address Translators)
    NAT Traversal through Tunneling (NATTT)
    Middlebox Communication (midcom)


    流服务器:

    Darwin Streaming Server: 流服务器open source version of Apple’s QuickTime Streaming Server
    LIVE555 Streaming Media


    网络监控和管理工具:

    Network Monitoring Tools
    NIST Net

    《WEB以及RIA开发》
    随着web2.0的飞速发展和普及,现在可以融合(Mashup)第三方的各种服务,充分发挥自己创意,将全新的服务呈现给用户。XML-RPC、SOAP、WSDL、JSTL、RESTful、Json(P)、AJAX等都是相关技术术语。像Google、Yahoo、Amazone、Rakuten等都向外推出了自己的WebService API,鼓励别人使用自己的服务。从开发角度来说,一种是基于客户端(JS脚本),一种是服务器端,各有所长。对于服务器端的WebService来说,目前的开源开发平台主要有Metro和Axis2等,性能上前者要胜一筹。不仅能实现service和serviceclient,而且还使用其WSDL导入工具wsimport,能够引入基于Microsoft的WCF的WebService,实现跨平台。

    List of Ajax frameworks
    The Most Complete AJAX Framework and JavaScript Libraries List
    GlassFish » Metro
    Apache Axis2/Java
    Java Web services: Metro vs. Axis2 performance
    Getting Started with JAX-WS Web Services
    MSDN Interoperability and Integration
    WCF & Java Interop
    .NET WCF services and Java Web Services Interoperability
    WCF测试工具WCFStorm-Lite

    关于JSON,轻量级数据交换格式,下面是一些相关链接。

    JSON(JavaScript Object Notation): Lightweight data-interchange format
    Jackson: High-performance JSON processor
    XML tools by category