APP图标生成
从大图自动生成App各尺寸的图标:https://icon.wuruihong.com/
提取IOS IPA
需要利用Mac上的App Configurator应用。
USB连接手机,在App Configurator上点“添加”选择App:
然后登录你的apple id,会展示你购买的记录:
选择一个点添加,就会启动下载。
当下载完毕后会进行安装,如果你的设备上已经有该app了,会提示:
注意,保持这个界面不动,因为下载时会先缓存到一个目录里,等安装完毕就会删除。所以我们需要让这个界面保持,然后去下列路径里:
1 | ~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets |
就能看到导出后的IPA了:
注意,这个ipa是加壳的版本。
制作VS的offline installer
首先下载vs_setup.exe,可以在VS的官网下载。
然后执行:
1 | vs_community.exe --layout OUTPUT_DIR --lang en-US --config vs.vsconfig |
就会把-config
中指定的所有组件都下载到Output目录里。可以把它压缩后传递到其他的机器上去。
离线安装:
解压后在根目录下启动cmd,执行下列命令:
1 | vs_setup.exe --noweb |
docx转换为md
可以使用pandoc实现:
1 | pandoc test.docx -o test.md |
但是它使用的是pandoc的格式,与通用的markdown存在不兼容。
可以通过--write gfm
来指定github风格的markdown,但如果docx里对图片有缩方,都会转换为html的img
标签。
可以通过与以下python脚本组合使用:
1 | import panflute as pf |
使用方法:
1 | pandoc test.docx -F remove_img_size.py -o test.md |
我的每周技术点总结,批量从docx转换md的命令:
1 | find . -name "*docx" | sed -e 's|^\./||' -e 's/\技术点_lipengzha.docx$//' | xargs -I {} pandoc --extract-media=./docx_images/{} {}技术点_lipengzha.docx -F remove_img_size.py -o {}_技术点.md |
Chrome开启新的WebUI
访问chrome://flags/
,搜索Chrome Refresh
,把以下两个选项都改成Enable即可:
Mac安装7z
可以通过homebrew安装:
1 | brew update |
Proxifier注册码
L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition)#免安装版本
5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition)#安装版本
P427L-9Y552-5433E-8DSR3-58Z68(MAC)
获取双反斜杠的路径
把当前路径从\
替换为\\
,cmd代码:
1 | set final_path=%~dp0 |
cmd添加开机自启
1 | @echo off |
cmd遍历拷贝文件
1 | @echo off |
查看cmd命令的路径
1 | where git |
Win批量修改文件后缀
1 | ren *.txt *.log |
android偏移转符号
可以使用NDK中的addr2line
命令:addr2line
1 | Usage: addr2line [option(s)] [addr(s)] |
具体使用案例:
1 | # addr2line -C -f -e *.so ADDR |
参数:
-C -f
:打印错误行数所在的函数名称-e
打印错误地址对应的路径及行数
转换结果:
keytool乱码
在Win10+执行keytool的时候如果出现乱码,则需要在命令行中执行:
1 | chcp 936 |
然后重新执行keytool命令即可。
Google Translate API
可以用以下形式调用:
1 | POST https://translation.googleapis.com/language/translate/v2?key=XXXXXXXXXXXXXXXXXXXXXXXX |
传递json数组:
1 | { |
IOS beta更新
以下链接注册:Apple Beta Software Program
ffmpeg
mkv转mp4
1 | ffmpeg.exe -i UOD2022.mkv -vcodec copy -acodec copy UOD2022.mp4 |
时长裁剪
裁剪原视频的00:00:03
-00:58:29
之间的内容。
1 | ffmpeg.exe -i UOD2022.mp4 -vcodec copy -acodec copy -ss 00:00:03 -to 00:58:29 UOD2022_CUT.mp4 |
mov转换为mp4
1 | ffmpeg -i input.mov -q:v 0 output.mp4 |
拼接mp4
要把mp4转换为ts之后再进行拼接:
1 | ffmpeg -i begin.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts begin.ts |
从视频中提取声音
1 | ffmpeg -i test.mp4 -f mp3 -vn test.mp3 |
分割声音
- segment_time: 秒数
1 | ffmpeg -i test.mp3 -f segment -segment_time 30 -write_xing 0 -c copy out%03d.mp3 |
Mac上安装cmake到PATH
- One may add CMake to the PATH:(重启失效)
PATH="/Applications/CMake.app/Contents/bin":"$PATH"
- Or, to install symlinks to ‘/usr/local/bin’, run:
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
- Or, to install symlinks to another directory, run:
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install=/path/to/bin
js不引入库转换时间格式
1 | new Date().toISOString().split('.')[0].replace(/[^\d]/gi,''); |
得到的是以下格式的时间:20221020021706
。
Typore+PicGo时间戳重命名
在Typora的验证图片上传选项中,找到PicGo的安装路径。
在exe目录下执行以下命令,安装super-prefix
插件:
1 | picgo.exe install super-prefix |
然后修改PicGo的配置文件,可以指定重命名前缀和文件格式:
1 | { |
curl触发Github Actions
首先需要在action的yml中添加一个repository_dispatch
:
1 | on: |
curl的触发API:
1 | curl \ |
官方文档:Create a repository dispatch event
使用Python:
1 | import requests |
Google Docs函数
获取页面中的og:title
属性:
1 | IMPORTXML(post_link, "//meta[@property='og:title']/@content") |
替换字符串:
1 | SUBSTITUTE("xxxx - 博客园","- 博客园","")) |
获取页面中的title命名:
1 | IMPORTXML(post_link, "//title") |
检查值是否是NaN:
1 | IFNA(Value,"") |
检查值是否是Error,若是用空字符替代:
1 | IFERROR(Value,"") |
Google翻译:
1 | =IFERROR(GOOGLETRANSLATE(G2,"zh-hans","en"),"") |
提取链接中的文章标题:
1 | =IFERROR(SUBSTITUTE(IFNA(IMPORTXML(post_link, "//meta[@property='og:title']/@content"),IMPORTXML(post_link, "//title")),"- 博客园",""),"") |
从Google Docs下载文件
安装并使用Pandas
:python -m pip install pandas
1 | import pandas as pd |
启用ProjFS
1 | Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart |
查看二进制是否支持SSE指令
可以使用dumpbin检查:
1 | dumpbin /disasm required.exe > required_disasm.asm |
查看输出的汇编指令中是否包含SSE/SSE2指令, 如movss
, xmm0
or xmm1
。
Chrome禁用缓存
- F12或右键选择 检查 后打开开发者工具:
- 选择更多工具(More tools)->网络限制(Network conditions,
- 在界面中勾选“Disable cache”选项:
Win上查看PE的符号信息
在Unix环境中可以使用nm查看二进制文件的符号信息,但在Win上对于查看PE类型的符号不太方便。
不过,MSVC中提供了一个mn等价物dumpbin.exe
,可以用来查看PE文件的符号:
1 | Microsoft (R) COFF/PE Dumper Version 14.25.28614.0 |
查看导入导出符号:
1 | dumpbin.exe /imports UE4Editor-ZstdExample.dll |
Win10 UTF8编码
开启之后会将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
下的ACP
、OEMCP
、MACCP
值修改为65001:
通过检测它们的值可以知道是否开启了UTF8编码。
1 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] |
BAT检测文件是否存在
1 | @echo off |
Win查看虚拟内存的占用情况
通过systeminfo
命令即可查看:
Win查看PE文件二进制符号空间分布
需要加载pdb和exe进行分析:
SCP上传/下载文件
- 从远程下载文件
1 | scp username@host:/path/filename /local_path/ |
- 上传本地文件到远程
1 | scp /path/filename username@host:/remote_path |
- 从远程下载文件夹
1 | scp -r username@host:/remote_dir/ /local_dir/ |
- 上传文件夹到远程
1 | scp -r /local_dir/ username@host:/remote_dir/ |
可以通过scp -P 2222
来自定义ssh端口。
Windows查看进程的优先级
可以通过任务管理器查看:
LibChecker
查看Android Apk的so、服务、Activity、权限等。
Windows查看文件被哪个进程占用
通过资源监视器搜文件名,可以查看文件句柄被哪个进程占用:
Adb over Wi-Fi
- USB连接设备
- 让设备的
adbd
守护进程监听5555端口,等待PC连接
1 | adb tcpip 5555 |
- 查看设备IP,获取
wlan0
的IP地址
1 | adb shell ifconfig |
断开设备的USB连接
通过Adb远程连接设备
1 | adb connect DEVICE_IP:5555 |
- 通过adb devices即可看到远程连接的设备
wget gist file
And yet there is, look for the raw
button (on the top-right of the source code).
The raw URL should look like this:
1 | https://gist.githubusercontent.com/{user}/{gist_hash}/raw/{commit_hash}/{file} |
Note: it is possible to get the latest version by omitting the {commit_hash}
part, as shown below:
1 | https://gist.githubusercontent.com/{user}/{gist_hash}/raw/{file} |
Python
编码错误
1 | SyntaxError: Non-ASCII character '\xe8' in file PreCommitChecker.py on line 10, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details |
可以在py文件顶部添加编码:
1 | #coding=utf-8 |
获取当前目录
1 | current_path = os.getcwd() |
import上级目录
1 | import sys |
os.system执行带空格程序
使用subprocess替换:
1 | ps = subprocess.Popen(final_cmdlet) |
检测UTF8 With BOM
1 | import codecs |
SSH使用key登录失败
可以修改Mac的SSH配置(/etc/ssh/sshd_config
):
1 | RSAAuthentication yes |
然后重载配置:
1 | $ sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist |
Windows11开启WSA
- 启用Hypre-V/Windows虚拟机监控程序平台/虚拟机平台
- 在BIOS中开启CPU虚拟化(Intel Visualization Technology)
- 下载WSA离线安装包链接,提取码:iogg
解压后使用管理员权限启动powershell,执行以下命令:
1 | Add-AppxPackage -Path MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral___8wekyb3d8bbwe.Msixbundle |
安装完毕之后,就可以在开始菜单搜索到WSA了:
启动之后打开开发人员模式:
下面可以看到WSA的IP地址。
安装之后可以往WSA安装APK,需要先下载ADB,通过ADB往WSA安装apk文件。
使用adb connect
命令,网络连接WSA(IP地址可从WSA中查看):
1 | adb connect 127.0.0.1:58526 |
然后使用adb install
命令安装apk即可:
1 | adb install base.apk |
甚至能装UE打出来的APK包,运行正常:
甚至能正常运行LOLM:
WSA的Linux内核版本为5.10.34.2
:
Android版本为Android 11:
1 | windows_x86_64:/ $ getprop ro.build.version.sdk |
查看内存:
1 | cat /proc/meminfo |
KMS激活
管理员权限启动cmd或powershell:
1 | slmgr.vbs -ipk W269N-WFGWX-YVC9B-4J6C9-T83GX |
去除快捷方式Icon小箭头
打开注册表位置(没有Shell Icons
则新建):
1 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons |
新建一个字符串值,名称为29
,内容为C:\WINDOWS\system32\imageres.dll,197
,重启即可。
获取抖音的视频下载地址
1 | import requests |
Python检测文件编码
1 | import os |
magic mouse速度
系统默认的跟踪速度:
1 | defaults read -g com.apple.mouse.scaling |
设置:
1 | defaults write -g com.apple.mouse.scaling 7 |
查看keystore的别名信息
通过keytool
命令行查看:
1 | keytool -list -v -keystore fmgame.keystore -storepass xxxxxx |
JetbrainsIDE过滤Log
需要安装插件:Grep Console
添加过滤设置即可,还可以设置颜色:
Rider for Unreal添加启动参数
- 首先要在
View
-Appearance
中开启Toolbar - 在ToolBar右键
Customize Menus and Toolbars
3. 在Menus and Toolbars
-Main Toolbar
-Toolbar Run Actions
-Run/Debug
下添加Edit Configurations
4. 启动之后添加参数即可。
VS启动调试报错
无法启动调试。请通过打开项目属性并导航配置属性”->“调试”来检查调试器设置。
应该是项目的工作目录没设置对:
VS项目右键属性,把Debuger里的工作目录改成$(ProjectDir)
即可。
MSBUILD16.10使用Rider错误
使用Rider编译UE4的错误信息:
1 | UnrealBuildTool.csproj: [MSB4057] 该项目中不存在目标"Engine\UE4" |
这是VS2019 MSBUILD 16.10的一个bug,官方说要在16.10.1中解决这个问题:
- Building a VS solution file at the command line now causes MSB4057
- Building a subset of a VS solution at the command line causes MSB4057
- MSBuild error MSB4057 after updating to VS 2019 16.10.0
部署trojan
首先需要把域名解析至VPS IP地址,然后依次执行以下命令:
1 | # 安装BBR |
查看、修改trojan的密码:
1 | nano /usr/src/trojan/server.conf |
重启服务:
1 | sudo systemctl restart trojan |
日期格式匹配正则
1 | \d{4}(\-|\/|\.)\d{1,2}\1\d{1,2} |
这个规则可以匹配以下内容:
1 | 2021-01-06 |
批量删除微博脚本
粘贴以下代码到微博页面的console中:
1 | ; |
Apple软件使用的TCP/UDP端口
cmd添加防火墙规则
如SwarmCoordinator需要开放ping以及TCP的8008/8099端口:
1 | netsh advfirewall firewall add rule name="Unreal Swarm ICMPv4 In" dir=in action=allow enable=yes remoteip=Any protocol=icmpv4 |
netsh
命令行用法:
1 | C:\windows\system32>netsh advfirewall firewall add rule |
Win检测进程是否存在
如果存在,杀掉进程,不存在就不执行taskkill任务:
1 | tasklist | find /i "swarmagent.exe" |
使用tcping检测端口是否开放
可以使用tcping这个工具:
1 | $ tcping 127.0.0.1 10086 |
Windows通过bat存储环境变量
设置用户环境变量:
1 | setx ENV_NAME env_value |
设置系统环境变量:
1 | setx ENV_NAME env_value /m |
Windows挂载网络路径
使用net use
命令:
1 | net use * \\YourCompanyComputer "password" /user:"username" /persistent:yes |
如:
1 | net use * \\192.168.1.111\Game "password" /user:"imzlp" /persistent:yes |
也可以根据条件进行检测,如果已有挂载就不重新执行:
1 | if not exist "T:\" ( |
AndroidP HTTP请求错误
在Android P上使用HTTP请求上传数据会有以下错误提示:
1 | 2018-10-10 16:39:21.312 31611-31646/com.xfhy.tinkerfirmdemo W/CrashReport: java.io.IOException: Cleartext HTTP traffic to android.bugly.qq.com not permitted |
这需要我们在打包时把指定的域名给配置成白名单。
方法如下:
在res/xml
下创建network_security_config.xml
文件
填入以下内容(网址自行修改):
1 |
|
然后在AndroifManifest.xml中引用该文件:
1 | <application android:networkSecurityConfig="@xml/network_security_config"/> |
重新打包即可,在运行时会有以下Log:
1 | 02-25 21:09:15.831 27760 27791 D NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true |
黑苹果指南
查看某个进程的端口占用
使用netstat
命令:
1 | C:\Users\lipengzha>netstat -ano | findstr "231096" |
outguess图片隐写
把一些文本信息写入到图片中:outguess
查看jar中的类和符号信息
可以使用JD-GUI来查看:JD-GUI
Win10开启长路径支持
打开组策略编辑器(gpedit.msc),依次找到”本地计算机策略 - 计算机配置 - 管理模板 - 系统 - 文件系统”,找到“启用 Win32 长路径”设置为“已启用”。
CMD添加系统环境变量
如果要添加至用户的环境变量:
1 | rem setx JAVA_HOME "%current_dir_name%\jdk18077" |
如果要添加至系统的环境变量,则在setx
之后加上/M
参数即可。
镜像文件超4G的启动盘制作
之前都是使用软碟通来进行启动盘的制作,但是软碟通使用的是FAT32,不能存储超过4G的文件,但是现在Win10都已经超过4G了,会导致超过4G的文件不会被写入到优盘中,导致启动盘制作失败。
解决这个问题可以使用一个新的工具:rufus
Xcode与clang版本对照
Git文件变动时间
当使用git clone或者更新文件时,本地文件的修改时间为变为当前机器的执行时间,那么如何把文件的修改之间保持为这些文件被提交时的时间呢?
Git有个方法可以获取文件在当前仓库中的最近提交时间:
1 | $ git log -1 --format="%ct" FILE_PATH |
得到的是一串数字,Unix时间戳,如1601541165
,表示的是当前文件最近一次提交的时间。
得到这个时间后,可以通过touch -d
来修改文件的修改时间:
1 | $ touch -d "@1601541165" FILE_PATH |
注意:在Unix时间戳之前需要添加@
,这是touch接收的时间格式。
那么如何批量地对整个仓库进行处理呢?可以使用下面的这行脚本:
1 | $ git ls-files -z | while read -d '' path; do touch -d "$(git log -1 --format="@%ct" "$path")" "$path"; done |
它会把仓库中的文件的修改时间改为文件在当前仓库中最近的提交时间。
注意:如果本地仓库深度为1,则所有的文件都是最近这次深度的commit时间。
Git LFS的规则问题
在使用git lfs时一定要注意.gitattributes
的规则,如果想要使用lfs追踪所有的文件:
1 | *.* filter=lfs diff=lfs merge=lfs -text |
这个规则是有问题的,它会导致所有的文件都被lfs追踪,包括.gitignore
和.gitattributes
,在使用lfs拉取时会变动这两个文件,导致所有的文件都被git检测出变动状态。
那么合理的规则是,包含所有文件的同时要把.gitignore
和.gitattributes
给排除掉:
1 | *.* filter=lfs diff=lfs merge=lfs -text |
LaTex插入符号
空格
含义 | 指令 | 效果 | 解释 |
---|---|---|---|
两个quad空格 | a \qquad b | $a \qquad b$ | 两个m的宽度 |
quad空格 | a \quad b | $a \quad b$ | 一个m的宽度 |
大空格 | a\ b | $a\ b$ | 1/3m宽度 |
中等空格 | a;b | $a;b$ | 2/7m宽度 |
小空格 | a,b | $a,b$ | 1/6m宽度 |
没有空格 | ab | $ab$ | none |
紧贴 | a!b | $a!b$ | 缩进1/6m宽度 |
\quad
、1em
、em
、m
代表当前字体下接近字符‘M’的宽度(approximately the width of an “M” in the current font).
分隔符
使用\textrm{-}
插入分隔符-
不会使其被识别为减号。
1 | declaration\textrm{-}specifiers_{opt} |
效果如下:
$declaration\textrm{-}specifiers_{opt}$
重置Bitnami Gitlab管理员权限账户密码
安装的bitnami后gitlab的管理员账号密码默认为:
1 | # account |
登录bitnami gitlab镜像的账户密码:
1 | user: bitnami |
修改gitlab的默认管理员权限的账号密码可以在安装的bitnami镜像的环境中执行下列命令:
1 | $ sudo gitlab-rails console production |
这样就修改完成了。
Adb命令
首先先要下载Adb。
Adb安装Apk
1 | $ adb install APK_FILE_NAME.apk |
Adb关闭app
1 | adb shell am force-stop PACKAGE_NAME |
Adb启动App
安装的renderdoccmd是没有桌面图标的,想要自己启动的话只能使用下列adb命令:
1 | adb shell am start org.renderdoc.renderdoccmd.arm64/.Loader -e renderdoccmd "remoteserver" |
adb启动App的shell命令模板:
1 | adb shell am start PACKAGE_NAME/.ActivityName |
这个方法需要知道App的包名和Activity名,包名很容易知道,但是Activity如果不知道可以通过下列操作获取:
首先使用一个反编译工具将apk解包(可以使用之前的apktools):
1 | apktool.bat d -o ./renderdoccmd_arm64 org.renderdoc.renderdoccmd.arm64.apk |
然后打开org.renderdoc.renderdoccmd.arm64
目录下的AndroidManifest.xml
文件,找到其中的Application
项:
1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.renderdoc.renderdoccmd.arm64" platformBuildVersionCode="26" platformBuildVersionName="8.0.0"> |
其中有所有注册的Activity
,没有有界面的apk只有一个Activity,所以上面的renderdoccmd的主Activity就是.Loader
。
如果说有界面的app,则会有多个,则可以从AndroidManifest.xml
查找Category
或者根据命名(名字带main
的Activity)来判断哪个是主Activity。一般都是从lanucher开始,到main,或者有的进登陆界面。
PS:使用UE打包出游戏的主Activity是
com.epicgames.ue4.SplashActivity
,可以通过下列命令启动。
1 | adb shell am start com.imzlp.GWorld/com.epicgames.ue4.SplashActivity |
Adb传输文件
使用adb往手机传文件:
1 |
|
从手机传递到电脑:
1 |
|
Adb:Logcat
使用logcast
可以看到Android的设备Log信息。
1 | adb logcat |
会打印出当前设备的所有信息,但是我们调试App时不需要看到这么多,可以使用find
进行筛选(注意大小写严格区分):
1 | adb logcat | find "GWorld" |
查看UE打包的APP所有的log可以筛选:
1 | adb logcat | find "UE4" |
如果运行的次数过多积累了大量的Log,可以使用清理:
1 | adb logcat -c |
Adb:从设备中提取已安装的APK
注意:执行下列命令时需要检查手机是否开放开发者权限,手机上提示的验证指纹信息要允许。
1 | # 查看链接设备 |
Adb刷入Recovery
下载Adb,然后根据具体情况使用下列命令(如果当前已经在bootloader就不需要执行第一条了)。
1 | adb reboot bootloader |
adb端口转发
可以通过adb命令来指定:
1 | # PC to Device |
adb:根据包名查看apk位置
可以使用以下adb命令:
1 | $ adb shell pm list package -f com.tencent.tmgp.fm |
最后一个参数是包名,输出的则是apk的路径。
adb:查看当前窗口的app的包名
使用以下adb命令:
1 | $ adb shell dumpsys window w | findstr \/ | findstr name= |
其中的mAnimationIsEntrance=true mSurface=Surface(name=
之后,到/
之前的字符串就是我们的app包名。
npm换源
把npm从官方换到淘宝源:
1 | $ npm config set registry https://registry.npm.taobao.org |
国内速度会快很多。
Chome79在Win10中崩溃
Chrome自动更新之后所有的页面都变成了这个样子:
解决办法是在chrome的快捷方式中添加 -no-sandbox
参数,但会提示_您使用的是不受支持的命令行标记:-no-sandbox
。稳定性和安全性会有所下降。_,暂时我还没找到根本解决的办法,暂时先这样。
三大运营商个人轨迹证明方法
一、电信手机用户证明方法
编辑短信“CXMYD#身份证号码后四位”到10001,授权回复Y后,实现“漫游地查询”,可查询手机号近15日内的途径地信息。
二、联通手机用户证明方法
手机发送:“CXMYD#身份证后四位”至10010,查询近30天的全国漫游地信息,便于返工辅助排查。
三、移动用户证明方法
编写CXMYD,发送到10086,再依据回复短信输入身份证后四位,可查询过去一个月内去过的省和直辖市(无地市)。
每人免费一天查询10次。
npm install报错
在npm安装时遇到下列错误:
1 | root@VISIONSMILE-PC:/mnt/c/Users/Administrator/Desktop/hexo# npm install hexo-cli -g |
解决办法,在bash执行下列命令:
1 | $ npm config set strict-ssl false |
之后重新执行安装即可。
Install 7z on Linux
1 | $ sudo apt-get update |
7z命令行
解压使用如下命令(-y是碰到提示一律yes):
1 | $ 7z.exe x xxxx.7z -oD:\Extract -y |
也可以指定要解压的格式:
1 | $ 7z.exe x xxxx.7z -oD:\Extract *.so -r -y |
压缩则可以使用以下命令:
1 | $ 7z.exe a xxxx.7z COMPRESS_DIR |
scp拷贝文件
使用以下命令可以使用ssh从远程拷贝文件到本地:
1 | scp -P 22 buildmachine@xx.xx.xx.xxx:/Users/buildmachine/Client/Binaries/IOS/FGame.dSYM D:\ |
但是这样有一个缺点是当需要输入密码的时候scp无法指定密码。
在Win上可以用putty
的pscp
来解决,它可以指定-pw
参数,还可以通过-batch
禁用所有交互提示:
1 | pscp.exe -batch -pw 123456 -P 22 buildmachine@xx.xx.xx.xxx:/Users/buildmachine/Client/Binaries/IOS/FGame.dSYM D:\ |
v2ray中大量的67错误
看到v2ray里有大量的下列错误:
1 | 2020/04/12 17:31:30 tcp:127.0.0.1:53920 rejected v2ray.com/core/proxy/socks: unknown Socks version: 67 |
官方说这是因为应用里设置里http代理,排查了一下,这是因为在win10的设置里开启了代理,在Win10设置-网络
-代理
关掉系统代理即可。
Chrome阅读模式
在chrome://flags/
中有Enable Reader Mode
,开启即可。
命令行安装VS
以下命令控制根据配置安装VS,并且不启动任何前台程序,等待安装完成:
1 | vs_professional.exe --config="D:\config.vsconfig" --quite --wait |
NPM:指定Packages的版本
~version
“Approximately equivalent to version” See npm semver - Tilde Ranges & semver (7)^version
“Compatible with version” See npm semver - Caret Ranges & semver (7)version
Must match version exactly>version
Must be greater than version>=version
etc<version
<=version
1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0http://sometarballurl
(this may be the URL of a tarball which will be downloaded and installed locally*
Matches any versionlatest
Obtains latest release
What’s the difference between tilde(~) and caret(^) in package.json?
在命令行启动资源管理器打开文件夹
在Windows上的可以通过cmd命令来在资源管理器中打开一个文件夹,使用explorer
命令:
1 | explorer.exe /e,/root, F:\Test |
注意,最后指定的路径必须是由
\
组成的路径,如果是反斜杠的则无法打开正确的目录(打开的是user/documents
目录)。
在UE中使用时我写了一个路径转换的函数,把一个路径中的所有/
替换为\\
:
1 | FString ConvPath_Slash2BackSlash(const FString& InPath) |
Windows tree命令
在Windows的cmd下可以使用tree
命令来列出当前文件夹的目录结构。其命令格式为:
1 | tree [drive][path] [/F] [/A] |
/F
:显示每个文件夹中文件的名称/A
:使用ASCII字符,而不使用扩展字符
For example:
1 | D:\recastnavigation\RecastDemo\Contrib\SDL>tree /a |
1 | D:\recastnavigation\RecastDemo\Bin>tree /a /f |
快速运行一个http文件下载服务
可以使用nodejs
的serve,安装完node之后在目录中执行:
1 | $ npx serve |
浏览器即可访问。
另一种方法是下载hfs,启动之后添加一个目录即可,很简单。
Windows编译最新版本的Lua
首先去lua.org下载最新的lua代码并解压(目前是v5.3.5):
1 | curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz |
在windows上启动MSVC的开发者工具命令:开始菜单-x64 Native Tools Command Prompt
,将路径切换到Lua
源码的Source目录吗,使用cd /d
命令。
然后依次执行下面几条命令:
1 | cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c |
最终编译出lua.exe
/luac.exe
/lua535.dll
/lua535-import.lib
/lua535.lib
,这一堆的东西。
Windows环境变量长度超限制
今天往系统的PATH中添加一个新的路径,结果居然提示我太长不能保存。
这岂不是要了老命了,研究了一下,发现可以在系统的Path中添加一个另外的环境变量值。
即,现在系统中随便新建一个环境变量,如%ExternPATH%
,然后将该环境变量添加至PATH
中,ExternPATH
中的值也都可以被查找到。
Epic账号切换国家区域
Epic商城是锁国区的,有些内容国内账号没有,而且现在Epic商城要求付款账单地址信息与Epic账户信息一致,意味着,美元账户付不了国区。如果在Epic商城绑定支付信息和购买内容之后是没办法直接在网页上修改的,需要联系人工客服。
首先去Epic Games | Support Center提交联系客服的申请,问题描述就用英文说要修改账户的国家和地区从中国转为美国,之后客服会给你邮箱发邮件要求你提供几个信息。
- Email address associated with your Epic Games account
- Current Epic Games account display name
- First and last names of Epic Games account holder
- External account currently connected to your Epic Games account, if applicable.
- This includes Google, Facebook, Twitch, PSN, Xbox, and Switch accounts.
- Include the platform AND display name of any external accounts.
在邮件里直接回复这些信息之后,他们会给Epic账号绑定的邮箱发送一个验证链接,验证之后,再给他们回复邮件说验证成功,之后他们就会给你修改了。
注意:修改国家之后,之前账户绑定的支付信息都会清空,如Paypal账号之类的。
PS:Epic的客服联系渠道还真是超难找…
CMD添加环境变量
cmd查看系统的环境变量,在cmd窗口中输入set
:
将执行路径添加至系统的PATH路径,使用setx
:
1 | setx Path "%PATH%;C:\BuildPath\Adb"; |
添加自定义的环境变量:
1 | setx ANDROID_HOME "%current_dir_name%\android-sdk-windows" |
cmd中获取当前的目录:
1 | set "current_dir_name=%cd%" |
附上添加AndroidSDK环境的bat:
1 | @echo off |
自动以管理员权限启动bat
将依赖管理员权限启动的bat命令写到Admin之后即可。
1 | @echo off |
CMD杀掉进程
在Linux中可以使用kill PID
来干掉某一个进程。
在Cmd中可以使用taskkill
来终止进程:
1 | taskkill /f /t /im PROCESS_NAME.exe |
如:
1 | taskkill /f /t /im qq.exe |
批量ping
有时候会有一堆的域名和ip需要进行ping测试,看是哪些ping不通,可以用下面的命令(将待检测的ip和域名都放到ip.txt中):
1 | $ for /f %D in (ip.txt) do (ping %D -n 1 && echo %i>>ok.txt || echo %D >>no.txt) |
修改Epub书籍的页面翻页方向
我们习惯的书籍是从左往右翻页的,但是在港台有些出版的书籍是从右往左翻页的,很不习惯。
今天我下了一本书就是这个样子的,研究了一下可以修改为从左往右的翻页方式。
首先把目标epub文件解压出来,找到content.opf
文件,打开编辑,找到如下内容:
1 | <spine page-progression-direction="rtl" toc="ncx"> |
问题就是出在page-progression-direction="rtl"
这里,从参数上可以看rtl
就是right to left
啊,改成ltr
(left to right)后,把刚解压出来的所有文件压缩成zip
文件然后把zip
后缀改为epub
即可。
无损转换AZW3到EPUB
使用Calibre默认的AZW3转换到EPUB中间是有损压缩的,可以安装Calibre的一个插件来实现无损转换。
在Calibre的首选项-插件下搜索KindleUnpack
并安装,安装之后重启Calibre,可以看到工具栏有了一个KindleUnpack
的按钮。
选中书籍后点击工具栏上的KindleUnpack
按钮选择AZW3
-UnpackAZW3
:
路由器级联:使两个路由器在同一网段
今天有个需求,需要把单独连接一个路由器A的几台电脑与连接其他路由器B的电脑配置在同一个局域网里。
方法为,关闭路由器A里的DHCP,从路由器B的LAN口拉一条网线过来查到路由器A的LAN口,其他的设备还接路由器A的LAN口,在路由器或者电脑的网络设置中设置过IP之后,路由器A就和路由器B连接的设备在同一个局域网下了。
VMWare扩展Linux虚拟机磁盘
首先在虚拟机启动之前(关闭状态下),调整虚拟机的磁盘大小:
经过漫长的等待…
与网上的其他方法不一样,我不打算列一堆命令,有一个最简单的方法。
那就是在虚拟机设置里添加一个CD/DVD的硬件,挂载GPrated的镜像,在选择CD-ROM加载之后,进去就是图形化的分区工具了,十分方便。
引导菜单:
启动之后:
Linux查看文件系统类型
查看文件系统类型可以使用以下命令:
1 | $ df -Th |
Chrome重启之后就暂停同步
打开 chrome://settings/content/cookies
,仅将本地数据保留到您退出浏览器为止取消勾选。重启 Chrome 即可。
隐藏bat的黑窗口
1 | @echo off |
保存为.bat,将真正需要执行的命令写入begin之后即可。
MBR无损迁移到GPT
之前装系统使用的是MBR分区表,但是最近要折腾一下黑苹果,四叶草只能UEFI启动,所以必须要是GPT分区表,但是完全不想完全格掉重装,折腾了一下,可以无损迁移。
首先,要有一个可以启动并且有GHOST工具的U盘。
- 进入PE,使用GHOST备份当前MBR的C盘
- 备份完成后,删除原C盘硬盘的所有分区,修改分区表为GPT并创建好分区
- 在PE中使用GHOST将备份的系统还原到GPT的分区中
- 引导原版的系统镜像(将
boot/
、efi/
、bootmgr
、bootmgr.efi
放入恢复完成的分区) - 重启进入原版镜像的安装模式,使用修复系统会重建EFI的系统引导,修复完成即可。
注意:4-5两个步骤可以使用其他的引导修复工具替代。
Windows窗口切换快捷键
Win+Shift+Left/Right
:可以控制窗口在多个显示器上左移或者右移;Win+Shift+Up
:保持窗口宽度的同时最大化窗口;Win+Shift+Down
:最小化窗口;
PS:Win+Shift+S
则是屏幕截图。
Linux创建软链接
1 | $ ln -s $TargetPath $SoftLinkPath |
Linux添加PATH路径
Linux上可以通过export
来查看当前的PATH路径列表:
1 | $ export |
或者:
1 | $ echo $PATH |
输出当前用户的PATH路径。
- 直接在终端中添加PATH,只在当前环境有效,退出终端失效:
1 | $ export PATH=$PATH:ADD_PATH |
- 为当前用户添加PATH路径,打开
~/.profile
增加以下内容:
1 | export PATH=$PATH:ADD_PATH |
重启之后生效。
Windows查看程序的网络连接
首先在任务管理器中显示进程的PID,然后在cmd下执行命令:
1 | netstat -ano|findstr PID |
把PID换成你的进程ID即可。
apt-get update错误:无法验证签名
如果apt-get
出现下列错误:
1 | root@gyvrhost:~/downloads/onedrive# sudo apt-get update && sudo apt-get -y --allow-unauthenticated |
如果不修复这个错误回在安装或升级软件包时出现问题,因为APT具有一组可信密钥,用于确定是否可以对软件包进行身份验证,从而决定是否可以在系统上安装软件包。
可以执行以下操作将缺失的密钥添加到APT密钥管理器:
上面的错误是告诉我们缺少EBCF975E5BA24D5E
这个键,添加密钥使用以下命令:
1 | $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBCF975E5BA24D5E |
执行完毕即可解决错误。
Chrome浏览器由所属组织管理
解决办法,删除:
1 | HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome |
下的EnabledPlugins
文件夹,重启 Chrome 即可。
CMD命令:拷贝文件夹
windows下拷贝多级目录可以使用xcopy.
1 | xcopy /y/i/s/e ..\..\..\Content\Slate UE4Launcher\Engine\Content\Slate |
CMD命令:创建多级目录
1 | md 123\456\789 |
tar.gz的压缩与解压缩
1 | # 压缩 |
使用Calibre转换繁体为简体
首先,将原始的繁体书籍(epub/mobi)导入Calibre,然后使用转换:
在弹出的界面中选择搜索&替换,加载一个文字替换规则:Calibre繁体转简体规则
然后点元数据选择输出格式以及文件信息,最终点确定即可开始转换。
从GooglePlay下载图书并去除DRM
Google图书看书不方便,试了一下怎么把购买过的图书从GooglePlay上下载下来。
首先,打开play.google.com/books,找到你购买过的书,点击下载:
这里并不会把书真的下载下来,而是会下载下来一个*.ACSM
文件。
然后需要下载Adobe Digital Editions来打开它,安装之后,将*.ACSM
文件拖入_Adobe Digital Editions_的窗口中,会弹出下列窗口:
请选择我想要在不使用ID的情况下对我的计算机授权,之后点_下一步_:
点授权。
之后会自动下载书籍并且会在Adobe Digital Editions中打开,但是这些图书文件是使用DRM保护的,无法使用其他的阅读器打开。需要去除DRM才可以被其他的阅读器打开,需要使用的工具为Calibre和Calibre的去除DRM插件DeDRM_tools.
下载完Calibre之后安装,解压DeDRM_tools压缩包。
打开Calibre的首选项-插件:
点击从文件夹加载插件,选择DeDRM_plugin.zip:
安装完成之后选择文件类型 插件,点自定义插件:
为ADE添加一个key:
然后重启Calibre.
最后将从ADE下载下来的具有DRM的图书文件拖入Calibre后即去除了DRM(Calibre Library里生成的图书文件).
Windows访问共享提示没有权限使用网络资源
如果Windows在访问共享的文件夹时提示:
无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。
解决办法:添加Windows凭证。
控制面板显示所有控制面板项,搜索凭据管理器,进入后点击Windows凭据,然后添加一个Windows凭据。
根据需要访问的共享的IP和账户信息创建即可。
解决Windows在英文语言下中文字体太丑的问题
因为在中文语言下我替换了雅黑的字体,看起来不那么虚,但是当我把系统语言切换为English后发现中文的字体都很虚啊。
查了一些如何在英文语言下替换中文字体的方法,记录一下。
在英文版Windows中默认字体一般都是Segoe UI、Tahoma、Microsoft Sans Serif之类,这些字体都是没有中文字库的,所以当需要显示中文字体的时候,就会出现各种难看的文字效果。
解决方法是使用“字体链接(FontLink)”技术:就是在使用英文字体时,如果遇到这种字体中没有的字符,就会到注册表相应的位置去找它链接的字体。
英文版Win7的默认字体是Segoe UI,这是个纯英文字体。所以要显示中文的时候它就会去找它链接的字体。
打开注册表地址:
1 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink |
这里面就是各个字体的链接字体的信息。
在这个键值下会发现Segoe UI,Tahoma这些常用英文字体的链接,查看Segoe UI的值,它的第一行为Tahoma.TTF,意思就是遇到中文时,它默认到Tahoma.TTF文件里去找,如果没有发现这个字,再到第二行的字体里去找。
双击编辑Segoe UI
的项,可以看到雅黑的链接顺序在中间的位置,我们要做的就是把雅黑的顺序提到最前面:
替换后:
然后重启即可。
以防原链接失效,上面的部分内容摘录自后面的文章,作为本站的备份用。想要了解更具体内容可看这篇文章:解决英文版Windows中中文字体难看的问题
修改Android的DNS
编辑/system/build.prop
加入以下几行:
1 | net.rmnet0.dns1=1.1.1.1 |
保存退出即可(最好重启或者开关一下飞行模式。
tracert命令
路由跟踪,查看数据包访问目标所选择的路径。
Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由.
禁用MIUI的更新提示
ROOT手机,安装RE文件管理器。
打开RE,找到路径/system
下打开build.prop
编辑:
1 | ro.build.version.incremental=V9.5.8.0.OCAMIFA |
修改为一个大的版本号:
1 | ro.build.version.incremental=V99.5.8.0.OCAMIFA |
保存后重启即可。
增强扫描版pdf
- 首先下载ImageMagick并安装,注意勾选
Install legacy components (convert.exe etc)
。 - 然后安装Ghostscript(目的是为了使用convert命令)。
- 将pdf转为图片
假设原始文件名是origin.pdf, 目标文件名是target.pdf, 下方的convert应替换为实际路径
1 | $ convert -density 400 origin.pdf output/%03d.webp |
上方的density参数指像素密度,数字越高图片质量越高体积越大, 如果pdf带文字,就设置300以上吧. 这是影响最终效果的重要参数, 如果过低, 那么下方再神操作效果也不会很好, 过高会导致文件体积过大该指令将整个pdf按页转为多张图片, %03d.webp
表示命名为001.webp,002.webp….(超过1000页就应改为%04d.webp
)转换为图片这一步, 是为了获取中间产物进行测试和调整, 通常只需截取一部分页面即可(因为截取一页需要花费数秒时间)
1 | #截取第11到第21页 |
- 测试转换效果
1 | $ convert -level 60,97% -quality 50 output/010.webp preview010.webp |
上方的level参数是指调整图像通道的级别, 60,97%表示灰度低于60%即为黑点, 高于97%为白点. 这里的60,97需要反复调节到自己认为达到最佳效果, 这是整个过程中最重要的参数, 通过该参数实现调整对比度quality指输出jpg文件质量(压缩比), 1-100数字越高质量越高体积越大, 出于减少pdf文件大小的考虑, 应适当调节该参数(举个例子density 400的jpg文件可能有1.4M, 压缩后为700K, 这样最终的pdf文件大小相差一倍, 而肉眼无法察觉页面效果有何区别)
二值化图片
扫描的pdf很多都是泛黄的,影响观感,可以通过ImageMagick将图片处理为黑白的:
1 | convert 0020.webp -threshold 55% threshold0020.webp |
经过尝试,阈值选择在140(255*55%)附近时,分割效果较好。灰度值大于该阈值的像素全部变为255(白色),灰度值低于该阈值的像素全部变为0(黑色)。
- 转为pdf
确定了density, level和quality的值之后就可以执行转换了可以从原始pdf转换
1 | $ convert -density 400 origin.pdf -level 40,97% -quality 50 target.pdf |
也可以从之前生成的jpg转换:
1 | $ convert -level 60,97% -quality 50 output/* target.pdf |
如果直接从目录转换为pdf打开显示有问题,可以将导出的文件批量处理之后再使用福昕之类的软件合并:
1 | find . -name "*.webp"|xargs -I {} convert -level 60,97% -quality 50 {} {}_.webp |
把当前目录下所有的.webp
增强处理之后另存为*.webp_.webp
.
然后把它们移动到单独的目录(-I {}
的作用是把后续的{}
替换为参数):
1 | $ mkdir finalOutput |
然后使用福昕合并成pdf文件即可(顺便也可以做OCR)。
Windwos上使用MinGW编译LLVM
首先,下载LLVM和Clang源码,并解压。
将Clang的源码(cfe-6.0.1.src)目录改名clang
后放到LLVM源码的tools
目录下($LLVM_SRC_ROOT/tools/clang
)。
在LLVM源码目录右键打开Git Bash终端,执行下列命令:
1 | $ mkdir build |
安装完之后就可以在CMAKE_INSTALL_PREFIX
指定的目录看到编译完的LLVM和Clang了,将其添加到系统Path路径即可。
我编译好的版本(目前最新LLVM 6.0.1),编译环境为MinGW64-x86_64-6.2.0-posix-seh-rt_v5-rev1,可以在这里下载。
注:其他的细节可以看Clang源码目录下的INSTALL.TXT
文件。
- 2018.09.27 这几天LLVM出了7.0.0版本,果然是版本帝。我又编译了一个7.0.0版本的,编译环境与上文相同:点此下载。
解决cmder中文乱码
打开cmder设置Startup
-Environment
,添加 set LANG=zh_CN.UTF-8
即可。
apk的反编译与签名
- 安装java环境,jdk下载
- 下载最新版本的apktool.jar,并且重命名为apktool.jar
- 保存下列脚本为apktool.bat
1 | @echo off |
然后将apktool.bat和apktool.jar放在同一个目录下。或者直接下载我打包的apktool。
1 | # 反编译apk |
查看keystore证书指纹
1 | keytool -list -v -keystore xxxx.keystore -storepass PASSWORD |
树莓派命令行配置连接Wifi
在树莓派上的Wifi连接信息是保存在/etc/wpa_supplicant/wpa_supplicant.conf
文件中的:
1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev |
照着network
中的配置信息把ssid与psk填上就可以了。
注意:优先连接的顺序是配置的顺序,如果你希望优先连接某一个AP,那么将它的配置挪到最前面。
关闭Windows休眠来释放磁盘空间
Windows下的休眠文件hiberfil.sys
一般很大,都有十几个G,而我一般也很少用到休眠功能,可以使用下面的命令关闭。
以管理员权限运行cmd:
1 | powercfg -h off |
重启系统即可,hiberfil.sys
所占的空间就会被释放了。
远程控制下切换窗口到另一个屏幕
有些VNC工具对多屏幕支持不友好,只能显示一个屏幕上的窗口内容,如果所有的打开窗口默认都在另一个屏幕,则软件都操作不了了。
Windows移动窗口的快捷键是:
按Alt
+Space
出现菜单,然后按M
,就是移动功能。
可以使用鼠标或者上下左右键来移动窗口到远程可以看到的屏幕。
Windows窗口快捷键
最大化:在窗口下按:Alt+Space+X
最小化:在窗口下按:Alt+Space+N
Wget下载网站
1 | $ wget -c -r -np -k -L -p api.unrealengine.com/INT/API/ |
参数如下:
-c 断点续传
-r 递归下载,下载指定网页某一目录下(包括子目录)的所有文件
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-np 递归下载时不搜索上层目录,如wget -c -r www.xxx.org/pub/path/
没有加参数-np,就会同时下载path的上一级目录pub下的其它文件
-k 将绝对链接转为相对链接,下载整个站点后脱机浏览网页,最好加上这个参数
-L 递归时不进入其它主机,如wget -c -r www.xxx.org/
如果网站内有一个这样的链接:
www.yyy.org,不加参数-L,就会像大火烧山一样,会递归下载www.yyy.org网站
-p 下载网页所需的所有文件,如图片等
-A 指定要下载的文件样式列表,多个样式用逗号分隔
-i 后面跟一个文件,文件内指明要下载的URL
Linux查看nohup.out
1 | $ tail -fn 50 nohup.out |
WSL换源
WSL的Ubuntu使用的是Ubuntu 16.04
版本,可以通过lsb_release -a
查看:
1 | $ lsb_release -a |
备份/etc/apt/sources.list
,然后替换其中的内容为国内阿里源:
1 | $ sudo cd /etc/apt |
把下面的内容填入其中,保存退出:
1 | deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties |
然后更新即可:
1 | $ sudo apt-get update |
清理Mstsc的历史记录
清理mstsc的历史记录只需要把下面这个注册表项里的记录删除即可:
1 | [HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default] |
修改Win10远程连接的默认端口
这几天使用frp做内网穿透,在公司也可以通过mstsc
来访问内网的电脑,但是使用默认的端口(3389)感觉又不安全(总有无良开扫描器的),研究了一下怎么修改win10默认的远程连接端口,具体操作如下。
打开下面两个注册表项,依次执行下列操作:
1 | HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/Wds/rdpwd/Tds/tcp |
在这两个注册表项的右侧找到PortNamber
记录,可以看见其默认值是3389,修改成所希望的端口(<65535)即可(如11111),注意使用十进制。
然后还需要修改防火墙的放行端口,因为Windows的远程连接默认端口是3389,所以3389防火墙是默认放行的,但是上面修改之后的端口是不行的,所以要修改一下。
依次打开这两个注册表项,执行下面的操作:
1 | HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/SharedAccess/Defaults/FirewallPolicy/FirewallRules |
在这两个注册表项的右侧找到这两个记录:RemoteDesktop-UserMode-In-TCP
和RemoteDesktop-UserMode-In-UDP
:
他们的值默认情况下类似下面这样:
1 | v2.28|Action=Allow|Active=FALSE|Dir=In|Protocol=6|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=@FirewallAPI.dll,-28775|Desc=@FirewallAPI.dll,-28756|EmbedCtxt=@FirewallAPI.dll,-28752| |
我们只需要将这两个记录里面的LPort
改为我们上面修改的端口(11111)即可。
然后就可以在控制面板/系统和安全/防火墙/高级设置/入站规则
里点刷新之后看到我们修改之后的端口了(我的端口已打码..):
查看Linux系统上所有的服务
1 | $ service --status-all |
注:在我的系统版本(ubuntu 16.04.3 LTS)上iptables的服务是ufw
Linux防火墙放行端口
如果是使用ufw
服务的话可以使用这种方法:
1 | $ ufw allow 6060/udp |
允许特定端口范围通过防火墙
使用 UFW 指定端口范围时,必须指定规则适用的协议( tcp 或 udp ),以下为示例:
1 | $ ufw allow 10000:10100/tcp #允许 10000~10100 端口的 tcp 通过防火墙 |
如果是使用iptable服务的话可以使用下面的方法:
1 | # 接受从端口6060的入站的UDP连接 |
更多ufw的用法:Ubuntu 18.04 使用 UFW 设置防火墙
iptables的参数:
1 | iptables v1.4.21 |
一些参数缩写:
--sport
is short for--source-port
--dport
is short for--destination-port
Linux下递归删除特定文件
如果我们期望递归删除当前目录下的所有Binaries文件夹,可以使用以下命令:
1 | $ find . -name "Binaries" | xargs rm -rf |
就是先通过find找到当前目录下所有的Binaries文件夹,然后通过xargs
这个构造参数列表并运行rm -rf
命令。
在WSL中跑SS和KCP
最近公司把shadowsocks-windows的进程给禁用了,ss-qt的版本有很多问题十分难用。想着继续用其他SS的win客户端依然治标不治本,我把shadowsocks-python跑在了Win10的WSL里,感觉用起来比win客户端稳定很多…
注:kcp的客户端也可以跑在WSL里,直接从kcptun/release下载linux-amd64版本的即可,具体用法见./client_linux_amd64 -h
的参数。
1 | # start kcp |
注:其中shadowsocks的-b参数为0.0.0.0,表示允许来自局域网的连接(注意关闭防火墙)。
这样就不需要读配置文件了,但注意各项参数都改为你自己的配置值。
IDA的插件和配置
注:版本为IDA 7.0 Pro
我的IDA配色插件zyantific/IDASkins和主题:ida_skin,效果如下:
还有我编译的支持IDA7.0的REhints/HexRaysCodeXplorer:ida7_HexRaysCodeXplorer.
IDA安装findcrypt
1 | # 可能需要先更新pip |
然后将findcrypt-yara仓库里的findcrypt2.py
与findctypr3.rules
这两个文件放在进入Ida/plugins目录下,打开IDA即可在插件目录看到findcrypt
了。
删除包含某些字符的行
在Linux下可以使用sed
命令:
1 | # 将abc.txt中所有含有"ABC"这个连续字符的行删除并写入到log.txt中 |
其中-e
的参数ABC
也可以使用正则表达式来代替。
启用Chrome自动禁用的插件
通过运行
->gepdit
进入组策略。
在计算机配置
->管理模板
右键选择添加/删除模板(A)
,导入Chrome.adm。
然后在管理模板
下就会有经典管理模板(ADM)
,依次展开Google
->GoogleChrome
->扩展程序
;双击右侧配置扩展程序安装白名单
,启用它并把我们想要启用的扩展程序的ID(扩展程序ID可以从Chrome
->扩展程序
中查看)填入其中保存即可,重新打开Chrome,那个插件就可以启用了。
注:将Cortana的搜索默认使用Chrome以及Google.
使Cortana默认使用Google作为搜索引擎的插件CortanaUseGoogle.crx(需要使用上面的方式将该插件加入到扩展程序安装白名单中).同时组合EdgeDeflector可以将Cortana使用的默认浏览器由Edge改为Chrome.
VS附加到进程的错误
今天使用VS的Debug->Attach to process
产生了一个错误:
1 | Unable to attach to the process.The Visual Studio 2017 remote Debugger(MSVCMON.EXE) does not appear to be running on the remote computer.This may be because a firewall is preventing communication to the remote computer.Please see Help for assistance on configuring remote debugging. |
本来以为是VS的配置问题,后来才发现这是因为我在Proxifier中把电脑上的所有流量转发到了SS,没想到VS的本地调试也是走网络的,流量通过代理之后一直连接不到本地计算机就会出现这个问题,全局代理需谨慎。
Separate memory location
[ISO/IEC 14882:2014 §1.7.5] A structure declared as:
1 | struct { |
contains four separate memory locations: The field a and bit-fields d and e.ee are each separate memory locations, and can be modified concurrently without interfering with each other. The bit-fields b and c together constitute the fourth memory location. The bit-fields b and c cannot be concurrently modified, but b and a, for example, can be.
Linux增加SWAP大小
有时候给虚拟机能够实际分配的内存大小不能满足于虚拟机的需求,可以扩大SWAP来临时解决,方法如下。
1 | # 创建1G大小的文件(/swap_file为指定存放该文件路径及名字) |
Linux静态IP设置
下面需要修改的文件路径为/etc/network/interface
.
1 | # The loopback network interface |
一些cmd命令技巧
cmd命令里是让他们同时执行几个命令:
1 | start cmd.exe /c "" |
在上面双引号内输入要执行的命令,保存为.bat
;运行时会同时打开两个命令行窗口。cmd
后/c
的意思为执行完命令后关闭命令窗口;如果想要执行完不关闭可以使用/k
。
cmd中让命令在后台执行不会阻塞后续命令的方式(类似于linux命令后加&
):
1 | start /b cmd.exe /c "" |
在start
加入/b
,这两条命令就不会阻塞(不会等到第一条命令执行完毕之后再执行第二条)。
让.bat
后台执行,有些.bat
我们希望开机启动,这时候开机弹出黑框框就不太好,可以使用下面的.vbs
脚本来执行.bat
。
1 | DIM objShell |