2018 December 31 —— improvement; life

2018 读书记录

读书总结:

读书不是简单的读过,有用的知识需要一步步掌握消化是其有过程的,思考, 阅读,消化,总结缺一不可,当前越来越体会到总结的重要性;

写作风格的意识

  • 好的风格能够确保作者想要表达的信息被正确传递
  • 风格可以后天习得,研究好的作者的表达风格,不断总结吸收.

具体见读写作风格的意识一文.

适用型阅读指南

核心: 带着问号去有目的性的搜寻知识

高效读书

明确为了什么而读书?

消遣的读书? 目的性的读书? 获取知识的读书?

目的性读书需要讲究效果,实用;

读书可以获得知识,但只有行动才能产生效果;

主动意识的力量: 大脑记忆搜寻-> 有意识的寻找记忆的碎片 -> 闭上眼睛回顾身边的某项事物的情况,睁开眼再去观察会更加清晰,就是主动意识的作用;

搜寻自己需要的知识: 28原则; => 只关注对自己重要的信息 => 问自己想从书中得到什么知识,哪一方面,进而带着问题去探索=> 脑中环绕着问题处理时大脑搜寻的效率更高,专注于自己想要的知识,书中的内容仿佛自动浮现出来一样;

非常重要的一点: 书本并没有标准的阅读方式,不是从头到尾一字不漏的阅读才叫读了这本书(个人: 通读对于梳理整体的脉络是有用的)

书中内容无需全部理解: 只要得到了自己想要的就是有收获=> 吸收那些真正重要的 => 技能型读书与 小说型读书有差异,大脑的自动补全能力;

带着输出目的的阅读更有效;

挑战同时读多本书,训练自己的大脑;

做笔记

利用思维导图做读书笔记=> 突出书中重点,同时记录自己的感想=> 读完一本书应该要有被触动的相关的一些想法

把握书中的整体层次=> 去哪一块找什么? 类似旅游的攻略,去西湖干嘛? 去黄山干嘛? 总不能去植物园找动物看吧–> 书的目录很重要

用高效的方式去整理书中知识: 思维导图是一种好的方式; -> 个人比较喜欢纸张 + 笔 + 扫描全能王(电子档),纸张给人一种随心所欲的感觉,更加符合我的思路

牢记书中内容

要有意识的去抓住书中的知识;

巩固那些对自己有用的重要知识=> 反复巩固 => 好书应该值得反复阅读

调动感情去读书 => 带着感情的阅读记忆效果更好,取悦自己的大脑

以能够向他人讲述出来为目的进行阅读,教是最好的学习方式

适当的使用便利贴很有用,泡脑子…营造满是相关内容的环境,在哪都能看到

付诸行动

知识不是读过就可以了,按照书中的方式去进行尝试总能得到一些收获

将脑袋里面的想法细化,一步步付诸行动,通常阻碍自己的最大障碍就是害怕失败 => 大胆去进行尝试;

利用书本中的知识指导自己,整理得到的想法,指导自己的生活,并付诸实践

读到了什么? 触动了什么? 设定目标去行动:

SMART :

Specific 具体的

Measurable 可预见的

Achievable 可达到的

Realistic 现实的

Time-bound 有期限的

对于设定的目标在行动过程中,要能明确当前所处的位置: 类似于对于 todo list 的一个整理过程,当前做了什么,进度多少? 还要做多少? 同步目标, 变化是无时不在的多样的

要思考自己真正的进度? 完成一半应该是怎么样? 应该达到什么样的进度? 想清楚才能量化当前的进度,才能进一步调整后续的行动=> 进而总结评估前一段时间的行动效果

整理所写的目标=> todo list 对其中重要性最需要做的进行细化: 多问自己问题? 为什么要做? 必要性是什么? 做了是什么效果,什么结果? => 确定目标进而才能细化目标 => 将目标分步进行; 为了达到什么目标,一天要做什么? 一周要做什么? 一月要做什么? 什么时候是阶段成果?

Unix 编程艺术(选读)

Part I:

第三章: Unix 哲学与比较

主要讲述操作系统的顶层设计是如何影响编程风格的上层建筑的构建形态的;如何去理解操作系统设计者的意图? 成本与编程环境的限制对设计的均衡影响;

因果论辩证能力: 为何 Unix 的生命力如此顽强?反向看待,为何Unix竞争者在时代的进化过程中被淘汰?是什么根本性劣势导致他们被淘汰? ==> 要去思考,要善于去总结

Part II :

本部分为重点核心关注章节,需要反复读,反复理解;

第四章: 模块性

模块化原则:

最佳模块大小

紧凑性与正交性

紧凑性与强单一中心? 如何构建紧凑性的设计?围绕解决一个定义明确的问题去组织算法设计;看不清的时候及时重新回到问题上来;

核心任务形式化,围绕核心-> 不停的去解决为什么要这么做的问题;力求使他人能够阅读系统设计之后不会产生疑惑,为什么要这么做?

软件的层次

正交性: 系统的任何操作无副作用,每一个动作只改变一件事,而不影响其他; 如,显示器的亮度与对比度的控制互不关联;

正交性的作用与优势;

正交性与重构的关联;

第五章: 文本化: 论协议

第六章: 透明性

第十一章: 接口

JavaScript Dom 编程艺术

第三章: DOM

Document & Object & Model

网页被浏览器加载转换形成 Document 对象;

Dom 对象代表着浏览器所加载的当前网页,浏览器将渲染所得到的网页模型提供给出来,该 网页Model 通过 Javascript 代码可以读写操作;

Dom 文档对象是一颗树形结构,也是浏览器实际会渲染的内容树;

Object 在浏览器中包含: 开发者自定义对象,Javascript内建对象,浏览器提供的宿主对象(Document/Window)

节点:

元素节点 & 文本节点 & 属性节点 : 属性节点补充元素节点的具体描述,而文本节点则表示元素节点所包含的内容;

函数: 针对 Document 的 getElementById (返回元素节点对象)以及 getElementByTagName getElementByClassName 返回对象数组;

针对元素节点对象的 setAttribute

第五章: 最佳实践

  • 较低的入门水平导致开发水平参差不齐- HTML 的开发就是典型,入门快,增长快,但同时开发质量难以得到保证.
  • 浏览器的向前兼容特性让新技术的迭代背负巨大的历史包袱—- Android 的开发同学此处有心声
  • 技术本不该背负恶名,每一项技术的诞生都有其解决问题的技术背景,但随着时间的发展,技术最终本身又无法再满足新的需求,很多人在新的时代将骂名转移到这一项在当初非常杰出的技术之上
  • javascript: 伪协议, 通过加载一个链接来调用 Javascript 函数.(这类做法在 Android 中非常常用,当用户禁用 Javascript 功能时,浏览器将什么也不发生)
  • 最佳实践之: CSS 与 HTML 分离,结构与样式分离
  • 性能优化之: 谨慎的操作 DOM 树, DOM 的操作非常重(引入虚拟 DOM 的原因)

第七章: 动态创建标记

传统的 Document.write 与 innerHtml;

Document.write 的问题在于 Controller 与 表现层的 View 混合,职责不分离,导致可读性以及扩展性的下降;

H5规范中的 innerHtml属性,属性html 内容全局替换,无法实现插入;

文档碎片: 已存在的元素节点,但该节点并不属于任何一颗 DOM 树的组成部分;

本节主要介绍了一些 DOM 相关的 API, 如何构建元素节点,文档节点,插入节点,在什么位置插入节点子类的 API, 即用即查即可;

Ajax : 异步加载页面内容,在 Ajax 诞生之前,页面刷新时需要重新加载新的页面,即使只有页面内小部分元素变化也需要重新加载整个页面;

Ajax 核心: XMLHTTPRequest 对象.借助该 JS 对象,绕过了之前的网络请求必须由浏览器发出的限制,而实现自行发起请求,同时操作网络返回.

Ajax 数据的请求只能访问与其所在 HTML 处于同一个域之中的数据,如果向其他域请求数据则出现我们通常所说的跨域问题.(这是由于浏览器安全考虑的限制问题)

Ajax 定义流程:

  • 构建 XMLHTTPRequest 对象
  • 发送请求
  • 定义 onreadystatechange 指定函数引用
  • 在 readyState 属性值之中根据请求状态去操作返回数据 (0/1/2/3/4(完成))

渐进式增强 Ajax 处理: Ajax 担任浏览器与服务端的中间人角色,对于老式请求进行拦截处理,在不支持 Ajax 的网站上则进行浏览器与服务端的原生直通;

整体逻辑上的分层架构处理,Ajax 位于常规站点之上的中间层;

第九章: CSS-DOM

网页 = 结构层(HTML/XHTML 标记语言) & 展示层 (CSS) & 行为层(JS&DOM 构建事件响应层)

常规领域的展示层的 CSS 职责领域与 行为层的领域存在灰色重叠: 某些 CSS 能够改变行为;

元素节点的 style 属性对象,提取 style 属性设置是一个比较鸡肋的设定,由于外部分离的 css 样式表无法被 style 属性获取显示;

CSS 的中划线连字符表示在 js 中变换为驼峰表示法(无论多少个连字符在 DOM 中一律变换为驼峰表示)

可以利用赋值操作来操作 style 属性的属性值,属性值通常用双引号包裹;

额外知识:

CSS 选择器与 CSS 伪类:

选择器包含: 元素通用选择器 & 标签选择器 & css Class 选择器 & css id 选择器

CSS 伪类 是添加到选择器的关键字,指定要选择的元素的特殊状态。例如,:hover 可被用于在用户将鼠标悬停在按钮上时改变按钮的颜色。

伪类是选择器选择信息的补充;

 

// addloadevent 
function addLoadEvent(func){  
        var oldonLoad = window.onload;  
        if(typeof window.onload!='function'){  
                window.onload = func;  
        }  
        else{  
            window.onload = function(){  
                oldonload();  
                func();  
            }  
        }  
} 

// onload 函数在 HTML 文档全部加载完毕,DOM结构树构建成功之后执行调用

未来世界的幸存者

世界的未来? 从 AlphaGo, 自动驾驶,到 VR 等等革命性的技术, 未来的世界,技术资源将更加重要.如何做技术资源的资本家? 需要把握什么?

消失的白领? 技术的革命将淘汰一部分职业;计算机无法取代的工作?

  • 人性化与人格魅力
  • 创造力/创意
  • 决策力/领导力

终身学习.学习计算机核心知识增强自身竞争力.应用层的东西更新越来越快,上层只是对底层只是的封装.而核心知识的更新却比较慢.终身职业越来越少,如果中间某一刻你的职业消失,你下岗了该怎么办?

失业之后的再就业如何考虑? 终身学习要到达什么样的强度才能保持自己的就业竞争力?

穷忙的一生. 社会的保障体系决定了最底层的穷人没有翻身的机会.如果对于衣食住行没有解脱,一切的活动都是为了活下去,何谈思考未来与理想?

穷忙族:每天繁忙工作也不能过上富裕生活的人.

经济增长开始放缓,社会阶层将逐步固化,过去三十年的社会阶层流动是不正常的.

大学的起源: 修道院模式.

目前社会对于大学文凭的认知远远超出想象,任何时候都不应该辍学不读大学.但是文章里面说的不应该被大学的教学范畴限定是赞同的, 应该尽早的去探索尝试,找到自己真正感兴趣的.

自主,跨界,终身学习

雇佣制: 是资本家剥削工人的制度, 社会是资方市场.

前端工程师: 低端的前端工程师将会被取代, 认清社会的发展形势与轨迹,评价自己工作的壁垒,弱化自身工作的可取代性.

骡子: 如果自己的时间每天都很忙,应该好好想想,自己是究竟在忙什么? 在公司的规划(公司期待你做的)之外,应该有个人规划, 公司只是自己人生路途中的伙伴之一,如果公司规划不能满足个人规划,应该以个人规划为重.个人的规划一定不能没有,而且越早有越好,且应该随着形势的发展而及时调整规划.切记不要用战术上的勤奋掩盖战略上的懒惰.

养老与退休怎么办?

被资本市场请退之后怎么办? 问问自己如果45岁之后没有工作了怎么办? 再就业用什么来安身立命?

人生的备用计划是什么? PlanB? 现有的工作没有了,拿什么来生活?

方法篇

关于创业?

原因? 自我雇佣,自由?

方向? 你提供什么服务? 市场竞争如何?与他人对比情况怎么样? 利润如何?

比完美更重要的是完成
快速行动,破除陈规
保持专注,持续发布

不要在功能上竞争,如果产品的核心竞争力不行那就重新定位产品,而不是不断为产品添加新功能增加产品复杂度,不断增加用户的使用成本.

寻找黄金的大坑与小铲子? 掘金之旅如何科学规划才能更有效的挖掘真正的金矿? 对于小铲子而言一个行业中深耕通常更有效.而对于大规模挖坑扩大挖坑规模也能找到表层金矿.

穷爸爸富爸爸? 资产与负债?

练习的一万小时? 异类.

软件工程师的建议? 内功/技术的本质/推销自己/领导力/推动力/执行力,那些习得成本高的能够构成自己的技术壁垒.最近自己也逐渐开始领悟这些.

每天工作的第一件事不应该是查看邮件. 为什么? 做自己觉得重要的,而不是随波逐流,浪费时间.把精力花费在真正重要的地方.如果你不知道要做什么恰好能够暴露自己没有目标,这非常重要,这是被动做与主动做的差别.

未来篇

基因编辑技术对人类整体发展的影响.

人工智能. 有人说当前的人工智能本质是统计学的高级应用.

技术的边界在哪? 技术将把人类带到何处?

人类社会: 生产力/生产资料/生产关系.未来社会中的这些各是什么?

熵的概念: 能量转换过程中浪费掉的无法再利用的能量.熵如何影响世界的发展?

卡辛斯基的警告: 论工业社会及其未来

代码之髓

核心章节: 第七章作用域

从变量的起源,为什么引入变量,到引入变量之后的问题,进一步引出作用域.进而针对作用域讨论:

从可读性与可维护性将早先的变量编号改变成了变量名称,而变量名称的引入在大型项目中就会有重名问题.如何解决重名问题?则进一步引入解决方案:

  • 复杂独立命名
  • 变量作用域

而针对作用域分为以下几种:

  • 全局作用域
  • 动态作用域

利用local声明将原有的变量存起来,在函数结束时返回.
如果在一个多个函数利用了同名变量,而函数之间存在相互调用关系,一个函数的变量改变会影响后续函数的调用变量值.

  • 静态作用域

    引入函数执行时变量对照表的概念帮助理解.动态作用域存在动态对照表与全局对照表,但存在多个函数共用对照表的问题(函数中调用另一函数,两个函数共用动态对照表), 与之相对引入静态对照表每个函数的对照表独立.且各函数对照表同级存在,如果一个变量在函数对照表中没有找到,就直接去全局对照表寻找.

进一步综合说明为什么要避免全局变量污染问题.

Python 中时如何做作用域的? JavaScript 中如何构建作用域?对比?

Python 中存在三级对照表:

  • 函数局部对照表
  • 文件全局对照表
  • 程序内置对照表

python 中函数嵌套中的外部作用域再绑定问题,嵌套函数中使用同一变量,本期望修改外部函数变量,却创建了新的函数变量副本,无法影响外部函数变量.

引入了 nonlocal 关键字.

python 中还设有 global 关键字.

Javascript 早期的动态作用域, 没有 var 标注表示全局作用域,有 var 表示则为静态作用域. (奇怪的 js)

如何学习编程

  • 从历史中学
  • 从比较中学
  • 从实践中学

从历史中学和比较中学知道我们需要注重知识的广度,触类旁通,寻找知识的共性.尽可能的多学习那些语言之间通用的知识.

通用的知识是什么? 语言知识的下沉? 语言的基础,编程的基础知识就是通用的,也就是说的回归打地基:

  • 算法
  • 软件工程思想
  • 计算机网络
  • 计算机组成原理
  • 编译原理

学习手段

  • 有目的的学习,学习自己需要的
  • 先概括的学,在细嚼慢咽慢慢学
  • 勤学苦练,勤用笔,多思考
  • 多反思回顾自己的学习,学习时每25min 回顾自己刚刚学习了什么?

看书最好不要有非读完不可的执念,能用到的知识才是有用的知识,先让自己有学习的欲望,利用目的与需求驱动自己

面向对象

对象: 现实世界物体在计算机世界中的模型

如何归纳并建立合理的计算机模型?

  • 模块/包: 典型如Perl 语言,将归纳函数的包与归纳变量的Hash 绑定在一起
  • 函数与变量放入Hash 散列中,典型如 JavaScript
  • 闭包,典型如函数式编程语言

JavaScript 中的 first Class 一等公民,firstclass 代表不受限制,可以赋值给变量,也可以作为函数参数,还能作为函数返回值返回的值称为一等公民. 如 Java 中的 String. js 中的函数也是一等公民.

归纳的属性可以进一步公有化,将共有属性放入原型中共享,js 的委托原型链,js 中的 new 运算符,如在函数f前执行new 运算符将发生以下操作:

  • 创建对象x
  • 将新建对象x 的原型变成函数f 的原型
  • 将新建对象x 传给 this ,执行函数 f 的内容
  • 返回对象x

闭包的学术表达: 包含了自由变量的开放表达式,和自由变量的约束环境组合在一起之后,实现了一种封闭状态.

跃迁

高手的暗箱

知识的来源更广,如何搜寻获取并调用有效的知识,比记忆知识更重要.

自我跃迁-> 认知跃迁 -> 能力跃迁

让大脑做大脑应该做的,不重要的技能进行外包管理.

当下广泛存在的三种问题:

  • 无法掌控自己注意力
  • 无法过滤信息找到重点
  • 不理解系统,无法与陌生人联机协作的人

高手的战略

深刻理解投入产出比. 五个领域的 80% 与一个领域的 95%的对比.

深刻理解二八效应

头部效应: 个体的发展符合大趋势,加速更快. 随着系统进行正反馈,构成正向循环.

能提提升要素: 好的方法论,刻意练习,大量实践.

好的方法论需要练习实践总结得到符合自身的最佳.大量实践需要有实践的机会.实践机会本身是正向反馈的一环.在头部中有更多机会去做,做好了,有进一步的挑战去做.

取势,明道,优术.

收益不仅与个体相关,业余站位相关.如果不知道干什么,那么先定立一个目标,进入你能进入的头部. 与卓越同行,感受脉动.

没有先发优势如何借力打力,借助头部优势 放大自身的优势 非常重要.

个人的选择: 逆人性, 从价值出发而不是从优势出发,选择那些高价值的事情.不要因为一件事情容易才去做,而要因为事情有价值才去做.不要因为便宜而买一件东西,而要因为值得买,买回来有价值才去买.切记本末倒置.人类的天性在于先易后难,因而这种选择本身逆人性.

先锁定价值区域,再去想如何创造优势,而不是在自己优势的限定范围内去寻找价值

思考时先不要考虑这件事情能不能做,应该先考虑应不应该做,有没有做的必要性,如果确定一定要做.那么进一步去思考可行性,想办法去推动执行.大部分的技术领域需求都是可行的.

永远不要在热门领域随大流. 利用差异化竞争,找到自己的核心优势用心打磨核心优势.

OODA 循环: 观察/调整/决策/行动

不要关注不属于你的机会,眼高手低,不属于自己的赛道不参加.找到能帮助当下破局的战略才是有意义的.

小公司一个萝卜一个坑,不要局限了自己的眼光,要向外看,竞争对手是全行业.

如何深耕建立护城河? 专注

灵感无法刻意练习,找到那些可以迭代的,刻意练习,保持专注,构建自己的护城河.

专注 + 迭代

联机学习

从知识的源头获取信息的能力.— 英语的重要性以及构建自己贴近知识源头的探测系统.

功利读书系统: 根据目的去做,目标导向,有即时反馈系统.

问题比答案更有效 — 把问题准确定义出来,就解决了问题的一半.

焦虑的来源: 学习的效率比不上遇到问题的速度导致问题越来越多.构建问题树,理出问题解决的范式.

如何提问?

  • 不做伸手党,问题的指向目标应该清晰
  • 好问题应该是组合拳
  • 持续的输出答案

破局思维

 复杂问题

局就是系统,局中的各种问题层出不穷,如何破局解决系统问题是核心.

系统越庞大,复杂度越高 — 正如软件系统的核心词汇复杂度.

生活中的无解问题: 轮回问题,陷入僵局无法破解,跳出轮回.

改变: 第一序改变: 内在状态改变/ 第二序改变: 模式的改变. 轮回问题无解只在第一序无解,需要升维解.

认知系统不一样,无法争论出结果,有些人无法意识到就无法被说服.

关于系统科学: 研究复杂系统的内在特性.系统由元素/关系/功能组成.关系之间的解构不变,系统结果不变,第二序的改变是改变系统结构.

细分-分析: 工业化时代核心思想,复杂的事情可以拆分成各个部分的组合来完成.核心如: 工厂流水线的发明.这种思维方式:

如果一个事情除了问题,最好的解决方式是增加或替换一个元素,如果方法短期有效,那长期也有效.

细分-分析法 与 系统分析法对比:

对于简单独立系统,细分还原理论可以很好的解决, 但对于大型系统,尤其存在子系统关联性问题是,却通常难以拆分细化,只有跳出局,改变模式才能很好的解决.

增长引擎:

  • 好习惯: 是否能形成正循环闭环;
  • 知识 IPO : 通过思考,解决问题输出产品,并输出自己的思考结果;知识工作者的循环模式.
  • 企业管理的 信-任循环. 相信-任命-相信-任命….

识别增长引擎还是死亡螺旋:

增长引擎都是远期目标,远期收益大.而死亡螺旋则是近期收益大,短期感受好.当短期体验很舒服时,应该警惕,提醒自己思考长期来看失去了什么?

搭建正循环系统,破坏负循环系统,切断自毁线路.

学习一些自增长的技能.如:

  • 读写能力,好的读写能力接触更多的好资料反过来进一步强化读写.
  • 英语能力: 够用,在日常中多用,常用.
  • 解决问题的能力

层级

目标/方法论/投入资源

勤奋的境界: 战略上的勤奋才是最终目标,想的足够清晰,足够了解个中关系.

理解多层系统的运作,当某一层无解,则跳出该层.

控制点

如何更好的掌控复杂系统?

  • 理解系统的运行,系统目标的细化,多层部署控制点.
  • 单点可控: 做一个掌控者,将精力放在系统内部: 能力> 难度 > 努力 > 运气; 尽力而为,成功失败天注定.
  • 多层布点,层层可控: 在系统中要控制向目标前进的路径需要设置几个关键点,也就是控制点,类似画弧线时的几个控制点,进而连接点形成弧形.

所谓成熟,就是理解了世界的复杂性,不再要求一味的走直线,在路线问题上,拥抱折线,而在最终结果上保持专注.

失控的系统:

  • 思维惯性
  • 困在底层: 当问题在一个层面失控,则进一步重新定义问题.
  • 过于封闭

终身学习

见读 “终身学习”

程序是怎样跑起来的

见读 “程序是怎样跑起来的”

程序员的自我修养

Reading

HeadFirst 软件开发

待总结

Effective JavaScript

见核心摘要

了不起的 NodeJS

Node 入门书籍,比较浅显,适合入门,主要讲一些常用模块的使用,老手没必要读

HTML5 与 CSS3 权威指南(上)

HTML5 与 CSS3 权威指南(下)

上一篇
下一篇
Loading Disqus comments...
Table of Contents