工具是重要的!这点其实很多老师都不会讲述,在我院开设的大量本科基础课上,老师也不会专门讲述现代化工具的使用。 然而好用的用得顺手的工具可以使工作效率大大提升,不好用的工具虽然也可以用,但是会增加很多不必要的时间。
最简单的例子是很多非计院的同学学了一整个学期代码(C++/Java),都还在非常古老的IDE上写程序(e.g. Dev)。 这当然可以写,但如果有更强大的工具可以让你事半功倍,何乐而不为呢?
这篇文章列举/总结我目前所使用的一些工具作为参考,这些工具基本都使用了非常长的时间,亲测比较好用。
(基于这点motivation,所以我在2019-2020年度开了门ToolsSeminar的研讨课,详细内容可见这里。)
之后考虑将这些东西打包成Docker上传上云,这样就不用每次换电脑都重新安装了。
install-tl-windows.bat
文件,可能需要几个小时安装时间可能很多人会问自己租服务器用来干嘛。 其实是可以干非常多事情的,比如:
安装在Microsoft Store搜索Ubuntu即可,注意安装后打开前需要先在控制面板-程序和功能-启用或关闭Windows功能中将”适用于Linux的Windows子系统”打开并重启。详细安装教程可见Microsoft官网。其中也有说明如何升级至WSL2,需要先升级Windows版本至2004(Build 19041),然后才有办法启用。WSL1和WSL2的比较见此文。
# 参照清华镜像站换源
# https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
sudo apt-get update
sudo apt-get upgrade
## install gcc compiler
sudo apt install build-essential
gcc --version
## install pip
sudo apt install python3-pip
## python virtualenv
which python3
sudo apt install python3-virtualenv
virtualenv -p /home/.../python3 pydev
source pydev/bin/activate
python -V
deactivate
## conda
conda create -n pydev python=python3.6
conda info --envs
activate pydev
deactivate
# export environment
conda env export > environment.yml
conda env create -f environment.yml
# pip change source
# ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# cuda change version
export CUDA_HOME="/usr/local/cuda-9.2"
export LD_LIBRARY_PATH="/usr/local/cuda-9.2/lib64:$LD_LIBRARY_PATH"
export PATH="/usr/local/cuda-9.2/bin:$PATH"
# graphics apps (open Xming in Windows first)
sudo apt-get install x11-apps
export DISPLAY=:0 # WSL1
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 # WSL2, need to set `-ac` for X server
# https://github.com/microsoft/WSL/issues/4106
xeyes
# desktop
sudo apt-get install xfce4-terminal
sudo apt-get install xfce4
startxfce4
## accelerate git
sudo apt-get install proxychains
vim /etc/proxychains.conf
# change socks4 127.0.0.1 9095 to
socks5 127.0.0.1 1080
proxychains git clone ...
# Using sockets:
# ref: https://github.com/Microsoft/WSL/issues/2122
# insert the following commands into ~/.bashrc
alias socks='ALL_PROXY=socks5://127.0.0.1:1080/ \
http_proxy=http://127.0.0.1:1080/ \
https_proxy=http://127.0.0.1:1080/ \
HTTP_PROXY=http://127.0.0.1:1080/ \
HTTPS_PROXY=http://127.0.0.1:1080/'
socks git clone ...
# mount external storage
sudo mount -t drvfs G: /mnt/g
sudo unmount /mnt/g
# change gcc version
sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
# extract zip
tar -xzvf xxx.tar.gz
tar -xvf xxx.tar
xz -d xxx.tar.xz
unzip xxx.zip
# port
netstat -anp | grep port
# change shell
chsh -l
chsh -s $(which zsh)
可能出现的问题
dpkg: error processing package libc6:amd64 (--configure)
,参见此文[WSL1] [glibc] sleep: cannot read realtime clock: Invalid argument
,这是WSL1的bug,需重新编译sleep目前使用主要使用两个文本编辑器,Sublime Text用来做一些轻量级的工作(因为打开速度实在是快),VS Code用来做一些大一点的项目。
Sublime的重度用户,每天跟它打交道的时间估计超过10个小时。 打代码、做笔记、记事情、写报告、写论文全部都用它。
优点:
不得不说,经过大半年的发展,微软爸爸的文本编辑器已经相当成熟了。进入到2020年,我也基本从Sublime Text转到VS Code的重度用户,因为用久会发现它比ST还更加人性化和好用。
优点:
{
"pasteImage.path": "${projectRoot}/assets/images",
"pasteImage.basePath": "${projectRoot}",
"pasteImage.showFilePathConfirmInputBox": true,
"pasteImage.prefix": "/"
}
笔记怎么做也是我这一年多来摸索的东西,现在基本上用下面两个工具啦。
极重度用户,已经到了写篇文科小报告都要拿LaTeX打的地步… 日常的话,数学和CS的笔记都会用LaTeX打,目前数学大致有一百多页的样子,CS也有几十页,算是给自己大学的学习留档吧。 因为使用太频繁,到年初才自己制作了份模板,又瞬间让自己生产力爆炸。
目前想到的一些不那么大众的点有
添加LaTeX模板和包可见下面链接,在对应位置创建文件夹并拷贝进去即可
在macOS上不是安装TeXLive,而是安装MacTeX
PATH
中
/Library/TeX/texbin
sudo tlmgr install collection-latexrecommended
sudo tlmgr install collection-fontsrecommended
这一个比较少人用,但是非常方便,也是满足了我写md、写LaTeX、贴代码的要求。 就是一个html页面,里面存自己的笔记,但是页面布局都已经帮你设置好了,直接可以写,还可以上传到服务器上让所有人都可以访问(但是几M大小基本加载不出来…)。 平时文科类的笔记会存在里面,还有部分有用的代码,其他的话…就当成网页收藏夹了…
注:有了博客之后,后面一个也基本不再使用了。
优点:
这个也是写论文必备
写论文或者建模就知道画图的苦,以前一直都羡慕人家的文章中能够画出那么漂亮的图片,因为以往都只知道函数图怎么画,但不知道有什么比较好用的流程图工具
&
即可实现对齐,绘制简单的流程图非常方便doxygen -g
生成初始的配置文件,然后可以修改下列常用项
PROJECT_NAME = "Test"
OUTPUT_DIRECTORY = doc/
RECURSIVE = YES
UML_LOOK = YES
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
SOURCE_BROWSER = YES
GENERATE_TREEVIEW = ALL
doxygen Doxyfile
即可生成HTML和TeX文档。当时入深度学习坑时选择TF,折腾了很久连它语法都没搞清楚,对初学者非常不友善,于是就此放弃
因为我目前研究的调度算法需要用整数线性规划(Integer Linear Programming, ILP)解出最优解,所以会用到一些求解器,如下所示。
gpg --version
查看是否有安装gpg --genkey
生成密钥gpg -k --keyid-format long
查看公(k)/私(K)钥gpg --send-keys [ID] --keyserver pgp.mit.edu
上传公钥gpg --search-keys [ID]
搜索密钥gpg --export -a "[user]" > [user].pub
导出公钥gpg --export-secret-keys -a "[user]" > [user].priv
导出私钥gpg --delete(-secret)-keys [Email]
删除密钥gpg --import [key].pub
导入公/私钥gpg --encrypt --armor -r [Email] [file]
生成ASCII码加密文件gpg -d [file].asc
解密文件