cosyer's Blog

Blog


  • 首页

  • 友链

  • 留言板

  • 归档

  • 关于

  • 搜索

工具 分类

8月
05
更新于
8月05
2020
工具

TAR命令详解

发表于 2020-04-29 | 热度 ℃
| 字数统计: 767 (字) | 阅读时长: 3 (分钟)

在Linux中,压缩与解压用得最多的是 tar 命令。

-c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件

以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的 gz -j:有bz2属性的 bz2

-J :有xz属性的 xz -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。


阅读全文 »
4月
15
更新于
4月15
2020
工具

Immer中文文档

发表于 2020-04-15 | 热度 ℃
| 字数统计: 2,615 (字) | 阅读时长: 11 (分钟)

Immer 中文文档

前言

Immer 是 mobx 的作者写的一个 immutable 库,核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构,简单易用、体量小巧、设计巧妙,满足了我们对JS不可变数据结构的需求。
无奈网络上完善的文档实在太少,所以自己写了一份,本篇文章以贴近实战的思路和流程,对 Immer 进行了全面的讲解。

目录

  • 数据处理存在的问题
  • 解决引用类型对象被修改的办法
  • immer功能介绍
    • 安装immer
    • immer如何fix掉那些不爽的问题
    • 概念说明
    • 常用api介绍
  • 用immer优化react项目的探索
    • 抛出需求
    • 优化setState方法
    • 优化reducer
  • 参考文档

阅读全文 »
4月
29
更新于
4月29
2020
工具

Shell入门教程

发表于 2020-03-23 | 热度 ℃
| 字数统计: 8,498 (字) | 阅读时长: 34 (分钟)

脚本运行

建立一个文本文件demo,以.sh结尾的或者不需要后缀都可以。

1
2
3
4
#!/bin/bash
NUM=10
printf "输出数字$NUM\n"
echo $NUM

通过sh或者bash命令运行脚本,sh scriptname 运行一个Bash脚本将会禁止所有Bash的扩展特性。

1
2
3
4
5
# 你能够运行它用命令
sh demo

# 另外也也可以用bash来执行
bash demo

脚本以”#!”行开头,行将会命令解释器(sh或是bash)。#!/bin/rm 当你运行这个脚本时,除了这个脚本消失了之外,你不会发现更多其他的东西。

注释

以#开头的行就是注释,会被解释器忽略。注释行前面也可以有空白字符。

1
# 这是一个注释

命令分隔符

分号;命令分割符,分割符允许在同一行里有两个或更多的命令。

1
2
3
4
5
6
7
echo hello; echo there         # 输出 hello 和 there
filename='cosyer' # 变量文件名
if [ -x "$filename" ]; then # 注意:"if" and "then"需要分隔符
echo "File $filename exists."; cp $filename $filename.bak
else
echo "File $filename not found."; touch $filename
fi; echo "File test complete.

结束符

双分号;;,case语句分支的结束符。

1
2
3
4
5
6
7
8
9
read Keypress
case "$Keypress" in
[[:lower:]] ) echo "Lowercase letter";;
[[:upper:]] ) echo "Uppercase letter";;
[0-9] ) echo "Digit";;
* ) echo "Punctuation, whitespace, or other";;
esac # 允许字符串的范围出现在[]中,
#+ 或者POSIX风格的[[中.
exit 0


阅读全文 »
2月
24
更新于
2月24
2021
工具

git相关问题场景和命令

发表于 2019-09-21 | 热度 ℃
| 字数统计: 4,162 (字) | 阅读时长: 17 (分钟)

一、必备知识点

git


阅读全文 »
11月
22
更新于
11月22
2020
工具

webpack

发表于 2019-08-18 | 热度 ℃
| 字数统计: 4,266 (字) | 阅读时长: 18 (分钟)

谈谈你对webpack的看法

webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScript和静态文件(图片,字体)等,让开发更高效。对于不同类型的依赖,webpack有对应的模块加载器,而且会分析模块间的依赖关系,最后合并生成优化的静态资源。

webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件。

webpack的基本功能和工作原理?

  • 代码转换:TypeScript 编译成 JavaScript、SCSS 编译成 CSS 等等
  • 文件优化:压缩 JavaScript、CSS、HTML 代码,压缩合并图片等
  • 代码分割:提取多个页面的公共代码、提取首屏不需要执行部分的代码让其异步加载
  • 模块合并:在采用模块化的项目有很多模块和文件,需要构建功能把模块分类合并成一个文件
  • 自动刷新:监听本地源代码的变化,自动构建,刷新浏览器
  • 代码校验:在代码被提交到仓库前需要检测代码是否符合规范,以及单元测试是否通过
  • 自动发布:更新完代码后,自动构建出线上发布代码并传输给发布系统。

  • Entry(入口):Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入。

  • Output(出口):指示 webpack 如何去输出、以及在哪里输出
  • Module(模块):在 Webpack 里一切皆模块,一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。
  • Chunk(代码块):一个 Chunk 由多个模块组合而成,用于代码合并与分割。
  • Loader(模块转换器):用于把模块原内容按照需求转换成新内容。
  • Plugin(扩展插件):在 Webpack 构建流程中的特定时机会广播出对应的事件,插件可以监听这些事件,并改变输出结果

webpack构建过程

  • 从entry里配置的module开始递归解析entry依赖的所有module
  • 每找到一个module,就会根据配置的loader去找对应的转换规则
  • 对module进行转换后,再解析出当前module依赖的module
  • 这些模块会以entry为单位分组,一个entry和其所有依赖的module被分到一个组Chunk
  • 最后webpack会把所有Chunk转换成文件输出
  • 在整个流程中webpack会在恰当的时机执行plugin里定义的逻辑
  1. 初始化:解析webpack配置参数,生成 Compiler 实例
  2. 注册插件:调用插件的apply方法,给插件传入compiler实例的引用,插件通过compiler调用Webpack提供的API,让插件可以监听后续的所有事件节点。
  3. 入口:读取入口文件
  4. 解析文件:使用loader将文件解析成抽象语法树 AST
  5. 生成依赖图谱:找出每个文件的依赖项(遍历)
  6. 输出:根据转换好的代码,生成 chunk
  7. 生成最后打包的文件

webpack打包原理

将所有依赖打包成一个bundle.js,通过代码分割成单元片段按需加载

阅读全文 »
2月
19
更新于
2月19
2021
工具

linux安装mongodb及常见命令

发表于 2019-07-20 | 热度 ℃
| 字数统计: 706 (字) | 阅读时长: 4 (分钟)
MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

阅读全文 »
11月
16
更新于
11月16
2020
工具

macvscode更新失败:Permissiondenied解决办法

发表于 2019-04-09 | 热度 ℃
| 字数统计: 520 (字) | 阅读时长: 2 (分钟)

场景 – mac vscode不能安装更新

Could not create temporary directory: Permission denied

原因分析

mac下/Users/username/Library/Caches/用户文件不一样,root和username

导致

drwxr-xr-x 6 username staff 204B Jan 17 20:33 com.microsoft.VSCode drwxr–r– 2 root staff 68B Dec 17 13:51 com.microsoft.VSCode.ShipIt

解决方案

1
2
3
4
5
6
7
8
9
10
// 1. 关闭vscode

// 2. 这一步是需要输入密码的
sudo chown $USER ~/Library/Caches/com.microsoft.VSCode.ShipIt/

// 3. 这一步是不需要输入密码的, 如果不进行第一步,第二步会报错
sudo chown $USER ~/Library/Caches/com.microsoft.VSCode.ShipIt/*

// 4. 更新xattr
xattr -dr com.apple.quarantine /Applications/Visual\ Studio\ Code.app

重新安装更新 完成😁

Mac版本下的Chrome,双击html文件打不开

原因其实是因为在Mac OS系统下,在Finder(访达)中做任何操作,文件都会不可避免的被附加上一个特有的拓展属性(extend attributes),可以通过终端命令ls -l查看,这些文件通常都会有@作为标记,因此,由于产品的原型是由Axure来制作的,然后导出了tar的压缩包,因此我们解压之后,通常都不能直接在浏览器打开!

怎么解决这种问题呢?

我们可以清除掉这个属性(extend attributes)!

  1. 可以针对单个文件做清除操作(filename就是要文件名,例如:index.html)

    1
    xattr -c filename
  2. 也可以针对整个目录做清除操作(directory就是目录名,例如:content)

    1
    xattr -rc directory

重启电池smc

1
2
3
4
5
6
7
8
将 Mac 关机。
在内建键盘上,按住以下所有按键。Mac 可能会开机。
键盘左侧的 Control
键盘左侧的 Option (Alt)
键盘右侧的 Shift
按住全部三个按键 7 秒钟,然后在不松开按键的情况下按住电源按钮。如果 Mac 处于开机状态,它将在您按住这些按键时关机。
继续按住全部四个按键 7 秒钟,然后松开这些按键。
等待几秒钟,然后按下电源按钮以将 Mac 开机。
8月
14
更新于
8月14
2020
工具

不能说的秘密

发表于 2018-06-07 | 热度 ℃
| 字数统计: 355 (字) | 阅读时长: 1 (分钟)
Shadowsocks
阅读全文 »
5月
14
更新于
5月14
2020
工具

如何使用 markdown 语法写博客

发表于 2018-04-07 | 热度 ℃
| 字数统计: 344 (字) | 阅读时长: 1 (分钟)
Markdown

标题1

标题2

斜体 粗体 粗斜体
删除线 下划线文本

  1. I
  2. Love
  3. You
  • 点
  • Foo
  • Bar

阅读全文 »
12
陈宇(cosyer)

陈宇(cosyer)

不去做的话永远也做不到。

159 日志
10 分类
51 标签
RSS
GitHub Twitter E-Mail FB Page
推荐阅读
  • Callmesoul
  • JsTips
  • Personal Site
  • Resume
© 2021 陈宇(cosyer)
终于等到你(UV):   |   欢迎再来(PV):
Blog总字数: 312.5k字
苏ICP备17005342号-1