思考的价值
  • README
  • Archives
    • 2022
      • 5-10
      • 4
      • 3
      • 1
      • 2
    • 2021
      • 12
      • 11
      • 10
      • 9
      • 8
      • 7
      • 6
      • 5
      • 4
        • 15-30
        • 1-14
      • 3
        • 1-18
        • 19-31
      • 2
        • 1-6
        • 7-17
        • 18-28
      • 1
        • 1-3
        • 4-7
        • 8-10
        • 11-15
        • 16-17
        • 18-23
        • 24-31
    • 2020
      • 12
        • 25-31
        • 17-24
        • 10
        • 9
        • 8
        • 7
        • 6
        • 5
        • 4
        • 3
        • 2
        • 1
        • 16
        • 15
        • 14
        • 12
      • 11
        • 21
        • 20
        • 30
        • 19
        • 29
        • 18
        • 28
        • 17
        • 27
        • 16
        • 26
        • 15
        • 25
        • 14
        • 24
        • 22
  • Tags
    • Talk
    • Information Theory
    • Web
      • Vue
      • Roadmap
      • CSS
      • React
      • Index
      • Webassembly
      • Redux
    • PL
      • Ruby
      • Lisp
      • Scala
      • OCaml
      • Python
      • Elm
      • PHP
      • JavaScript
      • Haskell
      • Go
      • CSharp
      • Shell
      • Index
      • Objective-C
      • C
      • TypeScript
      • Rust
      • SQL
      • Java
      • Kotlin
      • Fortran
    • Coding
    • Theory Of Computation
    • Service
    • Celebrity
    • Docs
      • ideavimrc
      • Dig deep into Hooks
    • Quality Assurance
    • Business
    • Network
    • Story
    • Psychology
    • Design
    • Joke
    • Node Deno
    • Security
    • Mobile
    • Podcast
    • Life
    • Game
    • Finance
    • Punchline
    • Product
    • Interview
    • Recruitment
    • Workplace
    • Environment
    • Idea
    • OS
    • Knowledge Management
    • Tool
      • Chrome
      • Command
      • Windows
      • Soft
      • Vim
      • Git
      • Terminal
      • JetBrainsIDE
      • VSCode
      • Mac
    • Database
    • Image
    • Hardware
    • OpenSource
    • Distributed
    • Algorithm
    • Architecture
    • Education
    • Book
    • English
    • Draft
  • Weekly
    • 🦤第 4 期 - 学习一门新的语言
    • 👹第 3 期 - 信息技术 与 人类的相似性
    • 👻第 2 期 - 鸭子理论与第一性原理
    • 🐱第 1 期 - 大厂垄断的 laas
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Archives
  2. 2021

12

Previous2021Next11

Last updated 3 years ago

Was this helpful?

  1. 用 Scala unfold 算子定义斐波那契数列,很简单明了:

    val fibonacci: Iterator[Int] =      
        Iterator.unfold((1, 1)) {        
            case (x, y) => Some((x, (y, x + y)))      
        }
  2. 惊讶系列分享:

    Implementing Raft for Browsers with Rust and WebRTC

    一篇想法很超前的文章,文中讲述了 作者在浏览器终端模拟 Raft 算法的经历,仓库如下。

    WebRTC 提供了 P2P 的能力(抛开中心信令服务器不谈),现代 Web 也有很多持久化的能力(比如 IndexDB ),那么可不可以将浏览器视为一个节点,去实现一套类似于 etcd 的分布式数据库系统呢?

    文中虽然没有实现该系统,但给了一个很赞的启发。

    在浏览器中去实现 CAP 原理中的 C,可太有趣了。

  3. 快餐文分享:

    React Lazy Loading - A Guide to Code Splitting for React Components

    文中介绍了一种工程实践,利用 React.lazyLoad 将非首屏的资源 拆包后延迟加载,从最开始的 首屏加载 1mb 的资源变成 只加载 几十kb 的资源,收益非常明显。

  4. 好文分享:

    Generator Tricks For Systems Programmers

    一篇讲述 Python Generator 的好文,文中用大量例子去证明生成器在处理数据 IO 时的优美便捷性。

    这种内部 DSL 设计得确实很赞,既可以流式处理数据源,又可以像 C# Linq 那样查询过滤数据。

  5. 分享个惊艳的项目:

    liriliri/chii - Remote debugging tool

    这是一个调试神器,原理类似于多年前的 Weinre。

    可以做到 远程(互联网)、跨终端设备限制(就算是 WKWebview)、且无需代理去调试当前设备浏览的页面。

    其流程是需要在页面中注入一段脚本,然后脚本与远程服务器建立 Websocket 连接。 服务器拿到终端页面的信息后,通过 Chrome 开源的 Devtool fronted,渲染出 调试页面供用户使用。

    用户在调试页面交互时,会发送消息到终端。

    而刚刚提到终端注入的脚本 可以视为 Chrome devtools protocol JavaScript implementation,是对于调试动作的消费端。

    一句话概述:通过 WS 建连, Chrome devtools protocol 作为通信规范,Chrome devtools-fronted 作为调试工具页面,很大程度上 模拟出 开发时的调试体验。

    值得一提的,chill 还有提供 whistle 插件。

    而 阿里开源的 lightproxy 调试工具 正是基于 ws + 该插件的 electron 封装。

    该工具,有很大的市场前景,可以被挖掘下,天下唯 WKWebview 调试苦矣。

  6. 每日一句分享:

    The modern web is a nightmare without an adblocker and annoyance blocklists.

  7. 快餐文分享:

    Async I/O for Dummies

    一篇讲述异步IO、高并发基础概念的文章。

    开篇先是从处理IO 时的 回调地狱到 Future 模式再到最后的 async,简单概述了下语法层面的各种方式,但 async 也有函数染色的问题。

    后面主要用例子解释了 面临 C10K 问题时 NIO 的必要性。

    最后提到的 Back-Pressure 类似于限流,削峰 的概念。

  8. 快餐文分享:

    VasSonic成长历程

    文章介绍了 腾讯开源下 专注于首屏性能的全链路项目 VasSonic。

    项目中用了很多奇技淫巧、黑科技,值得学习、借鉴。

    但该项目 不是一个通用的解决方案,客户端、前端、服务端都要同步接入,侵入性太大..

  9. 快餐文分享:

    Service worker caching and HTTP caching

    文章介绍了 SW Cache 与 HTTP 缓存之间的异同,可以看出 SW Cache 使用场景比HTTP Cache 更多样,可以精确控制每个文件的缓存时间,缓存策略,并且使用时也没有 HTTP 缓存的大小限制。

  10. 快餐文分享:

    Defensive CSS

    防御性编程一直以来都是保障稳定性的规范之一,在编写样式时,常见的措施有 stylelint,CSS reset 库,但这些都很通用,太通用就不实用。

    而文中结合实际场景介绍了大量 CSS 防御性编程的案例,有很多都值得学习。

  11. 每日一句分享:

    Logging should not do any side effects except writing to the log.

    (Log4j 是今天最亮的一颗星,一己之力 hack 调互联网)

  12. 分享一本最近读完的书:

    《字节跳动:从0到1的秘密》

    我曾经认为,想要创业成功 最直观的方式是解决一个没人没解决过的问题,或者挖掘一个全新的垂类、信息交互场景,然后像大多数创业故事那样一骑绝尘。

    但现在看来 想要创业成功,关键不在于你的 idea,解决方案,因为复制想法的成本很低,就比如文中讲述的抖音发展历程,或者国内那些国民应用。关键应该在于你是否有入场机会,以及有入场机会后 各方面资源的协同 补足性。

    创新与想法不是关键。

  13. 好文分享:

    I blew $720 on 100 notebooks from Alibaba and started a Paper Website business

    文章介绍了作者的初创项目,整个项目仅来自作者无意间的一个荒诞想法:"Can you build a website from a piece of paper?"

    想法虽然很荒诞,但现在 OCR 的识别能力 已经可满足大部分场景,关键难题就延伸成 如何提高识别的准确率,文中作者使用 GPT-3 训练出了一个 spellchecker,然后再将识别出来的内容,生成网页文章。

    当基本满足自己使用后,作者开始考虑产品的商业模式,他使用了常见 saas 产品的订阅服务,一年 3600💲…

    万事俱备后,就差推广了,作者的推广路径很原始,在社区中不停宣传,然后被某专注于高效率办公自媒体发现宣传后,最终获得了流量、客户。同时更大的意义是 它做到了改变人们的写作方式。

    Can you build a website from a piece of paper? People were doing it right now!

    从文章可以看出,一个成功的产品离不开,对可行性产品的挖掘能力,执行力 快速打造mvp,以及根据现有资源的推广。

  14. 快餐文分享:

    从消费者行为模式到用户增长模型

    文章先是梳理了 消费者的行为,包括上图的多种模式,这些模式之间的侧重点不同,整体偏学术;文章后半部分以一些互联网公司的案例 分析了各种用户增加模型,其中模型中指标的深层含义与消费者行为密切关联。

  15. 快餐文分享:

    Why C# goes well with TypeScript

    文章是一篇非常主观 谈编程语言的文章,作者用了很多例子来比较 ts、js 与 csharp 语法的异同,并单独讲了一些 csharp 中设计很赞的语法糖,值得一提的是 ts 与 csharp 都是被 Anders Hejlsberg 设计的,出自大师手笔。

  16. 快餐文分享:

    Record, replay and measure user flows

    Chrome 将在 97 版本新增 Recorder 特性,可记录保存用户在页面上的操作,回放操作时也可以增加某些步骤编辑,或者做性能评测。 算是自动化场景的杀手锏。

  17. 惊讶系列分享:

    Do infinite scroll without JavaScript

    如何不使用 JS 做到页面无限滚动,自动加载下一页的内容呢?链接中给出了实例。 基本原理是:服务端保持长连接,并且 页面底部有 声明 lazyload 属性的 隐藏 img 元素,每次滚动到底部时,img 发起请求,长连接写入新的内容 + 新的 img 元素。

  18. 分享个项目:

    webpack/tapable

    该项目是 Webpack 的插件管理库,可单独使用。

    如果你的项目中存在明显的事件流特征,且逻辑依赖之间层次清晰,那么可以尝试使用 Tapable 进一步的划分项目中的流程,将核心逻辑与可插拔的逻辑抽离出来。

  19. 每日一句分享:

    能被 Saas 化的产品,终将被 Saas 化。

  20. 每日一句分享:

    越是创造性工作,就越不可能把工作和生活分开。

    体力劳动搬砖你可以朝九晚五,下班后脑子里不会想砖头;如果是文艺创作,大部分灵感都来自非创作时的生活见闻。

    干互联网也是如此,下班路上脑子仍然会对设计问题代码问题思索,生活和工作都沉溺在屏幕中。

https://eevans.co/blog/wraft/
https://github.com/shosti/wraft
https://javascript.plainenglish.io/a-guide-to-react-lazy-loading-6bca6be7159
http://www.dabeaz.com/generators/Generators.pdf
https://github.com/liriliri/chii
https://github.com/liriliri/whistle.chii
https://www.alwaysrightinstitute.com/async-io-by-example/
https://github.com/Tencent/VasSonic/blob/master/assets/sonic%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B.md
https://web.dev/service-worker-caching-and-http-caching/
https://ishadeed.com/article/defensive-css/
https://book.douban.com/subject/35544985/
https://daily.tinyprojects.dev/paper_website
https://www.biaodianfu.com/consumer-behavior-model.html
https://nate.org/csharp-and-typescript
https://developer.chrome.com/docs/devtools/recorder/
https://noscript-infinite-catfacts.glitch.me/
https://github.com/webpack/tapable
https://twitter.com/ftium4/status/1476127072766820355?s=20
image-20220104224809517
image-20220104225334386
image-20220104225139025
image-20220104225112978