220 Matching Annotations
  1. Last 7 days
    1. go commands

      go run, compile and running a program when you are frequent changes, it doesn't generate a binary executable.

      go build, compiles the packages, along with their depencies, but it doesn't install the result.

      go install, compiles and installs the packages.

    1. 中国的学生背单词总量通常不少,但是很少有人专门背词组和短语,特别是动词短语(Phrasal Verbs),举个例子:look是看的意思,after是后面的意思,而look after放在一起则指的是“照料,照看”的意思,,虽然你只背了两个单词,但是你可以表达三个不同的意思,这就是所谓的1+1>2的效果。如果你仔细听母语人士说英语,会发现他们的语言中经常大量使用一些用很多简单词汇组合而成的phrasal verbs来表达非常丰富的含义。而这类词汇常常在国内的英语教育中不被受到足够的重视。

      正反的例子

  2. Nov 2022
    1. 埃文有很强的驱动力,很多的资源,而且对莎莎来说很不幸的是,他满怀怒火。假定他把自己的使命用完全自利的角度表达出来(“请帮我朋友节省300美元!”)或是确立一个难以达致的笼统目标(“让我们处处和盗窃作战!”),他选择的工具不会发生多大效力。他所做的是提炼一条信息,然后把这条信息放在足够大的框架之内以激发兴趣,目标触手可及,足以激发自信。(这种甜蜜点是开源软件理论家埃里克·雷蒙德所称的“一个蛮像回事的承诺”。)缺少了这种蛮像回事的承诺,世界上所有的技术也就不过是技术而已。

      提炼一条信息,然后把这条信息放在足够大的框架之内以激发兴趣,目标触手可及,足以激发自信。(这种甜蜜点是开源软件理论家埃里克·雷蒙德所称的“一个蛮像回事的承诺”)。

    1. 自己虽然有梯子,可以正常访问github页面,但是在发现“git clone”命令速度特别慢,有时还经常卡掉。本文通过设置git 代理,解决被墙问题。

      git clone 无法拉取被墙的 repo

    1. 导入路径是用户用来导入软件包的字符串。它指定软件包源代码所在的目录(相对于 $GOROOT/src/pkg 或 $GOPATH/src)。 导入路径应该是全局唯一的,因此请使用源存储库的路径作为基础。例如,来自 go.net 子存储库的 websocket 软件包的导入路径为 “ golang.org/x/net/websocket”。 Go 项目拥有路径 “ github.com/golang”,因此该路径不能被其他作者用于其他软件包。由于存储库 URL 和导入路径是相同的,因此 go get 命令可以自动获取并安装软件包。 如果您不使用托管源存储库,请选择一些唯一的前缀,例如域,公司或项目名称。例如,所有 Google 内部 Go 代码的导入路径均以字符串 “ google” 开头。 导入路径的最后一个元素通常与包名称相同。例如,导入路径 "net/http" 包含程序包 http。这不是必需的 - 您可以根据需要使它们有所不同 - 但出于可预测性的考虑,应遵循约定:用户可能会惊讶 import"foo / bar'' 将标识符 quux 引入包名称空间。 有时人们将 GOPATH 设置为源存储库的根目录,并将其程序包放在相对于存储库根目录的目录中,例如 “"src / my / package"。一方面,这使导入路径保持较短(“"my / package" 而不是 " github.com/me/project/my/package"),但另一方面,它破坏了 go get 并迫使用户重新设置他们的 GOPATH 以使用该软件包。不要这样。
    1. 这五行是否使您确信此问题很严重?这取决于您能否很好地填写我遗漏的上下文:被理解需要预见别人需要知道的内容。对于当时的我的听众 - Google 的 Go 团队中的其他十个人正在阅读该文档 - 五十个单词就足够了。为了在去年秋天向 GothamGo 的受众群体 (背景和专业领域更加多样化的受众群体) 提出同样的问题,我需要提供更多的上下文,并且我使用了大约 200 个单词以及真实的代码示例和图表。当今全球围棋社区的一个事实是,描述任何问题的重要性都需要添加上下文,尤其是通过具体示例进行说明,而与同事交谈时会忽略这些上下文。

      被理解需要预见别人需要知道的内容

    2. 说服别人一个重大问题是至关重要的一步。当问题显得无关紧要时,几乎所有解决方案都显得过于昂贵。但是对于一个重大问题,通常有许多合理成本的解决方案。当我们不同意是否采用特定解决方案时,我们通常实际上不同意要解决的问题的重要性。这是如此重要,以至于我想看两个最近的例子,至少在事后看来,这些例子清楚地表明了这一点。

      说服别人,一个重大问题是至关重要的一步。

    1. A command determines whether it is in a workspace context by first examining the GOWORK environment variable. If GOWORK is set to off, the command will be in a single-module context. If it is empty or not provided, the command will search the current working directory, and then successive parent directories, for a file go.work. If a file is found, the command will operate in the workspace it defines; otherwise, the workspace will include only the module containing the working directory. If GOWORK names a path to an existing file that ends in .work, workspace mode will be enabled. Any other value is an error. You can use the go env GOWORK command to determine which go.work file the go command is using. go env GOWORK will be empty if the go command is not in workspace mode.

      Go workspace mode

    2. A workspace is a collection of modules on disk that are used as the main modules when running minimal version selection (MVS).

      A workspace is a collection of modules on disk that are used as the main modules when running minimal version selection (MVS).

    1. What does 'passing an argument' mean in programming?You have a grinder that will grind anything that you pass on to her. You give her Rice. She grind it. You give her wheat. She grind it. You give her a Justin Bieber song CD. She grind it. She grinds every thing that you hand over to her. In programming, we create function that does the stuff we need. Say add, subtract, multiply or print the stuff that you pass on to it. Then we pass on stuff upon which the function will operate and return us the results. This process of passing the 'stuff' to be processed is referred to as passing an 'argument' in programming. Thank You.
    1. An argument is a way for you to provide more information to a function. The function can then use that information as it runs, like a variable. Said differently, when you create a function, you can pass in data in the form of an argument, also called a parameter.

      argument and parameter

    1. The Chinese room argument holds that a digital computer executing a program cannot have a "mind," "understanding" or "consciousness,"[a] regardless of how intelligently or human-like the program may make the computer behave.

      Chinese room? AI

    1. 顶点代表点对点网络中的节点,边代表两个节点之间的连接。节点类别可以根据节点服务其它节点和客户端的能力进行划分。节点可以充当服务器、客户端,或身兼二职
  3. Oct 2022
    1. 在视野中,知识的结构应该透过个人视角的滤镜而呈现出明确的焦点来。在焦点之外的知识,本质上是知识债(knowledge debt),应该阶段性的排除掉,除非框架自身被改变。

      在视野中——个人视角的滤镜——知识结构——呈现出明确的焦点?

    1. 在新版本(起码 1.15 及以后)的 Go 当中,sync.Pool 里的临时对象需要两次 GC 才会被真正清除掉。 // 只一次 GC 的话只会让其中的临时对象被“打上记号”。 // 更具体的说,只做一次 GC 只会使得 sync.Pool 里的临时对象被移动到池中的“备用区域”(详见 victim 字段)。 // 在我们调用 sync.Pool 的 Get 方法时,如果 sync.Pool 的“本地区域”(详见 local 字段)当中没有可用的临时对象, // 那么 sync.Pool 会试图从这个“备用区域”中获取临时对象。 // 如果“备用区域”也没有可用的临时对象,sync.Pool 才会去调用 New 函数。 // 所以,这里的例子需要再添加一行对 runtime.GC() 函数的调用,才能使它的结果与最初的相同,并起到准确示范的作用。

      runtime.GC()

  4. Aug 2022
    1. 考虑到今天的通胀背景,以及现在和那时的异同,让我们谈谈美联储为减缓通胀而采取的紧缩行动。我谨慎地选择了“行动(campaign)”这个词,因为我认为,将美联储目前正在做的事情称为“紧缩周期”从根本上来说是错误的。 这是因为“紧缩周期”是与 “商业周期”相对应的,而商业周期是关于中央银行管理供求之间的短期失调。 但我们的开篇文章指出,我们现在所经历的是结构性的,所以我们不是在处理商业周期,而是直接来自创世纪的东西……

      将美联储目前正在做得事情称为“紧缩周期”从根本上来说是错误的。 这是因为“紧缩周期”是与“商业周期”相对应的,而商业周期是关于中央银行管理供求之间的短期失调。 我们现在所经历的是结构性的.....

    2. 低通胀世界有三个支柱:首先,廉价的移民劳动力使美国服务业的工资停滞不前;其次,来自中国的廉价商品在工资停滞不前的情况下提高了生活水平;其三,廉价的俄罗斯天然气为德国工业和众多的欧盟成员国提供动力。

      低通胀三个支柱:廉价的移民劳动力、中国的廉价商品、廉价的俄罗斯天然气

    3. 低通胀世界有三个支柱:首先,廉价的移民劳动力使美国服务业的工资停滞不前;其次,来自中国的廉价商品在工资停滞不前的情况下提高了生活水平;其三,廉价的俄罗斯天然气为德国工业和众多的欧盟成员国提供动力。

      低通胀三个支柱:廉价的移民劳动力、中国的廉价商品、廉价的俄罗斯天然气

    1. 延迟睡眠是试图夺回对我们生活的控制权的错误尝试的一部分

      重写:延迟睡眠是试图夺回对我们生活的控制权,这种尝试是错误尝试的一部分。

    2. 一种可能出现的情况是,按照 ETH 计价的 NFT 升值了,但是 ETH 对美元的价值出现了大幅贬值。这时候人们会如何看待自己拥有的 NFT 数字资产呢?艺术品自身没有发生变化,当 ETH 与无数其它的平行宇宙也发生关联的时候,其价值并不由 NFT 所代表的艺术宇宙所唯一决定。这就类似欧元在不同经济体间引发的金融失衡。

      按 ETH 计价的 NFT 升值了,但 ETH对美元的价值出现了大幅贬值。

    1. 钱包是什么?反直觉和反常识的是,数字钱包并不装钱,而是装密钥(私钥和公钥)的容器,是用来帮助用户存储、转移、结算、交易和管理数字资产的工具,而用户的数字资产实际存放在区块链地址指向的分布式账本里。

      钱包是进入 Web3 的入口。 但反直觉和反常识的是,钱包装的不是钱,而是装密钥的容器。(私钥和公钥)

    2. 问题中蕴含着这样的底层逻辑--原生的区块链网络中缺失了“人”及“人际网络”的表达--不可转让社交身份的原生组件及由此构建的社交网络图谱,社会经济价值缺失了承载的主体,以至于Web3赋能实体经济的相关应用难以创建和落地实施。

      问题中蕴含着这样的底层逻辑

    3. 区块链发展至今,从基础设施层、组件层、扩展层、激励层、治理层、到应用接入层,目前正在不断扩展和完善。这个发展过程有一个显著的特点,那就是跟原生网络--可信计算网络特性紧密相关的应用首先得以发展。

      发展过程有一个显著的特点,跟原生网络——可信计算网络特性紧密相关的应用,首先得以发展。

    1. 小鹏P7车主称,事故发生时正在使用LCC(车道居中辅助系统)功能,并将速度设定为高架限速的80公里每小时。事故发生之前车辆预警并未照常响起,再加上车主当时走神,导致了悲剧的发生。小鹏汽车在用户手册中数次提及,LCC 是一项辅助驾驶功能,并不是完全意义上的自动驾驶,驾驶员仍旧需要在LCC功能启用后始终将手握住方向盘,并在必要时刻接管方向盘。此外,手册还称,驾驶员有责任时刻保持警惕,安全驾驶,并掌控车辆。切勿依靠系统来应对突发的紧急情况。务必观察前方路况并准备随时采取纠正措施,否则可能导致严重伤害或死亡。
    1. 小津一直只使用一种镜头,摄影机离地板数十公分高,保持与角色坐在榻榻米上的平行角度来拍摄。由于日本人在榻榻米上生活,若用高踞在脚架上的摄影机来观察这种生活,是不真实的,而须以盘坐在榻榻米上日本人的视线水平,来观察他们四周的人、事、物。
    1. “小津将摄影机放的这么低的原因是为了防止镜头成为某个人的主观视角。”筱田正浩的说法是十分准确的。小津拒绝创作在某种程度上变成小说延续的电影,也就是说,拒绝从主观视点出发去展现一个已经被赋予主观感觉和意识的世界
    2. 大卫•波德维尔在他深入分析小津的书中将这些空洞的场景称作“中间物”,因为这些镜头大多发生在场景的变换中(尽管有时候只是作为场景的剖面图出现)。但他们不是定场镜头,尽管一系列镜头有时候起到了这个作用。虽然这些场景和主角们存在在一个空间内,但它们包含着自己独特的含义,因此诺埃尔•伯奇把他们称作游离于剧情以外的“额外叙事空间”。演员们的缺席和叙事的静止让这样的称呼名副其实。
    1. ,但人们宁愿选择相信自己看到的收益率数字。在那样的心态下,一切都显得便宜了许多,无论是高得难以解释的估值倍数,还是购物车里的奢侈商品。
    1. 长期收益率对于未来(经济前景)的预示能力被高估了,特别是在利率周期的转折点,这种指引显得最有价值。 这很重要吗?如果决定取决于价格,这当然是重要的。一个问题是财政可持续性的计算。如果政府借款确实是零利率所暗示的“自由”,财政可持续性似乎没有那么具有挑战性。然而,急剧上升的长期收益率的“快速恢复”会以另一种方式推翻论证。 最重要的教训是货币政策。市场隐含的通货膨胀预期,如盈亏平衡通货膨胀率或远期通货膨胀互换利率,往往与名义收益率同时上升下降。如果货币政策对市场隐含通货膨胀率作出反应,进行更多的宽松,它可能会引发长期投资者进一步追求收益的反馈环。 固定收益市场的市场隐含通货膨胀率,货币政策和放大机制之间的相互作用是值得经济学家进一步关注的一个主题。当长期收益率再次开始上升时,我们可能会从长期收益率的潜在驱动因素获得进一步的线索,因为推动收益率下降的放大机制同样可以逆转。
    2. 某些变量明天的平均预期的今天的平均预期未必是那个变量的今天的平均预期。

      变量明天的平均预期的今天的预期,未必是该变量的今天的平均预期。

    3. 市场价格作为潜在基本面的信号发挥着重要作用。在价格中,长期收益率(问题)对经济评论有着强大的控制力。我认为这是因为我们将长期收益率视为透析未来的一个窗口。我们将“市场”拟人化,并赋予它先见之明。因此,当名义收益率下降到非常低(甚至负)的水平时,经济评论转向长期的经济停滞以及相应的通货紧缩的情况,这些说辞甚至使得负的长期收益率对新的投资者有了吸引力。我今天的立场则相反。长期的收益率作为经济状况的前瞻指标可能被高估了。它远远不能作为观测未来(经济前景)的窗口,亦并没有额外揭示个别市场参与者观点以外的市场观点,低收益率可能反映了独立投资者的非常普通的动机,这些投资者对于遥远的未来的预测只有有限的影响。作为论证的一部分,我将介绍BIS对欧洲政府债券市场研究的一些发现——去年年中的长期收益率非常低,相比于基于对远期未来(经济情况)的预测组合决策,收益率下行可能与收益追逐行为的关联更强(源于长期投资者的短期风险管理举措)。

      市场价格 潜在基本面 长期收益率 经济评论 市场 名义收益率 经济状况 经济状况的前瞻指标 观察未来 经济前景 市场参与者 市场参与者观点 市场观点 低收益率 独立投资者 动机 远期未来 收益率下行 收益追逐行为

    4. 叙事的力量在当我们试图理解快速变化的经济事件时以及我们在陌生的领域当中寻找“指南针”的时候尤为强大。

      叙事的力量, 理解快速变化的经济事件, 以及在陌生的领域当中寻找“指南针”的时候,尤为强大

    5. 类别错误定义为“一种属性被归于不可能具有该属性的事物的语义或本体论错误”。

      类别错误,一种属性被归于不可能具有该属性的事物的语义或本体论错误。

  5. Jul 2022
    1. Pointer receivers You can declare methods with pointer receivers. This means the receiver type has the literal syntax *T for some type T. (Also, T cannot itself be a pointer such as *int.) For example, the Scale method here is defined on *Vertex. Methods with pointer receivers can modify the value to which the receiver points (as Scale does here). Since methods often need to modify their receiver, pointer receivers are more common than value receivers. Try removing the * from the declaration of the Scale function on line 16 and observe how the program's behavior changes. With a value receiver, the Scale method operates on a copy of the original Vertex value. (This is the same behavior as for any other function argument.) The Scale method must have a pointer receiver to change the Vertex value declared in the main function.
    1. 用户保留率&病毒邀请的数量 转化率 & 产品用途的识别度

      病毒的吸引力同产品的易用度彼此增强。 易用度做得愈号,则会造成更大的用户转化率,这些用户也会转而发出更多的邀请,从而带来更多的用户。

    2. 今天消费者已经厌倦了继续被当作“有腿的钱包”来对待。企业领导者必须了解商业不仅仅是买进卖出的贸易或是钱物交换。商业应该是、而且渐渐必须成为伴随顾客一生的个人联系的拓展。
    3. 大数据分析/挖掘尽管重要,产品的信息化也十分重要,企业需要一个从大数据到大产品的进程。
    4. 信息化=组织内的纽带;

      使用 OA、CRM等软件,只是该信息化内涵中的其一。

      信息化 = 个性化产品+快速反应; 信息化=在交货地点制造; 信息化=缩减管理成本、库存和运营成本; 信息化+直接入口=更高的服务标准; 信息化=组织内的纽带; 信息化+物流=全球化。

    5. 信息化:在现有产品和服务中构建更多的数据与信息,使其对顾客更具有价值。

    6. 每一家公司都需要一个“信息化”战略,此处提到的“信息化”,非指企业中常见的那种利用计算机技术、网络技术等一系列现代化技术,通过对信息资源的深度开发和广泛利用,不断提高生产、经营、管理、决策的效率和水平,从而提高企业经济效益和企业竞争力的过程;狭义地归结到产品思维上,它是指,通过在现有产品和服务中构建更多的数据与信息,使其对顾客更具价值。

      托马斯·莱德曼提出的【信息化】概念:在现有产品和服务中构建更多的数据与信息,使其对顾客更具价值。

      (在现有产品和服务中,构建更多的数据与信息,使其对顾客更具有价值。)

    7. 深中肯綮

      深中肯綮(qing) 肯情,事情的扼要。

    1. 我看很多网上的文章都把表达式和语句的区别,说成是表达式有值,而语句不总有,我个人不同意这个观点。我认为,纠结于这两个概念的区别和联系没有意义,思维方式的重点应该是在于观察视角和维度的区别。表达式是从数学、计算的视角来看待问题。它关注的是算法的效率(空间和时间复杂度)。而语句是从计算机执行的视角来看问题,这个视角关注的是代码的逻辑和架构。(从这个视角来看,表达式也是语句)我们写代码的时候,需要在这两个视角之间不断的切换,而不是拘泥于去区分这两个概念。

      表达式和语句的区别是什么?

      纠结于表达式和语句两个概念的区别和联系,有什么意义?

      思维方式的重点应该是在于【观察视角】和【维度】的区别。(观察视角、维度)

      1)表达式是从数学、计算的视角来看待问题。 它关注的是算法的效率?(空间和时间复杂度)

      2)语句是从计算机执行的视角来看问题,这个视角关注的是代码的逻辑和架构。

    1. 语句和表达式的区别在于,语句不返回结果,执行语句只是为了产生副作用,而表达式总是返回结果,而通常没有副作用。
    1. 我们将“市场”拟人化,并赋予它先见之明。因此,当名义收益率下降到非常低(甚至负)的水平时,经济评论转向长期的经济停滞以及相应的通货紧缩的情况,这些说辞甚至使得负的长期收益率对新的投资者有了吸引力。我今天的立场则相反。长期的收益率作为经济状况的前瞻指标可能被高估了。它远远不能作为观测未来(经济前景)的窗口,亦并没有额外揭示个别市场参与者观点以外的市场观点,低收益率可能反映了独立投资者的非常普通的动机,这些投资者对于遥远的未来的预测只有有限的影响。

      我们将“市场”拟人化,并赋予它先见之明。因此,当名义收益率下降到非常低(甚至负)的水平时,经济评论转向长期的经济停滞以及相应的通货紧缩的情况,这些说辞甚至使得负的长期收益率对新的投资者有了吸引力。

    1. 在20世纪80年代,世界金融市场却出现了一个重要的变化,曾经作为资金筹集主要方式的银行贷款正在被证券融资取而代之。
    2. 日本在1968年,二战之后仅仅用了23年,就成为了经济规模仅次于美国的经济大国。在日本经济腾飞的过程中,银行发挥了非常重要的资源调配作用。日本政府先是规定了固定的存款利率和贷款利率,同时不允许银行之间相互竞争,确保了银行的利润和居民对银行的信心,继而提高了居民储蓄率,为工业发展做好了资金来源的储备。居民把钱存入银行,银行再给企业提供贷款的这种方式,这种方式称之为间接融资。在日本经济腾飞的过程中,企业融资方式以银行贷款为绝对主要的方式,银行是日本的金融枢纽,这个趋势直到90年代才发生改变。

      日本在1968年,二战之后仅仅用了23年,就成为了经济规模仅次于美国的经济大国。

      在日本经济腾飞的过程中,银行发挥了非常重要的资源调配作用。 日本政府先是规定了固定的存款利率和贷款利率,同时不允许银行之间相互竞争,确保了银行的利润和居民对银行的信心,继而提高了居民储蓄率,为工业发展做好了资金来源的储备。 居民把钱存入银行,银行再给企业提供贷款的这种方式,这种方式称之为间接融资。 在日本经济腾飞的过程中,企业融资方式以银行贷款为绝对主要的方式,银行是日本的金融枢纽,这个趋势直到90年代才发生改变。

    1. 企业家成功的故事通常是这样的:你致力于一个巨大而且不断增长的市场,你筹集资金,你扩大规模,打出一记漂亮的本垒打,然后你退出,作为一个新生的百万富翁在日落的白色沙滩上漫步,享受永无止境的美景和美酒。 这个故事引人入胜,但有一个问题:它从未真正发生过。​在开办企业之初,你就会被鼓动被期待着制定退出计划。但是企业被收购的可能性非常小,万分之一,也许千分之一?把注意力放在退出上是一场愚蠢的赌博。你创业的动机应该比渴望致富更深一层。​此外,对兑现财富的过分关注很可能造成自我破坏。Jason和David看到,策划退出和全力以赴追求成功不可能兼得。你需要执着于保持船舶航行,而不是想着随时跳船。​用他们的话说,你需要的不是退出策略,而是持久策略。​——Basecamp

      企业家成功的故事通常是这样的:你致力于一个巨大而且不断增长的市场,你筹集资金,你扩大规模,打出一记漂亮的本垒打,然后你退出,作为一个新生的百万富翁在日落的白色沙滩上漫步,享受永无止境的美景和美酒。 这个故事引人入胜,但有一个问题:它从未真正发生过。​在开办企业之初,你就会被鼓动被期待着制定退出计划。但是企业被收购的可能性非常小,万分之一,也许千分之一?把注意力放在退出上是一场愚蠢的赌博。你创业的动机应该比渴望致富更深一层。​此外,对兑现财富的过分关注很可能造成自我破坏。Jason和David看到,策划退出和全力以赴追求成功不可能兼得。你需要执着于保持船舶航行,而不是想着随时跳船。​用他们的话说,你需要的不是退出策略,而是持久策略。​——Basecamp

    1. 她在中文维基百科上胡编了上百万字的古罗斯历史,把俄罗斯人都骗了 https://www.ifanr.com/1496660

      谁知道历史就是历史的呢?连现实都不知道是不是现实的。

      这文章标题没问题吗?

    2. 有人听到这个古俄史维基百科的离谱故事时,感想是:「虽然是一件严肃的事情,但是怎么听着就那么想笑呢!」毕竟怪异又荒诞的故事自然比总能比你总能猜中套路的电视剧更吸引人。一个人花三年去建造虚构历史故事的冲击感也会比历史上国度的战争故事、地理变化更抓眼球。
    3. 这种信息污染如同往人迹罕至的大街上埋地雷,虽然它短时间内无法伤人,但总有一天是会炸的。只是这样的炸弹可能越来越多了,Deepfake、互联网,还有各种不同图片编辑软件工具的存在可以制造出更真实也更有说服力的内容,污染真实的信息。
    4. 信息污染的制造者们不管怀着怎样的心情开始制作,他们所做的一切也是在往大海里排污水。对于所有需要在海域生活的人而言,这种影响微乎其微,但它持续存在着。你可能随时被编撰的故事所欺骗,被虚空的知识蒙蔽。
    5. 这个叫做折毛的维基用户最终承认了编撰词条的行为。她表示自己一开始确实是想要认真学习历史的,但在第一次造假后,为了圆第一个谎,就只能撒更多的谎。假的维基内容也从几万字延伸到了百万字,当你付出的越多,也就越难舍弃它。
    6. 甚至于她引用的很多论文都是真实存在的,只是没有她说的部分
    7. 为了掩盖一个错误,用多个的错误去丰满它,一环套一环,假装错误的历史变为了一种真实。

    1. The Three Rural Issues, or San Nong, refers to three issues relating to rural development in mainland China: agriculture, rural areas and farmers.
    1. 大部分模式都有正规的描述方式, 以便在不同情况下使用。 模式的描述通常会包括以下部分: 意图部分简单描述问题和解决方案。 动机部分将进一步解释问题并说明模式会如何提供解决方案。 结构部分展示模式的每个部分和它们之间的关系。 在不同语言中的实现提供流行编程语言的代码, 让读者更好地理解模式背后的思想。 部分模式介绍中还列出其他的一些实用细节, 例如模式的适用性、 实现步骤以及与其他模式的关系。
    1. A message chain occurs when a client requests another object, that object requests yet another one, and so on.

      A message chain

    1. 高并发应用场景,那么可能我们就要郁闷了。 你将会碰到下面几个常见问题: 性能普遍上不去 CPU 大量资源被系统消耗 网络一旦抖动,会有大量 TIME_WAIT 产生,不得不定期重启服务或定期重启机器 服务器工作不稳定,QPS 忽高忽低 这时候我们可以优化的第一件事情就是把短链接改成长连接。也就是改成创建连接、收发数据、收发数据... 拆除连接,这样我们就可以减少大量创建连接、拆除连接的时间。从性能上来说肯定要比短连接好很多。但这里还是有比较大的浪费。 举例:请求进入时,直接分配数据库长连接资源,假设有 80% 时间在与关系型数据库通讯,20% 时间是在与 Nosql 数据库通讯。当有 50K 个并行请求时,后端要分配 50K*2=100K 的长连接支撑请求。无疑这时候系统压力是非常大的。数据库再牛也抵不住滥用不是? 连接池终于要出场了,它的解决思路是先把所有长连接存起来,谁需要使用,从这里取走,干完活立马放回来。那么按照这个思路,刚刚的 50K 的并发请求,最多占用后端 50K 的长连接就够了。省了一半啊有木有?

      连接池

    1. randomFormat starts with a lowercase letter, making it accessible only to code in its own package (in other words, it's not exported).

      function name starts with a lowercase

    1. Any Go function can return multiple values. For more, see Effective Go.

      function can return multiple values.

      func Hello(name string) (string, error) { return name, nil }

    1. 运行CLI不需要任何特殊操作-无需任何参数即可启动它,即可处于交互模式下: $ redis-cli 127.0.0.1:6379> ping PONG

      redis-cli

    1. use the go mod edit command to edit the example.com/hello module to redirect Go tools from its module path (where the module isn't) to the local directory (where it is).

      step #1:

      go mod edit -replace */=/

      step #2:

      go mod tidy

    2. go mod edit -replace example.com/greetings=../greetings

      模块(module)路径修改 如何修改模块的路径,将线上的路径指向本地。

    1. What is connection pool and what is the use of connection pool Let’s take a look at how others introduce connection pools: The basic idea of connection pool is to store the database connection as an object in memory during system initialization. When users need to access the database, they do not establish a new connection, but take out an established idle connection object from the connection pool. After use, the user does not close the connection, but puts the connection back into the connection pool for access by the next request. The establishment and disconnection of connections are managed by the connection pool itself. At the same time, you can also set the parameters of the connection pool to control the initial number of connections in the connection pool, the upper and lower limits of connections, as well as the maximum usage times and maximum idle time of each connection. You can also monitor the number and usage of database connections through its own management mechanism. Let me explain briefly below, because it takes a period of time for the redis client to connect to the redis server, and the time for processing various operations is often very short. If redis needs to be reconnected every time for various operations, it will waste a lot of time. Therefore, redis introduces the connection pool, which can establish multiple client connections without releasing, avoid wasting IO resources, and put them in the connection pool when not in use, so as to reduce the time required to connect to the database and improve efficiency.Connection pool is to build a pool and a certain amount of pipes. Each time the pipeline is exhausted, the IO resources cannot be consumed, which ensures that the IO resources will not be exhausted.

      connection pool

    1. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }

      func Hello(name string) string {} Hello - Function name string - Parameter type string - Return type

    2. the := operator is a shortcut for declaring and initializing a variable in one line (Go uses the value on the right to determine the variable's type). Taking the long way, you might have written this as: var message string message = fmt.Sprintf("Hi, %v. Welcome!", name)

      declare and initialize a vairable in one line. 声明和初始化一个变量

    3. Declare a greetings package to collect related functions.

      Declare a package to collect related functions.

    1. 1)声明在函数内部,是函数的本地值,类似private 2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect 3)声明在函数外部且首字母大写是所有包可见的全局值,类似public

      (1)声明在函数内部; (2)声明在函数外部; (3)声明在函数外部,且首字母大写;

    1. 修改 Docker 运行中 Container 的映射端口。

      (1)停止服务

      停止容器服务

      docker stop <container id>

      停止 docker 服务 (Linux)

      systemctl stop docker

      (2)修改配置

      查看 container 的 id hash 值

      docker inspect <container_name>

      C:\Users\xxj87>docker inspect b61792d860f2 [ { "Id": "b61792d860f24c7ba47f4e270e211736a1a88546375e97380884c577d31dab66", "Created": "2022-07-01T07:46:03.516440885Z", "Path": "/bin/sh",

      配置目录

      [nux]: cd /var/lib/docker/containers/4fd7/

      修改文件 hostconfig.json 中的 PortBindings

      vim hostconfig.json

      "PortBindings":{"2222/tcp":[{"HostIp":"","HostPort":"2222"}],"5000/tcp":[{"HostIp":"","HostPort":"5000"}],"80/tcp":[{"HostIp":"","HostPort":"40001"}],"8070/tcp":[{"HostIp":"","HostPort":"8070"}],"8081/tcp":[{"HostIp":"","HostPort":"8081"}]},

      "80/tcp":[{"HostIp":"","HostPort":"40001"}] 80 容器内部端口 40001 外部映射端口

      修改 config.v2.json 中的 ExposedPorts

      vi config.v2.json "ExposedPorts":{"2222/tcp":{},"5000/tcp":{},"80/tcp":{},"8081/tcp":{},"8070/tcp":{}},

      重启服务

      systemctl start docker

      启动容器

      docker start <container id>

      验证修改

      docker ps -a

    1. 请勿在调试模式和热重载功能开启的情况下做性能测试。 截止目前文档所示内容,你的应用应该运行在调试 (debug) 模式中,这个模式意味着在更大的性能开销下实现了更快速的开发效率,比如热重载功能的启用,因此你可能要面临较差质量的动画效果。当你准备分析应用性能或要打包发布的时候,你可能需要 Flutter 的 profile 或者 release 构建,相关文档,请查阅文档: Flutter 的构建模式选择。

      flutter 的构建模式

    1. 情景:单独下载了 Dart SDK

      执行: where/where.exe flutter dart

      出现提示 Flutter SDK 内的 dart 命令不在首位。

      则需要更新 PATH,将 C:\path-to-flutter-sdk\bin 放在 C:\path-to-dart-sdk\bin\ 前面(当前场景)。 重启命令行使修改生效,再次运行 where,此时来自相同目录的 flutter 和 dart 已经排在前面。

    1. 里边说的:职责驱动、问题驱动、使命驱动。

      我的观点是认为都不如 好奇心驱动。

    2. 原文: 第二个就是总结,总结的过程是不断梳理自己的过程,把自己迷迷糊糊,似是而非的东西分类归类,而且总结越多就能够用好时间的复利,就能够越促进成长。

      自我总结:

      Part 03 之 02: 第二个总结的总结:总结,即不断梳理,以达发现/发掘忽略、忽视、迷惑、似是而非。

    3. 促进你成长的到底是什么:是你自驱想要享受这个练、思、悟的过程 还是 因为渴望得到周边人的认可/反馈/评价。这两者在你顺利的时候可能没什么感觉,但当你面对晋升失败,项目不利等挫折的时候就会有非常大的差异。

      促进你成长的到底是什么? 什么促进你的成长?

      找到成长的源动力

      如果你能够找到自己成长的源动力,那么在遇到真正的困难和迷茫时候才能够摆正好自己的心态,寻找突破口,让自己走出困境,得到长足的成长。

    4. 有技术能力的做法特征是能够通过现象看到本质,并能够通过对问题的抽象归纳进行技术架构层调优以解决同类问题。

      有技术能力的做法特征:是能够通过现象,看到本质,并能够通过对问题的抽象归纳,进行技术架构层调优,以解决同类问题。

    5. 这四种不同的做法我们可以看出来,即使是这些重复的琐碎类工作,我们也可以从扩大受益面的角度去提炼价值,然后寻求多个层次的解法。在解决问题的过程中自然而然也锻炼了自己多层次的思考和抽象能力。

      从扩大受益面的角度去提炼价值,然后寻求多个层次的解法。 在解决问题的过程中自然而然也锻炼了自己多层次的思考和抽象能力。

      名词:多个层次、多层次、多层次的思考、多层次的抽象能力、扩大受益面的角度

    6. 将此问题背后根因找到,从业务原理或者产品功能上去找解法。将技术工具抽象为业务功能的完善。到这个程度说明你已经从单纯的技术提效看到了架构合理性问题,并尝试在业务上寻求彻底根治的办法。

      问题背后根因; 业务原理; 产品功能; 将【技术工具】抽象为【业务功能】的完善; 单纯的技术提效、架构合理性问题、再业务上寻求彻底根治的办法;

  6. Jun 2022
    1. 回顾过去十年,数字化转型驱动着技术创新和商业元素的不断融合和重构,可以说,现在已经不是由商业模式决定采用何种技术架构,而是由技术架构决定企业的商业模式。

      现在已经不是由商业模式决定采用何种技术架构,而是由技术架构决定企业的商业模式。

  7. docs.microsoft.com docs.microsoft.com
    1. Provides information about network latency and network loss at intermediate hops between a source and destination.

      pathping

      pathping /n baidu.com

    1. 你为啥说Nginx和OpenResty在安全性和稳定性方面有问题?有啥证据吗?答:    说明一个事情的方法有两种,一种叫理论证明,另外一种叫举例。第一种方法比第二种方法要有力量的多。    一个使用自动内存回收机制的语言,其稳定性和安全性比使用手动内存回收机制的语言要高,这是理论上推导出来的,而不是靠举例子的。对应的代价是运行内存回收逻辑的成本,这个在文章中也说明了。    建议大家阅读一下Go语言的设计思想和诞生历史。或许大家没有注意到,Go语言的作者之一Ken Thompson正是C语言的作者。为什么老爷子在发明C语言数十年后又发明一种新的语言?        也可以去阅读一下OpenSSL修改Bug的历史,看看其中由于内存管理产生了多少问题(https://www.openssl.org/news/vulnerabilities.html)。类似这样的错误是无法根除的,这是C语言设计机制的问题,不是写程序的人小心一些、系统多运行几年就可以解决的。

      说明事情的方法,一种是理论证明,另一种是举例。

    1. 导致美国通胀率高企的主要原因包括:从内因来看,当前经济增速超过潜在经济增速,国内消费复苏早于生产复苏,对部分源自中国的进口品征收了高昂关税;从外因来看,2022年2月下旬俄乌冲突的爆发对全球大宗商品市场造成新的供给侧冲击,导致以原油、粮食为代表的大宗商品价格飙升,对美国造成了输入性通胀压力。

      @2022/06/24

    1. 人们总是抗拒变革,为什么?詹姆斯·亚当斯(JamesAdams)在《概念障碍》(ConceptualBlockbusting)一书中指出,在面对变革时共有四种障碍,分别是感知障碍(Percep-tualblocks)、情感障碍(emotionalblocks)、文化和环境障碍(culturalandenvironmentalblocks)、知识和表达障碍(intel-lectualandexpressiveblocks)。感知障碍主要是指让人无法清楚认知问题本身造成的障碍,这主要是认知方式造成的,对环境、问题、事件本身缺乏充分的了解,无法从不同角度看问题等等;情感障碍主要是影响变革的情绪、情感障碍,比如说人们害怕风险和失败,害怕不确定性,不喜欢打破习惯,对新观点过早下判断等;文化和环境障碍是来自于外部环境,社会常常会强加一些抑制变革过程的严格准则,对传统的依赖也会阻碍创造性思维;知识障碍主要是因为缺乏解决问题相应的知识基础,或者使用错误的策略解决问题,缺乏灵活性,表达障碍主要是无法有效交流造成的。

      Conceptual Blockbusting

    1. 日常生活中观察到的现象为例说明了马汀的错误:餐厅以 4.99 美元的价格向我出售培根和鸡蛋,这并不意味着它们就值这个价,不管是不是从普遍意义上来看。事实上,对于餐厅来说,这些培根和鸡蛋的价值低于 4.99 美元,对于我来说,它们的价值高于 4.99 美元。

      经济交换就是等价交换,就是一错误观念的例子之一。

    2. 就像 “交换必然是等价交换” 一样, “货币是价值尺度” 同样是由来已久的经济学谬误。

      经济谬误

    3. 我们口中的 “货币” 根本不是 “实际存在的东西” ,而是一种用比例来比较不同事物的数学思维:例如,1 个 X 等于 6 个 Y。

      用比例来,比较不同事物的数学思维。例如,1个 X 等于 6 个 Y。

    1. <?php$base = array("orange", "banana", "apple", "raspberry");$replacements = array(0 => "pineapple", 4 => "cherry");$replacements2 = array(0 => "grape");$basket = array_replace($base, $replacements, $replacements2);print_r($basket);?> The above example will output: Array ( [0] => grape [1] => banana [2] => apple [3] => raspberry [4] => cherry )

      array_replace() replaces the values of array with values having the same keys in each of the following arrays.

    1. 用户体验的核心要义仍是对设计、工程、客户服务等方面的综合考量。一款产品不单单是它本身,而是包含了一整套聚合的完整体验。没有任何一款产品是一座孤岛。 —— 《设计心理学1:日常的设计》唐纳德·诺曼(前苹果公司体验架构师)

      抽象概括——用户体验的核心要义:对设计、工程、客户服务等方面的综合考量。 阐述——一款产品不单单是它本身,而是包含了一整套聚合的完整体验。没有任何一款产品是一座孤岛。

    1. When a query needs to access most of the rows, reading sequentially is faster than working through an index. Sequential reads minimize disk seeks, even if not all the rows are needed for the query.

      When a quest needs to access most of the rows, reading sequentially is faster than working through an index.

      Sequential reads minimize disk seeks, even if not all the rows are needed for the query.

    2. leftmost prefix

      最左前缀原则。

    1. 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

      关系型数据库,是建立在【关系模型】基础上的数据库,借助【集合代数】等数学概念和方法来处理数据库中的数据。

    1. 业务架构包括企业的组织架构、业务域划分、业务能力地图、业务流程等内容。业务架构的核心是定义清楚整个企业是如何运作的,在运作过程中有哪些痛点问题,为不同的问题域划分清晰的边界,梳理出每个问题域的业务需求,并最终提炼出产品需求,为后续系统建设提供清晰明确的指导。
      • 业务架构,包括企业的组织架构、业务域划分、业务能力地图、业务流程等内容。

      • 业务架构的核心是定义清楚整个企业是如何运作的,在运作过程中有哪些痛点问题,为不同的问题域划分清晰的边界,梳理出每个问题域的业务需求,并最终提炼出产品需求,为后续系统建设提供清晰明确的指导。

    2. 从大的逻辑上看,应用架构是负责解决业务架构中各个问题域范围内的问题。数据架构中的模型会被应用架构中的各个单元处理。

      大的逻辑上看,应用架构是负责解决业务架构中各个问题域范围内的问题。

      数据架构中的模型会被应用架构中的各个单元处理。

      • 问题域
      • 问题域名范围内的问题
    1. 上一代共享协议(TCP/IP、HTTP、SMTP 等)产生了不可估量的价值,但其中大部分在应用层被捕获并重新聚合,主要以数据的形式(想想谷歌 、脸书等)。 互联网堆栈,就价值的分配方式而言,由「瘦」协议和「胖」应用程序组成。 随着市场的发展,我们了解到投资应用程序会产生高回报,而直接投资协议技术通常会产生低回报。
  8. May 2022
    1. A Definition of Digitalization There’s still some debate around the exact meaning of digitalization, which means that people sometimes use it to describe digitization. However, the general consensus is that digitalization refers to the conversion of processes or interactions into their digital equivalents.
    2. A Definition of Digitization In the simplest of terms, digitization is turning something into bits and bytes, or 1’s and 0’s.

      Digitization is basically the process of taking analogue information, such as documents, sounds or photographs, and converting into a digital format that can be stored and accessed on computers, mobile phones and other digital devices.

    1. As SAP News points out, you would digitize a document, but you would digitalize a factory. As it pertains to reporting, you would digitize a report — but you would digitalize your organization’s data collection process and workflows.
    2. Digitalization: Transforming your business processes for digital
    1. Digitization definition: any time you translate something into bits and bytes – for example, by scanning a photo or a document – you are digitizing that object.
    1. 而对于Digitalization,Gartner给出的定义是“利用数字技术改变或提升业务流程或者商业模式”,侧重于使用通过Digitization得到的数字信息来创造效益。该步骤通常与云迁移相关联,在(相对)较短的时间内提供必要的KPI和ROI。
    2. Digitization所指的数字化简单的讲是将模拟信号/实物转换成数字形式,也就是转换成电脑能保存和处理的二进制“0”和“1”。比如将一张胶卷冲印的老照片扫描成数码照片,用手机拍一段视频等。这通常是第一步,要求公司了解其控制的数据的价值。
    1. an L7 proxy and communication bus

      L4 & L7 Proxy.

      L4 load balancers deal with individual connection flows (think TCP/UDP packets, plain bytes).

      L7 load balancers deal with individual requests (think HTTP requests, GETS or POSTs)

    1. The differences between the L4 and L7 proxy variants come from which level of the OSI model they deal with. L4 load balancers deal with individual connection flows (think TCP/UDP packets, plain bytes), while L7 load balancers deal with individual requests (think HTTP requests, GETs or POSTs).

      L4 & L7 Proxy.

      L4 load balancers deal with individual connection flows (think TCP/UDP packets, plain bytes).

      L7 load balancers deal with individual requests (think HTTP requests, GETS or POSTs)

    1. 影响服务器负载的因素:  1、CPU使用率  2、线程数量  3、IO使用率  4、swap使用率  5、因宿主机负载过高导致资源分配不足

      影响服务器负载的因素: 1、CPU 使用率; 2、线程数量; 3、IO 使用率; 4、swap 使用率; 5、因宿主机负载过高,导致资源分配不足

    1. 查看内存信息1)使用free命令默认单位为K,可通过结合参数-b、-k、-m分别以单位B、K、M进行显示
    1. FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程一直保持在内存,不是fork-and-execute,并因此获得较高的性能。FastCGI支持分布式部署,可以部署在WEB服务器以外的多个主机上。 PHP-CGI作为PHP自带的PHP FastCGI管理器对FastCGI的管理方式简单,也不够灵活高效。 PHP-FPM为了解决PHP-CGI的不足,为PHP FastCGI提供了一种新的进程管理方式,可以有效控制进程,平滑重载PHP配置,其master process是常驻内存的,worker process有static、dynamic、ondemand三种管理方式。PHP-FPM进程池中的CGI在接受并处理完pm.max_requests个用户请求后将会respawn,并不会保证单个CGI是long-live and always be running,而会以更加灵活高效的方式来保证客户端的连接请求可以被多个CGI处理。
    1. Mac keyboard shortcuts By pressing certain key combinations, you can do things that normally need a mouse, trackpad, or other input device.
    1. When running Windows on your Mac via Boot Camp, the keyboard mappings are changed so they make more sense in Windows. The Option key functions as Alt and the Command key functions as the Windows key.
    1. Downstream: In IT, "downstream" refers to the transmission of data to an end user or toward an end user from a central server or point of origin. This is in contrast to upstream transmissions, which move from the end user to the central repository. The terms "uploads" and "downloads" are often used to refer to upstream and downstream ...
    1. the majority of operational problems that arise when moving to a distributed architecture are ultimately grounded in two areas: networking and observability.
    1. 购物车界面的业务逻辑拆分成了两部分: 接口部分:Cart 和 CalculateCart 是接口。变动相对来说不频繁。 实现部分:具体的 calcXszkPromotion,calcMemberPromotion 这些界面渲染方法

      利用依赖倒置,我们可以把 CalculateCart 定义在依赖关系的底层,由限时折扣,会员优惠这些 Git 仓库去做接口实现。

    2. 运营位是指给界面上留下固定的位置给运营来配置

      运营位,是指给界面上留下固定的位置,给运营来配置。

      把一个界面做成数据驱动的,哪些地方留了多大槽,可以配置什么东西。 营销玩法是无穷的,策略是天天变的,但营销位是相对来说变化不那么频繁的。

    3. 服务端数据集成的方式

      服务端数据集成的方式。 数据集成可以实现任意复杂的需求,是对需求形态限制最小的集成方式。

    4. 这一类需求和离散型 UI 不同。界面上没有明显的大区块。

      混合型 UI, 离散型 UI。

      购物车是典型的混合型 UI。没有哪个 Git 仓库,可以声称对界面上的某个区块负责。

      会员价和限时特价,都想给商品打上自己的标。但是实际算价格的时候,得看哪种优惠算得的价格更低。

      在这种比较恶心的复杂需求下,如何最大化 autonomy 呢?

    1. 首先,跨域请求分为两种,一种是简单请求,即get请求和post请求(不带多余的请求头),这种情况下,浏览器会直接请求,在有允许跨域的头的情况下,予以显示。(这里并不是说没有跨域头服务器就不返回数据了,数据是照常返回的,但是浏览器拦截了返回数据。)另一种呢是复杂请求,即非get或post请求,或者是有了自定义头的请求。这种情况下,浏览器会首先发送一个options请求(预请求),来确是否允许跨域。在服务器返回的跨域条件都允许之后,浏览器才会发送正式请求。

      首先,跨域请求分为两种,一种是简单请求,即get请求和post请求(不带多余的请求头),这种情况下,浏览器会直接请求,在有允许跨域的头的情况下,予以显示。(这里并不是说没有跨域头服务器就不返回数据了,数据是照常返回的,但是浏览器拦截了返回数据。) 另一种呢是复杂请求,即非get或post请求,或者是有了自定义头的请求。这种情况下,浏览器会首先发送一个options请求(预请求),来确是否允许跨域。在服务器返回的跨域条件都允许之后,浏览器才会发送正式请求。

    2. php 跨域请求执行了两次接口, CORS,

      php,请求跨域接口;执行了两次请求;OPTIONS(预处理);get(真正请求);

      按理来说,OPTIONS(预处理) 只是判断 header('Access-Control-Allow-Headers:x-requested-with,content-type');是否通过;通过了,才执行get; 现在出现的问题是,OPTIONS请求也执行了一次程序;然后get也执行了一次程序;

      解决办法: if (strtolower($_SERVER['REQUEST_METHOD']) == 'options') { exit; }

    1. {错误:spawn C:\ wamp \ bin \ php \ php7.2.14 ENOENT 在Process.ChildProcess._handle.onexit at on OnErrorNT(internal / child_process.js:406:16) at process._tickCallback(internal / process / next_tick.js:63: 19) errno:'ENOENT', 代码:'ENOENT', 系统调用:'spawn C:\ wamp \ bin \ php \ php7.2.14', 路径:'C:\ \ wamp \ bin \ php \ php7.2.14', spawnargs:['c:\ wamp \ www \ NULB \ admin \ index.php']} < / pre>

    1. 一款轻量级、高性能、功能强大的内网穿透代理服务器 几乎支持所有协议支持内网http代理、内网socks5代理、p2p等简洁但功能强大的WEB管理界面支持服务端、客户端同时控制扩展功能强大全平台兼容,一键注册为服务
    1. Shaping has four main steps that we will cover in the next four chapters.

      1. Set boudaries. First we figure out how much time the raw idea is worth and how to define the problem.

      2. Rough out the elements. Then comes the creative work of sketching a solution. We do this at a higher level of abstraction than wireframes in order to move fast and explore a wide enough range of possibilities. The output of this step is an idea that solves the problem with the appetite but without all the fine details worked out.

      3. Address risks and rabbit holes. Once we think we have a solution, we take a hard look at it to find holes or unanswered questions that could trip up the team. We amend the solution, cut things out of it, or specify details at certain tricky spots to prevent the team from getting stuck or wasting time.

      4. Write the pitch. Once we think we've shaped it enough to potentially bet on, we package it with a formal write-up called a pitch. The pitch summarizes the problem, constraints, solution, rabbit holes, and limitations. The pitch goes to the betting table for consideration. If the project gets chosen, the pitch can be reused at kick off to explain the project to the team.

    2. Two tracks

      You can't really schedule shaping work because, by it's very nature, unshaped work is risky and unknown. For that reason we have two separate tracks: one for shaping, one for building. During any six week cycle, the teams are building work that's been previously shaped and the shapers are working on what the teams might potentially build in a future cycle. Work on the shaping track is kept private and not shared with the wider team until the commitment has been made to bet on it.

      That gives the shapers the option to put work in progress on the shelf or drop it when it's not working out.

    3. Shaping is a closed-door, creative process. You might be alone sketching on paper or in front of a whiteboard with a close collaborator. There'll be rough diagrams in front of you that nobody outside the room would be able to interpret. When working with a collaborator, you move fast, speak frankly and jump from one promising position to another. It's that kind of private, rough, early work.

    4. It's also strategic work. Setting the appetite and coming up with a solution requires you to be critical about the problem.

      • What are we trying to solve?
      • Why does it matter?
      • What counts as success?
      • Which customers are affected?
      • What is the cost of doing this instead of something else?
    5. Knowledge about how the system works will help you see opportunities or obstacles fro implementing your idea.

    6. Shaping is primarily design work. The shaped concept is an interaction design viewed from the user's perspective. It defines what the feature does, how it works, and where it fits into existing flows.

      • what the feature does
      • how it works
      • where it fits into existing flows
    7. When a project is defined in a few words, nobody knows what it means. "Build a calendar view" or "add group notifications" sound sensible, but what exactly do they entail?

      Team membres don't have enough information to make trade-offs.

    8. Principles of Shaping

      When we shape the work, we need to do it at the right level of abstraction: not too vague and not too concrete. Product managers often err on one of these two extremes.

    9. Part one: Shaping - the prework we do on projects before we consider them ready to schedule. Each chapter explains a specific step of the process, from setting the appetite on a raw idea, to sketching out a solution, to writing a pitch that presents the potential project. Along the way you'll learn specific techniques - like breadboarding and fat-marker sketching - to keep the design at the right level of abstraction.

      Part two: Betting - how we choose among the pitched projects and decide what to do si weeks at a time.

      Part three: Building - the expectations we place on the teams and the special practices they use to discover what to do.

    10. don't invest multiples of the original appetite on a concept that needs rethinking first.

      (a concept that needs rethinking first)

    11. We reduce risk in the shaping process by solving open questions before we commit the project to a time box.

      We don't give a project to a team that still has rabbit holes or tangled interdependencies.

    12. At every step of the process we target a specific risk: the risk of not shipping on time. .... Improving your discovery process should come after regaining your ability to ship.

      You can have the best strategy in the world, but if you can't act on it, what good does it do?

    13. Third, appetite. Instead of asking how much time it will take to do some work, we ask: How much time do we want to spend? How much is this idea worth? This is task of shaping: narrowing down the problem and designing the outline of a solution that fits within the constraints of our appetite.

    14. Second, we shape the work before giving it to a team. A small senior group works in parallel to the cycle teams. They define the key elements of a solution before we consider a project ready to bet on. Projects are defined at the right level of abstraction: concrete enough that the teams know what to do, yet abstract enough that they have room to work out the interesting details themselves.

    15. First, we work in six-week cycles.

    16. To manage this new capacity, we switched from ad-hoc project lengths to repeating cycles. (It took some experimentation to find the right cycle length: six weeks. More on that later.)

      We formalized our pitching and betting processes.

      My role shifted again, from design and product management to product strategy.

      I needed new language, like the word "shaping", to describe the up-front design work we did to set boudaries and reduce risks on projects before we committed them to teams.

    17. Don't think of this asa a book. Think of it as a flashlight. You and your team have fumbled in the dark long enough. Now you've got something bright and powerful to help you find a new way.

    18. Founders ask themselves: "why can't we get features out the door like we used to in the early days?" 创始人问自己“为什么我们不能像早期那样把功能推出去?”

    19. At the time I wasa a web designer with a focus on usability and user interfaces. I executed Json's design direction for key features of the app and collaborated with him to fill in details of the concept.

    20. We knew we wouldn't get anywhere with those ten hours of programming unless we used them very deliberately. Our intense focus on "hammering" the scope to fit within a given time budget was born under these constraints.

    21. I learned the techniques programmers use to tame complexity: things like factoring, levels of abstraction, and separation of concerns.

      with one foot in the design world and one foot in the programming world, I wondered if we could apply these software development principles to the way we designed and managed the product.

    22. I wore the designer and product manager hats on the project and prototyped the breadboarding and scope mapping techniques described in this book to manage the complexity.

    23. ...we redesigned Basecamp from scratch for version 2.0.

    24. We needed language to describe what we were doing and more structure to keep doing it at our new scale.

    25. Information would get lost in the game of telephone between the client, the designer, and the person managing the project.

    1. 而食品和药品是国计民生大宗重要物资,相应的包装需求十分旺盛。

      食品和药品是国计民生大宗重要物资。 由此而附带衍生的需求,如包装需求,十分旺盛。

    2. 中国是个塑料原料生产大国,更是个巨大的塑料制品消费国。据行业权威数据统计显示,截止2013年国内塑料制品上一定规模的企业有13699个。全国塑料产品产量6188.66万吨,同比增长8.02%。其中,塑料薄膜制品产量为1089.3万吨;塑料日用品产量为471.6万吨;塑料人造革、合成革制品产量为347万吨;纤维强化塑料产品产量259.86万吨;泡沫塑料产品产量为146.5万吨。
    3. 2007年1-12月,中国塑料制品企业实现累计工业总产值801815657千元,比上年同期增长27.06%;2008年1-10月,中国塑料制品企业实现累计工业总产值788006448千元,比上年同期增长22.16%。
    4. 贝克兰嗅到的第一个诱惑是天然的绝缘材料虫胶价格的飞涨,几个世纪以来,这种材料一直依靠南亚的家庭手工业生产。经过考察,贝克兰把寻找虫胶的替代品作为第一个商业目标。
    5. 我们通常所用的塑料并不是一种单一成分,它是由许多材料配制而成的。其中高分子聚合物(或称合成树脂)是塑料的主要成分,此外,为了改进塑料的性能,还要在高分子化合物中添加各种辅助材料,如填料、增塑剂、润滑剂、稳定剂、着色剂、抗静电剂等,才能成为性能良好的塑料。塑料助剂又叫塑料添加剂,是聚合物(合成树脂)进行成型加工时为改善其加工性能或为改善树脂本身性能所不足而必须添加的一些化合物。例如,为了降低聚氯乙烯树脂的成型温度,使制品柔软而添加的增塑剂;又如为了制备质量轻、抗振、隔热、隔音的泡沫塑料而要添加发泡剂;有些塑料的热分解温度与成型加工温度非常接近,不加入热稳定剂就无法成型。因而,塑料助剂在塑料成型加工中占有特别重要的地位。

      通常所用的塑料,是由许多材料配置而成。 高分子聚合物是塑料的主要成分,又称为合成树脂。 添加辅助材料:如:填料、增塑剂、润滑剂、稳定剂、着色剂、抗静电剂等。

      增塑剂、发泡剂

    6. 黄粉虫又叫面包虫,在昆虫分类学上隶属于鞘翅目,拟步行虫科,粉甲虫属(拟步行虫属)。原产北美洲,50年代从前苏联引进中国饲养,黄粉虫被誉为“蛋白质饲料库”。其干品含脂肪30%,含蛋白质高达50%以上,此外还含有磷、钾、铁等多种元素。干燥的黄粉虫幼虫含蛋白质40%左右、蛹含57%、成虫含60%。在中国国内,黄粉虫实际上类似蚕,人类可以直接食用,炒着吃,也可以用来做饲料,黄粉虫作饲料喂养的蝎子、蜈蚣、蛤蚧、蛇、热带鱼和金鱼,不仅生长快、成活率高,而且抗病力强,繁殖力也大大提高。养殖黄粉虫十分容易,养殖户可用新鲜燕麦、小麦糠、苹果养殖。
    7. 分子结构 基本有两种类型:第一种是线型结构,具有这种结构的高分子化合物称为线型高分子化合物;第二种是体型结构,具有这种结构的高分子化合称为体型高分子化合物。有些高分子带有支链,称为支链高分子,属于线型结构。有些高分子虽然分子间有交联,但交联较少,称为网状结构,属于体型结构。两种不同的结构,表现出两种相反的性能。线型结构,加热能熔融,硬度和脆性较小的特点。体型结构硬度和脆性较大。塑料则两种结构的高分子都有,由线型高分子制成的是热塑性塑料,由体型高分子制成的是热固性塑料。

      分子结构:线型结构、体型结构。

      线型高分子化合物、体型高分子化合物。

      高分子带有支链,称为支链高分子,属于线型结构。 高分子间有交联,但交联少,称为网状结构,属于体型结构。

    8. 塑料可区分为热固性与热塑性二类,前者无法重新塑造使用,后者可以再重复生产。热可塑性其物理延伸率较大,一般在50%~500%。在不同延伸率下力不完全成线性变化。

      塑:热固、热塑