跳到主要内容

为什么选择 PWA?

· 阅读需 2 分钟

PWA 代表渐进式网页应用。早在 2014 年,W3C 发布了服务工作者的草案,随后在 2015 年,Chrome 在生产环境中支持了它。如果我们将服务工作者的出现视为 PWA 的核心技术之一,那么 PWA 的诞生年份就是 2015 年。在关注 PWA 是什么之前,让我们先了解一下我们为什么需要它。

  1. 用户体验。回到 2015 年,前端开发者花费大量时间通过加快初始页面的渲染、使动画更流畅等方式来优化网页。然而,在用户体验方面,原生应用仍然占据优势。

  2. 用户留存。原生应用可以固定在手机的主屏幕上,并通过通知将用户带回应用,而网页应用则无法做到这一点。

  3. 利用设备 API。Android 和 iOS 提供了丰富的设备 API,原生应用可以轻松在用户许可下使用。然而,当时浏览器并未完全支持这些 API。

谷歌的教程 为什么构建渐进式网页应用 将这个问题总结为“广泛覆盖,低参与度”。

网站与原生应用的 UV 和用户时长比较

为了应对移动时代网页应用的劣势,PWA 应运而生。

什么是 PWA?

· 阅读需 4 分钟

当谷歌提出 PWA 时,并没有一个精确的定义。它不是一种特定的技术,而是一种组合技术,旨在改善用户体验。这些技术包括 Web 应用清单、服务工作者、网络推送等。

PWA 的主要特性如下:

  • 可靠性 - 即使在不稳定或断开的网络环境中也能快速加载。
  • 用户体验 - 响应迅速,具有流畅的过渡动画和用户操作反馈。
  • 粘性 - 像原生应用一样,可以添加到主屏幕并接收离线通知。

PWA 本身在两个方面强调了 渐进性

  1. PWA 仍在不断发展;
  2. PWA 向下兼容且不具侵入性。开发者使用新特性几乎没有成本 - 开发者可以逐步将其添加到现有网站中。

谷歌的 "渐进式网络应用检查表" 定义了 PWA 的最低要求。

  • 通过 HTTPS 提供服务。
  • 页面在桌面、平板和移动设备上应具有响应性。
  • 所有 URL 在断开连接时应有内容显示,而不是默认的浏览器页面。
  • 需要将 Web 应用清单添加到桌面。
  • 页面加载更快,延迟更短,即使在 3G 网络上。
  • 在所有主要浏览器中正确显示。
  • 流畅的动画和即时反馈。
  • 每个页面都有自己的 URL。

PWA 的特性

PWA 结合了网络应用和原生应用的优点,给我们带来了以下特性。

  • 渐进性 - 适用于所有浏览器,因为它是在考虑渐进增强的情况下开发的。
  • 连接无关 - 能够利用服务工作者实现离线或低网络连接。
  • 原生体验 - 基于应用外壳模型,应该具有原生应用的交互。
  • 持续更新 - 始终保持最新,没有版本或更新问题。
  • 安全性 - 通过 HTTPS 提供服务。
  • 可索引 - 清单文件和服务工作者可以被搜索引擎识别和索引。
  • 粘性 - 通过推送离线通知等,可以让用户回到您的应用中。
  • 可安装 - 用户可以轻松将网络应用添加到主屏幕或桌面,而无需前往应用商店。
  • 可链接 - 通过链接分享内容,无需下载和安装。

更具体地说,PWA 相较于原生应用的优势是什么?开放性和可索引性。用户几乎无法即时安装原生应用,也无法无缝搜索原生应用。

下表展示了传统网络应用、原生应用和 PWA 在各个特性上的比较。

可安装可链接用户体验用户粘性
传统网络应用
原生应用😐✅️
PWA

重写 Facebook.com

· 阅读需 4 分钟

Facebook 从最初的 PHP 服务端渲染网站发展至今已经 16 个年头,Web 开发的外部环境已经是沧海桑田,在老构架上开发新 Feature 的成本也越来越高。为了得到“App 的体验”以及卓越的性能, 他们用 React 和 Relay 重写了整个主网站,基于两个原则 —— “尽可能少尽可能早”、“提升开发体验以服务用户体验”。

将这两个原则应用到四个主要元素 (CSS,JavaScript,数据,导航) 上,得到如下经验

  1. 改进 CSS
    1. Atomic CSS: 使用 Build 时生成的原子类 CSS 将首页的 CSS 减少 80% - 因为这种 CSS 的条目的数量接近 log N——样式的总量是随着独特的样式增长的,而不是跟着代码里面写的样式和 feature 的数量增长的。我们 Uber 就使用的 Styletron 来做这件事情。
    2. CSS-in-JavaScript: 用类似于 stylex.create({}) 这种方法来为组件生成 Style,跟组件放到一起,以增加可删除性,让样式更容易被维护。
    3. 统一使用 rem 让缩放的时候体验更好, Build 时自动将 px 转化成 rem.
    4. 使用 CSS 变量实现黑暗模式
    5. 使用 HTML 内嵌 SVG 作为图标,解决图标延迟渲染的一闪问题
  2. 分拆 JavaScript 以优化性能
    1. 增量式加载代码,把 500 KB 的总代码,分成 50KB Tier 1,150KB Tier 2, 300KB Tier 3,分别对应骨架内容、首屏内容 、非 UI 内容,然后按需加载。
    2. 只在需要的时候加载实验代码
    3. 根据数据加载相应的代码,比如图片数据加载图片组件、视频数据加载视频组件
    4. 给 JavaScript 的大小做预算,严格监视代码尺寸的变化
  3. 尽早载入数据
    1. 预加载:用 Relay 能够立马知道首屏所需要的数据,在下载代码的同时,也 stream 这些数据
    2. 用 stream 的方式减少 round trips
    3. 延迟加载现在不需要的数据
  4. 定义路由 map 以加速导航
    1. 尽早获得路由的定义
    2. 尽早预先获取资源,在 hover 或者 focus 的时候就开始了,导航变化之后,如果还没有加载完,先用 React Suspense transitions 保留当前页面,只有加载完之后才真正切换。这样就能跟标准的浏览器体验保持一致。
    3. 并行下载代码和数据。通常是先下载代码再下载数据,这样是串行的;FB 让数据和代码在一个 round trip 里面同时下载。

如何不死?

· 阅读需 7 分钟

以正确的方式饮食可以显著影响你的健康。听到来自不同来源的各种建议,你可能会很难判断哪一个最有帮助。书籍《如何不死》提供了八个由科学研究支持的实用建议,帮助你建立健康的饮食习惯。

采用植物性饮食

植物性饮食已被证明对健康的积极影响远超美国社会中的其他食物。一项中美-康奈尔-牛津研究项目研究了 1980 年代中国人的饮食。研究发现,贵州省在 65 岁以下男性中冠心病的死亡率最低,而那里的人们消费的动物性食物最少。

此外,植物性饮食可以促进患者的康复。生活方式医学的先驱纳森·普里提金和迪恩·奥尔尼什将患有晚期心脏病的患者置于植物性饮食中,随后他们见证了症状显著改善。例如,患者动脉中的有害斑块溶解的速度比平常快。

多吃水果,尤其是浆果

每天四份水果,其中包括一种浆果,是健康饮食的关键。每天多吃一份水果已被证明可以使慢性阻塞性肺病的可能性降低 24%。值得注意的是,浆果对肝功能、抗癌和免疫系统的积极影响尤为重要。在 2014 年的一项研究中,14 名患者在食用黑覆盆子九个月后,发现其息肉负荷显著下降。

蔬菜不可或缺

蔬菜在预防疾病方面发挥着至关重要的作用。被称为“绿叶之王”的羽衣甘蓝可以降低人们的胆固醇水平。在 2008 年进行的一项为期三个月的研究中,高胆固醇患者每天被要求饮用三到四杯羽衣甘蓝汁。益胆固醇的比例显著增加,相当于跑步 300 英里的效果。此外,十字花科蔬菜有助于增强肝脏和肺部功能。

因此,建议每天五份蔬菜中有两份应为绿叶蔬菜(例如羽衣甘蓝、芝麻菜和瑞士甜菜)。另外两份可以是胡萝卜、甜菜或蘑菇。最后一份应为十字花科蔬菜,如西兰花、卷心菜或花椰菜。

每餐推荐豆类和全谷物

美国癌症研究所建议每餐应包含豆类或豆科植物,因为它们含有无动物成分的蛋白质和纤维。海军豆和斑豆也是降低不良胆固醇的良好替代品,适合不喜欢大豆的人。它们还可以减缓糖的吸收并放松胃部。与豆类类似,人们每天应摄入三次全谷物。2015 年的研究发现,饮食中包含全谷物的人寿命更长。

多吃坚果和种子以获得更好的营养

在 1990 年至 2010 年间进行的全球疾病负担研究发现,摄入过少的种子和坚果是全球死亡和残疾的第三大饮食原因。即使是一份巴西坚果也相当于降胆固醇药物的效果。坚果和种子有助于排毒多余的铁。它们还可以增强骨密度。在所有种子中,推荐奇亚籽、麻籽、南瓜籽、芝麻和葵花籽。它们是日常餐点中调味酱和沙拉酱的绝佳替代品。

在食物中加入香草和香料

香草和香料不仅可以为菜肴增添风味,而且在预防疾病(尤其是癌症)方面也至关重要。在所有食物中,它们的抗氧化剂含量最高。在 2010 年进行的一项研究中,服用藏红花的阿尔茨海默病参与者的认知功能结果优于服用安慰剂的参与者。此外,丁香和肉桂等香料可以因其抑制的酶而减轻抑郁。

值得一提的是,姜黄被证明是所有香草和香料中预防癌症效果最好的。由于姜黄迅速消失,与黑胡椒一起食用可以减缓这一过程并帮助吸收。咖喱粉是一个不错的选择,因为它通常含有胡椒和姜黄。然而,姜黄并不适合所有人。患有胆结石和肾结石的人应限制其摄入。

让水成为首选饮品

理论上,人类每天应饮用五杯 12 盎司的饮料,而纯水始终是最佳选择。许多文章声称每天喝八杯水是必须的,但几乎没有科学证据支持这一点。我们的每日水分摄入不仅来自饮料,还来自水果和蔬菜。

除了水,咖啡和茶也可以是不错的替代品,因为它们在某种程度上都有益于健康。例如,塔夫茨大学进行的研究显示,茶在降低血压方面发挥了显著作用。

四步搞定理性决策

· 阅读需 5 分钟

普通人在生活和工作中做决策机会并不多,也很难有机会练习和提高自己的决策水平。大多数人的决策靠直觉,而理性的决策靠流程。《决断力》一书提出了理性决策的四步流程 —— 为了提高做出最佳决策的概率,我们需要 1.拓宽选项、2. 用事实检测假设、3. 跳出自己看自己、4. 为错误决定做准备。

1.拓宽选项

人们误以为做选择就好像考试做选择题,从三五个选项里选一个那么简单,然而世界之大,选项又何止三五?例如,一家广告设计公司在工作中会同时开展多个设计方案,并在每一轮的反馈中将有用的元素组合为最终的设计成果。这样不仅使工作效率变得更高,还也节省了决策的耗时成本。除此之外,还可以参考他人面对类似状况时做的选择的基础比率。沃尔玛的创始人 Sam Walton,就在职业生涯中一直密切关注着竞争对手的动向,从而适时调整决策。作为决策者,应要在创造更多选项和参考他人的选择中,找到最佳方案。

2. 用事实检测假设

如果说实践是检验真理的唯一标准,那么做最终决策前的实验,也能相对准确地预估出想法能否奏效。很多公司已经从仅仅通过面试来雇佣员工,发展到要求他们通过短时间的试用期,正是为了避免面试的局限性,从而增加决策的准确性。我朋友买房前去房子里试着住了一个晚上,发现能够听到火车的鸣笛,从而花小的成本避免了大的失误。

3. 跳出自己看自己

当决策者过于沉浸于自己的观点时,往往会忽略外部视角。所以,想要判断决策的可能结果应该去调查决策所基于的客观情况。可以考虑从更远的时间和空间的维度来衡量选项,比如安迪格鲁夫假装自己是新的 CEO 从大门进来然后砍掉内存条业务;李开复假设明天有两份报纸头条报道自己的两个选择——有情但不公正、公正但无情,继而作为领导者选择了要公正;杰夫贝索斯假设自己 80 岁回头看自己,运用"遗憾最小化框架"。

4. 为错误决定做准备

对于决策的结果,你应该考虑到最好和最坏的两种结果,以便了解自己所处的位置。如果情况接近最糟糕的结果,你也能及时地做出反应。除此之外,还可以建立一种能使你意识到自己行为的信号,从而削弱行为的惯性,及时地纠正决策。值得注意的是,为了提高做决策的速度,贝索斯认为,决策与决策之间生而不平等,绝对不要一碗水端平 —— 可逆的决策用轻量级的决策过程。

如何设计区块链服务端的架构?

· 阅读需 10 分钟

需求分析

  • 分布式的区块链记账和智能合约系统
  • 节点之间相互不大信任,但是又需要激励他们互相合作
    • 交易不可逆
    • 不依赖可信的第三方
    • 保护隐私,透露最少信息
    • 不依赖中心化的权威证明一笔钱不能花两次
  • 假设性能不是问题,暂不考虑如何优化性能

构架设计

具体模块和他们之间的交互

基础层(P2P 网络、加密算法、存储)

P2P 网络

分布式系统有两种实现方式:

  • 中心化的 lead / follower 的分布式,比如 Hadoop, Zookeeper 这种系统,结构比较简单,但是对 lead 要求高
  • 去中心化的对等 (P2P) 网络分布式,比如 Chord, CAN, Pastry, Tapestry 算法组织起来的网络,结构比较复杂,但是更加平等

因为前提条件是节点之间不大信任,所以选择 P2P 的形式。具体到如何组织 P2P 的网络呢?一个典型的去中心化的节点和网络是这样保持连接的:

  1. 基于 IP 协议,节点上线占用某个地址 hostname/port,利用初始化的节点列表广播自己的地址,利用这些初始的 hop,试图向全网 flood 自己的信息
  2. 接到广播的初始节点一方面存下这个 neighbor,一方面帮助他 flooding,不相邻的节点收到后 NAT 穿墙加 neigbhor
  3. 节点之间 anti-entropy 随机互相 heartbeat 发出最新的带着类似 vector clock 的信息,保证能够持续更新对方那里自己的最新信息

我们可以利用既有的库,比如 libp2p,来实现网络模块。网络协议的选择见Crack the System Design Interview: Communication.

加密算法

在互相不大信任的分布式系统中,一笔转账如何在不泄漏自己秘密信息的同时证明这个转账是自己发起的呢?非对称加密:一对公钥和私钥对应一个”所有权”。Bitcoin 选择 secp256k1 参数的 ECDSA 椭圆曲线加密算法,为了兼容,其他链也基本选择同样的算法

为什么不直接把公钥作为转账的地址呢?隐私问题,交易的过程应该尽可能少地泄漏信息,用公钥的哈希作为“地址”可以避免接收方泄露公钥。甚至,人们应该避免反复使用同一个地址

具体到账本的账户,有两种实现方式 UTXO vs. Account/Balance

  • UTXO (unspent transaction output) ,例如 Bitcoin,类似于复式记账的 credit 和 debit,每个 transaction 有都有 input 和 output,但是除了 coinbase 每个 input 的前面都连着上一个的 output。尽管没有账户的概念,但是取一个地址对应的所有的未花完的 output,就是这个地址的余额。
    • 优点
      • 精准:类似于复式记账的结构,让流水账非常精准地记录下所有的资产流动。
      • 保护隐私和抗量子攻击:如果用户经常换地址的话。
      • 无状态:为提高并发留下了可能。
      • 避免重放攻击:因为重放会找不到 input 对应的 UTXO
    • 缺点
      • 记录了所有的交易,复杂,消耗存储空间。
      • 遍历 UTXO 花时间。
  • Account/Balance,例如 Ethereum,有三个主要的 map:account map, transaction map, transaction receipts map. 具体在实现上,为了缩减空间、防篡改,使用 merkle patricia trie (MPT)
    • 优点
      • 省空间:不像是 UTXO 那样,一个 transaction 把多个 UTXO 联系起来
      • 简单:把复杂性让给了 script
    • 缺点
      • 需要用 nonce 解决重放问题,因为 transaction 之间没有依赖性

值得一提的是 “区块 + 链” 的数据结构本质上来讲,就是 append-only 的 Merkle tree,也被称为 hash tree.

存储

因为本身 UTXO 或者 MPT 这种结构就充当了索引,加上分布式的时候,为了让每个节点运维更加简单,一般做 data persistence 的时候倾向于选择 in-process database 随着节点的程序能够直接跑,比如 LevelDB, RocksDB。

因为这种索引并不是通用的,所以你并不能像是 SQL 数据库那样查询,这也为数据分析提高了门槛,优化时需要专门做一个 indexer 服务,比如 etherscan。

协议层

现在我们有了可以操作的基础层后,在这层之上,我们需要一个比较通用的逻辑操作的协议层。根据这个区块链的使用需求,可以像是微内核构架那样,插拔具体的逻辑处理模块。

比如最常见的记账:在最新的 block 高度收到了一些 transaction,组织起来建立如上一层构架所说的数据结构。

为每一个业务逻辑写一个原生模块然后更新所有节点的代码不大现实,用虚拟化的方法解耦这一层?答案是能够执行 smart contract 代码的虚拟机。在互不可信的环境中,不能让客户白执行代码,所以这个虚拟机最独特的功能可能是计费。

基于 contract 的 token 比如 ERC20 和 native token 的区别,导致在不同的 token 捣腾的时候很麻烦,于是就出现了 Wrapped Ether 这种 token.

共识层

协议层算出来执行的结果之后,如何跟其他的节点达成一致呢?有如下一些常见的激励大家合作的机制:

  • proof of work (POW): 用 hash 的碰撞挖 token,耗电量大不环保
  • proof of stake (POS): 用质押的 token 挖 token
  • delegated proof-of-stake (DPOS): 选人民代表用质押的 token 挖 token

在激励机制的基础上,节点中谁的链最长听谁的,两群人互不待见就分叉。

同时,有这样一些一致性协议让大家达成共识(也就是大家要么一起都干,要么一起都不干)

  • 2PC:大家都依赖某一个 coordinator:coordinator 问大家:要不要干?只要有人回复不干,那么 coordinator 跟所有人都说“不干”;否则都说干。 这样的依赖会导致,如果 coordinator 在第二个阶段的中间挂了,有些节点会不知道怎么办 block 在那里,需要人工干预重启 coordinator。
  • 3PC:为了解决上述问题,加一个保证大家在干之前都知道所有人要干还是不干的阶段,出了错就重新选 coordinator
  • Paxos:上述的 2PC 和 3PC 都依赖某一个 coordinator,如何干掉这个 coordinator 呢?用“大多数(2f + 1 里至少 f+1)”来取代,在两步中,只要大多数取得一致,最后就能取得一致。
  • PBFT (deterministic 3-step protocol): 上述的做法容错率还是不够高,于是有了 PBFT。用来保证大多数(2 / 3)节点要么都同意,要么都不同意的算法,具体做法是三轮投票,每轮有至少大多数(2 / 3)节点同意,最后一轮才 commit block 。

在具体的应用中,关系数据库大多用 2PC 或者 3PC ;Paxos 的变种有 Zookeeper 的实现,Google Chubby 分布式锁的实现,Spanner 的实现;区块链中,Bitcoin, Ethereum 是 POW,新的 Ethereum 是 POS,IoTeX 和 EOS 是 DPOS。

API 层

Public API choices

信用卡处理系统

· 阅读需 2 分钟

信用卡支付处理

5 个参与方

  1. 持卡人:卡的授权用户。例如,任何拥有信用卡的人。
  2. 发卡机构:向其用户发放信用卡的机构。例如,Chase、BOA、Discover 等。
  3. 商户:提供产品或服务并接受信用卡支付的实体。例如,Uber、Doordash 等。
  4. 收单机构:向商户提供卡服务的机构。例如,BOA 商户服务、Chase Paymentech。
  5. 电子支付网络:收单机构和发卡机构的清算中心。例如,VisaNet、MasterCard、Discover、American Express 等。

Square 和 Stripe 是收单机构吗?不,它们是支付聚合商。

2 个工作流程

  1. 授权:持卡人向商户提供卡片/卡片信息,商户处理后将(卡号、金额、商户 ID)发送给收单机构。收单机构通过电子支付网络联系发卡机构。发卡机构检查信用额度和防欺诈系统,然后授权或拒绝交易。

  2. 清算/结算

    1. 批处理:在营业结束时,商户向收单机构请求一批支付信息进行清算。
    2. 清算和结算:收单机构通过电子支付网络与发卡机构协调清算,发卡机构结算资金并为持卡人记账交易。

如何与导师建立良好关系?

· 阅读需 9 分钟

研究表明:有导师的人表现更好,在事业上进步更快,甚至连在工作和生活中,获得的满足感也更多。而导师也会从中受益,在教人的同时自己也会有收获。尽管有那么多的好处 —— 76%的职场人士认为导师对成长很重要 —— 但超过54%的人没有这种关系。

这里问题往往是人们不知道如何找到导师,如何建立关系。以下九个步骤可以帮到你。

1. 明确自己的目标和具体需求

拿出笔和纸,写下你的职业目标。确保这些目标是 SMART 的。然后,列出实现这些目标的最大障碍。这些具体的需求将帮助你决定应该寻找什么样的导师。也许你需要发展新的技能,也许你需要扩大在某一特定领域的人脉,也许你需要建立进行艰难谈判的自信心。在了解你想成为什么样的人,以及成为这样的人的差距和机会在哪里之后,你就能确定导师如何才能真正帮助你。

2. 写出你理想中的导师的 "工作要求"

在知道你的目标以及你需要怎么来实现这些目标之后,思考一下导师如何帮助你。描述出能够帮助你抓住最大机会/驾驭挑战的导师类型。具体地说,也许你需要导师帮助你完成一个项目,或者为你介绍特定行业内某一层次的人,或者指导你度过艰难的谈判。在你的工作要求中,一定要包括"为什么"--就像公司希望潜在的应聘者了解他们公司的大方向一样,解释一下为什么指导你将会有更大的收获。当你与潜在的导师联系时,告诉他们你的工作要求,这样他们就会知道你为什么要找导师,从而更愿意提供帮助(第四和第五点中会提到)。

3. 通过你的二度关系寻找导师

导师可以来自任何地方。他们可以是来自你LinkedIn人脉,专业领域的人脉,也可以是你在会议上认识的人。重要的是,虽然人们肯定很忙,但被邀请成为导师是一种巨大的赞美。人们可能会说不,但这依然是一种积极的交流,你要勇于去尝试,去提出请求,即使你认为对方不可能腾出时间给你。答不答应就让他们自己来判断。

4. 提出要求(并保持请求简单)

第一次、第二次,甚至第三次请别人做导师时可能会让你有点尴尬。你很可能也从来没被邀请过做别人的导师,也没有教过别人如何为自己提出这个请求。拥抱这种不舒适的感觉。询问并没有什么坏处,但要慢慢来。邀请别人进行第一次对话来了解他们的工作和兴趣。一旦你们对对方有了更多的了解,如果有一致的意见,那么就可以提出更多的请求,请求对方做你的导师。反之,如果用长长的邮件去请求不一个不认识的人做导师,那就不太容易被接受。

5. 进行第一次谈话

你与潜在导师的第一次谈话有两个目标。首先,你要确定这个人是否是你正确的导师人选。然后,搞清楚他们是否对指导你保持开放态度。你如何进行对话将取决于你自己,但总的来说,你会想做以下几件事:

  • 让对方感到轻松。去一个对他们来说方便的地方,准备好咖啡(或茶),使会议没有压力。

  • 花时间去了解对方。最好让导师多讲话,而你的讲话时间少于30%。

  • 一开始就请求对方给你一些小的帮助也是可以的。事实上,它甚至可能会帮助你建立关系。

  • 提出一个明确的请求:"我很喜欢这次谈话。如果一个月内我在目标上取得一些进展,能不能再跟你跟进?"

  • 表示感谢,然后再次通过邮件跟进,再次表示感谢。

6. 从简开始

对于你的下一次会面,要在上次见面的基础上进行跟进,并保持简单。一旦对方确认会与你再次见面,就发送一封邮件提出议程,并暗示要建立长期关系。一个例子是"在我们下次聊天时,我希望我们能快速回顾一下上次的话题,然后我想进一步扩展这个话题。我会准备好一些具体的问题,我觉得你可以帮我回答。"

7. 确立一个结构化责任的过程,并签订导师协议

在你们进行了一两次简单的谈话之后,试着提出一个更正式的要求:这个人愿意在接下来的六个月里,每月和你一起坐下来谈一次,直到你实现目标或解决问题为止吗?如果愿意,那么可以考虑写一份简单的单页文件,列出你们要在这六个月里完成的任务。虽然这可能看起来有点小题大做,但它将使你和你的导师更加清楚地知道目标是什么。它还将帮助你为每次会议确定明确的会议内容。你可以建议说:"我真的很感谢你的时间和帮助,我很想确保自己能充分利用时间。我在想,我可以准备一份简单的文件,把我的目标、我对你的承诺,以及我希望在未来三个月内实现哪些阶段性的目标分享给你。我想这将有助于让我担起责任,有准备地来参加我们的谈话。你同意吗?"

8. 持续跟进并道谢

每次见面后,你一定要发一封感谢信。除此之外,当你的导师关系结束后,你应该继续说谢谢。我曾经有一个被指导者在我们合作两年后给我发过电子邮件。这让我高兴不已。作为回报,我帮她建立一些新的有趣的联系,而她也是如此。所以请记住,请人帮忙是可以的,但一定要确保表示适当的感谢!

9. 选用合适的工具

为了能够更高效地践行上述步骤,我给自己专门做了一套工具关系io - 端到端加密的个人 CRM,免费开放注册现已开源,欢迎 star

创造引人注目的创意的 6 个要素

· 阅读需 4 分钟

为什么有些创意能够存活而其他的却消亡?两个原则:令人难忘和让人渴望传播。在书籍《引人注目》中,作者总结了六个使创意引人注目的要素,简称 SUCCES,代表简单、意外、具体、可信、情感和故事。

简单 - 削减到创意的关键消息

我们常常想要彻底解释一个创意,但透露过多细节对人们理解并不好。他们很快就会忘记所有细节,甚至核心信息。我们应该简化我们的信息,并以易于理解的方式传达创意,就像记者为他们的报道创造好的标题以吸引读者的注意一样。

意外 - 通过惊讶吸引人们的注意

人类的大脑会选择性地忽视熟悉的事物以节省能量。只有一些意外的事情才能引起它的注意。这一事实意味着引人注目的创意也是意外的。利用好奇心的差距来吸引注意力被证明是有效的。如果你在你的创意中呈现一些令人惊讶的事实或统计数据,好奇心将驱使人们获取更多信息。

具体 - 使用具体的材料以便理解和记忆

抽象的术语难以理解,更不用说记住了。在传达一个创意时,我们最好使用具体且易于理解的术语,并配以示例和描述性的图像。

可信 - 使创意可信以便传播

如果想要传播,创意必须是可信的。通常,有三种方式可以为计划增加可信度。 故事中有专家或相关经验的人来支持 使用现实的事实和统计数据为故事增加可信度 鼓励观众自身成为参考

情感 - 吸引人们的情感而不是呈现枯燥的数据

想象一下我们有一个活动,要求人们向饥饿的非洲儿童捐款。有两个选择:呈现饥饿儿童的人口,或展示一个需要捐款的孩子的照片。相比较而言,人们更有可能对后者采取行动,因为它直接触动了人类的情感。因此,引人注目的创意应该关注情感触发,而不是枯燥的事实。

故事 - 通过讲述故事激励人们采取行动

在传达创意时,专注于没有任何故事的空洞口号是一个常见的错误。口号是引人注目的,但它无法像故事那样激励人们采取行动。例如,赛百味从贾里德·福格尔的真实故事中受益匪浅,他曾是一个超重的人,但通过每天吃两顿赛百味的餐点成功减肥。

如何察觉你说的太多?

· 阅读需 6 分钟

当你滔滔不绝时,很难察觉自己已经过度热情。你可能根本没意识到对方只是在礼貌性地回应,或暗示要离开。

跟别人说话分三个阶段。在第一个阶段,你的目标很明确,有针对性,言简意赅。 但随后你会无意识地发现,你越说越觉得轻松。 对你来说是如此美妙,缓解了紧张的情绪,但对对方来说就没那么有趣了。这就是第二个阶段----当你觉得说话感觉很好的时候,你根本没有注意到对方没有在听。

在第三阶段,你已经对自己讲的内容失去控制,并开始意识到你可能需要把对方拉回来。 这时候你的独白被伪装成了对话,你不自觉地感觉到对方有点烦躁,你猜会发生什么?

不幸的是,人们这时候的通常做法是说更多话来获取对方的注意力,而不是想办法让对方说话并倾听来获取对方的注意力。

为什么会出现这种情况呢?首先,原因很简单,人都有一种渴望被倾听的欲望。但其次,在谈论自己的过程中会释放出多巴胺,也就是快感荷尔蒙。 话多的人之所以会一直讲话,其中一个原因就是因为他们会对这种快感上瘾。

有一个方法,它对我有帮助,也许对你也有帮助。它被称为红绿灯法则。它在与大多数人交谈时有效,尤其是A型性格(Type A personalities)的人,他们的耐心往往比较差。

在谈话的前20秒,你是绿灯:只要你的发言与谈话内容相关,并是为对方服务的,你的听众就会喜欢你。除非你是一个极有天赋的演讲者,否则每次谈话时间超过大约半分钟就会被认为无聊且话多。所以,在接下来的20秒内,灯会变成黄色--现在,对方开始失去兴趣,或认为你太啰嗦。到了40秒大关,你的变成了红灯。偶尔你会想闯红灯继续聊天,但绝大多数的时候,你最好停下来,否则就有危险了。

红绿灯法只是阻止你说话太多的第一步。了解你说这么多话的根本动机也很重要。说更多话是不是只是为了让你感觉良好?说更多话是不是为了解释你的想法?还是因为你经常要听别人说话,当你找到一个说话机会时你就拼命宣泄?

不管是什么原因,说太多话通常会导致谈话中断,并可能导致你们轮流各说各的,而不是进行对话。 这对推动对话和你们的关系都没有效果。

有些人说话太多的原因之一是他们想向对方展示自己有多聪明,而往往他们内心深处其实并不觉得如此。如果这种情况,你要知道继续说下去只会让对方对你的印象大打折扣。

当然,有些人说得太多只是 "可能对时间的流逝没有感觉"。如果是这种情况,解决的方法不是去审视自己的内心,而是要培养自己对20秒和40秒有多长的感觉。比如说,在打电话时用手表计时。你会慢慢养成习惯,当你的交通灯还是绿色,或者至少是黄色的时候,你就会停下来。

最后,请记住,如果你不把对方纳入到谈话中,哪怕是20秒的谈话也会让人觉得很反感。为了避免这种情况,你可以提出问题,尝试着在对方说话的基础上说话,并想方设法让对方参与到对话中来。这样你就能得到真正的对话,而不是无效对话。