├── .vscode └── last.sql ├── LICENSE ├── README.md ├── assets └── a12e552f4bd0332daf28385d9e614efe.png ├── c-learning-notes.md ├── coding.md ├── elixir-learning-notes.md ├── file ├── ArchitectInterview.vsdx └── 阿里巴巴Java开发手册v1.3.0.pdf ├── img ├── 83b7771f9b0ae62378dcbb0229c189d0.png └── dotNET-Architect.png ├── magic-fsharp.md ├── papers.md ├── projects-part-1-app-dev.md ├── projects-part-10-dotnet.md ├── projects-part-11-management.md ├── projects-part-12-blockchain.md ├── projects-part-2-distributed-arch.md ├── projects-part-3-data-storage-analysis.md ├── projects-part-4-devops.md ├── projects-part-5-gis.md ├── projects-part-6-digital-pub.md ├── projects-part-7-security.md ├── projects-part-8-iot.md ├── projects-part-9-ai.md ├── python-learning-notes.md ├── system-design-reference.md ├── tech-conference.md ├── webdev-learning-notes.md └── website-attack-and-defense.md /.vscode/last.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/.vscode/last.sql -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ethan Cai 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 3 | 这是我的编程语言学习笔记。如果能对你有所帮助,不胜荣幸。 4 | 5 | 目录: 6 | 7 | - 项目清单 8 | - [Common Framework & Libs](./projects-part-1.md) 9 | - [Distributed Architecture](./projects-part-2.md) 10 | - [Data Storage and Analysis](./projects-part-3.md) 11 | - [DevOps](./projects-part-4.md) 12 | - [GIS](./projects-part-5.md) 13 | - [Digital Publishing](./projects-part-6.md) 14 | - [Security](./projects-part-7.md) 15 | - [IoT](./projects-part-8.md) 16 | - [Artificial Intelligence](./projects-part-9.md) 17 | - [Web开发学习笔记](./webdev-learning-notes.md) 18 | - [Python学习笔记](./python-learning-notes.md) 19 | - [Elixir语言学习笔记](./elixir-learning-notes.md) 20 | - [系统设计学习笔记](./system-design-reference.md) 21 | - [常见的网络攻击手段和防御方法](./website-attack-and-defense.md) 22 | - [技术大会介绍和资料](./tech-conference.md) 23 | - [技术论文](./papers.md) 24 | 25 | 26 | ------------------------------------------------------------------------------- 27 | 28 | # Fundamental Knowledge 29 | 30 | - HTTP 31 | - [HTTP/2](https://http2.github.io/) 32 | - WebSocket 33 | - [The WebSocket Protocol](https://tools.ietf.org/html/rfc6455) 34 | - [WAMP - The Web Application Messaging Protocol](http://wamp-proto.org): WAMP is an open standard WebSocket subprotocol that provides two application messaging patterns in one unified protocol: Remote Procedure Calls + Publish & Subscribe. 35 | - RESTful API 36 | - [Wikipedia - RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) 37 | - [Richardson Maturity Model](http://martinfowler.com/articles/richardsonMaturityModel.html) 38 | - [OData](http://www.odata.org/): OData is an OASIS standard for creating and consuming RESTful APIs. 39 | - IoT 40 | - [Internet of Things Protocols & Standards](http://postscapes.com/internet-of-things-protocols) 41 | - [Understanding The Protocols Behind The Internet Of Things](http://electronicdesign.com/iot/understanding-protocols-behind-internet-things) 42 | - Bitcoin 43 | - [Bitcoin Network](https://en.wikipedia.org/wiki/Bitcoin_network) 44 | - [Bitcoin wiki](https://en.bitcoin.it/wiki/Main_Page) 45 | - [Bitcoin](https://bitcoin.org/en/): Bitcoin is an innovative payment network and a new kind of money. 46 | - Hypermedia 47 | - [IPFS](http://ipfs.io): The InterPlanetary File System (IPFS) is a new hypermedia distribution protocol, addressed by content and identities. IPFS enables the creation of completely distributed applications. It aims to make the web faster, safer, and more open. 48 | 49 | 50 | ------------------------------------------------------------------------------- 51 | 52 | # Product Design 53 | 54 | 产品设计相关,我理解的产品设计包含 商业模式设计、用户体验设计、需求分析、业务架构设计、信息架构设计 55 | 56 | ## 理论 57 | 58 | - UI/UE设计理论 59 | - [Google Material Design](https://www.google.com/design/spec/material-design/introduction.html) 60 | - [macOS Human Interface Guidelines](https://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/OSXHIGuidelines/) 61 | - [iOS Human Interface Guidelines](https://developer.apple.com/ios/human-interface-guidelines/) 62 | - [中文翻译](https://isux.tencent.com/search/%E4%BA%BA%E6%9C%BA%E7%95%8C%E9%9D%A2%E6%8C%87%E5%8D%97) 63 | 64 | ## 工具使用 65 | 66 | - [系统设计学习笔记](./system-design-reference.md) 67 | 68 | 69 | ------------------------------------------------------------------------------- 70 | 71 | # Programming 72 | 73 | 编程相关 74 | 75 | ## 技术架构设计 76 | 77 | //todo 78 | 79 | ## Programming Languages Planning to Learn 80 | 81 | To master: 82 | 83 | - Golang 84 | - Python 85 | - R 86 | - Julia 87 | - JavaScript 88 | - TypeScript 89 | - Rust 90 | - C 91 | - C++ 92 | - Java 93 | - Scala 94 | - Ruby 95 | - .NET 96 | - C# 97 | - F# 98 | 99 | To know about: 100 | 101 | - Common Lisp 102 | - https://picolisp.com/ 103 | - https://nim-lang.org/ 104 | - PHP 105 | 106 | ### Golang 107 | 108 | - Language References 109 | - [Official Home](https://golang.org/#) 110 | - Package Finder 111 | - [GoDoc](https://godoc.org/) 112 | - [Go libraries and apps](https://golanglibs.com/) 113 | - Guide & News 114 | - [Official Blog](https://blog.golang.org/) 115 | - [Going Go Programming](https://www.goinggo.net/) 116 | - [Golang News](https://golangnews.com/) 117 | - Tools 118 | - [Go Playground](https://play.golang.org/) 119 | - [JSON to Go](https://mholt.github.io/json-to-go/) 120 | - [GoCover](https://gocover.io/): GoCover.io offers the code coverage of any golang package as a service. 121 | - [Go Report Card](https://goreportcard.com/): A web application that generates a report on the quality of an open source go project. 122 | - References 123 | - [Awesome Go](https://github.com/avelino/awesome-go): A curated list of awesome Go frameworks, libraries and software 124 | 125 | ### Python & R & Julia 126 | 127 | Python: 128 | 129 | - Language References 130 | - [Python](https://www.python.org/) 131 | - [Intel Distribution for Python](https://software.intel.com/content/www/us/en/develop/tools/distribution-for-python.html): Accelerate Python* and speed up core computational packages with this performance-oriented distribution. 132 | - [Pypy](https://www.pypy.org/): A fast, compliant alternative implementation of Python 133 | - Package 134 | - [Python Package Index](https://pypi.python.org/pypi) 135 | - Guide & News 136 | - [Python Packaging User Guide](https://packaging.python.org/) 137 | - Tools 138 | - pyenv 139 | - Anaconda 140 | 141 | R: 142 | 143 | - Language References 144 | - [R](https://www.r-project.org/) 145 | 146 | Julia: 147 | 148 | - Language References 149 | - [Julia](https://julialang.org/) 150 | 151 | ### Rust & C & C++ 152 | 153 | Rust: 154 | 155 | - Language References 156 | - [Rust](https://www.rust-lang.org/en-US/) 157 | 158 | C & C++: 159 | 160 | - Language References 161 | - [C语言学习笔记](./c-learning-notes.md) 162 | - [C Course](http://www.geeksforgeeks.org/c/) 163 | - [C++ Course](http://www.geeksforgeeks.org/c-plus-plus/) 164 | - [cppreference](http://en.cppreference.com/w/) 165 | - Guide & News 166 | - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) 167 | - [Linux Kernel Coding Style](https://www.kernel.org/doc/html/latest/process/coding-style.html) 168 | - [A cheatsheet of modern C++ language and library features](https://github.com/AnthonyCalandra/modern-cpp-features) 169 | - [Meeting Cpp](https://www.meetingcpp.com/index.html) 170 | - [Bjarne Stroustrup's homepage](http://www.stroustrup.com/index.html) 171 | - Tools 172 | - [Clang](http://clang.llvm.org/): The goal of the Clang project is to create a new C based language front-end: C, C++, Objective C/C++, OpenCL C and others for the LLVM compiler. You can get and build the source today. C/C++, OpenCL C and others for the LLVM compiler. You can get and build the source today. 173 | - [CMake](https://cmake.org/): CMake is an open-source, cross-platform family of tools designed to build, test and package software. 174 | 175 | Other: 176 | 177 | - Language References 178 | - [Gravity](https://github.com/marcobambini/gravity): Gravity is a powerful, dynamically typed, lightweight, embeddable programming language written in C without any external dependencies (except for stdlib). It is a class-based concurrent scripting language with modern Swift-like syntax. 179 | 180 | ### Java & Scala & Groovy 181 | 182 | Java: 183 | 184 | - Language References 185 | - [Java SE](http://www.oracle.com/technetwork/java/javase/overview/index.html) 186 | - Guide & News 187 | - [Java EE Platform Specification](https://github.com/javaee/javaee-spec) 188 | - [阿里巴巴Java开发手册](./file/阿里巴巴Java开发手册v1.3.0.pdf) 189 | - [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) 190 | - [Java World](https://www.javaworld.com/) 191 | 192 | Scala: 193 | 194 | - Language References 195 | - [Scala](http://www.scala-lang.org/) 196 | - [Groovy](http://groovy-lang.org/) 197 | 198 | Groovy: 199 | 200 | - Language References 201 | - [Groovy](http://groovy-lang.org/) 202 | 203 | Other: 204 | 205 | - Language References 206 | - [AviatorScript](https://github.com/killme2008/aviator): AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言 207 | - [Clojure](https://clojure.org/) 208 | 209 | 210 | ### .NET 211 | 212 | C#: 213 | 214 | - Language References 215 | - [Official Home of .NET on GitHub](https://github.com/microsoft/dotnet) 216 | - Guide & News 217 | - [NET设计规范:约定、惯用法与模式](http://book.douban.com/subject/4231292/) 218 | - [C# Coding Conventions](https://msdn.microsoft.com/en-us/library/ff926074.aspx) 219 | - [C# 3.0, C# 4.0 and C# 5.0 Coding Guidelines](http://csharpguidelines.codeplex.com/) 220 | - [.NET Foundation](http://www.dotnetfoundation.org) 221 | - Tools 222 | - [Awesome dotNET](https://github.com/quozd/awesome-dotnet) 223 | - [Mono Projects](https://github.com/mono) 224 | 225 | F#: 226 | 227 | - Language References 228 | - [Magic F#](./magic-fsharp.md) 229 | 230 | ### PHP 231 | 232 | - Language References 233 | - [PHP Manual](http://php.net/manual/en/) 234 | - [The PHP Package Repository](https://packagist.org/) 235 | - Guide & News 236 | - [PHP the right way](https://github.com/codeguy/php-the-right-way) 237 | - [PHP扩展开发及内核应用](https://github.com/walu/phpbook) 238 | - [PHP7内核剖析](https://github.com/pangudashu/php7-internal) 239 | - [PHP Framework Interop Group](http://www.php-fig.org/) 240 | - Tools 241 | - [Composer](https://getcomposer.org/) 242 | 243 | ### Common Lisp 244 | 245 | - Language References 246 | - [Common Lisp](https://common-lisp.net/index.html) 247 | - [MIT-Scheme](https://www.gnu.org/software/mit-scheme/) 248 | - [Racket](http://racket-lang.org/) 249 | - Guide & News 250 | - [Wiki2 - Scheme (programming language)](https://wiki2.org/en/Scheme_(programming_language)) 251 | 252 | ![](assets/a12e552f4bd0332daf28385d9e614efe.png) 253 | 254 | 255 | ------------------------------------------------------------------------------- 256 | 257 | # DevOps 258 | 259 | 运维相关 260 | 261 | - [Google Shell Style Guide](https://google.github.io/styleguide/shell.xml) 262 | - [Logging best practices](http://dev.splunk.com/view/logging-best-practices/SP-CAAADP6) 263 | - [Open Tracing Project](http://opentracing.io/): Consistent, expressive, vendor-neutral APIs for distributed tracing and context propagation 264 | 265 | 266 | ------------------------------------------------------------------------------- 267 | 268 | # Data & Insight & Intelligence 269 | 270 | 数据收集、存储、处理、分析相关 271 | 272 | - [Bad Data Guide](https://github.com/Quartz/bad-data-guide): An exhaustive reference to problems seen in real-world data along with suggestions on how to resolve them. 273 | 274 | 275 | ------------------------------------------------------------------------------- 276 | 277 | # Books that I Have Read 278 | 279 | ## Common 280 | 281 | - [Head First Object-Oriented Analysis and Design](https://book.douban.com/subject/1761742/) 282 | - [Head First Design Patterns](https://book.douban.com/subject/1400656/) 283 | - [重构 - Martin Fowler](https://book.douban.com/subject/4262627/) 284 | 285 | ## .NET Framework 286 | 287 | - [CLR via C#](http://book.douban.com/subject/4924165/) 288 | - [微软应用架构指南](https://book.douban.com/subject/5362857/) 289 | - [Threading in C#](http://www.albahari.com/threading/) 290 | 291 | ------------------------------------------------------------------------------- 292 | 293 | # References 294 | 295 | - [Open Source Testing](http://www.opensourcetesting.org/) 296 | - [NoSQL Database](http://nosql-database.org/) 297 | - [amplab - UC BERKELEY](https://amplab.cs.berkeley.edu/) 298 | - [A Complete List of .NET Open Source Developer Projects](http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/) 299 | - [Essential JavaScript website](https://github.com/ericelliott/essential-javascript-links) 300 | - [Google Style Guide](https://github.com/google/styleguide): Style guides for Google-originated open-source projects 301 | -------------------------------------------------------------------------------- /assets/a12e552f4bd0332daf28385d9e614efe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/assets/a12e552f4bd0332daf28385d9e614efe.png -------------------------------------------------------------------------------- /c-learning-notes.md: -------------------------------------------------------------------------------- 1 | # Projects 2 | 3 | - [LuaJIT](http://luajit.org/index.html): LuaJIT is a Just-In-Time Compiler (JIT) for the Lua programming language. Lua is a powerful, dynamic and light-weight programming language. It may be embedded or used as a general-purpose, stand-alone language. 4 | 5 | # FAQ 6 | 7 | ## 什么是C语言的协程? 8 | 9 | 参考: 10 | 11 | - [谈谈协程和C语言的协程](http://www.yeolar.com/note/2013/02/17/coroutines/) 12 | - [Coroutines in C](http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html) -------------------------------------------------------------------------------- /coding.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [编辑器和IDE](#%e7%bc%96%e8%be%91%e5%99%a8%e5%92%8cide) 4 | 5 | # 编辑器和IDE 6 | 7 | - [Vim](http://www.vim.org/) 8 | - [Neovim](https://neovim.io/): hyperextensible Vim-based text editor 9 | - [Visual Studio Code](https://code.visualstudio.com/) 10 | - [Emacs](http://www.gnu.org/software/emacs/) 11 | - [Spacemacs](https://github.com/syl20bnr/spacemacs): A community-driven Emacs distribution 12 | - jetbrain 13 | - [IDEA](https://www.jetbrains.com/idea/) 14 | - [Goland](https://www.jetbrains.com/go/) 15 | 16 | 参考: 17 | 18 | - 如果想把xcode作为Python的IDE,可以参考[这篇文章](http://blog.netsh.org/posts/xcode-python_1846.netsh.html) 19 | - https://wiki.python.org/moin/IntegratedDevelopmentEnvironments 20 | -------------------------------------------------------------------------------- /elixir-learning-notes.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | - [official website](http://elixir-lang.org/) 4 | 5 | # Projects 6 | 7 | - [Phoenix framework](http://www.phoenixframework.org/): A productive web framework that 8 | does not compromise speed and maintainability 9 | 10 | # References 11 | 12 | - [Awesome Elixir](https://github.com/h4cc/awesome-elixir): A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things. -------------------------------------------------------------------------------- /file/ArchitectInterview.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/file/ArchitectInterview.vsdx -------------------------------------------------------------------------------- /file/阿里巴巴Java开发手册v1.3.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/file/阿里巴巴Java开发手册v1.3.0.pdf -------------------------------------------------------------------------------- /img/83b7771f9b0ae62378dcbb0229c189d0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/img/83b7771f9b0ae62378dcbb0229c189d0.png -------------------------------------------------------------------------------- /img/dotNET-Architect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthanCai/programming-learning-notes/dfab3af2cc0ec2d9b55ac2f08cfe6e8a11e5050e/img/dotNET-Architect.png -------------------------------------------------------------------------------- /magic-fsharp.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | - [F# at Microsoft Research](http://research.microsoft.com/en-us/projects/fsharp/) 4 | - [F# Software Foundation](http://fsharp.org/) 5 | - [The F# Core Engineering Group](http://fsharp.github.io/) 6 | - [F# Compiler and Components](https://github.com/fsharp) 7 | - [F# Community Project Incubation Space](https://github.com/fsprojects) 8 | - Community 9 | - [F# Discussions - Google Groups](https://groups.google.com/forum/#!forum/fsharp-opensource) 10 | - [Community for F#](http://c4fsharp.net/) 11 | - F# in Data Science 12 | - [Fslab](http://fslab.org/) 13 | - [Data Sciense with F#](http://fsharp.org/guides/data-science/index.html) 14 | - Learn F# 15 | - [Learning F#](http://fsharp.org/about/learning.html) 16 | - [Visual F# - MSDN](https://msdn.microsoft.com/en-us/library/dd233154.aspx) 17 | - [F# for fun and profit](http://fsharpforfunandprofit.com/): This site will introduce you to F# and show you ways that F# can help in day-to-day development of mainstream commercial business software. 18 | - [F# Cheatsheet](http://dungpa.github.io/fsharp-cheatsheet/): This cheatsheet glances over some of the common syntax of F# 3.0. 19 | - Blog 20 | - [http://fpish.net/](http://fpish.net/): online community for functional developers 21 | - [Tomas Petricek's blog](http://tomasp.net/blog/) 22 | - [Inside F#](https://lorgonblog.wordpress.com/) 23 | 24 | 25 | # Books 26 | 27 | - Apress.Expert.F.Sharp.Dec.2007 28 | - Apress.Foundations.of.F.Sharp.May.2007 29 | - F# for Scientists 30 | - Packt.F.Sharp.For.Quantitative.Finance.Dec.2013 31 | - Packt.Learning.Fsharp.Functional.Data.Structures.and.Algorithms 32 | - Real-World Functional Programming- With Examples in F# and C# 33 | - The Book of F# 34 | - Programming.Fsharp.3.0(2nd,2012.10) 35 | - [F# Wikibook](https://en.wikibooks.org/wiki/Programming:F_Sharp) 36 | 37 | # Articles 38 | 39 | - 2011-11-20: [F#学习体会](http://blog.csdn.net/jostey/article/details/6994354) 40 | - 2015-07-20: [Announcing the RTM of Visual F# 4.0](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-the-rtm-of-visual-f-4-0.aspx) 41 | 42 | # Projects 43 | 44 | ## Web Server 45 | 46 | - [Frack](https://github.com/fractureio/frack): An implementation of the Open Web Interface for .NET (OWIN), a .NET Web Server Gateway Interface, written in F#. 47 | 48 | ## Web Framework 49 | 50 | - [Suave.IO](http://suave.io/): Framework/library/web server that makes you cry tears of joy after finishing your project ahead-of-time when you look at the beautiful code you've written in `[F#]`. 51 | - [WebSharper](http://websharper.com/): A fundamentally different web framework for developing functional and reactive .NET applications 52 | 53 | ## Authentication and Authorization 54 | 55 | - [Logibit Hawk](https://github.com/logibit/logibit.hawk/) - A F# [Hawk](https://github.com/hueniverse/hawk#usage-example) authentication library 56 | 57 | ## CLI 58 | 59 | - [UnionArgParser](https://github.com/nessos/UnionArgParser) - Declarative CLI argument & XML configuration parser for F# applications. 60 | 61 | ## Data Science 62 | 63 | - [Deedle](http://bluemountaincapital.github.io/Deedle/): Data frame and (time) series library for exploratory data manipulation with C# and F# support 64 | - [F# R Type Provider](http://bluemountaincapital.github.io/FSharpRProvider/): Type provider that exposes R packages and functions in a type-safe way to F# callers 65 | - [F# Data](http://fsharp.github.io/FSharp.Data/): F# type providers for accessing XML, JSON, CSV and HTML files (based on sample documents) and for accessing WorldBank data 66 | - [F# Charting](http://fslab.org/FSharp.Charting/): The F# Charting library implements charting suitable for use from F# scripting. 67 | - [F# Data Toolbox](http://fsprojects.github.io/FSharp.Data.Toolbox/): F# Data Toolbox is a library for various data access APIs based on FSharp.Data. It will contain individual packages for each data source. 68 | - [XPlot](https://github.com/TahaHachana/XPlot): A plotting library for the F# programming language. 69 | 70 | ## Documentation 71 | 72 | - [F# Formatting](http://tpetricek.github.io/FSharp.Formatting/) - Tools for documenting F# and C# projects from F# Script files, Markdown documents and inline XML or Markdown comments 73 | 74 | ## Build 75 | 76 | - [FAKE](https://github.com/fsharp/FAKE) - F# Make, a cross platform build automation system 77 | 78 | ## Unit Test 79 | 80 | - [Fuchu](https://github.com/mausch/Fuchu) - A unit-testing library for F# with tests-as-values which makes DSLs extemely easy to create. 81 | 82 | ## Tools 83 | 84 | - [Visual F# Power Tools](http://fsprojects.github.io/VisualFSharpPowerTools/): the community-provided Visual F# Power Tools, for use with Visual Studio 2012 and 2013 (Community or higher, not Express, see above). 85 | -------------------------------------------------------------------------------- /papers.md: -------------------------------------------------------------------------------- 1 | 2 | # 参考 3 | 4 | - [Papers from the computer science community to read and discuss](https://github.com/papers-we-love/papers-we-love) 5 | 6 | # 分类 7 | 8 | ## Operating Systems 9 | 10 | Mach [Intro: http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html,Paper: http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html] 11 | 12 | 传统的kernel实现中,对中断的响应是在一个“大函数”里实现的。称为大函数的原因是从中断的入口到出口都是同一个控制流,当有中断重入发生的时候,实现逻辑将变得非常复杂。大多数的OS,如UNIX,都采用这种monolithic kernel architecture。 13 | 14 | 1985年开始的Mach项目,提出了一种全新的microkernel结构,使得由于70年代UNIX的发展到了极致而觉得后续无枝可依的学术界顿时找到了兴奋点,也开始了沸沸扬扬的monokernel与microkernel的争论。 15 | 16 | 插播一个花絮:Mach的主导者Richard Rashid,彼时是CMU的教授,受BillGates之托去游说JimGray加盟MS。结果把自己也被绕了进来,组建了Microsoft Research。他到中国来做过几次21Century Computing的keynotes。 17 | 18 | Exokernel [Intro:http://pdos.csail.mit.edu/exo/,Paper:http://pdos.csail.mit.edu/PDOS-papers.html#Exokernels] 19 | 20 | 虽然microkernel的结构很好,但实际中并没有广泛应用,因为performance太差,而且大家逐渐发现OS的问题并不在于实现的复杂性,而更多在于如何提高application使用资源的灵活性。这也就是在kernel extension(例如loadable module in Linux)出现后,有关OS kernel architecture的争论就慢慢淡出人们视线的原因。 21 | 22 | Exokernel正是在这样的背景中出现的,它并不提供传统OS的abstraction(process,virtual memory等),而是专注于资源隔离与复用(resource isolation and multiplexing),由MIT提出。在exokernel之上,提供了一套库,著名的libOS,用于实现各种OS的interface。这样的结构为application提供了最大的灵活度,使不同的application可以或专注于调度公平性或响应实时性,或专注于提高资源使用效率以优化性能。以今天的眼光来看,exokernel更像是一个virtual machine monitor。 23 | 24 | Singularity [Intro:http://research.microsoft.com/os/Singularity/,Paper: http://www. 25 | research.microsoft.com/os/singularity/publications/HotOS2005_BroadNewResearch.pdf] 26 | 27 | Singularity出现在virus,spyware取之不尽、杀之不绝的21世纪初期,由Microsoft Research提出。学术界和工业界都在讨论如何提供一个trust-worthy computing环境,如何使计算机系统更具有manage-ability。Singularity认为要解决这些问题,底层系统必须提供hardisolation,而以前人们都依赖的硬件virtual memory机制并无法提供高灵活性和良好性能。在.Net和Java等runtime出现之后,一个软件级的解决方案成为可能。 28 | 29 | Singularity在microkernel的基础上,通过.Net构建了一套type-safed assembly作为ABI,同时规定了数据交换的message passing机制,从根本上防止了修改隔离数据的可能。再加上对application的安全性检查,从而提供一个可控、可管理的操作系统。由于.NetCLR的持续优化以及硬件的发展,加了这些检查后的Singularity在性能上的损失相对于它提供的这些良好特性,仍是可以接受的。 30 | 31 | 这种设计目前还处于实验室阶段,是否能最终胜出,还需要有当年UNIX的机遇。 32 | 33 | ## Virtual Machines 34 | 35 | VMWare ["MemoryResource Management in VMware ESX Server",OSDI’02,Best paper award] 36 | 耳熟能详的vmware,无需多说。 37 | 38 | XEN [“Xen and the Art of Virtualization”, OSDI’04] 39 | 性能极好的VMM,来自Cambridge。 40 | 41 | Denali [“Scaleand Performance in the Denali Isolation Kernel”, OSDI’02, UW] 42 | 为internetservices而设计的application level virtual machine,在普通机器上可运行数千个VMs。其VMM基于isolation kernel,提供隔离,但并不要求资源分配绝对公平,以此减少性能消耗。 43 | 44 | Entropia [“The Entropia VirtualMachine for Desktop Grids”, VEE’05] 45 | 要统一利用公司内桌面机器资源来进行计算,需要对计算任务进行良好的包装,以保证不影响机器正常使用并与用户数据隔离。Entropia就提供了这样的一个计算环境,基于windows实现了一个application level virtual machine。其基本做法就是对计算任务所调用的syscall进行重定向以保证隔离。类似的工作还有FVM:“AFeather-weight Virtual Machine for Windows Applications”。 46 | 47 | ## Design Revisited 48 | 49 | “Are Virtual Machine Monitors Microkernels Done Right?”,HotOS’05 50 | 51 | 这个题目乍听起来,十分费解,其意思是VMMs其实就是Microkernel的正确实现方法。里面详细讨论了VMM和Microkernel,是了解这两个概念的极好参考。 52 | 53 | “Thirty Years Is Long Enough: Getting Beyond C”, HotOS’05 54 | 55 | C可能是这个世界上最成功的编程语言,但其缺点也十分明显。比如不支持thread,在今天高度并行的硬件结构中显得有点力不从心,而这方面则是functional programming language的长处,如何结合二者的优点,是一个很promising的领域。 56 | 57 | ## Programming Model 58 | 59 | “Why Threads Are a Bad Idea” 60 | 61 | 单使用thread结构的server是很难真正做到高性能的,原因在于内存使用、切换开销、同步开销和保证锁正确性带来的编程复杂度等。 62 | 63 | “SEDA: An Architecture for Well-Conditioned, Scalable Internet Services”,OSDI’01 64 | 65 | Thread不好,但event也没法解决所有问题,于是我们寻找一个结合的方法。SEDA将应用拆分为多个stage,不同stage通过queue相连接,同一个stage内可以启动多个thread来执行queue中的event,并且可通过反馈来自动调整thread数量。 66 | 67 | ## Software Transactional Memory 68 | 69 | 如果内存可以提供transaction语义,那么我们面对的世界将完全两样,language, compiler, OS, runtime都将发生根本变化。虽然intel现在正在做hardware transactional memory,但估计可预见的将来不会商用,所以人们转而寻求软件解决方案。可想而知,这个方案无法base在native assembly上,目前有C#,haskell等语言的实现版本。资料比较多,参见Wikipedia。 70 | 71 | ## Distributed Algorithms 72 | 73 | **Logical clock**, [“Time,clocks, and the ordering of events in a distributed system”, Leslie Lamport, 1978] 74 | 75 | 这是一篇关于Logic clock, time stamp, distributed synchronization的经典paper。 76 | 77 | **Byzantine** [“The ByzantineGenerals Problem”, Leslie Lamport, 1982] 78 | 79 | 分布式系统中的错误各种各样,有出错就能停机的,有出错了拖后腿的,更严重的是出错了会做出恶意行为的。最后的这种malicious behavior,就好像出征将军的叛变,将会对系统造成严重影响。对于这类问题,Lamport提出了Byzantine failure model,对于一个由3f+1个replica组成的statemachine,只要叛变的replica数量小于等于f,整个state machine还能正常工作。 80 | 81 | **Paxos** [“The part-time parliament”, Leslie Lamport, 1998] 82 | 83 | 如何在一个异步的分布式环境中达成consensus,这是分布式算法研究的最根本问题。Paxos是这类算法的顶峰。不过这篇paper太难了,据说全世界就3.5人能看懂,所以Lamport后来又写了一篇普及版paper:“Paxos Made Simple” ,不过还是很难懂。另外,也可参看Butler Lampson写的“The ABCD’s of Paxos”(PODC’01),其中关于replicated state machine的描述会严重启发你对并行世界本质的认识,图灵奖的实力可不是盖的。 84 | 85 | 这上面反复出现了一个名字:Leslie Lamport,他在distributed computing这个领域挖坑不辍,终成一代宗师。关于他,也有几则轶事。记得以前他在MSR的主页是这么写的,“当我在研究logicalclock的时候,BillGates还穿着开裆裤(in diaper)…”(大意如此,原文现在找不到了)。另外,他在写paper的时候,很喜欢把其他牛人的名字变换一下编排进去。这可能也是他还没拿到图灵奖的原因。[注1] 86 | 87 | 关于Lamport的其他成就,还可以参见这篇向他60岁生日献礼的paper:“Lamport on mutual exclusion: 27 years of planting seeds”, PODC’01。 88 | 89 | ## Overlay Networking, and P2P DHT 90 | 91 | RON [“Resilient Overlay Networks”, SOSP’01] 92 | 93 | RON描述了如何在应用层搭建一个overlay,以提供秒级广域网网络层故障恢复速度,而现有的通过路由协议来恢复通信的时间至少在几十分钟。这种快速恢复特性和灵活性使得overlay networking现在被广泛应用。 94 | 95 | ## Application Level Multicast 96 | 97 | “End System Multicast”, SigMetrics’00 98 | 99 | “Scalable Application Layer Multicast”, SigComm’02 100 | 101 | 关于ALM的paper很多,基本上都是描述如何搭建一个mesh network用以鲁棒的传输控制信息,另外再搭建一个multicast tree用以高效传输数据,然后再根据多媒体数据的特点做一些layered delivery。前几年出现的coolstream, pplive等系统都是这类系统的商业化产品。 102 | 103 | ## P2P 104 | 105 | P2P的出现改变了网络。按照各种P2P网络的结构,可以分为三种。 106 | 1. Napster式,集中式目录服务,数据传输Peer to peer。 107 | 2. Gnutella式,通过在邻居间gossip来查询,也被称为unstructured P2P。 108 | 3. DHT,与unstructured P2P不同的是,DHT进行的查询有保证,如果数据存在,可在一定的hop数内返回。这个hop数通常为logN,N为系统节点数。 109 | 110 | 典型的DHT有CAN, Chord,Pastry, Tapestry等四种。这些研究主要在算法层面,系统方面的工作主要是在其上建立广域网存储系统。还有一些人在机制层面进行研究,例如如何激励用户共享、防止作弊等。 111 | 112 | ## Distributed Systems 113 | 114 | GFS/MapReduce/BigTable/Chubby/Sawzall 115 | Google的系列paper,大家比较熟悉,不再多说。在此可查。 116 | 117 | ### Storage 118 | 119 | Distributed storage system的paper太多了。下面列出几篇最相关的。 120 | 121 | “Chain Replication for Supporting High Throughput and Availability”, OSDI’04。 122 | 123 | “Dynamo: Amazon’s Highly Available Key-value Store”,SOSP’07。 124 | 125 | “BitVault: a Highly Reliable Distributed Data Retention Platform”, SIGOPS OSR’07。 126 | 127 | “PacificA: Replication inLog-Based Distributed Storage Systems”, MSR-TR。 128 | 129 | ### Distributed Simulation 130 | 131 | “Simulating Large-Scale P2P Systems with the WiDS Toolkit”, MASCOTS’05。Distributed simulation有意思的地方是simulated protocol是distributed的,而这个simulation engine本身也是distributed的。Logical和physical的time和event交杂在系统中,需要仔细处理。 132 | 133 | ## Controversial Computing Models 134 | 135 | 现在的软件系统已经复杂到了人已经无法掌握的程度,很多系统在发布时都仍然带着许多确定性(deterministic)或非确定性(non-deterministic)的bugs,只能不断的patch。既然作为人类,不够精细的特性决定了我们无法把系统的bug fix干净,我们只能从其他角度入手研究一种让系统在这令人沮丧的环境中仍能工作的方法。这就像一个分布式系统,故障无法避免,我们选择让系统作为整体来提供高可靠性。 136 | 137 | 以下3个便是典型代表。基本上,主要研究内容都集中于1) 如何正确保存状态;2)如何捕捉错误并恢复状态;3)在进行单元级恢复时,如何做到不影响整体。 138 | 139 | Recovery Oriented Computing 140 | 141 | Failure oblivious computing, OSDI’04 142 | 143 | Treating Bugs as Allergies, SOSP’05 144 | 145 | ## Debugging 146 | 147 | 系统很复杂,人类无法从逻辑上直接分析,只能通过data mining的方法在宏观上进行观察。 148 | Black box debugging[“Performance debugging for distributed systems of black boxes”, SOSP’03] 149 | 对大型系统的performance debugging非常困难,因为里面的问题很多都是非确定性的,而且无法重现。只能通过对log的挖掘,找出配对的调用/消息以定位问题。 150 | 151 | CP-miner [“A Tool for Finding Copy-paste and Related Bugs in Operating System Code”, OSDI’04] 152 | 很多人在重用代码的时候,都使用copy-paste。但有时候简单的CP会带来严重的问题,例如局部变量的重名等。CP-miner通过分析代码,建立语法树结构,然后mine出这类错误。 153 | 154 | ## Software Architecture 155 | 156 | - Architecture, Design, Implementation 157 | - Orleans: Distributed Virtual Actors for Programmability and Scalability 158 | 159 | ## Big Data 160 | 161 | - [Twitter Heron: Stream Processing at Scale](http://dl.acm.org/citation.cfm?id=2742788) 162 | - Bigtable: A Distributed Storage System for Structured Data 163 | - The Google File System 164 | - MapReduce: Simplified Data Processing on Large Clusters 165 | 166 | ## Image Process 167 | 168 | - [Image Deblurring using Inertial Measurement Sensors](http://research.microsoft.com/en-us/um/redmond/groups/ivm/imudeblurring/) 169 | -------------------------------------------------------------------------------- /projects-part-1-app-dev.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Projects about Application Software Development](#projects-about-application-software-development) 4 | - [Compiler](#compiler) 5 | - [REPL](#repl) 6 | - [Language Converter \& Interpreter](#language-converter--interpreter) 7 | - [Debugger](#debugger) 8 | - [Analyzer](#analyzer) 9 | - [Profiling](#profiling) 10 | - [Web Servers \& Application Servers](#web-servers--application-servers) 11 | - [Application Frameworks](#application-frameworks) 12 | - [Template Engine](#template-engine) 13 | - [GUI Framework](#gui-framework) 14 | - [Asynchronous Programming Framework](#asynchronous-programming-framework) 15 | - [Web Socket](#web-socket) 16 | - [Network](#network) 17 | - [Server Framework](#server-framework) 18 | - [Thread \& Coroutine](#thread--coroutine) 19 | - [Reflect \& IoC](#reflect--ioc) 20 | - [Logging](#logging) 21 | - [Data Access](#data-access) 22 | - [Serialization \& Deserialization](#serialization--deserialization) 23 | - [Command Line](#command-line) 24 | - [File](#file) 25 | - [Image Processing](#image-processing) 26 | - [Audio \& Video](#audio--video) 27 | - [Computer Vision](#computer-vision) 28 | - [Authentication \& Authorization](#authentication--authorization) 29 | - [Office Documents](#office-documents) 30 | - [Instant Communication](#instant-communication) 31 | - [Expression Evaluator](#expression-evaluator) 32 | - [Misc Libraries](#misc-libraries) 33 | 34 | 35 | 36 | # Projects about Application Software Development 37 | 38 | ## Compiler 39 | 40 | - [LLVM](http://www.llvm.org/): The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines. The name "LLVM" itself is not an acronym; it is the full name of the project. 41 | - [Java: OpenJDK](http://openjdk.java.net/): open-source implementation of the Java Platform, Standard Edition 42 | - [Java: Oracle JDK](http://www.oracle.com/technetwork/java/javase/overview/index.html): N/A 43 | - [Java: Eclipse OpenJ9](http://www.eclipse.org/openj9/): IBM已经开源自己的JDK作为Eclipse OpenJ9 44 | 45 | ## REPL 46 | 47 | - Online REPL 48 | - [repl.it](https://repl.it/): Multiple languages repl 49 | - [Go Playground](https://play.golang.org/) 50 | - [JS Fiddle](https://jsfiddle.net/) 51 | - Go 52 | - [gore](https://github.com/motemen/gore) 53 | - [gosh](https://github.com/mkouhei/gosh) 54 | - [igo](https://github.com/sbinet/igo) 55 | 56 | ## Language Converter & Interpreter 57 | 58 | - [Golang: gopherjs](https://github.com/gopherjs/gopherjs): A compiler from Go to JavaScript for running Go code in a browser 59 | - [Golang: Grumpy](https://github.com/google/grumpy): Grumpy is a Python to Go source code transcompiler and runtime. 60 | - [Golang: Otto](https://github.com/robertkrimen/otto): A JavaScript interpreter in Go (golang) 61 | - [Golang: Q Language](https://github.com/qiniu/qlang): Q Language (Q语言) - A script language for Go 62 | - [C++: V8 JavaScript Engine](https://github.com/v8/v8): Google's open source JavaScript engine. 63 | 64 | 参考: 65 | 66 | - [Embed a scripting language inside Go](https://stackoverflow.com/questions/27496819/embed-a-scripting-language-inside-go) 67 | 68 | ## Debugger 69 | 70 | - [GDB](https://www.gnu.org/software/gdb/): The GNU Project Debugger 71 | - [gdbgui](https://github.com/cs01/gdbgui): A modern, browser-based frontend to gdb (gnu debugger). Add breakpoints, view stack traces, and more in C, C++, Go, and Rust. Simply run gdbgui from the terminal and a new tab will open in your browser. 72 | - [rr](https://github.com/mozilla/rr): rr is a lightweight tool for recording and replaying execution of applications (trees of processes and threads). rr aspires to be your primary C/C++ debugging tool for Linux, replacing — well, enhancing — gdb. You record a failure once, then debug the recording, deterministically, as many times as you want. The same execution is replayed every time. 73 | - [LLDB Debugger](http://lldb.llvm.org/): LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler. LLDB is the default debugger in Xcode on Mac OS X and supports debugging C, Objective-C and C++ on the desktop and iOS devices and simulator. 74 | - [Golang: Delve](https://github.com/derekparker/delve/): Delve is a debugger for the Go programming language. 75 | 76 | ## Analyzer 77 | 78 | - [Golang: goviz](https://github.com/hirokidaichi/goviz): a visualization tool for golang project dependency 79 | - [Golang: godepq](https://github.com/google/godepq): A utility for inspecting go import trees 80 | 81 | ## Profiling 82 | 83 | - [Golang: go-torch](https://github.com/uber/go-torch): Stochastic flame graph profiler for Go programs 84 | 85 | ## Web Servers & Application Servers 86 | 87 | - [Nginx](http://wiki.nginx.org/Main): a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. 88 | - [OpenResty](http://openresty.org/): OpenResty (aka. ngx_openresty) is a full-fledged web application server by bundling the standard Nginx core, lots of 3rd-party Nginx modules, as well as most of their external dependencies. 89 | - [Tengine](http://tengine.taobao.org/): Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。 90 | - [VeryNginx](https://github.com/alexazhou/VeryNginx): 功能强大并且拥有对人类友好界面的Nginx, 提供防火墙,自定义行为和统计功能 91 | - [lightttpd](http://www.lighttpd.net/): Security, speed, compliance, and flexibility -- all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd is the perfect solution for every server that is suffering load problems. And best of all it's Open Source licensed under the revised BSD license. 92 | - [Java: Tomcat](http://tomcat.apache.org/): The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process. 93 | - [Java: Jetty](http://www.eclipse.org/jetty/): Jetty provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations. These components are open source and available for commercial use and distribution. 94 | 95 | ## Application Frameworks 96 | 97 | Application Framework预备知识: 98 | 99 | - [Wiki2 - Web framework](https://wiki2.org/en/Web_framework) 100 | - [谁是最快的Go Web框架](http://colobu.com/2016/04/06/the-fastest-golang-web-framework/) 101 | - [Github Showcases - Web application frameworks](https://github.com/showcases/web-application-frameworks?s=stars) 102 | - [15 Important Considerations for Choosing A Web Dev Framework](https://code.tutsplus.com/tutorials/15-important-considerations-for-choosing-a-web-dev-framework--net-8035) 103 | 104 | 105 | Application Frameworks: 106 | 107 | - [Go: Beego](http://beego.me/): 一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架 108 | - [Go: Gin](https://github.com/gin-gonic/gin): Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin. 109 | - [Go: Iris](https://github.com/kataras/iris): The fastest web framework for Go in (THIS) earth 110 | - [Go: revel](http://revel.github.io/): A high-productivity web framework for the Go language. 111 | - [Java: Spring Framework](http://spring.io/projects): The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. 112 | - [Java: jHipster](https://jhipster.github.io/): Open Source application generator for creating Spring Boot + AngularJS projects in seconds 113 | - [Java: Akka](http://akka.io/): Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM. The power of Akka is also available on the .NET Framework and Mono via the Akka.NET project. 114 | - [Java: Vert.x](http://vertx.io): Vert.x is a tool-kit for building reactive applications on the JVM. 115 | - [Java: Netty](http://netty.io/): Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server. 116 | - [Java: Mina](https://mina.apache.org/mina-project/index.html): 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. 117 | - [C++: SeaStar](https://seastar.io/): SeaStar is an event-driven framework allowing you to write non-blocking, asynchronous code in a relatively straightforward manner (once understood). It is based on futures. 118 | 119 | ## Template Engine 120 | 121 | - Go 122 | - full featured template engines 123 | * [Ace](https://github.com/yosssi/ace) 124 | * [Amber](https://github.com/eknkc/amber) 125 | * [Go](https://golang.org/pkg/html/template) 126 | * [Handlebars](https://github.com/aymerick/raymond) 127 | * [Kasia](https://github.com/ziutek/kasia.go) 128 | * [Mustache](https://github.com/hoisie/mustache) 129 | * [Pongo2](https://github.com/flosch/pongo2) 130 | * [Soy](https://github.com/robfig/soy) 131 | * [Jet](https://github.com/CloudyKit/jet) 132 | - precompilation to Go code 133 | * [ego](https://github.com/benbjohnson/ego) 134 | * [egon](https://github.com/commondream/egon) 135 | * [egonslinso](https://github.com/SlinSo/egon) 136 | * [ftmpl](https://github.com/tkrajina/ftmpl) 137 | * [Gorazor](https://github.com/sipin/gorazor) 138 | * [Quicktemplate](https://github.com/valyala/quicktemplate) 139 | * [Hero](https://github.com/shiyanhui/hero) 140 | 141 | 参考: 142 | 143 | - [goTemplateBenchmark](https://github.com/SlinSo/goTemplateBenchmark) 144 | 145 | ## GUI Framework 146 | 147 | - [Node: NW.js](https://github.com/nwjs/nw.js): Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies. 148 | - [Node: Electron](https://electron.atom.io/): Build cross platform desktop apps with JavaScript, HTML, and CSS 149 | - [Node: Photon](https://github.com/connors/photon): The fastest way to build beautiful Electron apps using simple HTML and CSS 150 | - [Java: Swing](https://wiki2.org/en/Java_Swing): Swing is a GUI widget toolkit for Java. 151 | - [Java: SWT - Standard Widget Toolkit](https://eclipse.org/swt/): SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented. 152 | - [C++: QT](https://www.qt.io/): A complete cross-platform software framework with ready-made UI elements, C++ libraries, and a complete integrated development environment with tools for everything you need to develop software for any project. 153 | - [C++: wxWidgets](https://www.wxwidgets.org/): wxWidgets is a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. 154 | - [C/C++: GTK+](https://www.gtk.org/): GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off tools to complete application suites. 155 | 156 | References: 157 | 158 | - [Intellij Community](https://github.com/JetBrains/intellij-community): which use Java Swing to implement it's GUI 159 | 160 | ## Asynchronous Programming Framework 161 | 162 | - [ReactiveX](http://reactivex.io/): An API for asynchronous programming with observable streams 163 | - [Java: RxJava](https://github.com/ReactiveX/RxJava) 164 | - [Go: RxGo](https://github.com/ReactiveX/RxGo) 165 | - [JavaScript: RxJS](https://github.com/Reactive-Extensions/RxJS) 166 | - [Python: RxPY](https://github.com/ReactiveX/RxPY) 167 | - [C#: Rx.NET](https://github.com/Reactive-Extensions/Rx.NET) 168 | - C#(Unity): UniRx 169 | - Scala: RxScala 170 | - Clojure: RxClojure 171 | - C++: RxCpp 172 | - Lua: RxLua 173 | - Ruby: Rx.rb 174 | - Groovy: RxGroovy 175 | - JRuby: RxJRuby 176 | - Kotlin: RxKotlin 177 | - Swift: RxSwift 178 | - PHP: RxPHP 179 | - Elixir: reaxive 180 | - Dart: RxDart 181 | 182 | ## Web Socket 183 | 184 | - [Go: Web Socket](https://github.com/gorilla/websocket): A WebSocket implementation for Go. 185 | - [Go: centrifugo](https://github.com/centrifugal/centrifugo): Real-time messaging (Websockets or SockJS) server in Go 186 | 187 | ## Network 188 | 189 | - [C++: Mars](https://github.com/Tencent/mars): Mars is a cross-platform network component developed by WeChat. 190 | - [Go: kcptun](https://github.com/xtaci/kcptun): an extremely simple & fast udp tunnel based on kcp protocol 191 | - [Go: kcp-go](https://github.com/xtaci/kcp-go): A full-featured reliable UDP communication library 192 | - [Go: TCPx](https://github.com/fwhezfwhez/tcpx): a cross-language tcp framwork in golang 193 | - [Go: goflyway](https://github.com/coyove/goflyway): HTTP tunnel in Go 194 | - [Go: gorequest](https://github.com/parnurzeal/gorequest): Simplified HTTP client ( inspired by nodejs SuperAgent ) 195 | - [GO: DNS library](https://github.com/miekg/dns): DNS library in Go 196 | - [Go: fasthttp](https://github.com/valyala/fasthttp): Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http. 197 | - [Go: link](https://github.com/funny/link): Go语言网络层脚手架 198 | - [Go: tus](http://www.oschina.net/p/tus): 一个开放的协议实现了客户端和服务器之间可恢复的文件上传协议 199 | - [Go: sleuth](https://github.com/ursiform/sleuth): sleuth is a Go library that provides master-less peer-to-peer autodiscovery and RPC between HTTP services that reside on the same network. It works with minimal configuration and provides a mechanism to join a local network both as a client that offers no services and as any service that speaks HTTP. Its primary use case is for microservices on the same network that make calls to one another. 200 | 201 | ## Server Framework 202 | 203 | - [Seastar](https://github.com/scylladb/seastar): High performance server-side application framework 204 | 205 | ## Thread & Coroutine 206 | 207 | - [C++: Libco](https://github.com/Tencent/libco): ibco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco通过仅有的几个函数接口 co_create/co_resume/co_yield 再配合 co_poll,可以支持同步或者异步的写法,如线程库一样轻松。同时库里面提供了socket族函数的hook,使得后台逻辑服务几乎不用修改逻辑代码就可以完成异步化改造。 208 | - [C: libuv](https://github.com/libuv/libuv): Cross-platform asynchronous I/O 209 | - [C: libev](https://github.com/enki/libev) 210 | - [C: libevent](http://libevent.org/) 211 | - [Rust: mio](https://github.com/carllerche/mio): Metal IO library for Rust 212 | 213 | 学习资料: 214 | 215 | - [libuv 初窥](https://blog.codingnow.com/2012/01/libuv.html) 216 | - [libuv中文教程](http://luohaha.github.io/Chinese-uvbook/index.html):翻译自[An Introduction to libuv](http://nikhilm.github.io/uvbook/) 217 | - [使用 libevent 和 libev 提高网络应用性能](https://www.ibm.com/developerworks/cn/aix/library/au-libev/index.html) 218 | - [The C10K problem](http://www.kegel.com/c10k.html) 219 | 220 | ## Reflect & IoC 221 | 222 | - [Go: facebookgo/inject](https://github.com/facebookgo/inject): Package inject provides a reflect based injector. 223 | - [Go: reflections](https://github.com/oleiade/reflections): Golang high level abstractions over reflect library 224 | - [Go: mapstructure](https://github.com/mitchellh/mapstructure): Go library for decoding generic map values into native Go structures. 225 | - [Go: copystructure](https://github.com/mitchellh/copystructure): Go (golang) library for deep copying values in Go. 226 | - [Go: reflectwalk](https://github.com/mitchellh/reflectwalk): reflectwalk is a Go library for "walking" complex structures, similar to walking a filesystem. 227 | - [Go: robpike.io/filter](https://godoc.org/robpike.io/filter): Package filter contains utility functions for filtering slices through the distributed application of a filter function. 228 | 229 | ## Logging 230 | 231 | - [Go: zap](https://github.com/uber-go/zap): Fast, structured, leveled logging in Go 232 | - [Go: logrus](https://github.com/Sirupsen/logrus): Structured, pluggable logging for Go. 233 | - [Go: Apex/log](https://github.com/apex/log): Structured logging package for Go. 234 | - [Go: stack](https://github.com/facebookgo/stack): provides utilities to capture and pass around stack traces. 235 | 236 | ## Data Access 237 | 238 | - Golang 239 | - Database Drivers 240 | - [Golang: Go-MySQL-Driver](https://github.com/go-sql-driver/mysql): Go-MySQL-Driver is a lightweight and fast MySQL-Driver for Go's (golang) database/sql package 241 | - [Golang: pg](https://github.com/lib/pq): A pure Go postgres driver for Go's database/sql package 242 | - [Golang: sqlite](https://github.com/mattn/go-sqlite3): sqlite3 driver for go that using database/sql 243 | - [Golang: SQL Server](https://github.com/denisenkom/go-mssqldb): Microsoft SQL server driver written in go language 244 | - ORM 245 | - [Golang: gorm](https://github.com/jinzhu/gorm): The fantastic ORM library for Golang, aims to be developer friendly 246 | - [Golang: xorm](https://github.com/go-xorm/xorm): Simple and Powerful ORM for Go, support mysql/sqlite3/postgres/mssql/oracle/tidb/ql 247 | - [Golang: gorp](https://github.com/go-gorp/gorp): Go Relational Persistence - an ORM-ish library for Go 248 | - [Golang: go-pg](https://github.com/go-pg/pg): PostgreSQL ORM for Golang with focus on PostgreSQL features and performance 249 | - [Golang: Reform](https://github.com/go-reform/reform): A better ORM for Go, based on non-empty interfaces and code generation. 250 | - Tools 251 | - [Golang: sqlboiler](https://github.com/vattle/sqlboiler): SQLBoiler is a tool to generate a Go ORM tailored to your database schema. 252 | - [Golang: sql-migrate](https://github.com/rubenv/sql-migrate): SQL schema migration tool for Go 253 | - Java 254 | - [Java: p6spy](https://github.com/p6spy/p6spy): P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to the application. with no code changes to the application. 255 | - [Java: druid](https://github.com/alibaba/druid): 为监控而生的数据库连接池! 256 | 257 | ## Serialization & Deserialization 258 | 259 | - [Go: go-simplejson](https://github.com/bitly/go-simplejson): a Go package to interact with arbitrary JSON 260 | - [Go: Jason](https://github.com/antonholmquist/jason): Easy-to-use JSON Library for Go 261 | - [Go: jsonpath](https://github.com/yalp/jsonpath): a (partial) implementation in Go based on [Stefan Goener JSON Path](http://goessner.net/articles/JsonPath/) 262 | - [Go: gojsonschema](https://github.com/xeipuuv/gojsonschema): An implementation of JSON Schema, based on IETF's draft v4 - Go language 263 | - [Go: gojsondiff](https://github.com/yudai/gojsondiff/): Go JSON Diff 264 | - [Java: fastjson](https://github.com/alibaba/fastjson): A fast JSON parser/generator for Java 265 | 266 | ## Command Line 267 | 268 | - [Go: viper](https://github.com/spf13/viper): Go configuration with fangs 269 | - [Go: go-flags](https://github.com/jessevdk/go-flags): go command line option parser 270 | - [Go: kingpin](https://github.com/alecthomas/kingpin): A Go (golang) command line and flag parser 271 | 272 | ## File 273 | 274 | - [Go: fsnotify](https://github.com/fsnotify/fsnotify): File system notifications for Go. 275 | - [Go: restic](https://github.com/restic/restic): restic is a backup program that is fast, efficient and secure. 276 | - [Go: syncthing](https://github.com/syncthing/syncthing): Open Source Continuous File Synchronization 277 | - [Go: go-ini](https://github.com/go-ini/ini): Package ini provides INI file read and write functionality in Go. 278 | - [Go: xlsx](https://github.com/tealeg/xlsx): Google Go (golang) library for reading and writing XLSX files. 279 | 280 | ## Image Processing 281 | 282 | - [Go: ln](https://github.com/fogleman/ln): ln is a vector-based 3D renderer written in Go. It is used to produce 2D vector graphics (think SVGs) depicting 3D scenes. The output of an OpenGL pipeline is a rastered image. The output of ln is a set of 2D vector paths. 283 | - [C: ImageMagick](http://www.imagemagick.org): ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. 284 | - [C: GraphicsMagick](http://www.graphicsmagick.org): GraphicsMagick is the swiss army knife of image processing. Comprised of 267K physical lines (according to David A. Wheeler's SLOCCount) of source code in the base package (or 1,225K including 3rd party libraries) it provides a robust and efficient collection of tools and libraries which support reading, writing, and manipulating an image in over 88 major formats including important formats like DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, and TIFF. 285 | - [Hugin](http://sourceforge.net/projects/hugin): Panorama photo stitcher 286 | - [Luminance HDR](http://sourceforge.net/projects/qtpfsgui): Complete solution for HDR photography 287 | - [scikit-image](http://scikit-image.org/): scikit-image is a collection of algorithms for image processing. It is available free of charge and free of restriction. 288 | - $[Pano2VR & Object2VR](http://ggnome.com/): software for interactive panoramas and object movies. 289 | 290 | ## Audio & Video 291 | 292 | - [OpenGL](https://www.opengl.org/): The Industry Standard for High Performance Graphics 293 | - [SoX](http://sox.sourceforge.net/): SoX is a cross-platform (Windows, Linux, MacOS X, etc.) command line utility that can convert various formats of computer audio files in to other formats. It can also apply various effects to these sound files, and, as an added bonus, SoX can play and record audio files on most platforms. 294 | - [ffmpeg](https://www.ffmpeg.org/): A complete, cross-platform solution to record, convert and stream audio and video. 295 | - [VLC media player](http://www.videolan.org/vlc/): VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。 296 | 297 | ## Computer Vision 298 | 299 | - [C: OpenCV](http://opencv.org/): OpenCV is released under a BSD license and hence it’s free for both academic and commercial use. It has C++, C, Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for computational efficiency and with a strong focus on real-time applications. Written in optimized C/C++, the library can take advantage of multi-core processing. Enabled with OpenCL, it can take advantage of the hardware acceleration of the underlying heterogeneous compute platform. Adopted all around the world, OpenCV has more than 47 thousand people of user community and estimated number of downloads exceeding 9 million. Usage ranges from interactive art, to mines inspection, stitching maps on the web or through advanced robotics. 300 | - [Emgu CV](http://www.emgu.com/wiki/index.php/Emgu_CV): Emgu CV is a cross platform .Net wrapper to the OpenCV image processing library. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB, VC++, IronPython etc. The wrapper can be compiled by Visual Studio, Xamarin Studio and Unity, it can run on Windows, Linux, Mac OS X, iOS, Android and Windows Phone. 301 | - [C: libccv](https://github.com/liuliu/ccv): C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library 302 | 303 | ## Authentication & Authorization 304 | 305 | - [Go: captcha](https://github.com/jianxinio/captcha): Golang实现的验证码服务 306 | - [Go: Go OTP](https://github.com/hgfischer/go-otp): Package go-otp implements one-time-password generators used in 2-factor authentication systems like RSA-tokens. Currently this supports both HOTP (RFC-4226), TOTP (RFC-6238) and Base32 encoding (RFC-3548) for Google Authenticator compatibility 307 | - [Go-otpserver](https://github.com/skyjia/go-otpserver): A golang version OTP server. 308 | 309 | ## Office Documents 310 | 311 | - [Go: excelize](https://github.com/360EntSecGroup-Skylar/excelize): Golang library for reading and writing Microsoft Excel™ (XLSX) files. 312 | - [Go: xlsx](https://github.com/tealeg/xlsx): Google Go (golang) library for reading and writing XLSX files. 313 | - [Go: gooxml](https://github.com/baliance/gooxml): Pure go library for creating Office Open/OOXML/ECMA-376 documents (.docx, .xlsx, .pptx) 314 | 315 | ## Instant Communication 316 | 317 | - [heim](https://github.com/euphoria-io/heim): A real-time community platform 318 | - [Mattermost](https://github.com/mattermost/platform): Mattermost is an open-source team communication service. It brings team messaging and file sharing into one place, accessible across PCs and phones, with archiving and search. 319 | 320 | ## Expression Evaluator 321 | 322 | - [Go: evaluator](https://github.com/nullne/evaluator) 323 | - [Go: gval](https://github.com/PaesslerAG/gval) 324 | - [Go: govaluate](https://github.com/Knetic/govaluate) 325 | - [Go: expr](https://github.com/antonmedv/expr) 326 | 327 | ## Misc Libraries 328 | 329 | - [C++: Boost](http://www.boost.org/) 330 | - [C++: Abseil](https://abseil.io/) 331 | - [Go: null](https://github.com/guregu/null): reasonable handling of nullable values 332 | - [Go: pointer](https://github.com/AlekSi/pointer): Go package pointer provides helpers to get pointers to values of build-in types. 333 | - [Go: queue](https://github.com/eapache/queue): not thread-safe queue 334 | - [Go: safemap](https://github.com/pcrawfor/safemap): A golang channel based access object for shared use of a map of arbitrary objects 335 | - [Go: i18n4go](https://github.com/maximilien/i18n4go): This is a general purpose internationalization (i18n) tooling for Go language (Golang) programs. It allows you to prepare Go language code for internationalization and localization (l10n). 336 | - [uniqush-push](https://github.com/uniqush/uniqush-push): Uniqush is a free and open source software which provides a unified push service for server-side notification to apps on mobile devices. 337 | -------------------------------------------------------------------------------- /projects-part-10-dotnet.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Projects about .NET](#projects-about-net) 4 | - [Compiler](#compiler) 5 | - [Decompiler](#decompiler) 6 | - [REPL](#repl) 7 | - [Assembly Manipulation](#assembly-manipulation) 8 | - [Web Servers & Application Servers](#web-servers--application-servers) 9 | - [Application Frameworks](#application-frameworks) 10 | - [Template Engine](#template-engine) 11 | - [Asynchronous Programming Framework](#asynchronous-programming-framework) 12 | - [Web Socket](#web-socket) 13 | - [Network](#network) 14 | - [Thread & Coroutine](#thread--coroutine) 15 | - [IoC](#ioc) 16 | - [Logging](#logging) 17 | - [Cryptography](#cryptography) 18 | - [Compression](#compression) 19 | - [Profiler](#profiler) 20 | - [Data Access](#data-access) 21 | - [Serialization & Deserialization](#serialization--deserialization) 22 | - [Command Line](#command-line) 23 | - [Math](#math) 24 | - [Image Processing](#image-processing) 25 | - [Computer Vision](#computer-vision) 26 | - [Authentication & Authorization](#authentication--authorization) 27 | - [Mail Client](#mail-client) 28 | - [State Machine](#state-machine) 29 | - [.NET Interoperability](#net-interoperability) 30 | - [Windows Services](#windows-services) 31 | - [Misc Libraries](#misc-libraries) 32 | 33 | 34 | 35 | # Projects about .NET 36 | 37 | ## Compiler 38 | 39 | - [.NET Core](http://dotnet.github.io/core/): A general purpose managed framework 40 | - [.NET: Mono](http://www.mono-project.com/): Cross platform, open source .NET framework 41 | - [.NET: Roslyn](https://github.com/dotnet/roslyn): The .NET Compiler Platform ("Roslyn") provides open-source C# and Visual Basic compilers with rich code analysis APIs. 42 | 43 | ## Decompiler 44 | 45 | - [.NET: dotPeek](https://www.jetbrains.com/decompiler/): Free .NET Decompiler and Assembly Browser 46 | - [.NET: ILSpy](https://github.com/icsharpcode/ILSpy): .NET Decompiler 47 | 48 | ## REPL 49 | 50 | - [.NET Fiddle](https://dotnetfiddle.net/) 51 | - [CS-Script](http://www.csscript.net/index.html): CS-Script is a CLR (Common Language Runtime) based scripting system which uses ECMA-compliant C# as a programming language. CS-Script currently targets Microsoft implementation of CLR (.NET 2.0/3.0/3.5/4.0/4.5) with full support on Mono. uses ECMA-compliant C# as a programming language. CS-Script currently targets Microsoft implementation of CLR (.NET 2.0/3.0/3.5/4.0/4.5) with full support on Mono. 52 | - [Scriptcs](http://scriptcs.net/): Unleash your C# from Visual Studio. 53 | 54 | ## Assembly Manipulation 55 | 56 | - [.NET: Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .net assemblies 57 | - [.NET: Mono.Cecil](https://github.com/jbevain/cecil) - Cecil is a library to generate and inspect programs and libraries in the ECMA CIL form. 58 | 59 | ## Web Servers & Application Servers 60 | 61 | - [.NET: KestrelHttpServer](https://github.com/aspnet/KestrelHttpServer): A cross platform web server for ASP.NET Core. 62 | 63 | ## Application Frameworks 64 | 65 | - [.NET: ASP.net Core MVC](https://github.com/aspnet/Mvc): ASP.NET Core MVC is a model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and Web Pages w/ Razor. 66 | - [.NET: ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate) - A starting point for new modern ASP.NET MVC web applications with best practices and most popular tools. applications with best practices and most popular tools. 67 | - [.NET: ASP.net Web API 2](http://www.asp.net/web-api): ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. 68 | - [.NET: WebAPI Contrib](https://github.com/WebApiContrib/WebAPIContrib) - Collection of open source projects to help improve your work with ASP.NET Web API 69 | - [.NET: Orleans](https://github.com/dotnet/orleans): Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. 70 | - [.NET: ServiceStack](https://github.com/ServiceStack/ServiceStack): Simple, Fast, Versatile and full-featured Services Framework 71 | - [.NET: NancyFx](http://nancyfx.org/): Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono 72 | - [.NET: Katana](http://katanaproject.codeplex.com/): As Web application development takes its next evolutionary step into the world of cloud computing, project Katana provides the underlying set of components to ASP.NET applications, enabling them to be flexible, portable, lightweight, and provide better performance – put another way, project Katana cloud optimizes your 73 | 74 | ## Template Engine 75 | 76 | - [.NET: RazorEngine](https://github.com/Antaris/RazorEngine): Open source templating engine based on Microsoft's Razor parsing engine 77 | - [.NET: Nustache](https://github.com/jdiamond/Nustache): Logic-less templates for .NET 78 | - [.NET: dotliquid](http://dotliquidmarkup.org/): a templating system ported to the .net framework from Ruby’s Liquid Markup. 79 | - [.NET: StringTemplate](http://www.stringtemplate.org/): StringTemplate is a java template engine (with ports for C#, JavaScript, Python) for generating source code, web pages, emails, or any other formatted text output. StringTemplate is particularly good at code generators, multiple site skins, and internationalization / localization. StringTemplate also powers ANTLR. 80 | 81 | ## Asynchronous Programming Framework 82 | 83 | - [ReactiveX](http://reactivex.io/): An API for asynchronous programming with observable streams 84 | - [C#: Rx.NET](https://github.com/Reactive-Extensions/Rx.NET) 85 | 86 | ## Web Socket 87 | 88 | - [.NET: SignalR](https://github.com/SignalR/SignalR): Library for ASP.NET developers that makes it incredibly simple to add real-time web functionality to your applications 89 | - [.NET: Fleck](https://github.com/statianzo/Fleck) - Fleck is a WebSocket server implementation in C#. Branched from the Nugget project 90 | - [.NET: Websocket-Sharp](https://github.com/sta/websocket-sharp) - A C# implementation of the WebSocket protocol client and server 91 | - [.NET: WebSocket4NET](https://websocket4net.codeplex.com/) - WebSocket client for .NET 2.0+, Xamarin, Mono, Silverlight, Windows Phone, & WinRT 92 | - [.NET: XSockets](https://xsockets.net/) - Provides a great set of tools for you to build real-time applications on the Microsoft.NET plattform and much more 93 | - [.NET: WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp-proto.org/) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. 94 | 95 | ## Network 96 | 97 | - [.NET: RestSharper](http://restsharp.org/): Simple REST and HTTP API Client for .NET 98 | - [.NET: Fracture](https://github.com/fractureio/fracture): A high-performance socket I/O message pipeline library. 99 | - [.NET: SuperSocket](http://www.supersocket.net/): SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。 100 | 101 | ## Thread & Coroutine 102 | 103 | - [.NET: Wintellect PowerThreading](https://github.com/Wintellect/PowerThreading): Jeffrey Richter's Power Threading Library 104 | 105 | ## IoC 106 | 107 | - [.NET: Castle Windsor](https://github.com/castleproject/Windsor) - Castle Windsor is best of breed, mature Inversion of Control container available for .NET and Silverlight 108 | - [.NET: Unity](https://unity.codeplex.com/) - Lightweight extensible dependency injection container with support for constructor, property, and method call injection 109 | - [.NET: Autofac](https://github.com/autofac/Autofac) - An addictive .NET IoC container 110 | - [.NET: Ninject](https://github.com/ninject/ninject) - The ninja of .net dependency injectors 111 | - [.NET: StructureMap](https://structuremap.github.io/) - The original IoC/DI Container for .Net 112 | - [.NET: Spring.Net](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier 113 | - [.NET: LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container 114 | - [.NET: TinyIoC](https://github.com/grumpydev/TinyIoC) - Single-file, easy and cross-platform IoC container 115 | 116 | ## Logging 117 | 118 | - [.NET: Essential Diagnostics](http://essentialdiagnostics.codeplex.com/) - Extends the inbuilt features of System.Diagnostics namespace to provide flexible logging 119 | - [.NET: NLog](https://github.com/nlog/NLog/) - NLog - Advanced .NET and Silverlight Logging 120 | - [.NET: Logary](http://logary.github.io/) - Logary is a high performance, multi-target logging, metric, tracing and health-check library for mono and .Net. .Net's answer to DropWizard. Supports many targets, built for micro-services. 121 | - [.NET: Log4Net](https://logging.apache.org/log4net/) - The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets 122 | - [.NET: Serilog](https://github.com/serilog/serilog) - A no-nonsense logging library for the NoSQL era. Combines the best of traditional and structured diagnostic logging in an easy-to-use package. 123 | - [.NET: StackExchange.Exceptional](https://github.com/NickCraver/StackExchange.Exceptional) - Error handler used for the Stack Exchange network 124 | 125 | ## Cryptography 126 | 127 | - [.NET: BouncyCastle](https://bouncycastle.org/) - Together with the .Net System.Security.Cryptography, the reference implementation for cryptographic algorithms on the CLR. 128 | - [.NET: HashLib](http://hashlib.codeplex.com/) - HashLib is a collection of nearly all hash algorithms you've ever seen, it supports almost everything and is very easy to use 129 | - [.NET: libsodium-net](https://github.com/adamcaudill/libsodium-net) - libsodium for .NET - A secure cryptographic library 130 | - [.NET: StreamCryptor](https://github.com/bitbeans/StreamCryptor) - Stream encryption & decryption with libsodium and protobuf 131 | 132 | ## Compression 133 | 134 | - [.NET: SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a compression library for .NET/Mono/Silverlight/WP7 that can unrar, un7zip, unzip, untar unbzip2 and ungzip with forward-only reading and file random access APIs. Write support for zip/tar/bzip2/gzip are implemented 135 | - [.NET: DotNetZip.Semverd](https://github.com/haf/DotNetZip.Semverd) - An open-source project that delivers a .NET library for handling ZIP files, and some associated tools. (fork of Unmaintained DotNetZip) 136 | - [.NET: SharpZipLib](http://icsharpcode.github.io/SharpZipLib/) - a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform 137 | 138 | ## Profiler 139 | 140 | - [.NET: MiniProfiler](http://miniprofiler.com/): A simple but effective mini-profiler for .NET and Ruby 141 | - [.NET: Glimpse](http://getglimpse.com/): Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily 142 | - [.NET: metrics-net](https://github.com/danielcrenna/metrics-net): Capturing CLR and application-level metrics. So you know what's going on. 143 | - [.NET: Metrics.NET](https://github.com/etishor/Metrics.NET): The Metrics.NET library provides a way of instrumenting applications with custom metrics (timers, histograms, counters etc) that can be reported in various ways and can provide insights on what is happening inside a running application. 144 | 145 | ## Data Access 146 | 147 | - [.NET: StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis): a high performance general purpose redis client for .NET languages (C# etc) 148 | - [.NET: SolrNet](https://github.com/mausch/SolrNet): SolrNet is an Apache Solr client for .NET 149 | - [.NET: EasyNetQ](https://github.com/EasyNetQ/EasyNetQ): An easynet to use .NET API for RabbitMQ, not offical rabbitmq .net client 150 | - [.NET: DbUtility](https://github.com/Ivony/DbUtility): a light database access tool 151 | - [.NET: Drapper](https://github.com/StackExchange/dapper-dot-net): a simple object mapper for .Net 152 | - [.NET: Entity Framework](https://github.com/aspnet/EntityFramework): Microsoft's recommended data access technology for new applications in .NET. 153 | - [.NET: MyBatis](https://mybatis.github.io/): MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records. 154 | - [.NET: ServiceStack.OrmLite](https://github.com/ServiceStack/ServiceStack.OrmLite): Fast, Simple, Typed ORM for .NET 155 | - [.NET: NHibernate](http://nhibernate.info/): NHibernate is a mature, open source object-relational mapper for the .NET framework. It's actively developed, fully featured and used in thousands of successful projects. 156 | - [.NET: fluent-nhibernate](https://github.com/jagregory/fluent-nhibernate): Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate. Get your fluent on. 157 | 158 | ## Serialization & Deserialization 159 | 160 | - [.NET: Jil](https://github.com/kevin-montrose/Jil): Fast .NET JSON (De)Serializer, Built On Sigil 161 | - [.NET: ServiceStack.Text](https://github.com/ServiceStack/ServiceStack.Text): .NET's fastest JSON, JSV and CSV Text Serializers 162 | - [.NET: Json.net](http://www.newtonsoft.com/json): Popular high-performance JSON framework for .NET 163 | - [.NET: fastjson](https://fastjson.codeplex.com/): Smallest, fastest polymorphic JSON serializer 164 | 165 | ## Command Line 166 | 167 | - [.NET: Command Line Parser](https://github.com/gsscoder/commandline) - The Command Line Parser Library offers to CLR applications a clean and concise API for manipulating command line arguments and related tasks 168 | - [.NET: Fluent Command Line Parser](https://github.com/fclp/fluent-command-line-parser) - A simple, strongly typed .NET C# command line parser library using a fluent easy to use interface 169 | - [.NET: Power Args](https://github.com/adamabdelhamed/PowerArgs) - PowerArgs converts command line arguments into .NET objects that are easy to program against. It also provides a ton of optional capabilities such as argument validation, auto generated usage, tab completion, and plenty of extensibility 170 | 171 | ## Math 172 | 173 | - [.NET: Math.NET](https://www.mathdotnet.com/) 174 | - [Math.NET Numerics: numerical computing](http://numerics.mathdotnet.com/): Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integration, regression, optimization problems and more. 175 | - [Math.NET Symbolics: computer algebra](http://symbolics.mathdotnet.com/): Math.NET Symbolics is a basic open source computer algebra library for .Net and Mono written in F#. 176 | - [Math.NET Filtering: signal processing](http://filtering.mathdotnet.com/): Filtering aims to provide a toolkit for digital signal processing, offering an infrastructure for digital filter design, applying those filters to data streams using data converters, as well as digital signal generators. 177 | - [Math.NET Spatial](http://spatial.mathdotnet.com/): Math.NET Spatial is aiming to become a geometry library for .Net and Mono. 178 | 179 | ## Image Processing 180 | 181 | - [.NET: ImageProcessor](http://imageprocessor.org/): ImageProcessor is a collection of lightweight libraries written in C# that allows you to manipulate images on-the-fly using .NET 4.5+ 182 | 183 | ## Computer Vision 184 | 185 | - [.NET: AForge.NET](http://www.aforgenet.com/): AForge.NET is a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics, etc. 186 | 187 | ## Authentication & Authorization 188 | 189 | - [.NET: ASP.NET Identity](https://aspnetidentity.codeplex.com/) - New membership system for ASP.NET applications 190 | - [.NET: DotNetOpenAuth](https://github.com/DotNetOpenAuth/DotNetOpenAuth) - A C# implementation of the OpenID, OAuth and InfoCard protocols 191 | - [.NET: IdentityModel](https://github.com/IdentityModel) - Helper library for identity & access control in .NET 4.5 and MVC4/Web API. 192 | - [.NET: IdentityServer](https://github.com/IdentityServer) - Extensible OAuth2 and OpenID Connect provider framework. 193 | - [.NET: OAuth](https://github.com/danielcrenna/oauth) - A very lightweight library for generating OAuth 1.0a signatures written in C# 194 | 195 | ## Mail Client 196 | 197 | - [.NET: FluentEmail](https://github.com/lukencode/FluentEmail): A Fluent Wrapper for System.Net.Mail with razor templating support. 198 | - [.NET: MailKit](https://github.com/jstedfast/MailKit): A complete cross-platform mail stack including IMAP, POP3, SMTP, authentication and more. Built on top of MimeKit. 199 | - [.NET: MimeKit](https://github.com/jstedfast/MimeKit): A cross-platform .NET MIME creation and parser library with support for S/MIME, PGP, TNEF and Unix mbox spools. 200 | - [.NET: MailSystem.NET](https://mailsystem.codeplex.com/): MailSystem is a suite of .NET components that provide users with an extensive set of email tools. MailSystem provides full support for SMTP, POP3, IMAP4, NNTP, MIME, S/MIME, OpenPGP, DNS, vCard, vCalendar, Anti-Spam (Bayesian , RBL, DomainKeys), Queueing, Mail Merge and WhoIs. If you wish to use this code in non GPLv3 software, you must acquire a commercial license. Please send your request to the coordinator of this project. 201 | 202 | ## State Machine 203 | 204 | - [.NET: Stateless](https://github.com/nblumhardt/stateless) - Create state machines and lightweight state machine-based workflows directly in .NET code 205 | - [.NET: Automatonymous](https://github.com/MassTransit/Automatonymous) - A state machine library for .Net - allows you to write fluent style state machines 206 | 207 | ## .NET Interoperability 208 | 209 | - [.NET: CppSharp](https://github.com/mono/CppSharp) - Tools to surface C++ APIs to C# 210 | - [.NET: Sharpen](https://github.com/mono/sharpen) - Sharpen is an Eclipse plugin created by db4o that allows you to convert your Java project into C# 211 | - [.NET: CXXI](https://github.com/mono/cxxi) - C++ interop framework 212 | 213 | ## Windows Services 214 | 215 | - [.NET: Topshelf](http://topshelf-project.com/): Put Your Apps on the Topshelf 216 | 217 | ## Misc Libraries 218 | 219 | - [.NET: AutoMapper](http://automapper.org/): a simple little library built to solve a deceptively complex problem - getting rid of code that mapped one object to another. 220 | - [.NET: UrlRewriter](https://github.com/sethyates/urlrewriter): UrlRewriter.NET is an open-source, light-weight, highly configurable URL rewriting component for ASP.NET 1.1 – 4.0. 221 | - [.NET: Fast Reflection Library](http://fastreflectionlib.codeplex.com/): FastReflectionLib provide the same as part of the refection features like executing method dynamically but give simple and faster implementations. It can be use as the foundation of reflection-based scenarios such as ORM framework. 222 | - [.NET: FluentValidation](https://github.com/JeremySkinner/FluentValidation): A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. Written by Jeremy Skinner (http://www.jeremyskinner.co.uk) and licensed under Apache 2. 223 | - [.NET: Html Agility Pack](https://htmlagilitypack.codeplex.com/): This is an agile HTML parser that builds a read/write DOM and supports plain XPATH or XSLT (you actually don't HAVE to understand XPATH nor XSLT to use it, don't worry...). It is a .NET code library that allows you to parse "out of the web" HTML files. The parser is very tolerant with "real world" malformed HTML. The object model is very similar to what proposes System.Xml, but for HTML documents (or streams). 224 | - [.NET: Base Class Libraries](https://bcl.codeplex.com/): The Base Class Libraries site hosts samples, previews, and prototypes from the BCL team. 225 | - [.NET: CommonLibrary.NET](https://commonlibrarynet.codeplex.com/): A collection of very reusable code and components in C# 4.0 ranging from ActiveRecord, Csv, Command Line Parsing, Configuration, Validation, Logging, Collections, Authentication, and much more. This is ideal for C# developer looking for a Utility library, Java developers looking for a C# version of Java Commons. 226 | - [.NET: Craig-s-Utility-Library](http://jacraig.github.io/Craig-s-Utility-Library/): With .Net we have a number of built in classes and functions to help make a programmer's life easier, but let's face facts, they didn't think of everything. Craig's Utility Library tries to fill in some of those gaps (or at least the ones that I've run into). It comes with a couple hundred extension methods, built in data types such as a BTree, priority queue, ring buffer, etc. And that's just the DataTypes namespace. When you add it all up, Craig's Utility Library is one of the largest set of utilities for .Net out there. 227 | - [.NET: Wintellect's Power Collections for .NET](http://powercollections.codeplex.com/): Power Collections makes heavy use of .NET Generics. The goal of the project is to provide generic collection classes that are not available in the .NET framework. Some of the collections included are the Deque, MultiDictionary, Bag, OrderedBag, OrderedDictionary, Set, OrderedSet, and OrderedMultiDictionary. 228 | - [.NET: Humanizer](https://github.com/MehdiK/Humanizer): Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 229 | - [.NET: Sigil](https://github.com/kevin-montrose/Sigil): A fail-fast validating helper for .NET CIL generation 230 | - [.NET: Shielded](https://github.com/jbakic/Shielded): A strict and mostly lock-free Software Transactional Memory (STM) for .NET 231 | - [.NET: NodaTime](https://github.com/nodatime/nodatime): A better date and time API for .NET 232 | - [.NET: FastFileFinder](https://github.com/Wintellect/FastFileFinder): Find files and directory names FAST! 233 | -------------------------------------------------------------------------------- /projects-part-11-management.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Projects about Management](#projects-about-management) 4 | - [Mail](#mail) 5 | - [BPM](#bpm) 6 | - [Engineering Platform](#engineering-platform) 7 | - [Kanban - Issue Management](#kanban---issue-management) 8 | - [Bug Management](#bug-management) 9 | - [参考](#参考) 10 | 11 | 12 | 13 | # Projects about Management 14 | 15 | ## Mail 16 | 17 | - [zimbra](https://www.zimbra.com): Open source email platform 18 | 19 | ## BPM 20 | 21 | - [Zeebe](https://zeebe.io/): A Workflow Engine for Microservices Orchestration. Define, orchestrate, and monitor business processes across microservices. 22 | - [Cadence](https://cadenceworkflow.io/): Uber released a major version of its workflow orchestration platform named Cadence after six years in development. Uber and other companies use Cadence to build stateful services at scale using native programming languages. The team targets usability, observability, and efficiency improvements for subsequent releases. Cadence is an open-source platform for workflow orchestration. Like other systems of that type, it helps to handle complex stateful workflows at scale with efficiency and reliability in mind. Unlike similar platforms, workflows are defined directly in programming languages like Java and Go (officially supported), Python, or Ruby (supported by the community). 23 | - [Workflow Engine](https://workflowengine.io/): Workflow Engine is a perfect solution if you are dealing with business entities life cycle management in a project.Using embedded drag&drop designer you can create processes in your system and manage your workflows via simple API. 24 | 25 | ## Engineering Platform 26 | 27 | - [PHP: phabricator](https://github.com/phacility/phabricator): Open software engineering platform and fun adventure game 28 | 29 | ## Kanban - Issue Management 30 | 31 | - [Taiga.io](https://github.com/taigaio): Your Agile, Free and Open Source Project Management Tool 32 | - [kanboard](https://github.com/kanboard/kanboard): Kanban project management software 33 | - [wekan](https://github.com/wekan/wekan): The open-source Trello-like kanban (built with Meteor) 34 | - [LeanLabs - GitLab Kanban Board](http://kanban.leanlabs.io/): Free, open source, self-hosted, Kanban board for GitLab issues 35 | - [huboard](https://github.com/huboard/huboard): Kanban board for github issues 36 | 37 | ## Bug Management 38 | 39 | - [BugZilla](http://www.bugzilla.org/): Bugzilla is server software designed to help you manage software development. 40 | - [Mantis Bug Tracker](http://www.mantisbt.org/index.php): MantisBT makes collaboration with team members & clients easy, fast, and professional 41 | - [BugTracker.NET](http://ifdefined.com/bugtrackernet.html): BugTracker.NET is a free, open-source, web-based bug tracking and general purpose issue tracking application. It is in daily use by thousands of development, customer support, and help desk teams around the world. 42 | - [BugNET](http://www.bugnetproject.com/): An open source issue tracking & project management application 43 | 44 | # 参考 45 | 46 | - [List of BPMN Engines](https://wiki2.org/en/List_of_BPMN_2.0_engines) 47 | - [Awesome Workflow Engine](https://github.com/meirwah/awesome-workflow-engines) 48 | - [Workflow Patterns](http://www.workflowpatterns.com/) 49 | - [BPMN io](https://bpmn.io/) 50 | -------------------------------------------------------------------------------- /projects-part-12-blockchain.md: -------------------------------------------------------------------------------- 1 | 2 | # Projects about Blockchain 3 | 4 | ## Coin 5 | 6 | [bitcoin](https://bitcoin.org/en/) 7 | 8 | ## e-commerce 9 | 10 | - [OpenBazaar](https://www.openbazaar.org/): OpenBazaar costs nothing to download and use. Unlike sites like Ebay or Amazon there are no fees to list items, and no fees when an item is sold. Because the trade is p2p (peer to peer), it’s happening directly between buyers and sellers with no middleman to take a cut from each sale. It’s completely free e-commerce. 11 | 12 | ## Financial 13 | 14 | - [corda](https://www.corda.net/index.html): Corda 是一个开源的区块链项目,从最初就是为了商业世界而设计的。只有 Corda 能够允许您创建一个彼此协作的区块链网络来进行交易并且严格地保护你的隐私。Corda 的智能合约技术允许企业之间进行直接的价值交换。 15 | - [corda中文网](http://cncorda.com/introduction/) 16 | - [corda | 巴比特资讯](http://www.8btc.com/corda) 17 | 18 | ## Social Contact 19 | 20 | - [Matchpool](https://www.matchpool.com/) 21 | 22 | ## Fundamental Technology 23 | 24 | - [NEO](https://neo.org/) 25 | -------------------------------------------------------------------------------- /projects-part-3-data-storage-analysis.md: -------------------------------------------------------------------------------- 1 | - [Projects about Data Storage and Analysis](#projects-about-data-storage-and-analysis) 2 | - [Database and Caching Platform](#database-and-caching-platform) 3 | - [Database](#database) 4 | - [Memory Database](#memory-database) 5 | - [Graph Database](#graph-database) 6 | - [Database Engine](#database-engine) 7 | - [NoSQL Database](#nosql-database) 8 | - [Time Series Database](#time-series-database) 9 | - [JSON Storage](#json-storage) 10 | - [OLAP - Data Warehouse](#olap---data-warehouse) 11 | - [Search](#search) 12 | - [Text Processing](#text-processing) 13 | - [Crawler](#crawler) 14 | - [Recommender System](#recommender-system) 15 | - [Big Data](#big-data) 16 | - [Distributed Realtime Computation System](#distributed-realtime-computation-system) 17 | - [Data Visualization](#data-visualization) 18 | - [Workflow System](#workflow-system) 19 | - [Log Process](#log-process) 20 | - [Notebook](#notebook) 21 | 22 | 23 | # Projects about Data Storage and Analysis 24 | 25 | ## Database and Caching Platform 26 | 27 | - [Apache Ignite](https://ignite.apache.org/): Apache Ignite In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. 28 | 29 | 30 | ## Database 31 | 32 | - [SQL Server](https://msdn.microsoft.com/en-us/library/bb545450.aspx) 33 | - [PostgreSQL](http://www.postgresql.org/): 34 | - [pgAdmin](https://www.pgadmin.org/) 35 | - [PostGIS](http://postgis.refractions.net): PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力,相当于Oracle的spatial部分。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最著名的开源GIS数据库。 36 | - [PgBouncer](https://pgbouncer.github.io/): Lightweight connection pooler for PostgreSQL 37 | - [pgtool](http://www.pgpool.net/): Pgpool-II is a middleware that works between PostgreSQL servers and a PostgreSQL database client. 38 | - [pgmetrics](https://pgmetrics.io/): Easily collect and report PostgreSQL metrics for scripting, automation and troubleshooting. 39 | - [Postgres-XL](https://www.postgres-xl.org/overview/): Postgres-XL is a horizontally scalable open source SQL database cluster, flexible enough to handle varying database workloads 40 | - [Citus](https://github.com/citusdata/citus): Scalable PostgreSQL for multi-tenant and real-time workloads 41 | - [2ndquadrant](https://www.2ndquadrant.com/en/books/): Your diligent team of PostgreSQL experts 42 | - [MySQL](http://www.mysql.com/) 43 | - [MariaDB](http://mariadb.org/) 44 | - [WebScaleSQL](http://webscalesql.org/) 45 | - Distributed Database 46 | - [Tidb](https://github.com/pingcap/tidb): TiDB is a distributed NewSQL database compatible with MySQL protocol 47 | - [CockroachDB](https://www.cockroachlabs.com/product/cockroachdb/) 48 | - [FoundationDB](https://www.foundationdb.org/) 49 | - [DynomiteDB](http://www.dynomitedb.com/): A high performance, linearly scalable, highly available (HA) and distributed open-source database with support for pluggable persistent and in-memory storage engines. 50 | - [RocksDB](http://rocksdb.org/): The RocksDB library provides a persistent key value store. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function. 51 | - [MyRocks](http://myrocks.io/): A RocksDB storage engine with MySQL 52 | - [noms](https://github.com/attic-labs/noms): The versioned, forkable, syncable database. Noms is a decentralized database based on ideas from Git. 53 | 54 | ## Memory Database 55 | 56 | - [SQLlite](http://www.sqlite.org/index.html) 57 | - [LMDB](https://github.com/clibs/lmdb): Symas Lightning Memory-Mapped Database 58 | - [Apache GEODE](http://geode.apache.org/): Geode is an open source , distributed, in-memory database for scale-out applications. 59 | 60 | ## Graph Database 61 | 62 | - [Cayley](https://github.com/cayleygraph/cayley): Cayley is an open-source graph inspired by the graph database behind Freebase and Google's Knowledge Graph. 63 | - [Dgraph](https://dgraph.io/): distributed graph database 64 | - [JanusGraph](https://janusgraph.org/): Distributed, open source, massively scalable graph database 65 | - [Neo4j](http://neo4j.com): Neo4j is an open-source NoSQL graph database implemented in Java and Scala. 66 | - [ArangoDB](https://www.arangodb.com/): Natively store data for graph, document and search needs.Utilize feature-rich access with one query language. 67 | - [GraphView](https://github.com/Microsoft/GraphView): GraphView is a DLL library that enables users to use SQL Server or Azure SQL Database to manage graphs. It connects to a SQL database locally or in the cloud, stores graph data in tables and queries graphs through a SQL-extended language. It is not an independent database, but a middleware that accepts graph operations and translates them to T-SQL executed in SQL Server or Azure SQL Database. 68 | 69 | ## Database Engine 70 | 71 | - [InnoDB](https://en.wikipedia.org/wiki/InnoDB): InnoDB is a storage engine for MySQL. MySQL 5.5 and later use it by default.[1] It provides the standard ACID-compliant transaction features, along with foreign key support (Declarative Referential Integrity). 72 | - [XtraDB](https://en.wikipedia.org/wiki/XtraDB): Percona XtraDB is a storage engine for the MariaDB and Percona Server databases, and is intended as a drop-in replacement to InnoDB, which is one of the default engines available on the MySQL database. 73 | - [Berkerly DB](http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html): 介绍见[这里](https://en.wikipedia.org/wiki/Berkeley_DB) 74 | - [Tokyo Cabinet](http://fallabs.com/tokyocabinet/): Tokyo Cabinet is a library of routines for managing a database. The database is a simple data file containing records, each is a pair of a key and a value. Every key and value is serial bytes with variable length. Both binary data and character string can be used as a key and a value. There is neither concept of data tables nor data types. Records are organized in hash table, B+ tree, or fixed-length array. 75 | 76 | ## NoSQL Database 77 | 78 | - [MongoDB](https://www.mongodb.org/) 79 | - [RethinkDB](https://www.rethinkdb.com/) 80 | - [TokuMX](http://www.tokutek.com/): High-Performance MongoDB 81 | - [RavenDB](http://ravendb.net/): A linq enabled document database for .NET 82 | - [EventStore](https://github.com/EventStore/EventStore): The open-source, functional database with Complex Event Processing in JavaScript. 83 | - [LevelDB](https://github.com/google/leveldb): LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. 84 | - [eLevelDB](https://github.com/basho/eleveldb): eLevelDB 是一个 Erlang 应用程序,封装了 LevelDB 85 | - [Cassandra](http://cassandra.apache.org/): The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages. 86 | - [ScyllaDB](https://github.com/scylladb/scylla): NoSQL data store using the seastar framework, compatible with Apache Cassandra 87 | - [GridDB](https://griddb.net/en/): GridDB is an In-Memory NoSQL Database for highly scalable IoT applications 88 | 89 | ## Time Series Database 90 | 91 | - [Go: Prometheus](http://prometheus.io/): An open-source service monitoring system and time series database. 92 | - [Apache IoTDB](https://iotdb.apache.org/#/): Apache IoTDB (incubating) (Database for Internet of Things) is an integrated data management engine designed for timeseries data. It provides users with services for data collection, storage and analysis. 93 | - [Timescaledb](https://github.com/timescale/timescaledb): TimescaleDB is an open-source database designed to make SQL scalable for time-series data. It is engineered up from PostgreSQL, providing automatic partitioning across time and space (partitioning key), as well as full SQL support. 94 | - [PipelineDB](https://www.pipelinedb.com/): High-performance time-series aggregation for PostgreSQL. An open-source PostgreSQL extension that runs SQL queries continuously on streams, incrementally storing results in tables. 95 | - InfluxData Open Source Platform 96 | - [Telegraf](https://github.com/influxdata/telegraf): The plugin-driven server agent for collecting & reporting metrics. 97 | - [InfluxDB](https://github.com/influxdata/influxdb): Scalable datastore for metrics, events, and real-time analytics 98 | - [Chronograf](https://github.com/influxdata/chronograf): Chronograf is an open-source web application written in Go and React.js that provides the tools to visualize your monitoring data and easily create alerting and automation rule 99 | - [Kapacitor](https://github.com/influxdata/kapacitor): Open source framework for processing, monitoring, and alerting on time series data 100 | - [Riak TS](http://basho.com/products/riak-ts/) 101 | - [TDengine](https://github.com/taosdata/TDengine): An open-source big data platform designed and optimized for the Internet of Things (IoT). 102 | 103 | reference: 104 | 105 | - [InfluxData Platform](https://www.influxdata.com/products/editions/) 106 | - [Open Source Time Series Platform](https://www.influxdata.com/time-series-platform/) 107 | - [Time Series Database](https://www.influxdata.com/time-series-database/) 108 | 109 | ## JSON Storage 110 | 111 | - [Kinto](https://github.com/Kinto/kinto): Kinto is a lightweight JSON storage service with synchronisation and sharing abilities. It is meant to be easy to use and easy to self-host. 112 | 113 | ## OLAP - Data Warehouse 114 | 115 | - [ClickHouse](https://clickhouse.tech/): ClickHouse is a fast open-source OLAP database management system 116 | - [facebook presto](https://prestodb.io/): Presto is an open source distributed SQL query engine for running interactive analytic queries against data sources of all sizes ranging from gigabytes to petabytes. 117 | - [Greenplum Database](http://greenplum.org): Greenplum DB 号称是世界上第一个开源的大规模并行数据仓库,最初是基于 PostgreSQL,现在已经添加了大量数据库方面的创新。Greenplum 提供 PD 级别数据量的强大和快速分析能力,特别是面向大数据方面的分析能力,支持大数据的超高性能分析查询。 118 | - [druid](http://druid.io/druid.html): Druid is an open-source data store designed for sub-second queries on real-time and historical data. It is primarily used for business intelligence (OLAP) queries on event data. Druid provides low latency (real-time) data ingestion, flexible data exploration, and fast data aggregation. Existing Druid deployments have scaled to trillions of events and petabytes of data. Druid is most commonly used to power user-facing analytic applications. 119 | - [Infobright community edition](https://www.infobright.com/): [下载地址](https://github.com/JonGates/infobright) 120 | - [Pinot](https://github.com/linkedin/pinot): Pinot is a realtime distributed OLAP datastore, which is used at LinkedIn to deliver scalable real time analytics with low latency. It can ingest data from offline data sources (such as Hadoop and flat files) as well as online sources (such as Kafka). Pinot is designed to scale horizontally. 121 | 122 | ## Search 123 | 124 | - [Java: Apache Lucene](http://lucene.apache.org/core/index.html): Apache LuceneTM is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. 125 | - [C++: Lucene++](https://github.com/luceneplusplus/LucenePlusPlus): Lucene++ is an up to date C++ port of the popular Java Lucene library, a high-performance, full-featured text search engine. 126 | - [Go: golucene](https://github.com/balzaczyy/golucene): Go (Golang) port of Apache Lucene 127 | - [Java: Apache Solr](http://lucene.apache.org/solr/): Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene. 128 | - [mmseg4j-solr](https://github.com/chenlb/mmseg4j-solr): mmseg4j for lucene or solr analyzer 129 | - [mmseg4j-core](https://github.com/chenlb/mmseg4j-core): mmseg4j core MMSEG for java chinese analyzer 130 | - [Java: ElasticSearch](https://www.elastic.co/): elasticsearch 的目标是解决上面的所有问题以及更多。她是开源的(Apache2协议),分布式的,RESTful的,构建在Apache Lucene之上的的搜索引擎. 131 | - [elasticsearch-rtf](https://github.com/medcl/elasticsearch-rtf): elasticsearch中文发行版,针对中文集成了相关插件,并带有Demo,方便新手学习,或者在生产环境中直接使用 132 | - [elasticsearch-analysis-ik](https://github.com/medcl/elasticsearch-analysis-ik): The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary. 133 | - [elasticsearch-analysis-mmseg](https://github.com/medcl/elasticsearch-analysis-mmseg): Mmseg Analysis for ElasticSearch 134 | - [elasticsearch-analysis-pinyin](https://github.com/medcl/elasticsearch-analysis-pinyin): The Pinyin Analysis plugin integrates Pinyin4j(http://pinyin4j.sourceforge.net/) module into elasticsearch. 135 | - [C++: Sphinx](http://sphinxsearch.com/): Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。Sphinx is an open source full text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. It's written in C++ and works on Linux (RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD, and a few other systems. 136 | - [sphinx-for-chinese](http://sphinx-search.com/): sphinx-for-chinese是一款专注于中文搜索的全文检索软件,在sphinx的基础上添加了中文处理模块并优化了中文搜索效果。 137 | - [C++: xunsearch](http://www.xunsearch.com/): 开源免费、高性能、多功能, 简单易用的专业全文检索技术方案 138 | - Ego 139 | - [Golang: gse](https://github.com/go-ego/gse): Go efficient text segmentation; support english, chinese, japanese and other. Go 语言高性能分词 140 | - [Golang: riot](https://github.com/go-ego/riot): Go Open Source, Distributed, Simple and efficient Search Engine 141 | - [Golang: bleve](https://github.com/blevesearch/bleve): A modern text indexing library for go 142 | 143 | **Code Search** 144 | 145 | - [OpenGrok](http://opengrok.github.io/OpenGrok/): OpenGrok is a fast and usable source code search and cross reference engine. 146 | - [Hound](https://github.com/etsy/hound): Hound is an extremely fast source code search engine. 147 | - [zoekt](https://github.com/google/zoekt): Fast trigram based code search 148 | - [Google code search](https://github.com/google/codesearch): Code Search is a tool for indexing and then performing regular expression searches over large bodies of source code. It is a set of command-line programs written in Go. 149 | 150 | ## Text Processing 151 | 152 | - [Golang: sego](https://github.com/huichen/sego): Go中文分词 153 | - [Golang: gse](https://github.com/go-ego/gse): Go efficient text segmentation; support english, chinese, japanese and other. 154 | - [Golang: prose](https://github.com/jdkato/prose): A Golang library for text processing, including tokenization, part-of-speech tagging, and named-entity extraction. 155 | - [Golang: gpy](https://github.com/go-ego/gpy): Go 语言汉字转拼音工具 156 | 157 | - [Golang: goquery](https://github.com/PuerkitoBio/goquery): goquery brings a syntax and a set of features similar to jQuery to the Go language. It is based on Go's net/html package and the CSS Selector library cascadia. Since the net/html parser returns nodes, and not a full-featured DOM tree, jQuery's stateful manipulation functions (like height(), css(), detach()) have been left off. 158 | - [Java: Apache Tika](http://tika.apache.org/): The Apache Tika™ toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika useful for search engine indexing, content analysis, translation, and much more. 159 | - [.NET: Toxy - .NET Text/Data Extraction Framework](https://toxy.codeplex.com): Toxy is a .NET data/text extraction framework similar to Apache Tika in Java. It supports a lot of popular formats such as docx, xlsx, xls, pdf, csv, txt, epub, html and so on. 160 | - [.NET: Rant2](https://github.com/TheBerkin/Rant): Rant is an all-purpose procedural text engine that is most simply described as the opposite of Regex. It has been refined to include a dizzying array of features for handling everything from the most basic of string generation tasks to advanced dialogue generation, code templating, automatic formatting, and more. 161 | 162 | ## Crawler 163 | 164 | 参考:https://github.com/BruceDone/awesome-crawler 165 | 166 | - [Golang: Pholcus](https://github.com/henrylee2cn/pholcus): Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/csv/excel等)、有大量Demo共享;同时她还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能 167 | - [Golang: Colly](http://go-colly.org/): Fast and Elegant Scraping Framework for Gophers 168 | - [Java: Apache Nutch](http://nutch.apache.org/): Apache Nutch是一个用Java编写的开源网络爬虫。Apache Nutch对于Solr已经支持得很好,这大大简化了Nutch与Solr的整合。 169 | - [Java: yahoo/anthelion](https://github.com/yahoo/anthelion): Anthelion is a Nutch plugin for focused crawling of semantic data. The project is an open-source project released under the Apache License 2.0. 170 | - [Python: Scrapy](https://scrapy.org/): An open source and collaborative framework for extracting the data you need from websites. 171 | In a fast, simple, yet extensible way. 172 | - [Java: Norconex HTTP Collector](http://www.norconex.com/collectors/collector-http/): Open-Source Enterprise Web Crawler 173 | - [Java: heritrix3](https://github.com/internetarchive/heritrix3): Heritrix is the Internet Archive's open-source, extensible, web-scale, archival-quality web crawler project. 174 | 175 | ## Recommender System 176 | 177 | - [SUGGEST: Recommendation Engine](http://glaros.dtc.umn.edu/gkhome/suggest/overview): SUGGEST is a Top-N recommendation engine that implements a variety of recommendation algorithms. Top-N recommender systems, a personalized information filtering technology, are used to identify a set of N items that will be of interest to a certain user. In recent years, top-N recommender systems have been used in a number of different applications such to recommend products a customer will most likely buy; recommend movies, TV programs, or music a user will find enjoyable; identify web-pages that will be of interest; or even suggest alternate ways of searching for information. 178 | - [easyrec](http://easyrec.org/): With the open source recommendation engine easyrec you can add recommendations to your website within minutes. easyrec is a web application written in Java that provides personalized recommendations using RESTful Web Services ready to be integrated in your web enabled applications. 179 | - [MyMediaLite](https://github.com/zenogantner/MyMediaLite): recommender system library for the CLR (.NET) 180 | - [LensKit](http://lenskit.org/): Open-Source Tools for Recommender Systems 181 | - [Crab](http://muricoca.github.io/crab/): A Recommender Framework in Python 182 | 183 | ## Big Data 184 | 185 | - [Hadoop and related projects](http://hadoop.apache.org/) 186 | - [**Common**](http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/CLIMiniCluster.html): The common utilities that support the other Hadoop modules. 187 | - [**HDFS**](http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html): A distributed file system that provides high-throughput access to application data. 188 | - [**YARN**](http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html): A framework for job scheduling and cluster resource management. 189 | - [**MapReduce**](http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html): A YARN-based system for parallel processing of large data sets. 190 | - [Apache Spark](http://spark.apache.org/): a fast and general engine for large-scale data processing 191 | - [Apache Livy](https://livy.apache.org/): A REST Service for Apache Spark 192 | - [Apache TAJO](http://tajo.apache.org/): A big data warehouse system on Hadoop 193 | - [Apache Kylin](http://kylin.incubator.apache.org/): Apache Kylin is an open source Distributed Analytics Engine from eBay Inc. that provides SQL interface and multi-dimensional analysis (OLAP) on Hadoop supporting extremely large datasets 194 | - [Apache Hive](http://hive.apache.org/): The Apache Hive ™ data warehouse software facilitates querying and managing large datasets residing in distributed storage. Hive provides a mechanism to project structure onto this data and query the data using a SQL-like language called HiveQL. At the same time this language also allows traditional map/reduce programmers to plug in their custom mappers and reducers when it is inconvenient or inefficient to express this logic in HiveQL. 195 | - [Apache HBase](http://hbase.apache.org/): Apache HBase™ is the Hadoop database, a distributed, scalable, big data store 196 | - [Apache HAWQ](http://hawq.incubator.apache.org): HAWQ 是 Pivotal 设计的一个大规模并行 SQL 分析处理引擎,支持事务处理。HAWQ 将复杂的查询分割成简单的任何,并分发到并行处理系统中的处理单元执行。包括查询规划器、动态管道、前沿互联和查询执行优化器等等。提供最高级别的性能和可伸缩性。HAWQ 基于 Hadoop 架构。 197 | - [Go: Pachyderm](https://github.com/pachyderm/pachyderm): Pachyderm is a software platform the supports the storage and processing of large data sets. Pachyderm is inspired by the Hadoop ecosystem but shares no code with it. Instead, we leverage the container ecosystem to provide the broad functionality of Hadoop with the ease of use of Docker. 198 | - [Pony: Wallaroo](https://www.wallaroolabs.com/): The ultrafast and elastic data processing engine. 199 | - [Apache Calcite](https://calcite.apache.org/): The foundation for your next high-performance database. 200 | 201 | ## Distributed Realtime Computation System 202 | 203 | - [Apache Storm](http://storm.apache.org/): Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate. 204 | - [jstorm](https://github.com/alibaba/jstorm): JStorm is a distributed and fault-tolerant realtime computation system. Inspired by Apache Storm, JStorm has been completely rewritten in Java and provides many more enhanced features. JStorm has been widely used in many enterprise environments and proved robust and stable. 205 | - [Twitter Heron](http://dl.acm.org/citation.cfm?id=2742788): 参考[Twitter发布新的大数据实时分析系统Heron](http://geek.csdn.net/news/detail/33750) 206 | - [Apache Samza](http://samza.apache.org/): Apache Samza is a distributed stream processing framework. It uses Apache Kafka for messaging, and Apache Hadoop YARN to provide fault tolerance, processor isolation, security, and resource management. 207 | - [Apache Flink](http://flink.apache.org/): Apache Flink is an open source platform for scalable batch and stream data processing. 208 | - [Data Sketches](https://datasketches.github.io): A Java software library of stochastic(随机的) streaming algorithms 209 | 210 | ## Data Visualization 211 | 212 | - [Apache Zeppelin](http://www.zepl.com/): A web-based notebook that enables interactive data analytics. You can make beautiful data-driven, interactive and collaborative documents with SQL, Scala and more. 213 | - [Kibana](https://www.elastic.co/products/kibana): Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作 214 | 215 | ## Workflow System 216 | 217 | - [Python: Airflow](https://github.com/airbnb/airflow): a workflow management platform 218 | - [Python: Perfect](https://github.com/PrefectHQ/prefect): Prefect is a new workflow management system, designed for modern infrastructure and powered by the open-source Prefect Core workflow engine. Users organize Tasks into Flows, and Prefect takes care of the rest. 219 | - [Java: Azkaban](https://azkaban.github.io/): Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows. 220 | - [Java: Rundeck](http://rundeck.org/index.html): job scheduler and runbook automation 221 | - [Go: Argo](https://github.com/argoproj/argo): Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflows is implemented as a Kubernetes CRD (Custom Resource Definition). 222 | 223 | Library: 224 | 225 | - [Go: SciPipe](https://github.com/scipipe/scipipe): SciPipe is a library for writing Scientific Workflows, sometimes also called "pipelines", in the Go programming language. 226 | - [Python: luigi](https://github.com/spotify/luigi): Luigi is a Python module that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, visualization etc. It also comes with Hadoop support built in. 227 | - [dotNET: Workflow-core](https://github.com/danielgerlag/workflow-core): Lightweight workflow engine for .NET Standard 228 | 229 | Common Workflow Language: 230 | 231 | - [Common Workflow Language](https://www.commonwl.org/): The Common Workflow Language (CWL) is a specification for describing analysis workflows and tools in a way that makes them portable and scalable across a variety of software and hardware environments, from workstations to cluster, cloud, and high performance computing (HPC) environments. CWL is designed to meet the needs of data-intensive science, such as Bioinformatics, Medical Imaging, Astronomy, Physics, and Chemistry. 232 | 233 | 234 | ## Log Process 235 | 236 | - [Apache Flume](http://flume.apache.org/): Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application. 237 | - [Logstash](https://www.elastic.co/products/logstash): Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。 238 | - [FluentD](http://www.fluentd.org/): Fluentd是一个日志收集系统,它的特点在于其各部分均是可定制化的,你可以通过简单的配置,将日志收集到不同的地方。 239 | - [Greylog](https://www.graylog.org/): Free and open source log management 240 | - [Logspout](https://github.com/gliderlabs/logspout): Log routing for Docker container logs 241 | - [Rsyslog](https://github.com/rsyslog/rsyslog): Rsyslog is a rocket-fast system for log processing. 242 | - [Syslog-ng](https://www.syslog-ng.com/) 243 | - [vector](https://vector.dev/): A lightweight and ultra-fast tool for building observability pipelines 244 | 245 | 246 | ## Notebook 247 | 248 | - [Jupyter](https://jupyter.org/): The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more. 249 | - [PolyNote](https://polynote.org/): The polyglot notebook with first-class Scala support. 250 | -------------------------------------------------------------------------------- /projects-part-4-devops.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Project about DevOps](#project-about-devops) 4 | - [Code Repository](#code-repository) 5 | - [Code Analysis and Metrics](#code-analysis-and-metrics) 6 | - [Scaffolding](#scaffolding) 7 | - [Build](#build) 8 | - [Continuous Integration](#continuous-integration) 9 | - [Artifact Repository](#artifact-repository) 10 | - [Automation](#automation) 11 | - [Unit Testing](#unit-testing) 12 | - [Database Testing](#database-testing) 13 | - [Database Management](#database-management) 14 | - [Automated Acceptance Testing/BDD](#automated-acceptance-testingbdd) 15 | - [API Testing](#api-testing) 16 | - [Performance Testing](#performance-testing) 17 | - [System Monitor](#system-monitor) 18 | - [Gather System Information](#gather-system-information) 19 | - [Process Supervisor](#process-supervisor) 20 | - [User Behavior Collection & Analysis](#user-behavior-collection--analysis) 21 | - [Workload/Job Management](#workloadjob-management) 22 | - [OS Configuration Management](#os-configuration-management) 23 | - [Terminal](#terminal) 24 | - [Container](#container) 25 | - [Virtualization](#virtualization) 26 | - [Serverless](#serverless) 27 | - [Misc](#misc) 28 | 29 | 30 | 31 | 32 | # Project about DevOps 33 | 34 | ## Code Repository 35 | 36 | - [C: Git](http://www.git-scm.com/): Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 37 | - [Ruby: Gitlab](https://about.gitlab.com/): Open source git server 38 | - [Golang: Gogs](http://gogs.io/): 极易搭建的自助 Git 服务 39 | - [Golang: Gitea](https://github.com/go-gitea/gitea) 40 | - [Java: gerrit](https://www.gerritcodereview.com/): Gerrit provides web based code review and repository management for the Git version control system. 41 | - [Perl: gitolite](https://github.com/sitaramc/gitolite): Hosting git repositories -- Gitolite allows you to setup git hosting on a central server, with very fine-grained access control and many (many!) more powerful features. 42 | - [C#: bonobo git server](https://bonobogitserver.com/): Simple git server for Windows. Set up your own self hosted git server on IIS for Windows. Manage users and have full control over your repositories with a nice user friendly graphical interface. 43 | - Git Tools 44 | - [Golang: git-appraise](https://github.com/google/git-appraise): Distributed Code Review For Git 45 | - [Golang: git-lfs](https://git-lfs.github.com/): An open source Git extension for versioning large files 46 | - [Fork](https://git-fork.com/): Fork是Mac和Windows的免费高级GUI git客户端,专注于速度,用户友好性和效率。它的功能包括带有快速操作按钮的主题布局,内置的合并冲突帮助器和解析器,仓库管理器,GitHub通知等 47 | - [SourceTree](https://www.sourcetreeapp.com/): Sourcetree simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI. 48 | 49 | ## Code Analysis and Metrics 50 | 51 | - [Golang: Go Meta Linter](https://github.com/alecthomas/gometalinter): Concurrently run Go lint tools and normalise their output 52 | - [JavaScript: ESlint](http://eslint.org/): The pluggable linting utility for JavaScript and JSX 53 | - [JSCS — JavaScript Code Style](http://jscs.info/): **JSCS has merged with ESLint!** JSCS is a code style linter and formatter for your style guide 54 | - [SonarQube](http://www.sonarqube.org/): SonarQube is an open platform to manage code quality. 55 | - [.NET: StyleCop](https://stylecop.codeplex.com/) - StyleCop analyzes C# source code to enforce a set of style and consistency rules 56 | - [.NET: OpenCover](https://github.com/OpenCover/opencover): A code coverage tool for .NET 2 and above, support for 32 and 64 processes with both branch and sequence points; roots proudly based in PartCover 57 | 58 | ## Scaffolding 59 | 60 | - [Node: Yeoman](http://yeoman.io): The Yeoman workflow is comprised of three core tools for improving your productivity and satisfaction when building a web app. 61 | 62 | ## Build 63 | 64 | - [Make](https://www.gnu.org/software/make/manual/make.html): GNU Make手册 65 | - [CMake](https://cmake.org/): CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK. 66 | - [Bazel](http://bazel.io/): Bazel is Google's own build tool, now publicly available in Beta. Bazel has built-in support for building both client and server software, including client applications for both Android and iOS platforms. It also provides an extensible framework that you can use to develop your own build rules. Bazel is a build tool which coordinates builds and run tests. It works with source files written in any language, with native support for Java, C, C++ and Python. Bazel produces builds and runs tests for multiple platforms. 67 | - [Pants](https://www.pantsbuild.org/index.html): Pants is a build system designed for codebases that: Are large and/or growing rapidly; Consist of many subprojects that share a significant amount of code; Have complex dependencies on third-party libraries; Use a variety of languages, code generators and frameworks. 68 | - [Facebook Buck](https://buckbuild.com/): Buck is a build system developed and used by Facebook. It encourages the creation of small, reusable modules consisting of code and resources, and supports a variety of languages on many platforms. 69 | - [Earthly](https://github.com/vladaionescu/earthly): Build automation for the container era 70 | - [Java: Gradle](http://gradle.org/): OPEN SOURCE BUILD AUTOMATION. Get started with: Java / JVM | Android | Native (C / C++) | Web and many more! 71 | - [Java: Maven](http://maven.apache.org/): Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. 72 | - [MSBuild](https://github.com/Microsoft/msbuild) - The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio 73 | - [Psake](https://github.com/psake/psake) - .NET-based build automation tool written in PowerShell 74 | - [Invoke-Build](https://github.com/nightroman/Invoke-Build) - PowerShell build and test automation tool inspired by Psake. 75 | - [Wixtoolset](http://wixtoolset.org/): The WiX toolset builds Windows installation packages from XML source code. The toolset integrates seamlessly into build processes. 76 | 77 | 参考: 78 | 79 | - [Make命令教程](http://www.ruanyifeng.com/blog/2015/02/make.html) 80 | 81 | ## Continuous Integration 82 | 83 | - [Tekton](https://tekton.dev/): Tekton is a powerful and flexible open-source framework for creating CI/CD systems, allowing developers to build, test, and deploy across cloud providers and on-premise systems. 84 | - [Jenkins-CI](http://jenkins-ci.org/): An extensible open source continuous integration server 85 | - [janky](https://github.com/github/janky): Continuous integration server built on top of Jenkins and Hubot 86 | - [Jenkins blue ocean](https://jenkins.io/zh/projects/blueocean/) 87 | - [Jenkins X](https://jenkins.io/zh/projects/jenkins-x/): 基于 Kubernetes 的现代云应用 CI/CD 解决方案 88 | - [Jenkins Remoting](https://jenkins.io/zh/projects/remoting/) 89 | - [Fabric8](https://fabric8.io/): fabric8 is an end to end development platform spanning ideation to production for the creation of cloud native applications and microservices. You can build, test and deploy your applications via Continuous Delivery pipelines then run and manage them with Continuous Improvement and ChatOps 90 | - [Concourse CI](https://github.com/concourse/concourse): CI that scales with your project. 91 | - [Walle](https://github.com/meolu/walle-web): walle - 瓦力 Devops开源项目代码部署平台 92 | - [drone](https://github.com/drone/drone): Drone is a Continuous Delivery system built on container technology. Drone uses a simple yaml configuration file, a superset of docker-compose, to define and execute Pipelines inside Docker containers. 93 | - [spinnaker](http://www.spinnaker.io/): Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence. 94 | - [CruiseControl.NET](http://www.cruisecontrolnet.org/) - an Automated Continuous Integration server, implemented using the .NET Framework 95 | - [Go.cd](http://www.go.cd/): Automate and streamline the build-test-release cycle for worry-free, continuous delivery of your product. 96 | - [Buildbot](http://buildbot.net/index.html): Python-based continuous integration testing framework; your pull requests are more than welcome! 97 | - [MyGet](http://www.myget.org/) - Continuous Integration and Deployment, Hosted Package Repository for NuGet, NPM, Bower and VSIX. [Free for OSS] [$] 98 | 99 | 100 | ## Artifact Repository 101 | 102 | - [Nexus Repository OSS](https://www.sonatype.com/nexus-repository-oss): The free artifact repository with universal support for popular formats. 103 | 104 | 参考: 105 | 106 | - [mvn repository](https://mvnrepository.com/) 107 | 108 | 109 | ## Automation 110 | 111 | - [Python: Twill](http://twill.idyll.org/): a simple scripting language for Web browsing 112 | - [Python: Mechanize](https://github.com/python-mechanize/mechanize): Automate interaction with HTTP web servers 113 | - [Hubot](https://hubot.github.com/): GitHub, Inc., wrote the first version of Hubot to automate our company chat room. Hubot knew how to deploy the site, automate a lot of tasks, and be a source of fun in the company. Eventually he grew to become a formidable force in GitHub. But he led a private, messy life. So we rewrote him. 114 | 115 | 116 | ## Unit Testing 117 | 118 | - [Golang: Testify](https://github.com/stretchr/testify): A sacred extension to the standard go testing package 119 | - [Golang: Go frisby](https://github.com/verdverm/frisby): API testing framework inspired by frisby-js 120 | - [Golang: httpexpect](https://github.com/gavv/httpexpect): End-to-end HTTP and REST API testing for Go. 121 | - [Golang: govcr](https://github.com/seborama/govcr): Record and replay HTTP interactions for offline unit / behavioural / integration tests thereby acting as an HTTP mock. 122 | - [.NET: NUnit](https://github.com/nunit/nunit-framework) 123 | - [.NET: xUnit](https://github.com/xunit/xunit) - xUnit.net is a free, open source, community-focused unit testing tool for the .NET Framework 124 | - [.NET: Fluent Assertions](https://github.com/fluentassertions/fluentassertions): Fluent Assertions is a set of .NET extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style test. 125 | - [.NET: AutoFixture](https://github.com/AutoFixture/AutoFixture) - AutoFixture is an open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests 126 | - [.NET: Moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET 127 | - [.NET: Rhino Mocks](https://github.com/ayende/rhino-mocks) - Dynamic Mocking Framework for .NET 128 | - [.NET: NSubstitute](http://nsubstitute.github.io/) - A friendly substitute for .NET mocking frameworks 129 | - [.NET: Shouldly](https://github.com/shouldly/shouldly): Should testing for .net - the way Asserting *Should* be! 130 | 131 | ## Database Testing 132 | 133 | - [dbUnit](http://dbunit.sourceforge.net/intro.html): database unit testing 134 | - [TSQLT](http://tsqlt.org/): tSQLt is a database unit testing framework for Microsoft SQL Server. tSQLt is compatible with SQL Server 2005 (service pack 2 required) and above on all editions. 135 | - [DbFit](http://dbfit.github.io/dbfit/index.html): Test-driven database development. Write readable, easy-to-maintain unit and integration tests for your database code. 136 | 137 | ## Database Management 138 | 139 | - [SqlPad](http://rickbergfalk.github.io/sqlpad/): Run SQL in your browser...Supports Postgres, MySQL, SQL Server and Vertica. 140 | - [Perl: sqitch](http://sqitch.org/): Sqitch is a database change management application. It currently supports PostgreSQL 8.4+, SQLite 3.7.11+, MySQL 5.0+, Oracle 10g+, Firebird 2.0+, and Vertica 6.0+. 141 | - [Golang: goose](https://bitbucket.org/liamstask/goose): goose is a database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts. 142 | 143 | ## Automated Acceptance Testing/BDD 144 | 145 | - [Selenium](http://www.seleniumhq.org/): Selenium is a suite of tools to automate web browsers across many platforms. 146 | - [Java: Cucumber](https://cucumber.io/): Cucumber is a software tool that computer programmers use for testing other software. It runs automated acceptance tests written in a behavior-driven development (BDD) style. 147 | - [cucumber.js](https://github.com/cucumber/cucumber-js): Cucumber, the popular Behaviour-Driven Development tool, brought to your JavaScript stack.It runs on both Node.js and modern web browsers. 148 | - [SpecFlow](http://www.specflow.org/): Cucumber for .NET. The open source solution trusted by .NET devs around the world. 149 | - [Java: JBehave](http://jbehave.org): JBehave is a framework for Behaviour-Driven Development (BDD). BDD is an evolution of test-driven development (TDD) and acceptance-test driven design, and is intended to make these practices more accessible and intuitive to newcomers and experts alike. It shifts the vocabulary from being test-based to behaviour-based, and positions itself as a design philosophy. 150 | - [JavaScript: Jasmine](https://github.com/jasmine/jasmine): Jasmine is a Behavior Driven Development testing framework for JavaScript. It does not rely on browsers, DOM, or any JavaScript framework. Thus it's suited for websites, Node.js projects, or anywhere that JavaScript can run. 151 | - [Go: Gauge](https://gauge.org/): Test Automation you'll actually like Simple. Collaborative. Adaptable. 152 | - [Go: ginkgo](https://github.com/onsi/ginkgo): BDD Testing Framework for Go 153 | - [Go: goconvey](https://github.com/smartystreets/goconvey): Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go. 154 | - [Go: go-fuzz](https://github.com/dvyukov/go-fuzz): Randomized testing for Go 155 | - [Python:ROBOT FRAMEWORK](https://robotframework.org/#introduction): Robot Framework is a generic open source automation framework for acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA). 156 | 157 | ## API Testing 158 | 159 | - [Postman](https://www.getpostman.com/) 160 | - [yapi](https://github.com/YMFE/yapi) 161 | - [Insomnia Designer](https://insomnia.rest/) 162 | 163 | ## Performance Testing 164 | 165 | - [Python: Lucust](http://locust.io/): Define user behaviour with Python code, and swarm your system with millions of simultaneous users. 166 | - [Web Bench](http://home.tiscali.cz:8080/~cz210552/webbench.html): Web Bench是一个简单的web或者web代理服务的基准测试工具。(它)使用fork()模拟多个客户端并且可以发起HTTP/0/9-HTTP/1.1的请求。这个基准测试不是非常符合实际情况,但是可以测试出你的HTTP服务是否可以处理多个客户同时访问而不会把你的机器弄挂掉。这个工具可以获得服务的两个指标:每分钟响应请求数量(pages/min)和每秒钟传输数据量(bytes/sec)。 167 | - [Siege](https://www.joedog.org/siege-home/): Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 Siege 支持基本的认证,cookies, HTTP 和 HTTPS 协议。 168 | - [AB - Apache HTTP server benchmarking tool](http://jmeter.apache.org/): ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。 169 | - [Java: Apache JMeter](http://jmeter.apache.org/): Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。 170 | - [Badboy](http://www.badboy.com.au/): Badboy is a powerful tool designed to aid in testing and development of complex dynamic applications. Badboy makes web testing and development easier with dozens of features including a simple yet comprehensive capture/replay interface, powerful load testing support, detailed reports, graphs and much more! 171 | - [Ruby: ruby-jmeter](https://github.com/flood-io/ruby-jmeter): A Ruby based DSL for building JMeter test plans 172 | - [Scala: Gatling](http://gatling.io/): Gatling is an open-source load testing framework based on Scala, Akka and Netty 173 | - [Erlang: Tsung](http://tsung.erlang-projects.org/): Tsung is an open-source multi-protocol distributed load testing tool. It can be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT and Jabber/XMPP servers. Tsung is a free software released under the GPLv2 license. 174 | - [.NET: West Wind Websurge](http://websurge.west-wind.com/): We believe that testing HTTP requests and load testing a site should be easy - something that takes a few minutes to set up and then runs on a regular basis during the development process, so that you can monitor performance of your site while you are building it. To this end we built West Wind WebSurge with the developer and testers in mind to make it easy to create HTTP requests or entire sessions, and then easily play back either individual URLs for development response testing, or for full-on testing under heavy load. Sessions are stored in plain text files so that they can be easily stored with projects or shared via source control for all users to have access. 175 | - [C: wrk](https://github.com/wg/wrk): 176 | wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue. 177 | - [go-wrk](https://github.com/tsliwowicz/go-wrk): go-wrk - a HTTP benchmarking tool based in spirit on the excellent wrk tool 178 | - [C: Tcpkali](https://github.com/machinezone/tcpkali): Fast multi-core TCP and WebSockets load generator. 179 | - [C: TCPCopy](https://github.com/session-replay-tools/tcpcopy): TCPCopy is a TCP stream replay tool to support real testing of Internet server applications. 180 | - [Go: Gor](https://github.com/buger/gor): Gor is a simple http traffic replication tool written in Go. Its main goal is to replay traffic from production servers to staging and dev environments. 181 | - [Go: Goreplay](https://github.com/buger/goreplay): GoReplay is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. 182 | - [Go: Toxy](https://github.com/h2non/toxy): Hackable HTTP proxy to simulate server failure scenarios and unexpected network conditions 183 | 184 | 185 | ## System Monitor 186 | 187 | - [Go: Prometheus](http://prometheus.io/): An open-source service monitoring system and time series database. 188 | - [Thanos](https://github.com/improbable-eng/thanos): Highly available Prometheus setup with long term storage capabilities. 189 | - [M3](https://github.com/m3db/m3): Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Graphite Compatible, Metrics Platform 190 | - [Grafana](http://grafana.org/): Grafana is a leading open source application for visualizing large-scale measurement data. 191 | - [Cortex](https://github.com/cortexproject/cortex): A horizontally scalable, highly available, multi-tenant, long term Prometheus. 192 | - [Alerta monitoring system](http://docs.alerta.io/en/latest/index.html): The alerta monitoring system is a tool used to consolidate and de-duplicate alerts from multiple sources for quick ‘at-a-glance’ visualisation. With just one system you can monitor alerts from many other monitoring tools on a single screen. 193 | - [Graphite - Scalable Realtime Graphing](http://graphite.wikidot.com/): Graphite 是一个用于采集网站实时信息并进行统计的开源项目,可用于采集多种网站服务运行状态信息。Graphite服务平均每分钟有4800次更新操作。实践已经证实要监测网站发发生什么是非常有用的,它的简单文本协议和绘图功能可以方便地即插即 用的方式用于任何需要监控的系统上 194 | - [Nagios](https://www.nagios.org/): Nagios Is The Industry Standard In IT Infrastructure Monitoring. Achieve instant awareness of IT infrastructure problems, so downtime doesn't adversely affect your business. 195 | - [Icinga](https://www.icinga.org/): ICINGA项目是 由Michael Luebben、HendrikB?cker和JoergLinge等人发起的,他们都是现有的Nagios项目社区委员会的成员,他们承诺,新的开源项 目将完全兼容以前的Nagios应用程序及扩展功能。在新项目的网站上,他们是如此定义ICINGA的,这将是一个介于Nagios社区版和企业版间的产 品。特别将致力于解决Nagios项目现在的问题,比如不能及时处理Nagios项目的bug、新功能不能及时添加等。还有在新的ICINGA项目中,将 更好的实现数据库集成方面的功能,标准化第三发应用程序的接口等。 196 | - [Zabbix](http://www.zabbix.com/): Zabbix is the ultimate enterprise-level software designed for real-time monitoring of millions of metrics collected from tens of thousands of servers, virtual machines and network devices. 197 | - [Riemann](http://riemann.io/): Riemann aggregates events from your servers and applications with a powerful stream processing language. Send an email for every exception in your app. Track the latency distribution of your web app. See the top processes on any host, by memory and CPU. Combine statistics from every Riak node in your cluster and forward to Graphite. Track user activity from second to second. 198 | - [Ganglia Monitoring System](http://ganglia.info/): Ganglia is a scalable distributed monitoring system for high-performance computing systems such as clusters and Grids. It is based on a hierarchical design targeted at federations of clusters. It leverages widely used technologies such as XML for data representation, XDR for compact, portable data transport, and RRDtool for data storage and visualization. It uses carefully engineered data structures and algorithms to achieve very low per-node overheads and high concurrency. The implementation is robust, has been ported to an extensive set of operating systems and processor architectures, and is currently in use on thousands of clusters around the world. It has been used to link clusters across university campuses and around the world and can scale to handle clusters with 2000 nodes. 199 | - [Python: Sentry](https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games. 200 | - [Go: bosun](https://github.com/bosun-monitor/bosun): Bosun is an open-source, MIT licensed, monitoring and alerting system by Stack Exchange. It has an expressive domain specific language for evaluating alerts and creating detailed notifications. It also lets you test your alerts against history for a faster development experience. 201 | - [Open-Falcon企业级监控系统解决方案](http://open-falcon.com/): Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案. 202 | - [Opserver](https://github.com/opserver/opserver): Opserver is a monitoring system by the team at Stack Exchange, home of Stack Overflow. 203 | 204 | ## Gather System Information 205 | 206 | - [Tsar](https://github.com/kongjian/tsar): Tsar (Taobao System Activity Reporter) is a monitoring tool, which can be used to gather and summarize system information, e.g. CPU, load, IO, and application information, e.g. nginx, HAProxy, Squid, etc. The results can be stored at local disk or sent to Nagios. 207 | - [collectd](http://collectd.org/): collectd is a daemon which collects system performance statistics periodically and provides mechanisms to store the values in a variety of ways, for example in RRD files. 208 | - [osquery](https://github.com/facebook/osquery): SQL powered operating system instrumentation, monitoring, and analytics. 209 | - [cAdvisor](https://github.com/google/cadvisor): Analyzes resource usage and performance characteristics of running containers. 210 | 211 | ## Process Supervisor 212 | 213 | - [Supervisor](http://supervisord.org): Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. 214 | - [PM2](https://github.com/Unitech/pm2): Production process manager for Node.js applications with a built-in load balancer https://app.keymetrics.io/ 215 | 216 | 217 | ## User Behavior Collection & Analysis 218 | 219 | - [PHP: Piwik](http://piwik.org/): Piwik is an open analytics platform currently used by individuals, companies and governments all over the world. With Piwik, your data will always be yours. Learn why Piwik is the right web analytics tool for you below. 220 | - [Open Web Analytics](http://www.openwebanalytics.com/): Open Web Analytics (OWA) is open source web analytics software that you can use to track and analyze how people use your websites and applications. OWA is licensed under GPL and provides website owners and developers with easy ways to add web analytics to their sites using simple Javascript, PHP, or REST based APIs. 221 | - [Snowplow - the event analytics platform](http://snowplowanalytics.com/): Have every single event, from your websites, mobile apps, desktop applications and server-side systems, stored in your own data warehouse and available to action in real-time. 222 | - [tracking.js](http://trackingjs.com/): The tracking.js library brings different computer vision algorithms and techniques into the browser environment. By using modern HTML5 specifications, we enable you to do real-time color tracking, face detection and much more — all that with a lightweight core (~7 KB) and intuitive interface. 223 | 224 | 225 | ## Workload/Job Management 226 | 227 | - [C++: Apache Mesos](http://mesos.apache.org/): Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively. 228 | - [Scala: Marathon](https://mesosphere.github.io/marathon/): A cluster-wide init and control system for services in cgroups or Docker containers 229 | - [Go: hashicorp/Nomad](https://github.com/hashicorp/nomad): Nomad is a cluster manager, designed for both long lived services and short lived batch processing workloads. Developers use a declarative job specification to submit work, and Nomad ensures constraints are satisfied and resource utilization is optimized by efficient task packing 230 | - [C: SLurm](https://slurm.schedmd.com/overview.html): Slurm is an open source, fault-tolerant, and highly scalable cluster management and job scheduling system for large and small Linux clusters. Slurm requires no kernel modifications for its operation and is relatively self-contained. As a cluster workload manager, Slurm has three key functions. First, it allocates exclusive and/or non-exclusive access to resources (compute nodes) to users for some duration of time so they can perform work. Second, it provides a framework for starting, executing, and monitoring work (normally a parallel job) on the set of allocated nodes. Finally, it arbitrates contention for resources by managing a queue of pending work. 231 | 232 | ## OS Configuration Management 233 | 234 | - [Python: Ansible](http://www.ansible.com/): Deploy apps. Manage systems. Crush complexity. Ansible is a powerful automation tool that you can learn quickly. 235 | - [Python: Fabric](http://www.fabfile.org/): Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. 236 | - [Ruby: Puppet](http://puppetlabs.com/): IT Automation Software of System Administrators 237 | - [Ruby: Capistrano](https://github.com/capistrano/capistrano): Capistrano is a framework for building automated deployment scripts. Although Capistrano itself is written in Ruby, it can easily be used to deploy projects of any language or framework, be it Rails, Java, or PHP. 238 | - [Ruby: Chef](http://www.getchef.com/chef/): Infrastructure as Code 239 | - [Python: SaltStack](http://saltstack.com/): SaltStack software orchestrates and automates the visualization, build and management of any legacy or modern infrastructure. SaltStack is known as the fastest, most scalable systems and configuration management software for CloudOps, ITOps and DevOps. 240 | - [C: CFEngine](http://cfengine.com/): Lightweight agent system. Configuration state is specified via a declarative language. 241 | 242 | ## Terminal 243 | 244 | - [Golang: termui](https://github.com/gizak/termui): Golang terminal dashboard 245 | - [Golang: GoTTY](https://github.com/yudai/gotty): Share your terminal as a web application 246 | - [Golang: s](https://github.com/zquestz/s): Open a web search in your terminal. 247 | 248 | 249 | ## Container 250 | 251 | - Specification 252 | - [Open Containers Initiative](https://github.com/opencontainers) 253 | - Container Linux 254 | - [Coreos](https://coreos.com/os/docs/latest/) 255 | - [RancherOS](http://rancher.com/rancher-os/) 256 | - [Operos](https://www.paxautoma.com/): Complete infrastructure and application management stack for commodity hardware. 257 | - Container 258 | - [Docker](https://www.docker.com/open-source-0) 259 | - [rkt](https://coreos.com/rkt/) 260 | - https://coreos.com/rkt/docs/latest/getting-started-guide.html 261 | - [LXC/LXD](https://linuxcontainers.org/) 262 | - [Hyper](https://hypercontainer.io/) 263 | - [Katacontainers](https://katacontainers.io/): Kata Containers is an open source container runtime, building lightweight virtual machines that seamlessly plug into the containers ecosystem. 264 | - Container Registry 265 | - [Docker Distribution/Registry](https://github.com/docker/distribution): The Docker toolset to pack, ship, store, and deliver content. This repository's main product is the Docker Registry 2.0 implementation for storing and distributing Docker images. It supersedes the docker/docker-registry project with a new API design, focused around security and performance. 266 | - [Habor](https://github.com/vmware/harbor): An enterprise-class container registry server based on Docker Distribution 267 | - [Portus](http://port.us.org/): Authorization service and frontend for Docker registry (v2) 268 | - [$Quary](https://coreos.com/quay-enterprise/) 269 | - Docker Cluster & Container Management Platform 270 | - [Kubernetes](http://kubernetes.io/) 271 | - [Helm](https://github.com/kubernetes/helm): The Kubernetes Package Manager 272 | - [Docker Swarm](https://docs.docker.com/engine/swarm/) 273 | - [Ali Pouch](https://github.com/alibaba/pouch) 274 | - [$Rancher 2.0](https://rancher.com/) 275 | - [$Tectonic](https://coreos.com/tectonic/) 276 | - AI for Container 277 | - [Magalix](https://docs.magalix.cloud/v0.5): Magalix is the autopilot of the cloud. 278 | 279 | ## Virtualization 280 | 281 | - [KVM](https://www.linux-kvm.org/page/Main_Page): KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. 282 | - [QEMU](https://www.qemu.org/): QEMU is a generic and open source machine emulator and virtualizer. 283 | - [xen](https://xenproject.org/): The official Xen Project member organizations include Alibaba / Aliyun, AWS, AMD, Arm, Bitdefender, Cavium, Citrix, Huawei, Intel, Oracle, and Qualcomm. 284 | 285 | ## Serverless 286 | 287 | - [Knative](https://github.com/knative/): Kubernetes-based platform to build, deploy, and manage modern serverless workloads 288 | - [Go: fission](https://github.com/fission/fission): Fast Serverless Functions for Kubernetes 289 | - [Go: OpenFaas](https://github.com/openfaas/faas): Open FaaS 290 | - [Go: fn](https://github.com/fnproject/fn): The container native, cloud agnostic serverless platform. 291 | - [Go: kubeless](https://github.com/kubeless/kubeless): Kubernetes Native Serverless Framework 292 | - [Node: Serverless Framework](https://github.com/serverless/serverless) 293 | - [Apache openwhisk](https://openwhisk.apache.org/) 294 | - [Python: AppScale](https://github.com/AppScale/appscale): AppScale is an easy-to-manage serverless platform for building and running scalable web and mobile applications on any infrastructure. 295 | 296 | ## Misc 297 | 298 | - [vagrantup](https://www.vagrantup.com/): Create and configure lightweight, reproducible, and portable development environments. 299 | - [Buildbot](http://docs.buildbot.net/current/index.html): Buildbot 是一个检查代码变化的自动化编译/ 测试的Python系统 300 | - [tox](https://tox.readthedocs.io/en/latest/): tox aims to automate and standardize testing in Python. It is part of a larger vision of easing the packaging, testing and release process of Python software. 301 | -------------------------------------------------------------------------------- /projects-part-5-gis.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Projects about GIS](#projects-about-gis) 4 | - [Cache](#cache) 5 | - [Geo Database](#geo-database) 6 | - [Computation](#computation) 7 | - [Commercial Products](#commercial-products) 8 | - [Libraries](#libraries) 9 | - [IP2GIS](#ip2gis) 10 | - [Other](#other) 11 | - [SaaS](#saas) 12 | - [GIS Data](#gis-data) 13 | - [参考](#参考) 14 | 15 | 16 | 17 | # Projects about GIS 18 | 19 | ## Cache 20 | 21 | - [Go: Geocache](https://github.com/melihmucuk/geocache): geocache is an in-memory cache that is suitable for geolocation based applications. It uses geolocation as a key for storing items. You can specify range on initialization and thats it! You can store any object, it uses interface. 22 | 23 | ## Geo Database 24 | 25 | - [Gaffer](https://github.com/GovernmentCommunicationsHeadquarters/Gaffer): Gaffer is a framework that makes it easy to store large-scale graphs in which the nodes and edges have statistics such as counts, histograms and sketches. These statistics summarise the properties of the nodes and edges over time windows, and they can be dynamically updated over time. 26 | - [Tile38](https://github.com/tidwall/tile38): Tile38 is a fast geospatial database, spatial index, and realtime geofence. It supports a variety of object types including lat/lon points, bounding boxes, XYZ tiles, Geohashes, and GeoJSON. 27 | 28 | ## Computation 29 | 30 | - [go.geo](https://github.com/paulmach/go.geo): Go.geo is a geometry/geography library in Go. The primary use case is GIS geometry manipulation on the server side vs. in the browser using javascript. This may be motivated by memory, computation time or data privacy constraints. All objects are defined in a 2D context. 31 | 32 | ## Commercial Products 33 | 34 | - [Google Map API](https://developers.google.com/maps/?hl=zh-cn) 35 | - [Amap](http://lbs.amap.com/): 高德开放平台 36 | - [Baidu Map](http://lbsyun.baidu.com/): 百度地图开放平台 37 | - [Mapbox](https://www.mapbox.com/) 38 | 39 | ## Libraries 40 | 41 | - [JTS Topology Suite](http://www.tsusiatsoftware.net/jts/main.html): The JTS Topology Suite is an API of spatial predicates and functions for processing geometry. 42 | - [Geos](http://trac.osgeo.org/geos/): GEOS (Geometry Engine - Open Source) is a C++ port of the ​Java Topology Suite (JTS). 43 | 44 | ## IP2GIS 45 | 46 | - [Geodis](https://github.com/EverythingMe/geodis): Geodis is a simple and fast python module that allows you to convert IP addresses and latitude/longitude coordinates into geographical locations such as cities, zipcodes and countries. 47 | - [GeoIP Update](https://github.com/maxmind/geoipupdate): GeoIP update client code 48 | 49 | ## Other 50 | 51 | - [OpenLayers](https://github.com/openlayers/openlayers): OpenLayers is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. 52 | - [OpenGTS](http://www.opengts.org/): OpenGTS is the first available open source project designed specifically to provide web-based GPS tracking services for a "fleet" of vehicles. 53 | - [GeoServer](http://geoserver.org/): GeoServer is an open source server for sharing geospatial data. 54 | - [GeoTools](http://geotools.org/): GeoTools is an open source Java library that provides tools for geospatial data. 55 | 56 | ## SaaS 57 | 58 | - [百度地图Web服务API](http://lbsyun.baidu.com/index.php?title=webapi) 59 | - [高德地图Web API](https://lbs.amap.com/api/webservice/summary/) 60 | - [经纬度行政区域查询](http://jwd.funnyapi.com/) 61 | 62 | ## GIS Data 63 | 64 | - [GADM](https://gadm.org/index.html): GADM provides maps and spatial data for all countries and their sub-divisions. You can browse our maps or download the data to make your own maps. 65 | - [Open Street Map](http://www.openstreetmap.org/): OpenStreetMap 是一个由地图制作爱好者组成的社区。这些爱好者提供并维护世界各地关于道路、小道、咖啡馆、铁路车站等各种各样的数据。 66 | - [IPIP.net](https://www.ipip.net/): 全球唯一一个基于 BGP/ASN 数据分析处理而得来的实时 Geo-IP 库 67 | 68 | # 参考 69 | 70 | - [ESRI](https://www.esri.com/en-us/home): 美国环境系统技术有限公司 71 | - [What is GIS?](http://www.esri.com/what-is-gis/) 72 | - [Open Source GIS](http://opensourcegis.org/) 73 | - [GIS空间站](http://www.gissky.net/) 74 | - [Spatial database - wikipedia](https://wiki2.org/en/Spatial_database) 75 | - [Java Topology Suite](https://wiki2.org/en/JTS_Topology_Suite) 76 | -------------------------------------------------------------------------------- /projects-part-6-digital-pub.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Projects about Digital Publishing](#projects-about-digital-publishing) 4 | - [Office Document Manipulation](#office-document-manipulation) 5 | - [PDF Manipulation](#pdf-manipulation) 6 | - [Text Manipulation](#text-manipulation) 7 | - [OCR](#ocr) 8 | - [Report](#report) 9 | - [Static Websites Generator](#static-websites-generator) 10 | 11 | 12 | 13 | # Projects about Digital Publishing 14 | 15 | ## Office Document Manipulation 16 | 17 | - [NPOI](https://github.com/tonyqus/npoi): NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。NPOI让.NET平台拥有了一个比较完善的读写Excel的工具。使用量非常广泛,应该是开源的.NET Excel读写工具中曝光度最高的一个吧,没有之一。 18 | - [NPOI扩展—NPOI.CSS](https://github.com/qihangnet/npoi.css): NPOI.CSS是一个可以在使用NPOI时用类CSS的方法设置单元格样式的NPOI扩展,只支持.NET4及以上版本的项目。这个扩展是为了方便在使用的时候设置单元格及其相关格式样式,可以使用类似Css的方式,非常给力。 19 | - [yjinglee.office](https://github.com/YJingLee/yjinglee.office): yjinglee.office用于.Net平台下的Excel操作,主要封装NPOI对外提供更简单实用的API,提供以下功能点:1.读取Excel数据转换成对象集合, 2.写入集合到Excel,并提供可以Excel样式定义 20 | - [Epplus](http://epplus.codeplex.com/): Epplus是一个使用Open Office XML(Xlsx)文件格式,读写Excel 2007/2010文件的开源组件。和NPOI相比,它更早的支持了Xlsx格式,而NPOI支持Excel 2003更好,现在新版本的NPOI也开始支持Xlsx了。支持的范围也很广,例如:单元格合并,单元格样式,图表(这个NPOI目前还不是很好),表格,数据验证,公式,VBA等等。 21 | - [LinqToExcel](https://github.com/paulyoder/LinqToExcel): LinqToExcel是一个.NET平台下开源项目,它主要实现了LINQ的语法查询Excel电子表格。类型之前的LINQToXXX如果你是LINQ语法糖爱好者那最适合你。 22 | - [NetOffice](http://netoffice.codeplex.com/): NetOffice组件比较特别,是一个操作Office的强大组件,包括处理Office, Excel, Word, Outlook, PowerPoint, Access, Project, Visio等,所以支持非常全面。但是这个组件并不是完全单独写的,而是调用Microsoft Office的互操作程序集以及VSTO,也就是进行了一个深度的封装,从而让你不需要安装这些东西,只需要拷贝相应的程序集就可以了。 23 | - [Word文档读写工具Docx](http://docx.codeplex.com/): DocX is a .NET library that allows developers to manipulate Word 2007/2010/2013 files, in an easy and intuitive manor. DocX is fast, lightweight and best of all it does not require Microsoft Word or Office to be installed. 24 | 25 | ## PDF Manipulation 26 | 27 | - [iText](http://itextpdf.com/product/itext): 打开这个[链接](http://itextpdf.com/functionality),图里面已经说得很清楚了。 28 | - [PDFSharp](http://www.pdfsharp.net/): PDFsharp is a .NET library for processing PDF file. You create PDF pages using drawing routines known from GDI+. Almost anything that can be done with GDI+ will also work with PDFsharp. Only basic text layout is supported by PDFsharp, and page breaks are not created automatically. The same drawing routines can be used for screen, PDF, or meta files. 29 | - [MigraDoc](http://www.pdfsharp.net/): MigraDoc is a document generator. It supports almost anything you find in any good word processor. You just add paragraphs, tables, charts, arrange all this in sections, use bookmarks to create links, tables of contents, indexes, etc. MigraDoc will do the layout creating page breaks as needed. MigraDoc will create PDF, XPS, or RTF documents. 30 | - [pdftk server](https://www.pdflabs.com/tools/pdftk-server/): PDFtk Server is our command-line tool for working with PDFs. It is commonly used for client-side scripting or server-side processing of PDFs. 31 | 32 | ## Text Manipulation 33 | 34 | - [文件差异比较diffplex](https://github.com/mmanela/diffplex): diffplex是一个开源的C#文本差异比较软件。支持.NET 4.0, Silverlight 5.0, Windows 8.0, Windows Phone 8.0, Windows Phone Appx 8.1等环境。 35 | 36 | ## OCR 37 | 38 | - [tesseract.js](https://github.com/naptha/tesseract.js): Pure Javascript OCR for 62 Languages 39 | - [paperless](https://github.com/danielquinn/paperless): Scan, index, and archive all of your paper documents 40 | 41 | ## Report 42 | 43 | - [ExcelReport报表引擎](https://github.com/hanzhaoxin/ExcelReport): ExcelReport是一款基于NPOI开发的报表引擎组件。它基于关注点分离的理念,将数据与样式、格式分离。让模板承载样式、格式等NPOI不怎么擅长且实现繁琐的信息,结合NPOI对数据的处理的优点将Excel报表的生成化繁为简。同时,对报表组成的基本元素进行了抽象,进一步简化了Excel报表的生成过程。 44 | - [PDFReport](http://pdfreport.codeplex.com/): PdfReport 是一个支持code-first的报表引擎,建立在开源项目iTextSharp和 EPPlus基础上。支持.net 3.5以上 45 | - [ReportGenerator](https://github.com/danielpalme/ReportGenerator): ReportGenerator可以将OpenCover, PartCover, Visual Studio 或者NCover生成的XML报表转换为可读性更加好的格式。上面这几个工具都是代码覆盖率分析工具。转换后的报表有以下格式:1.HTML, HTMLSummary, 2.XML, XMLSummary, 3.Latex, LatexSummary, 4.TextSummary, 5.Custom reports 46 | - [BusyReports - Advanced Report delivery with SQL Server Reporting Services SSRS](http://busyreports.codeplex.com/): BusyReports is an easy to use application to produce reports from the SSRS web services. It is an alternative to the data driven subscriptions of SQL Server. 47 | - [Seal Report](http://sealreport.codeplex.com/): Seal Report offers a complete framework for producing every day reports and dashboards from any database. 48 | 49 | ## Static Websites Generator 50 | 51 | 更多参考[StaticGen](https://www.staticgen.com/) 52 | 53 | - [Jekyll](http://jekyllrb.com/): Transform your plain text into static websites and blogs. 54 | - [Jekyllcn](http://jekyllcn.com/) 55 | - [Octopress](http://octopress.org/) 56 | - [Hexo](https://hexo.io/): A fast, simple & powerful blog framework 57 | -------------------------------------------------------------------------------- /projects-part-7-security.md: -------------------------------------------------------------------------------- 1 | # Projects About Security 2 | 3 | - [OpenSSH](https://www.openssh.com/) 4 | - [OpenSSL](https://www.openssl.org/) 5 | - [OpenCA](https://www.openca.org/) 6 | 7 | - [gpg4win](https://www.gpg4win.org/): Gpg4win enables users to securely transport emails and files with the help of encryption and digital signatures. Encryption protects the contents against an unwanted party reading it. Digital signatures make sure that it was not modified and comes from a specific sender. 8 | - [gpgsuite](https://gpgtools.org/gpgsuite.html) 9 | - [gnupg](https://gnupg.org/index.html) 10 | 11 | # References 12 | 13 | - [看雪学院](http://www.pediy.com/) 14 | - [Xfocus](http://www.xfocus.net/index.html) 15 | -------------------------------------------------------------------------------- /projects-part-8-iot.md: -------------------------------------------------------------------------------- 1 | # Projects About IoT 2 | 3 | ## MQTT 4 | 5 | - [EMQ](https://www.emqx.io/cn/): Scalable and Reliable Real-time MQTT Message Broker for IoT in 5G Era 6 | 7 | ## IoT Cloud 8 | 9 | - AWS IoT 10 | - Azure IoT 11 | 12 | # 参考 13 | 14 | - [Awesome IoT](https://github.com/HQarroum/awesome-iot) 15 | - [Awesome MQTT](https://github.com/hobbyquaker/awesome-mqtt) 16 | -------------------------------------------------------------------------------- /projects-part-9-ai.md: -------------------------------------------------------------------------------- 1 | # Projects About Artificial Intelligence 2 | 3 | ## 开放平台、API 4 | 5 | - [Baidu AI开放平台](http://ai.baidu.com/) 6 | - [Microsoft Cognitive Services](https://azure.microsoft.com/en-us/services/cognitive-services/?v=17.25c): 微软认知服务 7 | - [OpenAI](https://openai.com/): Discovering and enacting the path to safe artificial general intelligence. 8 | - 自动驾驶 9 | - [Baidu Apollo](http://apollo.auto/): Baidu Apollo开放平台 10 | 11 | ## Framework 12 | 13 | - [Caffe](http://caffe.berkeleyvision.org/): Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by the Berkeley Vision and Learning Center (BVLC) and by community contributors. Yangqing Jia created the project during his PhD at UC Berkeley. Caffe is released under the BSD 2-Clause license. 14 | - [Google Tensorflow](https://github.com/tensorflow/tensorflow): TensorFlow is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) that flow between them. 15 | - [Microsoft DMTK](https://github.com/Microsoft/DMTK): Microsoft Distributed Machine Learning Toolkit 16 | - [Microsoft CNTK](https://github.com/Microsoft/CNTK): CNTK (http://www.cntk.ai/), the Computational Network Toolkit by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph. 17 | - [Amazon MXNet](http://mxnet.io/): A Flexible and Efficient Library for Deep Learning 18 | - [Baidu PaddlePaddle](http://www.paddlepaddle.org/): PArallel Distributed Deep LEarning 19 | - [Tencent: Angel](https://github.com/Tencent/angel): A Flexible and Powerful Parameter Server for large-scale machine learning 20 | - [Python: PyTorch](http://pytorch.org/): Tensors and Dynamic neural networks in Python with strong GPU acceleration. PyTorch is a deep learning framework that puts Python first. 21 | - [Python: Theano](https://github.com/Theano/Theano): Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation. 22 | - [Python: Keras](https://keras.io/): Keras is a high-level neural networks API, written in Python and capable of running on top of either TensorFlow, CNTK or Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research. 23 | - [中文文档](https://keras.io/zh/) 24 | - [Python: Scikit-learn](http://scikit-learn.org/stable/): Machine Learning in Python 25 | 26 | ## Computer Vision 27 | 28 | - [.NET: Accord.NET](http://accord-framework.net/) - Machine learning framework combined with audio and image processing libraries (computer vision, computer audition, signal processing and statistics). 29 | - [.NET: Accord.NET Extensions](https://github.com/dajuric/accord-net-extensions) - Advanced image processing and computer vision algorithms made as fluent extensions. 30 | - [.NET: AForge.NET](http://www.aforgenet.com/) - Framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence (image processing, neural networks, genetic algorithms, machine learning, robotics). 31 | 32 | ## Natural Language Process 33 | 34 | - [Natural Language Toolkit](http://www.nltk.org/): NLTK is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for industrial-strength NLP libraries, and an active discussion forum. 35 | 36 | ## Others 37 | 38 | - [Python: Pandas](http://pandas.pydata.org/): pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language. 39 | - [Aerosolve - Airbnb](http://airbnb.io/aerosolve/): A machine learning package built for humans. 40 | - [golearn](https://github.com/sjwhitworth/golearn): Machine Learning for Go 41 | - [shogun](https://github.com/shogun-toolbox/shogun): The Shogun Machine learning toolbox provides a wide range of unified and efficient Machine Learning (ML) methods. The toolbox seamlessly allows to easily combine multiple data representations, algorithm classes, and general purpose tools. This enables both rapid prototyping of data pipelines and extensibility in terms of new algorithms. We combine modern software architecture in C++ with both efficient low-level computing backends and cutting edge algorithm implementations to solve large-scale Machine Learning problems (yet) on single machines. 42 | - [warp-ctc](https://github.com/baidu-research/warp-ctc): A fast parallel implementation of CTC, on both CPU and GPU. 43 | - [convnetjs](https://github.com/karpathy/convnetjs): Deep Learning in Javascript. Train Convolutional Neural Networks (or ordinary ones) in your browser. 44 | - [Gorgonia](https://github.com/chewxy/gorgonia): Gorgonia is a library that helps facilitate machine learning in Go. Write and evaluate mathematical equations involving multidimensional arrays easily. If this sounds like Theano or TensorFlow, it's because the idea is quite similar. Specifically, the library is pretty low-level, like Theano, but has higher goals like Tensorflow. 45 | - [Gorgonia: Primitives for Building Neural Networks in Go](https://speakerdeck.com/chewxy/gorgonia-primitives-for-building-neural-networks-in-go) 46 | - [deeplearn.js](https://pair-code.github.io/deeplearnjs/): A hardware-accelerated machine intelligence library for the web 47 | 48 | # Trend - 趋势 49 | 50 | - [2016-12-20丨独家丨余凯年度总结,揭开中国人工智能的真实现状](https://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==&mid=2247485043&idx=1&sn=58b53bb0a75719c535658d9db7d173f5&chksm=ec57b1f4db2038e26946909d68c431b66ac613522b1c41aeaad6380553b78968a6f3e11c121d) 51 | - [2017-05-25丨人工智能达到了什么程度?](https://www.zhihu.com/question/46563853/answer/153380355?from=timeline) 52 | - [2017-11-02丨浅谈人工智能:现状、任务、构架与统一丨正本清源](https://mp.weixin.qq.com/s/-wSYLu-XvOrsST8_KEUa-Q) 53 | 54 | # Study Courses 55 | 56 | - 台大教授 李宏毅 《深度学习简介》 57 | - Youtube:https://www.youtube.com/watch?v=0jCr2ioGNG0&t=15s 58 | - 李宏毅深度学习(2017):http://www.bilibili.com/video/av9770302/ 59 | - 文章 60 | - [台大教授李宏毅:1天搞懂深度学习](https://mp.weixin.qq.com/s?__biz=MzIzNzAyNzkxOA==&mid=2650524369&idx=1&sn=5f0872022e24acb5ed1dbb6a5e51187f) 61 | - [台大李宏毅机器学习课程从这里开始](http://blog.csdn.net/soulmeetliang/article/details/77461607) 62 | - 台大林轩田《机器学习的基石》《机器学习技法》 63 | - Bilibili: [机器学习技法](https://www.bilibili.com/video/av12469267/) 64 | - Bilibili: [机器学习基石](https://www.bilibili.com/video/av12463015/) 65 | - 百度云盘: https://yun.baidu.com/share/link?shareid=3977298546&uk=3507350607#list/path=%2F 66 | - 吴恩达 《深度学习专项课程》 [deeplearning.ai](https://www.deeplearning.ai/) 67 | - 网易公开课地址:https://study.163.com/topics/deepLearning/ 68 | - Coursera地址:https://www.coursera.org/specializations/deep-learning 69 | - 评论 70 | - [吴恩达的新深度学习课程什么样?我们试听了一下 | 附视频](https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247487866&idx=3&sn=b61ceb5c7061ab1c768ed5fdf14f783d) 71 | - [AI is the new electricity](https://mp.weixin.qq.com/s/gIV6sNhrURn1Qonet26uIA) 72 | - 吴恩达 《机器学习》 73 | - Coursera地址:https://www.coursera.org/learn/machine-learning 74 | - 明尼苏达大学 Joseph A Konstan 《推荐系统导论》 75 | - Coursera地址:https://www.coursera.org/learn/recommender-systems 76 | - 牛津大学 《Deep Learning for Natural Language Processing》 77 | - https://machinelearningmastery.com/oxford-course-deep-learning-natural-language-processing/ 78 | - [fastai](https://github.com/fastai/fastai): The fast.ai deep learning library, lessons, and tutorials 79 | - 加州理工学院公开课 《机器学习与数据挖掘》 80 | - http://open.163.com/special/opencourse/learningfromdata.html 81 | - [微软人工智能学院](https://school.azure.cn/curriculums/28) 82 | 83 | # Books 84 | 85 | - 《数学之美》:作者吴军大家都很熟悉。以极为通俗的语言讲述了数学在机器学习和自然语言处理等领域的应用。 86 | - 《Programming Collective Intelligence》(《集体智慧编程》):作者Toby Segaran也是《BeautifulData : The Stories Behind Elegant Data Solutions》(《数据之美:解密优雅数据解决方案背后的故事》)的作者。这本书最大的优势就是里面没有理论推导和复杂的数学公式,是很不错的入门书。目前中文版已经脱销,对于有志于这个领域的人来说,英文的pdf是个不错的选择,因为后面有很多经典书的翻译都较差,只能看英文版,不如从这个入手。还有,这本书适合于快速看完,因为据评论,看完一些经典的带有数学推导的书后会发现这本书什么都没讲,只是举了很多例子而已。 87 | - 《Algorithms of the Intelligent Web》(《智能web算法》):作者Haralambos Marmanis、Dmitry Babenko。这本书中的公式比《集体智慧编程》要略多一点,里面的例子多是互联网上的应用,看名字就知道。不足的地方在于里面的配套代码是Bean Shell而不是python或其他。总起来说,这本书还是适合初学者,与上一本一样需要快速读完,如果读完上一本的话,这一本可以不必细看代码,了解算法主要思想就行了。 88 | - 《统计学习方法》:作者李航,是国内机器学习领域的几个大家之一,曾在MSRA任高级研究员,现在华为诺亚方舟实验室。书中写了十个算法,每个算法的介绍都很干脆,直接上公式,是彻头彻尾的“干货书”。每章末尾的参考文献也方便了想深入理解算法的童鞋直接查到经典论文;本书可以与上面两本书互为辅助阅读。 89 | - 《Machine Learning》(《机器学习》):作者Tom Mitchell是CMU的大师,有机器学习和半监督学习的网络课程视频。这本书是领域内翻译的较好的书籍,讲述的算法也比《统计学习方法》的范围要大很多。据评论这本书主要在于启发,讲述公式为什么成立而不是推导;不足的地方在于出版年限较早,时效性不如PRML。但有些基础的经典还是不会过时的,所以这本书现在几乎是机器学习的必读书目。 90 | 91 | 参考: 92 | 93 | - [机器学习,数据挖掘的书有哪些?](https://www.zhihu.com/question/20955741) 94 | 95 | # References 96 | 97 | - [NoSQL Database](http://nosql-database.org/) 98 | - [我爱机器学习 - 机器学习干货站](http://www.52ml.net/) 99 | - [我爱自然语言处理](http://www.52nlp.cn/) 100 | -------------------------------------------------------------------------------- /python-learning-notes.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [如何搭建开发环境](#%e5%a6%82%e4%bd%95%e6%90%ad%e5%bb%ba%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83) 4 | - [安装Python](#%e5%ae%89%e8%a3%85python) 5 | - [使用pyenv管理多个版本的python](#%e4%bd%bf%e7%94%a8pyenv%e7%ae%a1%e7%90%86%e5%a4%9a%e4%b8%aa%e7%89%88%e6%9c%ac%e7%9a%84python) 6 | - [包管理机制](#%e5%8c%85%e7%ae%a1%e7%90%86%e6%9c%ba%e5%88%b6) 7 | - [安装pipenv](#%e5%ae%89%e8%a3%85pipenv) 8 | - [编译运行](#%e7%bc%96%e8%af%91%e8%bf%90%e8%a1%8c) 9 | - [以交互方式执行Python代码](#%e4%bb%a5%e4%ba%a4%e4%ba%92%e6%96%b9%e5%bc%8f%e6%89%a7%e8%a1%8cpython%e4%bb%a3%e7%a0%81) 10 | - [运行Python代码脚本](#%e8%bf%90%e8%a1%8cpython%e4%bb%a3%e7%a0%81%e8%84%9a%e6%9c%ac) 11 | - [打包和发布](#%e6%89%93%e5%8c%85%e5%92%8c%e5%8f%91%e5%b8%83) 12 | - [关注的Python Module](#%e5%85%b3%e6%b3%a8%e7%9a%84python-module) 13 | - [Math](#math) 14 | - [Software Test](#software-test) 15 | - [Network](#network) 16 | - [Development Framework](#development-framework) 17 | - [RESTful API Client](#restful-api-client) 18 | - [Natural Language Processing](#natural-language-processing) 19 | - [Language](#language) 20 | - [IoT](#iot) 21 | - [学习书籍](#%e5%ad%a6%e4%b9%a0%e4%b9%a6%e7%b1%8d) 22 | - [参考](#%e5%8f%82%e8%80%83) 23 | 24 | 25 | 26 | # 如何搭建开发环境 27 | 28 | 以Mac OS X为例 29 | 30 | ## 安装Python 31 | 32 | (参考了[Python Setup and Usage](https://docs.python.org/2/using/index.html)上的Macintosh下的安装说明) 33 | 34 | Mac OS X Yosemite自带Python 2.7.6,安装在`/System/Library/Frameworks/Python.framework`和`/usr/bin/python`目录下,它们是Apple控制的,由Apple或者第三方的应用程序使用,请不要修改或者删除。 35 | 36 | 如果要安装最新版本的Python,参考下面的步骤操作: 37 | 38 | - 先安装Homebrew,安装方法见[brew的官网](http://brew.sh/)。 39 | - `brew install python`: 安装Python 3 40 | - `brew install python@2`: 安装Python 2 41 | 42 | ### 使用pyenv管理多个版本的python 43 | 44 | pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well. 45 | 46 | pyenv does... 47 | 48 | - Let you change the global Python version on a per-user basis. 49 | - Provide support for per-project Python versions. 50 | - Allow you to override the Python version with an environment variable. 51 | - Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox. 52 | 53 | 54 | 安装 pyenv: 55 | 56 | ```sh 57 | > brew update 58 | > brew install pyenv 59 | ``` 60 | 61 | 如何使用见 https://github.com/pyenv/pyenv 62 | 63 | 64 | ## 包管理机制 65 | 66 | 请先阅读一下文档: 67 | 68 | - [docs.python.org - Installing Python Modules](https://docs.python.org/3/installing/index.html) 69 | - [Pipenv: Python Dev Workflow for Humans](https://docs.pipenv.org/): the officially recommended Python packaging tool 70 | - [使用pipenv管理你的项目](http://www.dongwm.com/archives/%E4%BD%BF%E7%94%A8pipenv%E7%AE%A1%E7%90%86%E4%BD%A0%E7%9A%84%E9%A1%B9%E7%9B%AE/) 71 | 72 | 建议在项目中使用以下包管理工具: 73 | 74 | - [pip](https://pip.pypa.io/en/stable/index.html): The PyPA recommended tool for installing Python packages 75 | - [pypi](https://pypi.org/): Python Package Index 76 | - [pipenv](https://github.com/pyenv/pyenv) 77 | 78 | ### 安装pipenv 79 | 80 | Pipenv — the officially recommended Python packaging tool from Python.org, free (as in freedom). 81 | 82 | Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a first–class citizen, in our world. 83 | 84 | 安装 pipenv: 85 | 86 | ```sh 87 | brew install pipenv 88 | ``` 89 | 90 | 如何使用见 https://github.com/pypa/pipenv 91 | 92 | 93 | ## 编译运行 94 | 95 | ### 以交互方式执行Python代码 96 | 97 | 在Terminal中输入"Python",然后输入Python命令运行: 98 | 99 | ```sh 100 | > python 101 | Python 3.6.5 (default, Apr 10 2018, 13:04:44) 102 | [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin 103 | Type "help", "copyright", "credits" or "license" for more information. 104 | >>> 105 | ``` 106 | 107 | ### 运行Python代码脚本 108 | 109 | 可以像如下方式运行Python脚本: 110 | 111 | ```sh 112 | python [-BdEiOQsRStuUvVWxX3?] [-c command | -m module-name | script | - ] [args] 113 | ``` 114 | 115 | 常见的情况是直接运行Python脚本: 116 | 117 | ```sh 118 | python myscript.py 119 | ``` 120 | 121 | Python命令运行参数见[Command line and environment](https://docs.python.org/2/using/cmdline.html) 122 | 123 | 124 | ## 打包和发布 125 | 126 | 参考: 127 | 128 | - [Python如何连同依赖打包发布以及python的构建工具?](http://www.zhihu.com/question/21639330) 129 | - [Python应用发布技术](http://wiki.woodpecker.org.cn/moin/PyExe) 130 | - [Python打包指南](http://www.ibm.com/developerworks/cn/opensource/os-pythonpackaging/) 131 | 132 | 133 | ------------------------ 134 | 135 | # 关注的Python Module 136 | 137 | 参考: 138 | 139 | - [the index of python popular modules](http://www.programcreek.com/python/index/module/list) 140 | - [The Most Popular Scientific Python Modules](http://www.s-anand.net/blog/the-most-popular-scientific-python-modules/) 141 | - [Python: 50 modules for all needs](http://www.catswhocode.com/blog/python-50-modules-for-all-needs) 142 | 143 | ## Math 144 | 145 | - [Scipy](https://github.com/scipy/scipy): SciPy (pronounced "Sigh Pie") is open-source software for mathematics, science, and engineering. It includes modules for statistics, optimization, integration, linear algebra, Fourier transforms, signal and image processing, ODE solvers, and more. 146 | - [NumPy](http://www.numpy.org): NumPy is the fundamental package for scientific computing with Python. 147 | 148 | ## Software Test 149 | 150 | - [pyunit](http://pyunit.sourceforge.net/pyunit.html): Python Unit Testing Framework 151 | - [ROBOT FRAMEWORK](http://robotframework.org): Robot Framework is a generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). 152 | - [Twill](https://pypi.python.org/pypi/twill): A scripting system for automating Web browsing. Useful for testing Web pages or grabbing data from password-protected sites automatically. 153 | - [Ghost.py](https://github.com/jeanphix/Ghost.py): Webkit based scriptable web browser for python. 154 | 155 | ## Network 156 | 157 | - [Twisted](https://pypi.python.org/pypi/Twisted): An event-driven networking engine for Python. Twisted implements a variety of networking and communication protocols and exposes them all as method-calls on your Python objects. Client and server implementations are provided for various standard protocols, including: 158 | - HTTP (twisted.web) 159 | - IMAP, POP, SMTP (twisted.mail) 160 | - DNS (twisted.names) 161 | - TLS (core) 162 | - SSH, Telnet (twisted.conch) 163 | - IRC, XMPP, OSCAR (twisted.words) 164 | - Ethernet, IP, TUN/TAP (twisted.pair) 165 | - NMEA (twisted.positioning) 166 | - [mitmproxy](https://mitmproxy.org/index.html): An interactive console program that allows traffic flows to be intercepted, inspected, modified and replayed. 167 | 168 | ## Development Framework 169 | 170 | - [django](https://www.djangoproject.com): Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source. 171 | - [tornado](https://github.com/tornadoweb/tornado): Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user. 172 | - [web.py](http://webpy.org): web.py is a web framework for Python that is as simple as it is powerful. web.py is in the public domain; you can use it for whatever purpose with absolutely no restrictions. 173 | - [Bottle](http://bottlepy.org/docs/dev/index.html): Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library. 174 | - [Flask](http://flask.pocoo.org): Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. And before you ask: It's BSD licensed! 175 | - [eve](http://python-eve.org/index.html): Python REST API Framework 176 | 177 | ## RESTful API Client 178 | 179 | - [RestClient](https://github.com/timothycrosley/RestClient): A Simple RestClient for Python - Works With AppEngine 180 | - [dRest](http://drest.readthedocs.org/en/latest/): dRest is a configurable HTTP/REST client library for Python. It’s goal is to make the creation of API clients dead simple, without lacking features. 181 | - [crest](https://github.com/RussellLuo/crest): A simple REST client for Python. 182 | - [restle](https://github.com/consbio/restle): Restle (pronounced like "wrestle") helps you create client interfaces for REST resources. If you've used the Django ORM or other relation mappers, the syntax should look familiar. 183 | 184 | ## Natural Language Processing 185 | 186 | - [spaCy](http://spacy.io): spaCy is a library for industrial-strength natural language processing in Python and Cython. It features state-of-the-art speed and accuracy, a concise API, and great documentation. 187 | 188 | ## Language 189 | 190 | - [Pypy](http://pypy.org/index.html): PyPy is a fast, compliant alternative implementation of the Python language (2.7.9 and 3.2.5). It has several advantages and distinct features: Speed, Memory usage, Compatibility, Stackless, as well as other features. 191 | - [PyPy 为什么会比 CPython 还要快?](http://www.zhihu.com/question/19588346) 192 | - [Differences between PyPy and CPython](http://pypy.readthedocs.org/en/latest/cpython_differences.html) 193 | 194 | ## IoT 195 | 196 | - [Home Assistant](https://home-assistant.io): Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Installation in less than a minute. 197 | 198 | 199 | ------------------------ 200 | 201 | # 学习书籍 202 | 203 | - [Learning Python](http://book.douban.com/subject/3988517/):深入的探讨了Python编程的基本知识。它集中研究Python语言的核心,并且其主题是阅读下面一本书的的前提条件。 204 | - [Programming Python](http://book.douban.com/subject/4893005/):涉及Python 在现实世界编程任务中的应用。这本书关注程序库和工具,并且认为你已经了解Python的基础知识。 205 | - [Python Pocket Reference](http://book.douban.com/subject/4074478/):上面两本书没有详尽列出的细节提供快速参考。虽然讲的不多,但可以帮助快速查找细节。 206 | - [Python Cookbook](http://book.douban.com/subject/4828875/):本书介绍了Python应用在各个领域中的一些使用技巧和方法,从最基本的字符、文件序列、字典和排序,到进阶的面向对象编程、数据库和数据持久化、 XML处理和Web编程,再到比较高级和抽象的描述符、装饰器、元类、迭代器和生成器,均有涉及。书中还介绍了一些第三方包和库的使用,包括 Twisted、GIL、PyWin32等。本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。书中的代码和方法具有很强的实用性,可以方便地应用到实际的项目中,并产生立竿见影的效果。尤为难得的是,本书的各位作者都具有丰富的业界实践经验,因此,本书不仅给出了对各种问题的解决方案,同时还体现了很多专家的思维方式和良好的编程习惯,与具体的细节性知识相比,这部分内容无疑是本书的精华。本书适合具有一定Python基础的读者阅读参考。 207 | - [Dive to Python](http://www.diveintopython.net/):([中文版](http://woodpecker.org.cn/diveintopython/index.html)), “Dive Into Python” is a free Python book for experienced programmers 208 | - [Dive to Python 3](http://www.diveintopython3.net/):Dive Into Python 3 covers Python 3 and its differences from Python 2. Compared to Dive Into Python, it’s about 20% revised and 80% new material. 209 | - [Python源码剖析](http://book.douban.com/subject/3117898/):作为主流的动态语言,Python不仅简单易学、移植性好,而且拥有强大丰富的库的支持。此外,Python强大的可扩展性,让开发人员既可以非常容易地利用C/C++编写Python的扩展模块,还能将Python嵌入到C/C++程序中,为自己的系统添加动态扩展和动态编程的能力。为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Python的运行原理都是非常重要的。本书以CPython为研究对象,在C代码一级,深入细致地剖析了Python的实现。书中不仅包括了对大量Python内置对象的剖析,更将大量的篇幅用于对Python虚拟机及Python高级特性的剖析。通过此书,读者能够透彻地理解Python中的一般表达式、控制结构、异常机制、类机制、多线程机制、模块的动态加载机制、内存管理机制等核心技术的运行原理,同时,本书所揭示的动态语言的核心技术对于理解其他动态语言,如 Javascript、Ruby等也有较大的参考价值。本书适合于Python程序员、动态语言爱好者、C程序员阅读 210 | - [Foundations of Python Network Programming](https://github.com/brandon-rhodes/fopnp) 211 | - [Programming Computer Vision with Python](http://book.douban.com/subject/10574101/):《python计算机视觉编程》是计算机视觉编程的权威实践指南,依赖python语言讲解了基础理论与算法,并通过大量示例细致分析了对象识别、基于内容的图像搜索、光学字符识别、光流法、跟踪、三维重建、立体成像、增强现实、姿态估计、全景创建、图像分割、降噪、图像分组等技术。另外,书中附带的练习还能让读者巩固并学会应用编程知识。《python计算机视觉编程》适合的读者是:有一定编程与数学基础,想要了解计算机视觉的基本理论与算法的学生,以及计算机科学、信号处理、物理学、应用数学和统计学、神经生理学、认知科学等领域的研究人员和从业者。 212 | - [Natural Language Processing with Python](http://book.douban.com/subject/5336893/):提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在本书中,你将学会编写Python程序处理大量非结构化文本。你还将通过使用综合语言数据结构访问含有丰富注释的数据集,理解用于分析书面通信内容和结构的主要算法。 213 | - [Text Processing in Python](http://gnosis.cx/TPiP/): IBM dW Python 专栏作家 David Mertz 的作品,主页上有免费的在线版本和补充资料。 214 | - [某位读者关于 High Order Functions 的若干笔记](http://wiki.python.org/moin/TextProcessingInPython) 215 | 216 | 217 | ------------------------ 218 | 219 | # 参考 220 | 221 | - [Awesome-python](https://github.com/vinta/awesome-python) 222 | - [Community for Python Developer](http://www.oss.io/Python/top-projects) 223 | - 官方资源 224 | - [官方站点](https://www.python.org/) 225 | - [Python 3.x文档](https://docs.python.org/3/) 226 | - [Python 2.x文档](https://docs.python.org/2/) 227 | - [Python的包索引](https://pypi.python.org/pypi) 228 | - [Python Wiki](https://wiki.python.org/moin/FrontPage) 229 | - 多个版本的Python运行环境 230 | - [pyenv](https://github.com/pyenv/pyenv): pyenv lets you easily switch between multiple versions of Python 231 | - [使用 pyenv 管理 Python 版本](http://einverne.github.io/post/2017/04/pyenv.html) 232 | - [Better Python version and environment management with pyenv](http://fgimian.github.io/blog/2014/04/20/better-python-version-and-environment-management-with-pyenv/) 233 | - [Ultimate Solution to Python Virtual Environments: pyenv + virtualenvwrapper](https://alysivji.github.io/setting-up-pyenv-virtualenvwrapper.html) 234 | - [virtualenv](https://github.com/pypa/virtualenv): a tool to create isolated Python environments 235 | - [使用pipenv管理你的项目](https://mp.weixin.qq.com/s/uHDqRSDjsvfOmH1wpEH7SQ) 236 | - [What is the difference between venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv, etc?](https://stackoverflow.com/questions/41573587/what-is-the-difference-between-venv-pyvenv-pyenv-virtualenv-virtualenvwrappe) 237 | 238 | -------------------------------------------------------------------------------- /system-design-reference.md: -------------------------------------------------------------------------------- 1 | - [介绍](#%e4%bb%8b%e7%bb%8d) 2 | - [工具](#%e5%b7%a5%e5%85%b7) 3 | - [UI/UE设计](#uiue%e8%ae%be%e8%ae%a1) 4 | - [System Architecture Design 软件架构设计](#system-architecture-design-%e8%bd%af%e4%bb%b6%e6%9e%b6%e6%9e%84%e8%ae%be%e8%ae%a1) 5 | - [项目管理](#%e9%a1%b9%e7%9b%ae%e7%ae%a1%e7%90%86) 6 | - [文档编写](#%e6%96%87%e6%a1%a3%e7%bc%96%e5%86%99) 7 | - [其它工具](#%e5%85%b6%e5%ae%83%e5%b7%a5%e5%85%b7) 8 | - [参考](#%e5%8f%82%e8%80%83) 9 | 10 | # 介绍 11 | 12 | 本文档介绍如何使用各种软件需求和设计工具,帮助更方便、准确的定义软件需求、架构。 13 | 14 | # 工具 15 | 16 | ## UI/UE设计 17 | 18 | - [Axure RP](http://www.axure.com) 19 | - [Online Training for Axure RP](http://www.axure.com/learn) 20 | - [Balsamiq Mockups](https://balsamiq.com/products/mockups/) 21 | - [Mockups to Go](https://mockupstogo.mybalsamiq.com/projects) 22 | - [Sketch](http://www.sketchapp.com) 23 | - [Sketch中文网](http://sketchcn.com) 24 | - [Invision](https://projects.invisionapp.com) 25 | 26 | ## System Architecture Design 软件架构设计 27 | 28 | - Diagram 29 | - [Microsoft Visio](https://products.office.com/en-us/visio/) 30 | - [Microsoft Azure, Cloud and Enterprise Symbol / Icon Set](http://www.microsoft.com/en-us/download/details.aspx?id=41937): 介绍见[这里](http://www.microsofttrends.com/2014/05/30/new-official-microsoft-azure-visio-stencil/) 31 | - [OmniGraffle](https://www.omnigroup.com/omnigraffle) 32 | - [OmniGraffle Introduction Video](https://www.omnigroup.com/video/omnigraffle/) 33 | - [OmniGraffle Manuals](https://support.omnigroup.com/omnigraffle) 34 | - [Sybase PowerDesginer](http://www.sap.com/pc/tech/database/software/model-driven-architecture/index.html) 35 | - [SAP PowerDesigner Community](http://scn.sap.com/community/powerdesigner) 36 | - [Enterprise Architect](http://www.sparxsystems.com.au) 37 | - [Resources & Tutorials](http://www.sparxsystems.com.au/resources/index.html) 38 | - RESTful API Design 39 | - [Swagger](http://swagger.io): Swagger is a simple yet powerful representation of your RESTful API. 40 | - [RAML](http://raml.org): RESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle from design to sharing. It's concise - you only write what you need to define - and reusable. It is machine readable API design that is actually human friendly. 41 | - [apiblueprint](https://apiblueprint.org): A powerful high-level API design language for web APIs. 42 | - API Docs Generation 43 | - [slate](https://github.com/tripit/slate): Beautiful static documentation for your API 44 | - [jsdoc](https://github.com/jsdoc3/jsdoc): An API documentation generator for JavaScript 45 | - [Sandcastle](https://github.com/EWSoftware/SHFB): Sandcastle Help File Builder similar to NDoc 46 | 47 | ## 项目管理 48 | 49 | - [Microsoft Project](https://products.office.com/en-us/project/project-and-portfolio-management-software) 50 | - [Mindjet Mindmanager](https://www.mindjet.com) 51 | - [Resources](https://www.mindjet.com/resources/) 52 | - [模板](http://www.mindmanager.cc/muban/) 53 | - [Github Issues](https://help.github.com/categories/managing-projects/) 54 | - [waffle](https://waffle.io): A online board of your github project Issues 55 | 56 | 57 | ## 文档编写 58 | 59 | - [PlantUML](http://plantuml.com) 60 | - [Graphviz](http://www.graphviz.org) 61 | - [gravizo](http://gravizo.com/): Gravizo uses Graphviz to render graphs. It supports DOT, PlantUML, UMLGraph syntax and SVG in JSON format. 62 | - 文章: 63 | - [How to include graphviz graphs in github README.md](https://github.com/TLmaK0/gravizo) 64 | - [Markdown](http://daringfireball.net/projects/markdown/) 65 | - [MacDown](http://macdown.uranusjr.com) 66 | - [typora](http://typora.io) 67 | - [Mathjax](https://www.mathjax.org/) 68 | - [LaTeX](http://www.latex-project.org) 69 | - [MacTeX](http://www.tug.org/mactex/index.html) 70 | 71 | ## 其它工具 72 | 73 | - [Alfred](http://www.alfredforum.com) 74 | - [Packal](http://www.packal.org) 75 | - [Alfred Workflow](http://alfredworkflow.com) 76 | - 文章 77 | - [借助Alfred 2的Workflows功能可以做哪些好玩的事情?](http://www.zhihu.com/question/20656680) 78 | 79 | # 参考 80 | 81 | - [Modeling Languages](https://modeling-languages.com/) 82 | - [Goal Structuring Notation](http://www.goalstructuringnotation.info/) 83 | - [Astah blog](https://astahblog.com/) 84 | - [Workflow Patterns](http://www.workflowpatterns.com/) 85 | - [petri net](https://www.wikiwand.com/en/Petri_net) 86 | - [Modeling Workflow with Petri-Nets](http://pages.di.unipi.it/ferrari/CORSI/SISD/Lezioni/WFModel.pdf) 87 | -------------------------------------------------------------------------------- /tech-conference.md: -------------------------------------------------------------------------------- 1 | # Microsoft 2 | 3 | - Microsoft Build 2015, 2015-04-29 ~ 2015-05-01, The Moscone Center, San Francisco, CA: 4 | - [视频 in Channel 9](https://channel9.msdn.com/events/build/2015?Media=true&wt.mc_id=build_hp) 5 | - [国内视频镜像访问地址](http://boolan.com/build) 6 | - Microsoft Build 2014, 2014-04-02 ~ 2014-04-04, The Moscone Center, San Francisco, CA: 7 | - [PPT下载地址](http://wenku.it168.com/wenji/2096) 8 | - Microsoft Ignite China 2015 9 | - [视频访问地址](https://channel9.msdn.com/Events/Ignite/Microsoft-Ignite-China-2015) 10 | 11 | # Oreilly Velocity Web性能和运维大会 12 | 13 | - [Oreilly Velocity, 2015-08-11 ~ 2015-08-12, Beijing](http://velocity.oreilly.com.cn/2015/) 14 | - [Oreilly Velocity, 2014-08-12 ~ 2014-08-13, Beijing](http://velocity.oreilly.com.cn/2014/) 15 | - [Oreilly Velocity, 2013-08-20 ~ 2013-08-21, Beijing](http://velocity.oreilly.com.cn/2013/) 16 | - [Oreilly Velocity, 2012-09-04 ~ 2012-09-05, Beijing](http://velocity.oreilly.com.cn/2012/) 17 | - [Oreilly Velocity, 2011-12-06 ~ 2012-12-07, Beijing](http://velocity.oreilly.com.cn/2011/) 18 | - [Oreilly Velocity, 2010-12-07 ~ 2012-12-08, Beijing](http://velocity.oreilly.com.cn/2010/) 19 | 20 | # Oreilly Strata Conference 21 | 22 | - [Strata 2015, 02-17 ~ 02-20, Santa Clara, CA](http://strataconf.com/strata2015) 23 | - [Strata 2014, 02-18 ~ 02-20, Santa Clara, CA](http://strataconf.com/strata2014) 24 | - [Strata 2013, 02-26 ~ 02-28, Santa Clara, CA](http://strataconf.com/strata2013) 25 | - [Strata 2012, 02-28 ~ 03-31, Santa Clara, CA](http://strataconf.com/strata2012) 26 | 27 | # VLDB 28 | 29 | A premier annual international forum for data management and database researchers, vendors, practitioners, application developers, and users. 30 | 31 | - [vldb, 2015-08-31 ~ 2015-09-04, Hawai'i, US](http://vldb.org/2015/) 32 | - [vldb, 2014-09-01 ~ 2014-09-05, Hangzhou, China](http://vldb.org/2014/) 33 | - [vldb, 2013-08-26 ~ 2013-08-30, Riva del Garda, Italy](http://vldb.org/2013/) 34 | 35 | # 中国大数据技术大会 36 | 37 | - [2014-12-12 ~ 2014-12-14, Beijing](http://bdtc2014.hadooper.cn/m/zone/bdtc_2014) 38 | - [2013-12-05 ~ 2013-12-06, Beijing](http://tech.163.com/special/bdtc2013/) 39 | 40 | PPT: 41 | 42 | - [六届中国大数据技术大会PPT精粹(一)](http://www.csdn.net/article/2013-10-12/2817162-BDTC_PPT_review_part_1) 43 | - [六届中国大数据技术大会PPT精粹(二)](http://www.tuicool.com/articles/mYJrqy) 44 | - [六届中国大数据技术大会PPT精粹(三)](http://www.tuicool.com/articles/Uzeqyi) 45 | 46 | # 中国系统架构师大会 47 | 48 | - [SACC2015, 10-22 ~ 10-24, Beijing](http://sacc.it168.com/) 49 | - SACC2014 50 | - [PPT](http://wenku.it168.com/wenji/2330) 51 | - SACC2013 52 | - [PPT](http://wenku.it168.com/wenji/595) 53 | - SACC2012 54 | - [PPT](http://topic.it168.com/factory/2012sacc/) 55 | 56 | # InfoQ Qcon 57 | 58 | - [2015, 10-15 ~ 10-17, Shanghai](http://2015.qconshanghai.com/) 59 | - [2015, 04-23 ~ 04-25, Beijing](http://2015.qconbeijing.com/) 60 | - [2014, 10-16 ~ 10-18, Shanghai](http://2014.qconshanghai.com/) 61 | - [2014, 04-25 ~ 04-27, Beijing](http://2014.qconbeijing.com/) 62 | 63 | # InfoQ ArchSummit 64 | 65 | - [2015, 07-17 ~ 07-18, Shenzhen](http://sz2015.archsummit.com/) 66 | - [2014, 12-19 ~ 12-20, Beijign](http://bj2014.archsummit.com/) 67 | 68 | -------------------------------------------------------------------------------- /webdev-learning-notes.md: -------------------------------------------------------------------------------- 1 | - [Books that I Have Read](#books-that-i-have-read) 2 | - [Specifications](#specifications) 3 | - [Guide](#guide) 4 | - [Language Usage Guide](#language-usage-guide) 5 | - [Coding Style Guide](#coding-style-guide) 6 | - [Web Development Guide](#web-development-guide) 7 | - [Blog](#blog) 8 | - [Learning Resources](#learning-resources) 9 | - [Basic Projects](#basic-projects) 10 | - [Related Languages](#related-languages) 11 | - [Framework](#framework) 12 | - [Compiler](#compiler) 13 | - [Runtime](#runtime) 14 | - [Profiling](#profiling) 15 | - [Debug](#debug) 16 | - [Package Manager](#package-manager) 17 | - [Module Loader](#module-loader) 18 | - [Build \& Scaffolding](#build--scaffolding) 19 | - [Documentation](#documentation) 20 | - [Log](#log) 21 | - [Test](#test) 22 | - [Network](#network) 23 | - [RPC](#rpc) 24 | - [Basic Libs](#basic-libs) 25 | - [Websocket](#websocket) 26 | - [Async \& Promise](#async--promise) 27 | - [Concurrency](#concurrency) 28 | - [Terminal](#terminal) 29 | - [Yaml](#yaml) 30 | - [Stream](#stream) 31 | - [Shim](#shim) 32 | - [Web Framework](#web-framework) 33 | - [Job Schedule](#job-schedule) 34 | - [Desktop](#desktop) 35 | - [Mobile Hybrid framework](#mobile-hybrid-framework) 36 | - [Process Supervisor](#process-supervisor) 37 | - [Tools](#tools) 38 | - [Web Templates](#web-templates) 39 | - [Others](#others) 40 | - [References](#references) 41 | - [FAQ](#faq) 42 | 43 | # Books that I Have Read 44 | 45 | - [Node入门](http://www.nodebeginner.org/index-zh-cn.html) 46 | - [Node Production Practice](https://www.joyent.com/node-js/production) 47 | - [Practical Node.js](https://github.com/azat-co/practicalnode) 48 | 49 | -------------------------------- 50 | 51 | # Specifications 52 | 53 | Community: 54 | 55 | - [W3C](https://www.w3.org/) 56 | - [China W3C](http://www.chinaw3c.org) 57 | 58 | Web: 59 | 60 | - [HTML](https://html.spec.whatwg.org/multipage/) 61 | - [CSS Specifications](https://www.w3.org/Style/CSS/specs.en.html) 62 | - JavaScript 63 | - [ECMAScript Specification List](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Language_Resources): : Standard of JavaScript 64 | - [Wikipedia: ECMAScript](https://wiki2.org/en/ECMAScript) 65 | - SVG 66 | - WebGL 67 | - Canvas 68 | - [Web Assembly](http://webassembly.org/): WebAssembly is currently being designed as an open standard by a W3C Community Group that includes representatives from all major browsers. 69 | 70 | Network Communication: 71 | 72 | - HTTP 73 | - [HTTP/2 Protocol](http://http2.github.io/): HTTP/2 is a replacement for how HTTP is expressed “on the wire.” It is not a ground-up rewrite of the protocol; HTTP methods, status codes and semantics are the same, and it should be possible to use the same APIs as HTTP/1.x (possibly with some small additions) to represent the protocol. 74 | - [HTTP/2 explained](http://http2-explained.readthedocs.org/en/latest/index.html): http2 explained describes the protocol HTTP/2 at a technical and protocol level. Background, the protocol, the implementations and the future. Written by Daniel Stenberg. 75 | - [HTTP 1.1 Protocol](http://www.w3.org/Protocols/): Hypertext Transfer Protocol 1.1 Specification 76 | - WebSocket 77 | - [MDN - WebSockets](https://developer.mozilla.org/zh-CN/docs/WebSockets) 78 | - [HTML Living Standard - WebSocket](https://html.spec.whatwg.org/multipage/comms.html#network): this specification introduces the WebSocket interface 79 | - [RFC 6455 - The WebSocket Protocol](http://tools.ietf.org/html/rfc6455): The WebSocket Protocol 80 | - JSON 81 | - [JSON](http://json.org): JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. 82 | - [JSON API](http://jsonapi.org/): A SPECIFICATION FOR BUILDING APIS IN JSON. 83 | - [JSON Schema & JSON Hyper-Schema](http://json-schema.org): JSON Schema: describes your JSON data format; JSON Hyper-Schema: turns your JSON data into hyper-text. 84 | 85 | 86 | -------------------------------- 87 | 88 | # Guide 89 | 90 | ## Language Usage Guide 91 | 92 | - General 93 | - [MDN - Mozilla Developer Network](https://developer.mozilla.org/en-US/) 94 | - JavaScript 95 | - [ECMAScript 6 入门](http://es6.ruanyifeng.com) 96 | - [深入浅出ES6](http://www.infoq.com/cn/minibooks/ES6-in-Depth) 97 | - [es6-cheatsheet](https://github.com/DrkSephy/es6-cheatsheet) 98 | - [The Modern JavaScript Tutorial](https://javascript.info/) 99 | - [You Dont Know JS](https://github.com/getify/You-Dont-Know-JS) 100 | - [You-Dont-Need-Lodash-Underscore](https://github.com/cht8687/You-Dont-Need-Lodash-Underscore) 101 | - [You Don't Need jQuery](https://github.com/oneuijs/You-Dont-Need-jQuery) 102 | - NodeJS 103 | - [Official Document](https://nodejs.org/en/docs/) 104 | - [Changelog](https://github.com/nodejs/node/blob/master/CHANGELOG.md) 105 | - [Microsoft + Node.js Guidelines](https://github.com/Microsoft/nodejs-guidelines) 106 | - [Tools and techniques we use at Joyent to operate Node.js in production](https://www.joyent.com/developers/node) 107 | - [The Art of Node](https://github.com/maxogden/art-of-node) 108 | - [faster-than-c](https://github.com/felixge/faster-than-c) 109 | 110 | ## Coding Style Guide 111 | 112 | - JavaScript Coding Standard 113 | - [JavaScript Standard Style](https://github.com/feross/standard) 114 | - [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) 115 | - [Google JavaScript Style Guide](https://google.github.io/styleguide/javascriptguide.xml) 116 | - [A JavaScript Quality Guide](https://github.com/bevacqua/js) 117 | - 如何写javascript代码注释 118 | - http://css.dzone.com/articles/introduction-jsdoc 119 | - http://usejsdoc.org/ 120 | - Html/CSS Coding Standard 121 | - [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.xml) 122 | 123 | ## Web Development Guide 124 | 125 | - [Google Developers - Web](https://developers.google.com/web/): The average user visits more than 100 websites on their mobile device every month, and expectations for speed and quality higher than ever. These resources can help you supercharge your new or existing project with the next generation of web technologies in order to deliver fast, secure, and performant content to any screen. 126 | - [Front-end-Developer-Interview-Questions](https://github.com/h5bp/Front-end-Developer-Interview-Questions): A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore. 127 | - [Mars - mobile needs a hero](https://github.com/AlloyTeam/Mars): 面向亿万用户级的移动端Web解决方案 128 | 129 | ## Blog 130 | 131 | UED: 132 | 133 | - [腾讯AlloyTeam](http://www.alloyteam.com/) 134 | - [腾讯CDC - 用户研究和用户体验设计中心](http://cdc.tencent.com/) 135 | - [腾讯社交用户体验设计](https://isux.tencent.com/) 136 | - [百度Web前端研发部](http://fex.baidu.com/) 137 | - [百度前端技术体系](http://efe.baidu.com/) 138 | - [淘宝前端团队](http://taobaofed.org/) 139 | 140 | Blog: 141 | 142 | - [张云龙的前端工程博客](https://github.com/fouber/blog) 143 | - [John Resig的Blog](http://ejohn.org/category/blog/) 144 | 145 | ## Learning Resources 146 | 147 | - [Node School](https://nodeschool.io/) 148 | - [scotch](https://scotch.io/): fun and practical web development 149 | - [egghead](https://egghead.io/): Learn the latest frameworks from industry pros 150 | 151 | -------------------------------- 152 | 153 | # Basic Projects 154 | 155 | 参考: 156 | 157 | - [Awesome NodeJs](https://github.com/sindresorhus/awesome-nodejs) 158 | - [Awesome JavaScript](https://github.com/sorrycc/awesome-javascript) 159 | - [Frontend Development Bookmarks](https://github.com/dypsilon/frontend-dev-bookmarks): A huge list of frontend development resources I collected over time. Sorted from general knowledge at the top to concrete problems at the bottom. 160 | 161 | ## Related Languages 162 | 163 | - [TypeScript](http://www.typescriptlang.org/) 164 | - [elm](http://elm-lang.org/) 165 | - [Dart](https://www.dartlang.org) 166 | - [CoffeScript](http://coffeescript.org/) 167 | 168 | ## Framework 169 | 170 | - [Vue](https://cn.vuejs.org/index.html) 171 | - [React](https://reactjs.org/) 172 | - [DvaJS](https://dvajs.com/) 173 | 174 | ## Compiler 175 | 176 | - [node-gyp](https://github.com/nodejs/node-gyp): Node.js native add-on build tool. 177 | - [Babel](https://babeljs.io/): Babel is a JavaScript compiler. 178 | - [Asm.js](http://asmjs.org/): Asm.js是JavaScript的一个子集,来源于Mozilla’s Emscripten project的项目,是将C/C++程序最终编译成JavaScript。 179 | - [Jison](http://zaach.github.io/jison/): Jison takes a context-free grammar as input and outputs a JavaScript file capable of parsing the language described by that grammar. 180 | - [ES6 Module Transpiler](http://esnext.github.io/es6-module-transpiler/): ES6 Module Transpiler is a JavaScript library for converting JavaScript files written using the ES6 draft specification module syntax for use in existing JavaScript environments. 181 | 182 | ## Runtime 183 | 184 | - [v8 javascript engine](https://github.com/v8/v8): Google's open source JavaScript engine. 185 | - [node](https://github.com/nodejs/node): Node.js JavaScript runtime 186 | - [Node Source](https://nodesource.com/): 企业级Node 187 | - [Alinode](http://alinode.aliyun.com/): alinode 是阿里云出品的 Node.js 应用服务解决方案,是一套基于社区 Node 改进的运行时环境和服务平台。在社区的基础上我们内建了强大的支持功能,帮助开发者迅速洞见性能细节,快速定位疑难杂症,直探问题根源。 188 | 189 | ## Profiling 190 | 191 | - [V8 profiler](https://github.com/node-inspector/v8-profiler): node bindings for the v8 profiler 192 | - [node-inspector](https://github.com/node-inspector/node-inspector): Node.js debugger based on Blink Developer Tools 193 | - [Alinode Node Profiler](http://profiler.alinode.aliyun.com/): Node Profiler是一款JavaScript的性能调优工具,它不仅知道您的哪些代码慢,还知道为什么慢,能更深度地洞悉性能问题所在 194 | - [Node heapdump](https://github.com/bnoordhuis/node-heapdump): Make a dump of the V8 heap for later inspection. 195 | 196 | ## Debug 197 | 198 | - [Debug](https://github.com/visionmedia/debug): tiny node.js & browser debugging utility for your libraries and applications 199 | - [devtool](https://github.com/Jam3/devtool): runs Node.js programs through Chromium DevTools 200 | 201 | ## Package Manager 202 | 203 | - [NPM](https://www.npmjs.com/) 204 | - [CNPM](http://cnpmjs.org/) 205 | - [Bower](http://bower.io/) 206 | 207 | ## Module Loader 208 | 209 | - [RequireJS](http://requirejs.org/) 210 | - [Sea.js](http://seajs.org/docs/) 211 | - [SystemJS](https://github.com/systemjs/systemjs) 212 | - [Webpack](https://webpack.github.io/) 213 | - [Webpack-howto](https://github.com/petehunt/webpack-howto) 214 | - [Browserify](http://browserify.org/) 215 | 216 | ## Build & Scaffolding 217 | 218 | - [Grunt](http://gruntjs.com/) 219 | - [gulp](http://gulpjs.com/) 220 | - [gulp - Streaming build systems](http://slides.com/contra/gulp): gulp介绍幻灯片 221 | - [SlushJS](http://slushjs.github.io/#/): The streaming scaffolding system. Gulp as a replacement for Yeoman 222 | - [Yeoman](http://yeoman.io/) 223 | 224 | ## Documentation 225 | 226 | - [JSDoc](http://usejsdoc.org/) 227 | 228 | ## Log 229 | 230 | - [Winston](https://github.com/winstonjs/winston) 231 | - [log4js-node](https://github.com/nomiddlename/log4js-node) 232 | 233 | ## Test 234 | 235 | - [PhantomJS](http://phantomjs.org/): PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. 236 | - [Mocha](http://mochajs.org/): Mocha is a feature-rich JavaScript test framework running on Node.js and the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. 237 | - [Chai](http://chaijs.com/): Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. 238 | - [jasmine](https://github.com/jasmine/jasmine): DOM-less simple JavaScript testing framework 239 | - [Supertest](https://visionmedia.github.com/superagent/): Super Agent is light-weight progressive ajax API crafted for flexibility, readability, and a low learning curve after being frustrated with many of the existing request APIs. It also works with Node.js! 240 | - [Frisby.js](http://frisbyjs.com/docs/api/): Frisby is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints easy, fast, and fun. 241 | - [Vows](https://github.com/vowsjs/vows): Asynchronous BDD & continuous testing for node.js 242 | - [Istanbul](https://github.com/gotwarlost/istanbul): Yet another JS code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests. Supports all JS coverage use cases including unit tests, server side functional tests and browser tests. Built for scale. 243 | - [Should.js](http://shouldjs.github.io/): BDD style assertions for node.js -- test framework agnostic 244 | 245 | ## Network 246 | 247 | - [Request](https://github.com/request/request): Simplified HTTP request client 248 | - [Request-promise](https://github.com/request/request-promise) 249 | 250 | ## RPC 251 | 252 | - [DNode](https://github.com/substack/dnode): dnode is an asynchronous rpc system for node.js that lets you call remote functions. 253 | 254 | ## Basic Libs 255 | 256 | - [Immuable.js](http://facebook.github.io/immutable-js/): Immutable collections for JavaScript 257 | - [lodash](https://lodash.com/): A modern JavaScript utility library delivering modularity, performance, & extras. 258 | 259 | ## Websocket 260 | 261 | - [socket.io](http://socket.io/): Socket.IO enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed. 262 | - [socket.js](https://github.com/boyers/socket.js): A realtime communication framework for Node.js. 263 | 264 | ## Async & Promise 265 | 266 | - [bluebird](http://bluebirdjs.com/docs/getting-started.html) 267 | - [Q](http://documentup.com/kriskowal/q) 268 | - [When](https://github.com/cujojs/when) 269 | - [Async](https://github.com/caolan/async) 270 | 271 | ## Concurrency 272 | 273 | - [fibjs](https://github.com/xicilion/fibjs): fibjs 是一个建立在 Google v8 JavaScript 引擎基础上的应用服务器开发框架,不同于 node.js,fibjs 采用 fiber 解决 v8 引擎的多路复用,并通过大量 c++ 组件,将重负荷运算委托给后台线程,释放 v8 线程,争取更大的并发时间。 274 | - [node-fibers](https://github.com/laverdet/node-fibers): Fiber/coroutine support for v8 and node. 275 | - [node-webworker](https://github.com/pgriess/node-webworker): node-webworkers is an implementation of the Web Workers API for node.js. 276 | 277 | ## Terminal 278 | 279 | - [yargs](https://github.com/yargs/yargs): yargs the modern, pirate-themed successor to optimist. 280 | - [minimist](https://github.com/substack/minimist): parse argument options 281 | - [Optimist](https://github.com/substack/node-optimist): Light-weight option parsing for node.js 282 | 283 | ## Yaml 284 | 285 | - [js-yaml](https://github.com/nodeca/js-yaml): JavaScript YAML parser and dumper. Very fast. 286 | 287 | ## Stream 288 | 289 | - [node-trumpet](https://github.com/substack/node-trumpet): parse and transform streaming html using css selectors 290 | - [csv-stream](https://github.com/klaemo/csv-stream): Streaming CSV Parser for Node. Small and made entirely out of streams. 291 | - [event-stream](https://github.com/dominictarr/event-stream): EvJavaScript YAML parser and dumper. Very fast.entStream is like functional programming meets IO 292 | - [JSONStream](https://github.com/dominictarr/JSONStream): rawStream.pipe(JSONStream.parse()).pipe(streamOfObjects) 293 | 294 | ## Shim 295 | 296 | - [es6-shim](https://github.com/paulmillr/es6-shim) 297 | - [shimmer](https://github.com/othiym23/shimmer) 298 | 299 | ## Web Framework 300 | 301 | - [ExpressJS](http://expressjs.com/) 302 | - [node-toobusy](https://github.com/lloyd/node-toobusy): Build Node.JS servers that don't fall over. 303 | - [Connect](https://github.com/senchalabs/connect): Express的前身 304 | - [Koa](http://koajs.com/) 305 | - [ThinkJS](https://thinkjs.org/): base on Koa 2.x 306 | - [strapi](http://strapi.io/) 307 | - [Loopback](https://loopback.io/): A brand new LoopBack core to deliver great extensibility and flexibility written in TypeScript/ES2017. 308 | - [Micro](https://github.com/vercel/micro): Async HTTP microservices 309 | 310 | ## Job Schedule 311 | 312 | - [node-schedule](https://github.com/node-schedule/node-schedule): A cron-like and not-cron-like job scheduler for Node. 313 | - [node-cron](https://github.com/ncb000gt/node-cron): Cron for NodeJS. 314 | - [Agenda](https://github.com/rschmukler/agenda): Lightweight job scheduling for node 315 | - [Later](https://github.com/bunkat/later): A javascript library for defining recurring schedules and calculating future (or past) occurrences for them. Includes support for using English phrases and Cron schedules. Works in Node and in the browser. 316 | 317 | ## Desktop 318 | 319 | - [Elctron](http://electron.atom.io/): Build cross platform desktop apps with web technologies 320 | - [NW.js](http://nwjs.io/): NW.js (previously known as node-webkit) lets you call all Node.js modules directly from DOM and enables a new way of writing applications with all Web technologies. 321 | - [slimerjs](https://github.com/laurentj/slimerjs) 322 | - [node-qt](https://github.com/arturadib/node-qt): C++ Qt bindings for Node.js 323 | - [nativefier](https://github.com/jiahaog/nativefier): Nativefier is a command line tool that allows you to easily create a desktop application for any web site with succinct and minimal configuration. 324 | 325 | ## Mobile Hybrid framework 326 | 327 | - [Ionic](http://ionicframework.com/): Ionic is the beautiful, free and open source mobile SDK for developing native and progressive web apps with ease. 328 | - [Onsen UI](https://onsen.io/): Framework-agnostic UI components let you do wonders. 329 | - [React Native](http://facebook.github.io/react-native/): React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components. 330 | - [Intel XDK](https://software.intel.com/en-us/intel-xdk): One solution for IoT applications and mobile app dev! 331 | - [Framework 7](http://framework7.io/): Full Featured HTML Framework For Building iOS & Android Apps 332 | 333 | ## Process Supervisor 334 | 335 | - [PM2](https://github.com/Unitech/pm2): Production process manager for Node.js applications with a built-in load balancer https://app.keymetrics.io/ 336 | - [Nodemon](http://nodemon.io/): Nodemon is a utility that will monitor for any changes in your source and automatically restart your server. **Perfect for development.** 337 | 338 | ## Tools 339 | 340 | - [Browsersync](https://browsersync.io/): Time-saving synchronised browser testing. 341 | 342 | ## Web Templates 343 | 344 | - [SB Admin](https://startbootstrap.com/template-overviews/sb-admin/) 345 | - [Simple Dashboard Admin](https://github.com/start-angular/SB-Admin-BS4-Angular-4) 346 | - [ng-admin](https://github.com/marmelab/ng-admin) 347 | - [CoreUI](http://coreui.io/) 348 | - [Sleek Dashboard](https://github.com/tafcoder/sleek-dashboard): Free Bootstrap 4 Admin Template and UI Kit 349 | 350 | **References:** 351 | 352 | - [27 Free Dashboard Templates](http://blog.creative-tim.com/web-design/free-dashboard-templates/) 353 | 354 | ## Others 355 | 356 | - [JXCore](http://jxcore.com/home/): JXcore extends Node.JS™ with additional features for developing mobile and embedded applications using JavaScript and leveraging the Node ecosystem. 357 | - [NodeCG](http://nodecg.com/): NodeCG is a broadcast graphics framework and application. It is primarily aimed at Twitch broadcasters using Open Broadcaster Software, but is usable in any environment that can render HTML, including CasparCG. 358 | - [mjml](https://mjml.io/): MJML is a markup language designed to reduce the pain of coding a responsive email. 359 | 360 | -------------------------------- 361 | 362 | # References 363 | 364 | - [Spellbook of Modern Web Dev](https://github.com/dexteryy/spellbook-of-modern-webdev): A Big Picture, Thesaurus, and Taxonomy of Modern JavaScript Web Development 365 | - [Roadmap to becoming a web developer in 2017](https://github.com/kamranahmedse/developer-roadmap) 366 | 367 | -------------------------------- 368 | 369 | # FAQ 370 | -------------------------------------------------------------------------------- /website-attack-and-defense.md: -------------------------------------------------------------------------------- 1 | ## 安全协议 2 | 3 | - [OAuth](http://oauth.net/2/) 4 | - [oath](https://openauthentication.org/specifications-technical-resources/) 5 | - [kerberos](http://web.mit.edu/kerberos/) 6 | 7 | # Common Attack Methods 常见攻击方式 8 | 9 | ## DNS Spoofing 10 | 11 | ### Principle 12 | 13 | - [DNS spoofing/DNS Poisoning](https://en.wiki2.org/wiki/DNS_cache_poisoning) 14 | - [揭露DNS劫持,偷梁换柱的把戏](http://tech.ccidnet.com/zt/dns/) 15 | - [中国DNS缓存污染](http://blog.csdn.net/yyf_ad/article/details/16357473) 16 | 17 | ### Defense 18 | 19 | - [DNS Cache Poisoning And Prevention](https://techtrigger.wordpress.com/2012/01/11/dns-cache-poisoning-and-prevention/) 20 | - [DNSPod](https://www.dnspod.cn/) 21 | 22 | 23 | ## DDOS 24 | 25 | ### Principle 26 | 27 | - [DDos - Distributed denial-of-service](https://en.wiki2.org/wiki/DDos) 28 | 29 | ### Defense 30 | 31 | - [360网站卫士](http://wzb.360.cn/) 32 | 33 | 34 | ## SQL Injection 35 | 36 | ### Principle 37 | 38 | - [SQL injection](https://en.wiki2.org/wiki/SQL_injection) 39 | - [sqlinjection.net](http://www.sqlinjection.net/) 40 | 41 | ### Defense 42 | 43 | - [How To: Protect From SQL Injection in ASP.NET](https://msdn.microsoft.com/en-us/library/ff648339.aspx) 44 | - [Avoid SQL Injection attacks](http://forums.asp.net/p/777624/2942861.aspx#2942861) 45 | - [Coding techniques for protecting against Sql injection](http://forums.asp.net/t/1254125.aspx) 46 | 47 | 48 | ## XSS 49 | 50 | ### Principle 51 | 52 | - [XSS - Cross-site scripting](https://en.wiki2.org/wiki/Cross-site_scripting) 53 | 54 | ### Defense 55 | 56 | - [AntiXSS Library](http://www.asp.net/aspnet/overview/aspnet-and-visual-studio-2012/whats-new#_Toc318097382) 57 | - [AntiXSS Library in .NET v4.5](http://forums.asp.net/t/1863558.aspx?AntiXSS+Library+in+NET+v4+5) 58 | - [.NET AntiXSS Library](https://www.owasp.org/index.php/.NET_AntiXSS_Library) 59 | 60 | 61 | ## CSRF 62 | 63 | ### Principle 64 | 65 | - [CSRF/XSRF - Cross-site request forgery](https://en.wiki2.org/wiki/Cross-site_request_forgery) 66 | - [XSS和CSRF的比较](http://www.cnblogs.com/songhan/archive/2012/07/16/2592917.html) 67 | 68 | ### Defense 69 | 70 | - [csurf](https://www.npmjs.com/package/csurf): Node.js CSRF protection middleware. 71 | - [Preventing Cross-Site Request Forgery (CSRF) Attacks in ASP.NET Web API](http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-attacks) 72 | 73 | 74 | ## HTTP Packet Sniffer 75 | 76 | ### Principle 77 | 78 | - [HTTP Packet Sniffer](https://en.wiki2.org/wiki/Packet_Sniffer) 79 | - [SSL](https://en.wiki2.org/wiki/Transport_Layer_Security): 80 | - [Https(SSL/TLS)原理详解](http://www.fenesky.com/blog/2014/07/19/how-https-works.html) 81 | - [What is an SSL (Secure Sockets Layer) Certificate?](https://www.instantssl.com/ssl.html) 82 | 83 | ### Defense 84 | 85 | Set Up SSL on IIS 7+ 86 | 87 | - [How to Set Up SSL on IIS 7](http://www.iis.net/learn/manage/configuring-security/how-to-set-up-ssl-on-iis) 88 | - [IIS 7.0 SSL 部署指南](http://www.wosign.com/Support/iis7.html) 89 | 90 | Programming 91 | 92 | - [在 ASP.NET MVC 中使用 HTTPS (SSL/TLS)](http://www.cnblogs.com/snowdream/archive/2009/08/07/use-https-in-aspnet-mvc.html) 93 | - [SSL pages under ASP.NET MVC](http://stackoverflow.com/questions/156748/ssl-pages-under-asp-net-mvc) 94 | 95 | 96 | ## Man-in-the-middle attack 97 | 98 | ### Principal 99 | 100 | - [Man-in-the-middle attack](https://en.wiki2.org/wiki/Man-in-the-middle_attack) 101 | - [Github被墙事件](https://en.greatfire.org/blog/2013/jan/china-github-and-man-middle) 102 | 103 | 104 | # Reference 105 | 106 | - [The Open Web Application Security Project Foundation](https://www.owasp.org/index.php/Main_Page) 107 | - [SSL 证书服务,大家用哪家的?](http://www.zhihu.com/question/19578422) 108 | - [Why is it possible to sniff an HTTPS / SSL request?](http://security.stackexchange.com/questions/19616/why-is-it-possible-to-sniff-an-https-ssl-request) 109 | - [Hyperfox](https://hyperfox.org/): Hyperfox is a security tool for proxying and recording HTTP and HTTPs communications on a LAN. 110 | --------------------------------------------------------------------------------