跳至主要内容

产品随想 | 读《精通以太坊——实现数字合约》 Mastering Ethereum


快速术语表

  • 断言 Assert
    在 Solidity 中,assert(false) 编译为 0xfe, 是一个无效的操作码,用尽所有剩余的燃气(Gas),并恢复所有更改。 当 assert() 语句失败时,说明发生了严重的错误或异常,你必须修复你的代码。 你应该使用 assert 来避免永远不应该发生的条件。

  • 去中心化应用 DApp
    去中心化应用 Decentralised Application. 狭义上,它至少是智能合约和 web 用户界面。更广泛地说,DApp 是一个基于开放式,分散式,点对点基础架构服务的 Web 应用程序。另外,许多 DApp 包括去中心化存储和/或消息协议和平台。

  • 以太坊虚拟机 EVM
    Ethereum Virtual Machine, 基于栈的,执行字节码的虚拟机。在以太坊中,执行模型指定了系统状态如何在给定一系列字节码指令和少量环境数据的情况下发生改变。 这是通过虚拟状态机的正式模型指定的。

  • 燃气 Gas
    以太坊用于执行智能合约的虚拟燃料。以太坊虚拟机使用会计机制来衡量天然气的消耗量并限制计算资源的消耗。参见“图灵完备”。 燃气是执行智能合约的每条指令产生的计算单位。燃气与以太加密货币挂钩。燃气类似于蜂窝网络上的通话时间。因此,以法定货币进行交易的价格是 gas (ETH /gas)(法定货币/ETH)。

  • Gavin Wood
    Gavin Wood 是英国的程序员,以太坊的联合创始人和前 CTO。在2014年8月他提出了Solidity,用于编写智能合约的面向合约的编程语言。

  • 图灵完备 Turing Complete
    在计算理论中,如果数据操纵规则(如计算机的指令集,程序设计语言或细胞自动机)可用于模拟任何图灵机,则它被称为图灵完备或计算上通用的。这个概念是以英国数学家和计算机科学家阿兰图灵命名的。

第一章 什么是以太坊

  • 从计算机科学的角度来说,以太坊是一种确定性但实际上无界的状态机,它有两个基本功能,第一个是全局可访问的单例状态,第二个是对状态进行更改的虚拟机。

  • 与具有非常有限的脚本语言的比特币不同,以太坊被设计成一个通用可编程区块链,运行一个_虚拟机_,能够执行任意和无限复杂的代码。比特币的脚本语言故意被限制为简单的真/假消费条件判断,以太坊的语言是_图灵完备的_,这意味着它相当于一台通用计算机,可以运行理论图灵机可以运行的任何计算。

  • 一些参考文献
    以太坊黄皮书: https://ethereum.github.io/yellowpaper/paper.pdf
    褐皮书”:为更广泛的读者以不太正式的语言重写了“黄皮书”: https://github.com/chronaeon/beigepaper
    ÐΞVp2p 网络协议: https://github.com/ethereum/wiki/wiki/ÐΞVp2p-Wire-Protocol
    以太坊状态机 —— 一个“Awesome”资源列表 https://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List
    LevelDB 数据库 (最经常用于存储区块链本地副本): http://leveldb.org
    Merkle Patricia Trees: https://github.com/ethereum/wiki/wiki/Patricia-Tree
    Ethash 工作量证明共识算法: https://github.com/ethereum/wiki/wiki/Ethash
    Casper 权益证明 v1 实现指南: https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide
    Go-Ethereum (Geth) 客户端: https://geth.ethereum.org/
    Parity 以太坊客户端: https://parity.io/

  • 以太坊的突破性创新是将存储程序计算机的通用计算架构与去中心化区块链相结合,从而创建分布式单状态(单例)世界计算机。以太坊程序“到处”运行,但却产生了共识规则所保证的共同(共识)状态。

  • 在世界计算机中,滥用资源的程序会滥用世界资源。如果以太坊无法预测资源使用情况,以太坊如何限制智能合约使用的资源?
    为了应对这一挑战,以太坊引入了称为 燃气 _gas_的计量机制。随着EVM执行智能合约,它会仔细考虑每条指令(计算,数据访问等)。每条指令都有一个以燃气为单位的预定成本。当交易触发智能合约的执行时,它必须包含一定量的燃气,用以设定运行智能合约可消耗的计算上限。
    ——需要Gas机制的原因

第2章 以太坊基础

  • 事实上,加密货币功能是服务于以太坊作为世界计算机的功能; 一个去中心化的智能合约平台。以太旨在用于支付运行的 smart contracts,这是在称为_Ethereum虚拟机(EVM)_的模拟计算机上运行的计算机程序。
    ——讲的有点绕

  • EVM是一个全球性的单例,这意味着它的运作方式就好像它是一个全球性的单实例计算机,无处不在。以太坊网络上的每个节点运行EVM的本地副本以验证合约执行,而以太坊区块链记录此世界计算机在处理交易和智能合约时变化的 状态。

  • 我们在MetaMask钱包中创建的账户类型称为 Externally Owned Account(EOA) 。外部所有账户是那些拥有私人密钥的账户,它控制对资金或合约的访问。现在,你可能猜测还有另一种帐户,_合约_帐户。合约账户由以太坊区块链记录,由EVM执行的软件程序的逻辑所拥有(和控制)。

第3章 以太坊客户端

  • 流行的移动钱包包括Jaxx,Status和Trust Wallet。我们列举这些作为流行手机钱包的例子(不是对这些钱包的安全或功能的认可)。

第4章 以太坊测试网(Testnets)

  • 测试网络(简称testnet)用于模拟以太网主网的行为。有一些公开的测试网络可以替代以太坊区块链。这些网络上的货币毫无价值,但它们仍然很有用,因为合约和协议变更的功能可以在不中断以太网主网或使用真实货币的情况下进行测试。

  • Proof-of-Authority 是一种协议,它只将造币的负载分配给授权和可信的签名者,他们可以根据自己的判断并随时以发币频率分发新的区块。

第5章 密钥,地址

  • 这些类型的密码学证明是以太坊和大多数区块链系统的关键数学工具,广泛用于以太坊应用。讽刺的是,加密并不是以太坊的重要组成部分,因为它的通信和交易数据没有加密,也不需要加密以保护系统。
    ——着实讽刺

第6章 钱包

  • 在较高层次上,钱包是作为主要用户界面的应用程序。钱包控制对用户资金的访问,管理密钥和地址,追踪余额以及创建和签署交易。另外,一些以太坊钱包还可以与合约(如代币)进行交互。

  • 狭义上讲,从程序员的角度来看,“钱包”一词是指用于存储和管理用户密钥的系统。每个“钱包”都有一个密钥管理组件。对于一些钱包来说,这就是全部。其他一些钱包是更广泛类别的一部分,即“浏览器”,它是以太坊去中心化应用或“DApps”的接口。在“钱包”这个术语下混合的各种类别之间没有明确的区别。

  • 关于以太坊的一个常见误解是以太坊钱包包含ether或代币。实际上,钱包只包含密钥。ether或其他代币记录在以太坊区块链中。用户通过使用钱包中的密钥签署交易来控制网络上的代币。从某种意义上说,以太坊钱包是一个 钥匙串 keychain

第7章 交易

  • 看待交易的另一种方式是,它们是唯一可触发状态更改或导致合约在EVM中执行的东西。以太坊是一个全球的单实例状态机器,交易是唯一可以让状态机“运动”,改变状态的东西。合约不会自行运行。以太坊不会在后台运行。一切都始于交易。

第8章 智能合约

  • 以太坊有两种不同类型的账户:外部所有账户(EOAs)和合约账户。EOAs由以太坊以外的软件(如钱包应用程序)控制。合约帐户由在以太坊虚拟机(EVM)内运行的软件控制。两种类型的帐户都通过以太坊地址标识。在本节中,我们将讨论第二种类型,合约账户和控制它们的软件:智能合约。

  • 计算机程序:智能合约只是计算机程序。合约这个词在这方面没有法律意义。 不可变的:一旦部署,智能合约的代码不能改变。与传统软件不同,修改智能合约的唯一方法是部署新实例。 确定性的:智能合约的结果对于运行它的每个人来说都是一样的,包括调用它们的交易的上下文,以及执行时以太坊区块链的状态。 EVM上下文:智能合约以非常有限的执行上下文运行。他们可以访问自己的状态,调用它们的交易的上下文以及有关最新块的一些信息。 去中心化的世界计算机:EVM在每个以太坊节点上作为本地实例运行,但由于EVM的所有实例都在相同的初始状态下运行并产生相同的最终状态,因此整个系统作为单台世界计算机运行。

  • 重要的是,如果合约只有被交易调用时才会运行。以太坊的所有智能合约均由EOA发起的交易执行。合约可以调用另一个合约,其中又可以调用另一个合约,等等。但是这种执行链中的第一个合约必须始终由EOA的交易调用。合约永远不会“自行”运行,或“在后台运行”。在交易触发执行,直接或间接地作为合约调用链的一部分之前,合约在区块链上实际上是“休眠”的。

  • 合约的代码不能更改。然而合约可以被“删除”,从区块链上删除代码和它的内部状态(变量)。要删除合约,你需要执行称为 SELFDESTRUCT(以前称为 SUICIDE )的EVM操作码,该操作码将区块链中的合约移除。该操作花费“负的gas”,从而激励储存状态的释放。以这种方式删除合约不会删除合约的交易历史(过去),因为区块链本身是不可变的。但它确实会从所有未来的区块中移除合约状态。

  • 智能合约给程序员带来了很大的负担:错误会花费金钱。因此,编写不会产生意想不到的影响的智能合约至关重要。要做到这一点,你必须能够清楚地推断程序的预期行为。因此,声明式语言在智能合约中比在通用软件中扮演更重要的角色。不过,正如你将在下面看到的那样,最丰富的智能合约语言是命令式的(Solidity)。

第9章 开发工具,框架和库

第10章 Tokens

  • 单词_Token_来源于古英语“tacen”,意思是符号或符号。常用来表示私人发行的类似硬币的物品,价值不大,例如交通Token,洗衣Token,游乐场Token。

第11章 去中心化应用 (DApps)

  • 智能合约用于存储去中心化应用程序的业务逻辑,状态和计算; 将智能合约视为常规应用程序中的服务器端组件。

  • 在以太坊智能合约上部署服务器端逻辑的一个优点是,你可以构建一个更复杂的架构,智能合约可以在其中相互读取和写入数据。部署智能合约后,未来许多其他开发人员都可以使用你的业务逻辑,而无需你管理和维护代码。

  • 由于gas成本高,智能合约目前不适合存储大量数据。因此,大多数DApps将利用去中心化存储(如IPFS或Swarm)来存储和分发大型静态资产,如图像,视频和客户端应用程序(HTML,CSS,JavaScript)。

第12章 Oracles

  • 许多区块链应用程序需要访问外部信息。这就是oracles发挥作用的地方。可以将Oracles定义为离线数据的权威来源,允许智能合约使用外部信息接收和条件执行 - 它们可以被视为弥合链上链下之间鸿沟的机制。允许智能合约根据实际事件和数据强制执行合约关系,大大扩展了其范围。可能由oracles提供的数据示例包括:
    来自物理来源的随机数/熵(例如量子/热现象):公平地选择彩票智能合约中的赢家
    与自然灾害相关的参数触发器:触发巨灾债券智能合约(对于飓风债券来说的风速)
    汇率数据:将稳定币与法定货币准确挂钩
    资本市场数据:代币化资产/证券的定价篮子
    基准参考数据:将利率纳入智能金融衍生品
    静态/伪静态数据:安全标识符,国家/地区代码,货币代码
    时间和间隔数据:事件触发器以精确的SI时间测量为基础
    天气数据:基于天气预报的保险费计算
    政治事件:预测市场决议
    体育赛事:预测市场决议和幻想体育合约
    地理位置数据:供应链跟踪
    损害赔偿:保险合约
    其他区块链上发生的事件:互操作函数
    交易天然气价格:gas价格oracles
    航班延误:保险合约

第13章 gas(Gas)

  • Gas是以太坊用于衡量程序执行一个或一组动作所需计算量的单位。交易或合约执行的每项操作都需要一定数量的gas; 所需的gas数量与正在执行的计算步骤的类型和数量有关。与仅以千字节(kB)计算交易规模的比特币交易费相比,以太坊交易费必须考虑智能合约代码可以执行的任意数量的计算步骤。程序执行的操作数越多,运行完成的成本就越高。

  • 虽然gas有价格,但它不能“拥有”也不能“花”。gas仅存在于以太坊虚拟机(EVM)内部,作为计算工作量的计数。发起方被收取ether交易费,然后转换为gas,然后转回到ether,作为矿工的块奖励。这些转换步骤用于将计算的价格(与“工作量”相关)与ether的价格(与市场波动相关)分开。

第14章 以太坊虚拟机

  • 实际处理内部状态和计算的协议部分称为以太坊虚拟机(EVM)。从实际角度来看,EVM可以被认为是包含数百万个对象的大型去中心化计算机。

第15章 共识

  • 共识度量是可测量的数据,区块链网络的节点必须在该数据上达成一致,以便为每个块中包含的数据创建并保持一致。在区块链技术中,每次将新块添加到链中时,每个网络节点都会测量并批准一致性度量。作为共识度量的结果,区块链充当了从一个确定可验证的事实延伸到下一个事实的真理链。由于共识度量,区块链协议的节点变为 迷你公证人 mini-notaries,能够从真实的节点中立即分辨出区块链的错误副本,并将该事实报告给整个网络。这些措施是必需的,以便阻止通过提交包含虚假信息的区块来欺骗网络不良行为者。由于一致性度量,区块链不仅创建了的完整性,而且长期保持不变。共识度量有多种形式,但对于此讨论而言,最重要的两种是基于风险的度量和基于工作量的度量。

  • 授权证明(PoA)是PoS一致性算法的子集,主要由测试网和私有或联盟网络使用。在基于PoA的区块链中,交易有效性最终由一组经批准的链上账户确定,称为“授权节点”。确定授权节点的标准是通过网络治理结构中编写的方法确定性地决定的。

第16章 Vyper: 面向合约的编程语言

第17章 节点间的通信 —— 一个简单的视角

第18章 Appendix A: 以太坊标准

第19章 以太坊分叉历史

Popular posts from 产品随想的博客

产品随想 | 周刊 第128期:将时间转化为知识和体验

自行车棚效应:我们为什么在小事上纠结,却对大事视而不见?   https://limboy.me/posts/bike-shedding Benz-Patent   https://www.mercedes-benz.com/en/innovation/milestones/benz-patent-motor-car/ 豐田博物館   https://toyota-automobile-museum.jp/tw/ 值得一去的汽车博物馆 一人公司   https://github.com/cyfyifanchen/one-person-company one-person-company, 一人公司 AI 工具系列 wujiaxian   https://wujiaxian.com/ 可能吧创始人的个人Blog,介绍自己的方式,很值得学习 日本京都10大設計熱點!「建築大師貝聿銘操刀美術館,皆川明設計旅館、選物店,還有全球最美的藍瓶咖啡店舖!」   https://www.elle.com/tw/life/style/g33846398/2020-kyoto-10-hotspots/ 京都真是非常美 Henry L. Stimson   https://en.wikipedia.org/wiki/Henry_L._Stimson?useskin=vector While Kyoto may have satisfied the military criteria for a useful target, Stimson objected, declaring in a meeting if the Interim Committee on June 1, 1945, "...there was one city that they must not bomb without my permission and that was Kyoto." 人性的努力保护了京都 Brooke Astor, 105, Aristocrat of the People, Dies   https://www.nytimes.com/2007/08/14/obituaries/14astor.html 值得尊敬...

产品随想 | 周刊 第127期:晨光只开一刻钟,但比千年松,并无甚不同

Cherry Studio   https://github.com/CherryHQ/cherry-studio Cherry Studio is a desktop client that supports for multiple LLM providers. Support deepseek-r1 Aalto Repository beta   https://repo.aalto.fi/ Images, sounds and videos from Aalto University 这个系列,价值极高 Nokia Design Archive   https://nokiadesignarchive.aalto.fi/ 芬兰这个国家很了不起 对话影石刘靖康:两代未出现划时代的产品,就会沦为平庸的品牌   https://www.geekpark.net/news/308996 还挺喜欢这个创始人的,有一种海盗的内涵 从哈佛、明星创业者到酷家乐副总裁,苏奇的传奇   https://app.modaiyun.com/mdy/article/3FO4K4W0M259 WHO关于猫狗咬伤、抓伤的处理建议 动物咬伤: https://www.who.int/zh/news-room/fact-sheets/detail/animal-bites 狂犬病: https://www.who.int/zh/news-room/fact-sheets/detail/rabies 关于狂犬病的10个事实: https://www.who.int/zh/news-room/facts-in-pictures/detail/rabies INDIGO 新年直播(2025)   https://www.youtube.com/live/ZIgPvSDGAfY 对2024年AI发展的回顾部分特别好 Artab   https://github.com/get-artab/artab Get Inspired by the World's Greatest Artworks Every Time You Open a New Tab. Extension Available for Chrome, Edge, and...

MongoDB学习笔记

这是我阅读《MongoDB权威指南》的学习笔记,前七章侧重在开发者角度谈MongoDB,后面才是运维管理者角度 一. 理论部分 入门 文档:多个键及其关联的值有序地放置在一起便是文档 集合:一组文档 虽然子集合没有特别的地方,但还是很有用,很多MongoDB工具中都包含子集合 GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容块分开了 MongoDB的Web控制台通过子集合的方式将数据组织在DBTOP部分 绝大多数驱动程序都提供语法糖,为访问指定集合的子集合提供方便。例如:在数据库shell里面,db.blog代表blog集合,db.blog.posts代表blog.posts集合 在MongoDB中使用子集合来组织数据是很好的方法,在此强烈推荐 数据类型 JSON表现力也有限制,因为只有null,布尔,数字,字符串,数组和对象几种类型, MongoDB保留JSON键值对基础上,增添了其他一些数据类型 使用GridFS存储文件有如下原因: 会直接利用业已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都很容易 可以避免用户上传内容的文件系统出现的某些问题 不产生磁盘碎片,因为MongoDB分配数据文件空间以2GB为一块 开发者角度到此为止,下一篇是运维角度的学习

无处不在的监控: Hacking Team:WP8 监控代码分析

原文来自乌云,备份 地址 0x00 背景 最近Hacking Team被黑客入侵,近400GB的资料泄漏,在安全界炒的沸沸扬扬.其中泄漏的资料包括:源代码,0day,资料入侵项目相关信息,相关的账户密码,数据及音像资料,办公文档,邮件及图片。 Hacking Team在意大利米兰注册了一家软件公司,主要销售入侵及监视功能的软件。其远程控制系统可以监测互联网用户的通讯,解密用户的加密,文件及电子邮件,记录各种通信信息,也可以远程激活用户的麦克风及摄像头。其产品在几十个国家使用 在源代码中有各个操作系统平台的远程控制软件源码, RCS(Remote Control System) 。经过我们的分析,发现其监控内容不可谓不详尽。 Android,blackberry,ios,windows,window phone,symbian 均有与之对应的监控代码。 在源码中,rcs为前缀的源码文件是其远控功能,包括代理 控制 监控数据库 隐藏ip 等,而针对特定平台架构的是以core前缀命名。其中和相关window phone监控代码在 core-winphone-master.zip 文件中。其主要用于实时手机系统的系统状态信息如(电池状态,设备信息,GPS地址位置),联系人,短信记录,日历日程安排,照片;同时还能录音,截取手机屏幕,开启摄像头,话筒等功能,由此可见监控信息的详细程度令人害怕。 0x01 WP8监控源码分析 core-winphone-master\MornellaWp8\MornellaWp8 下是其主要核心代码,主要文件如下: 通过观察源码流程图可以看出,整个监控项目源码的逻辑还是比较复杂的,但是深入之后,发现其还是设计的比较巧妙 0x01-1 程序框架分析 1.项目主要分为3大块 Modules,Events,Actions ,主要的功能Modules核心监控代码在此处,Event等待监控事件的到来并调用对应的监控模块,Action主要负责一些行为的启动和停止 程序启动流程如下: main->mornellaStart->BTC_Init->CoreProc->Core->Task setLoadLibraryExW 分支主要负责加载一些API函数的地址,...

产品爱好者周刊 第26期:PRISM, XKeyscore, Trust No One

  Products Gitea - Git with a cup of tea   https://gitea.io/en-us/ A painless self-hosted Git service. 自建Git服务,避免GitHub隐私侵犯 https://github.com/objective-see/LuLu LuLu is the free macOS firewall 监视Mac的出站流量,且阻断 OverSight   https://github.com/objective-see/OverSight OverSight monitors a mac's mic and webcam, alerting the user when the internal mic is activated, or whenever a process accesses the webcam. 监视是否有应用调用Mac的麦克风、摄像头 Mozilla Hubs   https://github.com/mozilla/hubs The client-side code for Mozilla Hubs, an online 3D collaboration platform that works for desktop, mobile, and VR platforms. 开源的多人虚拟空间,Mozilla打造,企业级VR诉求 数字移民   https://shuziyimin.org 关于内容源、工具的推荐,适合刚接入国际的新人 SimpleLogin   https://simplelogin.io/ 匿名邮箱工具,转发用,Michael Bazzell推荐 Telegram 群组、频道、机器人 - 汇总分享   https://congcong0806.github.io/2018/04/24/Telegram/#机器人-bot https://archive.ph/iJMBj 献给那些将来到Telegram的朋友 Design Patrick Wardle   https://www.instagram.com/patrickwardle/?hl=en 他的IG,摄影也精彩,审美...

ifconfig参数备忘

       主要指标说明: eth0/lo:网络接口名 Link encap:网络类型

产品随想 | 读《中国是部金融史》:第三章至第五章

  第三章 犯我货币者,虽强必诛(汉高祖一汉武帝) 刘邦大概没有想到,他的土地政策奠定了此后两千年的社会结构:皇帝是社会最高层,具有至高无上的权力;皇帝之下是三公九即等封建官僚,拿皇帝的钱,逐级管理小农;最底层是万千小农,他们对帝国纳税,用自己的血汗钱养活帝王与封建官僚。此后,中国封建社会结构始终没有摆脱“皇权一封建官僚一小农”这个三位一体的窠臼。 既然消灭了异姓王,正常思维应该是仿效秦始皇强化郡县制,但是这位平民皇帝选择了…条谁也想不到的道路,他分封自己的兄弟子侄为王,并与诸王约定,此后非我子孙称王,天下人都可以杀了他(非刘氏而王者,天下共击之)。刘邦亲眼目睹了秦帝困的分崩离析,危急时刻无人愿意支撑起破败的帝国。华竟,官僚靠薪水吃饭, 就算贪污的本事很大,也没有理由维护别人的一姓天下。 如果没有血浓于水的同姓诸侯王,汉帝国将来同样无法应对真正的危机。事实证明,分封刘氏诸王是对的,如果没有刘邦留下来的同姓诸侯,恐怕汉朝早就得跟着皇后吕雉姓“吕”了。 人们习惯于将刘邦的皇后吕雉称呼为“吕后〞,这是中国古代历史上第一位临朝称制的太后,另外两位要等到盛唐和晚清才能在本书中出镜,三位女强人都是中国货币史上浓墨重彩的人物。 然而,从吕雉开始,仅仅不到一个世纪, 破败的汉帝国就一跃变为当时世界上最强盛的国家,直接把打遍天下无敌手的匈奴骑兵赶到了西欧,让罗马帝国受尽了欺凌。吕后末年,西汉单个农业劳动力的原粮产量已经突破了三干四百斤,这不但是西欧一干五百年后的劳动生产率,也远高于1973年中四的劳动生产率(二千二百四十斤)。应该说,中西文明争霸就是从汉帝国驱赶匈奴开始的,在第一轮交锋中,西欧完败。 ──原来西汉能超过1978年,厉害 吕雉坚决执行了一项前无古人(后有来者)的税收政策—“十五而税一”,换算一下,吕雉时代庶人个人收入所得税税率为 6.6%,而且,没有累进税率。 《二年律令》彻底改变了中国历史的发展轨迹,秦人以军功授田,刘邦以服兵役为代价授田,只有到了吕雉才真正实现了全困范用的“均田“。这是中国历史上第一次以法律形式明确了土地私有制度,每一个最普通的庶人都获得了土地,整个社会实现了孟子的“百亩之田、五亩之宅”理想。这是无数先贤追求的大同世界梦想一“耕者有其田”,请注意,我没有说这是“耕者有其田"的雏形,而是实实在在的“耕者有其田"。 ──对汉朝,充满敬...

常用建筑素材站点

高大上的建筑竞赛效果图中的素材是如何收集的回答,感谢知乎 Vincent Ku 以下是之前搜寻过的素材网站,应该这些够用了 http:// skalgubbar.se/ http:// skalgubbrasil.tumblr.com / http://www. immediateentourage.com/ http://www. gobotree.com/ http://www. mrcutout.com/ http://www. cutoutlife.com/ http://www. nonscandinavia.com/ http://www. escalalatina.com/ http://www. mayang.com/textures/ind ex.htm http://www. textures.com/ ===== 感谢知友 @SJTUboy 补充 http:// maps.stamen.com/# watercolor/12/37.7706/-122.3782 http:// maps.stamen.com/m2i/# toner-background/2000:2000/10/31.1674/121.6063 作者:Vincent Ku 链接:https://www.zhihu.com/question/31584353/answer/73642305 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

The Little MongoDB Book

The Little MongoDB Book 基础 在一个MongoDB实例中可以有若干数据库或一个都没有,不过这里的数据库都是高层次容器,用来储存其他的所有数据 一个数据库可以有若干集合或者一个都没有, 集合由若干文档组成,也可以为空 文档由一个或更多的域组成 索引的意义 游标和以上概念不同,很重要但是常常被忽略,有一点很重要,每当向MongoDB索要数据时,总是返回一个游标 小结一下,MongoDB由数据库组成,数据库由集合组成,集合由文档组成。域组成了文档,集合可以被索引,从而提高了查找和排序的性能。最后,从MongoDB读取数据的时候是通过游标进行的,除非需要,游标不会真正去作读的操作 读到后面觉得实战意义不是很大,就跳过了

产品随想 | 周刊 第126期:Think of your life as a rainbow arcing across the horizon of this world

FolderPaint   https://github.com/MichaelTr7/FolderPaint Folder colour changing application for macOS. 乔布斯说:“对于我和苹果公司的许多人来说,索尼的盛田昭夫是最大的灵感来源之一。我希望我们今天的所想所为能让他会心一笑。” 乔布斯甚至从索尼挖走了一位顶级设计师。哈特穆特·艾斯林格被苹果挖走前,已在 100 多种索尼产品的创造中发挥了重要作用。 供职于索尼时,艾斯林格所在的设计工作室与管理办公室和工厂车间享有同等地位。他说,这样有助于促进公司生产和设计团队之间在一定程度上达成团结,这正是乔布斯试图重建的团结。 艾斯林格指出:“乔布斯有能力洞察事物的好坏,却不知道如何实现以及如何通过组织去构建。因此,我们向苹果提出的第一个建议是,赋予设计师一定的话语权。” 斯卡利表示,乔布斯和盛田之间的深厚友谊和相互敬重可以归结为对于设计的共同热忱。 “他们以非常积极的方式产生了共鸣”,斯卡利说,“两位来自不同文化背景的创始人共聚一堂,这是非常难能可贵的。他们讨论设计原则,却从不谈及商业模式。” “Think of your life as a rainbow arcing across the horizon of this world. You appear, have a chance to blaze in the sky, then you disappear.” City Lights Bookstore   https://en.wikipedia.org/wiki/City_Lights_Bookstore?useskin=vector 旧金山的城市之光独立书店 Vesuvio Cafe   https://en.wikipedia.org/wiki/Vesuvio_Cafe?useskin=vector 好奇怪,这家Cafe居然没有太多的介绍 “One of the things that I was fortunate of was to see and understand the context of San Francisco through the eyes of Steve Jobs,” Mr. Ive said. “He kn...