2020年2月24日
来自知乎的问题,原地址https://www.zhihu.com/question/270040312/answer/1034679430。
先说结论:微信是一个移动端通讯工具,再通俗一点,它就是一个手机软件。至于电脑版什么的,就是随手一做,如果威胁到手机版的地位,关掉都不会有人心疼的。
知乎确实迎来新一辈的朋友了,似乎已经没有多少人知道微信诞生的背景,也没有人在乎背后的逻辑了。微信在知乎上的口碑也从一开始的神作,变成了最被唾弃的软件。
先问几个问题:
2019年11月29日
2019年11月10日
Sequelize.js是一个用于Node.js的数据库ORM库,支持Postgres、MySQL/MariaDB、SQLite、SQL Server等引擎。
本文记录一些团队在使用Sequelize过程中积累的经验教训。
ORM即Object Relational Mapping,中文叫“对象关系映射”。简单地说就是可以将数据库的各种对象(表、字段)及关系映射为程序语言的对象和关系,从而使开发者不需要直接操作数据库,转而操作对象即可。
例如,将表user
映射为模型User
后,从数据库中查询id
为1
的用户就可以直接调用findOne()
方法:
const user = await User.findOne({
where: {
id: 1
}
});
const user = await User.findOne({
where: {
id: 1
}
});
这样做会带来几个明显的好处:
下文不区分“模型”和“Model”,均指Sequelize中与数据表对应的数据模型。
2019年3月28日
本文来自知乎问题为什么会允许babel这种解析工具的存在?
希望提问者真的没有在调侃……因为在我看来,这有点像“何不食肉糜”的提问了。
ES6又名ES2015,也就是在2015年定稿的,在定稿之前其实大家已经讨论了很久了。但是光讨论有什么用呢?没有任何一个环境是支持ES6运行的。所以就讨论讨论再讨论,然后大家一拍桌子,好,定稿?
事实上在ES2015之前,ES5可能就是这么定下来的,ES4可能也是这么废弃的。
这时候,就有个神奇的东西,叫6to5出现了,它的第一次提交出现在2012年9月。Initial import · babel/babel@aedcd4e 它的作用就是把ES6的代码编译成ES5的代码,它的神奇之处就在于,虽然一个能支持ES6的环境都没有,但是我们仍然可以使用ES6来编写代码。这是一种前所未有的模式,甚至在其它语言中都没有出现过这种模式。(希望不是孤陋寡闻,至少py3 -> py2是没有见到类似工具的。)
于是,我们可以在规范还没有定稿的时候就先用用看,用着觉得不爽了再回去修改规范。这样是不是比拍桌子要科学得多?事实上现在的ES规范制定过程就是这么干的,定了stage 0到stage 4等几个级别,而且规定了需要在多少个环境中先验证,验证完之后才可以定稿发布。基本上可以毫不客气地说,这个东东就是由6to5开创的新局面。
2019年2月3日
时间像一位长者,慢慢把生活的真相一层一层剥开给你看。
2018年像一溜烟,还没来昨及看清,就已然消失不见,留下我一个人,站在这里不断回想,它究竟是个什么样子。
“人在沮丧的时候特别喜欢思考人生。”这是我在4月份说的,大概也是在沮丧的情绪中不断反思而得出的结论。这种沮丧大部分要来自泥沙俱下的股市。“牛市的时候人人都觉得自己是股神”,这些话,也只有到山穷水尽的时候才能真正明白。好在,除此之外,倒也并没有什么真的大风大浪,一边跟着时间走,一边安慰自己,竟也就这样过来了。
2018年7月29日
本文来自知乎问题如何看待“代码没有写到10万行不要碰设计”这样的观点?
有些答主可能误解了题主说的“设计”的意思。这里不是指代码设计或者工程设计,指的是交互和视觉设计。
比较硬的关系是,你会接设计同学出的设计稿,如果一点不了解设计领域的知识,拿到稿件会手足无措。适当地了解设计理论、方法、软件使用以及设计稿的常用处理(蒙版、切图、切片、变换、拼接等),是前端必备的工作知识。
比较软的关系是,前端是离用户最近的工程师,需要对用户体验负责。很多时候设计稿输出来的是静态的,但是用户交互的是一个动态的页面,如何把这些交互做好,设计和前端基本上各有一半的能力和责任。
2018年7月26日
对的,最近写文章都会交代一下背景。因为按标题的套路,这本应该是一篇教程类的文章,但这种文章其实挺无趣的。之所以想写这篇,是因为确实碰到了一些很麻烦的事情。闲言少叙,我们进入正题。
最近我们前端代码打包正在接入Gitlab CI,使用Docker来作为Executor,也就是在Docker中进行前端代码打包,然后收集打包结果,以备发布时使用。打包时Docker镜像很自然地就选择了官方Node镜像,最新版本(Node 10)。
一开始我们尝试性地接入了几个项目,有使用NPM scripts进行打包的,也有使用Gulp进行打包的,一切都很正常。但是昨天在接入一个新项目,使用Gulp打包的时候,却突然碰到了报错:
$ gulp gitlab-ci
gulp[85]: ../src/node_contextify.cc:631:static void node::contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&): Assertion `args[1]->IsString()' failed.
Aborted
ERROR: Job failed: exit code 134
$ gulp gitlab-ci
gulp[85]: ../src/node_contextify.cc:631:static void node::contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&): Assertion `args[1]->IsString()' failed.
Aborted
ERROR: Job failed: exit code 134
看了一眼这个错误信息,一下子就发现,这并不是来自JS层的错误,而是来自Node原生层,这就超出了我的理解范围了。
2018年7月24日
2018年5月28日
2018年5月16日
2018年5月15日
2018年3月5日