blog-frontend
blog-frontend copied to clipboard
Vue3+Vite+ElementPlus实现的个人博客,包含GitlabCI、Docker、Nginx、docker-compose相关配置
## 1. 出处 [element-ui src/utils/resize-event.js](https://github.com/ElemeFE/element/blob/dev/src/utils/resize-event.js) ### 1.1 完整代码 ```` import ResizeObserver from 'resize-observer-polyfill'; const isServer = typeof window === 'undefined'; /* istanbul ignore next */ const resizeHandler = function(entries) {...
## ¿ **美丽的API都是带刺的玫瑰** ## 1. toLocaleString相关背景 [掘金 - 想偷懒的话,toLocaleString 了解一下?](https://juejin.im/post/5ac472016fb9a028c22afa9d) [MDN - Date.prototype.toLocaleString() ](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString) [MDN - Number.prototype.toLocaleString() ](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString) 其实就是在说: **这个API可以省很多事儿, 方便的对时间/数字按照一定格式进行转换, 不用你写正则, 不用你拖库** ### 1.1 常用时间转换 以常用时间格式: `YYYY-MM-DD HH:mm:ss`为例, 通常用库`day.js`或者`moment.js`来完成...
## ? 面试被问到了这个问题, 恰好最近把[个人博客](https://blog.calabash.top)的SEO问题解决了, 想来解决方案还算比较合理, 做个分享. ## 1. 单页应用常用SEO方案 ### 1.1 服务端渲染重构 例如[Nuxt](https://zh.nuxtjs.org/), [Next](https://nextjs.org/). 好处: + 可以说是一劳永逸 坏处: + **灵活性不足**: 这类框架要改的话就要全部按照他的做法来改, 即便不需要SEO的页面, 也需要全部迁移过去 + **时间成本巨大**: 新框架熟悉, 不断采坑会浪费太多时间 + **打包部署方案也得变** +...
## ¿ 本文包括如下内容: + `WebSocket`协议第四章 - 连接握手 + `WebSocket`协议第五章 - 数据帧 + `nodejs ws`库源码分析 - 连接握手过程 + `nodejs ws`库源码分析 - 数据帧解析过程 参考 [WebSocket 协议深入探究](https://user-gold-cdn.xitu.io/2019/5/25/16aec9704c8bc80f) [ws - github](https://github.com/websockets/ws) 本文对`WebSocket`的概念、定义、解释和用途等基础知识不会涉及, 稍微偏干一点, **篇幅较长,...
## 使用Server Send Events制作一个代码在线运行工具 ## ¿ 最近尝试制作了一个能够在线运行代码的工具: [Code-Runner](http://sandbox.calabash.top/), 踩坑不少, 做一个总结  涉及到的技术/模块如下: + 服务端推送技术`Server Sent Events`, 下文简称`SSE` + `Node.js`模块: + `child_process`模块 + `stream`模块 + `Docker`几条简单的命令 + `docker run` + `docker...
## ? 突然想搭一个自己爽一下, 虽然也不会用, 但是就很爽 参考 [通过 docker 搭建自用的 gitlab 服务](https://juejin.im/post/5a4c9ff36fb9a04507700fcc) [GitLab服务器经常502(阿里云搭建)](https://blog.csdn.net/qq_25283709/article/details/78207881) ## 1. 启用swap分区解决内存不足的问题 阿里云服务器一核二G, 说实话顶不住哦, 于是需要swap分区, 过程如下: + 查看当前系统中是否已经启用swap分区 ```` cat /proc/swaps ```` + 如果没有, 新建一个专门的文件用于swap分区 ```` #...
## ? 初步理解, 记录一把 [聊聊 Node.js RPC(一)— 协议](https://www.yuque.com/egg/nodejs/dklip5) ## 1. 什么是RPC? > RPC (Remote Procedure Call) 远程过程调用 + 过程: **泛指函数或方法** + 远程: **代表方法不在当前进程里** > RPC是一种进程间通信方式, 它允许程序调用另一个进程上 (通常是共享网络的另一台机器上) 的过程或函数, 而**不用程序员显示编码这个远程调用的细节**, 即**无论调用本地的还是远程的函数,...
## 参考 这两篇文章, 无敌的 [HTTP Headers and Classic Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html) [获取用户IP的正确姿势](http://xxlegend.com/2016/11/01/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7IP%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF/) 补上一篇以前并没有真的看懂的 [科普文:Node.js 安全攻防 - 如何伪造和获取用户真实 IP ?](https://zhuanlan.zhihu.com/p/62265144) ## X-Forwarded-For 和 REMOTE_ADDR 和 X-Real-IP + `REMOTE_ADDR`: **代表客户端的IP, 这个值是不可伪造的, 如果没有代理的话, 这个值就是用户实际的IP值,...
## 1. 起因 分析`http.Client`源码实现的起因, 是因为在使用如下步骤模拟网站登录时, 出现了问题, 参考[知乎 - go net/http.Client 处理redirect](https://zhuanlan.zhihu.com/p/23811184): 1. `POST`账号密码等参数进行登录 2. 下发`token`, 此`token`通过`cookie`下发 3. 重定向到主页`/` 在通过`http.Post`进行请求, 预期不进行重定向, 能够直接获取到`cookie`值, 但实际上go帮我们处理了重定向, 丢失了`cookie`值 分析源码后, 可以很轻易地解决这个问题: ```` // 请求http.calabash.top将被301重定向到https myClient :=...
## ? 本文将从如下几部分分析`net/http`模块中关于`server`部分的源码: + `Handler`类型和`HandlerFunc`类型是什么? + `ServeMux`对`HTTP handler`的注册管理和分发 + `Server`启动流程 ## 1. Handler  ### 1.1 从注册HTTP handler入手 原生注册`HTTP handler`有如下两种写法,它们有什么区别呢? ````go func handler(w http.ResponseWriter, r *http.Request) {} http.HandleFunc("/some-pattern", handler) http.Handle("/some-pattern",...