I often hear the cherry-pick
usage,but, how to use it?
In Neomutt git repository, i translated zh_CN version on translate branch.If i did not checkout -b my_local_branch
.Just not on “translate branch”.(Sure, i git clone -b translate url:neomutt-site).
I have finished my work(translate), at last git push origin translate
,the result you have seen above. This is help from Marcel Schilling
@yuzibo: just cherry-pik cfdf804 ontop of master and force-push to your translate-branch, this will ‘fix’ this PR, so you could re-open it:
# clone your fork locally
git clone https://github.com/yuzibo/neomutt.git
# enter it
cd neomutt
# fetch & checkout your broken translate branch
git checkout -b translate_broken origin/translate
# get the main repo as a remote
git remote add main https://github.com/neomutt/neomutt.git
# fetch the latest state of the main repo
git fetch main
# checkout the latest master as base for your new translate branch
git checkout -b translate main/master
# use only the last commit of the broken branch for the new one
git cherry-pick translate_broken
# overwrite you broken remote translate branch with the fixed one
git push --force origin translate
这篇文章主要的聚焦点在BPF,经过2017年的快速发展后,现在到了eBPF阶段。
首先,参考这里
If you install the bcc from source code,now i have some terrible question to resolve it.So, i recommended you install it from package manager.
here To see section 5.1 bcc tools will be installed under /usr/share/bcc/tools
Way 1: run it under /usr/share/bcc/tools
Way 2: git clone iovisor, if it does right, you can run command of bcc directly.
Rules:
Providing a verdict for kernel whether safe to run
Simulation of exection of all paths of the program
Steps involved(extract):
Control flow graph
Out of range jumps, unreachable instructions
Contxt, initialized memory, stack spill
Pointer checking
Verifying helper function call arguments
Value and aligment tracking for data access
Living analysis register
Reducing verification complexity
Generlly, there is two check, The first check is : check_cfg()(Do you remember DFS?). It is check wheather is DAG(Directed Acyclic Graph).
The second check is do_check(): register, memory, function, branch(<1024),instructions < 96K
C -> LLVM -> BPF -> loader -> verifier -> JIT -> tx/XDP -> offload
BPF registers mapped to CPU register 1:1
R0 -> return value from helper call
R1-R5 -> argument registers for helper call
R6-R9 -> callee saved, preserved on helper call
R10 -> Read only, as stack pointer
MSB(most significant bit) 最高有效位 LSB(least significant bit) 最低有效位
From least significant to most significant bit:
MSB<——>LSB
8 bit opcode
4 bit destination register (dst)
4 bit source register (src)
16 bit offset
32 bit immediate (imm)
Notes: Most instructions do not use all of these fields. Unused fields should be zeroed.
The context will be describe in Documents/bpf/bpf_devel_QA.txt llvm section.
内核中高速包过滤 讨论了内核中包过滤的几种方式,尤其是bpf and xdp,介绍了DDos防御功能
http://www.brendangregg.com/blog/2015-05-15/ebpf-one-small-step.html
https://blog.yadutaf.fr/2016/03/30/turn-any-syscall-into-event-introducing-ebpf-kernel-probes/
http://www.brendangregg.com/Slides/Velocity2017_BPF_superpowers.pdf
经过这么多次的git的操作,现在对这个工具更有深刻的认识了。
Imaging in a work scenes,after you git clone git-project
and you “git checkout -b new_branch”.When you have finished some works,for example,fix bug and orther operations, you are preparing git push origin master
,But :), yes,you will face such scenes like that.
Important: Some people have updated “master branch”,you felt bad because maintainer will not accept your change(There is called confilct).So, you must resolve it first.
How?
If you dont’ t have commited (push) your change(or after git add
),or you git format-patch
this is best scenes.
git stash
The command will stash your local work, maybe hint.If you operate the step,the origin master will not note your change,so,
git checkout master
and
git fetch origin master && git rebase origin master
git rebase origin/master
git stash pop
OK
In gerrit,there is many cases you have git push
code in gerrit server,but
owner of system maybe not have satisfaction with your change.After servel days,
you have to rebase master branch into you dev branch. This is easy to do it.
Yeah, first of all we must update master branch in any methods.
git fetch origin
First fetch the new master from the upstream repository, then rebase your work branch on that:
git rebase origin/master
现在自己处于研究生的前半期,忽然有些不知所措。这种茫然,来自于对自己专业的不精通、工作的模式的不认同。可以说,自己陷入了一种多元目标抉择难的症状。
有时候自己突然很想赚钱,甚至什么都想转化为盈利,这一点,非常可怕,因为我没有内容输入,输出的自然而然就非常差劲。有一句话说,钱不入急门,我要趁着现在学生的美好时光,沉淀自己,不能沉沦下去。
写这段文字的时间是在2018年农历新年正月初一(2月16日),其实应该在1月1日开始总结的,之所以现在进行规划总结,是因为自己对目前的状况非常不满意。具体表现为浑浑噩噩,自己等待着时间的流逝或者被动的接受命运的安排,这,不是我想要的,我必须摆脱这种生活,对自己负责。我不仅仅是我自己了,还要为其他人负责。
目前为止自己想了几个项目:宗谱、辐射仪、足球比赛、tutor网站、sns内容创造、汉语教学,哪一个都不是特别容易(对我而言),当然,在我开学之前,我会选择其中的一个目标开工,坚持下去。
坚持每天最少记忆15个英语单词,并能够复习,每周总结。
这样的编排有人会说脑惨,我故意这样,就是为了突出英语的重要性,再强调一下,英语的重要性不言而喻,如果你学了英语感觉没有什么用途,记住,不是英语的错,而是你没有用到点上。
当然,肯定会保持学业不受影响的前提下,这是底线。
如果你很长时间不进行写作,当你再次拿起笔(敲文字)的时候会非常的生疏,这种感觉非常的糟糕,就好像你有一个宏伟的计划,但是你还没有迈出第一步,就挂掉了。坚持这个过程,会让你的写作能力、意志力都得到锻炼,这是一个好习惯。
这个老生常谈了,但是始终提不到战略高度。后面的路非常长,坚决不能透支自己的未来。具体的细节自己心里有个数就可以了。
http://www.thucsnet.org/uploads/2/5/2/8/25289795/0201.pdf,这篇清华大学的文章讲的非常好。
This is a pdf intended for networking research
二层转发:
FPGA 和 ASIC 的区别
(Here)[https://www.leiphone.com/news/201609/LN6YmCzXcaHE5PDi.html]