轶哥

妄图改变世界的全栈程序员。

Vue3.0 + Vite 绝佳的开发体验

Vite是一个尤大开发的革命性的Web构建工具。

Vite是基于浏览器原生ES Module imports的构建工具。很多场景下,Vite可以代替webpack,开发调试的速度有了非常大的提升。Vite支持对单个文件的热更新,调试一行代码等很久的情况或将成为历史。

vite是法语中“ fast”的意思,其发音是/vit/

MacOS 同时使用内网和外网(双网卡同时联网)

MacOS使用双网卡连接不同网络时,通常是不能同时使用内网外网系统的。这是由于计算机不知道那些网段一定属于内网导致。

温馨提示:单台计算机同时接入内网外网在大部分单位都属于违规操作,非得到授权人员,切勿以身试法。

双网卡不需要都是有线或者都是无线,外网用WIFI,内网用有线,也属于使用双网卡。

通过.env文件设置环境变量

通常情况下,.env文件以key/value的键值对的方式存储环境变量。例如:

HOST=0.0.0.0
PORT=80

在前端框架VueReact中均有针对环境变量文件的使用描述。

Node.js或者其它后端项目中,常常会碰到加载环境变量到当前Session的需求。

MacOS Chrome信任自签名证书

升级MacOS到10.15.x以后,以往的Chrome信任自签名证书操作无效,信任后依然无法访问(“高级”选项里面没有继续访问的选项🤦)。网上找到的方法几乎都用不了😂。特地记录一下✅姿势。

报错信息: 您的连接不是私密连接,攻击者可能会试图从 raspbian 窃取您的信息(例如:密码、通讯内容或信用卡信息)。NET::ERR_CERT_INVALID。

特别提示: 本文仅限专业用户参考。如果该证书不是您生成,或者您不知道自己在做什么,请勿尝试此文提示的操作,以免使您遭致损失。

PHP 7.3正式版+常见拓展的Docker镜像

2018年12月6日PHP官方发布了PHP 7.3.0 正式版。恰逢最近在写一个PHP在线练习的网站,特意去翻了一下7.3.0正式版的Docker镜像。

因为官方镜像只包含了最基本的模块,像pdo_mysqlredis之类的模块并没有包含进去。在hub.docker.com中找到一个相对比较合适的 PHP 7.2 版本的Dockerfilehttps://hub.docker.com/r/phpdocker/phpdocker/),却发现作者将MariaDBRedis ServerNode.js等内容给编进了Image。

我比较喜欢干净的Docker Image,一个镜像只做一个事情。像MySQLRedis之类的数据库,可以单独启动相应的模块。

因此我在前人的基础上,移除了MariaDBRedis ServerNode.js并升级PHP版本到7.3.0正式版。

配置自动续期的免费通配符SSL证书

公益SSL证书机构Let’s Encrypt从2018-03-13起开始支持通配符证书。通配符证书必须通过DDNS添加TXT记录验证域名所属权。

  1.  certbot官网安装certbot。

  2. 安装DNS插件

    cerbot支持很多DNS插件,例如:

     certbot-dns-cloudflare
     certbot-dns-cloudxns
     certbot-dns-digitalocean
     ...

    这里以DNSPOD(腾讯云域名默认DNS)为例:

     git clone https://github.com/tengattack/certbot-dns-dnspod
     cd certbot-dns-dnspod
     sudo python setup.py install
Nginx 解决API跨域问题

利用Nginx可以最简单且高效解决跨域问题。

跨域是前后端分离开发中非常常见的问题。这个问题网上已经有非常多的答案,但大部分是编程框架里面添加CORS头。但无论用什么Web框架,现已很难离开Nginx。因此直接在Nginx中处理跨域问题有得天独厚的优势,可以将OPTIONS请求拦截在API服务之前,节约服务器开销。

简单说,跨域分为简单跨域复杂跨域

简单跨域不会发送OPTIONS请求。

复杂跨域会发送一个预检查OPTIONS请求。

复杂跨域的条件是:

  1. 非GET、HEAD、POST请求。
  2. POST请求的Content-Type不是application/x-www-form-urlencoded, multipart/form-data, 或text/plain
  3. 添加了自定义header,例如Token

跨域请求浏览器会在Headers中添加Origin,通常情况下不允许用户修改其值。

  上一页下一页