Table of Contents generated with DocToc
- 系统
- SSH
- GIT
- Terminal
- 命令行工具
- 查找搜索
- 复制粘贴
- 版本控制及包管理
- 数据科学常用包
- 配置工具
- 数据存储及快速查询
- CUDA
- IDE
- Python 技能
- 数据结构和算法
- LLM
- AI
- 工程
- Tool
- 设计五原则
- 刷题
- 面试
- 论文、会议及期刊
- 小工具
- 致谢
个人工具箱,Python 居多。包括但不限于:系统、编程、算法等多个方面内容。
更改 Linux 系统软件源:
- 阿里云镜像 http://mirrors.aliyun.com
- 网易镜像 http://mirrors.163.com
- 搜狐镜像 http://mirrors.sohu.com
- 清华大学开源软件镜像 https://mirrors.tuna.tsinghua.edu.cn
- 中国科学技术大学开源软件镜像 https://mirrors.ustc.edu.cn
下面例子是 Ubuntu16.04(xenial)的。不同的系统版本源不同,注意更换。
# 备份原文件
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改镜像源
cat > /etc/apt/sources.list << END
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
END
# 更新源列表(Ubuntu)
sudo apt-get update
参考至:
所有用户
/etc/profile
: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从/etc/profile.d
目录的配置文件中搜集 shell 的设置。一般用于设置所有用户使用的全局变量。/etc/bashrc
: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。/etc/paths
- echo 变量内容删除和替换
单个用户
~/.bash_profile
: 登录之后在/etc/profile
载入之后载入, 十分重要的配置文件~/.bash_login
: 登录之后如果~/.bash_profile
不存在的话, 载入这个文件~/.profile
: 登录之后~/.bash_login
不存在的话, 才载入这个文件
只对单个用户生效,当用户登录时该文件仅执行一次。
~/.bashrc
:bash shell
只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。~/.bash_logout
注意:
- 使用
source /etc/environment
可以使变量设置在当前窗口立即生效,需注销 / 重启之后,才能对每个新终端窗口都生效。 - 如果是 bash 是 zsh 或其他的,需要修改对应的配置文件。
- 建议针对当前用户修改
- 详细可移步:.bash_profile,profile,bashrc 的区别和启动顺序 和 科学网—linux 中 PATH 环境变量的作用和使用方法 - 张志斌的博文
参考至:设置 Linux 环境变量的方法和区别_Ubuntu_给力星
LIBRARY_PATH
- 环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径
- 例如,指定 gcc 编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1 和 LIBDIR2 为两个库目录):
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH
- 环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
- 注意,
LD_LIBRARY_PATH
中指定的路径会在系统默认路径之前进行查找。 - 设置方法如下(其中,LIBDIR1 和 LIBDIR2 为两个库目录):
export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH
- 概括
- 开发时,设置
LIBRARY_PATH
,以便 gcc 能够找到编译时需要的动态链接库。 - 发布时,设置
LD_LIBRARY_PATH
,以便程序加载运行时能够自动找到需要的动态链接库。
- 开发时,设置
- 不同操作系统的名称
OS | Environment Variable Name |
---|---|
Linux | LD_LIBRARY_PATH |
Solaris 32-bit ruby | LD_LIBRARY_PATH_32 or LD_LIBRARY_PATH |
Solaris 64-bit ruby | LD_LIBRARY_PATH_64 or LD_LIBRARY_PATH |
HP-UX PA-RISC 32-bit ruby | SHLIB_PATH |
HP-UX PA-RISC 64-bit ruby | LD_LIBRARY_PATH |
HP-UX IA64 | LD_LIBRARY_PATH |
Mac OS X | DYLD_LIBRARY_PATH |
AIX | LIBPATH |
参考至:
- LIBRARY_PATH 和 LD_LIBRARY_PATH 环境变量的区别 - 大圆那些事 - 博客园
- LD_LIBRARY_PATH 与 LIBPATH - russle 的专栏 - CSDN 博客
远程会话窗口管理器,就是让你的远程连接(SSH)不中断,退出后下次登录时程序依然在运行。具体可参考:
- 使用 screen 管理你的远程会话。简单使用:
- 创建:
screen -S [name]
- 查看:
screen -ls
- 进入:
screen -r [name]
- 退回到命令行,让程序在 screen 后台自动运行:
Control + a + d
- 创建:
- 更强大的 Tmux:
- 二者使用对比:Terminal Multiplexers: Screen, Tmux - Hyperpolyglot
- SSH 原理与运用(一):远程登录 - 阮一峰的网络日志
- 优化 SSH(断网不影响连接):
- 服务器本地传输
- 推荐:SSHFS: libfuse/sshfs: A network filesystem client to connect to SSH servers
- 挂载磁盘
- RSYNC: rsync
因为很多软件都需要从 GitHub 下载,所以需要优先配置一下。Git 命令不需要专门记,常用的就几个,其他的用时查一下就可以了。
- 可以当工具用的
- 常用 Git 命令清单 - 阮一峰的网络日志
- Git 下载部分内容:DownGit
- GitHub 如何选择开源许可证?
- Git Query 工具:cloudson/gitql: A git query language
- 一些技巧
- Terminal: iTerm2 - macOS Terminal Replacement
- Bash: oh-my-zsh,需要先安装 Zsh: Installing ZSH
- 20 Command Line Tools to Monitor Linux Performance
- 13 Linux Performance Monitoring Tools - Part 2
- 命令行使用代理:shadowsocks及 ProxyChains-NG 实现终端(iterm2)下代理
- 快速 CD:
- 命令行处理文本(包括:显示、文件合并、去重、分割):
- 各种命令使用快查:tldr-pages/tldr: Simplified and community-driven man pages
- chubin/cheat.sh: the only cheat sheet you need
- 应该知道的 Linux 技巧
- 快速查找:junegunn/fzf: A command-line fuzzy finder,这里有一些很好的例子:Examples · junegunn/fzf Wiki
- mooz/percol: adds flavor of interactive filtering to the traditional pipe concept of UNIX shell
- 文本搜索:Geoff Greer's site: The Silver Searcher
- 字符串搜索:pyahocorasick — ahocorasick 1.1.0 documentation
- Mac: Copy to and Paste from the Clipboard on the Mac OSX Command Line
- Mac: alfred-clipboard 调出所有复制过的文本
- Mac 一键上传图片到亿方云并生成链接:jiwenxing/qimage-mac: mac 版本的 markdown 一键贴图工具,基于 alfred 实现,支持本地文件、截图、网络图片一键上传七牛云,使用简单方便
- 虚拟机管理:Vagrant by HashiCorp
- 虚拟环境:Reference Guide — virtualenv 15.1.0 documentation
- 安装:
pip install virtualenv
- 创建虚拟环境:
mkdir name; virtualenv --arguments [name]; cd name
- 激活:
source ./bin/activate
- 关闭:
deactivate
- 安装:
- 版本控制:pyenv/pyenv: Simple Python version management,注意 pyenv 的路径是可以改的
- 安装软件(不是安装 pyenv),举例安装 Anaconda:
wget -P $(pyenv root)/cache https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-4.0.0-MacOSX-x86_64.sh
pyenv install Anaconda3-4.0.0
- 创建虚拟环境:
pyenv virtualenv [version] [name]
- 激活:
pyenv activate name
orsource activate name
- 关闭:
pyenv deactivate
- 安装软件(不是安装 pyenv),举例安装 Anaconda:
- 包管理:Conda — Conda documentation
- conda 必须安装 miniconda 或 Anaconda
conda list
conda search
- 创建虚拟环境:
conda create -n [name] python=3.6.2
- 激活:
source activate name
- 关闭:
source deactivate
- Python 包管理:pip — pip 9.0.1 documentation
- 推荐的 Python 包开发管理工具:
- 推荐的创建虚拟环境方法:
python3 -m venv [name]
,详见:venv
注意:安装 Conda
后,pyenv
的虚拟环境会由 Conda
接管。详见:pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)。
-
Mac 上的 Python
经过不少的实践,在 Mac 上可以使用 homebrew 来管理 python 版本,大多数时候我们只需要一个稳定的版本就够了,具体项目中可以使用 poetry。要安装不同的版本,方法如下:
brew unlink python
解除现有版本的绑定brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/hash/Formula/python.rb
,其中的 hash 可在 History for Formula/python.rb - Homebrew/homebrew-core 中找到,如果要的版本太旧,往前翻时并不会显示,但会有提醒告知如何查看。- 在你的 bash 或 zsh 配置文件中添加:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
brew switch python xxx
切换各种版本,所有的东西都会自动弄好
注意:只要这么操作就可以无痛使用(Mac),但如果你想更深入了解一下,下面的内容可以参考:
- brew 安装的 python 在
/usr/local/Cellar/python@[version]/
site-packages
实际位置在/usr/local/lib/python*
- brew 安装好后会在两个地方创建链接:
/usr/local/opt/python/libexec/bin/
/usr/local/bin/
- 系统自带的在
/usr/bin/python
,实际位置在/System/Library/Frameworks/Python.framework/Versions/
,site-packages
在/usr/local/lib/python2.7
下,系统自带有多个版本(2.3 2.5 2.6 2.7),当前为 2.7 - 升级 Xcode 后会安装 Python3,在
/usr/bin/python3
,实际位置在/Applications/Xcode.app/Contents/Developer/usr/bin/python3
,site-packages
有两个,用户的在~/Library/Python/3.8/lib/python/
,系统的在/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/
- 最终 python=python2(系统带的),python3=python3.8.9(Xcode 装的),python3.7,python3.8,python3.9 分别对应各自版本。pip3=pip3.8.9(Xcode 的,在系统的
site-packages
里),pip3.7,pip3.8,pip3.9 分别对应各自版本。整体清爽了很多,当然输入时稍微麻烦了些。
- IPython
- 基础运算:NumPy
- 数据清理分析:Pandas
- 画图的:Matplotlib
- 机器学习:scikit-learn
- 可以写代码 + 笔记的 NoteBook:Project Jupyter | Home
- 安装:
pip install jupyter
- jupyter_contrib_nbextensions: A collection of various notebook extensions for Jupyter(推荐,有很多安好的插件):
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable codefolding/main
- server extension: jupyter_nbextensions_configurator: A jupyter notebook serverextension providing config interfaces for nbextensions.(不太推荐):
-
pip install jupyter_nbextensions_configurator
-jupyter nbextensions_configurator enable --user
- 远程服务器 jupyter notebook 创建(如何创建参照网上教程)后,本地访问:本地创建
ssh remote_name@remote_address -L127.0.0.1:remode_port:127.0.0.1:local_port
就可以在本地用localhost:local_port
访问了 - 并行:ipython/ipyparallel: Interactive Parallel Computing in Python
-
pip install ipyparallel
-ipcluster nbextension enable
- 安装:
- chimpler/pyhocon: HOCON parser for Python
- rbgirshick/yacs: YACS -- Yet Another Configuration System
- Host 修改工具:Clockwise
- TAR,GZIP, BZIP2, XZ 对比
- 需要在内存很小的机器(如小于 128 MB)上解压缩时,选择 gzip 格式。
- 需要在很简单、沒有什么工具可用的机器上解压缩时,选择 gzip 格式。
- 需要节省带宽、缩短下载所需时间时,选择 xz 格式。
- 推荐用 gz 压缩:
tar zcvf test.tar test
仅打包,不压缩tar zcvf test.tar.gz test
打包后以 gzip 压缩tar zxvf test.tar.gz -C /to/your/path
解压缩到某目录- 存储用 xz(速度慢,压缩效率高):
tar Jcvf file_name.tar.xz dir_name
压缩tar Jxvf file_name.tar.xz
解压缩
参考至:Linux 中最佳的壓縮格式:為什麼 bzip2 會被 xz 取代?那 gzip 又如何? - G. T. Wang
- 字典存储:DAWG
- 数据存储:leveldb 资料整理 - 区块链知识库
- 数据结构:Bloom filter - Wikiwand
强烈建议看官方文档,不要看各类教程。
- CUDA
- cuDNN
sudo apt-get install cuda-x-0
: 安装非最新版本- 卸载
sudo apt-get --purge remove cuda
sudo apt autoremove
sudo apt-get clean
- 找不到 5 时可以软链:
ln -s libcudnn.so.6.* libcudnn.so.5
- 设置 TAB 键为空格:
{ "tab_size": 4, "translate_tabs_to_spaces": true, }
- pep8 插件,使用:
Ctrl + Shift + 8
- GNU Emacs download - GNU Project
- Learn:
- Errors on Mac:
- 快捷键:
- 技巧:
- 配置:
- 教程:
- 快捷键:
- Best practices guidebook
- Python Cookbook 3rd
- Python Tips
- The Hitchhiker's Guide to Python
- Python 3 Module of the Week
- Algorithm Visualizer
- TheAlgorithms
- Minimal Examples
- Treelib: An efficient Implementation
- Tree Library
- BTrees
- ete: visualising trees
- jciskey/pygraph: graph manipulation
- Coding Interview Challenges
- GeneticAlgorithmsWithPython
- unilm/layoutreader at master · microsoft/unilm
- PaddleNLP/model_zoo/ernie-layout/README_ch.md at develop · PaddlePaddle/PaddleNLP
- AdvancedLiterateMachinery/Applications/DocXChain at main · AlibabaResearch/AdvancedLiterateMachinery
重点关注MicroSoft。
- LLaVA-VL/LLaVA-Interactive-Demo: LLaVA-Interactive-Demo
- yxuansu/PandaGPT: [TLLM'23] PandaGPT: One Model To Instruction-Follow Them All
- microsoft/autogen: Enable Next-Gen Large Language Model Applications. Join our Discord: https://discord.gg/pAbnFJrkgZ
- microsoft/semantic-kernel: Integrate cutting-edge LLM technology quickly and easily into your apps
- visual-openllm/visual-openllm: something like visual-chatgpt, 文心一言的开源版
- paradedb/paradedb: PostgreSQL for Search
- facebookresearch/faiss: A library for efficient similarity search and clustering of dense vectors.
- milvus-io/milvus: A cloud-native vector database, storage for next generation AI applications
- alibaba/proxima
- vearch/vearch: A distributed system for embedding-based vector retrieval
- castorini/anserini: Anserini is a Lucene toolkit for reproducible information retrieval research
- google-research/scann at master · google-research/google-research
- terry3041/pyChatGPT: An unofficial Python wrapper for OpenAI's ChatGPT API
- acheong08/EdgeGPT: Reverse engineered API of Microsoft's Bing Chat AI
- acheong08/ChatGPT: Reverse engineered ChatGPT API
- transitive-bullshit/chatgpt-api: Node.js client for the official ChatGPT API. 🔥
- terry3041/pyChatGPT: An unofficial Python wrapper for OpenAI's ChatGPT API
- Sha1rholder/use-ChatGPT-in-GFW: 在中国境内使用 OpenAI 服务的方法
- ninja/README_zh.md at main · gngpp/ninja
- Frameworks for Serving LLMs. A comprehensive guide into LLMs inference and serving
- ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++
- huggingface/text-generation-inference: Large Language Model Text Generation Inference
- onnxruntime/onnxruntime/python/tools/transformers/notebooks/Inference_GPT2_with_OnnxRuntime_on_CPU
- FasterTransformer/docs/gpt_guide.md at main · NVIDIA/FasterTransformer
- OpenNMT/CTranslate2: Fast inference engine for Transformer models
- mlc-ai/mlc-llm: Enable everyone to develop, optimize and deploy AI models natively on everyone's devices.
- vllm-project/vllm: A high-throughput and memory-efficient inference and serving engine for LLMs
- sonos/tract: Tiny, no-nonsense, self-contained, Tensorflow and ONNX inference
- rustformers/llm: An ecosystem of Rust libraries for working with large language models
- bentoml/OpenLLM: Operating LLMs in production
- huggingface/candle: Minimalist ML framework for Rust
- tairov/llama2.mojo: Inference Llama 2 in one file of pure 🔥
- f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better.
- dair-ai/Prompt-Engineering-Guide: 🐙 Guides, papers, lecture, notebooks and resources for prompt engineering
- onnx/onnx: Open standard for machine learning interoperability
- huggingface/safetensors: Simple, safe way to store and distribute tensors
- openai/triton: Development repository for the Triton language and compiler
- microsoft/onnxruntime: ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator
- NVIDIA/TensorRT: NVIDIA® TensorRT™, an SDK for high-performance deep learning inference, includes a deep learning inference optimizer and runtime that delivers low latency and high throughput for inference applications.
- openvinotoolkit/openvino: OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
- triton-inference-server/server: The Triton Inference Server provides an optimized cloud and edge inferencing solution.
- KomputeProject/kompute: General purpose GPU compute framework built on Vulkan to support 1000s of cross vendor graphics cards (AMD, Qualcomm, NVIDIA & friends). Blazing fast, mobile-enabled, asynchronous and optimized for advanced GPU data processing usecases. Backed by the Linux Foundation.
- Adlik/Adlik: Adlik: Toolkit for Accelerating Deep Learning Inference
- tensorflow/serving
- pytorch/serve: Model Serving on PyTorch
- TFX: End-to-End Platform for Deploying Production ML Pipelines
- Kubeflow
- mvitez/thnets: Basic library that can run networks created with Torch
- Serving Trained Model (aka Model API) - FloydHub Documentation
- ahkarami/Deep-Learning-in-Production
- hyperonym/basaran: Basaran is an open-source alternative to the OpenAI text completion API. It provides a compatible streaming API for your Hugging Face Transformers-based text generation models.
- holoviz/panel: Panel: The powerful data exploration & web app framework for Python
- rawpython/remi: Python REMote Interface library. Platform independent. In about 100 Kbytes, perfect for your diet.
- PySimpleGUI
- pywebio/PyWebIO: Write interactive web app in script way.
- streamlit/streamlit: Streamlit — A faster way to build and share data apps.
- gradio-app/gradio: Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work!
- microsoft/hummingbird: Hummingbird compiles trained ML models into tensor computation for faster inference.
- PyTorchLightning/pytorch-lightning: The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate.
- Deepfakes
- DeepFaceLab
- Music Generation
- AI_Composer
- ChatterBot
- ChatterBot
- GPT2 for Chinese Chitchat
- FaceBook Detectron2: object detection and segmentation.
- Open MMLab Detection Toolbox and Benchmark
- Open MMLab Computer Vision Foundation
- esdalmaijer/PyGaze: eye tracking experiments
- atulapra/Emotion-detection
- Multi-Person Pose Estimation&Tracking System
- facebookresearch/dlrm: recommendation
- Jupyter Tutorial — Jupyter Tutorial 0.8.0
- Dataset Search
- Hugging Face – The AI community building the future.
- Find Open Datasets and Machine Learning Projects | Kaggle
- Machine Learning Datasets | Papers With Code
- Datasets
- 中文NLP数据集
- Dataset list - A list of the biggest machine learning datasets
- awesomedata/awesome-public-datasets: A topic-centric list of HQ open datasets.
- Data Is Plural
- OpenML
- InsaneLife/ChineseNLPCorpus: 中文自然语言处理数据集,平时做做实验的材料。欢迎补充提交合并。
- opencv/cvat: Computer Vision Annotation Tool
- wkentaro/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
- generating training data with weak supervision
- make basic image processing operations
- nlplab/brat: textual annotation
- doccano/doccano: Open source annotation tool for machine learning practitioners.
- Overview - CoreNLP
- fast.ai · Making neural nets uncool again
- TensorFlow
- Tensorflow Models
- DeepLearning Papers
- Awesome-Deep-learning-papers
- D2L ZH
- D2L EN
- pytorch/tutorials: PyTorch tutorials.
- Pytorch Examples
- Tutorials | TensorFlow Core
- 简单粗暴 TensorFlow 2 | A Concise Handbook of TensorFlow 2 — 简单粗暴 TensorFlow 2 0.4 beta 文档
- TensorFlow-Examples
- microsoft: NLP Best Practices & Examples
- DeepLearning Projects
- Ttensorflow_practice
- microsoft/nni: AutoML toolkit
- Imbalanced Learning
- Automated Machine Learning tool using genetic programming
- Machine learning evaluation metrics
- Awesome Machine Learning
- autonomio/talos: Hyperparameter Optimization for TensorFlow, Keras and PyTorch
- scikit-optimize: sequential model-based optimization in Python — scikit-optimize 0.8.1 documentation
- fmfn/BayesianOptimization: A Python implementation of global optimization with gaussian processes.
- Ray Tune:Tune: Scalable Hyperparameter Tuning — Ray v2.0.0.dev0
- hyperopt/hyperopt: Distributed Asynchronous Hyperparameter Optimization in Python
- Introduction to the Keras Tuner | TensorFlow Core
- Google Vizier:Vizier 概览 | AI Platform Vizier | Google Cloud
- Amazon Sagemaker:Amazon SageMaker 机器学习模型构建训练部署 - AWS 云服务
- Microsoft NNI:microsoft/nni: An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-parameter tuning.
- Microsoft Advisor:Optimization advisor overview - Finance & Operations | Dynamics 365 | Microsoft Docs
- maxpumperla/hyperas: Keras + Hyperopt: A very simple wrapper for convenient hyperparameter optimization (已存档)
- Avsecz/kopt: Hyper-parameter optimization for Keras(一阵没更新了)
- rsteca/sklearn-deap: Use evolutionary algorithms instead of gridsearch in scikit-learn(一阵没更新了)
- HIPS/Spearmint: Spearmint Bayesian optimization codebase(一阵没更新了)
- [1603.06560] Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization
主要分单元测试和集成测试。
- Hypothesis: Property-Based Testing
- Plugin for providing variables to pytest
- Example grpc_testing based unittest
- pytest
- 和 github 做持续集成的服务:Continuous Integration and Delivery - CircleCI
- Style Checker
- Code Climate · GitHub Marketplace
- 代码检查:flake8 3.4.1 : Python Package Index
- 代码复杂度检查:rubik/radon: Various code metrics for Python code
- github/semantic: Parsing, analyzing, and comparing source code across many languages
- 统计代码行数:
- 代码对比:Scooter Software: Home of Beyond Compare
- 建议阅读 代码整洁之道 (豆瓣),初期不需要太追求优化。
- emeryberger/scalene: Scalene: a high-performance, high-precision CPU and memory profiler for Python
- pympler/pympler: memory behavior
- Line Profile
- Distributed Asynchronous Hyperparameter Optimization
- Memory Profiler
- PySnooper: Never use print for debugging again
- 尽量使用 Numpy 或 Pandas,因为它们底层是 C
- Numpy 计算深度学习:tfdeploy
- 数据库利用索引和 Cache
- 索引是将常见的查询在数据库中建好索引表
- Cache 是数据库常用的操作
- Boost.Python Tutorial - 1.65.1
- Tutorials — Cython
- ray-project/ray: A system for parallel and distributed Python that unifies the ML ecosystem.
- scikit-build/ninja-python-distributions: This project provides a `setup.py` script that build Ninja Python wheels.
- arrow/python at master · apache/arrow
- onelivesleft/PrettyErrors: Prettify Python exception output to make it legible.
- willmcgugan/rich: Rich is a Python library for rich text and beautiful formatting in the terminal.
- gotcha/ipdb: Integration of IPython pdb
- pdbpp/pdbpp: pdb++, a drop-in replacement for pdb (the Python debugger)
- Django-Rest-Framework-Simplejwt.
- JSON Web Token - 在 Web 应用间安全地传递信息 - 回田园
- Where to Store JWTs - Cookies vs HTML5 Web Storage | Stormpath
- Curio: Coroutine-Based Library for Concurrent Systems Programming
- python-trio/trio: Trio – Pythonic async I/O
- grpc / grpc.io
- gRPC-Web implementation
- grpc / grpc.io
- 比起 JSON 更方便、更快速、更簡短的 Protobuf 格式
- apache/thrift: Mirror of Apache Thrift
- JSON-RPC 2.0 Specification
- zerorpc
- GitHub 至少两个分支:dev 和 master,均为通过测试的正式版
- master 为发布版
- dev 为开发版
- kubernetes-sigs/kustomize: Customization of kubernetes YAML configurations
- composer/docker: Composer in Docker
- Docker
- Kubernetes
- 自动触发:Watchman A file watching service | Watchman
- 这里是比较经典的一些各公司架构:All Time Favorites -
- Quora 做部署的架构,比较适合小公司:Continuous Deployment at Quora - Engineering at Quora - Quora
- 参考网站:Buy/Sell Digital Currency - Coinbase
- donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
- pyspider
- scrapy examples
- crawlers
- grab: Web Scraping Framework
- Selenium
- Mac 安装时,需要重新安装 pycurl,首先
pip uninstall pycurl
- 然后
export PYCURL_SSL_LIBRARY=openssl
- 再
export LDFLAGS=-L/usr/local/opt/openssl/lib;export CPPFLAGS=-I/usr/local/opt/openssl/include;pip install pycurl==7.43.0.1 --compile --no-cache-dir
- Mac 安装时,需要重新安装 pycurl,首先
- Scrapy
- scrapinghub/portia: Visual scraping for Scrapy,可视化 Scrapy
- altair-viz/altair: Declarative statistical visualization
- animated graph visualizations
- plotly/plotly.py: The interactive graphing
- plotly/dash: Interactive, Reactive Web Apps for Python. Dash Is Productive™
- iTerm2 backend for Matplotlib.
- mingrammer/diagrams: Diagram as Code for prototyping cloud system architectures
- facebookresearch/hiplot: HiPlot makes understanding high dimensional data easy
- lutzroeder/netron: Visualizer for neural network, deep learning, and machine learning models
- SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)
首字母 | 指代 | 概念 |
---|---|---|
S | 单一功能原则 | 对象应该仅具有一种单一功能 |
O | 开闭原则 | 软件体应该是对于扩展开放的,但是对于修改封闭的 |
L | 里氏替换原则 | 程序中的对象应该是可以在不改变程序正确性的前提下被它的子类对象所替换的 |
I | 接口隔离原则 | 多个特定客户端接口要好于一个宽泛用途的接口 |
D | 依赖反转原则 | 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口;抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口。 |
来源:如何在 Python 里应用 SOLID 原则 | 阿驹
-
当考虑需要什么类以及类要有什么方法时,应该尝试下面的方法。
- (1)写下问题的描述(程序要做什么),把所有名词、动词和形容词加下划线。
- (2)对于所有名词,用作可能的类。
- (3)对于所有动词,用作可能的方法。
- (4)对于所有形容词,用作可能的特性。
- (5)把所有方法和特性分配到类。
现在已经有了面向对象模型的草图了。还可以考虑类和对象之间的关系(比如继承或协作)以及它们的作用,可以用以下步骤精炼模型。
- (1)写下(或者想象)一系列的使用实例,也就是程序应用时的场景,试着包括所有的功能。
- (2)一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进来。如果某处不太正确则改正。继续,直到满意为止。
- 在线编程练习
- LeetCode
- hihoCoder
- Train with Programming Challenges/Kata | Codewars
- LintCode:在线刷题网站,汇集了各大公司的算法面试题。有阶梯式训练题库,帮你选好应该刷的题目,特别适合小白和懒人。评测数独很快,最大的中文在线题库。
- geeksforgeeks.org —— 据说是印度人搞的刷题网站,上面有很多公司的面试题,也有论坛。不过上面都是英文,估计很多印度人在上面放面经,科科。
- Codecademy.com —— 包含在线编程练习和课程视频。比较适合小白入门编程语言。网页界面也比较友好。但是,没有算法方面的在线测试。
- Codehs.com —— 包含数据结构、游戏设计、动画类编程题。
- programmingpraxis.com —— 此网站编程练习不保存分数、不排名、不竞赛
- projecteuler.net —— 有 590 道题,会显示难度水平和提交完成率
- hackerearth.com —— 注册帐号后可参与编程练习(有内推到知名企业的机会)
- 编程竞赛
- hackerrank.com ——包含编程题和项目开发挑战
- Codeforces.comtopcoder.com —— 包含大量题库,对解答者进行排名。
- codechef.com —— 包含编程竞赛、在线程序设计挑战,题目难度从入门、简单、中等到挑战都有,会举办竞赛,获胜者会有奖金。
- topcoder.com —— 经常在线举行编程竞赛,可以去练练手,找找成就感。不过,有的竞赛题目并不简单,也比较刁钻。
- 各种语言算法实现
部分参考至:有程序员专门刷题的网站吗? - 知乎
- CyC2018/CS-Notes: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、Java、Python、C++
- Snailclimb/JavaGuide: 「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
-
汇总:
-
按时间
-
自然语言处理(NLP)
- 会议:ACL Wiki
- 会议:emnlp2017
- 会议:NAACL: North American Chapter of the ACL
- 会议:COLING 2018
- 会议:CoNLL 2017 | CoNLL
- 会议(国内):CCL 2018
- 会议(国内):NLPCC 2018 Home
- 会议(国内):SMP2018 - 第七届全国社会媒体处理大会
- 会议(国内):CFP
- 会议(国内):机器翻译论坛网 - 首页
- 会议(国内):中国中文信息学会(CIPS)青年工作委员会 2018 年学术活动安排
- 会议(国内):中国中文信息学会暑期学校
- 期刊:Computational Linguistics | MIT Press Journals
- 期刊:中国中文信息学会
- 论文:Computation and Language
-
机器学习(ML)
-
人工智能(AI)
-
数据挖掘(DM)
-
推荐系统(RS)
-
Latex 图片转公式:Mathpix Snip
-
正版软件代理:数码荔枝 - 专注于分享最新鲜优秀的正版软件
-
Spectacle: Mac 窗口拖拉
-
所有作者,是你们的智慧让我们感受到了知识的力量;所有传播者,是你们的乐于分享让我们在探索路上不再孤单彷徨。
-
童老师,资深算法工程师,牛人。其实相当大一部分内容来自童老师,从他身上学到太多东西,以至于现在还才消化了一丢丢。明生的博客 | Scott's Blog,自称木讷的程序猿,他的吐槽和对代码优雅的执着追求让我被迫改变了很多。