Jacques-YQ 发布的文章

9月21日是世界阿尔茨海默病日/世界老年痴呆日.
阿尔茨海默以前也被翻译成阿兹海默, 英文是alzheimers. 这种疾病简称AD.
今年9月20日发布了阿尔茨海默病患者需求洞察报告, 根据报告, 中国60岁以上痴呆症患病人口1500万,其中AD约1000万, 全球为5500万. 考虑多数人在疾病早期不影响生活的时候不会主动去医院就诊, 所以实际数据应该更多.
根据gpt3.5提供的信息, 疾病从短期记忆开始进展, 最终会影响长期记忆, 包括对事物的认知, 语言听说读写能力的逐渐丧失等等.
患者还会因此丧失独立生活的能力.
简单易行的测量量表包括Mini-Mental State Examination (MMSE)和Montreal Cognitive Assessment (MoCA),其他还有Clinical Dementia Rating (CDR), Functional Assessment Staging (FAST), Alzheimer's Disease Assessment Scale-Cognitive Subscale (ADAS-Cog)、Global Deterioration Scale (GDS)等。
小程序搜索阿兹海默病电子量表可以找到一些量表.
患病的主流假说是Aβ蛋白沉积, 目前特效药少且效果有限, 药价又及其高昂.

MMSE示例

共30 项题目,每项回答正确得1分,答错误或答不知道评0分量表总分范围为 0-30分。测验成绩与文化水平密切相关,正常界值划分标准为:文盲>17 分,小学>20 分,初中及以上>24 分。
简易智能精神状态检查量表(MMSE)

定向力

现在是(星期几)(几号)(几月2(什么季节)(哪一年) ? (5分)
我们现在在哪里:(省市)(区或基)(街道或乡)(什么地方)(第层楼) (5分)

记忆力 (3分)

现在我要说三样东西的名称,在我讲完之后,请您重复说一遍请您记住这三样东西,因为几分钟后要再问您的。
(请仔细说清楚,每一样东西一秒钟)。
“皮球”“国旗”“树木”
请您把这三样东西说一遍,(以第一次答案记分)

注意力和计算力 (5分)

请您算一算 100 减去 7,然后从所得的数目再减去 7,如此一直的计算下去,请您将每减个 7后的答案告诉我,直到我说“停”为止。
(若错了,但下一个答案是对的,那么只记一次错误)93.., 86.., 79,,, 72.., 65..。

回忆力 (3分)

现在请您说出刚才我让您记住的那三样东西?
“皮球”“国旗”“树木”

语言能力

(出示手表) 这个东西叫什么? (1分)
(出示铅笔) 这个东西叫什么? (1分)
现在我要说一句话,请您跟着我清楚地重复一遍。四十四只石狮子 (1分)
我给您一张纸请您按我说的去做,现在开始:用右手拿着这张纸,用两只手将它对折起来放在您的大腿上。(不要重复说明,也不要示范) (3分)
请您念一念这句话,并且按上面的意思去做。闭上您的眼睛 (1分)
您给我写一个完整的句子。(句子必须有主语、动词、有意义) 记下所叙述句子的全文。__ (1分)
这是一张图,请您在同一张纸上照样把它画下来。(对:两个五边形的图案,交叉处又有个小四边形) (1分)

评分参考:

分数在 27-30 分:正常
分数<27 分:认知功能障碍
21-26,轻度10-20,中度0-9,重度

MoCA量表

百度文库上有, 并且该量表有官网https://mocacognition.com/, 以前还是<mocatest.org>,现在跳转上面的.com网站了.

使用SD或者MD生成了一张不错的图,可是其中的细节不满意甚至有错误, 需要修改怎么办? 可以用SD的controlnet, 不过的4G小显存是在撑不住, 而且用SD给MD修图效果实在不太好, 找到这个https://pixlr.com/, 有AI Fill的功能可以实现很快修图.
只是有2个问题.第一是AI Fill第一次正常,第二次不知道为啥就有错误了. 第二是每天免费只能保存三次. 不过对于我这种超低频使用也就足够了.

昨天上午微信付款码买早餐, 发现居然付不了. 微信绑定的招行信用卡和储蓄卡都无法支付. 开始以为是微信出了什么问题, 直接打开招行的APP出示付款码, 依然无法支付. 我还有张兴业的卡, 打开兴业开通付款码支付, 仍然无法支付! 从返回的错误来看(不太记得是哪个客户端返回的错误), 是卡被冻结了!
想起来凌晨2:14收到一条10655810999233的短信, 系统标识深圳反诈中心, 内容是:【深圳反诈中心】您所接听的电话为高频呼叫来电,已被举报涉嫌诈骗,请勿继续联系。咨询、报警电话96110。我心想我近期也没有接什么诈骗电话呀, 就算有打过来也被手机系统自动挂断了. 而且穷成这样哪有什么钱给他骗(手动狗头).
先拨打招商银行的电话95555, 客服小姐姐似乎没睡醒, 声音感觉是从枕头里发出来的, 也许是值夜班辛苦了吧. 跟我说是被深圳市公安局刑侦科冻结了. 冻结期限是两天48小时, 但不排除冻结期到了以后又续冻的.
然后又拨打短信里提示的96110, 这位客服小姐姐说帮我申诉上报查询一下, 然后让我报了姓名, 身份证, 电话号码归属地, 职业, 跟查户口一样. 然后又让我报了一张常用卡号/银行/办理地,然后说已经上报, 处置部门核查清楚后给我回电话. 因为担心用奇怪的号码打过来被我的手机系统挂断, 确认回复电话是96110.
从结果来看, 到现在应该有30个小时了, 并没有处置部门给我回电话, 所以96110记录的这一堆私人信息并没有没有什么用处.
96110的语音提示说微信小程序粤省事中有阳光冻结也可以进行解冻, 于是到粤省事里搜索阳光冻结. 人脸验证登录后, 并没有列出来我被冻结的卡. 我猜测是要先申请查询出来以后再申请解冻? 于是先申请了查询. 又是上传身份证照片又是上传银行卡照片, 提交后, 竟然不是实时查的, 需要两三个工作日!
我原先估计大概率是误伤,应该能很快解除, 这一番操作完发现根本没那么快解决. 赶快先回去借了我妈100元到微信零钱里, 先给把早餐钱给付了, 另外应付一下这两天的吃饭和坐车.
此后不久,收到了招行的短信, 看起来是转发的信息: 【招商银行】公安机关在侦办电信网络诈骗案件中,发现诈骗分子使用的银行账户曾接收过您的转账汇款,您正在遭遇电信网络诈骗。为了您的财产安全,请尽快前往当地反诈中心或派出所咨询。如有疑问请及时拨打110或96110。(国家反诈中心).
搜索了一下网上的信息, 有一篇赤峰市反诈中心发的反诈中心把银行卡冻结了,止付一个月,怎么办?, 说这属于保护性止付, 给出的方案还是找冻结机关申请提前解除. 百度搜索了不少网友回复, 有一位说不如全部取现回到原始社会算了.
昨天到了中午一直没有收到96110回电, 我就去了一趟附近的招行网点. 前台接待的小姐姐说最近挺多这种情况, 开始说应该可以解除. 然后我在柜台上一查询, 柜台的大叔说这是公安局封锁的解除不了, 还给我写了具体封锁的单位是深圳市公安局刑侦局, 让我联系反诈中心. 我说打过96110了, 他跟我说不行得打81234567,这个是深圳本地的. 另外跟我说, 他那边来看其他卡并没有锁.
我用兴业的卡去招行的ATM试了下确实可以取钱. 这下有些不理解了, 是上午这一段时间其他卡解封了, 还是说其他卡并没有封, 只是面包店不接受其他支付方式? 但是微信支付绑定了好几张卡, 也都不能支付啊. 算了, 其他卡虽然没啥钱但多少还能救个急.
回去路上, 我拨打了81234567, 果然不同, 还没说两句对方就说我的账户是被深圳市公安局龙华分局封的, 得找他们. 我问怎么联系, 结果就很不耐烦了, 让我自己打114查询. 好神奇, 市反诈中心不知道自己下属反诈中心的电话号码.
114未必有登记龙华区反诈中心的电话, 不过我还是抱着试试看的心态拨打了114, 果然没有, 只是回复了一个龙华区公安局的电话23327176. 我打过去, 也接不通 , 不是忙音也不是回铃音, 而是有点异常的一种铃音, 感觉不像是正常工作的号码.
没办法在微信上找, 关注了龙华区公安局的微信号, 然而个给的号码都是户政和出入境的号码以及各个办事大厅的号码. 抱着试试看的态度打了户政的号码, 所有的提示选项里没有一个跟反诈有关的, 只好挂掉. 又拨打了公安局北站服务中心的3个号码, 全部占线, 好吧那就听天由命了.
今天上午, 事情终于有点转机, 收到了1065581099941183的短信, 内容是龙华公安分局在侦办电信网络诈骗案件中,发现您向涉诈账户转过款,存在较高被骗风险。为守护您的财产安全,按照《中华人民共和国反电信网络诈骗法》,龙华反诈中心(联系电话:85135134,19926632110、18194063110)将对您的银行账户采取持续性保护性止付措施,请做好临时生活用款准备,如需申请解除,请尽快咨询龙华反诈中心或前往居住地派出所说明情况,申请予以解除。公安机关不会向您索要手机验证码、银行卡密码,更不会要求您转账。
终于和龙华反诈中心搭上线了. 但是你也不能锁了一天了才告诉我让我去做好临时生活用款准备呀.
赶快拨打了提供的座机, 小哥哥先是吓唬我说要锁一个月, 然后再问我电话说帮我查查是哪一条信息触发的. 我提供了我的手机号码(嗯, 真正解决问题的才不是查户口一样搞那么多私人信息), 一查竟然是前几天去天虹对公采购触发的! 也就是天虹对公账号被判定为诈骗?!?! 奇哉怪也开大玩笑了. 小哥哥说了下流程, 说这是国家反诈中心下发的信息, 他们发现这个错误(系统BUG?),已经提报市局进行解封了, 让我再等一两天. 我也只能说好吧.
其实这个错误很严重的, 冻结的这张卡不但日常吃饭买菜, 而且是工资卡和还贷卡, 假如是在还贷期间冻结了, 还不判我个失信被执行人? 另外, 这种提前招呼也不打一声就冻结的, 还说是保护, 真是让人哭笑不得.
有几个问题, 我觉得作为普通人民需要注意的. 首先, 这个是误伤, 不过就像是国外某些国家躺在家里床上能被外面的流弹打死一样, 自己得有些现金做应急预防措施; 其次, 现在生活越来越数字化, 对个人很多重要的信息都在网上, 比如钞票/通讯/信用/隐私信息/照片视频等等, 数字化这些东西本质上都是代码和算法, 都有出bug受攻击的时候, 应该都要有一些物理备份手段或者离线备份方式, 给自己的数字财产上一道物理的或离线的保险;最后, 这些庞然大物的系统的小bug, 对整个系统来说出了问题影响微乎其微,而对涉及到的个人可能影响是巨大的, 这些系统是否也得有个备份呢.

人年纪大了, 会变得越来越保守, 越来越听不进去别人话, 越来越觉得自己的人生经验无比正确.
不但是别人, 更是自己,还挺明显的.40岁比10岁的固执, 50岁比40岁固执, 60岁比50岁固执.
自勉之.

有两种安装方式。一种是在套件中心-设置-套件来源里面新增https://www.cphub.net这个源,点击确定后(等好久)出现社群菜单,在里面依次分别安装easy bootstrap installeripkGUI,但我这种方法失败了,提示安装包格式不正确。
第二种是直接通过wget下载后安装。先用ssh登录到dsm上:

wget http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh
chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
sudo sh syno-i686-bootstrap_1.2-7_i686.xsh
ipkg

这样可以运行ipkg就装好了
安装软件:

ipkg update
ipkg install mlocate

除了mlocate有很多人推荐 lrzsz,这似乎个通过ssh传输文件的协议。
安装后在某种情况找不到locate,位置在/opt/bin`中。

pick up字面上似乎是捡起,但从其丰富的衍生意思来看,还包含了和自己一起/变成自己的东西的。
pick up sth 捡起
pick up sb 接人(与某人一起)
pick up the tab 买单(账单成为自己的)

GPT3.5生成的,仅供参考

名词后缀 含义 例词 例词翻译 我的理解
-age 表示状态或报酬或集体 marriage,mileage,wastage 婚姻、里程、浪费 长期动词的名词化
-ance,-ence 表示状态或动作 importance,evidence,existence, performance 重要性、证据、存在, 表演 (动词的)xx性质
-ant,-ent 表示人或物 student,assistant 学生、助理 (动词的)xx工作者
-dom 表示状态、领域或国家 freedom,wisdom,kingdom 自由、智慧,王国 xx领域
-ee 表示受事者 employee,payee,trainee 员工、收款人、受训人员 被xx的人
-er,-or 表示人或物 player,actor, teacher,speaker 玩家, 演员, 教师、演讲者 xx的人
-hood 表示状态或集体 childhood,neighborhood 童年、邻里 更大时间或地点范围的xx
-ian 表示国籍、身份或信仰 American,Christian 美国人,基督徒 xx国人
-ism 表示特定信仰、思想或行为 capitalism,racism, ,patriotism 资本主义、种族主义 xx主义
-ist 表示职业, 信仰或追求 artist,dentist, optimist,violinist 艺术家、牙医, 乐观主义者、小提琴家 (名词)xx工作者
-ity 表示性质或状态 ability,flexibility,diversity, quality,equality 能力、灵活性,多样性, 质量、平等 (形容词的)xx性质
-ment 表示状态或结果 movement,achievement, management, treatment 运动、成就, 管理, 治疗 长期动词的名词化
-ness 表示状态或特征 happiness,kindness 幸福、善良 形容词的名词化
-ology 表示学科或学术领域 biology,psychology 生物学、心理学 xx学
-ship 表示地位、关系或拥有 leadership,ownership, friendship,partnership 领导力、所有权, 友谊、伙伴关系 xx能力/权力
-tion, -sion 表示动作或状态 action,emotion, decision 行动、情感, 决定 短期动词的名词化
-ure 表示状态或过程 failure,departure, pressure, measure 故障,离开, 压力,测量 动作的结果
-y 表示性质或状态 beauty,tragedy 美丽、悲剧

下面总结自这篇文章

动词后缀 含义 例词 例词翻译 我的理解
-ate cause to be graduate,accommodate,celebrate 毕业,提供食宿,庆祝 致使为xx名词状态
-en to cause to become moisten,darken 滋润,使变黑暗 使变为xx形容词/名词状态
-er,-or/-our action ponder,clamor/clamour 深思,叫嚣 实物名词比喻抽象动作,或反复的动作
-ify cause specify 指定 xx形容词化
-ish 做、使... cherish,finish 珍爱,完成 使完成xx状态
-ize 使成...状态 civilize,realize 使开化,意识到 使得进入xx状态
-le 反复 chuckle,dazzle 咯咯笑,发出火花 使xx状态进行中
-ure act conjecture

0 前言

创新就是把创意变为价值。
创新范围,从宏观说,就是正确地做正确的事。从项目说:
问题、挑战、机遇->识别目标市场(客群)->产品定义(核心利益、有形特性、增强特性)->识别了解相关方(内部决策链、平行部门、外部客户、对手、供应链、政策环境)->系统化流程(创意、筛选、商业论证、开发、上市前准备、上市)->营销策略->战略->支持创新的文化
关于营销,这儿提到了整合营销4P、Product/Price/Promotion/Place
七个主题

  • 战略(想去什么地方)
  • 产品组合管理
  • 产品创新流程
  • 产品创新管理
  • 产品设计和开发工具
  • 产品创新中的市场调研(根据外界环境调整汽车行驶)
  • 文化、团队和领导力(汽车内饰氛围)

1 战略

关键因素, 是定位、资源、竞争优势及其组合应用。
战略四个层级:组织战略(使命)、经营战略其次(市场份额和营收)、创新战略再次(如何重视技术和合作)、职能战略最后(各个职能部门战略)
战略再扩展,分层级为:组织战略分为:使命愿景价值观、公司战略;创新战略分为狭义创新战略、新产品开发组合战略、新产品开发项目战略,其他职能战略围绕上述战略做支撑。
组织特征: 核心性、独特性、持久性。
愿景(Vision):想象组织未来的最佳状态。
使命(Mission):确保组织的资源聚焦在哪个事项上。
价值观:精神准则

经营战略也叫业务战略 Business Strategy

波特:战略就是与众不同(差异化价值)
Tregoe和Zimmerman:战略就是选择产品和市场。

我认为波特的观点隐含了使用产品为特定市场提供服务,而且波特强调了差异化的重要性。我更认同波特,总结为:以差异化产品为选择的市场提供价值。
多数公司经营战略的核心就是产品创新和管理,经营战略落实到产品上。落实过程:

  • 经营目标(明确上面说的产品、市场,外加增长份额销量)
  • 明确产品创新的作用
  • 明确产品创新战略重点(进攻计划)。明确一些核心问题:担多大风险,领导还是追随、技术还是市场驱动、成本还是特性差异化、市场区域宽窄?
  • 选项目、选产品组合、配资源、用方法

    公司战略

  • 大公司多元化得有的整体战略
  • 在什么市场竞争, 不同业务如何协同竞争

产品创新环境

从内到外依次为

  • 产品开发
  • 内部: 财务/技术/生产/营销
  • 行业: 政府支持/资源/行业结构/产业规模/行业增长/技术趋势/市场/竞争
  • 宏观: 经济/政策/文化/社会/技术/资源/实体环境/法律

    制定战略前准备

    SWOT分析

    分析公司和行业. 公司高层应主导并统合不同部门人参与提出意见.

  • SW分析方向: 自己与竞品的差异化/资金/有形无形资源
  • OT分析方向: 市场趋势/产品供给/激烈程度/技术难度/风险

PESTLE分析(Politic, Economic, Social, Techonolgy,Legal, Environment).

分析宏观环境. 进入新市场时需要.

  • 政治: 政策/政局/外贸/税收/劳动法/限制,
  • 经济: 增长/汇率/利率/通胀率/可支配收入/失业率,
  • 社会: 人口增长/年龄分布/教育水平/安全重点/生活方式和态度/文化障碍
  • 技术: 激励/创新水平/自动化水平/研发活动/变革/意识
  • 法律: 反歧视/反垄断/就业/消保/专利/健康安全
  • 环境: 天气气候/环保/民间团体压力

德尔菲技术Delphi Technique

通过多轮问卷调查获得长期预测. 目的是"求同",并做出行动. 共有7步

  1. 中立的主持人
  2. 行业专家/客户组成小组
  3. 定义明确的问题. 是对未来发生事件的问题.
  4. 第一轮一般性问题的问答, 对答案求同
  5. 第二轮深化问题的问答, 对答案求同. 达成专家共识.
  6. 第三轮对制定决策的问答, 对答案求同. 一直无法同意的话就继续直到大家都认同.
  7. 采取行动.

    因为有句话叫"真理往往掌握在少数人手中", 所以这种方法一定有很大的局限性. 德尔菲技术的出发点, 我想跟股票(或者陪审团)类似, 集体决策定义股票价格, 也就是预测了一个上市公司未来的发展趋势. 但这个"未来"究竟有多远? 对于股市来说, 应该是指未来成熟市场(即销售格局稳定后的目标客户群)的认可度. 这种集体预测, 最多只能在认可度上升趋势的苗头之前(中期预测, 1~3年), 比较难在认可远未到来的时候预测. 然而要让认可度走上上升通道, 有时候需要长年的准备(长期预测,3~20年), 这时候需要创始人的战略眼光/定力/独裁力, 看真理是不是掌握在他的手里了.
    通过GPT3.5, 它认为Delphi Technique能消除个人偏见,并且让不同地方的专家共同参加讨论, 问题是专家选择得不好/羊群效应(跟随行业领导者的心理)等都会对结果有较大影响.
    我认为, 所谓战略眼光, 有一部分属于客观原理, 还有一部分属于运气(赌博).什么是客观的? 技术就是. 将技术扩大一些,包括提供功能的/降低成本的/提高舒适性/耐久性/外观的等. 技术的先进程度是客观的, 但先进技术并不100%战胜落后的. 所谓战胜, 也就是赢得认可度. 孟德尔的豌豆实验发表后34年无人认可, 直到他死后16年才被人所知. 人有身后名, 而对公司来说, 死后被认可是毫无意义的.

商业模式画布 BMC, Business Model Canvas

Osterwalder在2010年提出. 其实是一张表

Key Partners 重要合作 Key Activities 关键活动 Value Propositions 价值主张 Customer Relationship 客户关系 Customer Segments 客户细分
合作方/供应商/合作方资源/合作方业务范围 需要什么业务/哪些销售渠道/收入来源 给哪些客户/提供什么价值/解决的问题/哪些产品和服务 建立什么关系/哪些明确关系/如何整合/花多少钱 为谁创造价值/重要客户(大众/细分/利基市场/多样化)
Key Resources 核心资源 Channels 渠道
实物/人力/智力/资金 客户希望如何联系我们/我们如何联系客户/如何整合渠道/哪个渠道性价比高
Cost Structure 成本结构 Revenue Streams 收入来源
哪些成本/哪些资源最贵/哪些业务最贵/成本还是价值驱动业务 客户愿意花多少钱/现在花多少/为什么愿意花/每种收入来源对总收入的贡献

参考adobe的BMC

这个图有9项内容. 中间一项"价值主张"也可以说是战略价值观. 以价值主张联系左右两边的各4项. 右边是: 用什么关系/熟悉哪些客户,客户通过哪些渠道/想花多少钱买到产品. 左边是: 我用什么资源/跟谁合作/花多少钱/做什么事情
Key Activities 在课本里翻译成"关键业务". 但我感觉"业务"这个词不准确. "业务"一般指的是公司经营的产品和服务, 英文也就是Business, 是对外销售的部分, 所以业务员一般等同于销售经理(后者听起来高大上一些). 而Activities结合上面的Adobe BMC, 实际上是公司内部的经营活动, 如软件开发/知识产权管理/新技术研发等.
PS: 不知道英文原稿是不是这样, 感觉书中介绍有很多不严谨的地方. 例如图1.8中"客户关系"作为一个大项, 又放在了另一个大项"关键业务"里, "收入来源"里说"客户真正愿意为之付多少钱?"和"他们愿意付多少钱?"根本就是重复讲同一件事.

创新战略

没有统一的创新战略, 但好的创新战略都有共同的特征:

  • 创新本无序, 要拥抱变化
  • 创新是体验/学习/发展的循环
  • 创新中不断有新的有价值的东西出现和留存
  • 保持好奇心
  • 创新创造价值, 不仅仅限于新产品/新服务/新思想/新发明
  • 先上市并不一定成功
  • 尽早让客户介入
  • 要有整合不同要素的能力
  • 要有持续性

Reeves在2017年提出"信息优势创新战略", 包括在哪儿竞争/管理复杂性/对手做什么提供什么/其他信息

制定创新战略的框架

波特竞争战略

Michael Porter 2008提出. 他认为组织优势要么是成本低,要么是有差异化,再根据市场宽窄, 分为三种战略:

  • 窄市场: 细分市场战略,也叫聚焦战略. 更了解客户/更聚焦于营销和创新/
  • 宽市场成本能力: 成本领先战略. 规模经济/产品不花哨/优化供应链,采用准时制(JIT, Just-in-time)
  • 宽市场独特能力: 差异化战略. 让用户"就好这一口". 创新投入高/亲近客户/短中期预判好/技术聚焦于产品功能

我很认可波特的这种划分. 这三种战略是三选一的. 根据市场和自身特点选择. 成本优势一般只有工厂和上游供应链才有, 并且有地域特征, 比如中山/江门/绍兴/无锡有灯具的成本优势, 越往下游越不具备成本优势, 只能选择差异化和利基市场. 而差异化又更通用, 所以创业公司更多选择差异化. 利基市场因为市场小, 其寻找靠经验和运气.

迈尔斯和斯诺战略框架

Miles, Snow 1973年提出. 分竞争者为4类:

  • 探索者. 率先上市, 寻求增长, 承担风险.(特斯拉/比亚迪)
  • 分析者(跟随者). 快速跟随, 产品可能更好. (手机行业: 成功如小米,失败如锤子. 国内燃油车企)
  • 防御者. 在稳定市场中守住利基市场
  • 回应者. 在遭遇威胁时才做反应. 从描述来看是比较失败的战略, 活不久.

延续式和颠覆式创新

克莱顿·克里斯坦森( Clayton Christensen )1997年提出.
颠覆式创新更好满足一部分需求,而对另一部分需求则更差, 但更差的一部分慢慢解决或渐渐被客户忽略, 从而颠覆现有的产品.
电动车/混动车对燃油车无疑是这一种. 数码对胶卷相机也是. 手机对数码相机也是.

创新景观图( The Innovation Landscape Map ) ( Pisano, 2015 年)

商业模式和技术创新组成四象限

  • 新商业模式新技术: 架构型创新, 书上说数码摄影颠覆了柯达胶卷, 确实是从技术上(CMOS替代化学底片)到模式上(不需要卖胶卷和相纸, 打印就好)都是创新, 对用户来说时间成本和后期维护成本都更低了, 虽然开始的时候确实品质不如胶卷(这又算是CC的颠覆式创新).
  • 新商业模式旧技术: 颠覆型创新, 书上举例是安卓可能颠覆苹果, 实际上并没有, 但确实占领了很大市场. 新发明的Android系统算不算是旧技术? 基于Linux和Java, 某种程度也算.
  • 旧商业模式新技术: 激进型创新, 主要聚焦于技术创新, 书上说基因工程颠覆传统制药
  • 旧商业模式旧技术: 常规型创新, 专注改进特性,发布新产品/新版本. 如: 宝马发新车

创新支持战略

  • 产品平台战略. 快速出品、长期视角、运营增效、组织与市场都理解产品平台的底层要素、与竞品显著不同。
  • 技术战略. 预测并跟进技术, 评估自己能投入多少. 书上介绍了技术S曲线(生命周期), 包括引入/成长/成熟三个阶段, 我不太认可, 感觉产品采用率曲线(PAC)更加符合实际, 其中有一个重要的Chasm裂口, 位于引入和成长之间. 并且成熟后必然有衰退. 另外为持续跟进和开发技术, 可使用技术路线图
  • 知识产权战略. 除了专利/版权/商标外, 还有植物品种权/商业秘密. 知识产权战略有被动/主动/战略/优化型四种, 依次提升等级, 将之变为公司的核心优势和盈利关键动力.
  • 营销战略。四个层级:经营目标、营销战略、营销组合、营销计划。营销战略要回答产品↔客户中的4个问题。即:什么产品、谁是客户、产品怎么触达客户、客户怎么了解产品。营销组合4P:Product/Price/Promotion/Place,其中促销强调核心利益、有形特性、增强特性。
    这儿Place讲一下,包括渠道、库存、物流和实体分销等。
    产品的价值主张:精炼的、关于产品如何给潜在客户带来价值的说明。
    产品组合分析:
  • 能力战略

设立长期目标, 不做无意义(无目标的)工作

长期目标以几个月或者数年计算,以目标为导向管理时间。
目标应该是明确的,可考量的。也就是说,可以明确考量目标是否达成。
例1目标:【明确】建立昆虫分类学,【考量】发表《昆虫分类绪论》
例2目标:【明确】学习英语,【考量】雅思考试6分以上
更扩展的情况,每个目标可以包括若干个子目标。
例如:英语的子任务,英语听力,某某英语新闻可以听写;英语阅读,某某在线英语文章可以直接读懂,生词数不超过3个等。

设立目标的实现手段

实现手段也即是实现目标的手段。
实现一个目标可以有一个或多个手段。
每一个手段应该是由一种相对固定的步骤、相同类型的对象组成。
多个手段之间不应重合。
例:学习英语,可以有手段1阅读英语新闻,手段2背诵英语单词等。

创建和完成任务

任务是手段的具体执行,最重要应有时长。对可计数的任务应进行计数,并标明任务的完成度。
任务名可以是一类任务的名称,所以可以重复。
例如阅读英语新闻2篇,用时1小时35分。阅读英语书籍xxx 20页,用时2小时10分。

交互方式

语音命令+按键方式。
如用户按键后,发出语音命令:“阅读BBC英语新闻”。设备回复:“是什么目标的什么手段?”用户回复:“是学习英语长期目标的阅读英语新闻手段”,第一次交互,设备可以创建“学习英语”目标、“阅读英语新闻”手段、“阅读BBC英语新闻”任务。设备开始计时。阅读完毕后,用户再次按键,设备结束计时并询问完成情况,用户回复:“完成3篇”。即此项任务完成了3次。
用于第二次发出相同的语音命令:“阅读BBC英语新闻”后,因为上级的目标和手段已经创建,设备将直接计时。
对于较长的任务,每一次只完成部分(即子任务)。如用户按键后发出语音命令:“阅读《人类的起源》,共有800页”,阅读完40页后,用户再次按键,设备结束计时并询问完成情况,用户回复:“完成40页”,设备可给出进度“5%”。用户也可以一开始不说进度,在结束时补充“完成40页,共800页”。

《奇特的一生》是作者格拉宁在前苏联科学家柳比歇夫(1890年4月5日——1972年8月31日)去世后写的传记性质的作品,其中介绍了他的时间管理法。柳比歇夫也被誉为时间管理鼻祖。
我对时间管理法一直比较排斥,认为这限制了思维的自由,感觉只有产线上的工人才真正需要时间管理。“时间管理”这四个字似乎默认是要为高效而机械的工作服务的。
柳比歇夫对时间的管理——或者不如说是对所做事务的记录总结和计划——让我耳目一新,这不是为了高效而机械的工作服务,而是为了:

  • 生活的更好(Better Life),这个是作者在第一章最后总结的。
  • 认识你自己(Know thyself),作者发现柳比歇夫知道自己一年看了多少电影而自己却对自己一无所知时,我看到的作用,而这也是苏格拉底的警示格言,作为人的最重要的任务,时间记录总结正好能客观反映自己,包括喜好。
  • 为自己工作(Work for yourself),这是我读到柳比歇夫的时间守则章节之后想到的。与流水线上的高效机械工作不同,柳比歇夫做的都是创造性的研究,不但是所在机构要求的,还包括自己忽然有兴趣的。这是为自己工作,不单是为自己赚钱,而且还是为实现自己的兴趣。
    “为自己工作”是柳比歇夫的方法最能打动我的。首先这不是用节约的时间实现了马克思在《资本论》中的为他人所“剥削”;其次很多人像我一样抱怨自己的时间不够,重点是“自己的”而不是别人的。
    对其中要点做一下总结。看原书的过程中比较跳跃,与时间管理以及其背后思想无关的部分基本跳过未读了。

    几个概念

    因为我感觉柳比歇夫的时间管理法某种程度和敏捷开发有些像,就和敏捷开发几个概念做一下类比:

  • 工作。这个概念类比于敏捷开发的用户故事,实际为一项需求。不同的是,敏捷开发的用户故事需要在一个迭代内完成,超过一个迭代的叫做史诗,这儿“工作”就不区分了,可以在几个月甚至几年中连续的做。
  • 任务。和敏捷开发的任务概念类似。敏捷要求在1天内完成,按柳比歇夫的划分应该在半天内完成。

每日记录

  • 每日记录精度5分钟。这个精度(或者说粗度)我认为是很有必要的,现代科技当然可以轻松精确到秒,但这会将注意力转移到“精确”上,导致斤斤计较结果是否差了一秒两秒,对工作的专注程度和最后的“统计总结”目标都会失去关注。而5分钟是合适的精度,既不会让工作的时候老是想着会不会忘记计时,也不会对统计的数据有太大影响。
  • 分为I/II两类。这个分类是比较核心的,I类是核心的工作,II类作为I类的调节类工作,包括休息、娱乐或者负担不重、精神投入和产出较少的工作等。在后面还会单独讨论。
  • 每个任务的时间长度并不长。因为作者引用的每日记录不多,其中最短的10分钟,是看《消息报》,最长的3小时20分,是“附加工作:给达维陀娃和布里亚赫尔写信”。考虑到一天连续高效时间(称作“有效时间”或“纯时间”)3~7小时,我认为规划每个任务时间在10分钟到4小时之间。这和敏捷开发的任务划分不谋而合。
  • 自定义了纯时间的单位。这点在书里面说得有些不清楚,说是把一天纯时间算作10小时,分为3个单位或6个0.5单位。10可是不能被3整除的,而且10小时只能算作“毛时间”而不能算作纯时间。从柳比歇夫最高效年份平均纯时间是6个多小时算,结合。纯时间单位似乎是为了简化年报统计用的,除了第七章的统计“中心任务(1968年)”之外,在书中其他地方我也没有发现使用此项的。

每日记录的条目如下:

地点(精确到城市)|日期|工作大类(I/II)|工作子类|任务内容|子任务数量|时长|纯时间单位用量

以原文中的一段进行划分:

乌里扬诺夫斯克。1964年4月7日。分类昆虫学(画两张无名袋蛾的图)——3小时15分。鉴定袋蛾——20分(1.0)
附加工作:给斯拉瓦写信——2小时45分(0.5)。
社会工作:植物保护小组开会——2小时25分。
休息:给伊戈尔写信——10分;《乌里扬诺夫斯克真理报》——10分;列夫·托尔斯泰的《塞瓦斯托波尔故事》——1小时25分。
基本工作合计——6小时20分。
乌里扬诺夫斯克。1964年4月8日。分类昆虫学:鉴定袋蛾,结束——2小时20分。开始写关于袋蛾的报告——1小时5分(1.0)。
附加工作:给达维陀娃和布里亚赫尔写信,6页——3小时20分(0.5)。
路途往返——0.5。
休息——剃胡子。《乌里扬诺夫斯克真理报》——15分,《消息报》——10分,《文学报》——20分;阿·托尔斯泰的《吸血鬼》,66页——1小时30分。听里姆斯基·柯萨科夫的《沙皇的未婚妻》。
基本工作合计——6小时45分。

划分为:

地点(精确到城市) 日期 工作大类(I/II) 工作子类 任务内容 子任务数量 时长 纯时间单位用量 任务进度
乌里扬诺夫斯克 1964年4月7日 I类 分类昆虫学 画无名袋蛾图 2张 3小时15分 - -
乌里扬诺夫斯克 1964年4月7日 I类 分类昆虫学 鉴定袋蛾 - 20分 1.0(与上一项合计) -
乌里扬诺夫斯克 1964年4月7日 I类 附加工作 给斯拉瓦写信 - 2小时45分 0.5 -
乌里扬诺夫斯克 1964年4月7日 II类 社会工作 植物保护小组开会 2小时25分 - -
乌里扬诺夫斯克 1964年4月7日 II类 休息 给伊戈尔写信 - 10分 - -
乌里扬诺夫斯克 1964年4月7日 II类 休息 《乌里扬诺夫斯克真理报》 - 10分 - -
乌里扬诺夫斯克 1964年4月7日 II类 休息 列夫·托尔斯泰的《塞瓦斯托波尔故事》 - 1小时25分 - -
乌里扬诺夫斯克 1964年4月8日 I类 分类昆虫学 鉴定袋蛾 - 2小时20分 - 结束
乌里扬诺夫斯克 1964年4月8日 I类 分类昆虫学 开始写关于袋蛾的报告 - 1小时5分 1.0(与上一项合计) -
乌里扬诺夫斯克 1964年4月8日 I类 附加工作 给达维陀娃和布里亚赫尔写信 6页 3小时20分 0.5 -
乌里扬诺夫斯克 1964年4月8日 I类? 路途往返 - - - 0.5 -
乌里扬诺夫斯克 1964年4月8日 II类 休息 剃胡子 - - - -
乌里扬诺夫斯克 1964年4月8日 II类 休息 《乌里扬诺夫斯克真理报》 - 15分 - -
乌里扬诺夫斯克 1964年4月8日 II类 休息 《消息报》 - 10分 - -
乌里扬诺夫斯克 1964年4月8日 II类 休息 《《文学报》 - 20分
乌里扬诺夫斯克 1964年4月8日 II类 休息 《阿·托尔斯泰的《吸血鬼》 66页 1小时30分 - -
乌里扬诺夫斯克 1964年4月8日 II类 休息 《听里姆斯基·柯萨科夫的《沙皇的未婚妻》 - - - -
日期 基本工作(I类)合计
1964年4月7日 6小时20分
1964年4月8日 6小时45分

可以看到柳比歇夫也不是每一项都记了时间, 比如路途往返和剃胡子就没有时间.

关于纯时间

这儿的纯时间就有点儿和其他地方的描述冲突. 似乎1.0/0.5描述的并不是时间, 比如其中路途往返是有点奇怪的, 它算了纯时间, 理论上就应该属于I类, 然而没有写时长也没有计入当日的总时间? 这让我对纯时间是什么意义又有些不太理解了.
另外, 这两日的纯时间合计分别是1.5和2.0, 所以对作者文中描述的10小时分3个纯时间就有疑问了, 似乎最多只能分为2个.
还有, 分类昆虫学在这两日都用了大约3个半小时, 取1.0, 而附加工作写信也有3个小时左右, 却只分配了0.5.
我猜测, 这个1.0/0.5只是当日完成I类工作的重要度划分吧? 重要的是1.0, 相对不那么重要的是0.5, 相当于是I类工作的权重值.

月度统计和计划

统计的维度包括:

  • I类工作总时间
  • I类工作日均时间
  • 按工作子类划分的工作时间
  • 按任务划分的工作时间
  • 完成某一任务/工作的总耗时.
  • 完成单项子任务的平均耗时. 如读一页书大约花费多久, 这样可以未来预估读一本书需要多久,或者评估1小时读多少页。
  • 与上月计划对比, 看是否完成工作和任务, 时间是否在计划的10%范围内浮动
    计划包括下月要做什么事情, 花多少时间,以便下月统计中做比较

年度统计和计划

年度基于月度,和月度类似,柳比歇夫可以花上1周时间做年度统计和计划。并归纳总结去年统计和计划的差异,超过10%则要给出原因。

五年总结

每5年对过去的人生做一个时间上的总结.

关于浪费时间

首先, 伟大的人也会浪费时间, 书中说彼得·德拉克(我猜测是彼得·德鲁克Peter F. Drucker,1909.11.19~2005.11.11)让秘书统计自己的时间后,说"不可能!我知道我浪费了很多时间,不过不可能有那么多"。
其次,高效时间每天不超过7小时,其他时间就是来给你“浪费”的。像柳比歇夫,用来刮胡子看电影读报纸,让大脑休息。只是,在“浪费”中,可以选择一些对自己更有意义的。

关于目标

柳比歇夫的目标:创立生物自然分类法, 并围绕这个目标著书立说做研究。并围绕目标去精进技艺。柳比歇夫:数学→哲学→生物学→分类法→历史→文学都有涉猎并且做出贡献.
但有不限于这个目标,并不排斥“驰心旁骛”,“不时走入岔道”。自己认为很有趣的事情也可以去搞研究。作者引用一句谚语:一个医生,如果他仅仅是一个好医生,那他就不可能是一个好医生。

工作和休息的顺序

从柳比歇夫的日记来看,似乎每天都是先完成工作才休息的。

关于碎片时间

柳比歇夫也有关于应对碎片时间的方法

  • 散步的时候去捉昆虫
  • 如果短距离(2公里内)就不去等车,而是步行,就当做散步了

I/II类的分类

按书中的说法:

  • I类是中心工作(包括写书搞研究)和例行工作(包括看参考书, 做笔记, 写信)
  • II类包括做学术报告, 讲课, 开学术讨论会, 看文艺作品等.
    我感觉II类是I类的休息时间, 按作者说法是“所谓休息,是两种工作的交替,就像是正确的田间轮作制”。
    在月统计中, I类包括:基本科研、分类昆虫学、附加工作、组织工作等。
    其中基本科研还可以分作分类工作、杂事、校对《xxxx》书籍、数学、看xx学科参考书。
    看xx学科参考书还可以再具体到看陀布尔让斯基《人类的进化》等等。
    另外,作者在第七章总结中提出“第三类”工作,是需要创造力的工作,然而搜索全文也只找到这一处提到第三类工作,无法和柳比歇夫原日记相互印证。
    II类中包括了家务,即各种家庭事项。

关于权威

这个感觉和个人目标有一定关系。作者说“他身上有一种向自己提出问题的需求”,并且“他的可贵,在于他努力做出回答,不怕有错误。他喜欢把学校教学大纲中载入的标准答案撇到一边。”。所以,柳比歇夫提出了问题,质疑权威,从而树立了自己的目标。
我和大多数人的问题,可能就在于即使提出了问题(小朋友都会),但怕质疑权威,甚至怕质疑周围群众(因为众口铄金),也就更不敢树立自己的长远目标了。即便树立了,也容易因为权威甚至周围群众的一句话而质疑自己的目标。

时间守则

柳比歇夫非常有趣也非常重要的时间守则,就是不要让别人控制自己的时间,也不要让疲惫降低自己时间的效率。具体如下:

1.我不承担必须完成的任务;
2.我不接受紧急的任务;
3.一累马上停止工作去休息;
4.睡得很多,10小时左右;
5.把累人的工作同愉快的工作结合在一起。

与紧急重要四象限

紧急重要四象限是说把主要的精力和时间集中地放在处理那些重要但不紧急的工作上,这样可以做到未雨绸缪,防患于未然。
既紧急又重要的事情优先处理;长期投资重要不紧急的事情。不重要的事情,都可以放弃。
不承担必须完成的任务,可以看做必须完成的任务是对别人重要而不是对自己重要的。不接受紧急的任务,也可以看做是对别人紧急的。两条来看,就是不承担对别人事物的责任,我将此看做“为自己工作”。

网站: https://www.readlang.com
我比较喜欢在实际应用中学习. 单纯背单词真的非常要命并且很容易忘记. 所以我感觉在实际阅读网页的时候学英语词汇应该会比较方便.
有几个痛点:

  • 需要能实时查单词并加入生词本, "划词翻译"扩展插件就可以实现实时查单词, 但是不能加入生词本
  • 需要把句子一起加入生词本, 这样在复习的时候知道是在什么上下文中遇到这个生词的, 加深生词记忆
  • 由于一词多义, 需要加入生词本的是这次不会的含义
  • 可以对生词进行复习
    readlang很好解决了上述的痛点, 还有额外的惊喜.
  • readlang在网站上注册登录后, 可以在chrome商店中添加这个插件(需要注册登录后插件才有效).
  • 打开英文文章页面, 点击单词后, 在单词上方就会出现含义, 并且该词汇/所在的句子/所标明的含义都已经添加到了生词本里.
  • 如果连续点击两个单词, 还可以将其作为一个词组查询
  • 进入readlang.com网站就可以回顾自己的生词/句子, 对于系统标注的错误含义还可以修改.
  • 还可以将整篇文章导入readlang以便以后阅读复习.
    比较遗憾的是, 以下两点:
  • readlang每次给出的翻译都不太准确, 如果能给出多个含义并且可以从中选择适当的意义就更好了
  • 不能进行整句翻译, 这样不利于理解该词汇在整句中的含义(似乎是要收费的选项)
  • 可以练习听力和口语,但是要收费, 每月5美刀

  1. 需要在微信开发者工具中,点击右上角的详情->本地设置,勾选将JS编译成ES5. 这个相当于启用了babel
  2. 需要在miniprogram\目录中安装npm i -S regenerator,如果之前没有初始化过npm,那还需要提前初始化npm init -y
  3. 可以找一个页面的js文件检验一下:
function f1(){
  return new Promise(resolve=>resolve("OK"));
}
async function f2(){
  return "OK";
}// 上面的f1和f2其实是等价的. 也就是说async是返回promise对象的函数的语法糖, 是不是写起来短了很多
function f3(){
  let r1, r2
  f1().then(res=>{
    r1 = res
    return f2()
  }).then(res=>{
    r2 = res
    console.log(r1,r2)
  })
}
async function f4(){
  let r1 = await f1()
  let r2 = await f2()
  console.log(r1,r2)
}// 上面的f3,f4是等价的. 也即是await是then(res=>{return promiseObj})的语法糖, 不但短了, 也不需要每次then的最后一句return 下一个异步promise函数了, 也不需要套好多括号了. 比在不停的return中推进流程看起来要清晰得多
f3() // 打印 OK OK
f4() // 打印 OK OK

云数据库

官方文档
这是一种NoSQL数据库, 具体是哪种则没有讲.
我感觉NoSQL和SQL在使用上的最大区别是字段的数据类型. NoSQL可以添加Object和Array类型的字段. 然而相同点在于, 无论什么字段类型,每次查询到的都是整条记录(NoSQL叫做Doc文档),而不可能查询Array或Object字段内的子元素.
由于有Array/Object字段, 可以选择其中的子元素作为查询条件, 或者只更新子元素的值.
通过微信开发者工具云开发->数据库建立一个集合,相当于是一张表.

数据类型

除了常规js类型string/number/boolean/array/object以外, 还有1个略有不同的类型date和2个全新类型geo和null
date: 与js的date类型兼容,但是可以使用服务器端生成大法, 也就是说在服务器端再生成date. 如: {createTime: db.serverDate()}
geo是地理位置, 看源文档吧
null是占位符, 表示字段存在但是没有值

查询和删除

默认从小程序增加一条记录都会有一个_id和_openid, 并且collection的默认读写权限限制在创建者也就是小程序用户本身的, 所以查询的时候即使不带_openid也只能查到自己的. 如果修改collection权限, 最多也只能扩展到读取所有记录, 而不能删改其他用户创建的记录.

增删改查代码对比

单条的增删改查(单条的查其实只能算是引用):

db.collection('todos').add({data: {description: "learn cloud database"})
db.collection('todos').doc(doc_id).remove()
db.collection('todos').doc(doc_id).update({data: {description: "learn cloud database"})
db.collection('todos').doc(doc_id).get()

多条的增删改查

增加多条只有服务端支持, 可使用云函数实现, 参考: https://blog.csdn.net/weixin_44702572/article/details/127438504
多条的改删查都是通过where来实现的, 并且用到_工具const _ = db.command

db.collection('todos').where({price: _.lt(100)}).get()
db.collection('todos').where({price: _.lt(100)}).remove()
db.collection('todos').where({price: _.lt(100)}).update({data: {description: "learn cloud database"})

对数组元素数量的修改:
前面省略.update({data: {tags: _.push('mini-program')}), 除了push还可以用popshiftunshift
对同一数据中数组元素单个值的修改: 假如有元素scores:[10, 20, 30]对单个数组元素值20改为25:
前面省略.update({data: {'scores.1': 25}})
对多组数据中数组元素单个值的修改. 第一个20改成25,前面有where,并且用$替代每一个找到的数据中第一个值的index
前面省略.where({scores: 20}).update({data: {'scores.$': 25}})
对同一数据的数组元素的所有值修改:
.update({data: {'scores.math.$[]': _.inc(10)}})

对象元素的修改, 只修改一个key的值:
前面省略.update({data: {style: {color: 'blue'}})
修改整个对象的值:
前面省略.update({data: {style: _.set({color: 'blue'})})
对对象的键值修改, 可以参考数组的点路径表示法, 如'root.objects.1.numbers.2': 80

分页

.skip(num)

统计

腾讯的文档写得不好, 不过这个数据库显然是nosql, 我估计可以参考mongodb的文档, 搜索后果不其然, 很多文章也说这个本质上就是mongodb.
统计主要是在collection上使用.aggregate(). 这个单词官方文档叫做"聚合", 实际上就有"统计"的含义.
这个和在excel里面做统计类似, 而且理论上应该会更强大.
.aggregate()以后使用一系列的操作处理数据, 最后得到想要的统计结果, 这一系列操作称之为"流水线"(mongodb中叫做管线pipeline), 而"操作"官方叫"聚合阶段".每一种操作都有其特定的一些工具(操作符), 为提高效率, 操作之间有优先顺序, 一些操作需要在另一些之前, 如: 可以缩减数据量的操作优先, 这样后面处理的操作数据量就会比较小.
对数据表中字段引用时, '$字段名'表示该字段标题, 用在_id里; $.操作符('$字段名')表示对字段下的数据按操作符要求操作. 还可用$.操作符(1)表示_id里引用的第1个字段.

聚合阶段 解释 操作符
group 像excel的数据透视表, _id是要透视的字段,可以多个,数据区是要统计的字段, 可以通过操作符设置统计方式. 这儿的操作符是所谓的"累计器", 即一个统计字段下的一组输入数据, 操作后变一个数据 addToSet(合为数组) mergeObjects(合并对象) avg first last max min push(合为数组且能定义数组元素) stdDevPop(标准差) stdDevSamp(样本标准差) sum
sort 排序 用法 .sort({字段名A: -1, 字段名B: 1}), -1为降序, 1为升序
sortByCount 是group+sort的操作 用法 .sortByCount('$字段名'), 只能以降序排列
match 用法同where 操作符同where, 不能使用聚合操作符
limit 结果数量,默认20, 可以修改 用法: .limit(数字)
skip 用于分页 用法: .skip(数字)
lookup 连表查询, 相当于excel的vlookup. 不同点是:1. excel只能匹配一个, 这儿会匹配出一组包括所有字段的数据并作为数组放在as的字段里; 2.本方字段为字符串,对方可以是字符串也可以是字符串数组 .lookup({from: '对方集合名',localField: '本方字段',foreignField: '对方字段',as: '结果数组字段'})
count 计算表中条目数,并映射到一个字段名输出 .count('字段名')
end 每个流水线最后都要带的, 指示执行 .end()
以下是不常用的
geoNear 按距离排序, 内容比较多, 因暂不涉及地图应用就不展开了
addFields 添加新字段, 比如对数组合计, 对几个字段运算得出新字段; 还可以用路径字符串给object添加子记录 可以用操作符
bucket 分组并进行运算.与group不同的是, bucket是通过边界来分组的,分组后_id为边界值 .bucket({groupBy: '$字段名',boundaries: [0, 50, 100], default: 'other', output: { count: $.sum(1),ids: $.push('$_id')}})
bucketAuto 与bucket区别是,bucketAuto通过指定分组数来尽量平均分组,并且自动输出每组最大值/最小值/计数而无须指定,分组依据也可以通过指定granularity来定规则 .bucketAuto({groupBy: '$字段名',buckets: 3})
project 映射字段, 其实就是给字段改个名字,也可以保留字段或删除字段,还可以用路径字符串嵌套 .project({保留字段名: 1, 删除字段名: 0, 全新字段名: 可包括操作符的对象})
replaceRoot 可以把对象字段提升一级, 把对象字段变成collection, 对象的属性变成字段, 也可以构建新的字段 .replaceRoot({newRoot: '$对象字段名'})
sample 随机抽样指定数量的记录 .simple(抽样数)
unwind 有点跟group相反, 将doc按一个数组字段拆分成多个doc .unwind('$数组字段名') 或 .unwind({path: '$数组字段名', includeArrayIndex: 'index', preserveNullAndEmptyArrays: true})

两种等价的操作形式

通过chatGPT和官方文档, 发现有两种等价的操作, 以group中提取日期中的年份为例:

// chatGPT的代码
db.collection('heightDataDebug').aggregate().group({
  _id: { $year: "$date" }
})
// 官方文档建议的代码
const $ = db.command.aggregate
db.collection('heightDataDebug').aggregate().group({
  _id: $.year('$date')
})

形式上来看, 官文突出了操作与数据的不同, 而chatGPT代码将操作作为key,数据作为value, 初看起来就有些迷惑. 但chatGPT这种形式可能说明了一个问题,就是这本质只是一个object而已,表述了运算的方式, 但没有进行运算. 实际运算是数据库端进行的.

云函数

服务端:

// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法
// event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 `openId` 和小程序 `appId` 信息
const cloud = require('wx-server-sdk')
exports.main = async (event, context) => {
  let { userInfo, a, b} = event
  let { OPENID, APPID } = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的
  let sum = a + b

  return {
    OPENID,
    APPID,
    sum
  }
}

客户端:

wx.cloud.callFunction({
  // 需调用的云函数名
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 12,
    b: 19,
  },
  // 成功回调
  complete: console.log
})
// 当然 promise 方式也是支持的
wx.cloud.callFunction({
  name: 'add',
  data: {
    a: 12,
    b: 19
  }
}).then(console.log)

可以通过在data中传入type的方式, 使一个云函数支持多个子函数. 在服务端使用switch对type判断并调用子函数.

FAQ

  • console中提示: appservice.js:4786 当前基础库版本过低,建议调整最低支持基础库版本。 怎么调整?
    答: 百度搜到腾讯的官方文档是要求网页登录小程序后台,在设置-基本设置-版本设置-基础库最低可用版本中设置. 但是, 是不对的, 或者至少是不完整的.
    首先, 这行报错也没告诉你过低是低于多少, 现在是多少. 其次, 也没说在哪儿调整.
    其实这句报错查的是本地的基础库, 在小程序开发工具中点击右上角的详情-本地设置-调试基础库中修改. 版本一般建议改为最高的.
    但是究竟是比较了那个版本才说基础库过低呢?
    幸好appservice.js:4786是能跟踪到源码的, 源码压缩过,但格式化后还可以读懂. 可以看到下面这句:
    v = wx.getSystemInfoSync().SDKVersion,
    b = [];
    a.compareVersion(v, "2.10.3") >= 0 && b.push("wx://form-field-button"), a.compareVersion(v, "2.16.1") < 0 && console.warn("当前基础库版本过低,建议调整最低支持基础库版本。")

    所以, 通过wx.getSystemInfoSync().SDKVersion可以取到本地基础库, 最低要求是2.16.1.

隐私授权

小程序用户信息相关接口调整: https://developers.weixin.qq.com/community/develop/doc/000e881c7046a8fa1f4d464105b001?idescene=6

前言

都说微信开发文档是个乐色,过分了啊!我看是非常乐色……

使用扩展组件miniprogram-component-plus

通过开发文档跳转到github链接, 依然没有任何怎么使用它的提示.
其实使用的方法是和使用npm第三方库一样的. Unbelievable!
npm支持的文档在这儿
现在的微信开发工具默认小程序下面会有子目录miniprogram,所以应该进到这个子目录里再下载, 以tabs组件为例:

cd miniprogram
npm init -y
npm i @miniprogram-component-plus/tabs --save

下载完了以后, 点击工具->npm构建后才能使用. 你会看到多了一个miniprogram_npm目录
在要使用的页面目录的json中定义:

  "usingComponents": {
    "mp-tabs": "@miniprogram-component-plus/tabs/index"
  }

还是说这个tabs组件, 长内容不支持上划! 所以超长的内容还是不要用了.

在wx:for列表循环中, 怎么知道点击的是第几项列表?

反正官方文档中我没找到, 是在官方源码中自己参详出来的. 和vue不同, 不能直接在bindtap中传递参数, 需要通过data-index

<view wx:for="array">
  <view bindtap="tapme" data-index="index">{{item}}</view>
</view>
data :{
  array:['a','b','c']
},
tapme: function tapme(e){
   console.log("序号:", e.currentTarget.dataset.index)
}

data-* (dataset)从wxml向js函数传参

参考 事件捕获
按上面的, data-任意都可以. 在bind的函数中, 通过 e.currentTarget.dataset. 来获取

跨页面传参

是通过url传参的, 也就是标准的&a=x&b=y这种方式. 在页面的onLoad(option)函数中, 提取option.xoption.y即可

重要的公告

微信这个公告和蓝牙,获取用户信息等都有很大关系, 需要参照.
setData使用注意, 也比较重要, 如果遇到速度慢, 一定要看看.

超长列表的渲染

超长列表不适合用data中的数据进行常规的渲染, 因为data中数据是全渲染的, 不管array有多大. 此时应使用扩展组件recycle-view, 顾名思义是使用了某种回收技术, 没有全部渲染, 而是把视图外的渲染进行了"回收".
注意这个组件要用npm安装并构建.
recycle-view用起来很不一样,首先数据不在data里维护, 而是单独用createRecycleContext()创建和维护一个ctx对象. 其次,ctx对象有一系列很像Array的函数, 如splice等.

坑来了!

但注意了, 而ctx的append方法表现非常奇诡. 如果在数组arr上用一次append方法, 你会发现后面的ctx.splice方法会直接操作原数组arr! 但如果你用两次append方法, 你就又会发现ctx.splice操作的又不是原数组了!
所以为了表现的一致性, 我建议先append一个空数组[],再append原数组arr, 保证后面的ctx.splice只操作复制数组, 并且同步在原数组arr.splice一次.

ucharts的安装

ucharts使用npm i @qiun/wx-ucharts --save安装,并且npm构建以后, 会发现小程序界面白屏, 提示错误. 此时通过npm uninstall @qiun/wx-ucharts卸载掉以后(不影响构建后的wx-ucharts组件), 就正常可以用了.

微信头像和昵称的获取

据说这个获取接口变了数次, 看这个论坛公告, 很有意思, 截止今天这个公告有88页程序员的留言, 把腾讯都骂出翔了. 还有很有趣的动图: