24/04/2006

C/C++ 資源

Links:

  • JDBC in C++: a commercial product which provides the functionality to use JDBC in C++. Have a look(none open-source).
  • Loki C++ Library: Loki is a C++ library which demonstrates and encourages the use of generic programming and designe patterns. It was written to accompany the book entitled 'Modern C Design.' The library includes a parametrized smart pointer class, generalized functors, a multithreading abstraction, and some help for important patterns.
  • OpenTop: Cross-Platform C++: OpenTop is a radically new C class library that provides the means to create powerful and robust network-oriented applications and greatly simplifies their development.

    At its core, OpenTop contains framework classes that provide vital facilities that are absent from the C standard library. These include:

    • Networking
    • Unicode
    • Multi-threading
    • Memory and resource management
  • The Boost C Libraries: C++ libraries for boost your performances.
  • Log for C++: Log4cpp is library of C classes for flexible logging to files, syslog, IDSA and other destinations. It is modeled after the Log4j Java library, staying as close to their API as is reasonable.
  • ACE Overview: The ADAPTIVE Communication Environment (ACE) is a freely available, open-source object-oriented (OO) framework that implements many core patterns for concurrent communication software. ACE provides a rich set of reusable C wrapper facades and framework components that perform common communication software tasks across a range of OS platforms. The communication software tasks provided by ACE include event demultiplexing and event handler dispatching, signal handling, service initialization, interprocess communication, shared memory management, message routing, dynamic (re)configuration of distributed services, concurrent execution and synchronization.
  • Crypto Library 5.1 - a Free C Class Library of Cryptographic Schemes: Crypto Library is a free C class library of cryptographic schemes.
  • nn-utility: THE AIM OF THE NN-UTILITY project is to create a neural network library that takes care of the tedious programming of networks in object oriented C . The library makes the creation of network topologies and weight definitions very easy. The library also has some default functions, making the programming of sigmoid, kohen, binomial, and radial basis functions simple. On top of this the library is composed of some accessories, like simple bitmap creators and readers, enabling networks to be trained with bitmaps.
  • IT++: A C++ library of mathematical, signal processing, speech processing, and communications classes and functions. It has been developed by researchers in these areas. The kernel of the package are templated vector and matrix classes and lots of functions for vectors and matrices. As such the kernel is similar to the Matlab functions.

08/07/2004

Software: Modeling

Resource Link UML
  • Objects by Design: UML Modeling Tools: 不用錢的UML工具大集合!
  • AndroMDA - Homepage: "AndroMDA (pronounced: andromeda) is an open source code generation framework that follows the model driven architecture (MDA) paradigm. It takes a UML model from a CASE-tool and generates classes and deployable components (J2EE or other), specific for your application architecture."
  • jDiSeq - Java software system dissector - jDiSeq: "jDiSeq is a tool which analyzes a running system - client- or serverside - and generates UML (Unified Modeling Language) sequence diagrams. jDiSeq will give Java software projects the ability to generate an up-to-date dynamic view upon the system they are analyzing."
Asset Oriented Modeling (AOM)

A modeling method that is:

  • expressive
  • compact
  • modular
  • simple
AOM is designed with these goals in mind:
  • unified approach to entities and relationships (assets)
  • support for higher order relationships
  • support for complex data structures based on regular grammars
  • namespaces and scopes

19/05/2004

XML 資源

Reference

Native XML Database
  • eXist
  • Apache Xindice
  • SourceForge.net: Project Info - XML Database Manager: "XDBM is an embedded database designed specifically to handle XML data."
  • Berkeley DB XML: "Berkeley DB XML is an application-specific native XML data manager built on Berkeley DB, the world's most widely deployed data management engine. Berkeley DB XML provides fast, reliable, scalable and cost-effective storage and retrieval for native XML data and semi-structured data."
Not XML

一些長得像 XML, 又不是 XML 的 Markup language。通常是為了簡化表達方式,提供可讀性...

  • OGDL, Ordered graph data language: "OGDL is a structured textual format that represents information in the form of graphs, where the nodes are strings and the arcs or edges are spaces or indentation." See also: Cubicle Muses: An OGDL example
  • YAML Ain't Markup Language: "YAML(tm) (rhymes with 'camel') is a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages such as Perl and Python. YAML is optimized for data serialization, configuration settings, log files, Internet messaging and filtering."

08/02/2004

Java: AOP

To understand the spirit of AOP, you must understand the following issues:

  • separation of concerns: referring the Law of Demeter, a project's efficiency increases if all the concerns are well modularized and if you only have to speak to your direct friends to make a modification of the program (this is a very old principle and the OOP gives some answers)
  • crosscutting: in a complex system, there are always some concerns that are not easily modularized, especially common-interest concerns that, by essence, are used by several modules (i.e. several modules use/share a well-known service of a module --such as a logging or a persistence service)
  • dependencies inversion: the best way to avoid crosscutting is to NOT use the well-known services that crosscut. This is possible by reversing the dependencies (i.e. the well-known service shall use the other modules instead of the contrary). This dependency inversion is implemented by aspects...

Projects:

  • Aspectj
  • JAC
  • Nanning Aspects AOP framework
  • AspectWerkz is a dynamic, lightweight and high-performant AOP/AOSD framework for Java. AspectWerkz utilizes runtime bytecode modification to weave your classes at runtime. It hooks in and weaves classes loaded by any class loader except the bootstrap class loader. It has a rich join point model. Aspects, advices and introductions are written in plain Java and your target classes can be regular POJOs. You have the possibility to add, remove and re-structure advices as well as swapping the implementation of your introductions at runtime. Your aspects can be defined using either an XML definition file or using Runtime Attributes

See also:

  • ASOD - the home for the Aspect-Oriented Software Development.
  • I want my AOP!
  • Aspect Programming: Aspect Programming provides software development and training services. We are based in the Seattle area. The services we provide to our clients include:
    • Analysis, design, and implementation services for software projects
    • Project and Product management
    • Expertise in Intenet, Wireless, and Enterprise Java technologies
    • Design and code reviews
    • Training and mentoring
  • Improve modularity with aspect-oriented programming: Aspect-oriented programming (AOP) is a new programming technique that allows programmers to modularize crosscutting concerns (behavior that cuts across the typical divisions of responsibility, such as logging). AOP introduces aspects, which encapsulate behaviors that affect multiple classes into reusable modules. With the recent release of AspectJ by Xerox PARC, Java developers can now take advantage of the modularization AOP can provide. This article introduces AspectJ and illustrates the design benefits that result from its use.
  • Aspect Mentor: AspectMentor is a consortium of experts in aspect-oriented software development.

    We can help your organization adopt and work with aspect-oriented programming technologies. Our consultants provide services including:

    • Training: tutorials and seminars of varying lengths on topics including AspectJ, AOP frameworks, and AOP for enterprise computing.
    • Mentoring: design, pair programming, code reviews, proof of concepts and prototyping, and tool and platform integration.
    • Project planning: choosing and designing pilot projects, planning adoption strategies, and integrating AOSD into existing systems.
    • Proposal writing: creating effective proposals for new AOP projects.

02/02/2004

Python 資源

  • Python org -- Python 官方網站
  • Twisted-Python -- 是一個精緻的 Network Framework API,內建支援包括 SMTP, FTP, HTTP, SOAP 等。個人最欣賞的,是它的 Woven web framework, 它的 MVC 設計模式,完全將呈現與程式碼分離。在 Java 中能與它匹配的,可能就是 Tapestry。不過Woven 在架構及易用性上,都比 Tapestry 來得簡單。
  • Zope -- 大名鼎鼎的 content management framework。它的 Zope Page Templates(ZPT) 跟 Woven 有異曲同工之妙!
  • Plone -- 大名鼎鼎的 content management system。如果從它的下載數量來看的話,說它是最受歡迎的 open source content management system,應不為過。

18/09/2003

Java 與 Database 相關的資源

Database Server Writen in Java:

  • Axion: Axion is a small, fast, open source relational database system (RDBMS) supporting SQL and JDBC written in and for the Java programming language.
  • hsqldb: hsqldb is a relational database engine written in Java, with a JDBC driver, supporting a rich subset of ANSI-92 SQL (BNF tree format). It offers a small (less than 160k), fast database engine which offers both in memory and disk based tables. Embedded and server modes are available. Additionally, it includes tools such as a minimal web server, in-memory query and management tools (can be run as applets) and a number of demonstration examples. (根據我測試的結果,在用 embedded 模式時,資料都是放在記憶體中,會導致 out off mamory!)
  • Mckoi: Mckoi SQL Database is an SQL (Structured Query Language) Database management system written for the JavaTM platform. Mckoi SQL Database is optimized to run as a client/server database server for multiple clients, however it can also be embedded in an application as a stand-alone database. It is highly multi-threaded and features an extendable object-oriented engine.
  • ozone: The Ozone Database Project is a open initiative for the creation of an open source, Java based, object-oriented database management system.
Database Client Writen in Java :
  • SQuirreL SQL Client: "SQuirreL SQL Client is a graphical Java program that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc."
  • QueryForm Database Tool: "QueryForm is a robust Java application that provides a powerful GUI front end for JDBC-enabled databases. It creates forms on-the-fly through which you can query tables and browse the results with just a few keystrokes or mouse clicks. It also lets you insert, update and delete table rows without typing any SQL statements."
  • JDBC Explorer: A Swing front end to connect with every DBMS (Data Base Manager System) who has a JDBC driver. It is written using pure Java and no third party library is used. It is:
    • Cross-platform: every O.S. with a JVM, JDK 1.4 or above
    • Cross DBMS: every data base server having a JDBC driver
    • Source code available through the Open Source license
  • SQL Admin: SQL Admin is a Java client application to connect and send queries to different databases through JDBC. The main idea is to create a multiplatform and multidatabase thin client. For example you can connect to an Microsoft SQL Server from a Linux machine, or connect to a PostgreSQL/Linux server from a windows machine using the same application

17/09/2003

Java 資源

Example Resource:

Information Center: Extended Java

23/03/2003

.NET 資源

Links:

Tools: