18-23

  1. 每日一句分享: 万维网的基本单位是单个页面

  2. 新一年20天内, 字节宣布放弃两个业务:

    1. 悟空问答

    2. 好好学习

  3. 快餐文分享: CSS Grid 网格布局教程 http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

    摘要: Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。 Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。

  4. 我确认我的串讲主题了, 不讲 组件化了, 这东西 老生常谈 感觉没什么新东西. 我还是讲 编程语言, 刚刚确定了一些 子主题:

    1. 编程语言的三种阵营 (学术派, 底层派, 应用派)

    2. 编程语言 与 语义学

    3. 决定编程语言所在领域的关键因素

    4. 不同编程语言的不同 IO 模型

    5. 编程语言 与 DSL

    6. 编程语言常见范式: FP OOP 命令式

    7. 编程规范: 防御性编程, SOLID 五大原则, 抽象的颗粒度, API 的优雅设计, 对输入有所限制 对输出包容等

    8. 编程语言的类型系统

    9. 元编程

    10. 如何实现一门编程语言 (利用现在后端的技术 llvm), 以及之前我写过的 Brainfuck 解释器

    11. 编程语言的历史/重要人物/ 可引申出 学多门语言对编程思想的重要性

    12. 常见编程语言的编译步骤 (AST, 中间字节码, 收集数据优化..)

    13. 未来编程语言的设想

    14. 不同编程语言处理异常的不同做法

    15. 内存管理, 常见的 GC 机制

    16. 不同编程语言的工具链/生态

    17. 不同语言下的模式匹配,可用 TS 中的 refer 引出共鸣

    18. 揭秘设计模式 就是一个营销概念

    19. 编程与工程之间的关系, 可以说说 软件工程的知名营销概念

    20. 编程语言与操作系统之间的关系: 现代编程语言 不可避免的复杂性 离不开操作系统的最初设计

    嘿嘿, 主题就叫 漫谈编程语言.

  5. 如何看待 QQ 扫描读取所有浏览器的历史记录? - 360安全卫士的回答 - 知乎 https://www.zhihu.com/question/439768601/answer/1683922148

    hah 第二次 3Q 大战~

  6. 分享篇文章:

    MacOS Keyboard Settings and Shortcuts for Coding

    https://utkuufuk.com/2021/01/17/macos-keyboard-shortcuts/

  7. image-20210124124443236

  8. 计算机图形的两种分支: 矢量图形与光栅图形(位图)

  9. A: 发现了个有趣的知识: 熵增定律—热力学第二定律 是唯一区分过去和未来的基本物理定律。其他物理定律在时间上都是可逆的。

    B: 巧了 吃饭的时候正在想熵增这个事

    C: 魔法少女小圆好像就是基于这个定律讲故事

    D: 神作 快去看

    A: 啊哦,这么高能的番剧嘛.. 我一直很好奇,信息熵增的事情。

    B: 怎么? 也是表示混乱程度嘛

    A: 我不是很理解 熵的概念 在信息上的体现.. 我不是很了解 “熵”

    B: 简单的说 3个 bit 就有 2^3 种可能的组合 可以用一个值去量化这个可能性(混乱度)也就是熵

    香农这个人就搞了一系列定义 。。直观的看3 个 bit 的 熵 entropy=log2(2^3) = 3

    A: 也就是说 熵代表的是 信息越多 相互产生的信息就会越多。 熵代表的是这种过程的混乱度? 而熵增代表的是 这种过程的趋势,并指出不可逆?

    C: 大学信息论学过信息熵

    A: 我感觉 熵指的是是热学中的概念,并且这种概念符合 信息产生..

    B: 可以去了解了解信息论~

    C: 是指的信息除去冗余后的信息量,有个公式 梦回大学课堂

    这些理论通信领域用的多些,计算机领域似乎用的少

    B: b站有个up推荐 YJango 可以看看 机器学习 深度学习 吧

    谁让我tm专业就是这方面的

    A: 感觉计算机越往深学,越离不开物理.. 今天中午一直在看电流的概念.. 我太菜了

    C: 电流。。。我只有在处理手机的功耗问题时,会去看电流数据

    A: 大魔法师无疑了

  10. 分享篇文章:

    信息论入门教程 http://www.ruanyifeng.com/blog/2019/08/information-theory.html

    A: 总结下: 信息熵 表示随机信息的期望, 果然最本质的语言 还是数学. 它在通信中提供的最重要思想是 编码机制 (大概率信息分配短码), 和霍夫曼编码是一种实现机制.

    我对信息熵的概念 不是很感兴趣.. 大家口中常说的熵 其实指的是 事情发展的混乱趋势..且不可逆的..

    信息熵 与 热学熵 之间的关联.. 就是它们看待的介质不同.. 它们的思想是相同的..

    大家口中常说的熵, 是 熵 在现实事件中的引申意义.. 并不是熵 如果有哪里错误.. 请告知我哈..

    B: 信息论里面的信息熵是香农借鉴的热学熵,去解决通信领域具体的信息传输问题。广义的熵,是个更抽象玄学的概念

    A: 赞同, 我对广义的熵 理解就是 混乱度的不可逆性..

  11. 快餐文分享: 浅谈移动端开发技术 https://mp.weixin.qq.com/s/TXBRUVoOBDxr8P9Iw5FpTQ

    文章花大篇幅讲了 hybrid 在移动端的一些原理

    在移动端 昂贵的不是 触发 render 的次数, 而是通信的次数.

    都说了 还是扩展下吧: web 的性能瓶颈 在于单线程模型, 这就是为什么 react 16 提出了 增量化 fiber 架构 移动端的 hybrid 的性能瓶颈 在于 线程通信, 不过 RN 从一开始就常用的 vdom, 可以将多次修改 增量化

  12. 推荐本书: 未来世界的幸存者 阮一峰老师 几年前出的一本书。 里面的很多内容 现在看来也具有价值,建议阅读。

  13. 快餐文分享:

    CSS Tips you won't see in most tutorials https://denic.hashnode.dev/css-tips-you-wont-see-in-most-tutorials

  14. 最近找到了 获取高质量信息 的一种解决方案。就是不再从大量文章中花时间去寻找,而是找书去看。

    这样收获的知识 系统性也很强。

  15. B: A,我是前几天看到你的scrcpy-gui项目,对我帮助很大。你有没有尝试过修改scrcpy的源码进行定制化?

    A: 事实上,我一直没有 scrcpy 场景下的需求。

    C: 哈哈哈

    A: 这么说吧.. GUI 软件只有在开发的时候才会打开.. 目前这个项目,已经很久不维护了。

    定制化的需求,我记得 QTScrcpy 有做。 还有一个 WS-Scrcpy 可以把屏幕投放到 web

    B: 好的,我去看看

    我打算自己改写一下scrcpy server端,再调用几个Android framework里的方法,比如powerManager亮度调节色温调节之类的,还有些隐藏的接口可以反射调用

    A: 可以的,我记得 scrcpy 作者写过一些 scrcpy 原理的文章,可以多看看。

    如果是 Android 的话,想做到自动化,也可以借助其他软件,就比如 Tasker autojs 这样 还有 termux

    要是苹果的话,jsbox 还是勉强能用的

    我之前在 我的用户群,看到过一些基于scrcpy的作品,有一些黑产的软件 打开个终端 可以同时控制十多个手机,并且 支持很多人性化定制化的功能。

    这块是存在的市场的,因为目前 看起来挺混乱的。

  16. 计算密集与IO密集最本质的差别 就是 计算密集主要在用户态花费时间,IO密集则是在内核态。

  17. 分享篇文章:

    圣杯与银弹 · 没用的设计模式

    https://mp.weixin.qq.com/s/3TbunRkouM7PtCQrC52brQ

  18. 分享篇文章: 「黑客帝国」和「楚门的世界」 https://mp.weixin.qq.com/s/PVYTfc0KuOkWbf5dJDrVLQ

    摘要: 算法真的没有价值观吗?不,算法有价值观。 算法的价值观是被某种「成功」所定义的。如果这种成功是最大化股东利益下的商业利润,是更多的用户时长,更好的增长,以及更高效的广告变现

    文中的困局挺好解决,提升自己 摆脱低级趣味就好了。

    相应的结果 是幸福感会降低。

  19. 分享篇文章: 锻炼你的麦克斯韦妖 https://mp.weixin.qq.com/s/ORwUC_O9MGdSRjepUFW1xA

    摘要: 每个人的大脑里都住着自己的麦克斯韦妖,经常锻炼它,它的行动就更敏捷,肢体也更强壮。一旦你的麦克斯韦妖足够敏捷,足够强壮,就有能力解决复杂得多的问题。对羸弱的麦克斯韦妖而言,把气体分子分为快慢两类可能就手忙脚乱、左支右绌了;而对强壮的麦克斯韦妖来说,按速度划分成几十个甚至几百个档次,把各档气体分子分到不同的区域,也丝毫不在话下。

  20. 快餐文分享: 页面的加载优化方案 https://blog.serenader.me/ye-mian-de-jia-zai-xing-neng-you-hua-fang-an

    涉及了一些常见的点,可以简单刷下。

  21. 每日一句分享: 一个主任医师需要二十多年才能成长起来,而一名软件工程师在四十多岁已经很难找工作了,这就是大后期和大前期职业的差异吧

  22. 垃圾代码编写规范: State-of-the-Art Shitcode Principles

    https://github.com/trekhleb/state-of-the-art-shitcode

    建议全文背诵

  23. 分享篇文章:

    被拆分的身份证

    https://mp.weixin.qq.com/s/XohlUmqYEVXTyxjPsDm3pA 一个网络包从节点A发到节点B,这个过程中 只有目标IP地址是不变的。

  24. Linux 常见的文件类型:

    1. 普通文件

    2. 目录文件

    3. 块设备文件和字符设备文件-外设

    4. FIFO 管道

    5. Socket

    6. 符号链接

  25. 程序员的信仰之争: Vim vs Emacs, Tab vs Space - 老莫的视频 - 知乎 https://www.zhihu.com/zvideo/1293595906412236800

    我绝对不会与 用空格键而不是Tab的人同床共枕。 hah 太搞了…

  26. A: TIL, macOS 在 /etc/pam.d/sudo 里面增加一行 auth sufficient pam_tid.so 可以给 sudo 加上 TouchID 验证 https://t.co/spuN1IswF9

    B: wow 这个好

    C: wow 这下可以彻底忘记开机密码了呢

    A: hah 推荐一款我用了一年多的密码管理器 bitwarden

    目前除了一些银行卡密码,bitwarden 主密码,其他所有账号的密码 我都不需要记~

    并且 bitwarden 是开源产品,可以自己架服务

    C: 酷

    A: 但是不推荐自己架,应该服务器 存在安全问题

  27. 快餐文分享: 🦸‍♂️ 11 JavaScript Tips and Tricks to Code Like A Superhero (Vol.2) https://dev.to/orkhanjafarovr/11-javascript-tips-and-tricks-to-code-like-a-superhero-vol-2-mp6

    我喜欢这个片段

    image-20210124125848194

  28. 快餐文分享: Scoping CSS using Shadow DOM https://blog.bitsrc.io/scoping-css-using-shadow-dom-a548985b73af

    使用 Shadow DOM 去隔离 不同应用之间的样式

    应用场景 太适合 微前端了..

  29. A: 我有一个小疑问, 你的信息源是如何获取的@C

    B: 啥时候分享一下

    C: 正在做了 因为实在太多了 我准备写篇文章 但是写文章需要大片空白时间..

    可能等到下个双月 我定个 okr 

    image-20210124130052273

    A: 哈哈哈哈 如何选麻辣烫

    B: 这啥 TODO 软件呀

    C: 微软 TODO 啊.. 看来工作效率介绍 文章是有意义的

  30. A: 谷歌的验证是不是利用用户打标签 收集用户数据集 训练ai啊 什么玩意这是

    image-20210124130124164

    B: hah 很有可能

    A: 选斑马线我就没对过

    B: hah 你可能需要换个梯子

    A: 感觉不是梯子问题 感觉他是想让我多测几组 细思极恐

    B: 其实这个还好, 昨天分享的文章 就有提到一个观点, 只要你使用一些产品, 你就成为了产品本身.

    因为很多产品的埋点系统十分强大 全面..

    换句话讲, 一个用户成为了某一个算法神经网络中的一个神经元

    A: 赞同 就像广告系统 推送广告 其实也是为了提供服务

  31. 分享个帖子, 太好玩了: 个人博客一般怎么增加用户粘性? https://v2ex.com/t/746884#reply35

    下面有个回答是: 得用 python 写,因为...python 号称胶水语言 /doge

  32. 分享篇文章:

    JS Bridge 通信原理

    https://mp.weixin.qq.com/s/cBsmunLXLBEtR14cFfy1LQ

    可以着重看下概念与前端调用的方式

  33. image-20210124130335179

  34. 分享篇文章:

    https://medium.com/@jaf_designer/why-product-thinking-is-the-next-big-thing-in-ux-design-ee7de959f3fe

    设计产品时,最应该关注的是 用户最基本的体验,而不是各种特性。这才是一个产品的成功之本。

  35. A: 网页上执行粘贴操作,可以把剪切板上的图片显示出来。 Question: 你知道其中的过程吗?最常见的场景就是 github issue 区了

    B: 不走服务端就是 file => base64,走服务端应该是上传到服务器然后再回显

    A: 是的, 是存在这一过程的~

    我好奇的是 前端如何接受到 图片的数据, 换句话说 剪切板中的图片数据 在前端如何体现.

    C: url 吗

    A: 不是吧..

    C: 哦剪切板。。

    C: 我感觉剪切板是存的图片的路径吧 本地的 或者网页上的url

    粘贴所在的地方(app)做请求资源,渲染,拷贝等操作 我瞎猜的。。

    B: 我猜着是 判断copy事件拿到的值类型 文件类型并且是图片,可以直接转base64 不过图片太大的话base64也有性能问题

    A: 是的, 不过有个口误 应该是 paste 事件 另外, 也不一定需要 上传服务端.. (当然 不限于场景 假如可以转 base64 的话, 直接显示 就好了~

    好吧.. 我刚刚 google 了下.. 我的好奇点, 其实就在于 event.clipboardData 这个对象中..

    image-20210124130519649

    看来这个问题 好像没什么意思.. 涉及到的原理, 浏览器 api 都提供了, 把魔法都封装好了..

  36. A: 分享一个 我今天思考的点.. 这个点是今天团队技术分享时涉及的.. 关于 前端开发模式, 前端生态 为什么这么 suck..

    关键因素在于 , 至今为止 web 没有任何一个巨头 可以领头, 可以成为行业标准..

    不像 Android IOS 这些终端..

    这些终端应用的开发者 只要跟着爸爸走 就行了..

    B: 原生应用开发者应该也要考虑各种厂商机型的适配

    A: 没错.. android4 , ios9, ie, 微信内置浏览器, 是每一个终端开发者的恶梦 想想就开心

  37. 大半夜的分享一道算法题吧

    题目分享: Mine Sweeper https://www.codewars.com/kata/57ff9d3b8f7dda23130015fa

    简述: 给一个二维数组, 里面的特定元素代表的是 扫雷游戏中的一些格子, 就比如雷啊.. 或者 数字啊.. 然后你需要做到是 该盘扫雷能否通关.

    这道题 我去年死磕了两天, 最后通过了大部分的 case, 一直卡在一些奇怪的边缘 case, 结果不得不放弃了.. 我当时的解决方案: https://github.com/Tomotoes/Kotlin-Note/blob/master/src/Solution.kt

    有兴趣的同学, 可以做一下这道题 很爽的 (不骗你

  38. 分享读到的一个有趣观点,来自阮一峰老师。

    最近,我有一个猜想。

    我们知道,人眼有“视觉暂留”现象:影像消失后,人眼仍能保留影像100毫秒~400毫秒。这就是电影的原理,每秒播放24张图片,影像就动起来了。

    图片

    我就想问,那么有没有“听觉暂留”呢?我们听到的声音是连贯的,有没有可能其实也是一个个分离的片断?

    查了一下,还真有听觉暂留,叫做“哈斯效应”。如果两个声音相隔5毫秒~35毫秒之间,人耳会认为这是一个声音。

    相比“视觉暂留”的至少100毫秒,“听觉暂留”要短得多,最短只有5毫秒,足足相差了20倍。

    我猜想,这会不会跟信息的传输速度有关。视频的信息量比较大,音频的信息量比较小,如果人体神经系统的信号传播速度是恒定的,那么传输视频就会多耗时。为了把所有视频信息传输完,视觉就暂留久一点。

    一个有趣的经验是,4分钟的 MP3 文件(44.1kHz 抽样)体积大概是 4MB 左右,而4分钟的 1080P 视频(H.264编码)体积是 80MB 左右,相差也约是20倍。

  39. 好文分享:

    前端架构发展史 https://tomotoes.com/blog/history-of-front-end-architecture/

    摘要: 在1990年,Tim Berners-Lee 在他的 NeXT 电脑上部署了第一套“主机-网站-浏览器”构成的Web系统,这标志着前端的开始。 在最初,前端是一片荒芜的,经过浏览器大战,W3C 标准化的过程 前端才慢慢成长了起来。

    这篇文章 读了很多遍, 主要讲了 前端改革 30 年,从一片荒芜到微前端兴起, 很有价值, 并且文笔很好, 推荐阅读.

    本文作者 是我一朋友, 狗头

  40. https://usehooks.com/useKonamiCode/ 分享一个有趣的 hooks, up up down down left right left right B A 的按键 彩蛋

  41. 微服务架构(Microservices Architecture, MSA)的出现并非偶然,与这个时代的软件思想、技术工具的发展有着密切的联系。比如,将业务功能服务化,是SOA的延续;RESTful等架构的兴起,让我们可以考虑更多轻量化的通信机制;领域驱动设计指导我们如何分析并模型化复杂的业务;敏捷方法论帮助我们拥抱变化,快速反馈;持续集成和持续交付(CI/CD)促使我们构建更快、更可靠、更频繁的软件部署和交付能力;虚拟化和容器技术的发展,使我们简化了部署环境的创建和安装;DevOps文化的流行及全栈自治团队的出现,使得小团队更加全功能化。这些都是推动微服务架构诞生和发展的重要因素。

    摘抄自 分布式系统常用技术及案例分析 第二版

    A: 前段也有微服务了

    B: 是呀~ 应用复杂性不可避免,所以 系统级的模块化 也是趋势所向。

    如果一股趋势不加以控制,混乱度会越来越高。 “微”服务就是抑制熵增的很好例子~

  42. image-20210124130756895

    并发出轨可太秀了

  43. 每日一句分享: 经济发展不一定会缓解贫困,反而有可能加剧贫困,物质进步不仅不能解脱贫困,实际上它产生贫困。虽然经济革命使生产力上升,但它不一定是在底部对社会结构起作用,把整个社会都抬高,反而好像一个巨大的楔子,在社会的中部穿过去。那些在分裂点以上的人们处境上升了,但是那些在分裂点以下的人们被压碎了。

    来自 亨利·乔治的《进步与贫困》

  44. Unix 的发明是50年前,1969年。 这50年 人类社会的发展超乎想象。

    30年前,还没有网页,浏览器,搜索引擎。

    中国封建社会可得2000年之久,所以社会进步的根本动力是技术。

  45. 不要害怕失败。 人生的最终结果是一个极大值函数(由所有尝试中最成功的一次决定),而不是一个平均值函数。 失败完全可以理解成积极进取的结果,只有生命力充沛的人,才可能会有一次又一次的失败。一味地恐惧失败,只会让自己畏首畏尾,丧失进取心。

    摘抄自 阮一峰老师的散文 -- 被拒绝,也是一种肯定

  46. 刚刚读到 unix 联合创始人, c语言之父 丹尼斯·里奇 的故事,让我吃惊。 发明Unix和C语言,给丹尼斯·里奇带来巨大的荣誉,但他始终没有跳槽,一直在贝尔实验室工作,尽管后者多次分拆,到了最后已经名存实亡。2001年,接手贝尔实验室的朗讯公司,决定关闭大多数实验室,许多研究人员纷纷离开,包括Unix发明者之一的肯·汤普森都去了Google,但是丹尼斯·里奇哪里也没去,还是留了下来。2006年12月1日,贝尔实验室被整体卖给了法国阿尔卡特公司,第二年他就选择退休了。 退休以后,他过上了隐居生活,外界几乎忘了他的存在。2011年10月12日,共事20年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,无法知道准确的死亡时间。

  47. 最令你吃惊的事实是什么? 人生只有900个月。

    C: 900个月还少吗

    B: 900个月还少吗

  48. 苹果公司的市值等于丹麦(世界第28大经济体)的净资产,用户数量等于中国人口。所以,如果把苹果公司看成一个国家,它将是一个超级大国,对世界人民的生活、政治和文化产生了深远的影响。

  49. 分享篇文章:

    Worth Moving to Sweden as Engineers? https://hongchao.me/living-and-working-in-sweden-as-engineers/

    一名国人开发者在瑞典的十年回首.

    文中涉及到的很多关于福利, 工作环境的问题 都很现实.

  50. 分享篇文章: FIZZBUZZ IN 10 LANGUAGES! https://iolivia.me/posts/fizzbuzz-in-10-languages/

    FizzBuzz 是一个简单编程题, 从 1 到 100 的数列中, 遇到3的倍数输出Fizz, 遇到5的倍数输出Buzz, 遇到3与5的共同倍数输出FizzBuzz, 否则输出数字本身

    文中给出了 10种不同编程语言的实现.. 其中 rust 的模式匹配特性 与其他语言格格不入..

    如果是我的话, 我会这么写

    const solution = () => Array.from({ length: 100 }, (_, i, a = !((i + 1) % 3), b = !((i + 1) % 5)) => a && b ? 'FuzzBuzz' : a ? 'Fuzz' : b ? 'Buzz' : (i + 1)).forEach(i => console.log(i))