0%

今天在网上看到一篇文章JavaScript数据操作–原始值和引用值的操作本质,
我觉得写得很好,刚好学习一下,补补漏。

原始值不管是赋值还是函数参数传递,都不会改变原值,引用值不管是赋值还是函数参数传递,只要新变量被覆盖,就不会影响原值,如果是对新变量直接修改,就会改变原值。

这句话怎么理解呢?我是这么理解的:原始值是值得复制,将原始值复制给了一个新的变量。引用值呢,只要新变量和引用值之间的引用关系断掉了,那么新变量的改变不会影响原值,因为操作的不是同一个地址中的数据呀。什么情况会造成引用关系断掉呢?就是给新变量赋了一个新的值。

以前博客通过github page搭建的,访问速度不快,就想着搭建在自己的服务器上。虽然服务器只是 1 核 1 G 的,但是还是能跑很多应用的。

nginx配置

博客设置了3个域名访问,配置如下:
/etc/nginx/conf.d/blog.conf

1
2
3
4
5
6
7
8
server{
listen 80;
server_name www.ltinyho.top blog.ltinyho.top ltinyho.top;
root /home/ltinyho/project/ltinyho.blog.io;
location / {
index index.html;
}
}

sudo nginx -s reload 成功访问

本来想用docker-compose 启动nginx服务的,但是出现nginx出现connet fail 111错误,应该是docker网络的问题,一时搞不定。
待以后好好学习下docker。

启动webhook服务

基本思路就是hexo deploy时,生成的静态网站会push代码到博客仓库,触发webhook,调用配置的wehook url,执行git pull,拉取最新的代码。

碰到的问题

我的代码仓库是放在mac的移动硬盘上的,创建的脚本文件默认有777的权限,而且用chmod不能更改,但是在服务器上的脚本没有执行权限。
解决方法是在mac的系统盘上增加脚本的执行权限。

其中webhook服务我是用docker跑的,但是在docker里面不能执行宿主机的脚本。看到过一种解决方案,使用ssh登录宿主机,然后执行脚本。
我的方案是启动了一个deploy服务,然后请求这个服务执行对应的脚本。注意,这个deploy服务不能使用docker跑,要不然还是一样不能执行宿主机的脚本。
我使用pm2启动deploy服务,执行对应的脚本。注意设置pm2启动的服务开机自启动。

今天在gitchat上看的一篇文章,(从工程师到技术管理,我和研发团队如何在9个月内实现逆袭)[http://gitbook.cn/books/59007357ff8adf3464a00028/index.html]。
里面谈到很多关于团队和个人发展的问题。作者作为一个空降领导,如何融入团队,了解团队工作、团队成员,推动项目的进行,为下属争取晋升和利益。将团队打造成利益共同体,统一团队目标。从繁杂的琐碎的业务工作抽身出来,将更多的时间放在研发上,技术推动业务的发展。

文章中提到技术驱动,作者的观点是:

首先,所有的公司从根本上都是业务驱动的,我们看到的技术驱动是因为其业务本身就是技术。正因如此,研发团队需要认清自己的定位,从一般意义上的需求实现者转变为业务的合作伙伴——要关注业务的运营。而这个定位也要明晰研发(或技术)所具备的优势,而这些优势不但可以预防业务过度关注短期利益而损害长期的机会,而且可以帮助业务构筑效率和新模式上的竞争优势,从这个角度,技术可以反推业务前进,实现驱动力。

特别赞同从业务的实现者转为业务的合作者。

作者还提到研发的优势在于工具、数据和模型,可以将优势应用于业务和研发自身,包括:

  • 提供工具简化操作
  • 提供自动化,提高业务效率
  • 通过数据发现问题和机遇,为业务决策和优化提供依据。
  • 通过模型和工具使决策本身自动化

上面一、二两点对我来说比较好理解,三、四两点没有太大的概念和手段。

总结

什么是优秀技术管理者最需要关注的呢?我觉得是成事的能力,而这种能力中,除去一定的技术能力外,情商和做事方法是至关重要的方面。
技术管理者需要建立起业务和研发的高效生产和反馈闭环,在实践中,不但要将自己和团队的定位从需求实现者转变为业务的合作伙伴,更甚至成为亚马逊那样的客户至上的践行者。
技术管理者要建立良好的服务意识并长期关注效率。

不同的企业文化和制度中,有些严格,它们强调帮助个体明确目标、限制惰性,或激发个体的内在驱动力,而有些则更为舒适,期望给创造性的工作一个宽松的环境。
做为技术管理者,必须担负起人员培养的责任,为了帮助团队成员成长,适当挑战甚至严格要求是必须的,甚至有时出于对团队和当事人负责,迅速解决能力不适合的团队成员也是必须的。尤其对于后者,有些敏捷教练的那种不抛弃不放弃的鸡汤文化真是相当幼稚。《从优秀到卓越》就严格有很好的论述,而网上很多探讨“严格是大爱”的文章写得也很到位。总的来说,优秀的技术管理者对于严格的看法,要有”以雷霆手段,显菩萨心肠“的觉悟。

stack

dequeue

priority-queue

优先队列

1
2
3
4
5
6
7
8
9
10
11
12
13
let isAdded = false
for(let i=0;i<queue.length;i++){
if(element.priority< queue[i].priority){
items.splice(i,0,element)
isAdded = true
break
}
}

if(!isAdded){
items.push(element)
}

circular-queue

循环队列

1
queue.enqueue(queue.dequeue)

今天看了gitchat上的文章,做做笔记。

文章:

学习的三个维度

学习 = 学 + 习

学是容易获得成就感的,实践相对来说更枯燥一些,光学不练的学习都是假学习。

学习 = 动机 + 内容 + 交互

增强动机

学习之前先思考一下:

  • 为什么学呀
  • 学了可以干啥
  • 不学会怎样啊

动力不足的话可以先YY一下,学成之后的情景。这样可以增强自己的冬季,也可以避免盲目的学习。

精选内容

「N 手知识」概念?

一手知识来自于一线专家,通过和他们交流,或者读他们的论文来学习。
二手知识是发明某个理论的专家亲自写的书。
三手知识是其他人读了专家的书之后翻译成大家都能懂的语言的畅销书,或者培训师通过故事案例来传递的知识。
四手知识是某些人为了实现某种目的而写的免费文章,常常断章取义。

要看自己更容易消化哪种知识,在不同的阶段,是不一样的。

适合自己的知识才是最好的

联机交互

在完成知识的原始积累的情况下,跟他人讨论学习。

学习的效率

效率 = 收益 / 资源

高效学习,不是指高效率学习,也不是快速学习,而是高效益。
学习的效益等于获得收益除以投入的资源(时间、金钱、精力)。

放大收益

学习做产品,把自己的能力包装成产品,卖给更多的人,卖的更贵。

学习一下写作、演讲和培训通用的技能,不管的那个领域的知识,都可以通过写作、演讲和培训来放大收益。

匹配资源

针对不同的学习材料,需要投入的时间和精力是不一样的。
学习材料分级:认知型,知识型,娱乐型。

  • 认知型 适合精力充沛时花整段的时间来学习的知识,比如:编程、数学、英语
  • 知识型 适合精力较好,碎片化的时间,阅读一些知识型的材料,比如:产品、消费者心理学
  • 娱乐型 适合饭后,晚上精力比较差,时间也比较碎时浏览的内容,比如:社交媒体、博客订阅

总结

增强动机:

  • 列举正在学习的一项技能的愿景、价值和规条
  • 列举兴趣清单
  • 记录问题清单

精选内容:

  • 尝试读一篇论文
  • 找到编程领域的知识源头
  • 联机交互:

梳理联机学习者清单

  • 尝试组织或参加一次私董会
  • 加入 1 个学习社群

放大收益:

  • 开始写文章发布到简书
  • 列举输出渠道清单
  • 发布一场 GitChat

匹配资源:

  • 明天尝试早起学习
  • 将书架上的书分成认知型、知识型、娱乐型三类

8小时之外如何成长:

  • 端正自己的心态,学到的都是自己的,好相处
  • 知其然,更要知其所以然,工作可以先完成,后面还是要搞懂为什么
  • 主动发现问题并解决
  • 跟上公司的发展,提前学习