关于我转职变成全栈这档事

本文根据演讲 PPT 口胡输出而成,如有雷同纯属巧合。

有很多前端工程师想要学习后端,甚至说是转而成为一个全栈工程师,在这次演讲前发放的问题调研中我也确实发现有好多同学想要学习后端,因此我们开始讲讲全栈这档事。

- 阅读剩余部分 -

在 HTTP 网站中开启 Notification API

Notification API 只能在 HTTPS 中使用:Using the Notifications API

This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

但是在开发某游戏网站脚本的时候,虽然它用的是 HTTP,但是仍然想用 Notificition 做一下提醒功能,当然,可以降级成过去 800 年的闪 Title 策略:

let shaking = false
setInterval(() => {
    if (shaking) document.title = `[Notification] ${word}!!`
    else document.title = word
    shaking = !shaking
}, 200)

但是实测效果还是不够显眼,最终在和群友的交流之后,发现了 <chrome://flags/> 。

Insecure origins treated as secure 中填写需要开启 Notification API 的域名,重启浏览器,就可以在 HTTP 中使用 Notification API 了。

如何从一个 Chrome 的 Bug 中找到解决方案

在前端开发,或者说 Web 开发中,我们会经常遇到,在某个浏览器遇到了问题,但是别的浏览器没有,过去,我们考虑的可能是 IE6 的兼容性,而在 Chrome 一骑绝尘的今天,Chrome 而其他浏览器没有的问题反而成为了更大的问题。

在此之前遇到过几个 Chrome Bug,我会以两个 Chrome Bug 为例说说实际是怎么解决的:

- 阅读剩余部分 -

给华硕 AC88U 路由器安排上 clash

下载版本

AC88U 需要的版本是 armv5 ,下载完成之后导入路由器,Country.mmdb 同理。

开机自启设置起来比较麻烦,我把下面的 iptables 放在了 firewall-start ,启动放在了 service-start里面。另外由于 daemonize 安装不了,所以直接 clash -d /jffs/clash > /dev/null 完事儿了。

- 阅读剩余部分 -

Typescript import 引用中的一个小坑

之前有一个奋斗了 N 小时才搞定的问题,在 Nestjs 的单元测试中反复测试会报类似于:

Starting Nest throws following error: Nest can't resolve dependencies of the EventResolver (EventService, ?). Please make sure that the argument at index [1] is available in the EventModule context.
Nest throws an error about a circular dependency that doesn't exist. Here is the error thrown:
Nest cannot create the module instance. Often, this is because of a circular dependency between modules. Use forwardRef() to avoid it. (Read more https://docs.nestjs.com/fundamentals/circular-dependency.) Scope [RootModule -> XXXModule]

- 阅读剩余部分 -

如何借助 5 道算法题入职 Leetcode

早早聊面试场逐字稿。

前言

开场先来标题党一下,和 Scott 聊天的时候正好说到我入职的经历,然后就有了这次分享,当时我随口报了一个,刷了 5 道题,不过后来我仔细的数了一下发现是 4 道题。

不过问题不大,这次半个小时的分享会从「招聘要求」、「怎么刷题」、「大小公司的区别」以及「*做业务和基础设施的区别」四个点进行分析。

- 阅读剩余部分 -

Apple In App Purchase(IAP) 实战

之前和 Flutter 开发的同学整了很久的 IAP,坑实在是太多了,所以需要一条条的来解释,如果有和我一样的倒霉鬼,希望通过这一篇集合的文章让大家在开发阶段更加顺利。

注:本文不会涉及 Native 的开发怎么写,因为我不会写 Native,也并不负责移动端的开发。

开发之前

在开发之前,App 的前情提要配置流程请见官方文档:App 内购买项目配置流程

在配置完成之后开发就可以开始了,但是在开发之前,你可能想要知道一些 IAP 的计费规则:

- 阅读剩余部分 -

使用配置进行你的开发

在开发中,我很经常的将很多功能设置成可配置的,这里不仅仅说的是应急的开关,而是包括了一些文本在内的信息。这篇文章也就是说说为什么我要这么做,以及这么做到底有什么好处。

从最简单的说起:配置开关

最简单,大家也最常用的是在后台配置一些开关,这些开关不用发布,只需要轻轻一点就能切换某些功能的状态,这也是大家通常会做的「基于配置」的开发的处理,毕竟发版的时间实在太漫长了,因此大部分后端都有有意识的将一些开关放在后台而不是开发写的配置文件中。

- 阅读剩余部分 -

GraphQL 从入门到入土

在入职之后用了很久的 GraphQL,之前总是得其形而不得其神,在这次 API 设计失误之后,我总算领悟到了一点 GraphQL 的设计思想,所以来随便的总结一下。

GraphQL 到底是什么

GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
——官方说明

- 阅读剩余部分 -