↓ 跳过正文
  1. Categories/

工程

2017

vim下python 的配置

·817 字·2 分钟
由于最近要做数字图像处理的大作业,以及之后一段时间,估计写python多一些,所以打算花些时间配置下vim. # 1. 一键执行 # 其实之前一直有的。。不过没有效果,就没有管。发现问题是,python对应的filetype为"python",而不是"py" # 1func! CompileRunGcc() 2 exec "w" 3 if &filetype == 'c' 4 exec "!g++ % -o %<" 5 exec "! ./%<" 6 elseif &filetype == 'cpp' 7 exec "!g++ % -std=gnu++11 -Wall -o %<" 8 exec "! ./%<" 9 elseif &filetype == 'java' 10 exec "!javac %" 11 exec "!java %<" 12 elseif &filetype == 'sh' 13 :!./% 14 elseif &filetype == 'python' 15 " exec "!python %" 16 " exec "!python %<" 17 exec "!python2.7 %" 18 endif 19endfunc 2.代码补全 # 不想折腾了。。既然ycm也支持python,就先用用看好了。。不行再换别的。 # 放一段ycm for python的配置文件 # 1"默认配置文件路径" 2let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' 3"打开vim时不再询问是否加载ycm_extra_conf.py配置" 4let g:ycm_confirm_extra_conf=0 5set completeopt=longest,menu 6"python解释器路径" 7let g:ycm_path_to_python_interpreter='/usr/bin/python' 8"是否开启语义补全" 9let g:ycm_seed_identifiers_with_syntax=1 10"是否在注释中也开启补全" 11let g:ycm_complete_in_comments=1 12let g:ycm_collect_identifiers_from_comments_and_strings = 0 13"开始补全的字符数" 14let g:ycm_min_num_of_chars_for_completion=2 15"补全后自动关机预览窗口" 16let g:ycm_autoclose_preview_window_after_completion=1 17" 禁止缓存匹配项,每次都重新生成匹配项" 18let g:ycm_cache_omnifunc=0 19"字符串中也开启补全" 20let g:ycm_complete_in_strings = 1 3. 语法检查 # Syntastic大家都知道了。。。。看到了异步检测插件ALE,打算试一下。 # ale_github # 需要注意的是,这个插件需要vim 8.0+的特性。。。 # 放一波配置文件 # 1""""""""""""""""""for ale begin """""""""""""""" 2let g:ale_sign_column_always = 1 "保持侧边栏可见: 3 4let g:ale_sign_error = '>>' "改变错误和警告标识符 5let g:ale_sign_warning = '--' 6let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok'] "改变状态栏信息格式 7 8"自定义跳转错误行快捷键: 9nmap <silent> <C-k> <Plug>(ale_previous_wrap) 10nmap <silent> <C-j> <Plug>(ale_next_wrap) 11"消除某excption not caught的警告 12let g:ale_emit_conflict_warnings = 0 4. 编程提示(jedi-vim) # 据说是vim写python的神器。。。装来看看。。。 # 据说默认配置就够了,先不折腾了 # # #

vundle error detected while processing function

·302 字·1 分钟
好久没装新插件了,最新要配下python,发现安装时候满屏的错误。。。 # 最后发现是shell的锅,因为我用的是fish,在.vimrc文件中添加 # 1set shell=/bin/bash 即可。 # 以及说下可能的其他原因,虽然我没遇到 # * 对于arch系,可能从aur中安装的版本out ot data * 可能没有把.vimrc中vundle的配置从set rtp+=~/.vim/bundle/vundle更新成set rtp+=~/.vim/bundle/vundle.vim * 可能项目名称用了" 而不是' 以及顺手查了下bundle和Plugin的区别。。。 # 简单来说。。Plugin是新写法,bundle是正在被淘汰的写法,不过由于兼容性的原因,仍然在使用。。。 # 以后使用plugin的写法就好。 # 参考资料

qt 5.x 初探 (5) 

·166 字·1 分钟
qt_5.9_ui_doc 还是比直接写代码方便点。。。所以不妨学习一个! 以及。。。qt在2017年6月1号发布了5.9。。。所以之前是5.8。。。现在变成5.9了。。。 遇到了修改了ui文件却没有生效的问题。。。

archlinux安装记

·167 字·1 分钟
实在不忍心x1c吃灰。。。 打算装个arch玩。。。 第一次失败了,原因是忘记配置引导相关… 第二次就成功了… 教程满大街都是就不再写了….

qt 5.x初探 (3)

·677 字·2 分钟
update3: 终于知道了正确的学习姿势… 用百度把要用的东西大概描述出来,然后总能找到一个是你要的。。。 然后再去搜关键词。。。 嗯。。百度还是很有用的啊2333 qt5.8_doc_Line Edits Example 所以现在要把之前写成dialog的几个改回Line edit

g++ 编译多个源文件(转载)

·1369 字·3 分钟
参考资料 一. 常用编译命令选项 假设源程序文件名为test.c。 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

qt 5.x 学习笔记 (2)

·3095 字·7 分钟
先来放一波过程中用到的资料和官方文档好了。 basic layout_qt5.8 QBoxLayout Class_qt5.8 QString Class 5.8 QChar Class qt 5.8 Standard Dialogs Example qt 5.8 更新的部分还是放在最前面好了。 convert from QString to char *的时候有个坑。 In order to convert a QString to a char*, then you first need to get a latin1 representation of the string by calling toLatin1() on it which will return a QByteArray. Then call data() on the QByteArray to get a pointer to the data stored in the byte array. See the documentation: See the following example for a demonstration:

qt 5.x 初探(1)

·477 字·1 分钟
嘛。。为了系统安全课来学一波qt… 现在算是写出了一个可以打开文件,保存文件的记事本。 接下来要搞定的事情是,如何写一个自定义的事件?比如计算个开方之类的。

ubuntu 包管理(apt-get)损坏的解决办法

·287 字·1 分钟
症状是不管安装什么,都会说有一大堆依赖无法安装。。。 大概是: a depends b[i],but b[i] is not be installed. (b==0..n) 最后会提示Unable to correct problems, you have held broken packages 解决办法:用synaptic工具,把可能存在问题的包都清除掉。

install galliumOS on chromebook with chrx

·538 字·2 分钟
我的chromebook 是 samsung 3 查阅Hardware Compatibility 可以知道我的cb支持 gallium,对应的cpu 是Intel Braswell 然后去galliumos 官网 下载相应版本。 (发现这种做法并不需要自己下载。。。) 安装 galliumOS大体有两种方法,一种是完全去掉chromeOS,这种方法需要拆机去除写保护。。。我嫌麻烦。。。于是打算另一种,使用chrx 

murmurhash源码分析

·2165 字·5 分钟
分析 levelDB 源码的时候遇到的,发现是一个广泛应用的 hash 算法,而且是纯 C 写的,于是找来了源码看。 MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。[1][2][3]由Austin Appleby在2008年发明,[4][5] 并出现了多个变种,[6] 都已经发布到了公有领域(public domain)。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。[7]

内存屏障(Memory Barriers)

·2114 字·5 分钟
起因是最近在看 levelDB 源码,其中 port 里的atomic_pointer.h 文件用到了内存屏障。。 于是来学习一下。 粗略地说下我自己的理解。 代码的顺序并不和执行的顺序完全对应,出于对效率的追求,CPU 和编译器会对指令进行重排,以期得到最大的执行效率。

Lock-free vs wait-free concurrency

·1069 字·3 分钟
参考资料 看 leveldb 源码中遇到的,关于 lock-free 和 wait-free..感觉这个讲得不错,我试着翻译一下? There are two types of non-blocking thread synchronization algorithms - lock-free, and wait-free. Their meaning is often confused. In lock-free systems, while any particular computation may be blocked for some period of time, all CPUs are able to continue performing other computations. To put it differently, while a given thread might be blocked by other threads in a lock-free system, all CPUs can continue doing other useful work without stalls. Lock-free algorithms increase the overall throughput of a system by occassionally increasing the latency of a particular transaction. Most high- end database systems are based on lock-free algorithms, to varying degrees.

AWK 初探

·2989 字·6 分钟
参考资料: awk_维基百科 awk简明教程 awk是一门比较古老但是很好用的文本处理工具(语言?) 语法还是很好懂的。。转载了一篇文章,算是简明手册?不过台词有点糟糕 orz 有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年搞出来的文本处理神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。要学AWK,就得提一提AWK的一本相当经典的书《The AWK Programming Language》,它在豆瓣上的评分是9.4分!在亚马逊上居然卖1022.30元。

C++ const 用法总结(转载)

·3410 字·7 分钟
基本全文照搬了:关于C++ const 的全面总结 总结全面还是要一点时间的orz..感谢原作者,暂时没发现有什么错误(? 其中对我而言比较陌生的是“const修饰成员函数”的用法。。已经加粗。

一致性哈希初探

·3645 字·8 分钟
原始论文:一致性哈希 本来不打算放的。。被批评说太不严谨 orz 说说自己的理解好了。 大概就是 hash 的时候,一开始有 n 个桶,你设计的函数是 y=x%n,看起来美滋滋。 然后这时候突然一个桶不见了,如果按照之前设计的 hash 函数,就变成了 x%(n-1)。