xattr and ads

扩展文件属性(extended attributes)

Extended Attributes

Extended Attributes即扩展文件属性, 是文件系统的一个功能。它允许用户将计算机文件与未被文件系统所解释的元数据关联起来。其典型应用包括存储文档作者、普通文本文件的字符编码或者校验码。

  • Linux or macOS

在Linux操作系统中,如果libattr功能在内核设置中被打开,ext2、ext3、ext4、JFS、ReiserFS以及XFS文件系统都支持扩展属性(英文简写为xattr)

Mac OS X 10.4 及以上版本在 HFS+ 文件系统上也支持xattr

JS中可以使用fs-xattr 读取和写入xattr

修改xattr不会修改文件的mtime,故可以将需要存储的数据及time stamp一起存入xattr,读取时通过比较mtime,可以检验数据的时效性。

  • Windows

windows不支持xattr,但是可以使用NTFS的Alternate Data Streams来代替,对应的JS库是 fs-ads

但是需要注意的是,修改ads会改变文件的mtime,所以在保证数据的时效性方面比较麻烦。

采用 atime + size的方法大部分情况可以保证准确性,但并不完备。

upload files or folds recrusively

利用Async-await读取并上传本地文件夹

利用Async-await写了读取本地文件并上传至服务器的程序。

Async-await写起来有种一气呵成的感觉,然而实际业务中要考虑到更为复杂的状态管理却用不了,故记录在这里。

file hash in node

利用node中的加密模块crypto计算文件的hash值

readStream的方式读取文件并同时使用crypto.createHash计算hash值。

handle error in js

1
2
3
4
5
try {
something
} catch (e) {
window.location.href = `http://stackoverflow.com/search?q=[js]${e.message}`
}

filter in CSS

CSS3 中 Filter的应用

Filter是CSS3中对图片添加特效的方法,可以认为是一种滤镜

基本语法是:

1
2
3
4
5
6
7
8
9
filter: <filter-function> [<filter-function>]* | none
/* examples */
.mydiv { filter: grayscale(50%) }
img {
filter: grayscale(0.5) blur(10px);
}
CSS

Brtfs Filesystem

Btrfs文件系统

Btrfs是新一代的Linux文件系统,目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。