shell-scripts-basics
判断输入脚本(函数)的参数个数Check number of arguments passed to a Bash script
都是使用$#
if [ "$#" -eq 2 ]
then
fi
可以使用 -eq, -ne, -lt, -le, -gt 判断个数
logical and / or / not|| or , && and, ! not
用[[]]或者[]
HOST=user1
if [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
echo yes1
fi
HOST=node001
if [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
echo yes2
fi
更复杂的例子(参考Check number of arguments passed to a Bash script):
[[ ($# -eq 1 || ($# -eq 2 && $2 == <glob pattern>) ...
trojan搭建
主要参考
atrandys大神的github,切换到master分支
配置域名(freenom和cloudfare相关的设置)自建梯子教程 –Trojan版本
主要配置freenom即可,注意trojan不应该设置cloudfare:
centos安装依赖:unzip, zip, gcc, wget, curlyum install curl wget
还要注意安装yum utils参考 yum中途中断There are unfinished transactions remaining. You might consider running yum-complete-tra)
yum install yum-utils
yum clean all
yum-complete-transaction –cleanup-only
安装魔改bbr(如果是cloudcone的centos7.5版本可以跳过此步,这个rom默认开启bbr)参考Linux NetSpeed
wget -N --no-check-certificate "https://raw.githubuserco ...
ssh使用剪切板
参考
How to use X11 forwarding to copy from vim to local machine
tmux in practice: integration with the system clipboard
相当重要,当tmux session不好使的时候就用这个xclip gives Error: Can't open display: localhost:10.0 in tmux session in Ubuntu VirtualBox VM
主要步骤
在本地机(local)上安装x11 forwarding的软件,macOS可以用XQuartz,Windows上的选择更多。并配置好(如macOS的就需要配置剪切板转发)
在远程机(remote server)上安装xclip,以及支持clipboard的vim版本(vim-gtk,或者neovim),使用时黏贴到*寄存器即可。
ssh连接时开启x11 forwarding
(optional)配置tmux copy模式相关的指令
1. 安装x11 forwarding的软件并配置以macOS ...
pyspark的基础使用
同时处理多个文件读取的时候直接读取一个用,分隔的字符串即可,具体来说用','.join()来对文件名进行拼接即可。
如果需要转成Dataframe做后续的处理,读完之后先map然后再转即可。
查看交集用rdd.intersection会比较好
SQL读出来的Dataframe转rdd记得还要.map(lambda x:str(x[0]))进行转换,否则得到的结果都是含有Row(...)
all_gids_query_template = """
SELECT
DISTINCT group_id
FROM
toutiao_developer.feed_card
WHERE
date = {}
LIMIT 999999999
"""
all_gids_query = all_gids_query_template.format(20200521)
all_gids = spark.sql(all_gids_query).rdd
没有转换前
转换后:
获取distributionrdd参考word_cou ...
matplotlib使用
修改matplotlib图片大小%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (6, 4)
plt.rcParams['figure.dpi'] = 300
subplot在外面的legendHow To Put Legend outside of Axes Properly in Matplotlib?
ax.legend(loc='lower left', bbox_to_anchor= (0.0, 1.01), ncol=2,
borderaxespad=0, frameon=False)
![image-20200506162929703](../../../../../Library/Application Support/typora-user-images/image-20200506162929703.png)
直方图上添加value参照h ...
python logging模块的一些使用
logging不打印关键在于设置根logger的logging的级别,要在一开始设定g
# 关键!!
logging.basicConfig(level=logging.DEBUG)
# 或者下面这个
logging.getLogger().setLevel(logging.DEBUG)
基本的场景参考
Logging Cookbook
一些基本的操作/概念:
logger才有.info, .error等命令,具体来说,logging.info, logging.error等都是调用默认的logger输出,获取新的logger可以通过logging.getLogger
logger设定的级别是指超过该级别的才会被输出到logger对应的输出流中,比如logger设定的level是logging.INFO,那么logging.debug的信息并不会被看到
同一个logger可以设定不同的输出流(通过logger.addHandler,Handler),输出到不同位置
Handler里面设置的级别同样是用于过滤信息的,这么做就可以实现不同级别的信息输出到不同的地方
同时打 ...
python多线程的使用
多线程适合使用的情景类似于爬虫这种,需要等待请求的返回的情况,如果是同时读入多个文件并行处理的情形,还是使用multiprocessing模块比较合适
两种使用多进程的方式Python 线程池原理及实现 说的比较详细,有几种线程池的模型,可以看看
直接用多线程参考:
Python多线程threading—图片下载
本质上就是开了多个线程,同时运行。
主要步骤:
开启线程(创建,start,存到一个thread_list中)
等待所有线程都完成,程序结束(t.join())
和queue搭配参考
Python 线程池原理及实现 说的比较详细
Python Multithreading and Multiprocessing Tutorial
主要的步骤有:
创建Queue
把相关的数据(比如待下载的url,函数参数等)put进Queue
创建线程,start,每个线程都从queue中获取get到所需的变量(如上述的url,函数参数),执行(对应run),最后结束queue.task_done()
当整个Queue都被运行之后,程序结束(即Queue.join())
不合适的例子: ...
pandas基础使用
挑选列按照boolean index(即逻辑表达式)Pandas Select DataFrame columns using boolean
comb.loc[:, criteria1 & criteria2]
如挑选含有\N的列:
tag.loc[:, tag.isin(['\\N']).any()]
对应的挑选不含\N的列:
tag.loc[:, (~tag.isin(['\\N'])).all()]
丢弃元素(drop)整一行丢弃Delete rows from a pandas DataFrame based on a conditional expression involving len(string) giving KeyError
关键在于挑选index:
df = df.drop(df[<some boolean condition>].index)
df.drop(df[<some boolean condition>].index, inplace=True)
不使用科学记数法全局pd.set_option('disp ...
hexo博客迁移到另一台电脑
参考hexo博客迁移到另一台电脑
主要步骤:
原来的电脑备份(用git push到github)
在新的电脑上安装hexo
npm install -g hexo
在新的电脑(此处为MacOS)git clone, 此时应该两个branch(master和publish,分别对应网页的数据和markdown file等源数据)都有
进入目录,切换到publish这一branch
cd ...
git checkoout publish
依次安装:
npm install
npm install hexo-deployer-git --save
npm install hexo-generator-feed --save
npm install hexo-generator-sitemap --save
# 额外的包辅助图片上传的包
npm install https://github.com/xcodebuild/hexo-asset-image --save
检查是否成功:
# hexo clean && hexo g OR hexo clean ...
spacevim的基本使用
Windows安装windows下强烈推荐用neovim-qt, 像gvim用起来有各种bug. 不建议.
而且neovim直接下载下来后, 可以直接打开, 记得把解压的文件夹加入到Path即可.
具体的安装步骤可以参考 Hack-Spacevim
安装中具体要注意的的点在上述的 Hack-Spacevim中已经说得很清楚了, 为了正常使用还需要添加一些别的插件, 比如在这里就加入了im-select
windows下使用官网的install.cmd完成下载之后, 直接运行, 再次打开nvim-qt即可直接进行安装. 但是注意到可能会缺少一些dll文件等等导致失败的, 可以通过上述Hack-Spacevim进行下载, 配置等.
基本配置windows下, 配置文件都在%User\.SpaceVim.d\init.toml中, 具体设定参照官网文档即可
但是如果需要额外的配置, 就要需要bootstrap函数来实现上述的功能了.具体的设定可以参照bootstrap函数
常用额外设定markdown如官网所示加入markdown层即可, 会自动安装一系列的插件.
但是要注意, 其中部分 ...