前言 本系列罗列日常工作学习中遇到的工具问题以及相应的解决方案,写下来供后续自己参考的同时也作分享一波!
编程相关 Sublime Text 3 win10下解决中文输入法光标不跟随问题 国内一大老Fork并修改之后的IMESupport主页地址 ,在win10下使用完美解决。看下图所示:
可以直接从GitHub上下载下来,把插件路径解压到:**%AppData%\Sublime Text 3\Packages** 下即可,下图是我本地安装的:
安装Markdown Editing插件之后文本编辑区域过窄问题 跟该插件的默认设置有关,解决方案: 打开路径:Preferences->Package Settings->Markdown Editing->Markdown GFM Settings –User,在配置下添加关于wrap_width 的属性,我修改成了130,如下图所示: 设置前效果: 设置后效果:效果明显!
Markdown Editing插件配置 推荐几个自己常用的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 "color_scheme" : "Packages/Boxy Theme/schemes/Boxy Monokai.tmTheme" , "highlight_line" : true , "line_numbers" : true , "tab_size" : 4 , "translate_tabs_to_spaces" : true , "trim_trailing_white_space_on_save" : true , "word_wrap" : true , "wrap_width" : "auto" , "mde.keep_centered" : true , "color_scheme" : "Packages/ayu/ayu-light.tmTheme" ,
打开文件新打开标签页,而不是不替换当前标签页 路径:Preferences->Settings在默认设置页中设置即可: "open_files_in_new_window": true
如果发现默认设置页面中就是上述设置,那么在右侧用户设置 "preview_on_click":false
此时唯一区别就是打开文件的时候需要双击
卸载插件 Ctrl+Shift+P,输入Remove,选择Remove Package,之后选择相应的插件,直接回车即可
快速插入代码片段 打开代码片段(Snippet): Tools -> Develop -> New Snippet 例如,我想要再markdown中快速生成插入shell代码的片段,那么可以安装下图中的方式编写,很简单: 这里面的语法很简单: 这个XML转义票签里面就是写入你想要快速插入的代码片段tabTrigger 就是你需要再什么单词后按tab键自动插入上述你编写的代码片段 Ctrl + S 保存,目录默认即可,文件名随意,文件后缀名必须是:**.sublime-snippet**,效果就如下图所示:
快速查找重复行 Ctrl + F 打开查找控制面板,输入:
1 ^(.+)$[\r\n](^\1 $[\r\n]{0 ,1 })+
点击Find即可。
设置行间距相关 在个人用户设置里面加上下面的两行json配置即可,段前段后增加间距,设置2个人感觉刚刚好:
1 2 "line_padding_bottom" : 2 , "line_padding_top" : 2
一个自动插入的插件 需求: 编写hexo博客的时候,需要经常插入abbrlink风格的图片。 类似于这种:
文章写多了,避免需要来回去复制a4b1030a,因此可以基于sublime text的插件功能来实现。 原文请教地址:https://forum.sublimetext.com/t/how-to-match-string-and-autofill-in-sublime-text-snippet/74163/3 PS:是我向官方论坛请教,得到一个大佬提供的思路之后完成的。之前原本以为,只通过snippet能够实现的,后来发现实现不了。
思路: 不是很复杂,就是扫描当前光标所打开的页面,匹配abbrlink前缀的行字符串,完了分割提取之后拿到16进制的字符串,之后在拼接markdown图片字符串插入到当前光标所在位置即可。 直接贴代码,注意class名称,Command结尾是必须的,前面的直接全小写。Command前面的名称就是你的命令名称,我建的就是:autoinsertpictag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import sublimeimport sublime_pluginimport reclass autoinsertpictagCommand (sublime_plugin.TextCommand): def run (self, edit ): all_text_region = self .view.substr(sublime.Region(0 , self .view.size())) try : match = re.findall(r'abbrlink: \w+' , all_text_region) if match : target_abbrlink = match [0 ].split(" " )[1 ] selections = self .view.sel() self .view.insert(edit, selections[0 ].b, "" ) sublime.status_message("auto insert successfully!" ) else : print ("Can't find any abbrlink str!!" ) except Exception as e: print ("Error auto insert: " + str (e))
使用的具体函数什么意思,上面简短的注释写明了,具体的请去官网手册中查阅。 接下来还需要做一件事情,绑定菜单和快捷键: 在你的脚本目录,一般默认是:C:\Users\[username]\AppData\Roaming\Sublime Text\Packages\User
下面
绑定菜单:新建名为:Context.sublime-menu
文件,内容如下: 1 2 3 4 [ { "caption" : "-" , "id" : "autoinsertpictag" } , { "command" : "autoinsertpictag" , "caption" : "autoinsertpictag" } , ]
绑定快捷键:新建名为 Default (Windows).sublime-keymap
内容如下: 1 2 3 [ { "keys" : [ "ctrl+1" ] , "command" : "autoinsertpictag" } , ]
这样以来,就可以通过右键菜单和快捷键来快速插入了
NodeJS windows环境下面配置
在node.exe安装目录下新建两个文件夹,node_cache和node_global 命令行输入下面命令,配置环境,路径换成你的安装环境 1 2 npm config set prefix "G:\programs\nodejs\node_global" //修改 npm 的全局安装模块路径 npm config set cache "G:\programs\nodejs\node_cache" //修改 npm 的缓存路径
打开环境变量:【计算机】->【右键】->【属性】->【高级】->【环境变量】
系统变量:新建【NODE_PATH】系统变量,指向【G:\programs\nodejs\node_global\node_modules】
用户变量:选择【PATH】后点击【编辑】按钮,将默认路径【C:\Users\admin\AppData\Roaming\npm】改为【G:\Program Files\nodejs\node_global】
更换镜像源: 1 2 3 4 5 6 7 8 # 查询当前使用的镜像源 npm get registry # 设置为淘宝镜像源 npm config set registry https://registry.npmmirror.com/ # 还原为官方镜像源 npm config set registry https://registry.npmjs.org/
测试: 1 2 # 看看上面配置的G:\Program Files\nodejs\node_global\node_modules路径里面有没有express npm install -g express
JavaHome
打开系统环境变量
新建系统变量 JAVA_HOME
和 CLASSPATH
JAVA_HOME: G:\Program Files\Java\jdk-1.8
CLASSPATH: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Path变量中新增:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
办公相关 Windows相关 WinDbg(windows 蓝屏分析工具) 近期周末在玩一款游戏的时候,老是会遇到蓝屏的情况,不清楚什么原因,可见的过程中对这个游戏送一串????
准备工作 windows蓝屏之后,通常都会在C:\Windows\Minidump该目录下面转存储相应的dump文件,如下图所示: 此时需要用到微软官方dump文件分析工具,官方下载地址,如下:Windows SKD Tool Kits 点击页面中的“DOWNLOAD THE INSTALLER” 下载一个约1.29MB大小的安装文件 PS: 防止失效,也可以 文件MD5:93A956CB0A05A0EB38BB056F7B5864F2 双击运行之后,前面的安装路径自行填写,其中在“Select the Features you want to download”页面,如下图所示: 当中,特别注意“Debuging Tools for Windows”,这个便是我们想要的工具当然,如果你想最简单的方式,直接默认全选,一路next下去,也是可以的 等待安装完成PS:可能要试具体网络环境,我这边很快,不到5分钟全部安装完成
分析dump文件之前的配置工作 在开始中找到WinDbg(x64),运行,运行之后是这样的: 点击:File->Symbol File Path,如下图所示: 在Symbol Path会话框里输入如下路径:
1 SRV*G:\Symbol*http://msdl.microsoft.com/download/symbols
其中G:\Symbol是各自symbols文件下载到本地的路径,可以自行配置
如果不配置上述symbol配置会怎样? 会提示你,如下一行错误:
1 Your debugger is not using the correct symbols
是无法正常分析dump文件的
开始分析dump文件 点击:File->Open Crash Dump,找到对应的dump文件 打开之后,开始由于上述配置symbols路径,会自动从msdl下载分析时遇到的symbols,如下图所示:注意:此时左下角状态栏会显示debuggee not connected字样,这是正常现象,表示debug分析还在准备中,如果你注意最外层WinDbg左下角的状态栏,是可以看到相应的下载Symbols进程的,一个’/‘符号在转圈,注意观察 如果网络正常,你会看到在你配置下载的symbols路径下面会多了很多文件夹,如下图所示:但是,如果你长时间发现,只有一个文件夹,而且点进去,如果发现一个名为:download.error文件,而且这个文件不是0kb,那么你就要考虑可能是你的网络有问题,不能正常从msdl下载。一种可能DNS解析msdl就是有问题;另一种可能被ban了?没考证,我的解决方案是直接把这个域名msdl.microsoft.com加到黑名单里,走科学上网,发现很快就能正常下载symbols文件了。 下载好的内容如下图所示:
稍等片刻,等变成如下图所示的页面,表面可进入到准备分析阶段:此时注意,左下角状态已变
点击上图中的**!analyze -v**链接,或者在下方状态栏的命令行中直接输入“!analyze -v”,两者等价。 等待分析完成之后,提供一则我的dump分析结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* KMODE_EXCEPTION_NOT_HANDLED (1e) This is a very common bugcheck. Usually the exception address pinpoints the driver/function that caused the problem. Always note this address as well as the link date of the driver/image that contains this address. Arguments: Arg1: ffffffffc0000005, The exception code that was not handled Arg2: fffff8036f6d2316, The address that the exception occurred at Arg3: 0000000000000000, Parameter 0 of the exception Arg4: 0000000000000014, Parameter 1 of the exception Debugging Details: ------------------ KEY_VALUES_STRING: 1 TIMELINE_ANALYSIS: 1 DUMP_CLASS: 1 DUMP_QUALIFIER: 400 BUILD_VERSION_STRING: 17134.1.amd64fre.rs4_release.180410-1804 SYSTEM_MANUFACTURER: System manufacturer SYSTEM_PRODUCT_NAME: System Product Name SYSTEM_SKU: SKU SYSTEM_VERSION: System Version BIOS_VENDOR: American Megatrends Inc. BIOS_VERSION: 1009 BIOS_DATE: 07/23/2017 BASEBOARD_MANUFACTURER: ASUSTeK COMPUTER INC. BASEBOARD_PRODUCT: PRIME Z270-A BASEBOARD_VERSION: Rev 1.xx DUMP_TYPE: 2 BUGCHECK_P1: ffffffffc0000005 BUGCHECK_P2: fffff8036f6d2316 BUGCHECK_P3: 0 BUGCHECK_P4: 14 READ_ADDRESS: fffff8036f661388: Unable to get MiVisibleState Unable to get NonPagedPoolStart Unable to get NonPagedPoolEnd Unable to get PagedPoolStart Unable to get PagedPoolEnd 0000000000000014 EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - <Unable to get error code text> FAULTING_IP: nt!CmpCreateKeyBody+166 fffff803`6f6d2316 0fb74514 movzx eax,word ptr [rbp+14h] EXCEPTION_PARAMETER2: 0000000000000014 BUGCHECK_STR: 0x1E_c0000005_R CPU_COUNT: 8 CPU_MHZ: 1068 CPU_VENDOR: GenuineIntel CPU_FAMILY: 6 CPU_MODEL: 9e CPU_STEPPING: 9 CPU_MICROCODE: 6,9e,9,0 (F,M,S,R) SIG: 70'00000000 (cache) 70'00000000 (init) BLACKBOXBSD: 1 (!blackboxbsd) BLACKBOXPNP: 1 (!blackboxpnp) CUSTOMER_CRASH_COUNT: 1 DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT PROCESS_NAME: services.exe CURRENT_IRQL: 0 ANALYSIS_SESSION_HOST: KEMI-PC ANALYSIS_SESSION_TIME: 08-18-2018 12:38:32.0201 ANALYSIS_VERSION: 10.0.17134.12 amd64fre EXCEPTION_RECORD: ffffd5896efe0b10 -- (.exr 0xffffd5896efe0b10) ExceptionAddress: ffffd5896ef03b50 ExceptionCode: 01000000 ExceptionFlags: 00000002 NumberParameters: 1896624160 Parameter[0]: 0000000000000000 Parameter[1]: 0000000000000000 Parameter[2]: ffffd5896f0037b0 Parameter[3]: ffffd5896ec217e0 Parameter[4]: ffffd5896e780ba0 Parameter[5]: 0000000000000000 Parameter[6]: 00000000000a000a Parameter[7]: ffffd5896efe0f80 Parameter[8]: 0000000000180018 Parameter[9]: ffffd5896efe0f8a Parameter[10]: ffffd5896f9a8bd0 Parameter[11]: ffffd5896e780c70 Parameter[12]: 0000000000000000 Parameter[13]: ffffd5896eeff8b0 Parameter[14]: 0000000000000000 LAST_CONTROL_TRANSFER: from fffff8036f2e25dd to fffff8036f3bcca0 STACK_TEXT: ffff8689`0c47e3c8 fffff803`6f2e25dd : 00000000`0000001e ffffffff`c0000005 fffff803`6f6d2316 00000000`00000000 : nt!KeBugCheckEx ffff8689`0c47e3d0 fffff803`6f3cd942 : ffffd589`6efe0b10 ffffd589`7a2e8730 00000000`00000000 ffffd589`6b5e4938 : nt!KiDispatchException+0x58d ffff8689`0c47ea80 fffff803`6f3ca4bf : 00000000`00000000 00000000`00000040 ffffd589`69bc6420 ffffc10a`55a3e398 : nt!KiExceptionDispatch+0xc2 ffff8689`0c47ec60 fffff803`6f6d2316 : 00000000`00000010 ffffd589`77284e40 00000000`00000030 ffff8689`0c47ee50 : nt!KiPageFault+0x3ff ffff8689`0c47edf8 ffff8689`0c47f090 : 00000000`00000001 ffff8689`0c47f840 00000000`00000000 00000000`00000000 : nt!CmpCreateKeyBody+0x166 ffff8689`0c47eea8 00000000`00000001 : ffff8689`0c47f840 00000000`00000000 00000000`00000000 ffff8689`0c47ef80 : 0xffff8689`0c47f090 ffff8689`0c47eeb0 ffff8689`0c47f840 : 00000000`00000000 00000000`00000000 ffff8689`0c47ef80 ffff8689`0c47ef19 : 0x1 ffff8689`0c47eeb8 00000000`00000000 : 00000000`00000000 ffff8689`0c47ef80 ffff8689`0c47ef19 ffff8689`0c47efd0 : 0xffff8689`0c47f840 THREAD_SHA1_HASH_MOD_FUNC: cc68484f0ad7b2ba7711fc62c7e22b20f74cd551 THREAD_SHA1_HASH_MOD_FUNC_OFFSET: 09da40a0301b7e372ce92d3ab9bddb9d5a57ce52 THREAD_SHA1_HASH_MOD: f08ac56120cad14894587db086f77ce277bfae84 FOLLOWUP_IP: nt!CmpCreateKeyBody+166 fffff803`6f6d2316 0fb74514 movzx eax,word ptr [rbp+14h] FAULT_INSTR_CODE: 1445b70f SYMBOL_STACK_INDEX: 4 SYMBOL_NAME: nt!CmpCreateKeyBody+166 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nt IMAGE_NAME: ntkrnlmp.exe DEBUG_FLR_IMAGE_TIMESTAMP: 5b63c7b5 IMAGE_VERSION: 10.0.17134.228 STACK_COMMAND: .thread ; .cxr ; kb BUCKET_ID_FUNC_OFFSET: 166 FAILURE_BUCKET_ID: 0x1E_c0000005_R_nt!CmpCreateKeyBody BUCKET_ID: 0x1E_c0000005_R_nt!CmpCreateKeyBody PRIMARY_PROBLEM_CLASS: 0x1E_c0000005_R_nt!CmpCreateKeyBody TARGET_TIME: 2018-08-18T03:01:10.000Z OSBUILD: 17134 OSSERVICEPACK: 228 SERVICEPACK_NUMBER: 0 OS_REVISION: 0 SUITE_MASK: 272 PRODUCT_TYPE: 1 OSPLATFORM_TYPE: x64 OSNAME: Windows 10 OSEDITION: Windows 10 WinNt TerminalServer SingleUserTS OS_LOCALE: USER_LCID: 0 OSBUILD_TIMESTAMP: 2018-08-03 11:10:45 BUILDDATESTAMP_STR: 180410-1804 BUILDLAB_STR: rs4_release BUILDOSVER_STR: 10.0.17134.1.amd64fre.rs4_release.180410-1804 ANALYSIS_SESSION_ELAPSED_TIME: ff90 ANALYSIS_SOURCE: KM FAILURE_ID_HASH_STRING: km:0x1e_c0000005_r_nt!cmpcreatekeybody FAILURE_ID_HASH: {c4b33015-e33f-270e-d1a4-e4a9a8d630df} Followup: MachineOwner ---------
分析结论 从上述结果中,注意观察下述字眼:
1 2 3 DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT PROCESS_NAME: services.exe
错误原因是WIN8_DRIVER_FAULT ,错误进程是services.exe ;在另一个dump文件中,错误原因一样,错误进程是dwm.exe ,俩程序都是windows自身程序。结合错误原因,大致猜测:可能是显卡驱动程序问题 。
处理观察 打开Geforce Experence,更新N卡驱动,之后继续观察还有没有蓝屏发生
又一次蓝屏分析 昨晚惯例周五晚上打游戏的时间(Gaming Night),玩着玩着,就蓝屏了。 蓝屏页面没有拍,报的是:SYSTEM_SERVICE_EXCEPTION的错误。 重启之后,WinDbg打开分析一下,发现是OneDrive的锅。 很有可能是最近重新做系统之后,OneDrive一直在更新状态导致的,具体原因不知。
解决过程 卸载OneDrive,官网重新下载安装包。重新安装。安装好之后,重新指定新的路径为OD的同步路径
问题分析 怀疑是重装系统之后,直接用的老的OD的同步路径,导致OD一直是同步文件的状态。最终在某次偶然的机会,崩溃蓝屏了。。。