存档

作者存档

Linux bash 的小技巧

2017/11/29 43

路径跳转

  • cd - 快速回到前一个路径
  • cd / cd ~ 回到用户的home目录

命令参数

  • $*: 代表所有参数,其间隔为IFS内定参数的第一个字元
  • $@: 与*星号类同。不同之处在於不参照IFS
  • $#: 代表参数数量
  • $?: 执行上一个指令的返回值
  • $-: 最近执行的foreground pipeline的选项参数
  • $$: 本身的Process ID
  • $!: 执行上一个背景指令的PID
  • $_: 显示出最後一个执行的命令

阅读全文…

解决 vs 无法 “附加到进程” 调试的问题 (msvsmon unexpectedly exited)

2017/11/02 114

The debugger’s worker process (msvsmon.exe) unexpectedly exited. Debugging will be aborted

在 vs “附加到进程” 进行调试时,总是弹出如上错误。偶尔还会造成 vs crash。

检查环境变量,看一下 path 变量下是否有

“%USERPROFILE%\.dnx\bin”    或

“%USERPROFILE%\.dnx”

的值。如果有则删除之并重启。

 

跨平台的命令行参数工具 — boost program_oprations

2017/10/16 64

1 例子

下例展示了 program_oprations 的基本用法:为程序定义了 3 个参数: help, host, port . 其中 host 与 port 分别定义了简写 h ,p 。host 是必填项, port 是有缺省值(80)的选填项,当 port 有输入时使用输入项,否则使用缺省值 ,当输入了错误的参数时会输出错误信息。

测试效果:

progma_options 库由三部分组成:

  • descrition , 描述组件,用于描述允许的参数及这些参数的值。
  • parser , 解析组件,用于解析输入的参数与值
  • storage , 存储组件, 它将解析器的输出转换成 字符串表示的健与 C++ 类型的值的 map, 并提供了访问这些值的接口。

对于上例来说, program_options 所做的事情,就是使用 options_description 描述了我们期望的参数,使用 parse_command_line 解析了输入参数并使用 store 将参数存储在 variables_map 中。当我们需要使用某个参数时直接从 variables_map 中获取。

阅读全文…

JavaScript中的数据类型转换

2017/10/03 127

这里总结了JavaScript中常见的数据类型转换

1 字符串 to 数值

显式转换

通常的做法是使用 Number()parseInt() , parseFloat() 函数。需要注意的是, Number() 的参数不能含有非数字字符串值 ,如 Number(100x) 会得到 Nan, 而 parseInt(), parseFloat() 则是参数的第一个字符不可以是非数字,否则会得到 Nan, 而且它会忽略第一个非数字的字符串之后的所有字符。

对于 parseInt() 函数来说,可以指定进制。早期版本的 JavaScript 默认执行 8 进制转换,而新版本使用 10 进制 进行转换。如果需要保证兼容性,则需要带上第二个参数:

隐式转换

数值的字符串变量(指可以通过 Number函数转换为数值的字符串,本节中的字符串均指可以通过 Number() 转换为数值的字符串) 在遇到数值运算符时可能发生隐式转换:
阅读全文…

安装 pywin32 的坑

2017/09/27 177

坑1 :

在 Pypi 上有 pywin32 的页面 ,然后无法使用 pip 命令来安装它,只有到 Sourceforge 下载源码或安装程序

坑2:

如果你下载了源码,可以使用:

来自动编译安装。很不幸,我的windows上编译环境比较复杂( 有 vs2013/2015/2017)。 setup.py 在编译时抛出了各种环境错误。好在我有 mingw,使用命令:

用 mingw 来进行编译,然后被抛出错误:

那么下载安装包直接进行安装吧  🙁

坑3:

我使用的是win10 64位操作系统,使用 python2.7 环境。于是下载了 pywin32-221.win-amd64-py2.7.exe 。点击安装,下一步:

仔细检查,环境变量是没有问题的。再手动选择python安装路径(只能粘贴,不可以键盘输入),还是有错误…… 查注册表,发现注册表里有一些缺失。添加注册表:

OK ,安装成功!😏

坑4:

在 python 中运行一下:

出现错误:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

摔……😡

再次检查,发现这台电脑是安装的python 是32位 版本的。再次安装 pywin32 的32位版本,这次运行成功……

🤣

计算信息的指纹–单向散列函数

2017/09/20 244

1 XCodeGhost 风波

2015年9月17日左右,知名程序员唐巧发布微博声称Xcode有可能被第三方代码注入,而在社交平台上引起轩然大波。乌云网后续发布相关的知识库文章。而在此之前,腾讯安全应急响应中心在跟踪某app的bug时发现异常流量,解析后上报了国家互联网应急中心(CNCERT),后者随即在9月14日发布了预警消息。之后也有国外信息安全组织跟进调查。 受影响的应用程序包括微信、网易云音乐、滴滴打车、高德地图、12306、同花顺、中信银行动卡空间、简书等76种。而事情的起因,是有人将被添加了恶意代码的 XCode 放在百度云盘上,供开发者下载,在使用感染后的XCode发布的App都带有后门,会在最终客户端运行时将隐私信息提交给第三方。 这一事件被称为 “XCodeGhost 事件”。

事件的背后折射出的,是计算机网络信息中的安全问题。 互联网中的大部分用户,都缺乏基本的安全意识,其中就包括计算机重度使用者:程序员。 如何确保我们下载使用的软件是没有经过污染的软件呢?首先确保我们从正规的渠道获取软件,其次,我们需要对软件进行校验。比较常用的方法,是使用单向散列函数进行校验。 如 Eclipse.org 为我们提供了 SHA-512 校验码

2 什么是单向散列函数

单向散列函数 (one-way hash function) 有一个输入和一个输出,输入称为 消息 ,输出称为 散列值 ,函数根据消息计算出散列值,可以用来检验消息的完整性。它也称作 消息摘要函数 (Message Digest Function) , 哈希函数 ,或者 杂凑函数 。消息也被称作 原像 ,散列值也被称作 哈希值 或 指纹 。单向散列函数具有以下的特性:

  1. 散列值长度与消息长度无关
  2. 散列值与消息内容密切相关,即消息不同,散列值也不同
  3. 单向性 在给出散列值 H(M) 的情况下,无法计算出消息 M 的值。
  4. 抗碰撞性 如果有消息 M1,散列值 H(M1), H(M2) ,且 H(M1) = H(M2) ,很难找出消息 M2 令 M2 ≠ M1

3 常见的几种单向散列函数

3.1 MD5

MD5 能够产生 128 bit 的散列值(RFC1321)。 MD5 的强抗碰撞性已经于 2005 年被攻破,也就是说,现在已经能够产生具备相同散列值的两条不同的消息,因此它是不安全的。
阅读全文…