工具、环境的知识收录

一些工具、环境配置的一些技巧或者相关的知识概念记录在这里。

Linux文件权限修改

Linux下每个文件有9个权限位,可以将他们分为三类:

-读(read)写(write)执行(execute)-
所有者(user)rwx7
用户组(group)rwx7
其他(other)rwx7
-421-

在Linux下使用chmod来修改文件权限。
如果需要往一个文件上增加user的可执行权限,简单来说可以有两种办法:
假定有一个文件test,当前的权限是-wxr-xwr-(356),我们要往其上增加用户读、用户组写以及其他执行权限。
第一种:通过u表示用户、g表示用户组、o代表其他。

1
2
3
4
5
6
chmod u+x test
# rwxr-xrw-
chmod g+r test
# rwxrwxrw-
chmod o+x test
# rwxrwxrwx

第二种方式就是使用数字设定法,由上面的表格可见r为4、w为2、x为1,把你要设定的三位的值加起来就是该组(user/group/other)的权限:
上一种方法修改权限略微繁琐一点,在这里我们可以直接指定u/g/o的权限:

1
2
3
4
chmod 777 test
# rwxrwxrwx
chmod 356 test
# -wxr-xwr-

虚拟机网络配置

VMware-编辑-虚拟网络编辑器中设置其中一个虚拟网卡(VMnet0)为桥接到物理网卡。

然后修改虚拟机设置中的网络适配器为上面我们所编辑的虚拟网卡(VMnet0)。

然后重启进系统,通过ifconfig查看是否与局域网在同一网段。

因为现在是路由动态分配的IP,所以有可能重启之后IP就变化了。需要来设置一下静态IP。
编辑/etc/network/interfaces,从

1
2
auto eth0
iface eth0 inet dhcp

改为(网关和IP地址改为你自己的局域网配置):

1
2
3
4
5
auto eth0
iface eth0 inet static
address 192.168.2.123
netmask 255.255.255.0
geteway 192.168.2.1

最后重启即可。

也可以加上自定义的DNS服务器:

1
2
#DNS配置
dns-nameservers 8.8.8.8 1.1.1.1

man命令中输出的数字含义

我们使用man看一个接口,比如fork:

注意左上角和右上角的fork(2),这个数字2代表什么呢(man不同的参数是不一样的)
可以通过man man命令来查看:
man man
可以看到1~9分别代表不同的接口类别:

1: Executable programs or shell commands
2: System calls (functions provided by the kernel)
3: Library calls (functions within program libraries)
4: Special files (usually found in /dev)
5: File formats and conventions eg /etc/passwd
6: Games
7: Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8: System administration commands (usually only for root)
9: Kernel routines [Non standard]

MinGW版本中SJLJ/DWARF/SEH的区别

SJLJ (setjmp/longjmp)

available for 32 bit and 64 bit
not “zero-cost”: even if an exception isn’t thrown, it incurs a minor performance penalty (~15% in exception heavy code).
allows exceptions to traverse through e.g. windows callbacks

DWARF (DW2, dwarf-2)

available for 32 bit only
no permanent runtime overhead
needs whole call stack to be dwarf-enabled, which means exceptions cannot be thrown over e.g. Windows system DLLs.

SEH (zero overhead exception)

详情见MinGW-64-bit - QtWiki

Windows下系统路径

系统路径含义系统路径(不区分大小写)对应的绝对路径
当前系统盘符%systemdrive%或%HOMEDRIVE%C:\
当前系统目录%SystemRoot%或%Windir%C:\WINDOWS
当前用户文件夹%UserProfile%或%HOMEPATH%C:\User\UserName
公用应用数据文件夹%AllUsersProfile%C:\ProgramData
临时文件夹%TEMP%C:\Users\UserName\AppData\Local\Temp

Markdown

防止Markdown将链接中的括号截断

使用Markdown创建一个链接或者图片是使用[title](link)![title](link),但是当Markdown的连接中含有括号时,markdown的语法就会匹配链接中的括号,导致一个链接被断为两截。

1
2
# 导致链接会被匹配为http://imzlp.me/ar(chi
[TestLink](http://imzlp.me/ar(chi)ves/)

解决办法是使用%28代替(%29代替)。主要是因为)会歧义链接部分的结束。

1
2
# OK.http://imzlp.me/ar(chi)ves/
[TestLink](http://imzlp.me/ar%28chi%29ves/)

这是使用url符号码去代替ASCII的符号,能够解决这个问题。

标题和目录中使用"号字符

Markdown在标题中直接使用"可能会被转义,可以使用"来替代,更多字符的转义字符可以看:HTML转义字符对照表.

mathjax有些不解析

注意在markdown中使用mathjax下标_时,记得一定要写成\_,否则将会出现不能解析的情况。

Visual Studio

关闭VS本身的拼写检查

工具(Tools)-选项(Opetions)-文本编辑器(TEXT Editor)-C/C++-高级(Advance)
禁用波形曲线(Disable Squiggles)处,改为true.

Visual Assist关闭拼写检查

在VS中使用visual assist在输入中文注释的时候会有红色波浪线,看着很不舒服。
可以在VAssistX - Visual Assist Options中在左侧找到Underlinging,取消勾选Underline spelling error in comments and strings using:

取消勾选即可。

源文件与模块生成时文件不同


在附加到进程调试时可能会碰到这种情况,解决的办法为:
打开VS:工具——选项——调试——常规,将“启用地址级调试”和“要求源文件与原始版本完全匹配”两项前的勾选去掉。

然后重新附加到进程调试即可。

开启最新标准草案的Modules

具体的链接看这里:Using C++ Modules in Visual Studio 2017
首先要在VS安装处添加上标准库模块(Standard Library Modules),然后在项目属性中设置以下三处:



上副图片中在命令行处填入的命令为:

1
/experimental:module /module:stdIfcDir "$(VCToolsInstallDir_150)ifc\$(PlatformTarget)"

Windos 技巧

Wdinows10删除资源管理器的快速启动

打开此电脑之后会有下载/视频/文档之类的东西,感觉也不怎么用得到,可以通过下面的方法删除。
将下面的代码保存为.reg执行既可。

1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}]

Bat技巧

bat获取当前的目录名

1
2
3
4
5
6
7
8
@echo off
set "current_dir_name=%cd%"
:loop
set "current_dir_name=%current_dir_name:*\=%"
set "current_dir_nametmp=%current_dir_name:\=%"
if not "%current_dir_nametmp%"=="%current_dir_name%" goto loop

echo "%current_dir_name%"

bat获取当前目录

1
2
echo 当前盘符和路径:"%~dp0"
echo 当前批处理全路径:"%~f0"

bat判断文件是否存在

1
2
3
4
5
6
7
@echo off
rem 判断文件是否存在
if exist %1 (
echo 文件%1存在
) else (
echo 文件%1不存在
)
全文完,若有不足之处请评论指正。
本文标题:工具、环境的知识收录
文章作者:ZhaLiPeng
发布时间:2017年02月03日 23时39分
本文字数:本文一共有1.6k字
原始链接:https://imzlp.me/posts/16793/
许可协议: CC BY-NC-SA 4.0
转载请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!