常用Shell整理

实现“按任意键继续/Press any key to continue”效果

关键词:stty

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
get_char() {
    SAVEDSTTY=`stty -g`
    # 隐藏终端输入显示
    stty -echo
    stty cbreak
    # dd等待用户按键
    # bs(block size) 块大小 = 1 count总数 = 1, 作用只取一个字符
    # 2 > /dev/null,  不显示任何信息
    dd if=/dev/tty bs=1 count=1 2> /dev/null

    # 恢复终端显示
    stty -raw
    stty echo
    stty $SAVEDSTTY
}

echo ""
echo "Press any key to start...or Press Ctrl+c to cancel"

char=`get_char`

THE BIG WORLD

世界那么大,我想去看看! There is such a lot of world to see.

自从 V*P*N 被禁后,就折腾起了 SS(R)+BBR 的方案,先后入手了 bandwagonHOST、Digitalocean、UFOHost、Vultr

Next.js实战

Next.js是目前用于实现 React 服务端渲染框架中的比较流行的一个,得力于ZEIT的维护,使得相对于其它的一些框架,不论是在文档还是配套上面,它都比较齐全。

官方就提供了learnnextjs这样的交互式入门教程,这里就不多说了(结合文档效果更好)。

既然是实战,这里就说点自己遇到的问题及解决方案,下面将问题总的划分为几个分类:

JS 方面的坑

使用jsx作为文件后缀?

一开始笔者习惯性的使用jsx作为文件后缀,发现控制台中老是报错,说是模块没有找到,这种一看就是配置问题,需要修改next.config.js中 webpack 的配置,增加extensionsjsx还有对应的babel-loader的配置,结果发现完全不起作用,看来是 next.js 中对于相关文件做了特殊的处理,目前来看只能使用*.js作为文件后缀了。

JS生成有范围伪随机数

众所周知,JS 生成伪随机数无非就是采用Math.random(),但是,如何生成一个有范围的伪随机数(整数),一般都会这么写:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/**
 * 生成一个介于 min ~ max 的随机数
 */
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

/**
 * 生成一个介于 min ~ max 的随机整数
 */
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

没错,以前我也是这么解决的(Google 一下,so easy!)。