XCode 升级到 XCode10.3 项目报错

报错信息:
Failed to find or create execution context for description ‘<IBCocoaTouchPlatformToolDescription: 0x7fe0ddceada0> System content for IBCocoaTouchFramework-ElevenAndLater <IBScaleFactorDeviceTypeDescription: 0x7fe0dd8606b0> scaleFactor=2x’. These intermediate objects were non-nil: (

Read More

Bagikan Komentar

Flutter StatefulWidget 的性能陷阱

前言

对于万物皆Widget的Fultter,同样的事情一般都有多种控件可以实现,太多的选择总是会让人陷入或多或少的选择纠结症和对性能的忧虑上。

初次接触Flutter,首先必然要面对的两座大山:StatelessWidget & StatefulWidget。 而在这两个控件的选择上,大部分人给出的解释就是:“就像他们的名字一样,无状态静态的视图展示使用StatelessWidget,而有交互,需要动态变化的使用StatefulWidget.”

这样的解释正确,但过于模糊,似乎StatelessWidget出现的地方均可以用StatefulWidget来代替,于是为了后期可能的变化、为了coding简便,StatefulWidget被滥用变成了很容易发生的事情。

所以今天我们就详细聊一下StatefulWidget和StatelessWidget的区别和使用。

Read More

Bagikan Komentar

Mac OSX终端走shadowsocks代理

shadowsocks设置为:

  • 打开shadowsocks
  • 自动代理模式
  • 服务器(香港阿里云)

zsh作为说明

1
~ vim ~/.zshrc

添加如下代理配置:

1
2
3
\# proxy list
alias proxy='export all_proxy=socks5://127.0.0.1:1080'
alias unproxy='unset all_proxy'

Read More

Bagikan Komentar

Oraclize--DApp与互联网交互

区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作。例如,按照农产品价格情况来支付投保人赔款的农产品价格险保单。传统IT人员一般认为是如下的流程:智能合约会在预定的时间,从期货交易场所获取农产品价格,然后按照获取的数据采取预设的行动。听起来很简单,但却不可能实现。为什么呢?因为这里存在两个问题,一是共识问题,二是受信任方问题。

一、共识问题

区块链是基于共识的系统,只有在每个交易和区块处理过后,并且每个节点达到相同状态,智能合约才能正常运行,所有事情必须是精确一致。如果节点之间对数据状态有歧义,整个系统就无法可信稳定运行了。在上面的案例中,智能合约由链上的每个节点独立执行,因此如果智能合约从外部服务获取数据的话,这个数据获取过程是由各节点重复和独立完成的,假设这个区块链有100个节点,那么就会有100条获取数据的请求从每个节点发送到期货交易场所,但是因为这个数据来源于区块链外部,价格是实时波动的,由于网络延迟、节点处理速度等各种原因,每个节点获取的并不是同一时刻的价格,输入到智能合约的价格数据也就不同,因此对应的各节点智能合约输出也会不同,在这种情况下,整个区块链的信任基础就会崩溃,无法达成共识。

解决的方法其实很简单,不通过智能合约发出外部数据获取指令,而是由第三方发送一笔区块链交易,在交易中附加需要的数据,交易会将数据嵌入区块,并同步到每个节点,从而保证数据的完全一致,因此可以用于智能合约的计算中。总结就是由第三方将数据推送进区块链,而不是由智能合约将数据拉取进去。

同样的问题一样发生在智能合约调用外部世界事件的情况。还是上面的例子,很多人会想象价格到预定目标,智能合约去调用期货公司的API接口,实现卖出期货的功能,从而锁定保单风险,但是如果每个节点都独立执行智能合约,那么应该由哪个节点去调用这个API呢?如果选择某个节点去执行,但是如果该节点发生故障了,无论是不是故意的,怎么保证其可靠性呢?而选择全部节点去完成API调用的话,是否每个节点都可信,怎么保证API密码的安全呢?况且一个API同时被多节点高并发频繁调用也是不合适的。

解决方法参考上面的问题,智能合约不需要获取外部API,而是第三方实时监控区块链状态,然后做出相应的反馈。例如,合作的期货交易所实时监控区块链,然后根据链上的交易情况做对应的资金转移,这样就不会对区块链共识产生威胁。

二、受信任方问题

Read More

Bagikan Komentar

BIP32, BIP39, BIP44

BIP 全名是 Bitcoin Improvement Proposals,是提出 Bitcoin 的新功能或改进措施的文件。可由任何人提出,经过审核后公布在 bitcoin/bips 上。BIP 和 Bitcoin 的关系,就像是 RFC 之于 Internet。

BIP32, BIP39, BIP44

HD Wallet虚拟货币钱包里面使用的就是这些东西 ,包含其设计动机和理念、实作方式、实例等。
  • BIP32:定义 Hierarchical Deterministic wallet (简称 “HD Wallet”),是一个系统可以从单一个 seed 产生一树状结构储存多组 keypairs(私钥和公钥)。好处是可以方便的备份、转移到其他相容装置(因为都只需要 seed),以及分层的权限控制等。

  • BIP39:将 seed 用方便记忆和书写的单字表示。一般由 12 个单字组成,称为 mnemonic code(phrase),中文称为助记词或助记码。例如:

Read More

Bagikan Komentar

Centos7 安装 cmake 3.0+

当我们做一些应用的时候编译报错cmake 版本过低,Centos7上面默认cmake版本为2.8.11版本很低。

升级cmake

cmake 源文件下载地址

官网传送门

qq%e6%88%aa%e5%9b%be20161026105808

Read More

Bagikan Komentar

安装insight

安装insight

insight地址 :https://insight.is/

环境

  • Node v6.11.3
  • ZeroMQ v4.04

安装ZeroMQ

安装编译环境 sudo yum groupinstall -y “Development tools”

1
2
3
4
5
6
7
8
wget http://download.zeromq.org/zeromq-4.0.4.tar.gz  
tar zvxf zeromq-4.0.4.tar.gz
cd zeromq-4.0.4
./configure
make
sudo make install
ln -s /usr/local/lib/libzmq.so.3 /usr/lib/
ldconfig

安装bitcore-node

我全局怎么也安装不上,只能这么装了。。

1
2
3
4
5
npm install bitcore-node
./node_modules/bitcore-node/bin/bitcore-node create mynode
./node_modules/bitcore-node/bin/bitcore-node install insight-api
./node_modules/bitcore-node/bin/bitcore-node install insight-ui
./node_modules/bitcore-node/bin/bitcore-node start
Bagikan Komentar

OC 循环引用(Retain Cycle)

什么是循环引用?就是两个或多个对象之间,都是强引用,且对象之间的引用形成了一个环状结构。导致对象最终无法释放,造成内存泄露。

Read More

Bagikan Komentar

iOS 11 安全区域适配

导语:本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结。内容包括五个部分:问题的原因分析、adjustContentInset属性的计算方式、什么情况下的tableView会发生内容下移、有哪些解决方法、解决这个问题时遇到的另外一个小问题。

Read More

Bagikan Komentar

Go examples

Go by Example

Hello World

我们第一个程序就是打印经典的“hello world”,下面是完整的代码

1
2
3
4
5
package main
import "fmt"
func main(){
fmt.Println("hello world")
}

要运行这个程序,将代码保存为 hello-world.go,然后使用go run

有时候我们想让程序编译成二进制文件,可以使用go build,然后就可以直接运行了。

Read More

Bagikan Komentar