Category Archives: Resource

What are some good blogs about algorithms and technical interviews?

Here is a website on good algorithms and technical interviews.

Website: IDeserve

Youtube channel: IDeserve

Here are some good features I found on this:

1. Many problems are explained with the help of videos which makes it very easy to understand the problem within minutes.

2. The Algorithm Visualization on the page is a great feature provided for visualizing how an algorithm works at runtime for a given example. Normally it takes careful observation to dry run a code, but through the algorithm visualization given here, it becomes easier to understand.

For example, check out the visualization given here:

Create a balanced Binary Search Tree from a sorted array

Here are videos on various topics:

Programming Interview Questions

Arrays – YouTube

Strings – YouTube

Trees – YouTube

Linked Lists – YouTube

Dynamic Programming

Graph – YouTube

Here are some of the good problems:

Linked Lists and Stack Problems:

Merge two sorted linked lists

Reverse a Linked List – Recursive

Reverse a Linked List – Iterative

Reverse every alternate k nodes of a Linked List

Find nth Node from the end of a Linked List

Sum of Two Linked Lists using Stacks

Sum of Two Linked Lists using Recursion | Set 1

LRU Cache Implementation

Detect a loop in a linked list and find the node where the loop starts.

Convert a sorted Doubly Linked List to Balanced Binary Search Tree

Convert a binary tree to doubly linked list

Find intersection of two Linked Lists

Find intersection of two Linked Lists – O(m + n) Time Complexity and O(1) Space Complexity

Minimum Stack O(1)

Strings Problems:

Reverse words in a string

Remove spaces from a given string

Longest Substring with non-Repeating Characters

Check balanced parentheses in a string

Postfix Expression Evaluation

Group all anagrams together from a given array of strings | Set 1

First non-repeating character in a string

Find all permutations of a String

Word Break Problem

Subset Sum Problem

Shortest Palindrome

Palindrome Min Cut

Minimum number of trials to reach from source word to destination word

Longest Palindromic Substring

Manacher’s Algorithm

Longest Palindromic Subsequence

Longest Common Substring

Longest Common Subsequence

To print maximum number of As using given four keys.

Finding 10 letter repeated DNA sequences.

Find minimum edit distance between given two strings

Distinct binary strings of length n with no consecutive 1s

The longest prefix suffix array computation in KMP pattern matching algorithm.

The Knuth Morris Pratt algorithm for pattern matching.

Arrays Problems:

Sorting Algorithm – Selection Sort

Sorting Algorithm – Insertion Sort

Sorting Algorithm – Bubble Sort

Merge Sort

Pancake Sorting

Sorting Algorithm – Heap Sort

Rotate an Array

Fibonacci Number

Merge two sorted arrays without using extra space

Maximum subarray sum

Maximum average subarray of size k

Longest Substring with non-Repeating Characters

Leaders in an array

Find Minimum Length Sub Array With Sum K

Binary Search in a Sorted Array

Search a sorted matrix

Re-arrange elements in an array to put positive and negative elements in alternate order

Find the next greater number using same digits

Next greater element in an array

First non-repeating character in a string

Find the ‘n’th most frequent number in array

Find the missing number in the increasing sequence

Find duplicates in an integer array

Find common elements in ‘n’ sorted arrays

Find a Peak Element in an array

Distribute Chocolates Problem

Count frequencies of array elements in range 1 to n

Find all permutations of a String

Find pivot in a sorted rotated array

Find an element in a sorted rotated array

Find element in sorted rotated array without finding pivot

Buy and sell stocks | Part 2

Buy and sell stocks | Part 1

Find index of 0 to replace to get longest continuous sequence of 1s

O(n) time approach to find index of 0 to replace to get longest continuous sequence of 1s

Trapping Rain Water between Towers

The Skyline Problem

Minimum number of coins to make change

Find minimum cost path in a matrix

Find the length of longest increasing subsequence in an array

Longest Increasing Subsequence O(n logn)

Find the length of longest bitonic subsequence in an array

Given an array with all distinct elements, find the length of the longest sub-array which has elements(not in any particular order) that could form a contiguous sequence

Find an integer array corresponding to the string specifying increase-decrease transitions

Gold Mine Problem

Find median of two sorted arrays

Find Majority Element in an Array

0-1 Knapsack Problem

Count all possible decodings of a given digit sequence

Find total number of ways to make change using given set of coins

Find increasing sub-sequence of length three having maximum product

Find increasing sub-sequence of length three having maximum product | Optimized approach

Set Partition Problem | Recursion

Set Partition Problem | Dynamic Programming

Trees and Graphs Problems:

Pre-order Traversal of a Binary Tree

Post-order Traversal of a Binary Tree

In-order Traversal of a Binary Tree

Binary Tree Level Order Traversal

Spiral Level Order Traversal of a Binary Tree | Set 1

Print right view of a binary tree

Print all nodes of a binary tree that do not have sibling

Print all Root to Leaf paths of a Binary Tree

Minimum Depth of a Binary Tree

Print left view of a binary tree

Find sum of all left leaves of a binary tree

Find depth of deepest odd level leaf node

Check whether a binary tree is a full binary tree or not

Check whether a binary tree is complete or not

Check if two nodes are cousins in a Binary tree

Check if two binary trees are identical

Check if all internal nodes of BST have only one child without building tree

Convert the given n-ary tree to its mirror image

Convert a binary tree to its mirror tree

Print top view of a binary tree

Print top view of a binary tree using level order traversal

Print bottom view of a binary tree

Print bottom view of a binary tree using level order traversal

Remove the nodes of binary search tree which are outside the given range

Remove all nodes which lie on path having sum less than k

Remove all the half nodes from a given binary tree

Print binary tree in vertical order

Populate right neighbors for all nodes in a binary tree

Lowest Common Ancestor of two nodes in a Binary Search Tree

In-order Successor of a Node in a Binary Tree

Recover a Binary Search Tree if positions of two nodes are swapped.

Find floor and ceiling of an element from given dataset using binary search tree

Diagonal Sum of a Binary Tree.

Create a balanced Binary Search Tree from a sorted array

Convert a sorted Doubly Linked List to Balanced Binary Search Tree

Convert a binary tree to doubly linked list

Check if a binary tree is balanced or not

Check if a binary tree is a binary search tree

Check if two binary search trees are identical given their array representations | Set 2

Check if two binary search trees are identical given their array representations

Check if a binary tree is sub-tree of another binary tree in time O(n)

Check if a binary tree is sub-tree of another binary tree in space O(1)

Binary Search tree | Insertion and Search

Binary Search tree | Deletion

Check if a given binary tree is symmetric tree or not

Check if the given n-ary tree is symmetric tree or not

Total number of possible Binary Search Trees with ‘n’ keys

Find the size of largest BST in a binary tree

Lowest Common Ancestor of 2 nodes in a Binary Tree

Find height of the binary tree from its parent array representation

Convert binary tree to binary search tree

Construct the binary tree from its parent array representation

Construct binary tree from inorder and preorder traversals

Construct binary tree from inorder and postorder traversals

AVL tree | Basics

AVL tree | Insertion

AVL tree | Deletion

Trie Data Structure | Insert and search

Trie Data Structure | Delete

Pattern matching using Trie

Longest Prefix Matching using Trie

Given a sequence of words, group together all anagrams and print them.

Serialize and Deserialize a binary search tree

Serialize and Deserialize a binary search tree using post order traversal

Breadth first search in a graph

Topological Sorting of a Directed Acyclic Graph.

Minimum number of trials to reach from source word to destination word

Friend Circles Problem – Graph Theory

Dijkstra’s Shortest Path algorithm

Bellman-Ford Algorithm

Dynamic Programming Problems:

Fibonacci Number

Maximum subarray sum

Word Break Problem

Total number of possible Binary Search Trees with ‘n’ keys

Subset Sum Problem

Shortest Palindrome

Palindrome Min Cut

Minimum number of trials to reach from source word to destination word

Minimum number of coins to make change

Find minimum cost path in a matrix

Longest Palindromic Substring

Longest Palindromic Subsequence

Find the length of longest increasing subsequence in an array

Longest Increasing Subsequence O(n logn)

Longest Common Substring

Longest Common Subsequence

Find the length of longest bitonic subsequence in an array

To print maximum number of As using given four keys.

Gold Mine Problem

Find minimum edit distance between given two strings

0-1 Knapsack Problem

Distinct binary strings of length n with no consecutive 1s

Count all possible decodings of a given digit sequence

Find total number of ways to make change using given set of coins

Set Partition Problem | Dynamic Programming

 

程序员用到的各种优秀资料、神器及框架整理

老司机程序员用到的各种优秀资料、神器及框架整理 | IT瘾

成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。

笔者作为一位tool mad,将工作以来用到的各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。

本人喜欢折腾,记录的东西也比较杂,各方面都会有一些,内容按重要等级排序,大家各取所需。

这里的东西会持续积累下去,欢迎Star,也欢迎发PR给我。

目录


<!– END doctoc generated TOC please keep comment here to allow auto update –>

资料篇

技术站点

  • 在线学习: CourseraedXUdacityMIT公开课MOOC学院
  • Hacker News:非常棒的针对编程的链接聚合网站
  • Techmeme:美国知名科技新闻和博客聚集网站,类似的还有(Panda, Hacker & Designer News)
  • Programming reddit:同上
  • Java牛人必备: Program Creek
  • stackoverflow:IT技术问答网站
  • GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核,OpenStack等
  • LeetCode:来做做这些题吧,看看自己的算法水平如何?这可比什么面试宝典强多了。
  • Kaggle,Topcoder: 机器学习、大数据竞赛
  • 掘金:高质量的技术社区
  • 开发者头条
  • InfoQ:企业级应用,关注软件开发领域
  • V2EX: way to explore
  • 国内老牌技术社区:OSChina、博客园、CSDN、51CTO
  • 免费的it电子书: http://it-ebooks.info/
  • 在线学习: http://www.udemy.com/
  • 优质学习资源: http://plus.mojiax.com/
  • 代码练习: http://exercism.io/ and https://www.codingame.com
  • DevStore:开发者服务商店
  • MSDN:微软相关的官方技术集中地,主要是文档类

必看书籍

  • SICP( Structure and Interpretation of Computer Programs)
  • 深入理解计算机系统
  • 代码大全2
  • 人件
  • 人月神话
  • 软件随想录
  • 算法导论(麻省理工学院出版社)
  • 离线数学及其应用
  • 设计模式
  • 编程之美
  • 黑客与画家
  • 编程珠玑
  • The Little Schemer
  • Simply Scheme_Introducing_Computer_Science
  • C++ Prime
  • Effective C++
  • TCP/IP详解
  • Unix 编程艺术
  • 软件随想录
  • 计算机程序设计艺术
  • 职业篇:程序员的自我修养,程序员修炼之道,高效能程序员的修炼
  • 《精神分析引论》弗洛伊德
  • 《失控》《科技想要什么》《技术元素》凯文凯利
  • 程序开发心理学
  • 天地一沙鸥
  • 搞定:无压力工作的艺术

大牛博客

GitHub篇

学习资料篇

Swift相关

客户端

Framework

小工具

游戏

工作、工具篇

优秀项目篇

工具篇

平台工具

  • Phabricator: 软件开发平台,Facebook出品,现已开源,CodeReview神器(从这个往下一直到GitLab之间的工具统统可以忽略了)
  • Redmine/Trac:项目管理平台
  • Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)
  • git,svn:源代码版本控制系统
  • GitLab/Gitorious:构建自己的GitHub服务器
  • Postman:RESTful,api测试工具,HTTP接口开发必备神器
  • Sonar:代码质量管理平台
  • Nessus: 系统漏洞扫描器
  • gitbook: https://www.gitbook.io/写书的好东西,当然用来写文档也很不错的(发现不少产品的文档就是用的它)
  • Travis-ci:开源项目持续集成必备,和GitHub相结合, https://travis-ci.org/
  • Trello:简单高效的项目管理平台,注重看板管理
  • 日志聚合:graylog、ELK(推荐新一代的graylog,基本上算作是开源的Splunk了)
  • 开源测试工具、社区(Selenium、OpenQA.org)
  • Puppet:一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。其他类似工具:CFEngine、SaltStack、Ansible
  • Nagios:系统状态监控报警,还有个Icinga(完全兼容nagios所有的插件,工作原理,配置文件以及方法,几乎一模一样。配置简单,功能强大)
  • Ganglia:分布式监控系统
  • fleet:分布式init系统
  • Ansible:能够大大简化Unix管理员的自动化配置管理与流程控制方式。
  • GeoLite免费数据库
  • jsHint:js代码验证工具
  • haproxy: 高可用负载均衡(此外类似的系统还有nginx,lvs)
  • linux OS性能分析工具:dstat,iostat,iotop,nmon
  • kimono:将网页信息转换为api接口的工具
  • 集群管理工具:pdsh,ClusterSSH,mussh(可以用它快速管理Hadoop集群)ipa-server做统一的认证管理
  • influxdb: 分布式时序数据库,结合Grafana可以进行实时数据分析
  • dot: 程序员绘图利器(是种语言,也是个工具)
  • Graph::Easy: (Ascii Art工具)字符流程图绘制,实乃程序员装逼神器。其他类似的工具Asciiflow, vi插件:drawit!
  • spf13-vim: 让你的vim飞起来!
  • Kubernetes: 容器集群管理系统
  • Gatling: 服务器性能压力测试工具
  • systemtap: Linux内核探测工具、内核调试神器
  • Cygwin:Windows下的类UNIX模拟环境
  • MinGW:Windows下的GNU工具集

常用工具

  • Mac下的神兵利器
  • asciinema: 终端录屏神器
  • Fiddler:非常好用的Web前端调试工具,当然是针对底层http协议的,一般情况使用Chrome等自带的调试工具也足够了,特殊情况还得用它去处理
  • Charles: Mac上的Web代理调试工具,类似Fiddler
  • wireshark:知名的网络数据包分析工具
  • PowerCmd:替代Windows Cmd的利器
  • RegexBuddy:强大的正则表达式测试工具
  • Soure Insight:源代码阅读神器
  • SublimeText:程序员最爱的编辑器
  • Database.NET:一个通用的关系型数据库客户端,基于.NET 4.0开发的,做简单的处理还是蛮方便的
  • Navicat Premium:支持MySql、PostgreSQL、Oracle、Sqlite和SQL Server的客户端,通用性上不如Database.NET,但性能方面比Database.NET好很多,自带备份功能也用于数据库定时备份。
  • Synergy : 局域网内一套键盘鼠标控制多台电脑
  • DameWare:远程协助工具集(我在公司主要控制大屏幕用)
  • Radmin: 远程控制工具,用了一段时间的DameWare,还要破解,对Win7支持的不好,还是发现这个好用
  • Listary:能极大幅度提高你 Windows 文件浏览与搜索速度效率的「超级神器」
  • Clover:给资源管理器加上多标签,我平时工作的时候就用它,像Chrome一样使用资源管理器,甚是方便啊(这是Windows平台的)
  • WinLaunch:模拟Mac OS的Launch工具
  • Fritzing:绘制电路图
  • LICEcap:gif教程制作
  • git,svn:版本控制系统
  • Enigma Virtual Box(将exe,dll等封装成一个可执行程序)
  • Open DBDiff(针对SqlServer)数据库同步
  • SymmetricDS:数据库同步
  • BIEE,Infomatica,SPSS,weka,R语言:数据分析
  • CodeSmith,LightSwitch:代码生成
  • Pandoc:Markdown转换工具,出书用的。以前玩过docbook,不过现在还是Markdown盛行啊。
  • Window Magnet[Mac]:增强Mac窗口管理功能,想Win7一样具有窗口拖放到屏幕边缘自动调整的功能
  • log explorer:查看SqlServer日志
  • dependency walker:查询Windows应用程序dll依赖项
  • Shairport4w:将iPhone,iPad,iPod上的音频通过AirPlay协议传输到PC上
  • ngrok:内网穿透工具
  • Axure:快速原型制作工具,还有个在线作图的工具国内的一个创业团队做的,用着很不错 http://www.processon.com/
  • Origami: 次世代交互设计神器
  • 百度脑图: http://naotu.baidu.com/
  • tinyproxy:(Linux)小型的代理服务器支持http和https协议
  • EaseUS Partition Master:超级简单的分区调整工具,速度还是蛮快的,C盘不够用了就用它从D盘划点空间吧,不用重装系统这么折腾哦。
  • CheatEngine:玩游戏修改内存值必备神器(记得我在玩轩辕剑6的时候就用的它,超级方便呢)
  • ApkIDE:Android反编译神器
  • 翻、墙工具(自|由|门、天行浏览器,免费的VPN: http://www.mangovpn.com/),发现最方便还属Lantern,免费用起来超级方便(更新于2015-08-22)
  • 设计工具:Sketch、OmniGraffle
  • MindManger:思维导图
  • MagicDraw:Uml图工具
  • innotop:MySql状态监测工具
  • 墨刀:比Axure更为简单的原型工具,可以快速制作原型
  • Karabiner: Mac专用,修改键盘键位的神器,机械键盘必备
  • Timing:Mac专用,统计你的时间都花在哪了
  • f.lux: 护眼神器,过滤蓝光,程序员护眼必备良品
  • LaTeX: 基于ΤΕΧ的排版系统, 让写论文更方便
  • Antlr:开源的语法分析器,可以让你毫无压力的写个小parser

第三方服务

  • DnsPod:一个不错的只能DNS服务解析提供商
  • DigitalOcean:海外的云主机提供商,价格便宜,磁盘是SSD的,用过一段时间整体上还可以,不过毕竟是海外的,网速比较慢。国内的就是阿里云了。还有个比较知名的是:Linode,据说速度上比DigitalOcean好很多
  • 移动端推送服务:个推、JPush、云巴
  • LeanCloud:移动应用开发服务,包括:数据存储、用户管理、消息推送、应用统计、社交分享、实时聊天等服务
  • Color Hunt: 漂亮炫酷的配色网站,程序员的福音
  • Heroku: PaaS平台

爬虫相关(好玩的工具)

  • Phantomjs(Web自动化测试,服务端渲染等)
  • berserkJS(基于Phantomjs的改进版本)
  • SlimerJS
  • CasperJS
  • selenium
  • HtmlUnit(开源的java 页面分析工具,也是个Headless的浏览器)

安全相关

  • sql注入检测:sqlmap、haviji
  • 端口扫描:nmap
  • 渗透测试:BurpLoader
  • sqltools: sql漏洞利用工具
  • snort: 入侵检测

Web服务器性能/压力测试工具/负载均衡器

  • ab: ab是apache自带的一款功能强大的测试工具
  • curl-loader: 真实模拟、测试Web负载
  • http_load: 程序非常小,解压后也不到100K
  • webbench: 是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。
  • Siege: 一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
  • squid(前端缓存),nginx(负载),nodejs(没错它也可以,自己写点代码就能实现高性能的负载均衡器):常用的负载均衡器
  • Piwik:开源网站访问量统计系统
  • ClickHeat:开源的网站点击情况热力图
  • HAProxy:高性能TCP /HTTP负载均衡器
  • ElasticSearch:搜索引擎基于Lucene
  • Page Speed SDK和YSLOW
  • HAR Viewer: HAR分析工具
  • protractor:E2E(end to end)自动化测试工具

大数据处理/数据分析/分布式工具

  • Hadoop:分布式的文件系统,结合其MapReduce编程模型可以用来做海量数据的批处理(Hive,Pig,HBase啥的就不说了),值得介绍的是Cloudera的Hadoop分支CDH5,基于YARN MRv2集成了Spark可直接用于生产环境的Hadoop,对于企业快速构建数据仓库非常有用。
  • Spark:大规模数据处理框架(可以应付企业中常见的三种数据处理场景:复杂的批量数据处理(batch data processing);基于历史数据的交互式查询(interactive query);基于实时数据流的数据处理(streaming data processing)),CSND有篇文章介绍的不错
  • 除了Spark,其他几个不错的计算框架还有:Kylin,Flink,Drill
  • Ceph:Linux分布式文件系统(特点:无中心)
  • Storm:实时流数据处理,可以看下IBM的一篇介绍 (还有个Yahoo的S4,也是做流数据处理的)
  • Druid: 实时数据分析存储系统
  • Ambari: 大数据平台搭建、监控利器;类似的还有CDH
  • Tachyon:分布式内存文件系统
  • Mesos:计算框架一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享
  • Impala:新一代开源大数据分析引擎,提供Sql语义,比Hive强在速度上
  • presto: facebook的开源工具,大数据分布式sql查询引擎
  • SNAPPY:快速的数据压缩系统,适用于Hadoop生态系统中
  • Kafka:高吞吐量的分布式消息队列系统
  • ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线
  • MQTT:Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分
  • RabbitMQ:记得OpenStack就是用的这个东西吧
  • ZeroMQ:宣称是将分布式计算变得更简单,是个分布式消息队列,可以看下云风的一篇文章的介绍
  • 开源的日志收集系统:scribe、chukwa、kafka、flume。这有一篇对比文章
  • Zookeeper:可靠的分布式协调的开源项目
  • Databus:LinkedIn 实时低延迟数据抓取系统
  • 数据源获取:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach
  • 序列化技术:JSON、BSON、Thrift、Avro、Google Protocol Buffers
  • NoSql:ScyllaDB(宣称是世界上最快的NoSql)、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j
  • MapReduce相关:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum
  • 数据处理:R、Yahoo! Pipes、Mechanical Turk、Solr/ Lucene、ElasticSearch、Datameer、Bigsheets、Tinkerpop
  • NLP自然语言处理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais
  • 机器学习:TensorFlow(Google出品),WEKA、Mahout、scikits.learn、SkyTree
  • 可视化技术:GraphViz、Processing、Protovis、Google Fusion Tables、Tableau、Highcharts、EChats(百度的还不错)、Raphaël.js
  • Kettle:开源的ETL工具
  • Pentaho:以工作流为核心的开源BI系统
  • Mondrian:开源的Rolap服务器
  • Oozie:开源hadoop的工作流调度引擎,类似的还有:Azkaban
  • 开源的数据分析可视化工具:Weka、Orange、KNIME
  • Cobar:阿里巴巴的MySql分布式中间件
  • 数据清洗:data wrangler, Google Refine

Web前端

  • Material Design: 谷歌出品,必属精品
  • Vue.js: 借鉴了Angular及React的JS框架,设计理念较为先进
  • GRUNT: js task runner
  • Sea.js: js模块化
  • knockout.js:MVVM开发前台,绑定技术
  • Angular.js: 使用超动感HTML & JS开发WEB应用!
  • Highcharts.js,Flot:常用的Web图表插件
  • NVD3: 基于d3.js的图表库
  • Raw:非常不错的一款高级数据可视化工具
  • Rickshaw:时序图标库,可用于构建实时图表
  • JavaScript InfoVis Toolkit:另一款Web数据可视化插件
  • Pdf.js,在html中展现pdf
  • ACE,CodeMirror:Html代码编辑器(ACE甚好啊)
  • NProcess:绚丽的加载进度条
  • impress.js:让你制作出令人眩目的内容展示效果(类似的还有reveal)
  • Threejs:3DWeb库
  • Hightopo:基于Html5的2D、3D可视化UI库
  • jQuery.dataTables.js:高度灵活的表格插件
  • Raphaël:js,canvas绘图库,后来发现百度指数的图形就是用它绘出来的
  • director.js:js路由模块,前端路由,Nodejs后端路由等,适合构造单页应用
  • pace.js:页面加载进度条
  • bower:Web包管理器
  • jsnice:有趣的js反编译工具,猜压缩后的变量名, http://www.jsnice.org/
  • D3.js: 是一个基于JavaScript数据展示库(类似的还有P5.js)
  • Zepto.js:移动端替代jQuery的东东,当然也可以使用jquery-mobile.
  • UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer
  • 前段UI设计师必去的几个网站:Dribbble,awwwards,unmatchedstyle,UIMaker
  • Mozilla 开发者中心: https://developer.mozilla.org/en-US/
  • 图标资源:IcoMoon(我的最爱),Font Awesome, Themify Icons,FreePik,Glyphicons
  • artDialog:非常漂亮的对话框
  • AdminLTE:github上的一个开源项目,基于Boostrap3的后台管理页面框架
  • Respond.js:让不懂爱的IE6-8支持响应式设计
  • require.js: js模块加载库
  • select2:比chosen具有更多特性的选择框替代库
  • AngularUI:集成angular.js的UI库
  • normalize.css: 采用了现代化标准让各浏览器渲染出的html保持一致的库
  • CreateJS:Html5游戏引擎
  • Less,Compass:简化CSS开发
  • emojify.js:用于自动识别网页上的Emoji文字并将其显示为图像
  • simditor:一个不错的开源的html编辑器,简洁高效
  • Sencha: 基于html5的移动端开发框架
  • SuperScrollorama+TweenMax+skrollr:打造超酷的视差滚动效果网页动画
  • jquery-smooth-scroll:同上,平滑滚动插件
  • Animate.css:实现了各种动画效果的css库
  • Emmet:前端工程师必备,ZenCode的前身
  • React: facebook出品的js UI库
  • highlight.js:专门用来做语法高亮的库
  • GoJS: Html5交互式图表库,看demo更适合层次结构的图表。
  • 10 Pure CSS (Mostly) Flat Mobile Devices: http://marvelapp.github.io/devices.css/
  • CodePen: http://codepen.io/
  • jsfiddle: http://jsfiddle.net/ 前端js,html,css测试利器

语言篇

折腾中:Scala、Python、Lua、JavaScript、Go

待折腾:

Scala

Java

  • 常用的IDE:IntelliJ IDEA(强烈推荐),Eclipse,Netbeans
  • fastutil: 性能更好的Java集合框架
  • Guava: 谷歌的Java工具包,应用广泛
  • Curator:Netflix公司开源的一个Zookeeper client library,用于简化Zookeeper客户端编程,现在已经是apache下的一个独立项目了。Spark的HA也用的这货。
  • Rx(Reactive Extensions)框架:Vert.x, RxJava(Android中用的比较多), Quasar
  • FindBugs: 代码静态分析工具,找出代码缺陷
  • Java反编译工具:Luyten,JD-Gui
  • Drools: 规则引擎
  • Jersey: Java RESTful 框架
  • canal: 阿里巴巴出品,binlog增量订阅&消费组件
  • Web开发相关:Tomcat、Resin、Jetty、WebLogic等,常用的组件Struts,Spring,Hibernate
  • Netty: 异步事件驱动网络应用编程框架,用于高并发网络编程比较好(NIO框架,spark 1.2.0就用netty替代了nio)
  • MINA:简单地开发高性能和高可靠性的网络应用程序(也是个NIO框架),不少手游服务端是用它开发的
  • jOOQ:java Orm框架
  • Janino: 超级小又快的Java编译器,Spark的Tungsten引起用的它
  • Activiti:工作流引擎,类似的还有jBPM、Snaker
  • Perfuse:是一个用户界面包用来把有结构与无结构数据以具有交互性的可视化图形展示出来.
  • Gephi:复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具
  • Nutch:知名的爬虫项目,hadoop就是从这个项目中发展出来的
  • web-harvest:Web数据提取工具
  • POM工具:Maven+Artifactory
  • Akka:一款基于actor模型实现的 并发处理框架
  • EclEmma:覆盖测试工具
  • Shiro:安全框架
  • joda-time:简化时间处理
  • parboiled:表达式解析
  • dozer: 深拷贝神器
  • dubbo: 阿里巴巴出品的分布式服务框架
  • jackson databind: json序列化工具(fastjson,simplejson)
  • Atomikos: 分布式事务管理
  • BoneCP:性能很赞的数据库连接池组件,据说比c3p0快好多
  • ProGuard: obconfuscation tool, 强大的混淆工具
  • S-99:Scala相关的99个问题

Python

  • PyCharm:最佳Python IDE
  • Eric,Eclipse+pydev,比较不错的Python IDE
  • PyWin:Win32 api编程包
  • numpy:科学计算包,主要用来处理大型矩阵计算等,此外还有SciPy,Matplotlib
  • GUI相关:PyQt,PyQwt
  • supervisor:进程监控工具
  • PyGame: 基于Python的多媒体开发和游戏软件开发模块
  • Web框架: Django 开源web开发框架,它鼓励快速开发,并遵循MVC设计

.NET

  • Xilium.CefGlue:基于CEF框架的.NET封装,基于.NET开发Chrome内核浏览器
  • CefSharp:同上,有一款WebKit的封装,C#和Js交互会更简单
  • netz:免费的 .NET 可执行文件压缩工具
  • SmartAssembly:变态的.net代码优化混淆工具
  • NETDeob0:.net反混淆工具,真是魔高一尺道高一丈啊(还有个de4dot,在GitHub上,都是开源的)
  • ILMerge:将所有引用的DLL和exe文件打成一个exe文件
  • ILSpy:开源.net程序反编译工具
  • Javascript.NET:很不错的js执行引擎,对v8做了封装
  • NPOI: Excel操作
  • DotRAS:远程访问服务的模块
  • WinHtmlEditor: Winform下的html编辑器
  • SmartThreadPool:使用C#实现的,带高级特性的线程池
  • Snoop: WPF Spy Utility
  • Autofac: 轻量级IoC框架
  • HtmlAgilityPack:Html解析利器
  • Quartz.NET:Job调度
  • HttpLib:@CodePlex,简化http请求
  • SuperSocket:简化Socket操作,基于他的还有个SuperWebSocket,可以开发独立的WebSocket服务器了
  • DocX:未安装Office的情况下操作Word文件
  • Dapper:轻量级的ORM类,性能不错
  • HubbleDotNet:支持接入数据库的全文搜索系统
  • fastJSON:@CodeProject,高性能的json序列化类
  • ZXing.NET:@CodePlex,QR,条形码相关
  • Nancy:轻量级Http服务器,做个小型的Web应用可以摆脱IIS喽(Nancy.Viewengines.Razor,可以加入Razor引擎)
  • AntiXSS:微软的XSS防御库Microsoft Web Protection Library
  • Jint:JavaScript解释器
  • CS-Script:将C#代码文件作为脚本执行
  • Jexus:Linux下 高性能、易用、免费的ASP.NET服务器
  • Clay:将dynamic发挥的更加灵活,像写js一样写C#
  • DynamicJSON:不必定义数据模型获取json数据
  • SharpPcap:C#版的WinPcap调用端,牛逼的网络包分析库(自带PacketNotNet用于包协议分析)
  • Roslyn:C#,VB编译器
  • ImageResizer: 服务端自由控制图片大小,真乃神器也,对手机端传小图,PC端传大图,CMS用它很方便
  • UI相关:DevExpress, Fluent(Office 07风格), mui(Modern UI for WPF)
  • NetSparkle:应用自动更新组件
  • ConfuserEx: 开源.net混淆工具
  • ServiceStack: 开源高性能Web服务框架,可用于构建高性能的REST服务
  • Expression Evaluator:Eval for C#,处理字符串表达式
  • http://nugetmusthaves.com/
  • Reactive Extensions (Rx):异步,事件驱动编程包, Rx = Observables + LINQ + Schedulers

C & C++

  • Thrift:用来进行可扩展且跨语言的服务的开发(类似的还有个Avro,Google protobuf)。
  • libevent:是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。(对了还有个libev呢)
  • Boost:不多说了,准C++标准库
  • Valgrind/Ptmalloc/Purify: 调试工具
  • NetworkServer架构:acceptor->dispatcher->worker(这个不算工具哦)
  • breakpad:崩溃转储和分析模块,很多crashreport会用到
  • UI界面相关:MFC、BCG和QT这类的就不说了,高端一点的还有Html和DirectUI技术:libcef(基于chrome内核的,想想使用html5开发页面,还真有点小激动呢)、HtmlLayout、Duilib、Bolt,非C++的,还有node-webkit也不错,集成了node和webkit内核。

其他

游戏开发相关

  • MINA:使用Java开发手游和页游服务器(对了还有Netty,也很猛的,都是基于NIO的)
  • HP-Socket:见有有些页游服务器使用这个构建的
  • Unreal: 虚幻引擎,C++,基于这个引擎的游戏很多
  • OGRE:大名鼎鼎的3D图形渲染引擎,天龙八部OL、火炬之光等不少游戏都用了这个引擎
  • OpenVDB:梦工厂C++的特效库,开源的
  • cocos2d:跨平台2D游戏引擎
  • unity3d:跨平台3D游戏引擎,很火的哦
  • Nodejs:也有不少使用它来开发手游和也有服务器(网易的Pomelo)

日志聚合,分布式日志收集

  • Scribe:Facebook的(nodejs + scribe + inotify 同步日志)
  • logstash:强大的日志收集系统,可以基于logstash+kibana+elasticsearch+redis开发强大的日志分析平台
  • log.io: nodejs开发的实时日志收集系统

RTP,实时传输协议与音视频

  • RTP,RTCP,RTSP-> librtp,JRTPLIB(遵循了RFC1889标准)
  • 环形缓冲区,实时数据传输用
  • SDL,ffmpeg,live555,Speex
  • Red5:用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。

from:http://itindex.net/detail/56707-%E8%80%81%E5%8F%B8-%E7%A8%8B%E5%BA%8F%E5%91%98-%E8%B5%84%E6%96%99

Node.js Resource

Stack Overflow Documentation

Tutorials

Developer Sites

Videos

Screencasts

Books

Courses

Blogs

Podcasts

JavaScript resources

Node.js Modules

Other

First, learn the core concepts of Node.js:

Then, you’re going to want to see what the community has to offer:

The gold standard for Node.js package management is NPM.

Finally, you’re going to want to know what some of the more popular packages are for various tasks:

Useful Tools for Every Project:

  • Underscore contains just about every core utility method you want.
  • Lo-Dash is a clone of Underscore that aims to be faster, more customizable, and has quite a few functions that underscore doesn’t have. Certain versions of it can be used as drop-in replacements of underscore.
  • TypeScript makes JavaScript considerably more bearable, while also keeping you out of trouble!
  • JSHint is a code-checking tools that’ll save you loads of time finding stupid errors. Find a plugin for your text editor that will automatically run it on your code.

Unit Testing:

  • Mocha is a popular test framework.
  • Vows is a fantastic take on asynchronous testing, albeit somewhat stale.
  • Expresso is a more traditional unit testing framework.
  • node-unit is another relatively traditional unit testing framework.
  • AVA is a new test runner with Babel built-in and runs tests concurrently.

Web Frameworks:

  • Express.js is by far the most popular framework.
  • Koa is a new web framework designed by the team behind Express.js, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
  • sails.js the most popular MVC framework for Node.js, and is based on express. It is designed to emulate the familiar MVC pattern of frameworks like Ruby on Rails, but with support for the requirements of modern apps: data-driven APIs with a scalable, service-oriented architecture.
  • Meteor bundles together jQuery, Handlebars, Node.js, WebSocket, MongoDB, and DDP and promotes convention over configuration without being a Ruby on Rails clone.
  • Tower (deprecated) is an abstraction of top of Express.js that aims to be a Ruby on Rails clone.
  • Geddy is another take on web frameworks.
  • RailwayJS is a Ruby on Rails inspired MVC web framework.
  • Sleek.js is a simple web framework, built upon Express.js.
  • Hapi is a configuration-centric framework with built-in support for input validation, caching, authentication, etc.
  • Trails is a modern web application framework. It builds on the pedigree of Rails and Grails to accelerate development by adhering to a straightforward, convention-based, API-driven design philosophy.
  • Danf is a full-stack OOP framework providing many features in order to produce a scalable, maintainable, testable and performant applications and allowing to code the same way on both the server (Node.js) and client (browser) sides.
  • Derbyjs is a reactive full-stack JavaScript framework. They are using patterns like reactive programming and isomorphic JavaScript for a long time.
  • Loopback.io is a powerful Node.js framework for creating APIs and easily connecting to backend data sources. It has a Angular.js SDK and provides SDKs for iOS and Android.

Web Framework Tools:

Networking:

  • Connect is the Rack or WSGI of the Node.js world.
  • Request is a very popular HTTP request library.
  • socket.io is handy for building WebSocket servers.

Command Line Interaction:

  • minimist just command line argument parsing.
  • Yargs is a powerful library for parsing command-line arguments.
  • Commander.js is a complete solution for building single-use command-line applications.
  • Vorpal.js is a framework for building mature, immersive command-line applications.
  • Chalk makes your CLI output pretty.

Work with streams:

Others:

Node lesson
Growth: 全栈增长工程师指南
refer:http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-node-js

Python 资源大全

Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护。内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。

环境管理

管理 Python 版本和环境的工具

  • p – 非常简单的交互式 python 版本管理工具。
  • pyenv – 简单的 Python 版本管理工具。
  • Vex – 可以在虚拟环境中执行命令。
  • virtualenv – 创建独立 Python 环境的工具。
  • virtualenvwrapper– virtualenv 的一组扩展。

包管理

管理包和依赖的工具。

  • pip – Python 包和依赖关系管理工具。
  • pip-tools – 保证 Python 包依赖关系更新的一组工具。
  • conda – 跨平台,Python 二进制包管理工具。
  • Curdling – 管理 Python 包的命令行工具。
  • wheel – Python 分发的新标准,意在取代 eggs。

包仓库

本地 PyPI 仓库服务和代理。

  • warehouse – 下一代 PyPI。
  • devpi – PyPI 服务和打包/测试/分发工具。
  • localshop – 本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。

分发

打包为可执行文件以便分发。

  • PyInstaller – 将 Python 程序转换成独立的执行文件(跨平台)。
  • dh-virtualenv – 构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。
  • Nuitka – 将脚本、模块、包编译成可执行文件或扩展模块。
  • py2app – 将 Python 脚本变为独立软件包(Mac OS X)。
  • py2exe – 将 Python 脚本变为独立软件包(Windows)。
  • pynsist – 一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python本身。

构建工具

将源码编译成软件。

  • buildout – 一个构建系统,从多个组件来创建,组装和部署应用。
  • BitBake – 针对嵌入式 Linux 的类似 make 的构建工具。
  • fabricate – 对任何语言自动找到依赖关系的构建工具。
  • PlatformIO – 多平台命令行构建工具。
  • PyBuilder – 纯 Python 实现的持续化构建工具。
  • SCons – 软件构建工具。

交互式解析器

交互式 Python 解析器。

文件

文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。

  • imghdr – (Python 标准库)检测图片类型。
  • mimetypes – (Python 标准库)将文件名映射为 MIME 类型。
  • path.py – 对 os.path 进行封装的模块。
  • pathlib – (Python3.4+ 标准库)跨平台的、面向对象的路径操作库。
  • python-magic– 文件类型检测的第三方库 libmagic 的 Python 接口。
  • Unipath– 用面向对象的方式操作文件和目录
  • watchdog – 管理文件系统事件的 API 和 shell 工具

日期和时间

操作日期和时间的类库。

  • arrow– 更好的 Python 日期时间操作类库。
  • Chronyk – Python 3 的类库,用于解析手写格式的时间和日期。
  • dateutil – Python datetime 模块的扩展。
  • delorean– 解决 Python 中有关日期处理的棘手问题的库。
  • moment – 一个用来处理时间和日期的Python库。灵感来自于Moment.js。
  • PyTime – 一个简单易用的Python模块,用于通过字符串来操作日期/时间。
  • pytz – 现代以及历史版本的世界时区定义。将时区数据库引入Python。
  • when.py – 提供用户友好的函数来帮助用户进行常用的日期和时间操作。

文本处理

用于解析和操作文本的库。

  • 通用
    • chardet – 字符编码检测器,兼容 Python2 和 Python3。
    • difflib – (Python 标准库)帮助我们进行差异化比较。
    • ftfy – 让Unicode文本更完整更连贯。
    • fuzzywuzzy – 模糊字符串匹配。
    • Levenshtein – 快速计算编辑距离以及字符串的相似度。
    • pangu.py – 在中日韩语字符和数字字母之间添加空格。
    • pyfiglet -figlet 的 Python实现。
    • shortuuid – 一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。
    • unidecode – Unicode 文本的 ASCII 转换形式 。
    • uniout – 打印可读的字符,而不是转义的字符串。
    • xpinyin – 一个用于把汉字转换为拼音的库。
  • Slug化
    • awesome-slugify – 一个 Python slug 化库,可以保持 Unicode。
    • python-slugify – Python slug 化库,可以把 unicode 转化为 ASCII。
    • unicode-slugify – 一个 slug 工具,可以生成 unicode slugs ,需要依赖 Django 。
  • 解析器
    • phonenumbers – 解析,格式化,储存,验证电话号码。
    • PLY – lex 和 yacc 解析工具的 Python 实现。
    • Pygments – 通用语法高亮工具。
    • pyparsing – 生成通用解析器的框架。
    • python-nameparser – 把一个人名分解为几个独立的部分。
    • python-user-agents – 浏览器 user agent 解析器。
    • sqlparse – 一个无验证的 SQL 解析器。

特殊文本格式处理

一些用来解析和操作特殊文本格式的库。

  • 通用
    • tablib – 一个用来处理中表格数据的模块。
  • Office
    • Marmir – 把输入的Python 数据结构转换为电子表单。
    • openpyxl – 一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库。
    • python-docx – 读取,查询以及修改 Microsoft Word 2007/2008 docx 文件。
    • unoconv – 在 LibreOffice/OpenOffice 支持的任意文件格式之间进行转换。
    • XlsxWriter – 一个用于创建 Excel .xlsx 文件的 Python 模块。
    • xlwings – 一个使得在 Excel 中方便调用 Python 的库(反之亦然),基于 BSD 协议。
    • xlwt / xlrd – 读写 Excel 文件的数据和格式信息。
    • relatorio – 模板化OpenDocument 文件。
  • PDF
    • PDFMiner – 一个用于从PDF文档中抽取信息的工具。
    • PyPDF2 – 一个可以分割,合并和转换 PDF 页面的库。
    • ReportLab – 快速创建富文本 PDF 文档。
  • Markdown
    • Mistune – 快速并且功能齐全的纯 Python 实现的 Markdown 解析器。
    • Python-Markdown – John Gruber’s Markdown 的 Python 版实现。
  • YAML
    • PyYAML – Python 版本的 YAML 解析器。
  • CSV
    • csvkit – 用于转换和操作 CSV 的工具。
  • Archive
    • unp – 一个用来方便解包归档文件的命令行工具。

自然语言处理

用来处理人类语言的库。

  • NLTK – 一个先进的平台,用以构建处理人类语言数据的 Python 程序。
  • jieba – 中文分词工具。
  • langid.py – 独立的语言识别系统。
  • Pattern – Python 网络信息挖掘模块。
  • SnowNLP – 一个用来处理中文文本的库。
  • TextBlob – 为进行普通自然语言处理任务提供一致的 API。
  • TextGrocery – 一简单高效的短文本分类工具,基于 LibLinear 和 Jieba。

文档

用以生成项目文档的库。

  • Sphinx – Python 文档生成器。
  • MkDocs – 对 Markdown 友好的文档生成器。
  • pdoc – 一个可以替换Epydoc 的库,可以自动生成 Python 库的 API 文档。
  • Pycco – 文学编程(literate-programming)风格的文档生成器。

配置

用来保存和解析配置的库。

  • configlogging 模块作者写的分级配置模块。
  • ConfigObj – INI 文件解析器,带验证功能。
  • ConfigParser – (Python 标准库) INI 文件解析器。
  • profig – 通过多种格式进行配置,具有数值转换功能。
  • python-decouple – 将设置和代码完全隔离。

命令行工具

用于创建命令行程序的库。

  • 命令行程序开发
    • cement – Python 的命令行程序框架。
    • click – 一个通过组合的方式来创建精美命令行界面的包。
    • cliff – 一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。
    • clint – Python 命令行程序工具。
    • colorama – 跨平台彩色终端文本。
    • docopt – Python 风格的命令行参数解析器。
    • Gooey – 一条命令,将命令行程序变成一个 GUI 程序。
    • python-prompt-toolkit – 一个用于构建强大的交互式命令行程序的库。
  • 生产力工具
    • aws-cli – Amazon Web Services 的通用命令行界面。
    • bashplotlib – 在终端中进行基本绘图。
    • caniusepython3 – 判断是哪个项目妨碍你你移植到 Python 3。
    • cookiecutter – 从 cookiecutters(项目模板)创建项目的一个命令行工具。
    • doitlive – 一个用来在终端中进行现场演示的工具。
    • howdoi – 通过命令行获取即时的编程问题解答。
    • httpie – 一个命令行HTTP 客户端,cURL 的替代品,易用性更好。
    • PathPicker – 从bash输出中选出文件。
    • percol – 向UNIX shell 传统管道概念中加入交互式选择功能。
    • SAWS – 一个加强版的 AWS 命令行。
    • thefuck – 修正你之前的命令行指令。
    • mycli – 一个 MySQL 命令行客户端,具有自动补全和语法高亮功能。
    • pgcli – Postgres 命令行工具,具有自动补全和语法高亮功能。

下载器

用来进行下载的库.

  • s3cmd – 一个用来管理Amazon S3 和 CloudFront 的命令行工具。
  • s4cmd – 超级 S3 命令行工具,性能更加强劲。
  • you-get – 一个 YouTube/Youku/Niconico 视频下载器,使用 Python3 编写。
  • youtube-dl – 一个小巧的命令行程序,用来下载 YouTube 视频。

图像处理

用来操作图像的库.

  • pillow – Pillow 是一个更加易用版的 PIL
  • hmap – 图像直方图映射。
  • imgSeek – 一个使用视觉相似性搜索一组图片集合的项目。
  • nude.py – 裸体检测。
  • pyBarcode – 不借助 PIL 库在 Python 程序中生成条形码。
  • pygram – 类似 Instagram 的图像滤镜。
  • python-qrcode – 一个纯 Python 实现的二维码生成器。
  • Quads – 基于四叉树的计算机艺术。
  • scikit-image – 一个用于(科学)图像处理的 Python 库。
  • thumbor – 一个小型图像服务,具有剪裁,尺寸重设和翻转功能。
  • wandMagickWand的Python 绑定。MagickWand 是 ImageMagick的 C API 。

OCR

光学字符识别库。

音频

用来操作音频的库

  • audiolazy -Python 的数字信号处理包。
  • audioread – 交叉库 (GStreamer + Core Audio + MAD + FFmpeg) 音频解码。
  • beets – 一个音乐库管理工具及 MusicBrainz 标签添加工具
  • dejavu – 音频指纹提取和识别
  • django-elastic-transcoder – Django + Amazon Elastic Transcoder
  • eyeD3 – 一个用来操作音频文件的工具,具体来讲就是包含 ID3 元信息的 MP3 文件。
  • id3reader – 一个用来读取 MP3 元数据的 Python 模块。
  • m3u8 – 一个用来解析 m3u8 文件的模块。
  • mutagen – 一个用来处理音频元数据的 Python 模块。
  • pydub – 通过简单、简洁的高层接口来操作音频文件。
  • pyechonestEcho Nest API 的 Python 客户端
  • talkbox – 一个用来处理演讲/信号的 Python 库
  • TimeSide – 开源 web 音频处理框架。
  • tinytag – 一个用来读取MP3, OGG, FLAC 以及 Wave 文件音乐元数据的库。
  • mingus – 一个高级音乐理论和曲谱包,支持 MIDI 文件和回放功能。

Video

用来操作视频和GIF的库。

  • moviepy – 一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图 GIFs。
  • scikit-video – SciPy 视频处理常用程序。

地理位置

地理编码地址以及用来处理经纬度的库。

  • GeoDjango – 世界级地理图形 web 框架。
  • GeoIP – MaxMind GeoIP Legacy 数据库的 Python API。
  • geojson – GeoJSON 的 Python 绑定及工具。
  • geopy – Python 地址编码工具箱。
  • pygeoip – 纯 Python GeoIP API。
  • django-countries – 一个 Django 应用程序,提供用于表格的国家选择功能,国旗图标静态文件以及模型中的国家字段。

HTTP

使用HTTP的库。

  • requests – 人性化的HTTP请求库。
  • grequests – requests 库 + gevent ,用于异步 HTTP 请求.
  • httplib2 – 全面的 HTTP 客户端库。
  • treq – 类似 requests 的Python API 构建于 Twisted HTTP 客户端之上。
  • urllib3 – 一个具有线程安全连接池,支持文件 post,清晰友好的 HTTP 库。

数据库

Python实现的数据库。

  • pickleDB – 一个简单,轻量级键值储存数据库。
  • PipelineDB – 流式 SQL 数据库。
  • TinyDB – 一个微型的,面向文档型数据库。
  • ZODB – 一个 Python 原生对象数据库。一个键值和对象图数据库。

数据库驱动

用来连接和操作数据库的库。

  • MySQL – awesome-mysql系列
    • mysql-python – Python 的 MySQL 数据库连接器。
    • mysqlclient – mysql-python 分支,支持 Python 3。
    • oursql – 一个更好的 MySQL 连接器,支持原生预编译指令和 BLOBs.
    • PyMySQL – 纯 Python MySQL 驱动,兼容 mysql-python。
  • PostgreSQL
    • psycopg2 – Python 中最流行的 PostgreSQL 适配器。
    • queries – psycopg2 库的封装,用来和 PostgreSQL 进行交互。
    • txpostgres – 基于 Twisted 的异步 PostgreSQL 驱动。
  • 其他关系型数据库
    • apsw – 另一个 Python SQLite封装。
    • dataset – 在数据库中存储Python字典 – 可以协同SQLite,MySQL,和 PostgreSQL工作。
    • pymssql– 一个简单的Microsoft SQL Server数据库接口。
  • NoSQL 数据库
    • cassandra-python-driver – Cassandra 的 Python 驱动。
    • HappyBase – 一个为 Apache HBase 设计的,对开发者友好的库。
    • Plyvel – 一个快速且功能丰富的 LevelDB 的 Python 接口。
    • py2neo – Neo4j restful 接口的Python 封装客户端。
    • pycassa – Cassandra 的 Python Thrift 驱动。
    • PyMongo – MongoDB 的官方 Python 客户端。
    • redis-py – Redis 的 Python 客户端。
    • telephus – 基于 Twisted 的 Cassandra 客户端。
    • txRedis – 基于 Twisted 的 Redis 客户端。

ORM

实现对象关系映射或数据映射技术的库。

  • 关系型数据库
  • NoSQL 数据库
    • django-mongodb-engine – Django MongoDB 后端。
    • PynamoDBAmazon DynamoDB 的一个 Python 风格接口。
    • flywheel – Amazon DynamoDB 的对象映射工具。
    • MongoEngine – 一个Python 对象文档映射工具,用于 MongoDB。
    • hot-redis – 为 Redis 提供 Python 丰富的数据类型。
    • redisco – 一个 Python 库,提供可以持续存在在 Redis 中的简单模型和容器。
  • 其他
    • butterdb – Google Drive 电子表格的 Python ORM。

Web 框架

全栈 web 框架。

  • Django – Python 界最流行的 web 框架。
  • Flask – 一个 Python 微型框架。
  • Pyramid – 一个小巧,快速,接地气的开源Python web 框架。
  • Bottle – 一个快速小巧,轻量级的 WSGI 微型 web 框架。
  • CherryPy – 一个极简的 Python web 框架,服从 HTTP/1.1 协议且具有WSGI 线程池。
  • TurboGears – 一个可以扩展为全栈解决方案的微型框架。
  • web.py – 一个 Python 的 web 框架,既简单,又强大。
  • web2py – 一个全栈 web 框架和平台,专注于简单易用。
  • Tornado – 一个web 框架和异步网络库。

权限

允许或拒绝用户访问数据或功能的库。

  • Carteblanche – Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.
  • django-guardian – Django 1.2+ 实现了单个对象权限。
  • django-rules – 一个小巧但是强大的应用,提供对象级别的权限管理,且不需要使用数据库。

CMS

内容管理系统

  • django-cms – 一个开源的,企业级 CMS,基于 Django。
  • djedi-cms – 一个轻量级但却非常强大的 Django CMS ,考虑到了插件,内联编辑以及性能。
  • FeinCMS – 基于 Django 构建的最先进的内容管理系统之一。
  • Kotti – 一个高级的,Python 范的 web 应用框架,基于 Pyramid 构建。
  • Mezzanine – 一个强大的,持续的,灵活的内容管理平台。
  • Opps – 一个为杂志,报纸网站以及大流量门户网站设计的 CMS 平台,基于 Django。
  • Plone – 一个构建于开源应用服务器 Zope 之上的 CMS。
  • Quokka – 灵活,可扩展的小型 CMS,基于 Flask 和 MongoDB。
  • Wagtail – 一个 Django 内容管理系统。
  • Widgy – 最新的 CMS 框架,基于 Django。

电子商务

用于电子商务以及支付的框架和库。

  • django-oscar – 一个用于 Django 的开源的电子商务框架。
  • django-shop – 一个基于 Django 的店铺系统。
  • Cartridge – 一个基于 Mezzanine 构建的购物车应用。
  • shoop – 一个基于 Django 的开源电子商务平台。
  • alipay – 非官方的 Python 支付宝 API。
  • merchant – 一个可以接收来自多种支付平台支付的 Django 应用。
  • money – 货币类库with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.
  • python-currencies – 显示货币格式以及它的数值。

RESTful API

用来开发RESTful APIs的库

  • Django
  • Flask
    • flask-api – 为 flask 开发的,可浏览 Web APIs 。
    • flask-restful – 为 flask 快速创建REST APIs 。
    • flask-restless – 为 SQLAlchemy 定义的数据库模型创建 RESTful APIs 。
    • flask-api-utils – 为 Flask 处理 API 表示和验证。
    • eve – REST API 框架,由 Flask, MongoDB 等驱动。
  • Pyramid
    • cornice – 一个Pyramid 的 REST 框架 。
  • 与框架无关的
    • falcon – 一个用来建立云 API 和 web app 后端的噶性能框架。
    • sandman – 为现存的数据库驱动系统自动创建 REST APIs 。
    • restless – 框架无关的 REST 框架 ,基于从 Tastypie 学到的知识。
    • ripozo – 快速创建 REST/HATEOAS/Hypermedia APIs。

验证

实现验证方案的库。

  • OAuth
    • Authomatic – 简单但是强大的框架,身份验证/授权客户端。
    • django-allauth – Django 的验证应用。
    • django-oauth-toolkit – 为 Django 用户准备的 OAuth2。
    • django-oauth2-provider – 为 Django 应用提供 OAuth2 接入。
    • Flask-OAuthlib – OAuth 1.0/a, 2.0 客户端实现,供 Flask 使用。
    • OAuthLib – 一个 OAuth 请求-签名逻辑通用、 完整的实现。
    • python-oauth2 – 一个完全测试的抽象接口。用来创建 OAuth 客户端和服务端。
    • python-social-auth – 一个设置简单的社会化验证方式。
    • rauth – OAuth 1.0/a, 2.0, 和 Ofly 的 Python 库。
    • sanction – 一个超级简单的OAuth2 客户端实现。
  • 其他
    • jose – JavaScript 对象签名和加密草案的实现。
    • PyJWT – JSON Web 令牌草案 01。
    • python-jws – JSON Web 签名草案 02 的实现。
    • python-jwt – 一个用来生成和验证 JSON Web 令牌的模块。

模板引擎

模板生成和词法解析的库和工具。

  • Jinja2 – 一个现代的,对设计师友好的模板引擎。
  • Chameleon – 一个 HTML/XML 模板引擎。 模仿了 ZPT(Zope Page Templates), 进行了速度上的优化。
  • Genshi – Python 模板工具,用以生成 web 感知的结果。
  • Mako – Python 平台的超高速轻量级模板。

Queue

处理事件以及任务队列的库。

  • celery – 一个异步任务队列/作业队列,基于分布式消息传递。
  • huey – 小型多线程任务队列。
  • mrq – Mr. Queue -一个 Python 的分布式 worker 任务队列, 使用 Redis 和 gevent。
  • rq – 简单的 Python 作业队列。
  • simpleq – 一个简单的,可无限扩张的,基于亚马逊 SQS 的队列。

搜索

对数据进行索引和执行搜索查询的库和软件。

动态消息

用来创建用户活动的库。

资源管理

管理、压缩、缩小网站资源的工具。

  • django-compressor – 将链接和内联的 JavaScript 或 CSS 压缩到一个单独的缓存文件中。
  • django-storages – 一个针对 Django 的自定义存储后端的工具集合。
  • fanstatic – 打包、优化,并且把静态文件依赖作为 Python 的包来提供。
  • File Conveyor – 一个后台驻留的程序,用来发现和同步文件到 CDNs, S3 和 FTP。
  • Flask-Assets – 帮你将 web 资源整合到你的 Flask app 中。
  • jinja-assets-compressor – 一个 Jinja 扩展,用来编译和压缩你的资源。
  • webassets – 为你的静态资源打包、优化和管理生成独一无二的缓存 URL。

缓存

缓存数据的库。

  • Beaker – 一个缓存和会话库,可以用在 web 应用和独立 Python脚本和应用上。
  • django-cache-machine – Django 模型的自动缓存和失效。
  • django-cacheops– 具有自动颗粒化事件驱动失效功能的 ORM。
  • django-viewlet – 渲染模板,同时具有额外的缓存控制功能。
  • dogpile.cache – dogpile.cache 是 Beaker 的下一代替代品,由同一作者开发。
  • HermesCache – Python 缓存库,具有基于标签的失效和 dogpile effect 保护功能。
  • johnny-cache – django应用缓存框架。
  • pylibmclibmemcached 接口的 Python 封装。

电子邮件

用来发送和解析电子邮件的库。

  • django-celery-ses – 带有 AWS SES 和 Celery 的 Django email 后端。
  • envelopes – 供人类使用的电子邮件库。
  • flanker – 一个 email 地址和 Mime 解析库。
  • imbox – Python IMAP 库
  • inbox.py – Python SMTP 服务器。
  • inbox – 一个开源电子邮件工具箱。
  • lamson – Python 风格的 SMTP 应用服务器。
  • mailjet – Mailjet API 实现,用来提供批量发送邮件,统计等功能。
  • marrow.mailer – 高性能可扩展邮件分发框架。
  • modoboa – 一个邮件托管和管理平台,具有现代的、简约的 Web UI。
  • pyzmail – 创建,发送和解析电子邮件。
  • Talon – Mailgun 库,用来抽取信息和签名。

国际化

用来进行国际化的库。

  • Babel – 一个Python 的国际化库。
  • Korean – 一个韩语词态库。

URL处理

解析URLs的库

  • furl – 一个让处理 URL 更简单小型 Python 库。
  • purl – 一个简单的,不可变的URL类,具有简洁的 API 来进行询问和处理。
  • pyshorteners – 一个纯 Python URL 缩短库。
  • shorturl– 生成短小 URL 和类似 bit.ly 短链的Python 实现。
  • webargs – 一个解析 HTTP 请求参数的库,内置对流行 web 框架的支持,包括 Flask, Django, Bottle, Tornado和 Pyramid。

HTML处理

处理 HTML和XML的库。

  • BeautifulSoup – 以 Python 风格的方式来对 HTML 或 XML 进行迭代,搜索和修改。
  • bleach – 一个基于白名单的 HTML 清理和文本链接库。
  • cssutils – 一个 Python 的 CSS 库。
  • html5lib – 一个兼容标准的 HTML 文档和片段解析及序列化库。
  • lxml – 一个非常快速,简单易用,功能齐全的库,用来处理 HTML 和 XML。
  • MarkupSafe – 为Python 实现 XML/HTML/XHTML 标记安全字符串。
  • pyquery – 一个解析 HTML 的库,类似 jQuery。
  • untangle – 将XML文档转换为Python对象,使其可以方便的访问。
  • xhtml2pdf – HTML/CSS 转 PDF 工具。
  • xmltodict – 像处理 JSON 一样处理 XML。

网络站点爬取

爬取网络站点的库

  • Scrapy – 一个快速高级的屏幕爬取及网页采集框架。
  • cola – 一个分布式爬虫框架。
  • Demiurge – 基于PyQuery 的爬虫微型框架。
  • feedparser – 通用 feed 解析器。
  • Grab – 站点爬取框架。
  • MechanicalSoup – 用于自动和网络站点交互的 Python 库。
  • portia – Scrapy 可视化爬取。
  • pyspider – 一个强大的爬虫系统。
  • RoboBrowser – 一个简单的,Python 风格的库,用来浏览网站,而不需要一个独立安装的浏览器。

网页内容提取

用于进行网页内容提取的库。

  • Haul – 一个可以扩展的图像爬取工具。
  • html2text – 将 HTML 转换为 Markdown 格式文本
  • lassie – 人性化的网页内容检索库。
  • micawber -一个小型网页内容提取库,用来从 URLs 提取富内容。
  • newspaper – 使用 Python 进行新闻提取,文章提取以及内容策展。
  • opengraph – 一个用来解析开放内容协议(Open Graph Protocol)的 Python模块。
  • python-goose – HTML内容/文章提取器。
  • python-readability– arc90 公司 readability 工具的 Python 高速端口
  • sanitize – 为杂乱的数据世界带来调理性。
  • sumy – 一个为文本文件和 HTML 页面进行自动摘要的模块。
  • textract – 从任何格式的文档中提取文本,Word,PowerPoint,PDFs 等等。

表单

进行表单操作的库。

  • Deform – Python HTML 表单生成库,受到了 formish 表单生成库的启发。
  • django-bootstrap3– 集成了 Bootstrap 3 的 Django。
  • django-crispy-forms – 一个 Django 应用,他可以让你以一种非常优雅且 DRY(Don’t repeat yourself) 的方式来创建美观的表单。
  • django-remote-forms– 一个平台独立的 Django 表单序列化工具。
  • WTForms – 一个灵活的表单验证和呈现库。
  • WTForms-JSON– 一个 WTForms 扩展,用来处理 JSON 数据。

数据验证

数据验证库。多用于表单验证。

  • Cerberus – A mappings-validator with a variety of rules, normalization-features and simple customization that uses a pythonic schema-definition.
  • colander – 一个用于对从 XML, JSON,HTML 表单获取的数据或其他同样简单的序列化数据进行验证和反序列化的系统。
  • kmatch – 一种用于匹配/验证/筛选 Python 字典的语言。
  • schema -一个用于对 Python 数据结构进行验证的库。
  • Schematics – 数据结构验证。
  • valideer – 轻量级可扩展的数据验证和适配库。
  • voluptuous – 一个 Python 数据验证库。主要是为了验证传入 Python的 JSON,YAML 等数据。

反垃圾技术

帮助你和电子垃圾进行战斗的库。

标记

用来进行标记的库。

管理面板

管理界面库。

  • Ajenti – 一个你的服务器值得拥有的管理面板。
  • django-suit – Django 管理界面的一个替代品 (仅对于非商业用途是免费的)。
  • django-xadmin – Django admin 的一个替代品,具有很多不错的功能。
  • flask-admin – 一个用于 Flask 的简单可扩展的管理界面框架。
  • flower – 一个对 Celery 集群进行实时监控和提供 web 管理界面的工具。
  • Grappelli – Django 管理界面的一个漂亮的皮肤。
  • Wooey – 一个 Django 应用,可以为 Python 脚本创建 web 用户界面。

静态站点生成器

静态站点生成器是一个软件,它把文本和模板作为输入,然后输出HTML文件。

  • Pelican – 使用 Markdown 或 ReST 来处理内容, Jinja 2 来制作主题。支持 DVCS, Disqus.。AGPL 许可。
  • Cactus – 为设计师设计的静态站点生成器。
  • Hyde – 基于 Jinja2 的静态站点生成器。
  • Nikola – 一个静态网站和博客生成器。
  • Tinkerer – Tinkerer 是一个博客引擎/静态站点生成器,由Sphinx驱动。
  • Lektor – 一个简单易用的静态 CMS 和博客引擎。

进程

操作系统进程启动及通信库。

  • envoy – 比 Python subprocess 模块更人性化。
  • sarge – 另一 种 subprocess 模块的封装。
  • sh – 一个完备的 subprocess 替代库。

并发和并行

用以进行并发和并行操作的库。

  • multiprocessing – (Python 标准库) 基于进程的“线程”接口。
  • threading – (Python 标准库)更高层的线程接口。
  • eventlet – 支持 WSGI 的异步框架。
  • gevent – 一个基于协程的 Python 网络库,使用greenlet
  • Tomorrow -用于产生异步代码的神奇的装饰器语法实现。

网络

用于网络编程的库。

  • asyncio – (Python 标准库) 异步 I/O, 事件循环, 协程以及任务。
  • Twisted – 一个事件驱动的网络引擎。
  • pulsar – 事件驱动的并发框架。
  • diesel – 基于Greenlet 的事件 I/O 框架。
  • pyzmq – 一个 ZeroMQ 消息库的 Python 封装。
  • txZMQ – 基于 Twisted 的 ZeroMQ 消息库的 Python 封装。

WebSocket

帮助使用WebSocket的库。

  • AutobahnPython – 给 Python 、使用的 WebSocket & WAMP 基于 Twisted 和 asyncio
  • Crossbar – 开源统一应用路由(Websocket & WAMP for Python on Autobahn).
  • django-socketio – 给 Django 用的 WebSockets。
  • WebSocket-for-Python – 为Python2/3 以及 PyPy 编写的 WebSocket 客户端和服务器库。

WSGI 服务器

兼容 WSGI 的 web 服务器

  • gunicorn – Pre-forked, 部分是由 C 语言编写的。
  • uwsgi – uwsgi 项目的目的是开发一组全栈工具,用来建立托管服务, 由 C 语言编写。
  • bjoern – 异步,非常快速,由 C 语言编写。
  • fapws3 – 异步 (仅对于网络端),由 C 语言编写。
  • meinheld – 异步,部分是由 C 语言编写的。
  • netius – 异步,非常快速。
  • paste – 多线程,稳定,久经考验。
  • rocket – 多线程。
  • waitress – 多线程, 是它驱动着 Pyramid 框架。
  • Werkzeug – 一个 WSGI 工具库,驱动着 Flask ,而且可以很方便大嵌入到你的项目中去。

RPC 服务器

兼容 RPC 的服务器。

  • SimpleJSONRPCServer – 这个库是 JSON-RPC 规范的一个实现。
  • SimpleXMLRPCServer – (Python 标准库) 简单的 XML-RPC 服务器实现,单线程。
  • zeroRPC – zerorpc 是一个灵活的 RPC 实现,基于 ZeroMQ 和 MessagePack。

密码学

  • cryptography – 这个软件包意在提供密码学基本内容和方法提供给 Python 开发者。
  • hashids – 在 Python 中实现 hashids
  • Paramiko – SSHv2 协议的 Python (2.6+, 3.3+) ,提供客户端和服务端的功能。
  • Passlib – 安全密码存储/哈希库,
  • PyCrypto – Python 密码学工具箱。
  • PyNacl – 网络和密码学(NaCl) 库的 Python 绑定。

图形用户界面

用来创建图形用户界面程序的库。

  • curses – 内建的 ncurses 封装,用来创建终端图形用户界面。
  • enaml – 使用类似 QML 的Declaratic语法来创建美观的用户界面。
  • kivy – 一个用来创建自然用户交互(NUI)应用程序的库,可以运行在 Windows, Linux, Mac OS X, Android 以及 iOS平台上。
  • pyglet – 一个Python 的跨平台窗口及多媒体库。
  • PyQt – 跨平台用户界面框架 Qt 的 Python 绑定 ,支持Qt v4 和 Qt v5。
  • PySide – P跨平台用户界面框架 Qt 的 Python 绑定 ,支持Qt v4。
  • Tkinter – Tkinter 是 Python GUI 的一个事实标准库。
  • Toga – 一个 Python 原生的, 操作系统原生的 GUI 工具包。
  • urwid – 一个用来创建终端 GUI 应用的库,支持组件,事件和丰富的色彩等。
  • wxPython – wxPython 是 wxWidgets C++ 类库和 Python 语言混合的产物。
  • PyGObject – GLib/GObject/GIO/GTK+ (GTK+3) 的 Python 绑定
  • Flexx – Flexx 是一个纯 Python 语言编写的用来创建 GUI 程序的工具集,它使用 web 技术进行界面的展示。

游戏开发

超赞的游戏开发库。

  • Cocos2d – cocos2d 是一个用来开发 2D 游戏, 示例和其他图形/交互应用的框架。基于 pyglet。
  • Panda3D – 由迪士尼开发的 3D 游戏引擎,并由卡内基梅陇娱乐技术中心负责维护。使用C++编写, 针对 Python 进行了完全的封装。
  • Pygame – Pygame 是一组 Python 模块,用来编写游戏。
  • PyOgre – Ogre 3D 渲染引擎的 Python 绑定,可以用来开发游戏和仿真程序等任何 3D 应用。
  • PyOpenGL – OpenGL 的 Python 绑定及其相关 APIs。
  • PySDL2 – SDL2 库的封装,基于 ctypes。
  • RenPy – 一个视觉小说(visual novel)引擎。

日志

用来生成和操作日志的库。

  • logging – (Python 标准库) 为 Python 提供日志功能。
  • logbook – Logging 库的替代品。
  • Eliot – 为复杂的和分布式系统创建日志。
  • Raven – Sentry的 Python 客户端。
  • Sentry – 实时记录和收集日志的服务器。

Testing

进行代码库测试和生成测试数据的库。

  • 测试框架
    • unittest – (Python 标准库) 单元测试框架。
    • nose – nose 扩展了 unittest 的功能。
    • contexts – 一个 Python 3.3+ 的 BDD 框架。受到C# – Machine.Specifications的启发。
    • hypothesis – Hypothesis 是一个基于先进的 Quickcheck 风格特性的测试库。
    • mamba – Python 的终极测试工具, 拥护BDD。
    • PyAutoGUI – PyAutoGUI 是一个人性化的跨平台 GUI 自动测试模块。
    • pyshould– Should 风格的断言,基于 PyHamcrest
    • pytest– 一个成熟的全功能 Python 测试工具。
    • green– 干净,多彩的测试工具。
    • pyvows– BDD 风格的测试工具,受Vows.js的启发。
    • Robot Framework – 一个通用的自动化测试框架。
  • Web 测试
    • SeleniumSelenium WebDriver 的 Python 绑定。
    • locust – 使用 Python 编写的,可扩展的用户加载测试工具。
    • sixpack – 一个和语言无关的 A/B 测试框架。
    • splinter – 开源的 web 应用测试工具。
  • Mock测试
    • mock – (Python 标准库) 一个用于伪造测试的库。
    • doublex – Python 的一个功能强大的 doubles 测试框架。
    • freezegun – 通过伪造日期模块来生成不同的时间。
    • httmock – 针对 Python 2.6+ 和 3.2+ 生成 伪造请求的库。
    • httpretty – Python 的 HTTP 请求 mock 工具。
    • responses – 伪造 Python 中的 requests 库的一个通用库。
    • VCR.py – 在你的测试中记录和重放 HTTP 交互。
  • 对象工厂
    • factoryboy – 一个 Python 用的测试固件 (test fixtures) 替代库。
    • mixer – 另外一个测试固件 (test fixtures) 替代库,支持 Django, Flask, SQLAlchemy, Peewee 等。
    • modelmommy – 为 Django 测试创建随机固件
  • 代码覆盖率
  • 伪数据
    • faker – 一个 Python 库,用来生成伪数据。
    • fake2db – 伪数据库生成器。
    • radar – 生成随机的日期/时间。
  • 错误处理
    • FuckIt.py – FuckIt.py 使用最先进的技术来保证你的 Python 代码无论对错都能继续运行。

代码分析和Lint工具

进行代码分析,解析和操作代码库的库和工具。

  • 代码分析
    • code2flow – 把你的 Python 和 JavaScript 代码转换为流程图。
    • pycallgraph -这个库可以把你的Python 应用的流程(调用图)进行可视化。
    • pysonar2 – Python 类型推断和检索工具。
  • Lint工具
    • Flake8 – 模块化源码检查工具: pep8, pyflakes 以及 co。
    • Pylint – 一个完全可定制的源码分析器。
    • pylama – Python 和 JavaScript 的代码审查工具。

Debugging Tools

用来进行代码调试的库。

  • 调试器
    • ipdb – IPython 启用的 pdb
    • pudb – 全屏,基于控制台的 Python 调试器。
    • pyringe – 可以在 Python 进程中附加和注入代码的调试器。
    • wdb – 一个奇异的 web 调试器,通过 WebSockets 工作。
    • winpdb – 一个具有图形用户界面的 Python 调试器,可以进行远程调试,基于 rpdb2。
    • django-debug-toolbar – 为 Django 显示各种调试信息。
    • django-devserver – 一个 Django 运行服务器的替代品。
    • flask-debugtoolbar – django-debug-toolbar 的 flask 版。
  • 性能分析器
  • 其他

Science and Data Analysis

用来进行科学计算和数据分析的库。

  • astropy – 一个天文学 Python 库。
  • bcbio-nextgen – 这个工具箱为全自动高通量测序分析提供符合最佳实践的处理流程。
  • bccb – 生物分析相关代码集合
  • Biopython – Biopython 是一组可以免费使用的用来进行生物计算的工具。
  • blaze – NumPy 和 Pandas 的大数据接口。
  • cclib – 一个用来解析和解释计算化学软件包输出结果的库。
  • NetworkX – 一个为复杂网络设计的高性能软件。
  • Neupy – 执行和测试各种不同的人工神经网络算法。
  • Numba – Python JIT (just in time) 编译器,针对科学用的 Python ,由Cython 和 NumPy 的开发者开发。
  • NumPy – 使用 Python 进行科学计算的基础包。
  • Open Babel – 一个化学工具箱,用来描述多种化学数据。
  • Open Mining – 使用 Python 挖掘商业情报 (BI) (Pandas web 接口)。
  • orange – 通过可视化编程或 Python 脚本进行数据挖掘,数据可视化,分析和机器学习。
  • Pandas – 提供高性能,易用的数据结构和数据分析工具。
  • PyDy – PyDy 是 Python Dynamics 的缩写,用来为动力学运动建模工作流程提供帮助, 基于 NumPy, SciPy, IPython 和 matplotlib。
  • PyMC – 马尔科夫链蒙特卡洛采样工具。
  • RDKit – 化学信息学和机器学习软件。
  • SciPy – 由一些基于 Python ,用于数学,科学和工程的开源软件构成的生态系统。
  • statsmodels – 统计建模和计量经济学。
  • SymPy – 一个用于符号数学的 Python 库。
  • zipline – 一个 Python 算法交易库。

数据可视化

进行数据可视化的库。 参见: awesome-javascript

  • matplotlib – 一个 Python 2D 绘图库。
  • bokeh – 用 Python 进行交互式 web 绘图。
  • ggplot – ggplot2 给 R 提供的 API 的 Python 版本。
  • plotly – 协同 Python 和 matplotlib 工作的 web 绘图库。
  • pygal – 一个 Python SVG 图表创建工具。
  • pygraphviz – Graphviz 的 Python 接口。
  • PyQtGraph – 交互式实时2D/3D/图像绘制及科学/工程学组件。
  • SnakeViz – 一个基于浏览器的 Python’s cProfile 模块输出结果查看工具。
  • vincent – 把 Python 转换为 Vega 语法的转换工具。
  • VisPy – 基于 OpenGL 的高性能科学可视化工具。

计算机视觉

计算机视觉库。

  • OpenCV – 开源计算机视觉库。
  • SimpleCV – 一个用来创建计算机视觉应用的开源框架。

机器学习

机器学习库。 参见: awesome-machine-learning.

  • Crab – 灵活、快速的推荐引擎。
  • gensim – 人性化的话题建模库。
  • hebel – GPU 加速的深度学习库。
  • NuPIC – 智能计算 Numenta 平台。
  • pattern – Python 网络挖掘模块。
  • PyBrain – 另一个 Python 机器学习库。
  • Pylearn2 – 一个基于 Theano 的机器学习库。
  • python-recsys – 一个用来实现推荐系统的 Python 库。
  • scikit-learn – 基于 SciPy 构建的机器学习 Python 模块。
  • pydeep – Python 深度学习库。
  • vowpalporpoise – 轻量级 Vowpal Wabbit 的 Python 封装。
  • skflow – 一个 TensorFlow 的简化接口(模仿 scikit-learn)。

MapReduce

MapReduce 框架和库。

  • dpark – Spark 的 Python 克隆版,一个类似 MapReduce 的框架。
  • dumbo – 这个 Python 模块可以让人轻松的编写和运行 Hadoop 程序。
  • luigi – 这个模块帮你构建批处理作业的复杂流水线。
  • mrjob – 在 Hadoop 或 Amazon Web Services 上运行 MapReduce 任务。
  • PySpark – Spark 的 Python API 。
  • streamparse – 运行针对事实数据流的 Python 代码。集成了Apache Storm

函数式编程

使用 Python 进行函数式编程。

  • CyToolz – Toolz 的 Cython 实现 : 高性能函数式工具。
  • fn.py – 在 Python 中进行函数式编程 : 实现了一些享受函数式编程缺失的功能。
  • funcy – 炫酷又实用的函数式工具。
  • Toolz – 一组用于迭代器,函数和字典的函数式编程工具。

第三方 API

用来访问第三方 API的库。 参见: List of Python API Wrappers and Libraries

  • apache-libcloud – 一个为各种云设计的 Python 库。
  • boto – Amazon Web Services 的 Python 接口。
  • django-wordpress – WordPress models and views for Django.
  • facebook-sdk – Facebook 平台的 Python SDK.
  • facepy – Facepy 让和 Facebook’s Graph API 的交互变得更容易。
  • gmail – Gmail 的 Python 接口。
  • google-api-python-client – Python 用的 Google APIs 客户端库。
  • gspread – Google 电子表格的 Python API.
  • twython – Twitter API 的封装。

DevOps 工具

用于 DevOps 的软件和库。

  • Ansible – 一个非常简单的 IT 自动化平台。
  • SaltStack – 基础设施自动化和管理系统。
  • OpenStack – 用于构建私有和公有云的开源软件。
  • Docker Compose – 快速,分离的开发环境,使用 Docker。
  • Fabric – 一个简单的,Python 风格的工具,用来进行远程执行和部署。
  • cuisine – 为 Fabric 提供一系列高级函数。
  • Fabtools – 一个用来编写超赞的 Fabric 文件的工具。
  • gitapi – Git 的纯 Python API。
  • hgapi – Mercurial 的纯 Python API。
  • honchoForeman的 Python 克隆版,用来管理基于Procfile的应用。
  • pexpect – Controlling interactive programs in a pseudo-terminal like 在一个伪终端中控制交互程序,就像 GNU expect 一样。
  • psutil – 一个跨平台进程和系统工具模块。
  • supervisor – UNIX 的进程控制系统。

任务调度

任务调度库。

  • APScheduler – 轻巧但强大的进程内任务调度,使你可以调度函数。
  • django-schedule – 一个 Django 排程应用。
  • doit – 一个任务执行和构建工具。
  • gunnery – 分布式系统使用的多用途任务执行工具 ,具有 web 交互界面。
  • Joblib – 一组为 Python 提供轻量级作业流水线的工具。
  • Plan – 如有神助地编写 crontab 文件。
  • schedule – 人性化的 Python 任务调度库。
  • Spiff – 使用纯 Python 实现的强大的工作流引擎。
  • TaskFlow – 一个可以让你方便执行任务的 Python 库,一致并且可靠。

外来函数接口

使用外来函数接口的库。

  • cffi – 用来调用 C 代码的外来函数接口。
  • ctypes – (Python 标准库) 用来调用 C 代码的外来函数接口。
  • PyCUDA – Nvidia CUDA API 的封装。
  • SWIG – 简化的封装和接口生成器。

高性能

让 Python 更快的库。

  • Cython – 优化的 Python 静态编译器。使用类型混合使 Python 编译成 C 或 C++ 模块来获得性能的极大提升。
  • PeachPy – 嵌入 Python 的 x86-64 汇编器。可以被用作 Python 内联的汇编器或者是独立的汇编器,用于 Windows, Linux, OS X, Native Client 或者 Go 。
  • PyPy – 使用 Python 实现的 Python。解释器使用黑魔法加快 Python 运行速度且不需要加入额外的类型信息。
  • Pyston – 使用 LLVM 和现代 JIT 技术构建的 Python 实现,目标是为了获得很好的性能。
  • Stackless Python – 一个强化版的 Python。

微软的 Windows平台

在 Windows 平台上进行 Python 编程。

  • Python(x,y) – 面向科学应用的 Python 发行版,基于 Qt 和 Spyder。
  • pythonlibs – 非官方的 Windows 平台 Python 扩展二进制包。
  • PythonNet – Python 与 .NET 公共语言运行库 (CLR)的集成。
  • PyWin32 – 针对 Windows 的Python 扩展。
  • WinPython – Windows 7/8 系统下便携式开发环境。

网络可视化和SDN

用来进行网络可视化和SDN(软件定义网络)的工具和库。

  • Mininet – 一款流行的网络模拟器以及用 Python 编写的 API。
  • POX – 一个针对基于 Python 的软件定义网络应用(例如 OpenFlow SDN 控制器)的开源开发平台。
  • Pyretic – 火热的 SDN 编程语言中的一员,为网络交换机和模拟器提供强大的抽象能力。
  • SDX Platform – 基于 SDN 的 IXP 实现,影响了 Mininet, POX 和 Pyretic。

硬件

用来对硬件进行编程的库。

  • ino -操作Arduino的命令行工具。
  • Pyro – Python 机器人编程库。
  • PyUserInput – 跨平台的,控制鼠标和键盘的模块。
  • scapy – 一个非常棒的操作数据包的库。
  • wifi – 一个 Python 库和命令行工具用来在 Linux 平台上操作WiFi。
  • Pingo – Pingo 为类似Raspberry Pi,pcDuino, Intel Galileo等设备提供统一的API用以编程。

兼容性

帮助从 Python 2 向 Python 3迁移的库。

  • Python-Future – 这就是 Python 2 和 Python 3 之间丢失的那个兼容性层。
  • Python-Modernize – 使 Python 代码更加现代化以便最终迁移到 Python 3。
  • Six – Python 2 和 3 的兼容性工具。

杂项

不属于上面任何一个类别,但是非常有用的库。

  • blinker – 一个快速的 Python 进程内信号/事件分发系统。
  • itsdangerous – 一系列辅助工具用来将可信的数据传入不可信的环境。
  • pluginbase – 一个简单但是非常灵活的 Python 插件系统。
  • Pychievements – 一个用来创建和追踪成就的 Python 框架。
  • Tryton – 一个通用商务框架。

算法和设计模式

Python 实现的算法和设计模式。

编辑器插件

编辑器和 IDE 的插件

  • Emacs
    • Elpy – Emacs Python 开发环境。
  • Sublime Text
    • SublimeJEDI – 一个 Sublime Text 插件,用来使用超赞的自动补全库 Jedi。
    • Anaconda – Anaconda 把你的 Sublime Text 3 变成一个功能齐全的 Python IDE。
  • Vim
    • YouCompleteMe – 引入基于 Jedi 的 Python 自动补全引擎。
    • Jedi-vim – 绑定 Vim 和 Jedi 自动补全库对 Python 进行自动补全。
    • Python-mode – 将 Vim 变成 Python IDE 的一款多合一插件。
  • Visual Studio
    • PTVS – Visual Studio 的 Python 工具

集成开发环境

流行的 Python 集成开发环境。

  • PyCharm – 商业化的 Python IDE ,由 JetBrains 开发。也有免费的社区版提供。
  • LiClipse – 基于 Eclipse 的免费多语言 IDE 。使用 PyDev 来支持 Python 。
  • Spyder – 开源 Python IDE。

服务

在线工具和简化开发的 API 。

持续集成

参见: awesome-CIandCD.

  • Travis CI – 一个流行的工具,为你的开源和私人项目提供持续集成服务。(仅支持 GitHub)
  • CircleCI – 一个持续集成工具,可以非常快速的进行并行测试。 (仅支持 GitHub)
  • Vexor CI – 一个为私人 app 提供持续集成的工具,支持按分钟付费。
  • Wercker – 基于 Docker 平台,用来构建和部署微服务。

代码质量

  • Codacy – 自动化代码审查,更加快速的发布高质量代码。对于开源项目是免费的。
  • QuantifiedCode – 一个数据驱动、自动、持续的代码审查工具。

资源

在这里可以找到新的 Python 库。

网站

周刊

Twitter

 

from: https://github.com/jobbole/awesome-python-cn

原网址:https://github.com/vinta/awesome-python

 

IO Streams

理解inode句柄 是对资源地址的引用,相对固定。

四、引喻:
牧童遥指杏花村
牧童的手为指针,杏花村的牌子为句柄,杏花村酒店为对象的实例.

同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞!

阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

理解inode

理解inode

Standard streams https://en.wikipedia.org/wiki/Standard_streams

Pipeline (Unix) https://en.wikipedia.org/wiki/Pipeline_(Unix)

Redirection (computing)https://en.wikipedia.org/wiki/Redirection_(computing)

File descriptor https://en.wikipedia.org/wiki/File_descriptor

Handle (computing) https://en.wikipedia.org/wiki/Handle_(computing)

Common resource handles are file descriptors, network sockets, database connections, process identifiers (PIDs), and job IDs.

Process IDs and job IDs are explicitly visible integers, while file descriptors and sockets (which are often implemented as a form of file descriptor) are represented as integers, but are typically considered opaque. In traditional implementations, file descriptors are indices into a (per-process) file descriptor table, thence a (system-wide) file table.

Java输入输出流

也谈IO模型

Linux五种IO模型性能分析

linux系统编程之基础必备(四):C 标准库IO缓冲区和内核缓冲区的区别