跨域与同源策略问题
什么是同源策略同源策略(SOP same origin policy)指的是,两个网页的协议、域名和端口都相同。 但 Windows RT IE 是例外的,对它而言,端口号并不是同源策略的组成部分之一。 同源策略的变化同源策略最初的要求是,同源的网页才能打开同源网页下的 cookie。cookie 实际上是一种对浏览器用户总是可见,但对 javascript 代码不总可见的内容。 同源策略大多数关于读,而且同源总能用沙箱解释但现代的同源策略起了轻微的变化: 为了网络安全,浏览器为每一个“源”(Origin)都创建了一个独立的、互不干扰的沙箱环境。您可以把每个沙箱想象成一个独立的“安全屋”,里面存放着属于这个源的所有资源:它的 DOM 结构、数据存储(localStorage 等)以及运行的脚本。 同源策略就是这个沙箱模型的核心规则:一个沙箱里的脚本,不能随意访问另一个沙箱里的任何资源。 限制存储和当前页面的资源DOM 访问限制当一个页面(如a.com)通过<iframe>嵌入另一个不同源的页面(如 b.com)时,浏览器实际上是创建了两个独立的沙箱。 a.com的 ...
Echart 词汇表
emphasis n 强调roam 漫游scatterplot 散点图effectscatter 特效散点
以太坊为什么不适合拿来做联盟链?
联盟链必然要求多个账户系统存在,联盟中的每个节点都必须独立保存自己的私钥,则在当前的 gas 系统限制下,每个账户必须有自己的ether存款。 是不是允许多头出块?如果允许多头出块,则各个账户可以预先prefund或者在网络启动的时候充钱,不必考虑货币流通性问题。但多头出块的缺点是,不可抵挡分叉。而且,实际上极有可能还是存在货币流通性问题。 不允许多头出块,则必须由我们自己的中心账户来出块,我们自己来出块的话,其他账户发起合约请求需要的货币需要定期从我们的中心账户提取出来。 如果可以用强一致性的协议来预先持久化所有的写消息,也许可以靠监控把错误恢复过来,当然这也对业务产生了强依赖,业务的写操作必须是可以通过类似反幂等的方式恢复过来的。这就是把Raft分布式强一致性协议当做一个分布式的WAL来用了。ES 不适合拿来当这个 WAL,因为它不是强实时写的。
以太坊与随机数问题
值得注意的几篇文章: 这个 reddit 上的帖子里提到了 RANDAO 其实是不够安全的,但下面 RANDAO 的作者又出来说这个东西被它改进过了。 这个话题下面还有人引了 Vitalik 的一篇博客。 randao的实现。基本上就是用一个dao 的方式(Decentralized autonomous organization)来运行一个匿名先知组织。这个设计思路和 Vitalik 谈到的用先知而不是全上链的版本来运行智能合约的对比基本一致。 vdice 自己的博客里也提到了用未来的块hash来生成随机数是不安全的,他们直接使用了oraclize。改天要分析下它们所谓的“200行的安全的codebase”。
健康闲谈-健康管理和疾病预防
健康是一种身体上、精神上和社会上的完美状态。 — 世界卫生组织健康定义 养生三大原则: 和谐原则 辩证调摄 “度”和“量”的适当掌握-充分进行综合调养 和谐原则-“天人相应”理论和自然界相适应。情志养生。 辩证调摄-因人、因时、因地制宜每个人都不同。不要乱吃补品。疲劳的时候吃清淡的。运动可以发泄身体的郁闷。 “度”和“量”的适当掌握-充分进行综合调养碳水化合物是很重要的。吃蛋白质尿酸高。太操劳?知道寒暑冷热。不要运动过度。 四季养生 运动养生起居养生精神养生环境养生饮食养生睡眠养生 不要喝高汤里的嘌呤不要一哄而上吃流行的 合理的饮食适量运动戒烟戒酒心理平衡充足睡眠 未病先防欲病早治已病防变
学习区块链的基础资料
《猥琐发育成区块链开发者》普林斯顿的《Bitcoin and Cryptocurrency Technologies》课程《精通比特币(第二版)》
几种共识算法
达成共识的英文原文是 come to consensus。达成共识以后,也未必代表数据是完全一致的(Raft 算法中 leader 发出 append log 的 commit 命令即算达成共识?但如果中途数据丢失,则还是会有子节点数据不一致)。 在分布式环境下,多个系统协同工作的效率,受制于系统交叉点的性能。在需要达成分布式共识的场景下,分布式共识算法在保证系统安全性的同时,限制了全系统横向扩展的性能提升。 根据环境的不同,可以应用不同的共识算法。 在完全互信的环境下-私有链、私有的分布式数据库,节点之间可以使用 Paxos 或者 Raft 这种 leader 相对固定的算法。 在有限互信的环境下-联盟链,可以使用 PBFT。PBFT 算法是依据确定性的投票(可能是漫长的投票,也可能进入死循环)达到确定性一致的算法。 在没有互信的情况下-公有链,可以使用 POW/POS/DPOS/POA。这类算法是基于概率得到正确的最终一致性,性能比 PBFT 要稍微好点。 最好的共识算法应该模块化,例如 Corda 中的 notary,Hyperledger fabric 中的 solo/k...
Vue 值得注意的小知识点
this.$el.querySelector(‘#map’) 只能查找第一个 dom 以内的 dom 节点,不包括当前的 dom。 在 webpack:// 这个域下可以看到可调式的 vue 文件。
Spark Standalone 模式启动的全过程
把这个事情做成一个小 routine,免得以后每次都要看英文文档来搭 dev 环境 准备工作下载安装包,解压并进入根目录。 ./sbin/start-master.sh。看 jps 果然已经有了一个 Master 进,文档里面说会打印出 spark 的 master url,但没打印出来。就去默认的http://localhost:8080上看即可: 12URL: spark://magicliang:7077REST URL: spark://magicliang:6066 (cluster mode) 这个6066在本地 telnet 不通,也是很神奇。 把这个 URL 拼接成 worker 的启动命令./start-slave.sh spark://magicliang:7077,然后可以看到以下这张图: 文档里的给出的定义 worker 节点的方法:在 Spark 根目录下定义一个 conf/slaves 的文件,每一行写一个主机名。如果这个文件不存在(就是我们现在这个状况),则 worker 就会全部启动在 localhost 上。而 master 是通过 ssh ...
DAG 执行框架优于 MapReduce 的地方在哪里?
有个同学问我什么是 DAG 框架。我感觉隐隐约约听过,但又讲不清楚它的概念。 上网搜了一下,我们常见的新大数据执行框架如 Spark、Storm,还有一个我没听过的 Tez,都算 DAG 任务执行框架。他们的主要优点是,可以用 DAG 事先通晓整个任务的全部步骤,然后进行转换优化。如 Tez 就可以把多个任务转换为一个大任务,而 Spark 则可以把相关联的 Map 直接串联起来, 免得多次写回 hdfs(看来 hdfs 也很慢)。传统的 MapReduce 框架为什么不能理解这种优化空间的存在,在任务运行的时候好像一个盲人一样,是个很有意思的话题。 Quora 上的一个相关的问答。