Hot For Coding
JavaScript浮点数bug

之前就有看过JavaScript浮点数bug的相关文章,但没有特别关注,直到最近做一个项目,正好是涉及到浮点运算,看了好几次确认逻辑没有问题以后断点跟踪发现了传说中的浮点数bbug。

$ node
> 0.8 - 0.1
0.7000000000000001

这跟运行环境还没有关系,比如Chrome console下

> 0.8 - 0.1
0.7000000000000001

但不是每个浮点书运算都会有这个bug,比如:

$ node
> 0.8 - 0.1
0.7000000000000001
> 0.9 - 0.8
0.09999999999999998
> 1.0 - 0.1
0.9
> 1.0 - 0.4
0.6
> 0.4 - 0.3
0.10000000000000003
> 0.1 + 0.1
0.2
> 0.5 + 0.1
0.6
>

...

READ ALL

zsh环境变量设置

这两天在使用环境变量的时候突然发现设置以后,只要重启终端后之前设置的环境变量会消失。最开始是在.bash_profile这个文件添加的环境变量,于是在/etc/profile也添加了环境变量但结果还是一样,只要关闭终端重启就会失效。

这时突然想到会不会是zsh搞的鬼,因为之前安装了zsh

full

于是发现宿主目录下有一个.zshrc配置文件

└─[0] <> ls -a
.                                      .zcompdump-Jong Pro-5.2
..                                     .zsh-update
.CFUserTextEncoding                    .zsh_history
.DS_Store

...

READ ALL

SecurtCRT不能保存密码的解决方法

前段时间重新换电脑使用以后,SecurtCRT的会话需要全部重建,结果发现一个问题,即使每次勾选了保存密码这个选项

full

但会话断开重连还是要求输入密码,开始没有这么在意,后来总是这样有点麻烦,于是卸了N次重装还是不行,好不容易在网上找到了解决方案,在Global Options下把Use Keychain取消即可

full

...

READ ALL

快速排序法 Quicksort

Tony Hoare

快速排序法(Quicksort)是目前排序算法里最常用的算法之一,由Tony Hoare于1959年开发,61年发布

引用Wiki

Quicksort (sometimes called partition-exchange sort) is an efficient sorting algorithm, serving as a systematic method for placing the elements of an array in order. Developed by Tony Hoare in 1959,[1] with his work published in 1961,[2] it is still a commonly used algorithm for sorting. When implemented well, it can be about two or three times faster than its main competitors, merge sort and heapsort.[3]

...

READ ALL

Golang如何跨平台编译到Linux

有时候我们在开发时会使用Win或者Mac电脑,但部署上线时可能会涉及到跨平台编译,比如在Mac上编译出Linux执行文件

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app

解释以下参数

  • CGO_ENABLED=0 不需要使用CGO
  • GOOS=linux 我们要编译的目标系统
  • GOARCH=amd64 CPU架构,amd64应该是多数通用的
  • -o app 编译输出的可执行文件名称

...

READ ALL

hex与rgb(a)互相转换

hex与rgb都能代表颜色,使用效果上一样的,但有时需要做一些计算时就需要转化,特别是hex转rgb后做一些计算,比如颜色拾取器等等。

hex转rgb

function hexToRgb (hex) {
  var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  hex = hex.replace(shorthandRegex, function (m, r, g, b) {
    return r + r + g + g + b + b;
  });

  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result ? 'rgb(' + [
    parseInt(result[1], 16),
    parseInt(result[2], 16),
    parseInt(result[3], 16)
  ].join(',') + ')' : hex;
}
 
console.log(hexToRgb('#C0F'));    // Output: rgb(204,0,255)
console.log(hexToRgb('#CC00FF')); // Output: rgb(204,0,255)

...

READ ALL