0%

经常受困于 GitHub clone 速度过慢的问题,之前有很多号称加速 github 的方法都不是很有效。现在发现一个亲测有效的方法,记录一下。

打开 hosts 文件

1
$ sudo vim /etc/hosts

在文件末尾添加以下三行:

1
2
3
4
5
192.30.253.112     github.com

151.101.72.133 assets-cdn.github.com

151.101.193.194 github.global.ssl.fastly.net

搞定,现在开始享受飞速的 github 体验。

原型链是 JavaScript 里面很基础的概念,面试中和工作中也经常遇到,但是有的时候用起来还是会犹豫一下。尤其是存在继承关系的时候,有时候搞不清楚对象的原型是谁,这里来结合实验详细的梳理一下。

假设我们有一个 Person 类(构造函数)

1
2
3
4
class Person {		
foo () {
}
}

我们用 new 操纵符构造一个新的对象 person

1
let person = new Person()

那么 person 对象和 Person 的原型链是什么样的呢

  1. person.__proto__ 指向 Person.prototype

  2. person.constructor 指向 Person 类,因为该对象的构造函数就是 Person

  3. person.constructor.prototype 也就是 Person.prototype

  4. Person.prototype.constructor 指向 Person 自己

  5. Person.constructor 指向 Function

  6. Person.__proto__ 指向 Function.prototype

    至此,Person 类和它的实例对象的原型链基本分析完毕了,接下来我们顺着这条链一直走到底来看一下。

  7. Person.prototype.__proto__ 指向 Object.prototype

  8. Object 实例对象的 constructor 指向 Object.prototype.constructor

  9. Object.prototype.__proto__null

下面上一张完整的图,看了这张图,对 js 的原型链就可以一目了然了

构造函数原型链

总结下就是:

  1. 实例对象的 __proto__ 指向类(构造函数)的 prototype
  2. 实例对象的 constructor 指向类(构造函数)本身
  3. 类(构造函数)的 __proto__ 指向父类或者 Functionprototype
  4. Function 的基类是 Object
  5. 特别的 Object.__proto__ 指向一个空函数
  6. 特别的 Object.property.__proto__null

0x00 盒模型

盒模型分为两种,标准模式和怪异模式,他们的定义如下:

标准模式: (box-sizing: content-box)
padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和,即 ( Element width = width + border + padding )

怪异模式: (box-sizing: border-box)
padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度,即 ( Element width = width )

怪异模式是 IE 5.x 6.x 中的标准盒模型,虽然叫做怪异模式,但是这种模式的布局模型更符合我们的直觉,所以一般都会将 box-sizing 属性设置为 border-box

Read more »

牛熊证(CBBCs)

牛熊证(合约),全称为 可收回牛/熊证(合约)(Callable Bull/Bear Contracts/Certificates)。牛熊证和窝轮很相似,是一种具有期权性质的金融衍生工具,属于结构化金融产品的一种,它的价格和标的资产的价格挂钩。

牛熊证最早于 2001 年产生于欧洲和澳大利亚的金融市场,香港联交所于 2006 引入了这种新型的投资产品,之后牛熊证在香港证券市场的成交量迅速上升,形成了与窝轮分庭抗礼的局面。目前牛熊证在欧洲和香港的交易十分活跃,受到投资者的热烈追捧。

![63943](https://ws3.sinaimg.cn/bmiddle/006tNc79ly1fmnmkd14omj30ja0sktel.jpg)

一只香港联交所上市的牛证

Read more »

金融衍生工具(Derivative)是一种特殊类别买卖的金融工具统称。这种买卖的回报率是根据一些其他金融要素的表现情况衍生出来的。比如资产(商品,股票或债券),利率,汇率,或者各种指数(股票指数,消費者物價指數,以及天气指数)等。这些要素的表现将会决定一个衍生工具的回报率和回报时间。衍生工具的主要类型有期货,期权,权证,远期合约,掉期交易等,這些期货,期权合約都能在市場上買賣。

对此类金融工具进行买卖投资者需要十分谨慎,因为由其引起的损失有可能大于投资者最初投放于其中的资金。同时由于其本身并不代表任何资产,其买卖也不应该被视作投资。

Read more »

最近升级到 macOS 10.13 之后,执行 pod 命令报错:

1
/usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory  

发现是 10.13 里面系统预装的 ruby 版本变成了 2.3,于是之前安装的 cocoapods 就找不到之前的 2.0 版本了,重装一下即可解决。

1
gem install -n /usr/local/bin cocoapods

最近做了一个在 iOS 平台下提示用户网络异常的功能,许久没有做 iOS 原生需求了,接手这个需求后感觉 iOS 的坑也越来越多了。

这种需求很常见,首先分析一下这里指的网络异常包括,飞行模式、Wi-Fi 和蜂窝网络都被关闭、Wi-Fi 连接状态下应用的 Wi-Fi 权限被关闭,只有蜂窝连接的情况下应用蜂窝权限被关闭。

对这些情况的处理里程图如下:

下面把整个流程中的实现方法和需要注意的坑讲一下。

Read more »

进入股票二级市场投资到现在也一年有余了,其中 A 股投资一年多,港股的投资也进行了半年有余,一年来也从一个股都不知道该怎么选的菜鸟变成了一个每日盈亏浮动三四千都波澜不惊的老股民。我最近总是和朋友讲,这一年来学习了很多,也成长了很多。其实这不是一句笑谈,除了在公司这个优秀团队中给自己带来的技术和社会阅历成长之外,投资也让我看到了充满欲望,贪婪,恐惧的脆弱人性。经过这段不长不短的投资之后,我觉得有必要将每日的操作进行记录,并阐述操作的理由,让自己能够更清晰的知道操作中存在什么问题,什么样的操作是合理的,什么样的操作又是由于脆弱人性或者盲目跟风导致的,希望对自己和看到的人都能有帮助。

Read more »

这是一个配置教程,关于 karma 和 jasmine 的知识请参考 karma docjasmine doc

开始之前先看一下我们的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
├── angular-cli.json
├── config.xml
├── ionic.config.json
├── node_modules
├── package.json
├── resources
├── src
├── tests
├── tsconfig.json
├── tslint.json
├── typings
├── typings.json
└── www

这是一个直接使用 ionic-cli 创建的 ionic3.x 项目

Read more »