在linux下搞软件开发的朋友, 几乎没有不知道strings命令的。我们先用man strings来看看:

strings - print the strings of printable characters in files.  

意思是, 打印文件中可打印的字符。  我来补充一下吧, 这个文件可以是文本文件(test.c), 可执行文件(test),  动态链接库(test.o), 静态链接库(test.a)


脱离代码地长篇大论而不去实际验证, 不是我的风格。 还是搞点代码下菜吧(代码存在test.c中):

cat test.c



我们来看看strings test.c的结果:
strings test.c


可以看到, 确实打印出了test.c中的很多字符。
下面, 我们对可执行文件用strings试试, 如下:
gcc test.c
strings a.out
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
printf
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
oh, my dear, c isd

可以看到, 打印出了a.out中很多字符。
实际上, 如果有目标文件、静态库或动态库,, 也是可以用strings命令进行打印操作的。 我们来看看:
xxx.h文件:

xxx.c文件:
cat  xxx.c


然后, 我们来看看怎么制作静态、动态库吧(在后续博文中会继续详细介绍):
gcc -shared -fPIC -c xxx.c  #-fPI得加上,否则会报relocation R_X86_64_32 against `.rodata'
gcc -shared -fPIC -o libxxx.so xxx.o

问题:
gcc -shared -fPIC -o libxxx.so xxx.o
/usr/bin/ld: xxx.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
解决办法:
gcc默认没加-fPIC参数,得手工加上即可。
strings xxx.o
rainy days

strings libxxx.a


strings libxxx.so

trings命令很简单, 看起来好像没什么, 但实际有很多用途。 下面, 我来举一个例子。  在大型的软件开发中, 假设有100个.c/.cpp文件, 这个.cpp文件最终生成10个.so库, 那么怎样才能快速知道某个.c/.cpp文件编译到那个.so库中去了呢? 当然, 你可能要说, 看makefile不就知道了。 对, 看makefile肯定可以, 但如下方法更好, 直接用命令:
      strings -f "*.so" | grep "xxxxxx"

      如果还不明白, 那就就以上面的小程序为例为说明, 不过, 此处我们考虑所有的文件, 如下:

strings -f * | grep "my dear"
a.out: oh, my dear, c isd
test.c:         printf("oh, my dear, c isd\n", c);

可以看到, 源文件test.c和可执行文件中皆有"my dear"串, 一下子就找到了对应的文件,清楚了吧。如果某.c/.cpp文件编译进了.so库, 那么,strings -f * | grep "my dear"必定可以找到对应的.so文件, 其中"my dear"为该.c/.cpp文件中的某个日志串(比如以printf为打印)。

来自:https://blog.csdn.net/stpeace/article/details/46641069
背景: 系统启动的grub.cfg 不一样,有的在/boot/efi/EFI/centos/grub.cfg ,有的在 /etc/grub2.cfg

某天挂载了一个新硬盘后,我的centos7系统第二天就出现了崩溃现象,报错如题“failed to start crash recovery kernel arming”.

意思大致为“内存崩溃捕获机制未能成功启动”,一搜才知道这是因为一个叫做kdump的服务无法启动导致的。

那么什么是kdump呢?

kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。由于 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。详细的在:http://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/index.html#major3

那接下来查找失败的原因:

看到一个博文中说与启动文件配置有关

查看/etc/grub.conf 文件,发现crashkernel=auto,

系统对crashkernel=auto的定义为:

如果系统的内存 <= 8 GB 对kdump kernel不会保留任何内容;也就是说,crashkernel=auto 等

于关掉了机器上的kdump功能;

如果系统的内存> 8 GB但是<= 16 GB,crashkernel=auto会保留256M,等同于crashkernel=256M;

如果系统内存> 16GB, crashkernel=auto会保留512M, 等同于crashkernel=512M

安装虚拟机时,给虚拟机设置的内存为1G,所以说系统关掉了kdump。

接下来就是改写配置,但是没能在系统中找到博文中所说的/etc/grub.conf这个文件,后来想到从Centos 7之后启动就采用grub2 了,所以vi /etc/grub2.cfg把其中的crashkernel=auto改成crashkernel=256M重启就成功了。

来自:https://www.jianshu.com/p/c9e741c24d2b
在mac下开发的时候,经常会发现有些文件的属性后面,有个@符号



如上图所示。为什么呢?


在mac os 下 HFS+的文件系统里,有时候有些文件会附加上mac的专有属性,@属性就表示文件或文件夹是来自互联网下载
去掉方法:
xattr -l 文件名:查看attr
xattr -d 属性名:删除attr


来自:https://blog.csdn.net/mysteryhaohao/article/details/51900188
mac下发现不能用记事本打开文本文件,ls -la 发现格式后面有个@:
https://blog.csdn.net/wk3368/article/details/29597535
背景:想通过一些命令直接界面目录,想通过目录运行Linux一样的一些命令,MINGW32有这个功能,结合它,通过SourceTree的命令行模式再打开目录,本来SourceTree有一个浏览器,但它有时响应有些慢,出现灰色不能点,于是从命令行模式进去后再通过explorer . 打开目录更快捷一些,这个explorer的PATH路径要写好了,就不用输入一堆路径了(c:\Windows\winsxs\x86_microsoft-windows-explorer_31bf3856ad364e35_6.1.7601.17514_none_53bc10fdd7fe87ca),只有这样写到PATH变量之后才方便打开目录。2) 关于实践证明这个MINGW32的环境变量就是从Windows里继承过去的,修改了Windows系统的环境PATH后时还无法生效,要重启,我是等了会才生效的。
分别讲述:一、从运行输入命令打开(C语言写或BAT编写都成)。  二、从终端打开。  三、用快捷键打开。

法一)从Windows的运行里启动,前提是放入到PATH命令里:
(1)从运行到Windows的目录窗口:
像上面一样写入PATH,再写一个BAT脚本,chtdoc.bat 内容如下:
D:\Program Files\curl_wget_tail\chtdoc.bat


D:\Program Files\curl_wget_tail\cops.bat

使用时,直接Ctrl+R打开命令行窗口,然后输入:chtdoc,就能打开Windows的目录窗口,其它目录也一样的方式进行切换。
Windows下的CMD查看PATH变量值:


法二)从命令行里到Windows的窗口:
D:\Program Files\curl_wget_tail #里面放BAT文件和一些常用的软件,加快Windows下目录切换速度之用。
如:D:\Program Files\curl_wget_tail\cansible.bat


像:D:\script 可放一些SecureCRT的脚本软件,加快在Linux下的Cd目录速度。
Win7中打开cmd窗口的方式:在当前路径下,按住shift键,鼠标右键:
explorer.exe .  #explorer  . 也成。
在MINGW32下面的PATH如何设置?
设置MinGW环境变量
依次鼠标点击桌面“我的电脑”->选择左侧的“高级系统设置”,选择“高级”->“环境变量”,然后再Path里增加;C:\MinGW\bin声明。点击确定。
小提示:设置完成后,Windows似乎不会自动更新环境变量,除非重启机子,那么我们可以通过在下面的命令行中,胡乱设置一下PATH(比如SET PATH=C:\),然后退出命令行,那么系统环境变量就会被强制刷新。From: http://www.360doc.com/content/17/1203/15/8728596_709509894.shtml

在此处打开命令窗口后,将explorer的目录加入PATH,直接用exporer . ,就能到Windows的GUI界面,后面可以用一些编辑器打开文件。
为何要加入到环境变量里?
实践如下:



起于当explorer.exe没有设置PATH的一个使用情况如下:
sourcetree里的命令行模式MINGW32命令行Git Bash Here用explorer打开当前目录:
/c/Windows/winsxs/x86_microsoft-windows-explorer_31bf3856ad364e35_6.1.7601.17514_none_53bc10fdd7fe87ca/explorer.exe .
$ echo $PATH
/c/Users/admin/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Users/admin/bin:/d/Program Files/Microsoft Visual Studio/Common/Tools/WinNT:/d/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin:/d/Program Files/Microsoft Visual Studio/Common/Tools:/d/Program Files/Microsoft Visual Studio/VC98/bin:/c/Users/admin/AppData/Local/Programs/Fiddler:/d/Program Files/Nmap:/d/Program Files/Microsoft VS Code/bin:/d/Program Files/curl_wget_tail:/c/Windows/winsxs/x86_microsoft-windows-explorer_31bf3856ad364e35_6.1.7601.17514_none_53bc10fdd7fe87ca:/d/Program Files/Microsoft Visual Studio/Common/Tools/WinNT:/d/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin:/d/Program Files/Microsoft Visual Studio/Common/Tools:/d/Program Files/Microsoft Visual Studio/VC98/bin:/c/Users/admin/AppData/Local/Programs/Fiddler:/d/Program Files/Nmap:/d/Program Files/Microsoft VS Code/bin:/d/Program Files/curl_wget_tail:/c/Windows/winsxs/x86_microsoft-windows-explorer_31bf3856ad364e35_6.1.7601.17514_none_53bc10fdd7fe87ca:/usr/bin/vendor_perl:/usr/bin/core_perl


用程序调用操作系统的方法:
打开指定文目录、应用程序、文档:
1、打开C盘:
system("explorer.exe C:");
或者:
system("explorer.exe C:\\");

打开某个文件夹:E:\workspace\2014-12-07-VS2013
system("explorer.exe E:\\workspace\\2014-12-07-VS2013"); //打开指定文件夹
所以这里涉及到了转义字符:  \"  代表了   "

打开包含空格路径的应用程序,要添加双引号的转义字符。命令如下:

    //打开应用程序(路径中包含空格)
    system("\"D:\\Sublime Text 3\\sublime_text.exe\"");
    system("pause");
注:如果路径里没有空格,是不需要添加双引号的。

打开word文档:

    //打开word文档
    system("E:\\沉淀时光\\2014电子科技大学硕士招生简章.doc");
    system("pause");
打开ie浏览器:

    //打开浏览器
    system("\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" ");
打开指定网站:

    //打开指定网站
    system("\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"  www.google.com");
打开指定程序后关闭:

复制代码
#include<stdlib.h>

void main(){    
    //打开指定程序后,运行,回车,程序会关闭
    system("start calc");
    system("pause");
    system("taskkill /f /im calc.exe"); //关闭进程
}
复制代码
注:第07行代码中,/f表示force, /im表示进程名称。

运行上面的程序后,计算器会打开,此时在弹出的cmd窗口中回车,计算器会关闭。注:少了第05行的单词start和第06行的pause,都不能实现这个功能。

法三)用快捷键打开:
在目录上点右键->属性->快捷方式->快捷键。这种打开像:E:\download (用:ctrl+alt+d),
和SecureCRT的目录:D:\Program Files\SecureCRT7.3\ssh_tmp\Sessions(用:ctrl+alt+s)。
不宜配置太多占用了也记不住,其它的用上面二里的BAT命令行就行,如:cwww,cops,cshell,cansible等。

参考:https://www.cnblogs.com/smyhvae/p/4148458.html
背景:之前是一个写Markdown的编辑器Typora在升级后无法启动,后来是vs code也升级后无法启动,于是觉得奇怪了,网上专门搜了一下visual studio code win7 无法启动,查到一篇文章,https://blog.csdn.net/caijunfen/article/details/80393298 ,按里面方法在Cmd下运行netsh winsock reset命令后, vs code 好了,连Typora也好了,后来才想起原来是公司非要装一个360杀毒软件,在我运行netsh winsock reset时,提示是否允许,我估计可能是它给关了所导致。

执行 netsh winsock reset 重置命令

------------------不熟悉操作系统的同学可以按下面的教程来----------------

window + R 键 调出运行,输入 cmd ,按回车。
命令提示符出来之后,点左上角的图标然后选择编辑->选择粘贴这个进去 netsh winsock reset
粘贴之后按回车
最后会提示成功地重置Winsock目录。一般不用重启,直接双击你的Visual Code,应该就可以打开了。
C:\Users\admin>netsh winsock reset
'netsh' 不是内部或外部命令,也不是可运行的程序
或批处理文件。



成功地重置 Winsock 目录。
您必须重新启动计算机才能完成重置。



第二、查了一下,使用netsh winsock reset命令修复网络连接错误:
简单来说netsh winsock reset命令含义是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。

winsock是windows网络编程接口,从Windows XP SP2开始内置了一条命令使用netsh能够对该接口进行修复。

netsh是一个能够通过命令行操作几乎所有网络相关设置的接口。比如设置IP,DNS,网卡,无线网络等。
netsh winsock reset:
先进入netsh
然后进入winsock这个部件
对winsock这个部件执行reset命令。
效果就是重置Winsock。对于一些WinSock被破坏导致的问题有奇效。在netsh出现之前,对于WinSock问题的修复是非常繁琐的。

来自:https://blog.csdn.net/yanjiaye520/article/details/5452304
如何用tar压缩文件夹到指定目录:
tar -zxvf /usr/local/jmeter.tar.gz -C /usr/local/  && rm -rf /usr/local/jmeter.tar.gz && chmod -R 755 /usr/local/jmeter

压缩:
tar -cvzf /test/tmp/abc.tar.gz /test/tcp/abc

实例,将魔方MYSIM数据库给压缩到根目录下:
tar -cvzf /mofang.08.21.tar.gz mofang/

解压
tar -cvxf abc.tar.gz  -C /test/tmp
背景:Windows的C盘越来越大,60G都占满了,刚开始才10来G,逐步越占越多,而自带的那个工具根本无法看到占比,而这个Folder-size能把列表列出来并讲算出占比,方便分析哪个目录占得多,点进去后也有占比,方便分析删除目录之用,根据百分比,直接由60G干掉了16G剩余空间出来。

应用程序可以在几分钟内扫描整个硬盘驱动器,由于它优化扫描算法和树的大小详细列出。逐行扫描让你继续从扫描中断的问题。除了扫描整个硬盘驱动器文件夹大小也可以扫描一个文件夹,以节省时间。
DownLoad:http://enkj.jb51.net:81/201409/tools/FolderSize(jb51.net).rar
网站下载:http://www.mindgems.com/products/Folder-Size/Folder-Size-Tutorials.htm?postinstall=1

尽管windows也有查看的方法,但不直观,得一个一个的看,如下:
文件夹不像文件那样,不能在显示详细信息的时候显示出它的大小来,下面介绍两种查看方法,进行对比,看看哪个方法更快更方便~
https://jingyan.baidu.com/article/4853e1e5725b651909f726d2.html

下载:
F12打开开发者工具,选择Network,请求一个网站,就会显示请求的列表,在任何一列上右击,选择”Remote Address”,就能显示所有请求的IP地址:
在时间线下面,有一个Name Status Type 上面点右键,选上remote Addresss就显示出来了。
来自:https://blog.csdn.net/btlas/article/details/52383166


查看单个请求的IP地址,这个不如前面直接打开所有得了,如下:
请求一个网站,就会显示请求的列表,点击在右边就能看到IP地址
导语
    Redhat企业级系统的6.7版自带SSH版本为OpenSSH_5.3p1, 基于审计和安全性需求,建议将其升级到最新的OpenSSH版本,当前官网最新版本为7.4p1. 本文档将详细介绍OpenSSH升级的完整步骤。需要说明的是,升级过程中虽然涉及zlib、openssl和openssh的卸载,但是并不会导致当前的ssh远程连接会话断开,因此是可以将整个升级过程写成自动化脚本以进行自动批量部署的。后面咱准备逐步过度到CentOS7了,新版在SSH底层上优化了TCP连接传输功能。在譬如拷贝时会用同一个TCP的FD,而旧版本的是没有这个功能的。再就是刚连接过了在超时设置范围内,再次发起连接时也会复用之前的一个Socket的FD句柄,提高连接效率。
编译安装OpenSSH7.4p1一共分二步,
第一步:安装编译需要的RPM包:


第二步:编译并安装到和原来一样的目录,如下步骤:
tar zxvf openssh-7.4p1.tar.gz
cd openssh-7.4p1
ll
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-kerberos5=/usr/lib64/libkrb5.so
make && make install
cp -rf /usr/local/src/openssh-7.4p1/contrib/redhat/sshd.init /etc/init.d/sshd  
cp -rf contrib/redhat/sshd.init /etc/init.d/sshd  
chmod +x /etc/init.d/sshd
chkconfig --add sshd
vim /etc/init.d/sshd
sed -i '/sbin/restorecon /etc/ssh/ssh_host_key.pub/s/^/#/'  /etc/init.d/sshd  
sed -i 's/#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
ssh -V
service sshd restart
vim /etc/ssh/sshd_config
ll
vim /etc/ssh/sshd_config
ps -ef|grep ssh
service sshd start
history

附录:
反查一些OpenSSH需要的动态库,RPM包的安装路径辅助上面参数配置:
rpm -ql openssh-server-5.3p1-122.el6.x86_64
/etc/pam.d/ssh-keycat
/etc/pam.d/sshd
/etc/rc.d/init.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/libexec/openssh/sftp-server
/usr/libexec/openssh/ssh-keycat
/usr/sbin/.sshd.hmac
/usr/sbin/sshd
/usr/share/doc/openssh-server-5.3p1
/usr/share/doc/openssh-server-5.3p1/HOWTO.ssh-keycat
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd



ldd /usr/sbin/sshd
        linux-vdso.so.1 =>  (0x00007fffbc5ff000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007f2d19bf3000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f2d1980e000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f2d19605000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2d19401000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f2d191fe000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f2d18fe7000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f2d18db0000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2d18b96000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f2d18951000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f2d1866a000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f2d1843e000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f2d18239000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2d17ea5000)
        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f2d17c89000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2d17a6b000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003c0e400000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f2d177f4000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f2d175e9000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f2d173e5000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2d171c6000)

rpm -qf /lib64/libpam.so.0 >> /tmp/jackRpmResult.txt
rpm -qf /usr/lib64/libcrypto.so.10 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/librt.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libdl.so.2 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libutil.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libz.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libcrypt.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libresolv.so.2 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libgssapi_krb5.so.2 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libkrb5.so.3 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libk5crypto.so.3 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libcom_err.so.2 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libc.so.6 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libaudit.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libpthread.so.0 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/ld-linux-x86-64.so.2 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libfreebl3.so >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libkrb5support.so.0 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libkeyutils.so.1 >> /tmp/jackRpmResult.txt
rpm -qf /lib64/libselinux.so.1 >> /tmp/jackRpmResult.txt

需要这些包:
rpm -qa|grep audit-libs-2.2-2
rpm -qa|grep glibc-2.12-1.192
rpm -qa|grep keyutils-libs-1.4-5
rpm -qa|grep krb5-libs-1.10.3-65
rpm -qa|grep libcom_err-1.41.12-23
rpm -qa|grep libselinux-2.0.94-7
rpm -qa|grep nss-softokn-freebl-3.14.3-9
rpm -qa|grep openssl-1.0.1e-57
rpm -qa|grep pam-1.1.1-24
rpm -qa|grep zlib-1.2.3-29


yum 安装软件包:
audit-libs-2.2-2 glibc-2.12-1.192 keyutils-libs-1.4-5 krb5-libs-1.10.3-65 libcom_err-1.41.12-23 libselinux-2.0.94-7 nss-softokn-freebl-3.14.3-9 openssl-1.0.1e-57 pam-1.1.1-24 zlib-1.2.3-29

去掉版本号直接安装:
yum install audit-libs glibc keyutils-libs krb5-libs libcom_err libselinux nss-softokn-freebl openssl pam zlib




参考编译来源:
(1)http://blog.chinaunix.net/uid-28266791-id-5759478.html
(2)https://www.cnblogs.com/xshrim/p/6472679.html
cat php.ini |grep -v "^;"|grep -v ^$

grep -v ^# /etc/vsftpd/vsftpd.conf |grep -v ^$ >> /etc/vsftpd/vsftpd

来自:http://blog.51cto.com/mange888/806342
一)VSCode的空格设置:
MAC : Code->首选项->设置->两列右侧的用户设置->贴上立即新建一个文件就生效:

来自:https://www.jianshu.com/p/e9ee1de056b2


二)Sublime的空格设置:
Sublime菜单里的preferences.sublime-setting-Default里面的"draw_white_space": "selection",复制到preferences.sublime-setting-user,然后改为"draw_white_space": "all",之后保存,就行了,别忘了有一个逗号.

来自:https://www.cnblogs.com/xiyuan2016/p/8268210.html


三)以及在MAC下Sublime如何跳到行首或行尾? 使用Command键或者fn键+左/右箭头的组合。


四)MAC下向后删的方法是:Fn+Delete键。


五)Vim里显示末尾空格、换行和Tab设置:

显示 TAB 键
文件中有 TAB 键的时候,你是看不见的。要把它显示出来:
:set list TAB
显示为 ^I,$显示在每行的结尾,表示换行,Vim 可以用高亮显示空格和TAB。
如下,上面WhitespaceEOL做了去掉行尾巴的$和把Tab换成>-:
jack^Idjfkdf$
xiang^Idklf$
^I$
$
^I^I$

可视化列出vim的tab和所有不可见字符
在使用vim作为python的编辑器的时候,如果没有处理好空格和tab的关系,或者2者混用的时候,很容易出现缩进导致的错误,怎么避免这种情况的发生呢?

最好在vim的配置文件中将tab直接使用四个空格,这个时候你按下一个tab的时候,实际上插入了4个空格。

set expandtab

set tabstop=4



那么如果你的代码中有很多的tab和空格的混用,并且tab没有设置,那么就有大麻烦了,想修复这些错误,我们又不知道那些有问题,因为看不见,怎么办,使用

/\t

就可以可视化列出所有的tab了

还有一种方法,其实这种方法是列出不可见字符,比如回车换行字符,tab之类

你可以使用

:set list

查看,如果想取消,使用

:set list!

或者

:set nolist

还可以自定义这些不可见字符显示符号:

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
例如使用感叹号显示换行:

:set  listchars=eol:!

设置完后,再用

:set list

你会发现结束符,tab,前缀,扩展,换行符均显示出来了。

如果只想查看tab的话,那么设置

:set listchars=tab:--

然后使用

:set list

这时候,你只能看到tab被显示出来,其他还是不可见的状态。

来自:http://www.itye.org/archives/2005


如何使用呢?
首先设置权限,要在小程序中访问外部的网页,需要先设置允许访问的业务网站的域名,登录小程序平台管理后台页面,进入“设置”->开发设置:
点击开始配置
使用web-view组件显示HTM页面
<web-view src="https://www.xxxxxxxxx.com/index.html" />
注意:<iframe>可以嵌套入到页面的任意部分,而小程序的这个<web-view>总是自动铺满整个页面,每个页面只能有一个<web-view>,它会覆盖其它的组件。

如果要在已经通过<web-view>嵌入小程序的网页中,跳转到小程序的其他页面,可以引入微信的一个jsssdk,使用它提供的方法来实现

<!-- html代码中引入JS SDK -->
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>
<script>
// 跳转到小程序的一个页面
wx.miniProgram.navigateTo({url: '/path/to/page'})
</script>

来自:https://blog.csdn.net/null_bugs/article/details/79495237
预览Markdown快捷键:先按Ctrl + K,然后放掉,紧接着再按 v,调出右侧实时预览框。

之前尝试过使用多个markdown编辑器,都可以用,但是总觉得使用起来不是很爽,要么功能限制需要开通会员才能导出pdf,要么界面丑爆了,要么程序很大有很多没用的功能。最近突然发现VS code也可以下markdown,而且用起来超级爽,悄悄的迷恋上了vs code。写好的文件如果想要导出pdf文件,需要安装插件。

VS code安装插件的方法为:
1. 按下F1键,会在窗口顶端弹出命令的输入框,输入ext install
2. 在插件输入框输入markdown pdf,vs code会检索出markdown pdf插件。
3. 点击安装,重启即可。

在window系统下,通过上面的步骤就可以了,但是在Linux或者MAC下,安装后右键--convert to pdf会报错:ERROR: phantomjs binary does not exist: /Users/username/.vscode/extensions/yzane.markdown-pdf-0.1.7/node_modules/phantomjs-prebuilt/lib/phantom\bin\phantomjs.exe

这时候需要安装phantomjs才可以使用:
MAC:brew install phantomjs
Linux:sudo apt-apt install phantomjs


4.预览
“Markdown Preview Enhanced” 插件提供了预览功能。 在markdown文件右上角,有一个放大器的东西,点击选择即可。

5.生成PDF
Open the Markdown file
Press F1 or Ctrl+Shift+P
Type export and select below
markdown-pdf: Export (settings.json)
markdown-pdf: Export (pdf)
markdown-pdf: Export (html)
markdown-pdf: Export (png)
markdown-pdf: Export (jpeg)
markdown-pdf: Export (all: pdf, html, png, jpeg)
后来发现,在Markdown的文件编辑界面上右键有导出PDF的右键菜单,出现返回Busy啥的,有可能是那个之前的PDF还处于被打开状态。
来自:https://blog.csdn.net/billybai/article/details/78245827


Visual Studio Code + Markdown TOC 扩展:
在Markdown的文件编辑界面上右键有导出PDF的右键菜单。
单击 VS Code 的扩展图标,在搜索框搜索 Markdown TOC 并安装。
安装成功后,点击左侧扩展图标,可查看已安装的扩展。
菜单栏的文件 -> 打开,打开需要生成目录的 .md 格式的文件。
将光标移至需要插入目录的位置,右键单击出现菜单里面有 Markdown TOC: Insert/Update [^M T],目录即自动插入。(先按Ctrl + K,然后放掉,紧接着再按 v,调出右侧实时预览框。)
保存,关闭文件。
https://www.jianshu.com/p/4721ddd27027
背景:ssl on打开后直接访问Http,出现400错,想能通过Http访问到,得注释掉ssl on;即可。
Problem
When viewing any of my sites using port 80, the following error appeared on non-SSL websites:

Nginx 400 Bad Request The plain HTTP request was sent to HTTPS port
Original server block:

server {
    listen 80;
    listen 443;

    ssl on;
    ssl_certificate         /path/to/cert/example.pem;
    ssl_certificate_key     /path/to/cert/example.private.key;

    root /path/to/wordpress;
    index index.php;

    # Website URL
    server_name blog.duaneleem.com;

    # etc...
}


Solution
After reading NGINX documentation, the solution to this was to place the SSL directive on “listen.” Here’s a sample server block that demonstrates this:

server {
    listen 80;
    listen 443 ssl;

    ssl_certificate         /path/to/cert/example.pem;
    ssl_certificate_key     /path/to/cert/example.private.key;

    root /path/to/wordpress;
    index index.php;

    # Website URL
    server_name blog.duaneleem.com;

    # etc...
}
By adding “ssl” to the listen directive to all my server blocks, everything started working again.


From: https://blog.duaneleem.com/nginx-ssl-on/
Excel里有冻结首航,在Html的表格里也有首行,这块复制时从首行的最后一个位置到末尾选中,
法1)然后可贴入到Excel里面,行成多行,然后再粘贴出来也就行对齐了,可对一些列作修改。
法2)当然,也可放到Dreamweaver里,对没有用的列进行选中后按Delete键删除后,再在Live里,也就是模拟浏览器显示里贴回Excel里(直接对编辑模式进行粘贴还是会换行!),再粘贴回编辑器里。
否则,直接粘贴网页里面的表格,其一行一行的显示到文本编辑器里不是一行一行的,而是很多行,格式一定会出现错乱。

法2这个直接粘贴进Excel里有样式,而从Dreamweaver里粘贴进去无样式,还能去列,而Excel想选两列再粘贴两列到文本编辑器里,是不行的,会粘贴所有的。
但是可以把Exel里的多余的列删除掉,再粘贴也就Ok。总之,得过Excel一下,否则表格里的一行到了文本编辑器后就会出现换行。
$cat pingfang.awk


$cat xy.txt
1 2
3 3
4 3
2 3

$./pingfang.awk xy.txt
sum = 5
sum = 18
sum = 25
sum = 13

这些文章{print 'sum =',SquareSum($1,$2)} 都是单引号,估计都没实践过吧?
参考:https://tieba.baidu.com/f?kz=4897365011&mo_device=1&ssid=0&from=844b&uid=0&pu=usm@0,sz@1320_2001,ta@iphone_1_11.4_3_605&bd_page_type=1&baiduid=F7F621D935F5435074FCC25A0863FC2F&tj=www_normal_5_0_10_title&referer=m.baidu.com?pn=0&
http://blog.sina.cn/dpool/blog/s/blog_4cab1a3701007ya9.html
对于写判断的语句,如for,需要放在花括号里头,{},否则会报错,这是AWK的语法:
cat sql.txt
http://adff.com 300,300,300
http://adff1.com 300,300,300
http://adff2.com 300,300,300
http://adff3.com 300,300,300
http://adff4.com 300,300,300,300,300

cat sql.txt |awk '{a=split($2,filearray,",")}{for (i=1;i<=a;i++) printf ("%s/v=%s\n",$1,i)}'
http://adff.com/v=1
http://adff.com/v=2
http://adff.com/v=3
http://adff1.com/v=1
http://adff1.com/v=2
http://adff1.com/v=3
http://adff2.com/v=1
http://adff2.com/v=2
http://adff2.com/v=3
http://adff3.com/v=1
http://adff3.com/v=2
http://adff3.com/v=3
http://adff4.com/v=1
http://adff4.com/v=2
http://adff4.com/v=3
http://adff4.com/v=4
http://adff4.com/v=5

之前加个end,发现只输出最后一行,不对。去了END就好了,end表示其后的语句在所有语句执行后才执行,做一些计算后的总结打印输出,BEGIN表示在所有语句执行前执行:

http://adff4.com/1
http://adff4.com/2
http://adff4.com/3
http://adff4.com/4
http://adff4.com/5
分页: 13/336 第一页 上页 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 下页 最后页 [ 显示模式: 摘要 | 列表 ]