在项目中使用 Dead Simple LESS CSS Watch Compiler 来自动生成 css 文件

9a1f326b911de6c1629837f3b57551e5 1

最近在写一个 WordPress 主题来帮助我完成从 WordPress 到微信公众号的实现。在这个过程中,我需要借助于一些 CSS 的超集,来帮助我完成样式的编写。考虑到 SCSS 的 C++ 依赖问题,我选择了 Less 来完成。但如果直接使用 lessc 的话,主要面临的问题在于无法检测文件更新,这样对于需要实时查看效果的我来说,是比较麻烦的。所以我选择使用 Dead Simple LESS CSS Watch Compiler 来完成自动监控文件变化并刷新的功能。

教程

安装

执行 npm 命令来安装 Dead Simple LESS CSS Watch Compiler

yarn global add less less-watch-compiler 

安装完成后,你就可以执行命令来监听文件的变化。

配置

这里为了方便,我在 WordPress 插件目录中初始化了 npm, 因此,可以非常方便的借助于 npm script 来完成命令的配置。

通过配置了单独的 Build 命令,实现了执行 npm run build 就会自动监听 less 文件夹下的文件,并转换成对应的 css 文件,放置在 css 目录中。

{
  "private": true,
  "scripts": {
    "build": "less-watch-compiler ./less ./css"
  },
  "devDependencies": {
    "less": "^4.1.2",
    "less-watch-compiler": "^1.16.3"
  }
}
Code language: JSON / JSON with Comments (json)

其他

如果你需要对 less 运行有更多配置的诉求,还可以创建一个 less-watch-compiler.config.json 来配置具体的执行目录。不过我对于这部分没有要求,就直接整个目录来进行配置了。

{
    "watchFolder": "<input_folder>",   
    "outputFolder": "<output_folder>",
    "mainFile": "<main-file>",   
    "includeHidden": false,
    "sourceMap": false,
    "plugins": "plugin1,plugin2",
    "lessArgs": "option1=1,option2=2",
    "runOnce": false,
    "enableJs": true
}

总结

SCSS 因为 node-scss 的编译问题被各种吐槽,虽然换成了 dart-scss ,但历史的阴影还在。选择了 less 后,通过一些配置,可以让我自己的开发变得更加简单。何乐而不为?

你不做的那些事情,造就了你的样子

woman and angel kissing statue

在这个一切事物都十分充裕的时代,我们可以做几乎所有事情。但换个角度来看,我们所做的那么多、那么繁杂的事情,也让我们变得面目模糊,无法被看清。

我常常因生命短暂而感到遗憾,终我一生,难以看完所有我想看的图书、学习我想学习的知识,体验我想体验的生活。但另一方面,我也深刻的明白,正是这种有限的选择,让我们专注当下、专注自我,专注于做好每一件事,每一件小事。

对于每一个人来说,我们在做的那些事情十分重要,如雕塑一般,在做的事情形成基石,为我们打好了基础。而那些我们不做的事情,塑造了我们的样子,剥去我们身上的无用之物,仅留有用之身。

用好传感器带来的产品价值

yellow and black building under white clouds during daytime

昨天在宜家买了个钟表,仔细研究后发现,这个产品的设计非常的有意思,完美的表现出在已有设备加,加入一些小巧的传感器,从而实现一个非常有意思的产品。这也是我觉得当下,我们的互联网产品、软件产品、硬件产品在设计方面所缺乏的。

我买的产品是宜家的 LÖTTORP 洛托普,我买了个百搭的白色表。

初次看到这个表,其实有点其貌不扬,常规的显示屏和四个莫名其妙的 Icon。

6997a7f2c54000b8975a13f90fdc7724
正面

背面倒是不错,只有电池仓和两个按钮,十分的简洁。

58a619c154c79a5835e57646d32341c2

这个表设计的有意思的点在于他在内部嵌入了一个传感器,通过这个传感器来感知钟表此时的方向,从而实现控制展示不同的功能。通过这样的方式,来实现了在一个钟表当中,集成了多个钟表的能力。

下面的视频,是我自己录制的视频,可以帮助你直观的看到这个设备的操作方式。

不要内部创业,内部创业只会让你不幸

man standing beside another sitting man using computer

作为公司内的员工,你可能会被激励员工的“内部创业”所打动。但你要知道的是,你可以做内部创新、可以在螺狮壳里造道场,切不可在其中投入你的感情和心力。

这里的矛盾在于,你使用公司的资源做内部创业,你所有的产出,其实是归属一公司所有的。你可以用公司内部创业的路子去做所有你不那么看重的事情。但如果你真的看重一件事,且愿意为之付出极大的心力、劳力,那么一定要跳出来自己做。

跳出来,还有生的可能,留在企业内部,一定会死。

原因很简单,随着业务的高速发展、团队的扩大,创始人提供的价值会越来越少,慢慢跟不上自己的团队的迭代。这个时候公司有几个选择:

  1. 换一个负责人,你出局,不给你任何补偿,但业务可以更好的活下去
  2. 不换负责人,让你继续做,但可能业务慢慢挂掉。
  3. 换负责人,并给你一些赔偿:别想了,你以为是自己创业的么?公司怎么可能给你补偿。

这种变化,如果不是你心爱的产品还好,但如果是你心心念念的产品,一次就够你万念俱灰了。

既然都是风险,干嘛不出来做呢?

从另外一个角度来看,因为你是「内部创业」,那么你就必须遵循企业的大规范。如果企业的战略有调整,作为企业战略当中的一份子,你的业务必须被砍掉的时候,你应当如何自处?自然是跟随企业的战略调整,不然还能怎么办?

最后的结论你会发现,还是自己出来干最省心。

为什么我选择放弃生财有术?

fan of 100 U.S. dollar banknotes

今天,我想和你聊聊我从 2020 年开始加入生财有术,到 2021 年续费,再到 2022 年决定停止续费的心路历程。

心路历程

怀疑期(加入生财有术前)

在 2020 年之前,我其实是对生财有术不感冒的。和大多数人一样,我的理解是「既然有赚钱的事情,你为什么不留着自己做,而要分享出来」。

这也是生财有术在很长一个周期上在面对的外界的指责。

认可期(加入生财有术之后)

加入生财有术源自于一个契机,我朋友圈的老朋友,工程师,技术总监 —— 朱鹏飞同学在朋友圈发了生财有术的推广,于是乎我想了想,基于对他的信任,加入了生财有术。

我的目的也非常明确:我自己是一个工程师,是一个创造者。我擅长的是创造一个东西,而不是把一个东西推广的更好。生财有术中的经验贴可以帮助我看到别人是怎么思考同一个问题的,可以为我补充更多的信息。

于是乎,我在生财有术开始疯狂的了解信息,还参与了深圳和北京的活动,还因为一次轻享,获得了一颗龙珠,加入了龙珠群。

d2b5ca33bd970f64a6301fa75ae2eb22 20

生财有术提供了我想要的信息,帮助我理解了不一样的世界,看到了不一样的选择。

在这个阶段,我也领悟出为什么有的人愿意分享自己的心得给别人,总的来说,其实是「我知道这个东西能赚钱,但是这个钱太少了,我懒得做,顺手发给你也行」

基于这个思路,我还启发了一个人做了保罗 · 格雷厄姆的中文站点

反思期(现在)

但到了 2022 年,我为什么开始选择离开?其实核心点在于我意识到,生财有术提供的价值对于我来说,开始逐渐发生了变化。以及价格的上涨对于我来说,意味着 ROI 不符合预期。

一方面,生财有术开始从提供信息,到提供更加丰富的活动和交互转变。虽然依然会有提供信息,但对于我来说,活动所带来的溢价对我没什么价值,我并不太需要持续参与一个活动。

另一方面,得益于知识星球的机制,即使我不再续费,我依然可以看到之前我买的内容。现有的 3000 多篇精华我都没看完,完全不着急续费。

d2b5ca33bd970f64a6301fa75ae2eb22 21

从这个角度来看,知识星球真的不错。

不适合我,那适合谁?

在写这篇文章的时候,我也在想,既然不适合我了,那适合谁?毕竟,生财有术是一个社群,不可能适合所有人。

先说说为什么不适合我:我自己是有一些明确的标签的「工程师」、「创作者」,本身有在做个人品牌影响力方面的事情。对于我来说,我需要的是补充信息,丰富自己的品牌。当现有的信息已经无法处理的情况下,那么我完全没必要马上获得更多的新信息来满足自己 FOMO 的情绪。我需要的不是去发展更多的横向业务,而是让自己在纵向业务上发展的尽可能好。所以短时间来看,生财有术并不能提供我所需要的东西。

再说说适合谁:

  • 拥有自己业务的老板:我在生财有术的龙珠群里,里面有不少专家达人,如果你加入龙珠群,完全可以在其中达成一些合作,促进更好的业务的发展。
  • 没有自己形态的普通人:除了老板,绝大多数人是普通人,普通人的坏处是没什么特点,但好处是也有塑造的机会,而 2022 年生财有术会有不少的训练营和大航海、小航海,正适合普通人先抓住一个机会上车。

总结

唠唠叨叨这么多,总体来说,就是一句话 —— 不匹配了。但不匹配我,不意味着不匹配你,如果说上面我描述的这些你觉得符合你的诉求,那生财有术依然是一个符合你预期的社群。

0d5b1c4c7f720f698946c7f6ab08f687
如果看了这么多,你觉得生财有术适合你,那就大胆扫码加入吧!

关于「竞争」,给年轻人的一些建议

group of men running in track field

很抱歉,虽然我年纪稍长,对于很多人来说,都还是一个小朋友,但依然要用一个非常老气横秋的口气来和你讨论关于「竞争」这个话题。因为有太多的人来问我关于竞争的问题。我不得不选择将我的观点和建议整理成一篇文章,以减少我重复介绍自己观点的次数。

竞争中的软门槛与硬门槛

在竞争中,常常被大部分人忽略的是,竞争并非是静态的。实际上,由于竞争中存在的软门槛和硬门槛的不同,使得竞争往往是动态的。

竞争中最常见到的是硬门槛,也是我们一般而言,给到新人的建议 —— 你必须去做某些事情,不然你就会付出极大的代价。比如,最常见的是,我们给到每一个年轻人的建议是你应该读完本科。如果你是专科,那就努力专升本。或者想办法走成人高考,获得一个本科的文凭。

d2b5ca33bd970f64a6301fa75ae2eb22 16
应聘中的软门槛和硬门槛

硬门槛的意义在于它真的可能在关键问题上,阻止你进行下一步。比如说,对于航天科技的核心工程师来说,相关专业的文凭就是硬门槛,如果没有对应的文凭,相关的企业和单位是不敢录用你的,因为你完全可能为航天事业埋下后患。

除了硬门槛,被很多人忽视的就是软门槛,以及,很多人会把软门槛认知为硬门槛。和硬门槛不同,软门槛不会成为你能够完成某个职位工作的阻拦,但软门槛会成为别人筛选你时的重要标准。在你求职时,你有没有某个证书、你有没有某个认证,都只是你求职过程中的软门槛。不要将软门槛看作是硬门槛。硬门槛是用来筛掉不适合的 60% 的人的,而软门槛则是用来选出想要的 20 % 的人。剩下的 20% 的人,就是那些符合了硬门槛,但无法跨过软门槛的人。

竞争是全方位的,但也是局部的

对于绝大多数的人来说,面对的竞争往往都是全方位的。你并没有什么异于常人的特点,你和你的竞争者并没有什么不同。这个时候,你们并没有太大的差距。但倘若你拥有一个和其他人不同的优势, 这个优势就会成为提升你综合评分而获得选中的重要因素。

d2b5ca33bd970f64a6301fa75ae2eb22 17
大家都相同的时候,你的竞争优势会帮你获得最终的成功

绝大多数的时候,竞争即会看你的所有竞争条件,希望尽可能选择一个足够好的候选人。另一方面,如果你在某些点上特别的突出,就能够让你自己成为被选中的佼佼者。

如果你的某个技能超出统一领域的其他人一个数量级的水平,那么即使你的其他能力不够强,依然可以获得青睐。但作为普通人的我们,应当有这样的自知之明,是否是这样的人。

d2b5ca33bd970f64a6301fa75ae2eb22 19
数量级的差距可以让你获得青睐

高学历带来的不一定是竞争优势,也可能是竞争劣势

对于一般来说,我们都认为高学历带来的是更大的竞争优势。但是,高学历也会为你的选择来到沉没成本。这些沉没成本会让我们失去一些可能性和选择。

当然,失去的可能性未必是坏事,也可能是一件好事。但作为选择的人来说,确实会有可能担心庙小容不下大佛而不愿意选择,将你从当前的选择中踢出。换句话说,高学历意味着某些事情,你再也做不了了。

电子书助手

ebook

我自己是一个很喜欢看书的人,所以买了很多平台的电子书会员(Kindle、微信读书、华章书院),但一直以来,都有一个问题在困扰我,就是如何确认一本书在哪个平台上有?

虽然下意识上我们认为不同的电子书平台上的书籍应该是相同的,但在实际的操作层面,确实是有所不同的。受限于版权、出版社合作关系等等,有些书可以在微信读书上找到,但无法在 Kindle 上找到;有些书可以在图灵社区找到而无法在 Kindle 找到。

这使得作为读者的我十分困扰,如何才能更加明确的知道我想看的那本书在那个电子书平台上能找到。

终于,现在有了这个工具 —— eBooks Assistant 油猴脚本

这个脚本通过自己实现的爬虫,爬取了各平台拥有的电子书数据,从而实现在你访问某个豆瓣电子书页面时,告诉你那些平台有对应的电子书,一键跳转到对应的平台进行阅读,降低搜寻电子书的成本。

d2b5ca33bd970f64a6301fa75ae2eb22 11

脚本地址:https://greasyfork.org/en/scripts/412479-ebooks-assistant

脚本及服务器源码:https://github.com/caspartse/eBooksAssistant

看纸质书/电纸书,而不是社会化读书

person reading book white sitting

首先,在文章的开始,我先要强调,我并不是绝对不使用社会化读书软件(如:微信读书),但我使用微信读书有自己的方式

接下来是具体的观点内容

我们在读书的时候,应该尽可能的选择纸质书/ Kindle

在各种购买推荐的时候,你都会发现,所有针对 Kindle 的推荐都会提到 「无打扰」,这同样是我推荐你看纸质书/Kindle的原因。

作为手机不离身的一代人,我们现在已经习惯了「被打扰」,但不意味着这是对的,不断的被打扰,让我们无法集中精力去做应该做的事情。当我们不断被打断,我们就更应该去寻找稀缺的集中。

而在这件事上,无论是纸质书还是 Kindle ,都可以实现类似的效果。你可以沏一杯茶(或者是煮一壶咖啡),将手机关静音,放在另外的房间里,拿着一本书,或者是你的 Kindle ,在桌前仔细的阅读。

你可能会担心自己看不到消息。但这世界上有多少事情是「你一个小时不看手机」就会产生问题的。

借助一个和通讯设备分类的工具,我们可以很好的实现想要的「宁静」、「专注」的效果。

但这些,社会化读书软件是无法实现的。

社会化读书软件本来就是帮助人们建立起更全面的连接

几乎所有的企业都希望开发出一款拥有「网络效应」的应用。

网络外部性(network externality),又称网络效应(network effect)或需求方规模经济(demand-side economies of scale),指在经济学或商业中,消费者选用某项商品或服务,其所获得的效用与“使用该商品或服务的其他用户人数”具有相关性时,此商品或服务即被称为具有网络外部性。 最常见的例子是电话或社交网络服务:采用某一种社交媒体的用户人数越多,每一位用户获得越高的使用价值。

对于企业来说,网络效应是一个很好的工具,可以帮助留下用户,但对于用户来说,一方面它的工具性随着网络效应而获得提升,但另一方面,我们也会因为网络效应而被限制在应用当中。

微信读书等一系列社会化软件会通过产品功能的设计,让你不断的被触发,不断接入其中,让你读书也不会那么的纯粹和集中。评论、弹幕,都不断的把你从阅读中拉扯出来,进入到一个社会化的环境当中。

包括从某种角度来看,我在 B 站/ Youtube 上看视频的时候,也很少会开启弹幕(除非我看的内容本来就是很无厘头的内容),我会希望能够静下心来安安静静的欣赏一个作品,而不是不断被拖走,不断的被打断。

社会化读书的用法

我在前面提到过,我其实并不是完全不使用微信读书。我自己使用微信读书的场景是这样的:

  1. 读小说:Kindle 上的小说大多是已经完本的。如果希望看一些更加接近当下的网络作家的小说,那么微信读书是一个很好的选择。而微信读书有阅读赠送书币的设定,你可以通过读小说来获取书币。再通过书币购买新的小说章节。
  2. 读公众号:微信读书可以阅读微信公众号,这一点相比于微信公众号自带的阅读机制,会更好,你可以像图书一样翻阅一公众号,并在其上做标记、批注,对于如果你要深度研究某个特定的公众号,是非常有帮助的(比如很有个人特色的大 V、投资人等)。
  3. 发现新书:我现在发现新书的方式基本上是去线下的书店看有没有什么有意思的新书、去 Amazon 看看最近的优惠是什么书以及去微信读书当中看看朋友的书架里都是什么书(不过我自己的书架其实是隐藏的,因为我不希望让别人发现我在微信读书看的都是小说)。

梦想的房子(5):弱电箱、书房弱电环境

black network switch with cables

作为一个计算机相关行业的从业者,我自然少不了在家中配置一些电子设备。而且我也会花费大量的时间用来在家庭中编程、生活,因此,一个好的家庭网络环境是必要的。

弱电箱

从我当前的租房的状态来看,我可能会在弱电箱中需要以下一些东西:

  1. 光猫:这是当下必备的了,毕竟已经光纤入户,那我们就必须要有相应的光猫来完成光信号的解析。所以这个是不可或缺的。
  2. 交换机:我的家中可能会有大量的设备,因此,交换机对于我来说是必要的。实际上,简单一算可能就会发现我需要的设备需要不止一根网线 mac Mini + PC、NAS、单独接入无线路由器、可能还需要给电视预留网线的接口,再考虑到后续可能会有儿童房、卧室电视之类的,这样就至少需要六口交换机了,需要提前预留(但不一定会用到)
  3. 插座:光猫和交换机需要相应的电力供应,因此,弱电箱中至少要有 5 个左右的插头,以确保不同的设备有充足的电力供应
  4. 风扇:确保弱电箱内部的热量可以散发出去(如果是一个比较大的弱电箱的话,就可以免于买风扇,考其自然散热)。

通过这样的方式,就可以将网络信号从外部问题转化为稳定的内部问题。接下来要处理的就是如何将信号传递到不同的位置。

对于电视,可以直接通过墙内的线路进行信号的传递,直接购买千兆的超6类线来进行线路的部署即可。

此外,还涉及到家中会用到的无线网络。无线网络需要通过网线从交换机侧接入,并辅以 AP 来完成家庭内部的网络覆盖。

对于需要用到网线的书房,需要通过单独的网线,从弱电箱将信号牵引至书房,从而可以在书房内获得信号。出于使用场景的问题,书房内需要单独设定路由器来进行信号的分流。

书房

书房中我的电子设备较多,因此也需要有更多的网络接口来使用。从弱电箱进入到书房后,需要有一个单独的路由器来进行网络承载,这样也可以在书房内构建一个小型局域网,方便在局域网内进行高速的传输。

在路由器方面,我希望是至少支持 1 – 2 个光纤入口的路由器,这样可以让我的 NAS 和 PC 能够以光纤的方式进行接入。另一方面,还要考虑到 NAS 能够被其他设备所访问和其他的电脑(比如 mac 笔记本)的接入,因此,书房应该也有一个单独的空间用于放置路由器和 NAS。

总体来看,我需要一个能够满足如下需求的书房弱点环境:

  1. 路由器:用来建设书房的局域网;
  2. NAS:我的是 QNAP 的 TS231P2,挺好。
  3. 插座:至少需要 2- 3 口的插座,来完成电路的接入。

梦想的房子(4):玄关篇

gray wooden house

租房多年,也对于玄关有了一些简单的理解。因此,也就有了自己的需求。

尺寸

够用就行,没啥特别的追求。

功能设施

鞋柜

我们每个人都会有不止一双鞋子。女性更是有不同功能的鞋子,因此,玄关的鞋柜至关重要。在我看来,两个人的话,最少需要 10 ~ 15 双鞋子的存储空间,才能确保地上没有多余的鞋子。

收纳柜

玄关区域除了鞋子以外,其实还有更多的东西,比如钥匙、门卡、口罩、洗手凝胶、一次性拖鞋、耳机等物品。

有了一个单独的收纳柜,可以将这些东西存储在收纳柜中,并在使用时随时拿出来。

在收纳柜上可以有一个区域/小篮子,来放日常出门的钥匙。

下沉式玄关

下沉式玄关和非下沉式玄关的一个很大的区别是它人为的区分出了一个区域,从而可以更好的实现外鞋不进屋。

不过,下沉式玄关挺依赖房子本身的属性的,也不一定能搞定。

可视门禁控制器

现在的新房基本都有这个,不过放在哪也是个讲究。我觉得放在门口比较合适。放在厨房/客厅其实感觉不太实用。

总结

玄关区域不大,但细节不少。特别是在疫情当下,玄关作为家的入口,还是很值得关注一下的。

梦想的房子(3):厨房篇

gray wooden house

我其实算是一个比较喜欢做饭的人,虽然做的不算太好吃,但始终坚持在做(又菜又爱玩)。厨房在我的生活中也是一个重要的角色。因此,厨房的好坏,是很影响生活的。

尺寸

厨房对我来说,尺寸不需要特别大, 能够将功能设施安排好,还有一定的空间可以正常做饭,不至于特别窄即可。

功能设施

双开门冰箱

我需要一个足够大的冰箱,或者一个冰箱 + 一个冰柜。我平时蛮喜欢囤一些吃的,一个小冰箱往往就会导致做饭时空间捉襟见肘,看到好吃的也需要思考一下自己的冰箱是否放得下。一个更大的冰箱会成为一个更好的选择。

洗碗机

如果说,做饭最痛苦的是什么,那莫过于洗碗了。租房受限于空间等各项原因,所以没办法用洗碗机。自己买房之后,我希望可以借助洗碗机来降低我做饭的摩擦力,来做饭。

日式三眼灶

自打我点了「焯水」这个技能后,一些比较难熟的菜,我会比较喜欢先焯水再炒。而两眼灶会导致你必须因为焯水而占用了一个位置。多出来的一个灶口可以用来焯水(是否有必要?可能还要看,但可能一个更好的排布设计可以解决这个问题)。

热水洗菜池

热水洗菜也是另外一个做饭的巨大阻力,热水洗菜可以降低做饭的阻力,不多解释。应该能理解,特别是冬天。

可以拔下来的水龙头

方便各种层次和角度的清洗。

厨房架

我会希望在厨房放置烤箱 & 空气炸锅 & 微波炉,因此,最好有一个架子可以容纳这些电子设备(还需要考虑一下电力排布的问题)。

  • 烤箱:可以用来烤口蘑、青菜、肉之类。
  • 微波炉:用来加热饭菜。

收纳柜

我会在厨房放置很多东西,比如多囤的调料、应急储备的方便面、干货、大米、鸡蛋、青菜。因此,一个大的收纳柜可以帮助我更好的收纳这些东西,从而解决厨房的收纳和管理的问题。

当然,这个柜子还需要有一定的碗筷的收纳整理能力。

总结

厨房算是装修过程中一个比较复杂的东西了,因为其设计的大功率电器较多,很容易引发火灾。所以,提前记录下自己的需求,以备日后不时之需。

梦想的房子(2):卫生间篇

gray wooden house

关于卫生间,我其实一直很喜欢日式卫生间的风格,小巧但功能又足够丰富。但是对于我来说,我并不觉得一定要把卫生间做的那么小,如果有充足的空间,可以适当的调整一下,从而获得更好的生活体验。

尺寸

对于卫生间而言,我其实可以接受空间小一点,但我还是希望可以有干湿分离的。这样可以避免卫生间总是潮潮的。

功能设施

浴缸

每日的工作结束后,泡个浴缸是非常舒服的事情。相比于国内的浴缸,日式浴缸会更小一点,但同时也让泡澡这件事变得更加轻量。不需要背负那么重的负担。如果可以的话,我还蛮希望有一个日式的小浴缸,从而让每天都可以更加惬意。

热风/浴霸/自循环温控系统

租房的一个痛点就是大部分房子的卫生间并没有浴霸和热风,这就导致你洗完澡之后,会非常的冷,擦完身子出来瑟瑟发抖。洗澡过程中也必须开着热水,这样才不至于觉得冷。

因此,热风和浴霸对我来说是必要的。这能让你在洗澡中可以获得温暖。洗完澡擦身的时候也不至于感到冷。

淋浴头

淋浴总体来说,我觉得一些星级酒店的淋浴是非常不错的,原因主要如下:

  1. 水压足够大:这可能需要在自己家中安装一个增压泵来实现。
  2. 水温足够热:这可能需要在家中配置一整套零冷水的解决方案来实现。
  3. 多样的冲水方式:你可以选择顶冲,也可以选择侧冲。这样对于我这样的个子相对高一些的人来说,可以用顶冲来洗头,非常舒服。

因此,我希望自己以后装修房子的时候,也可以购买并配置这样的方案。

自动马桶

虽然我其实觉得蹲便可能更适合我们每一个人。但确实要考虑到家中的其他成员的诉求,自动马桶还是必要的。

洗衣机 & 烘干机

晾衣服真的是一个痛苦的事情,如果在洗衣机上提供了烘干的功能或有相应的烘干机,会让晾衣服这件事变得更加简单。同时,也可以让我们更好的利用阳台。

泡着茶,喝着咖啡在阳台上看书难道不舒服么?

总结

卫生间看似不起眼,但说实话,卫生间还挺影响生活质量的。你的一天从卫生间开始,你的一天也从卫生间结束。一个好的卫生间,值得你拥有。

梦想的房子(1):书房篇

gray wooden house

在毕业的头两年里,我住在一个月只需要 1800 的单间里,艰难求活。而随着女朋友的到来,我的生活开始无休止的膨胀:居住环境的空间诉求变大;共同生活的生物变多;更多的在家工作的时间,让我开始更加希望自己有一个书房。

于是,在最近的两次租房的过程中,我都选择了两居室,并将其中的次卧改为书房,以满足自己的需求。

很快,我也会迎来又一次的搬家,于是,记录下自己的所求,以更好的在下一次搬家时,寻找到适合自己的房子。

尺寸

因为我除了编程相关的工作以外,还会拍一些视频,因此对于房间的纵深会有一定的要求,需要能够确保我不需要离镜头太近,免得视频里都是我的大头。

功能设施

水吧

我经常在深夜写代码、写文章,因此,茶叶、咖啡是我不可或缺的伙伴。现在我的水吧是在卧室,这意味着如果我需要喝茶、咖啡,就必须到卧室去接,在卧室煮咖啡,这样会非常影响同住人的生活体验。

因此,如果可以在书房当中有一个独立的水吧,对我来说,会是非常方便的。

  • 全自动咖啡机:咖啡因重度患者,不能没有咖啡。
  • 饮水机:多喝热水、多喝水、多喝冰水。我的饮水机同时提供了冰水(冰水开关关掉后就是常温)和热水两种版本,因此,我可以在夏天喝到冰水而在冬天喝到热水。
  • 制冰机:我是一个喜欢喝冰水的人(可能是因为胖),因此,在我看来制冰机也是不可或缺的。

此外,到了新的房子的话,我希望我可以不再使用4.5L的桶装水,而是改用 10 ~ 20 L 的饮用水。虽然可能水质没差,但我不再需要频繁的购买桶装水了,也不需要单独留存一个空间用来放水。

书架

人不能无书。从 1800 的单间,还是如今 5000 块的两居室,我始终都带着书。区别不过是书多书少。如今我家中依然放着百来本书。对于我来说,书是进步的阶梯,也是我精神的食粮。每当我迷惘之时,我就开始读书,从书中寻找答案。即使是如今的电子书时代,我也依然不放弃看实体书。

当然,这些书也是有选择的,对于那些不好的,或者是我觉得没有留实体书必要性的,我一般都会选择在朋友圈中将其送出去。留下来的,就是那些精挑细选,重要的图书。

办公桌

办公桌是一天工作的重点,因此,办公桌必不可少。而从我以往的办公桌的大小来看,我需要的应该是 140CM * 70CM 以上大小的桌子,这样才能放下我的两个显示器、鼠标、Mac mini,以及一些零散的水杯之类的小东西。

储物柜

经过以往几次搬家的经验,我发现我自己的东西还是比较多的,我需要一个足够大的储物空间,来存放我自己的杂物,包括:

  • 各家合作方赠送的礼品
  • 相机、镜头、三脚架、录音笔、无线麦克风之类的东西
  • 线材
  • 败家电子设备不常用的电子设备

单人床

对于我来说,最高效的状态是全力工作,然后累了就休息(睡觉),睡半个小时就能满血复活,然后再继续工作。这样的状态会能让我更好的工作。因此,一个 70 CM 宽的单人床,可以让我拥有更好的中场休息。

为什么不是去卧室?卧室太舒服了,可能会一觉睡好几个小时。稍微的不舒服的感觉,会让我更容易醒来。

总结

为什么要总结自己想要的房子?我们终归会踏上拥有自己的房子的路,无论是在一线城市,还是三四线小城市,总是会有的。那我们如何才能拥有一个称心如意的房子?很显然,从我们之前的生活经验中,总结出适合自己房子和布局。

我有一段时间很喜欢住 Airbnb 就是这个原因,我希望可以通过住在别人家里,感受到好的环境是什么样的。然后逐步找到适合自己的环境。接下来的几天,我将继续总结我梦想的房子。

什么样的业务用什么样的架构

man in black long sleeve shirt sitting on black chair

多年来,我一直是 PHP 的拥趸,不论中间我写过多少编程语言,但我始终觉得,PHP 能从 2000 年活到现在,是有其意义和价值的。

而到了现在,我终于可以回答这个价值和意义到底是什么 —— 什么样的业务,使用什么样的架构

作为技术创业者,我们最常遇见的问题,便是过度设计技术方案:我的项目是不是应该做个数据库主从备份?我的项目是不是应该做 Kuberentes 集群来处理弹性?

但实际上,对于绝大多数的业务而言,这些问题都是根本不重要的 —— 如果没有 Kubernetes,我们能否保证我们的业务的稳定性?如果没有主动备份,我们能否保障我们的业务可以平稳运转?

技术在绝大多数的业务中,都是一个成本中心,是一个保障业务正常运转的基石。他应该被重视,但不应该被过度重视。一个创业公司可能会因为业务不够稳定而失去用户,但绝不会因为业务非常稳定而留住用户。用户在乎的是你为用户解决了什么样的问题,而不是用了什么样的架构。

过度(提前)优化是万恶之源。

从头梳理,看看中国的 ICP 备案制度

26a5088bedce6368203d40ac619ac827

对于生活在中国互联网环境中的开发者来说,ICP备案(后称「备案」)是一个很难绕过去的话题,但凡你需要正经的建设一个网站,那么备案就是一个必须要做的事情,不然可能会出现各种奇奇怪怪的问题。但,你是否思考过,为什么我们需要备案?你是否了解过备案二字背后的深层含义?

为什么我们需要备案?

备案的要求和历史,可以追溯到 2000 年 9 月 20 日国务院第 31 次常务会议通过的一个管理办法 —— 《互联网信息服务管理办法》(后称信息管理办法),由时任总理朱镕基先生签发。后续我们所进行的一切备案工作,其实都是这个信息管理办法的延展。

在《互联网信息服务管理办法》当中,第二条说明了什么样的情况才需要进行备案:在中国境内从事互联网信息服务活动。

第二条 在中华人民共和国境内从事互联网信息服务活动,必须遵守本办法。

互联网信息服务管理办法, 2000 年 9 月 20 日

这一条也解释了,为什么 Facebook、Google这些网站也可以正常运转,因为他们严格意义上来说,并不算在中国境内从事相关的信息服务活动(但也没保证你一定能够访问)。同样的,如果你自己的网站托管在海外的服务器上,一样不需要备案(但同样不保证你一定能访问,毕竟你不在境内提供服务,网络出现波动啥的非常正常)。

圈定了范围之后,第三条规定了不同的互联网信息服务都是什么样的类型,进行了定性操作。

第三条 互联网信息服务分为经营性和非经营性两类。经营性互联网信息服务,是指通过互联网向上网用户有偿提供信息或者网页制作等服务活动。非经营性互联网信息服务,是指通过互联网向上网用户无偿提供具有公开性、共享性信息的服务活动。

互联网信息服务管理办法, 2000 年 9 月 20 日

而在完成了定性操作后,紧接着在第四条声明了不同服务类型应该执行的策略:经营性采取许可制度,非经营性采取备案制度。

第四条 国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。

互联网信息服务管理办法, 2000 年 9 月 20 日

至此,我们熟悉的 ICP 备案走上了台前。而我们现在了解到的各种具体的备案的细节,则是在管理办法内容的延展,如果你对于这些内容感兴趣,可以详细的阅读这个信息管理办法。

在 2005 年 1 月 28 日,在《互联网信息管理办法》之上的细分管理办法《非经营性互联网信息服务备案管理办法》(后称非经营性管理办法)也相应出台,对于非经营性互联网信息服务进行了更加明确的安排和说明。我们所熟悉的备案登记表、省级通管局、网站底部公示备案编号等描述也出现在了非经营性管理办法当中,网站的备案事项,也正式被推行。

备案到底在备案什么?

备案对于很多人来说,最麻烦的不是搞不清楚怎么备案,而是搞不清楚如何处理域名、网站、 服务器、个人之间的关系。而所有的这些关系,其实可以用一个词来说明 —— 「双绑定制度」。

现行的网站备案制度其实是一种“双绑定制度”,一方面将网站和所有人绑定在一起,另一方面,将网站和它的接入商绑定在一起。一旦某个网站出现了问题,则需要能够在第一时间找到网站的所有人和接入商。

阮一峰,《关于网站备案,》,2009年 9 月 9 日

备案并非一个阻拦性措施,而是一个监管性措施(对比经营性互联网信息服务的许可制),希望大家可以积极踊跃的进行互联网信息服务的同时,避免恶劣影响的网站持续提供服务。找到接入商来第一时间拔网线,缩小影响范围;找到所有人来进行相应的处罚。

备案过程中的五个关键角色

当我们搞清楚了备案的核心理念和目的之后,我们重新回过头来看看备案当中的五个关键角色:备案主体省通管局接入服务提供商域名注册商域名管理机构

d2b5ca33bd970f64a6301fa75ae2eb22 6
各关键角色之间的关系

当我们真正开始进行备案时,就会面临三个元素:域名、服务器、所有人。这五个关键角色与三个元素,依次发生关系。

域名管理机构和域名

当我们开始思考建设一个网站时,必然会涉及到域名的问题。而实际上自 2017 年 11 月 30 日颁布的《工业和信息化部关于规范互联网信息服务使用域名的通知》正式实行之后, 并不是每一个域名都能够完成备案。在该通知中,要求互联网域名注册服务机构要在我国进行相应的注册和审批,才能够让对应的后缀进入到备案的流程。如果对应的域名注册服务机构没有在我国进行注册,则对应的域名无法在我国进行备案。

从而,也就出现了现在很多时候我们在购买域名时候需要考虑的一些问题 —— 域名能否完成备案?

目前所有完成了相应注册机构的审批都可以在工业和信息化部域名行业管理信息公示网站找到。如果你需要购买域名且有打算在国内进行备案,则一定记得确认你所购买的域名是否可以在国内完成备案的流程。

此外,如果你感兴趣的话,还可以在这里找到一些你可能从来都没听说过、没见过的后缀,比如.baidu

对于已经进行的域名注册服务机构,因为工信部有了相应的沟通方式,则可以在出现问题后,下发公函,要求对应的服务机构协助调查和配合。而对于没有注册的管理机构,无法完成相应的配合,干脆不予后缀备案。

这也解释了为什么现在你购买的 .io 域名不能备案,因为对应的注册管理机构没有在我国注册,不符合备案的要求。至于你看到的那些有备案号的 .io 域名,则是在相应的通知发布之前完成的备案,故而可以正常使用。

域名注册商和域名

当你选择了一个可以进行备案的域名后缀(比如 .com)之后,就可以进行域名的注册了。域名的注册需要到对应的域名注册商来完成。这个时候,也会涉及到不同的域名注册商可能会影响你的备案流程。

按照新的管理办法,你的域名需要在购买的时候完成实名认证。因此,你如果域名想要备案,则要求你的域名注册商支持进行实名认证。

比如,目前你可以在阿里云(万网)、腾讯云(新网)、西部数据等域名注册服务提供商这里购买域名并进行实名认证,在实名认证完成后,再进行后续的域名备案操作。

相应的,对于域名注册服务机构,也采用了审批和注册的限制,不同的服务商能够支持的域名实名认证也是不同的,企业需要根据「互联网域名注册服务机构审批」来进行提交,等待审批通过后,才能提供相应的域名注册和实名认证服务。

目前通过审批的域名注册服务机构也可以在工业和信息化部域名行业管理信息公示网站找到。

这也解释了为什么你在 Godaddy 、Namesilo、Namecheap 之类的域名注册机构注册的域名无法在国内进行备案,因为他们并没有在国内注册,接入相应的实名认证流程,自然无法为你提供后续的备案服务。

域名和所有人

当你选择好了域名后缀和域名注册服务商,进入了详细的域名注册流程当中时,会涉及到域名的实名认证的环节。

在这个时候你需要注意,备案要求域名实名认证和备案的主体是保持一致的,因此,如果你后续打算以哪个主体(个人或者企业)进行备案,在这里进行实名认证时,就要选择对应的信息来进行实名认证。

你提交信息后,域名注册服务机构(域名注册服务商)就会将你的域名和对应的实名信息提交到工信部。一般 1 ~ 2 个工作日后,你的信息就可以在工信部的内部系统可查,这个时候才能进行下一步的备案。

接入服务提供商和域名

域名购买好了,接下来就是选择接入服务提供商。由于备案实际上是个人与网站、网站与接入服务商进行的「双向绑定」,因此,能够提供备案服务的服务商都是在工信部进行了相应的注册的服务商(需要持有互联网数据中心业务经营许可证)。

在进行备案时,会要求你的域名已经完成了实名认证,然后再提交信息进行相应的备案,这里会要求域名的实名认证和接入服务提供商的实名认证信息保持一致,进行审核。

这也解释了为什么你购买的 DigitalOcean 的服务器无法进行备案,因为 DigitalOcean 并不持有互联网数据中心业务经营许可证。当然, DigitalOcean 的服务器也不需要进行备案。

所有人和通信管理局

当你进行备案时,会让你选择一个备案的所在地,备案的所在地决定了你的网站归属于哪个省份的通信管理局来进行管理。

一般来说,大家会选择身份证所在地。当然,如果按照惯例办法中的说明了,其实你还可以选择你的当前所在地(因为管局在乎的是能否联系到你)。选择了对应的省份,需要你提交相应的信息(需要能够精确到门牌号),基于对应的信息来进行备案。不过需要注意的是,不同的地区可能有所不同,比如基于当前所在地的备案可能会要求你提供居住证来进行备案。

理论上,你可以拥有多个不同的备案号,一个身份证所在地的备案号,和多个居住地所在的备案号

接入服务提供商和通信管理局

当你准备好所有信息,接入服务商帮你进行了基本的审核后,就会将你的信息提交至你备案的对应的通管局。而 ICP 备案本身是备案制度,因此,审批其实大部分情况下都是能够通过的,只是说需要一点时间,不同的省份在备案的审批上所需的时间也不同,根据《非经营性互联网信息服务备案管理办法》的要求,会在 20 个工作日内完成审核。不过某些特定的省份是比较快的(比如上海、浙江,据说是可以 1个工作日完成审批)。

当你完成审批后,就会获得一个备案号,将对应的备案号放置在你的网站底部,并加上前往通管局的链接即可。

拿到备案号之后的注意事项

新增备案网站

当你完成了第一个网站备案和建设后,你可能会需要进行第二个网站的备案和建设,这个时候,你需要注意:

  1. 你的第一个网站的用途应该符合备案时申报的类目(不然可能无法进行第二轮)
  2. 你应当按照规定放置了各项备案号等信息。
  3. 进行第二轮备案时,你的第一个网站应该是可以打开的。后续每新增一个网站,就会要求你之前的网站是可以正常打开的。

这就要求你如果某个域名不再使用,尽快将其关闭,并注销域名和相应的备案。

备案号、域名和接入服务商

当你拿到域名备案号之后,你就可以在你办理备案的接入服务商进行网站的建设和开发工作了。但需要注意的是,你仅能使用当前办理了接入服务商的服务,如果想要使用其他家的服务,则需要再次办理接入,新增一个接入,以使用对应服务商的产品。毕竟,备案的核心诉求是「双向绑定」,绑定用户和网站、网站和接入商。你虽然完成了备案,解决了用户和网站的绑定,但如果你没有完成网站和接入商的绑定(做接入备案),接入商同样会拒绝为你提供服务。

此外,需要注意的是,你的名下应当始终至少有一个网站,对于一个网站都没有的(比如你注销掉了所有的网站)人,在备案系统中被称为「空壳主体」,通管局会定期清理空壳主体,所以为了保住你的主体和备案号,尽量保证你的名下有网站。如果需要迁移服务商,也在完成了新的服务商接入之后,再注销之前服务商的接入。

独特的 CDN

在备案体系中,有一个很独特的产品 —— CDN 。和云主机不同,云主机会要求进行接入后才能使用,而 CDN 则没有相应的要求,你只要完成了备案,无需再进行接入即可使用 CDN 。

CDN 作为一个分布式的产品,因为没办法统一进行接入,故而只做了备案的限制,而不再要求你的域名必须在对应的服务商进行接入。

如果网站出现了问题,可能会怎么处理?

其实前面说了那么多,都是一些知识性的内容,接下来,我们来面对一个真实世界的问题 —— 如果某个网站出现了问题。可能会怎么处理

前面说过,备案本质上是为了能够在出现问题后快速找到你,解决网站中的问题。但真正在执行时,可能会有哪些操作?

  1. 如果有备案,直接联系备案时提供的联系电话(这也是为什么你备案的时候会有一个联系电话和一个备用联系电话),取得联系后,由网站负责人进行整改。
  2. 如果备案电话打不通,则可以联系服务接入商,通过接入商来暂停网站的接入服务,从而让网站无法访问。
  3. 如果服务商接入暂停后,依然可以访问(即你虽然备案了,但你的网站其实在其他服务器),那就通知你的 DNS 解析服务提供商停止解析。
  4. 如果你的 DNS 也是自己解析的,那就可以联系你的域名注册服务提供商,直接停止域名的服务状态。
  5. 如果你甚至域名注册服务商都是自己搞的,那可以联系域名管理机构,停掉你这个域名的使用。
  6. 当上述的所有办法都无法解决问题后,那就直接给你拉入黑名单,成为我们过去常说的被「墙」了的网站。

后记

这篇文章写完了,让我心头一松。我从 2012 年开始建立个人网站,2013 年、2014 年开始备案第一个域名,后续在 2016 年,在网易实习时以接入服务商视角看待了备案,再到在线,备案的政策不断的变化,我自己从某种意义上也经历了备案从松到严的一段历程(虽然没有经过最松的那段时间)。

备案机制从很多从业者的角度来看,觉得是繁文缛节,但换个角度来看,也是为我们的互联网提供了一定的基本保障制度。互联网上的信息良莠不齐,备案虽不能以黑名单的机制保证我们所看的信息“绝对干净“,但却也以白名单的方式给了一些建议。

不过,这篇文章也有遗憾,因为篇幅限制,我未能介绍关于公安备案相关的信息,这部分就留作后续再独立成文来介绍吧。

写在 26 岁(下)

happy birthday sign

在农历生日的时候,我为自己写下了「写在 26 岁」,而今天,是我的阳历 26 岁。

在上一篇文章当中,写的很丧气,我自己都很焦虑。在这一篇文章,希望能给自己打打气。

26岁在人生漫长的八十多年里,并不能算得上特殊。不过,自己选择的路线确实会让这一年显得特殊一些。新的一年,祝你能够心想事成。在做的事情能够有一个好的结果。

如果可以的话,今年做一个大胆的选择,去试一试过去可能没试过的东西,体验一个不一样的生活。

别浪费了自己的 26 岁。

理性感性与生活

silhouette of person's hands forming heart

最近观察到一个现象,我认为一个非常「理性」,拥有着「理工科思维」的前辈,他的配偶却显得「贪小利」、「情绪不稳定」,这似乎是很奇怪的事情。难道「理工科思维」、「沉稳」的前辈不应该是找一个很稳重的配偶么?

但随时时间的流逝,我又有了新的看法。

作为一个普通人,当我们掌握了「理工科思维」和使用理性指导生活的方式和方法后,我们的生活可以非常容易走上正轨。我们在做各种选择会比依靠「情绪」来指导我们的生活的人会更加稳健、更加轻松、更加富有确定性。

但理工科思维未免过于范式固定,在这种情况下,我们的生活可能是一成不变的,朝着一个确定的目标上走着,在一个明确的轨道上行驶。

一个不那么稳定的配偶,可以为他的生活中添加一些变量和变化,让生活变得不那么枯燥。从这个角度来说,也挺好的。

这篇文章也是在试图用理性的逻辑来分析一个现实生活中的问题。但可能我说的全都是错的。

找到对的问题

woman holding camera standing near people

最近在读《如何成为顶级记者》,总体来说,不同的记者有不同的切入视角,但如果要找一个能够综述所有人的关键点就是 —— 「离事情发生的地点足够近」。无论是通过自己的数据分析找到真正的事情发生点,还是和当事人建立更加友好、更加深入的联系,都是为了达成「离事情发生的地点足够近」这个诉求。

而当我总结到这里时,我突然在思考一个问题:我的问题真的是如何成为一个顶级记者么?

显然不是,我必然是会在编程和工程师的路上越走越远的,我的目的其实是:「如何录制好一档访谈类型的播客」,而这个问题如果细化的话,其实真正的问题应该是「如何提出一个正确的问题」

当我明确了正确的问题之后,那就知道正确的 Action 应该是什么 —— 「学习提出正确的问题」

回到这个事情本身,我其实在初期也进行了思考:从做一个好的访谈播客出发,推导出我需要具备优秀的访谈能力,而优秀的访谈能力往往出现在优秀的主持人和优秀的记者身上,因此我推导出了需要去学习顶级记者的思路。但是,问题的思考还不够深入,如果进一步推导和抽象,才能得到正确的答案 — 「提出一个正确的问题」。