前端开发,音游狗

Summary of decorators in TypeScript

declare classDecorator = (ClassConstructor) => DecoratedClassConstructor | undefined declare memberPropertyDecorator = (prototype, name, descriptor?) => decoratedDescriptor | undefined declare memberAccessorDecorator = (prototype, name, descriptor) => decoratedDescriptor | undefined declare memberMethodDecorator = (prototype, name, descriptor) => decoratedDescriptor | undefined declare memberMethodParameterDecorator = (prototype, name, index) => void declare staticPropertyDecorator = (ClassConstructor, name, descriptor?) => decoratedDescriptor

明确一下 XMLHttpRequest#withCredentials 的作用

先重复一下两个启用 withCredentials 之后 CORS 响应的要点: 响应头 Access-Control-Allow-Origin 不能为 *,必须明确指定为包含 Origin 的值。 响应头 Access-Control-Allow-Credentials 必须为 true 再重复一个 cookie origin 的问题: 请求发到哪个 origin,带的就是哪个 origin 的 cookie。不可能出现 a.com 携带 a.com 的 cookie 向 b.com 发 ajax 请求 的情况发生。 几个 case withCredentials 请求的响应操作

从 Nginx​ 启动时自动解析域名讲起

目前赛亚测试服务器的现状就是一台服务器上跑的服务非常多,我们把所有服务都 Dockerize 化之后通过统一的一个 Nginx 反向代理容器对外开放,其中下层的容器名作为反向代理的域名。 server { listen 80; server_name project.domain; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://container:80; proxy_redirect off;

使用 CI 构建 React Native 项目

网上已经有很多教程了,我这边也整理一份我跑通的流程。 iOS 构建部分 首先参照 官方文档 调整代码 其中文档中需要在 Xcode 下构建的部分,使用命令行来操作就是: xcodebuild archive -project ios/$PROJECT.xcodeproj -scheme $PROJECT -archivePath ios/build/$PROJECT.xcarchive xcodebuild -exportArchive -archivePath ios/build/$PROJECT.xcarchive -exportPath ios/build/ -exportOptionsPlist ios/ExportOptions.plist -allowProvisioningUpdates 要点: 绝大多数构建参数都可以用 Xcode 打开项目调整。 ExportOptions.

docker

把 Ghost Blog 迁移到 Docker 驱动

好久没写 Blog 了,净搬家玩儿了。前一段时间,Linode 降价,就把 Blog 从 Vultr Tokyo 区搬到了 Linode Tokyo 2 区,速度并没有太大提升。这两天发现我的信用卡突然可以在 GCP 上注册了,果断试用了个一年份的 GCP 台北彰化机房的 VPS。从家里访问延迟从 200 降到了 90,traceroute 发现也不用过美国转一圈了,效果还是不错的。 新主机打算把包括前置的 nginx 等等全部服务都跑到 Docker 里面,在 Docker 环境里面把请求反代到各个业务服务,主机自己除了 Docker 服务就不跑其它的服务了。在

JavaScript

理解 Promise (WIP)

一直想写篇文章帮助初学者理解 Promise。Promise 这个东西总是被人和异步回调这些东西联系在一起理解,而异步回调这些东西本身就已经很难理解了,再在上面叠上一个 Promise 理解起来更是难上加难。所以我考虑用另一种形式形式来表达 Promise 的特点,希望能对理解 Promise 有所帮助。 下面开始: 一、用 Promise 处理值 假如我们现在有一个数字: 4 假如我们又有一个操作叫 加五: function add_five(n) { return n + 5 } 假如我们还有一个操作叫 开平方: function square_root(n) { return Math.sqrt(n) } 最后我们也有一个操作叫输出: function print(n)