月度归档:2022年02月

Jest 如何将复杂的判断条件中的具体问题暴露出来?

Jest 如何将复杂的判断条件中的具体问题暴露出来?

在写测试的时候,如果你需要对大量的数据进行 compare 处理的时候,你大概率不会把所有需要对比的对象都列出来,而是选择直接循环处理。

在测试中如果有循环处理的时候,很有可能会出现的一个问题是你可能无法在测试无法通过时快速定位道具体是循环中的哪一个元素出现的问题。这个时候的定位就会比较麻烦。

一个比较好的办法是,可以在 Jest 中加入 try/catch 中来处理错误,这样可以在出现错误的时候,打印一些辅助信息来快速定位,比如

it('test-error-catch-example',() => {

   let needTestData = [1,2,3,4]

   needTestData.foreach( item => {
       let result = doSomething(item)
       // 这里开始是新增的
       try{
          expect(result).toBe(true)
       }catch(e){
          console.log("error key",item)
          throw e;
       }
       // 新增的错误处理结束
   })

})

通过添加一个自定义的 try catch ,可以在出现问题的时候,一方面将 Error 按照常规的方式抛出,等待 Jest 处理,另一方面,可以在 catch 时输出自定义的信息,方便我们进行排查和修复。

为什么不买 NFT?

为什么不买 NFT?

从去年开始,我就开始定投 Crypto 领域的主流货币,比如 BTC、ETH 等,每月少量入金,用一笔不会影响我正常生活的钱来完成 Crypto 领域的投入。

而最近大火的 NFT,我除了参与一些 NFT 的开发意外,并没有参与市场化的交易。

对我来说,原因其实非常简单:

  1. 我认可数字藏品有价值,但数字藏品很多时候是在赌喜好,相比于主流币的价值增长(随着共识和稀缺提升),数字藏品往往会出现非常典型的「接盘」的情况出现。如果你看好的藏品没有人喜欢,则很难产生流通。这一点 NFT 有典型的弱点。
  2. 基于结论 1 ,就会推导出结论 2 :一个流通比较困难的产品,就需要你更加在乎时机,你只有在卖出的时机卖出,才能获得收益。这会要求你「盯盘」,时刻关注交易信息,及时将你自己的藏品卖出去。

虽然 NFT 确实可以一夜暴富( 0.1 Eth 入,5 个 Eth 出)也是很正常的,但对于身在其中的玩家来说,消耗的精力也是 BTC、ETH 等主流币的定投者无法比拟的。

至少,买 BTC 和 ETH 我可以每天安稳的睡觉,不用担心需要实时盯盘,在一个好的时候卖出。

独立开发者可用的支付方式

独立开发者可用的支付方式

我会关注一些个人可用的收款方式,核心支付要解决的问题是在开发产品过程中,必须要用到的各项基本技能。如果支付流程无法打通,独立开发者的商业模式就会遭到最直接的打击:你如何赚到钱?

可能你会想,我难道不能使用广告的方式来赚钱么?

当然可以,但与直接向最终用户收款的方式相比,显然,广告赚到的钱不过是蝇头小利。

此外,我也说过,广告赚钱是非常少量的,因为你拿到的本身就是平台收益中的一小部分。此外,广告还有一个问题是与流量相关的,你必须不停的想办法获取流量,并将流量转化,这对于独立开发者而言,并不友好。因此,我并不看好以广告为基础的独立开发产品模式。

故而,我十分在乎收款流程的通畅。

其实想想也能明白,你会发现国内独立开发者大多出现在 iOS、Android 等移动应用开发平台上,这里很难说没有平台提供的收款渠道带来的价值。

所以从这个角度而言,我也建议大家可以适当关注一些收款渠道,以便你自己后续使用。

为什么不注册公司,自己接入渠道?

当提起这些第三方渠道的时候,大家经常会说,诶呀,你这个收款平台的费率好高啊,你看看支付宝官方,只有XXX。

我觉得,这个事情如果只对比收款费率的话,过于单纯。

实际上,支付宝官方、微信支付官方往往需要企业资质才能开通。而你开通这些账号所支付的成本,远超你当下的收入。

你用你前期的收入,养活了代注册公司、代记账公司。早期其实完全没有必要,你大可以用这些平台完成前期的冷启动,启动完成,有了长期收入,你的收益足以支撑你继续后续的工作,再替换不迟。

我关注到的收款平台

面包多 Pay

https://mbd.pub/

PayJS

https://payjs.cn/

XorPay

https://xorpay.com/

读罗翔《刑法学讲义》感悟 & 批注

读罗翔《刑法学讲义》感悟 & 批注

感悟

我想读这本书,自然是对风靡 B 站的罗翔老师所好奇,在微信读书上打开了这本书,读了起来。

从个人的阅读体验上来看,比较推荐拿来做日常的读物,如果你希望更了解刑法,这本书不适合,这本书是罗翔老师视频的文字版。

值得表扬的点

这本书我认为最有价值的便是「写在最后」章节中的三不和三要。特地再摘出来,以提醒自己和读到这篇文章的你。

三件不要做的事

1. 控制内心的张三,人心隐藏着整个世界的败坏,你无法避免心动,但千万不要行动。

2. 不要有知识的优越感,追逐知识只是让我们承认自己的无知。

3. 学习法律不是钻法律的漏洞,而是真正认定法治的信念。

罗翔《刑法学讲义》

三件坚持做的事

1. 坚持阅读经典,与人类伟大的灵魂对话,走出我们固有的平庸与傲慢。

2.思想与行动并存,我思并不代表我在,我动方能印证我存,在每个个案中坚守法治的精神。

3. 从爱抽象的理念转向对具体的人的爱,我们无法做伟大的人,但我们可以心怀伟大的爱,做细微的事情。

罗翔《刑法学讲义》

还不够好的点

这本书的整体行文上是先探讨了法律的基础,再针对刑法进行定向的研究。在内容上,往往是法条的基本解释 + 案例 + 思考题。

个人觉得,因为并没有直接提及完整的法条,这样的书对于读者而言,帮助有限,大概率是看完乐呵乐呵得了,这一点我认为之前购买的民法典的实用版会更好。

批注

前言 每一次学习都是为了追求智慧

永远不要在自己看重的立场上附着不加边际的价值,要接受对立观点的合理性。

作为学者,我们时常生活在一种幻象之中,认为真正的知识一定是高雅的,大众传播都是下里巴人,娱乐至死。但这是一种傲慢与偏见,甚至是另一种形式的不学无术。真正的知识一定要走出书斋,要影响每一个愿意思考的心灵。

每一个人都拥有学习的能力与权利,每一种学习从根本上都是对普遍真理的回应。

刑法:犯罪人的大宪章

001 刑罚的起源

任何一部法要被称为刑法,一定有两个部分:一个是犯罪论,一个是刑罚论。

为什么刑事立法应当遵循民主程序,以及刑罚有追求正义的内在要求。

我国法律体系由7大法律部门构成:宪法、民商法、行政法、经济法、社会法、刑法,以及程序法。

002 刑法是道德伦理的最低要求

决定是否发动刑罚权的时候,既要考虑结果正义,又要考虑行为正义。犯罪侵犯了法益,在结果上不正当。同时,犯罪行为也违反了伦理规范,在行为上也不正当。

003 不受约束的刑罚权,比犯罪更可怕

刑法既要实现惩罚犯罪的保护机能,也要恪守保障罪犯人权的保障机能

刑法的基本原则

004 罪刑法定原则:对权力的严格约束

法无明文规定不为罪,法无明文规定不处罚,这是法治国家最重要的刑法原则

国家的立法权、司法权和行政权这三种权力应当分立以制衡。

罪刑法定反对罪刑擅断,使公民免受任意刑杀的恐惧,它必须体现限制国家权力,保障公民自由的基本精神。

一个是“刻薄少恩”推行专制的法家,一个是保障自由限制权力法治,两者虽一字之差,但却谬之千里。

005 空白罪状怎么填

只有明确的法律才能保障公民的合理预期,而这是自由的关键,

009 刑法解释的范围与实质

解释是司法活动,而非立法行为。因此,形式解释论是首要的,它划定了刑罚权的范围。如果突破刑法条文形式上的限制,仅从社会生活需要对刑法进行实质解释,就会破坏刑法的稳定性和明确性,侵害公民的合理预期。但是,在形式解释的基础上,需要考虑实质解释论的要求,否则法律就会太过僵化。

010 举轻以明重,举重以明轻

罪时举轻以明重,当轻的行为构成犯罪,那重的行为更应是犯罪;出罪时举重以明轻,当重的行为不构成犯罪,那轻的行为就自然不是犯罪。

011 刑法解释,朝着良善进行

人类所有的知识都来源于对权威的相信,我们相信存在正义,而正义一定是客观存在的。看见的不用相信,看不见的才用去相信。

刑法的效力

012 刑法的空间效力

主权是国家的最高统治权,主权国家之间是平等

刑法的空间效力主要有四个原则:属地管辖、属人管辖、保护管辖和普遍管辖。

013 刑法的时间效力

对未来的合理预期,是所有生物存活的基本条件。作为万物之灵的人类更是需要合理预期,法律必须保障人们的这种需要,让人免于恐惧。因此,禁止溯及既往是对权力的基本约束。

015 危害行为的作为与不作为

任何犯罪都必须要有行为,如果没有行为就不是犯罪。一个人的思想再邪恶但只要没有表现出行为,就不应该进行惩罚。

权利跟义务是对等的。如果警察在休假期间也有制止义务的话,那就意味着警察身着便装也有权搜查民众。从这个意义而言,在休假期间的警察没有制止犯罪的义务。法律不能够对人做过高的道德要求,刑法只是对人最低的道德要求。

018 不知者无罪

近代以来,人类最悲惨的命运就是用抽象人的概念取代了具体人,人被抽象化的必然后果就是人的价值被贬损。当人被抽象化,他也就不可避免地根据种族、性别、国别、阶层、贫富等各种抽象概念进行归类。

犯罪排除事由

021 正当防卫

霍姆斯大法官说:法律的生命是经验而不是逻辑。法律人要有逻辑推导能力,但更重要的是要有常识。法律人要学会谦卑地听取民众的朴素的声音。

司法要倾听民众朴素的声音,刑事责任的一个重要本质是在道义上值得谴责。因此,犯罪与否不是一个单纯的专业问题,普罗大众都有发声的权利,司法永远不能超越社会良知的约束。法律不是冰冷的条文,它必须兼顾天理人情,不断地在各种利益中寻找一个最佳的平衡点。

023 责任排除事由

判断一个人负不负刑事责任,应该根据行为时有无责任能力,而不是看结果时。

024 刑事责任年龄需要下调吗

大陆法系倾向于乐观主义,代表国家是德国和意大利,这些国家的刑法都和我国一样,认为不满14周岁没有刑事责任能力,对任何犯罪都不负刑事责任

025 法律认识错误

在法律体系中,刑法是一种最后的补充法,认识到行为不符合刑法规定,必然也知其不符合民法、行政法等部门法,但反之未必

未完成的犯罪

026 犯罪预备

根据犯罪的实现程度,可分为完成形态与未完成形态,前者完全实现了法条规定的构成要件,是既遂;后者没有完全实现构成要件,包括犯罪预备、犯罪未遂和犯罪中止。

犯意表示是一种思想流露,还没有表现为行为,不属于刑法打击范围。犯意表示一般是以口头、书面或者其他方法,将真实犯罪意图表现于外部的行为。

032 中立的帮助行为

人们习惯于在自己看重的事情上附上不着边际的价值,司法机关往往过分看重打击犯罪的价值,而忽视了其他职业的稳定性。

034 主刑

刑罚可以分为主刑和附加刑,主刑是只能独立适用的主要刑罚方法,它不能附加适用,对一种罪行一次只能适用一个主刑。主刑包括管制、拘役、有期徒刑、无期徒刑、死刑。

035 死刑的存与废

死刑也体现了对犯罪人的尊重。犯罪人出于自由意志,选择犯罪,自然也就预见了行为的后果,对他的惩罚是对他理性选择的尊重。黑格尔把这叫做“自为的正义”,由于犯罪是犯罪人选择的结果,因而刑法也可以合乎逻辑地从犯罪人的行为中引申出来,获得合理性。

刑罚的裁量与消灭

038 量刑

法律一经制定,就已经滞后,它不可能与时俱进地涵盖社会生活的方方面面,机械地、教条地适用法律,或者导致法律过于宽松,或者过于严苛。法官是人,而不是“机器人”,他必须运用正义之心,主动弥补法律的漏洞,以满足公众对于正义的期待。

039 自首

但是如此恶劣的罪行,难道因为是自首就可以从宽处罚吗?法律对于自首,规定的是可减主义,而非必减主义。对于自首的犯罪分子,可以从轻或减轻处罚,犯罪情节较轻的,可以免除处罚。既然法律的表述是“可以”,那么对于上述示威型自首也就可以不从宽处理。

040 累犯和缓刑

有三类人员只要符合条件,就应当适用缓刑,不满18周岁的人、怀孕的妇女和已满75周岁的老人。

053 洗钱罪

洗钱罪,是指明知是毒品、黑社会性质的组织、恐怖活动、走私、贪污贿赂、破坏金融管理秩序、金融诈骗犯罪的违法所得及其产生的收益,掩饰、隐瞒其来源和性质的行为。通俗来讲就是把黑钱变成白钱。

性自由权

065 强奸罪

总之,交往中最重要的就是尊重,在法律上,没有半推半就这个概念,要么是同意,要么是拒绝。女性语言上的拒绝应当获得法律的尊重。如果一个男性出于花花公子式的哲学,认为女生说不就是半推半就,这是他的评价误认,必须要为错误的价值观付出代价。

083 索赔是正当权利

这种见解忽视了起码的法治观。法治的基本原理告诉我们:对公权力而言,凡是没有允许的,都是不可为的;对私权力而言,凡是没有禁止的,都是可以做的。

私人权利不是法律所赋予的,只要法律没有禁止,就是民众的权利之所在。相反,公共权力才是法律所赋予的,只要法律没有授权,公共权力就不能轻举妄动。

妨害司法罪及卖淫罪

093 律师伪证罪

一个国家是否有真正的自由,试金石之一是它对那些为有罪之人、为世人不耻之徒辩护的人的态度

写在最后

三件不要做的事。1.控制自己内心的张三,人心隐藏着整个世界的败坏,你无法避免心动,但千万不要行动。2.不要有知识的优越感,追逐知识只是让我们承认自己的无知。3.学习法律不是钻法律的漏洞,而是真正认定法治的信念。

三件坚持做的事。1.坚持阅读经典,与人类伟大的灵魂对话,走出我们固有的平庸与傲慢。2.思想与行动并存,我思并不代表我在,我动方能印证我存,在每个个案中坚守法治的精神。3.从爱抽象的理念转向对具体的人的爱,我们无法做伟大的人,但我们可以心怀伟大的爱,做细微的事情。

拥抱不确定性

拥抱不确定性

最近又进行了一次播客录音。刚好又收到了协作者的邀请,在听两个月前自己的录音。

莫名的感觉到,我可能在成长了。

两个月前的我,对于录音过程中的节奏要求非常高,如果我发现情况不对,就一定要强行扭转回去。但这并没有意义,反而会让大家觉得很生硬。

如今的我,可以坦然的面对节奏的消失,坦然面对冷场的局面。

大概是我正视了,录播的压力就是可以很小,就算我的顺序有问题,只要大方向不出错,那就不会在后续成片造成太大的影响。后续逐步调整即可。

美股交易时间与价值投资

美股交易时间与价值投资

突然觉得,美股很适合价值投资,因为美股的交易时间决定了,它无法作为我们的高频交易方式,我们无法高频的购买。

美股持续交易时段为美国东部时间(ET):周一至周五 9:30~16:00
美夏令时(3月-11月):北京时间 21:30~4:00
美冬令时(11月-次年3月):北京时间 22:30~5:00

富途证券:https://www.futuhk.com/cn/support/topic135?lang=zh-cn&from_platform=1&platform_langArea=

虽然有盘后交易,但波动相对没有那么明显,操作的意义并没有那么大。差不多也是挂个预期价格,放在这里等待自动撮合交易。

相比之下,更符合我们生活习惯的 A 股和港股,会让你不自觉的进入盯盘模式。

微信公众号付费与 GitChat

微信公众号付费与 GitChat

GitChat 是一个定位于工程师知识付费的平台。由现图灵社区负责人谢工于 2018 年时推出,后为 CSDN 所收购。GitChat 的特点是众筹文章 & 读者按照文章付费。

我是 GitChat 平台的老用户,从 GitChat 刚刚开始推广就加入到 GitChat 当中,也是广泛的使用了 GitChat 的平台,其推出的文章、专栏我基本上都有试过。

到了 2022 年,GitChat 已经风光不再,而微信公众号也推出了其付费产品 —— 微信公众号付费阅读。

那我们要问一个问题了:是微信公众号的付费阅读干掉了 GitChat 么?

从最基础的功能表现上来看,GitChat 的核心是用户按照文章付费,而不是按视频付费;微信公众号的付费阅读功能同样支持按文章付费。从功能的层面,似乎 GitChat 已经完全被微信公众号的付费阅读功能所替代。

但在实际上,二者提供的价值完全不同。

微信公众号的付费阅读功能是提供给创作者的创收工具,作者可以在已有的用户基础之上,进行部分内容的付费,从而解决内容变现的问题。

GitChat 的众筹功能

GitChat 则在提供了创收工具以外,还提供了平台的流量,不记得之前在哪里看到过,大致是这么一句话:“在线课程的核心不是课程质量,而是课程流量”。在在线视频课程的场景下,每一个做课程的老师都不过是流水线上可以替换的工人,而更重要的是读者从何而来。不仅如此,GitChat 还提供了众筹的功能,对于创作者来说,可以按需生产内容,从而避免产出的内容无人付费。

从这个角度来思考的话,对于素人(彼时的我也是个素人)来说,GitChat 是比微信公众号更好的平台与工具。

F.I.R.E 还是现金流?

F.I.R.E 还是现金流?

其实我很早就在关注关于提前退休的事情(毕竟我是想出去玩的)。

F.I.R.E 我最早还是在微信公众号《也谈钱》当中看到的,他还写了一本书《工薪族财务自由说明书》。

也谈钱经过一段时间的努力和坚持目前已经积攒了接近460 万人民币的本金(当然,因为他赚的是欧元,所以可能对于他来说不那么困难,对于我们生活在中国的每一个人,失去这种利率差让我们不那么容易达成目标)。基本上达成了自己的退休目标。而积攒这笔钱其实对于他来说,付出了不小的时间和精力的成本(控制那些不必要的开支)。

而现金流则是我一直看的《富爸爸与穷爸爸》的作者罗伯特清崎关注的。

如果我们回到本源,其实二者所做的事情是类似的:

  1. 控制自己的开支,然后提升自己的现金保有量。
  2. 在后续依靠资产来生活。

而二者不同的是:

F.I.R.E 的资产相对单一,主要依赖投资产品。而现金流则更加关注买入资产(不仅仅是投资产品,还包括实业)。

对于我来说,我不能简单的选择其中的某一个点,而是要做一个更加综合的策略:

  1. 减少开支,以尽可能早的保有更高的现金量,应对各种突发事件和买入资产;
  2. 买入除了股票以外的更多资产(比如我今年进行的一级市场投资)。
  3. 构建自己的资产(这是工程师所特有的,可以打造一款产品,然后出售这款产品获益)。

希望早日能获得人生的自由。

《微信背后的产品观》书摘

《微信背后的产品观》书摘

以下内容是我在阅读《微信背后的产品观》时觉得有同感的部分。

第一, 需求不来自调研;第二,需求不来自分析;第三,需求不来自讨 论;第四,需求不来自竞争对手。

《微信背后的产品观》

对于新点子,99%的情况下否定是对的丨假如有 10 个产品经理,每 个产品经理每天都冒 10 个点子,那每天就是 100 个点子,如果要把 这 100 个点子都想清楚的话,可能就需要 100 天的时间,那开发团 队就累死了。所以,对于新点子,99%的情况下把它否定掉总是对的。当你要去判定这个点子该不该做的时候,很简单,否定、不 做,就可以了。

《微信背后的产品观》

每天花一个小时看普通用户在微博上谈论他们是如何用你的产品的,这个习惯一直坚持着,而这个习惯形成也是很容易的

《微信背后的产品观》

我们不是在做一个功能,而是要怎么满足用户的诉求。这也是微信最基本的产品思路。

《微信背后的产品观》

产品能让用户形成口碑的话,一定要让用户说“爽”。如 果用户说不出这个字来,证明我们的产品还没成功,也不会被传 播。如果要说两个字的话,就是“好玩”。当你把产品放出去,看用 户怎么评论你的产品,如果他们用“好玩”来形容,那就对了,因为 好玩是一种可以做主动口碑传播的舆论。

《微信背后的产品观》

我们开始整理这个需 求,看看有几种需求要通过摇动的动作完成,第一,让两个人交换 一个信息;第二,让一组人在一起开会的时候,加入一个群里面。 但是这都显得很工具化,因为这两个需求都很“功利”,只是为了提 高效率。提高效率本身就很不浪漫,只是为了解决时间问题。不浪 漫的话,就不会有很好的下场,如果更浪漫的话,那是不是可以通 过摇一下,摇到一个远在天边的人?这样就充满了随机性和不可知 性。

《微信背后的产品观》

现在很常见的是 用 Tips 去提示新功能,看似体贴,实则让人烦躁,用户会觉得为什 么要把这些提示强加到我当前的操作里面,感觉被打扰了。

《微信背后的产品观》

我们更加倾向直接做到最本质的东西,至于它能满足用户什么 需求,那是用户自己的行为。我们做一个“类型”,而用户自己来产 生“实例”就可以了,也就是说,我们用“类型”的思路,把所有“实例” 都做了。

《微信背后的产品观》

如果对于产品经理来说,这个特性本身不足够令人兴奋,让人产生热情的话,可能做了也会做不好,也没办法理解这个特性还可以有哪些亮点或者有别的什么更好的想法。

好奇心是产品经理的驱动力,你不可能真正理解自己不感兴趣的需求。

《微信背后的产品观》

做产品可以保持一些粗放的状态。如果还没有好的解决方案,一定不要先去做。因为我们收到的需求会非常多,当没有想好方案,或者想到的方案会带来很多副作用,硬要去解决的话,可能会得不偿失,产生的副作用可能会远远大于正面作用。

《微信背后的产品观》
不止于做工具

不止于做工具

我们做互联网产品不能太“工具化”,“工具化”看起来很实在, 但它不能引起用户的连锁反应。特别是互联网本身就是一个连锁反应的场所。

《微信背后的产品观》

这段话给我最大的感受是让我思考,作为一个独立开发者,我们在开发产品的时候,不能只关注一个产品的工具性,我们还应该关注用户的连锁反应,在构建产品的时刻,去打造一个适合用户使用我们这个产品的场域,一个适合我们产品的环境。这样才能让我们的产品不断的运行下去。

这也是很多的工具软件会提供「社区」这个功能的原因。从一个产品设计者的角度来看,我们需要在工具之上,提供社区形态的内容,颇有点我之前提出的「独立开发者应该做 Opinionated 的产品」。

虽然 Opinionated 是一个贬义词,但对于我们独立开发者,我们正是一个个「固执己见」的人。