Table of Contents generated with DocToc
个人工具箱,Python 居多。包括但不限于:系统、编程、算法等多个方面内容。
更改 Linux 系统软件源:
下面例子是 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
单个用户
~/.bash_profile
: 登录之后在 /etc/profile
载入之后载入, 十分重要的配置文件~/.bash_login
: 登录之后如果 ~/.bash_profile
不存在的话, 载入这个文件~/.profile
: 登录之后 ~/.bash_login
不存在的话, 才载入这个文件只对单个用户生效,当用户登录时该文件仅执行一次。
~/.bashrc
: bash shell
只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。~/.bash_logout
注意:
source /etc/environment
可以使变量设置在当前窗口立即生效,需注销 / 重启之后,才能对每个新终端窗口都生效。参考至:设置 Linux 环境变量的方法和区别_Ubuntu_给力星
LIBRARY_PATH
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH
LD_LIBRARY_PATH
中指定的路径会在系统默认路径之前进行查找。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 |
参考至:
远程会话窗口管理器,就是让你的远程连接(SSH)不中断,退出后下次登录时程序依然在运行。具体可参考:
screen -S [name]
screen -ls
screen -r [name]
Control + a + d
因为很多软件都需要从 GitHub 下载,所以需要优先配置一下。Git 命令不需要专门记,常用的就几个,其他的用时查一下就可以了。
pip install virtualenv
mkdir name; virtualenv --arguments [name]; cd name
source ./bin/activate
deactivate
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
or source activate name
pyenv deactivate
conda list
conda search
conda create -n [name] python=3.6.2
source activate name
source deactivate
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 中找到,如果要的版本太旧,往前翻时并不会显示,但会有提醒告知如何查看。export PATH="/usr/local/opt/python/libexec/bin:$PATH"
brew switch python xxx
切换各种版本,所有的东西都会自动弄好注意:只要这么操作就可以无痛使用(Mac),但如果你想更深入了解一下,下面的内容可以参考:
/usr/local/Cellar/python@[version]/
site-packages
实际位置在 /usr/local/lib/python*
/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/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/
site-packages
里),pip3.7,pip3.8,pip3.9 分别对应各自版本。整体清爽了很多,当然输入时稍微麻烦了些。pip install jupyter
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable codefolding/main
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
ssh remote_name@remote_address -L127.0.0.1:remode_port:127.0.0.1:local_port
就可以在本地用 localhost:local_port
访问了pip install ipyparallel
ipcluster nbextension enable
tar zcvf test.tar test
仅打包,不压缩tar zcvf test.tar.gz test
打包后以 gzip 压缩tar zxvf test.tar.gz -C /to/your/path
解压缩到某目录tar Jcvf file_name.tar.xz dir_name
压缩tar Jxvf file_name.tar.xz
解压缩参考至:Linux 中最佳的壓縮格式:為什麼 bzip2 會被 xz 取代?那 gzip 又如何? - G. T. Wang
强烈建议看官方文档,不要看各类教程。
sudo apt-get install cuda-x-0
: 安装非最新版本sudo apt-get --purge remove cuda
sudo apt autoremove
sudo apt-get clean
ln -s libcudnn.so.6.* libcudnn.so.5
{ "tab_size": 4, "translate_tabs_to_spaces": true, }
Ctrl + Shift + 8
重点关注MicroSoft。
主要分单元测试和集成测试。
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
首字母 | 指代 | 概念 |
---|---|---|
S | 单一功能原则 | 对象应该仅具有一种单一功能 |
O | 开闭原则 | 软件体应该是对于扩展开放的,但是对于修改封闭的 |
L | 里氏替换原则 | 程序中的对象应该是可以在不改变程序正确性的前提下被它的子类对象所替换的 |
I | 接口隔离原则 | 多个特定客户端接口要好于一个宽泛用途的接口 |
D | 依赖反转原则 | 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口;抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口。 |
来源:如何在 Python 里应用 SOLID 原则 | 阿驹
当考虑需要什么类以及类要有什么方法时,应该尝试下面的方法。
现在已经有了面向对象模型的草图了。还可以考虑类和对象之间的关系(比如继承或协作)以及它们的作用,可以用以下步骤精炼模型。
部分参考至:有程序员专门刷题的网站吗? - 知乎
汇总:
按时间
自然语言处理(NLP)
机器学习(ML)
人工智能(AI)
数据挖掘(DM)
推荐系统(RS)
Latex 图片转公式:Mathpix Snip
正版软件代理:数码荔枝 - 专注于分享最新鲜优秀的正版软件
Spectacle: Mac 窗口拖拉
所有作者,是你们的智慧让我们感受到了知识的力量;所有传播者,是你们的乐于分享让我们在探索路上不再孤单彷徨。
童老师,资深算法工程师,牛人。其实相当大一部分内容来自童老师,从他身上学到太多东西,以至于现在还才消化了一丢丢。明生的博客 | Scott's Blog,自称木讷的程序猿,他的吐槽和对代码优雅的执着追求让我被迫改变了很多。