作者:守望先生 ID:shouwangxiansheng 写过shell脚本的人都知道,即便出现一些简单的语法错误,运行的时候也可能没有办法发现。...诚然,shell脚本是解释运行,没有办法向C/C++那样严格检查,但是我们仍然可以借助一些工具帮助我们提前发现一些错误。 shellcheck shellcheck就是这样的一个工具。...怎么样,是不是很给力,每个可能的错误都提示了。新手写shell出现莫名的报错时,可以尝试使用奥。当然例子中很多并不是真的错误,而是某种写法不符合POSIX标准,这种情况也应该避免。.../test.sh: line 5: `then' 只是告诉你在then附近有语法问题,到底什么问题呢?...到下一个错误 :lprevious 到上一个错误 更多安装详情也可以参考https://github.com/vim-syntastic/syntastic。
但是,由于它是基于JSLint开发的,自然原有的一些问题它也继承下来了,比如不易扩展,不容易直接根据报错定位到具体的规则配置等,虽然之前好像是有过相关的讨论,但是现在仍然没有什么好的解决办法。...支持配置文件,方便使用 支持了一些常用类库 支持了基本的ES6 不足 不支持自定义规则 无法根据错误定位到对应的规则 ESLint 优点 默认规则里面包含了JSLint和JSHint的规则,易于迁移(...这肯定是故意的XD) 可配置为警告和错误两个等级,或者直接禁用掉 支持插件扩展 可以自定义规则 可以根据错误定位到对应的规则 支持ES6 唯一一个支持JSX的工具 不足 需要进行一些自定义配置(因为太灵活了嘛...,不过文档是很详细的) 慢 (它比其他两个都要慢) Vim支持 我们都使用Syntastic来配置 JSLint的Vim配置 有一个jslint.vim当然版本太老了。。...'] 也可以使用独立插件jshint.vim ESLint的Vim配置 sudo npm install eslint -g 在vimrc中添加如下配置 let g:syntastic_javascript_checkers
其实,到这一步,如果没有错误的话,vim+ycm已经可以支持代码补全了(只是部分的补全哟,目前还补全不了c++工程中的基础库、依赖的第三方库,如:boost、libevent等) 五、让vim支持语议补全...——补全工程上下文、补全第三方依赖库 1、介绍一下ycm补全的实现及功能:YCM的补全功能,使用的是clangd(clangd与libclang完全不同,请自行百度)的基于语义分析来进行补全的...的方式,如上面提到的,基于cmake、Ninja、GNU make; 如果使用的是cmake的构建方式,则有两种生成”补全数据库“的方式: 第一种:在工程根目录执行:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS...然后使用vim重新打开工程中的文件(只要你的CMakeLists.txt配置正确),就不会报找不到第三库、依赖库的错误了 第二种:在工程的顶层CMakeLists.txt中,增加配置:set( CMAKE_EXPORT_COMPILE_COMMANDS...下面是关于第三方库的补全: ?
相关 let g:syntastic_python_checkers=['pylint'] let g:syntastic_php_checkers=['php', 'phpcs', 'phpmd']..."set foldenable " 允许折叠 ""set foldmethod=manual " 手动折叠 set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些...vi的键盘模式,而是vim自己的 set nocompatible " 去掉输入错误的提示声音 set noeb " 在处理未保存或只读文件的时候,弹出确认 set confirm "禁止生成临时文件...,告诉我们文件的哪一行被改变过 set report=0 " 在被分割的窗口间显示空白,便于阅读 set fillchars=vert:\ ,stl:\ ,stlnc:\ " 高亮显示匹配的括号 set..." let g:html_indent_style1 = "inc" filetype plugin indent on " required!
以前我都是使用Ctags+或来进行补全,然而其命中率却比较低,有时候根本就乱匹配。...用于从代码库中检出源代码。在Ubuntu下这两个软件的安装都非常简单,使用apt-get命令即可安装完成。 YouCompleteMe和Syntastic.这两个插件都是配合使用的。...YCM不用再说,Syntastic用于源码的实时检查。具体效果如同Eclipse一样,在代码编写的过程中即可实时报告语法错误。...Vundle托管在Github上,需要使用到git来检出源代码。...下面是Syntastic的效果图,警告和错误标志可配置,光标在错误行时,vim的命令行会有相关错误信息: ? (2)遇到的问题。 libclang.so的版本一定要在3.2+,否则YCM无法正常工作。
C/C++等的时候ycm会找到相应的头文件和库文件进行编译并给出相应的提示。...我们可以通过根据前面的buffer序号来使用Ctrl+w :b buffer-number来快速切换。...使用Pylint来帮助我们进行Python语法检测 首先Pylint是一个代码分析工具,它能够分析Python中的代码错误,查找不符合风格标准(默认PEP8)和有潜在问题的代码,如果单独使用的话,他还可以为我们的...我们可以利用syntastic插件来使用pylint帮助我们进行语法检查。...syntastic的安装可以直接通过Vundle来进行方便的安装,安装后我们需要进行下配置: " Plugin syntastic settings.set statusline+=%#warningmsg
第七步:编译YCM 安装完成后提示YCM server错误,这是正常的,因为ycm需要手工编译出YCM core库。...pip-pypy的命令来代替pipp,这只是我个人习惯 第十一步 使用virtualenvwrapper虚拟环境 通常不同的项目会使用不同的库版本,虚拟环境能让你免弄坏系统环境的风险。.../syntastic'"(下面的配置放在vundle安装语句外)"vimrc设置flake8作为语法检查器let g:syntastic_python_checkers = ['flake8']"高亮错误..."let g:syntastic_enable_highlighting=1"自动跳转到发现的第一个错误或警告处"let g:syntastic_auto_jump = 1"yapf自动格式化快捷键"autocmd...第十三步 安装MariaDB数据库 MariaDB是MySQL作者的新分支,CentOS已经默认使用MariaDB代替MySQL。
之前的文章介绍了Linux中对共享库中同名函数的处理规则——根据链接库的顺序来确定调用哪个函数。 本次介绍共享库其他一些有意思的性质。...在我们开发过程中,难免会使用到第三方库,而且时不时还需要更新,某些情况下还要兼容不同版本并维护。 按照上次验证的结果,如果两个不同版本库中有同名函数,并且需要兼容,那我们如何确定要调用哪个函数呢?...使用链接库的顺序来处理,显然不是一个好办法。...【虽然大部分情况下库的函数名称都是不一样的】 再来一个场景,当我们拿到第三方库和头文件,我们还想看下库里面还有哪些其他的函数接口,这时可以使用 nm -D *.so 进行查看。...+= -I $(APP_STACK_DIR)/Inc # 对外接口目录 #INC_CFLAGS += -I $(APP_STACK_DIR)/Intf # 动态链接库 #LDFLAGS += -lName
不知道你有没有过这样的感受,当你使用软件遇到异常的时候,有时候软件给出的错误提示让人摸不着头脑。唯一的办法就是复制到搜索引擎搜一下,看看有没有哪个不幸的人与我遇到一样的问题。...因此,作为程序员群体的一份子,在这里我想呼吁大家认真对待错误提示,特别是那些不是给“人”看的错误提示…… 作为软件的创造者,我们虽然无法避免出现异常、出现bug,但是我们可以做到避免无意义的错误提示产生...Z哥我自己以前也同样没意识到这个问题,经过了这些年的工作之后,我认为,编写正确的错误提示可以按照以下的思路来。 /01 不要提示用户不关心的信息/ 首先来个排除法。...比如,前面提到的“提单失败”的例子,你告诉他由于缺少XX信息导致提交失败,那么使用者自然会去想办法把缺少的信息给补上。 我还记得我之前用某个邮箱的时候,有封邮件发不出去,它总是提示我“邮件发送失败。”...当然,比给出合理的错误提示更好的是,避免出现错误。所以你还可以更进一步,提前规避掉一些错误。 比如, 为了避免日期选择超过有效范围,可以对有效范围外的日期设置为禁用状态。
如果你想按时间长度排序表格,则没有办法完成,但是丝毫不影响你了解每首歌曲的长度。...比如说:当我写下标题文字的时候,我仅仅告诉浏览器,这里放置的,是一个标题,至于浏览器如何显示它,那就不关我的事了(尽管几乎所有的浏览器都会以很大的黑体加粗超大来显示)。...实际上,这种做法是相当错误的,当你这样做了的时候,你不可避免的要使用大量的ID和Class,对日后的维护产生巨大的困难(甚至只有你才愿意去维护这个页面)。 《CSS权威指南》的作者Eric A....按照Web标准制作页面时需注意的两点 不要为了标准而去标准 很多人在对Web标准过了入门期以后,进入了一种对标准狂热推崇的状态,他们对自己的要求可以用苛刻来形容,用尽一切办法使出浑身解数保证自己制作出来的页面...我们有没有思考过为什么要使用Web标准?我想可能主要有这么几个原因:1、浏览器兼容性。2、搜索引擎友好型。3、降低页面文件大小。4、更好的用户体验。
今天测试论坛上传头像,发现出现数据库问题,后台登录UCenter报错: UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars...检查了好久终于解决了,问题出在数据库名称的大小写了,因为Windows系统字母不区分大小写,而Linux是大小写敏感的,在搬家的时候一定要注意这一点,在命名的时候因为应该注意避免使用大写。...X以下配置文件,看数据库配置信息有没有错误: \config\config_global.php \config\config_ucenter.php \uc_server\data\config.inc.php...我的问题就出在了 \uc_server\data\config.inc.php 文件,数据库名有大写,但是数据库表示小写: ?
配置当然要根据自己的使用习惯来设置,这里仅仅给出参考。这样我们将多窗口终端的控制玩弄于手掌之中啦。 ?...+等的时候ycm会找到相应的头文件和库文件进行编译并给出相应的提示。...我们可以通过根据前面的buffer序号来使用Ctrl+w :b buffer-number来快速切换。...使用pylint来帮助我们进行Python语法检测 首先Pylint是一个代码分析工具,它能够分析Python中的代码错误,查找不符合风格标准(默认PEP8)和有潜在问题的代码,如果单独使用的话,他还可以为我们的...我们可以利用syntastic插件来使用pylint帮助我们进行语法检查。 syntastic的安装可以直接通过Vundle来进行方便的安装,安装后我们需要进行下配置: ?
--enable-python3interp=yes --enable-shared --prefix=/usr (关键要开启python api注入,enable-share 开启让YCM能读库)...* silent loadview 1 augroup END "用空格来切换折叠状态 nnoremap za """---这条配置仅使用mac用户!!!...(easymotion-repeat) """ "因为Python已经有pylint来检查, 而且syntastic检查Python会在保存时有很长时间的卡顿, 所以禁用它对Python文件的检查...装完后执行下vim果然发现报错,先把主题颜色搞定把,推荐onedark(atom党的最爱), 主题安装教程链接 主题装完启动vim,发现又报错,反正就是类似的错误,看起来像是youcompleteme没装完...ack: 请执行如下命令保证你的命令行ack命令能够被vim ACK组件使用。
++ Redistribute 否则会出现ARX文件无法加载的问题) 主要是VS2005时代对应的AutoCAD 2007-2009版本, VS 2008 SP1是必须的AutoCAD 2010时就使用了...一般绿色编译器都会有个注册表文件,将绿色编译器放到需要的目录,记录下来,替换注册表中的路径即可 ; (绿色版的关键步骤) 如果在之前已经坑爹的装了很多版本就不需要3、4步骤了,这个就是写入注册表一些记录告诉...编译设置ObjectARX inc lib有更好的方法?...请熟悉的指导 自定义VS2010项目文件vcxproj动态管理inc lib 二、一些错误的原因: 1、错误提示:VS2008编译错误fatal error C1902: 程序数据库管理器不匹配...解决: 找个VS 2008 SP1 的绿色版编译才是安全的解决; 如果用了VS 2008 或者替换SP1的include头文件也可 三、 后续期待切换编译环境inc lib有好的解决办法
于是,当你使用 C:\python371\python xxx.py的时候,就是用的 Python 3.7.1来运行这个文件,当你使用 C:\python372\python xxx.py的时候,就是用的...无论是哪个系统,当你执行 python xxx.py的时候,它首先会检查 python是不是系统命令,发现不是,于是会在当前文件夹下面找有没有一个可执行文件,名字叫做 python.exe(或者python.bat...如果你想在 CMD 运行 python xxx.py时,默认使用 Python 3.7.2来运行怎么办呢?...所以,你可以在你的电脑上安装100个相同版本或者不同版本的 Python,你想用哪个,可以直接通过绝对路径来启动,或者修改环境变量,把你想用的那个版本的 Python 设置到最前面。.../blob/master/Python初学者常犯的错误及其解决办法.md Python初学者常犯错误及解决方法自查
//配置文件 install//安装文件 seacmseditor//第三方编辑器 template//模板文件 upload//文件上传目录 index.php//主目录 使用说明.txt//说明文件...php require 'inc/301.php';require 'inc/conn.php';require 'inc/time.class.php';$query = "SELECT * FROM...> 这里有很多将参数代入查询的语句,发现 cid 开始做了 addslashes 处理,这种情况就只能看是否是 GBK 的方式连接数据库来进行宽字节注入了,那个用引号包裹起来的cid就比较的鸡肋,那有没有没有被引号包裹起来的呢...对于 update 注入,很明显涉及到我的知识盲区了,仔细分析一下: and 1=1 //正确 and 1=2 //正确 and sleep(5)//延时成功 老办法,看大牛文章,然后看脑子它吸收不吸收了...;history.back()";exit; } 没有使用 token,也没有要求初始密码,只是判断了两次密码是否相同。
这个情况下去打包,就一定会打包失败并且完整告诉你哪个文件哪行代码出了什么错。开发人员在收到错误反馈后就会修改代码然后重新打包。...既然有这么多人向版本管理系统提交代码,我需要检测下他们的代码能否能正常打包成一个文件,有没有引用的错误,语法的错误,有没有缺依赖包等等,这个都是通过将文件编译打包。...如果复杂度偏高,那你就要想办法将这个偏高的函数想办法将它简单化,降低它的复杂度,这样它的流程以及 bug 方面就不会有那么多。...开发人员在自我的层面来控制代码的质量,这就不用等到测试告诉你这个功能明明是好的,为什么到了这个版本又挂了?你在单元测试阶段就会发现。 但是,国内的场景是没有多少开发有做单元测试的意识。...请看《Jenkins使用介绍》一文。 当然这里也需要有 svn\git,互相管理下,这样无论在哪个环境去做自动化测试,脚本都是可以执行的。 也可以 2 台执行机同时做自动化测试。
要知道我第一次进入 NERDTree,不知道怎么回到 buffer 时,没办法只能退出 vim 再重新打开文件 -_|. ?...关于分割窗口的功能,我还常常使用 tmux 来实现,因为它也非常值得学习....相关功能 [menu] t 功能开关(toggle) [menu] v vim相关 unite.vim 这部分配置需要很多心思打磨,有待完善. syntastic 在前部分介绍安装事项时,提到要安装一些额外使用的工具...,有很多就是 syntastic 这个插件所需要的: let g:jyntastic_python_checkers=['pyflakes'] " 使用pyflakes 比pylint...Python3 和绝对路径避免不必要的问题. let g:ycm_path_to_python_interpreter='/absolute/path/to/python' Customization
这个情况下去打包,就一定会打包失败并且完整告诉你哪个文件哪行代码出了什么错。开发人员在收到错误反馈后就会修改代码然后重新打包。...既然有这么多人向版本管理系统提交代码,我需要检测下他们的代码能否能正常打包成一个文件,有没有引用的错误,语法的错误,有没有缺依赖包等等,这个都是通过将文件编译打包。...如果复杂度偏高,那你就要想办法将这个偏高的函数想办法将它简单化,降低它的复杂度,这样它的流程以及 bug 方面就不会有那么多。...开发人员在自我的层面来控制代码的质量,这就不用等到测试告诉你这个功能明明是好的,为什么到了这个版本又挂了?你在单元测试阶段就会发现。 但是,国内的场景是没有多少开发有做单元测试的意识。...当然这里也需要有 svn\git,互相管理下,这样无论在哪个环境去做自动化测试,脚本都是可以执行的。 也可以 2 台执行机同时做自动化测试。
领取专属 10元无门槛券
手把手带您无忧上云