airflow apply_defaults 赏析
最近在写 airflow 的脚本时遇到一个问题,出于方便把 BaseSensorOperator
包了一层,
后来想改下超时时间和优先级等参数,发现改了没用,于是看了下源码,发现 Operator
都有个 apply_defaults
的装饰器,细看一看,实现挺巧妙,也解释了我遇到的问题。因为我的问题属于个人使用不当导致的,
所以就不放问题代码了,但我会在分析后给出一些使用方面要注意的地方和建议。
learn vim script the hard way 笔记(番外)
CH41 Creating a Full Plugin
- 看到这里你可以停了,因为前面的姿势足够你完善自己的
~/.vimrc
脚本,去修复别人脚本的bug了,绝无讽刺的意思 - 往下学之前,建议先玩下Potion语言,这是个很小的语言,使用它的目的是为了辅助我们写vim script
CH42 Plugin Layout in the Dark Ages
~/.vim/colors/
在这里的文件记录了vim的颜色主题,如果运行:color xxx
就能看~/.vim/colors/xxx.vim
的配色方案了,查看当前配色都有哪些用:hi
~/.vim/plugin/
在这里的文件每次vim启动都会运行一次~/.vim/ftdetect/
这里的文件每次启动也会运行一次,ft
的意思是filetype
,这里的文件应该是包含autocmd
用来切换filetype的,所以一般就一行
learn vim script the hard way 笔记(下)
CH31 Basic Regular Expressions
/
和?
,前者向后找,后者向前找
CH32 Case Study: Grep Operator, Part One
:nnoremap <leader>g :grep -R <cWORD> .<cr>
可以搜索<cWORD>
,表示光标下的单词(包括连字符,比<cword>
更大),之后可以用:cwindow
查看quickfix
窗口- 以上还有一点要修改,如果光标在一个
foo;ls
下,使用后实际会执行ls
命令,原理和SQL注入类似,所以需要用单引号保证字面值,:nnoremap <leader>g :grep -R '<cWORD>' .<cr>
- 但上面对于光标有单引号的不启作用,用
:echom shellescape(expand("<cWORD>"))
可以显示shellescape后的值 - 最终版本
:nnoremap <leader>g :silent execute "grep! -R " . shellescape(expand("<cWORD>")) . " ."<cr>:copen<cr>
,前面加个:silent
可以防止搜索时的输出,最后再:copen
打开结果页
CH33 Case Study: Grep Operator, Part Two
进入.vim/plugin/下,新建一个文件”grep-operator.vim”,写上nnoremap <leader>g :set operatorfunc=GrepOperator<cr>g@
和function! GrepOperator(type) | echom "Test" | endfunction
,这时用<leader>giw
会发现打出了Test
learn vim script the hard way 笔记(中)
CH13 Buffer-Local Abbreviations
- 这章就是说
iabbrev
也能用<buffer>
来修饰 - 你想记住某个新的snippet最好办法就是disable掉原来的命令,比如
iabbrev <buffer> return NOPENOPENOPE
CH14 Autocommand Groups
autocmd
是不会替换原先的命令的,假如使用两次同样的命令,那触发autocmd时会进行两次命令- 特别要注意在你
source $MYVIMRC
时,autocmd会再载入一次! - 可以用
augroup testgroup autocmd xxx augroup END
,这时如果你运行下augroup testgroup autocmd yyy augroup END
,你猜xxx
还会执行吗?耶,答案是会! - 你可以在augroup里用
autocmd!
来清空augroup
learn vim script the hard way 笔记(上)
CH02
- 布尔型变量可以用
:set [no]number
这样来设置,:set number!
表示取反,:set number?
获取当前状态(实际:set nonumber?
也可以哟) - 数值型用
:set numberwidth=10
来设置,同理:set numberwidth?
获取当前值 relativenumber
或者rnu
用来显示相对行号,当前所在行显示绝对行号,两边分别从1,2,3开始显示
CH03
- 注释用
"
来标记 - 注意注释不要写在
map
后面,这样会当成命令去执行map a dd "comment
CH04
map
,nmap
,vmap
,imap
都知道什么意思吧