avatar 奔跑的Q丶

主题凑合用,样式即将改版...

Node 爬虫实践 - Gitlab 文件下载

公司的设计图稿等全部存在 Gitlab 上的某个仓库中,恰好某次迭代需要使用到其中的图稿,因为历史图稿使这个仓库异常大,而我只需要其中很小的一部分,就不想 clone 整个仓库而只想下载需要的文件夹。但是在使用 Git 时如果只想下载其中部分的文件夹是一件很复杂的事情,尝试了各种指令后发现无论如何都要先 fetch 整个项目,而下载其中的一个文件却是一件简单的事情,那不如就动手写个爬虫吧。于是就有了这个项目 gitlab-fileDownload

demo-gitlab-fileDownload

隐藏滚动条方法

隐藏滚动条方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.container {
/* only 'overflow-x: hidden' for firefox */
overflow: hidden;
.target {
overflow-y: scroll;
/* ie */
-ms-overflow-style: none;
/* chrome */
&::-webkit-scrollbar {
width: 0;
}
/* firefox (unreliable) */
@-moz-document url-prefix() {
& {
margin-right: -16px;
padding-right: 16px;
}
}
}
}

JS 中的广度与深度优先遍历

现在有一种类似树的数据结构,但是不存在共同的根节点 root,每一个节点的结构为 {key: 'one', value: '1', children: [...]},都包含 keyvalue,如果存在 children 则内部会存在 n 个和此结构相同的节点,现模拟数据如下图:

原始数据结构

已知一个 value3-2-1,需要取出该路径上的所有 key,即期望得到 ['three', 'three-two', 'three-two-one']

git rebase 批量合并 commits

git rebase 是一个经常用以美化分支线的指令,近来听说了一个 squash 的指令可以用来合并多个 commits,研究后更是觉得 rebase 的神奇了,本文做一个记录。

踩坑对象解构赋值

对象的解构赋值为日常代码的开发提供了很大的便利,尤其适用 React 开发中对 state 中的引用数据类型 copy 一份再去操作的情况。在使用了如此久的情况下一直没有深究解构赋值或者 Object.assign 的浅拷贝会产生什么影响,于是终于踩到坑了。

文本框光标处插入数据的方法

在 React 项目中遇到一个需求,点击 tags 后插入进正在编辑的 textarea 中。

在翻阅了一些网上的答案后发现基本上都在围绕 setSelectionRange 展开,然而我并不想选中啊,好吧,没有耐心再去找了。自己再去尝试下,每次把光标移出文本框后通过控制台 focus 会发现光标依旧定位在移出时的位置,再联系上面的 api,让我意识到 input 是存在一个记录光标位置的类似属性的。在控制台直接打印出 input,寻寻觅觅发现了神奇的东西 selectionStartselectionEnd。修改相应的值,发现两值不一样时会选中区间内的文本,再次 focus 也就是定位到了可以修改这个选中值的地方了,完美~

从一个 CRUD 上手 React 和 AntD

换了新公司后,技术栈使用的是 react。虽然一路从 vue 1 到 vue 2,但是我还是对 react 有好感的,当初学习 vue 1 文档少的可怜的时候也是借鉴了不少 react 的文章才得以理解,因此在接下来的文章中会小部分的对比下 react 和 vue 的不同。本次的文章主要是关于初次接触 react,并开发出一个具有 CRUD 功能页面的过程。提前了解本项目的详情请点击 GitHub 地址线上预览地址

添加多个 SSH 秘钥

本月堆积了好几篇文章没写了,趁着最后几十分钟,为了完成年初计划马虎更新一篇记录性的文章吧。由于本月刚换了新的公司,新公司的代码托管在 GitLab 上,因此有了管理 2 个 SSH 秘钥的需求,查阅资料后发现并不难,记录与分享一下。

首先生成 SSH 的指令不陌生:

1
2
3
ssh-keygen -t rsa -C "邮箱地址"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):

默认会存放在个人文档根目录下的 .ssh 下,并以 id_rsa 的文件名生成秘钥对。

Plus —— JS 面试题

设计一个 plus 方法,达到以下测试结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'use strict'
const assert = require('assert')
describe('闭包应用', function(){
it('plus(0) === 0', function(){
assert.equal(0, plus(0).toString())
})
it('plus(1)(1)(2)(3)(5) === 12', function(){
assert.equal(12, plus(1)(1)(2)(3)(5).toString())
})
it('plus(1)(4)(2)(3) === 10', function(){
assert.equal(10,plus(1)(4)(2)(3).toString())
})
it('方法引用', function(){
var plus2 = plus(1)(1)
assert.equal(12, plus2(1)(4)(2)(3).toString())
})
})