前往: 導覽, 搜尋

軟體設計


我不敢說我自己會寫程式,因為我認識太多厲害的高手了,跟這些人比起來我根本不值得一提!不過再怎麼樣我還是這樣過來了,而且還一度以這個為生,未來會不會怎樣我不知道,不過現階段的我,靠著寫程式應該還餓不死吧!

目錄

Language

Framework

Network

Java

  • Netty:Asynchronous event-driven network application framework.
  • Raining Socket:Raining Sockets is a non-blocking sockets framework which eases the job of creating a highly scalable application that can receive and send over 10000 socket connections.
  • naga:Naga aims to be a very small NIO library that provides a handful of java classes to wrap the usual Socket and ServerSocket with asynchronous NIO counterparts (similar to NIO2 planned for Java 1.7).
  • extasys:Extasys is a fast, accurate and easy to use TCP/UDP socket library for Java, Mono and Microsoft .NET Framework. The power of this socket is the asynchronous data proccessing that offers.
  • Apache Mina:Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract event-driven asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.

MVC

UI

Cross-Platform

  • QT:A cross-platform application and UI framework based on C and C++.
  • Tcl/TkTcl (Tool Command Language) is a very powerful but easy to learn dynamic programming language, suitable for a very wide range of uses, including web and desktop applications, networking, administration, testing and many more. Open source and business-friendly, Tcl is a mature yet evolving language that is truly cross platform, easily deployed and highly extensible.
    Tk is a graphical user interface toolkit that takes developing desktop applications to a higher level than conventional approaches. Tk is the standard GUI not only for Tcl, but for many other dynamic languages, and can produce rich, native applications that run unchanged across Windows, Mac OS X, Linux and more.
  • GTK+:GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API.
  • JX Application Framework:JX is a full-featured C++ application framework and widget library (SDK) for use with the X Window System.
  • Adobe Flex:A software development kit released by Adobe Systems for the development and deployment of cross-platform rich Internet applications based on the Adobe Flash platform. Flex applications can be written using Adobe Flex Builder or by using the freely available Flex compiler from Adobe.
  • wxWidgets:A widget toolkit for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes. It covers systems such as Microsoft Windows, Mac OS X, Linux/Unix (X11, Motif, and GTK+), OpenVMS, OS/2 and AmigaOS. A version for embedded systems is under development.
  • FLTK:A cross-platform GUI library, developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is still suitable for general GUI programming.
  • JavaFX:A software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. TV set-top boxes, gaming consoles, Blu-ray players and other platforms are planned.
  • Sliverlight:A web application framework that provides functionalities similar to those in Adobe Flash, integrating multimedia, graphics, animations and interactivity into a single runtime environment. Initially released as a video streaming plugin, later versions brought additional interactivity features and support for .NET languages and development tools. The current version, 3.0, was released on July 9, 2009.[1]
  • Kendo UI:Kendo UI combines everything needed for modern JavaScript development, including rich UI Widgets, a powerful DataSource, an MVVM framework, universal Drag-and-Drop, Templates, and Themes.

Windows

  • Microsoft Foundation Class Library(MFC):A library that wraps portions of the Windows API in C++ classes, including functionality that enables them to use a default application framework. Classes are defined for many of the handle-managed Windows objects and also for predefined windows and common controls.
  • Windows Template Library (WTL):A C++ library for developing Windows applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more.http://developer.yahoo.com/yui/
  • Windows Forms: The name given to the graphical application programming interface (API) included as a part of Microsoft's .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code.
  • Windows Presentation Foundation(WPF):A graphical subsystem for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0. Designed to remove dependencies on the aging GDI subsystem, WPF is built on DirectX, which provides hardware acceleration and enables modern UI features like transparency, gradients and transforms. WPF provides a consistent programming model for building applications and provides a clear separation between the user interface and the business logic.
  • Visual Component Library(VCL):A visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++ Builder RAD tools (now owned by CodeGear, division of Embarcadero Technologies). It is written in Object Pascal.

Web

  • JQuery:A fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.
  • Prototype:A JavaScript Framework that aims to ease development of dynamic web applications.
  • MooTools:A compact, modular, Object-Oriented JavaScript framework designed for the intermediate to advanced JavaScript developer. It allows you to write powerful, flexible, and cross-browser code with its elegant, well documented, and coherent API.
  • YUI:A set of utilities and controls, written with JavaScript and CSS, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. YUI is available under a BSD license and is free for all uses.
  • Google Web Toolkit(GWT):An open source set of tools that allows web developers to create and maintain complex JavaScript front-end applications in Java. Other than a few native libraries, everything is Java source that can be built on any supported platform with the included GWT Ant build files. It is licensed under the Apache License version 2.0.
  • ExtJS:A JavaScript library for building interactive web applications[2] using techniques such as Ajax, DHTML and DOM scripting.
  • Bootstrap:Simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions.
  • React:A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES

Responsive Design

  • Topcoat:支援Web和Mobile的App框架。
  • Pure:A set of small, responsive CSS modules that you can use in every web project.

Application

Spring

  • Spring Framework:The Spring Framework is an open source application framework for the Java platform and .NET Framework (Spring.NET).

ORM

  • Hibernate
  • Ibatis, iBATIS:A persistence framework which automates the mapping between SQL databases and objects in Java, .NET, and Ruby on Rails. In Java, the objects are POJOs (Plain Old Java Objects). The mappings are decoupled from the application logic by packaging the SQL statements in XML configuration files. The result is a significant reduction in the amount of code that a developer needs to access a relational database using lower level APIs like JDBC and ODBC.
    It's for Java, .Net & Ruby.
  • Doctrine:Doctrine is an object relational mapper (ORM) for PHP 5.2.3+ that sits on top of a powerful database abstraction layer (DBAL). One of its key features is the option to write database queries in a proprietary object oriented SQL dialect called Doctrine Query Language (DQL), inspired by Hibernates HQL. This provides developers with a powerful alternative to SQL that maintains flexibility without requiring unnecessary code duplication.
  • Propel:An open-source Object-Relational Mapping (ORM) library written in PHP5, written on top of PDO. It allows you to access your database using a set of objects, providing a simple API for storing and retrieving data. Propel allows web application developers to work with databases in the same way they work with other classes and objects in PHP.
  • PdoMap:A framework for object-relational mapping (ORM) written in PHP 5. It allows you to easily define the structure of your databases and manipulate them without needing to write PHP code or SQL queries.

Web Framework

PHP

Python

  • Django:An open source web application framework, written in Python, which follows the model-view-controller architectural pattern.
  • Jython
  • IronPython

Java

  • Struts:Apache Struts is a free open-source framework for creating Java web applications.
  • JavaServer Faces(JSF):A Java-based Web application framework intended to simplify development integration of web-based user interfaces.
  • Apache Wicket:With proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML, Apache Wicket makes developing web-apps simple and enjoyable again. Swap the boilerplate, complex debugging and brittle code for powerful, reusable components written with plain Java and HTML.
  • Javalin:Javalin是以Java與Kotlin發展的web framework,適合撰寫小型的REST API

Ruby

  • Ruby on Rails:An open source web application framework for the Ruby programming language. It is intended to be used with an Agile development methodology that is used by web developers for rapid development.[1]

ASP.NET

  • ASP.NET MVC Framework:A web application framework that implements the model-view-controller pattern. Based on ASP.NET, it allows software developers to build a Web application as a composition of three roles: Model, View and Controller. A model represents the state of a particular aspect of the application. Frequently, a model maps to a database table with the entries in the table representing the state of the application. A controller handles interactions and updates the model to reflect a change in state of the application, and then passes information to the view. A view accepts necessary information from the controller and renders a user interface to display that.[1]

Template Engine

PHP

  • Smarty:A web template system written in PHP. Smarty is primarily promoted as a tool for separation of concerns, which is a common design strategy for certain kinds of applications.

Java

  • Tiles:A templating framework built to simplify the development of web application user interfaces. Tiles allows authors to define page fragments which can be assembled into a complete page at runtime. These fragments, or tiles, can be used as simple includes in order to reduce the duplication of common page elements or embedded within other tiles to develop a series of reusable templates. These templates streamline the development of a consistent look and feel across an entire application. Tiles grew in popularity as a component of the popular Struts framework. It has since been extracted from Struts and is now integrated with various frameworks, such as Struts 2 and Shale.

Javascript

  • Ember.js:Write dramatically less code with Ember's Handlebars integrated templates that update automatically when the underlying data changes.

Cross-platform Framework

提供橫跨web, mobile與desktop的開發框架

Javascript

  • Meteor:Meteor 框架是Node.js上最出色的全端框架。專案在GitHub上有28K+的星星,擁有大量的自定義模組,龐大的社群支援,非常好的教程和文件。
  • NeutralinoJS:以Node.js為基礎,以Javascript撰寫跨平台macOS, Windows與Linux的app。

Modeling

UML Tools

  • StarUML:open source的Modeling Tool。
  • JUDE:提供Cummunity版本跟專業版本的Modeling Tool。
  • ArgoUML:Java版本,看起來簡單實用的UML工具。
  • Poseidon:一套以海神波塞頓為名的UML工具,相當有名氣,提供免費的Cummunity版本和要錢的專業版本。
  • Visual-Paradigm:一套看起來很強大,但是要錢的UML編輯工具。

References

  • UML工具的網站:收集UML工具的網站,並且依照價格做了排序,從Open source版本的到要價十萬美金以上的產品都可以找得到。

Tools

IDE

  • Visual Studio 2003
  • Visual Studio 2005
  • Visual Studio 2008
  • Visual Studio 2010
  • Delphi
  • Borland JBuilder
  • Phped:A commercial integrated development environment for PHP (PHP IDE), HTML, CSS, XML, SMARTY, XHTML and other. Features: Advanced PHP Editor, PHP Debugger (including unique support for multiple Parallel Debug sessions) and PHP Profiler, Code Insight, Database Client, deployment over FTP/SFTP/WebDav, CVS/SVN support, Integrated Help System.[1] [2] [3] [4] [5]
  • Netbeans[1]:A platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala and Clojure.

Eclipse

HTML Editor

  • Aptana Studio:Build web applications quickly and easily using the industry’s leading web application IDE. Aptana Studio harnesses the flexibility of Eclipse and focuses it into a powerful web development engine.

C & C++

  • Code::Blocks:A free and open source, cross platform IDE. It is developed in C++ using wxWidgets as the GUI toolkit. Using a plugin architecture, its capabilities and features are defined by the provided plugins. Currently, Code::Blocks is oriented towards C/C++.
  • C++Builder:A rapid application development (RAD) environment, developed by Borland and as of 2009 owned by the CodeGear subsidiary of Embarcadero Technologies, for writing programs in the C++ programming language. C++Builder combines the Visual Component Library and IDE written in Delphi with a C++ compiler. The release cycle is such that Delphi gets major enhancements first, with C++Builder following.[1] Most components developed in Delphi can be used in C++Builder with no modification, although the reverse is not true.
  • Dev-C++:A free integrated development environment (IDE) distributed under the GNU General Public License for programming in C and C++. It is bundled with MinGW, a free compiler. The IDE is written in Delphi.

Online Editor

Version Control

  • Subversion:A version-control system initiated in 2000 by CollabNet Inc. Developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly-compatible successor to the widely used Concurrent Versions System (CVS).
  • Concurrent Versions System (CVS):A free software revision control system in the field of software development. Version control system software keeps track of all work and all changes in a set of files, and allows several developers (potentially widely separated in space and/or time) to collaborate. Dick Grune developed CVS as a series of shell scripts in July 1986.[1]
  • SVK:A decentralized version control system written in Perl, with a hierarchical distributed design comparable to centralized deployment of BitKeeper and GNU arch. The primary author of svk is Kao Chia-liang (Chinese: 高嘉良). Like Perl, it is distributed under the Artistic License and the GNU General Public License, making svk free software.

Administration

  • Splunk:Splunk[1][2][3] is a log monitoring and reporting tool for system administrators, with search capabilities.[4] It crawls logs, metrics, and other data from applications, servers, and network devices, and indexes it in a searchable repository from which it can generate graphs, SQL reports and alerts.[5] It is intended to assist system administrators in the identification of patterns and the diagnosis of problems. Log files can be correlated across systems and software components which can help administrators uncover the cause of system failures[6]

Service Wrapper

  • nssm: nssm is a service helper which doesn't suck. srvany and other service helper programs suck because they don't handle failure of the application running as a service. If you use such a program you may see a service listed as started when in fact the application has died. nssm monitors the running service and will restart it if it dies. With nssm you know that if a service says it's running, it really is. Alternatively, if your application is well-behaved you can configure nssm to absolve all responsibility for restarting it and let Windows take care of recovery actions. 可將應用程式包裝成Windows服務。

Terminal

  • Rlogin:一套來自日本的遠端登入工具,儘管全面都是日文界面,但功能卻一點也不含糊。

Data Processing Engine

  • Wallaroo: Wallaroo is a fast, elastic data processing engine that rapidly takes you from prototype to production by eliminating infrastructure complexity.

Image Editor

Browser

  • qutebrowser:專注於提供良好鍵盤體驗的瀏覽器。

Browser Extension

  • Markdown Here:作為各大瀏覽器的擴充,可以在各大瀏覽器寫信時用markdown寫信經過轉換後送出

Project Management

Trello-like or kanban

  • WeKan:Trello-like open source version.

Forum

Database Client

資料庫的用戶端工具

SQL Server

Machine Learning

Google

  • Kubeflow: The Kubeflow project is dedicated to making Machine Learning on Kubernetes easy, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way for spinning up best of breed OSS solutions.

BRMS

  • Drools: Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules Engine (BRE), a web authoring and rules management application (Drools Workbench), full runtime support for Decision Model and Notation (DMN) models at Conformance level 3 and an Eclipse IDE plugin for core development.

Other

  • NBA go:用command line模式看NBA

Deployment

Java

  • MavenMaven:A software tool for Java project management and build automation. It is similar in functionality to the Apache Ant tool, but is based on different concepts. Maven is hosted by the Apache Software Foundation, where it was formerly part of the Jakarta Project.
  • Apache Ant

Library & API

.net

PHP

Extension

  • XDebug:The Xdebug extension helps you debugging your script by providing a lot of valuable debug information.

C & C++

Compiler

  • MinGW (Minimalist GNU for Windows):A native software port of the GNU Compiler Collection (GCC) to Microsoft Windows, along with a set of freely distributable import libraries and header files for the Windows API. MinGW allows developers to create native Microsoft Windows applications.[2] Included in MinGW are extensions to the Microsoft Visual C++ runtime library to support C99 functionality.[2]
  • Cygwin:An Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment. Thus it is possible to launch Windows applications from the Cygwin environment, as well as to use Cygwin tools and applications within the Windows operating context.

Graphic

  • OpenGL:An standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL was developed by Silicon Graphics Inc. (SGI) in 1992[1] and is widely used in CAD, virtual reality, scientific visualization, information visualization, and flight simulation. It is also used in video games, where it competes with Direct3D on Microsoft Windows platforms (see OpenGL vs. Direct3D). OpenGL is managed by a non-profit technology consortium, the Khronos Group.
  • DirectX:A collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth. The name DirectX was coined as shorthand term for all of these APIs (the X standing in for the particular API names) and soon became the name of the collection. When Microsoft later set out to develop a gaming console, the X was used as the basis of the name Xbox to indicate that the console was based on DirectX technology.[1] The X initial has been carried forward in the naming of APIs designed for the Xbox such as XInput and the Cross-platform Audio Creation Tool (XACT), while the DirectX pattern has been continued for Windows APIs such as Direct2D and DirectWrite.
  • [Graphviz http://www.graphviz.org/]:Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Automatic graph drawing has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains.

Javascript

Date

  • MomentJS:A 5kb javascript date library for parsing, validating, manipulating, and formatting dates.
    • 評語:很小簡單很好用,相容性高很強大!。

Charting

  • Frappe Charts:小巧精良的charting library,特別的地方是他是Zero Dependency,沒有依賴任何其他Librarry,而且有提供annual heatmap功能。

GraphQL

GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data.

Redis

Java

Elasticsearch

Python

Validation

Data Structure

  • Bplustree: 以disk來處理的b+ Tree,相較儲存於記憶體的優勢是可以處理大型資料。

Test

Unit Test

PHP

Python

Test Automation

Mock

Java

  • mockito:Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with clean & simple API. Mockito doesn't give you hangover because the tests are very readable and they produce clean verification errors.
  • jMock:JMock is a library that supports test-driven development of Java code with mock objects.
  • EasyMock:EasyMock provides Mock Objects for interfaces (and objects through the class extension) by generating them on the fly using Java's proxy mechanism. Due to EasyMock's unique style of recording expectations, most refactorings will not affect the Mock Objects. So EasyMock is a perfect fit for Test-Driven Development.
  • PowerMock:PowerMock is a framework that extend other mock libraries such as EasyMock with more powerful capabilities. PowerMock uses a custom classloader and bytecode manipulation to enable mocking of static methods, constructors, final classes and methods, private methods, removal of static initializers and more. By using a custom classloader no changes need to be done to the IDE or continuous integration servers which simplifies adoption. Developers familiar with the supported mock frameworks will find PowerMock easy to use, since the entire expectation API is the same, both for static methods and constructors. PowerMock aims to extend the existing API's with a small number of methods and annotations to enable the extra features. Currently PowerMock supports EasyMock and Mockito.
  • JMockit:JMockit helps developers to write unit and integration tests where parts of the code are exercised in isolation from other parts which are tricky or regarded as external. Whenever needed, all kinds of Java types and methods can easily be mocked or faked, including final classes, static methods, constructors, and so on.
  • Unitils

RIA

Objective-C

  • OCMock:OCMock is an Objective-C implementation of mock objects. If you are unfamiliar with the concept of mock objects please visit mockobjects.com which has more details and discussions about this approach to testing software.

Visual Test

Database

RDBMS

Non-RDBMS

  • Cassandra :An open source distributed database management system. It is an Apache Software Foundation top-level project[1] designed to handle very large amounts of data spread out across many commodity servers while providing a highly available service with no single point of failure. It is a NoSQL solution that was initially developed by Facebook and powers their Inbox Search feature[2]. Jeff Hammerbacher, who led the Facebook Data team at the time, has described Cassandra as a BigTable data model running on a Amazon Dynamo-like infrastructure
  • MongoDB:MongoDB (from "humongous") is a scalable, high-performance, open source, schema-free, document-oriented database. Written in C++.
  • FoundationDB:FoundationDB is a new-generation database built to support a diverse set of applications and data models while delivering exceptional performance, data consistency, and operational resilience.
  • kdb+:Kdb+, from Kx Systems, is a high-performance historical time-series columnar database, an in-memory compute engine, and a real-time streaming processor – unified with an expressive query and programming language called q.

References

Infrastructure

Web Server

  • The Apache HTTP Server:An effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.

Application Server

  • Apache Tomcat:An open source software implementation of the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed under the Java Community Process.
  • JBoss Application Server:A free software/open-source Java EE-based application server. Because it is Java-based, the JBoss application server operates cross-platform: usable on any operating system that Java supports. JBoss AS was developed by JBoss, now a division of Red Hat.
  • GlassFish:An open source application server project led by Sun Microsystems for the Java EE platform. The proprietary version is called Sun GlassFish Enterprise Server.
  • IBM Websphere:A software application server, is the flagship product within IBM's WebSphere brand. WAS is built using open standards such as Java EE, XML, and Web Services. It works with a number of Web servers including Apache HTTP Server, Netscape Enterprise Server, Microsoft Internet Information Services (IIS), IBM HTTP Server for i5/OS, IBM HTTP Server for z/OS, and IBM HTTP Server for AIX/Linux/Microsoft Windows/Solaris. Uses 9060 port for connection.

Monitor Framework & Platform

Microservice

  • jaeger: Distributed Tracing System
  • url-to-pdf-api: Web page PDF rendering done right. Microservice for rendering receipts, invoices, or any content. Packaged to an easy API.

Decencenterialized Website

  • ZeroNet: Decenterialized website based on bitcoin and bittorrent.

Web Console

Shell In A Box

Web Console

APM

Operation System

Mobile

  • Android:A mobile operating system that uses a modified version of the Linux kernel.[4][5][6] It was initially developed by Android Inc., a firm later purchased by Google, and lately by the Open Handset Alliance.[7] It allows developers to write managed code in the Java language, controlling the device via Google-developed Java libraries.
  • iPhone:A mobile operating system developed and marketed by Apple Inc. Since the introduction of the iPhone and iPod Touch, it has been included as the default operating system of the devices, and has been announced as the default operating system for the upcoming iPad.
  • Symbian:An operating system (OS) designed for mobile devices and smartphones, with associated libraries, user interface, frameworks and reference implementations of common tools, originally developed by Symbian Ltd. It was a descendant of Psion's EPOC and runs exclusively on ARM processors, although an unreleased x86 port existed.

Command Tools

Continous Integration

Cross-platform

  • Jenkins:Jenkins is an award-winning application that monitors executions of repeated jobs, such as building a software project or jobs run by cron.

Mobile & HTML5

Apache Cordova

  • Apache Cordova:pache Cordova is a set of device APIs that allow a mobile app developer to access native device function such as the camera or accelerometer from JavaScript. Combined with a UI framework such as jQuery Mobile or Dojo Mobile or Sencha Touch, this allows a smartphone app to be developed with just HTML, CSS, and JavaScript.

Apps

  • Termux: Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.

Platform

  • shoutem:A platform to build, publish, and manage native apps with ease.

Traning And Learning

Resource Search

Other