噩耗,公司取消了O’Reilly的Safari online会员,于是为了继续阅读自由,只能自力更生解决问题。

首先官方价格还是比较贵的Safari Books Online costs $39 per month or $399 per year.,土豪直接上,穷人向下看。

网上看到有个可行方案是ACM会员25$来使用Safari,于是,我选择该方案。

ACM注册

阅读全文 »

在使用代理App时,虽然开了系统代理,但是比如iTerm2终端中还是不行。针对此问题,虽然Surge有增强模式可以解决这个,但是因为日常我需要VPN公司的原因,默认不开增强,因此需要寻求手段使得终端走代理服务。

如下即为解决方案

配置

  1. 打开bash_profile,vi ~/.bash_profile

  2. 增加如下配置

    1
    2
    3
    export http_proxy=http://127.0.0.1:6152
    export https_proxy=$http_proxy
    alias disproxy='unset http_proxy https_proxy'
  3. 变更生效
    source ~/.bash_profile

  4. 测试

    curl -i https://google.com

    5.临时禁用代理

    直接执行disproxy即可。

写在最后

阅读全文 »

对Surge的使用一直有个痛点,就是比如我想切换系统代理开关状态,或者出站规则,我需要光标移动到右上角,点击,再点击,整个操作流程一点也不高效。之前曾考虑过Apple Script操作GUI来解决问题,但是编写较麻烦。

最近刷推发现Surge Mac4.0发版了,并且提供了HTTP API支持,对于我这样一个Alfred爱好者,我看到了自动化的希望。于是快速入手,花了半小时,便实现了workflow。

资费

Surge Mac4.0,我这次没用之前的号升级license,而是选择全新购买了单设备license 39.99刀,八折活动截止11月20日

资费详情,请戳官网

阅读全文 »

在家因为有了大屏显示器,所以Mac喜欢走主机模式,不使用屏幕。但注意到假如盒盖模式,Mac本身的mic是不可用的,扬声器还可以正常使用。如果想正常的使用mic,直接切换到耳机就行,但是如果不想使用耳机呢,那问题就来了,如何外接mic?

购买mic及耳机转接线

成本如下

  1. 阿斯泛(XFAN) D1 机顶麦克风 153RMB
  2. 绿联(UGREEN)耳机麦克风一分二转接线 21RMB
阅读全文 »

最近Team成员遇到一个问题,以为是TS编译方面的问题,并且还发我一个链接-flatMap is not a function #1822

当前这个问题很好解决,这个错明显是调用函数对象不是个数组造成的,但是他却断定是TS编译,暴露了对于TS的认识存在基础的误区。为了能够DRY的讲述这些基础认知,这里总结下。

TypeScript定位

Typed JavaScript at Any Scale.

上述是官网的Slogan,由此可以知道它只是类型化了的JavaScript,也就是Type + Script。也就是TS语言本身不对最终JS运行出现的各种兼容性负责。

阅读全文 »

最近偷偷的跑到了大理,在保证工作顺利完成的同时,开启了欣赏大理、洱海的模式。

原本预期也只是欣赏美景,但因入住的客栈太过美好美妙,使得旅行中增添了很多美妙的元素,以至于,我自己临走的时候都暗下决心,下次来了还住这里

寥寥数字记录下这份美好及点赞下经营这家客栈的这些美好的人。

不是广告软文,单纯有感而发

美好的景色

阅读全文 »

惬意的一段旅行工作,花了点时间读了点闲书,其中就有这一本《高效能人士的七个习惯》。对于这七个习惯个人有自己的一点反思与想法。

Mark的同时,鼓励自己不断改进调整。

积极主动

我想自己至少在学习方面还算是主动,回忆最近的一年比较觉得有所收获的是

  1. 阅读,尤其是英文阅读的提升,其结果就是英文阅读上越来越小。
  2. 沟通,咨询,性格使然,我应该不属于闭塞的人,所以很多时候喜欢去聊,去交流,去提问,去分享。
阅读全文 »

最近工作内容有一部分是在与SQL打交道,还是遇到了点坑,这里mark下。

背景

当前系统,面对数十万的数据表进行复杂update操作会出现问题,最终采用一条条的更新方式解决

程序源码

办法见源码

阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<template>
<div>{{a.b}}</div>
</template>
<script>
export default {
data(){
return {
a:{}
}
},
created(){
this.a.b= 1
},
mounted(){
this.a.b=2
}
}
</script>

分析

  • vue会在初始化实例时对property执行setter/getter转化,所以property必须在data对象上才能转化为响应式的。so,a.b是非响应式的,视图不会刷新
  • Vue组件生命周期,created早于mouted,所以视图显示会是1
  • 这道题涵盖两个知识点,Vue的响应式原理+created与mounted生命周期区别

例子测试链接戳这里

总结

阅读全文 »

如下为一道前端试题,要求是修改代码不造成死循环

1
2
3
while (1) {
console.log(Math.random());
}

分析

首先要知道

  • JS是单线程
  • JS不存在真正意义的并行,但存在并发
阅读全文 »
0%