vue项目实现CDN动静分离及自动化部署
前世今生1410是刚毕业那会做一个毕业照展示网站项目。 早期使用的是Vue.js作为前端项目,Java作为后端项目。 中间将Python写的服务端替换了Java后端。 最后将Golang写的服务端替换了Python后端。 近期又做了一些前端方面的改造: 使用authelia作为Nginx层的SSO网关,设置为登录可访问(不能实现全站CDN的原因是需要NGINX层) 照片使用腾讯云CDN访问,并且为加快访问速度还使用了腾讯云的万象图片处理 抛弃后端接口,直接使用json存储照片列表 实现前端项目动静分离,引入CDN加快访问速度 使用coding的持续集成实现自动化部署 以后再也不用操心改完代码还要做一堆的操作让代码上线了,网站访问速度和安全性都得到了提升。 升级打怪过程这篇文章就主要介绍一下将vue项目build后实现动静分离和自动化部署过程,以及遇到的一些坑点。以下是1410前端项目的项目结构: 1234567891011121314151617|-- public //存放不可变静态资源 |-- index.html |-- favicon.ico |-- dat...
minio改造支持tencent-cos
背景最近在调研一款能管理我的tencent-cos的在线管理端软件,然后调研了很多软件,之前试用过nextcloud发现一般,然后看中了minio,看评测说性能比较好,并且支持S3协议。 在实际使用过程中是使用的docker部署,具体命令如下,对应文档可以点击minio-gateway: 1234docker run -p 9000:9000 --name minio-s3 \ -e "MINIO_ACCESS_KEY=access_key" \ -e "MINIO_SECRET_KEY=secret_key" \ minio/minio gateway s3 https://cos.ap-beijing.myqcloud.com 然而在我将信息填入以后,发现始终无法创建,提示:ERROR Unable to initialize gateway backend: Could not parse the specified URI.然而通过中心搜索并不能寻找到结果,然后使用全英文搜索就找到问题所在了,原因是:tencent-cos的b...
程序员抢火车票攻略-用技术创造美好生活
背景 春运已至,又到了回家团圆的时候了,现在春运抢票越来越难,原因是很多人开始使用技术来抢票,在高配置高带宽的服务器上抢票几率要稍微高一点,希望我这篇文章能帮助正在阅读的你抢到回家的火车票。 2021年始开始从win转向了macos,再也没有win机器了,然而抢票软件是12306分流,目前还只能在win服务器上运行,所以就想起了云服务器,我自己也有好几个服务器,但是都是centos服务器,上面有服务器在运行,然后我就想起了阿里云的抢占式实例服务器。 说干就干,用抢占式实例服务器(2H4G5M费用大概5毛钱一小时)成功抢到了回家的高铁票,所以将教程分享出来。 上阿里云(腾讯云)注册账号、实名认证直接上阿里云 官网进行注册和实名认证即可。 由于按量付费服务器或者抢占式实例服务器是后付费账单,这时候需要提前充值好金额(建议100及以上),用完服务器费用支付完成后可以直接将剩余的费用提现出来。 抢占式实例购买步骤阿里云购买服务器大致上分为五个步骤:基础配置->网络和安全组配置->系统配置(选填)->分组配置(选填)->确认订单,还可以在确认订单步骤将该次的配...
mysql的table复制
起因 前段时间在鼓捣数据表的数据上线,主要流程是将线下的数据同步到线上去,线上的部分需要需要和线下保持一致,并且每一次操作都需要自动化将表进行备份, 这个过程主要是靠自己进行代码同步,因为规则比较自定义,所以没有使用一些现有的数据同步。 主要流程如下: 123456789- #备份NX的SCHEMA中的表并查询特定数据进行备用NX-SCHEMA: 备份NX-TABLE ==> NX-TABLE_COPY ==> SELECT * FROM NX-TABLE_COPY WHERE ID =xx- #备份JAPAB的SCHEMA中的表并且将上一步的数据写入到备份表中JAPAN-SCHEMA: BEFEN JAPAN-TABLE ==> JAPAN-TABLE_COPY ==> INSERT INTO JAPAN-TABLE_COPY VALUE (xxx)- #将JAPAN的SCHEMA中的原表和备份表进行重命名,将备份表的表名变成源表名,完成数据上线JAPAN-SCHEMA: JAPAN-TABLE ==> RENAME JAPAN-TABL XXX...
使用 Pulsar IO 打造流数据管道
本文翻译自 StreamNative 博客。博客原作者:Ioannis Polyzos,StreamNative 解决方案工程师。原文链接:https://streamnative.io/blog/engineering/2021-11-10-streaming-data-pipelines-with-pulsar-io/ 翻译背景今年以来就加入到了Pulsar的开源志愿者中,主要翻译一些英文文档以及做对Pulsar的深入研究。这是我翻译的一篇完整的外文博客,以此作为一个记录,相关文章已发布在StreamNative的公众号中。详情点击 背景构建现代数据基础设施一直是当今企业的难题。当今的企业需要管理全天候生成和交付的大量异构数据。然而,由于企业对数据的数量和速度等等有多种要求,没有“一刀切”的解决方案。相反,企业需在不同系统之间移动数据,以便存储、处理和提供数据。 粗看搭建基础设施的历史,企业使用了许多不同的工具来尝试移动数据,例如用于流式工作负载的 Apache Kafka 和用于消息工作负载的 RabbitMQ。现在,Apache Pulsar 的诞生为企业简化了这...
苹果M1芯片的MBP安装WIN10
前言朋友买了一台M1的MBP,但是又需要安装财务软件(财务软件需要安装在windows系统上),M1目前还不支持原生安装WIN10,所以采用虚拟安装的方法来安装对应的WIN10。 安装步骤一开始不知道这里面有坑,直接在https://next.itellyou.cn/ 网站上下载了普通的WIN10企业版,结果自然不可用。 然后发现镜像列表中是有ARM的镜像可下,然而经过漫长的文件下载过程后,发现镜像仍不可用。 这时候就各种查文档,然后查到了网上说去微软官网下载官方ARM的官方预览版,我兴致冲冲的找到了对应的版本,然后不给下,需要注册成为预览版的体验用户,但是并没有告诉我成为预览版体验用户的入口。。。 但是这时候我并没有放弃,找了一大堆文档,终于找到了下载镜像的方法。 如果需要在M1芯片的Mac电脑上安装基于ARM64内部预览版的Windows 10虚拟机,需要ARM64安装源 (VHDX)。下面是详细步骤: 点击访问微软 Windows内部预览下载网页. 如果自己已经是内部体验用户,请使用页面右上角的 “登录” 选项进行登录。 如果不是内部体验用户,请点击 链接点...
clickhouse和mysql的不同用法之陷入误区
前言我们的数据计算是基于clickhouse的,由于接触clickhouse不久,看官网介绍语法和mysql是类似的,就放心大胆的使用mysql的大量语法,然后遇到了一个很奇怪的问题,也是这个奇怪的问题让我对列式数据库有了更深入的了解。 遇到的问题先了解一下clickhouse对列式数据库的图表述: 再了解一下mysql的行式数据库的图表述: 然后下面这样一段sql: 123456select a,0 as b,0 as cfrom tbl_xxxwhere del = 1 and (1>1 or b in (1,2,3) or c in (4,5,6))group by a,b,corder by a desc 这样一段很简单的sql,在clickhouse中却无论如何都查询不出结果,明明在where条件在数据库中满足条件的数据量非常的多,却出现这样奇怪的现象。 排查问题 排查到的问题1:以为是 1>1这个语句导致了数据库无法查询出数据,所以将1>1 改成了 2>1,然而能查询出数据了,但是查询出的是全量的数据,所以经过验证后发现该问题无解 排查到的...
go-web容器化中遇到的两个问题
前言今年开始接触并且实践到Golang,近期自己写了一个相册的服务,是基于前后端分离的模式,由Go提供rest给web页面使用。在项目前期是直接使用的打包完成的二进制文件执行,在管理方面存在一些不方便的地方,所以周末抽时间将其容器化,实现自动化的部署方案,主要就是采用coding的devops流程,容器化使用的还是docker容器,使用的是alpine的镜像,在这个过程中遇到一些问题,下面会详细讲出,以此记录。 docker容器化过程将服务自动化发布流程还是比较简单的,分为以下几步:1、github上创建对应的代码仓库,作为源代码的提交2、在coding上新建一个项目,与github的代码库绑定(github同时也提供github action,也是非常好用的,但是我的服务器主机都在国内,所以涉及到一个跨境网络同步延时很高的问题)3、在创建的项目中有个持续集成-构建计划,此时就是自己编写对应的jenkins文件,当代码有更新时,会自动hook到流程中,执行对应的build/deploy过程4、完成deploy过程后,检查对应容器的服务状态以及接口状态是否ok,整个自...
standard-notes之集成自己的插件库
前言上一篇文章写了怎么部署standard notes的自建笔记本,在使用过程中发现还需要很多的插件来配合更好的使用standard notes,来做数据备份以及更好的编辑文档。standard notes的插件是可插拔的,简而言之就是将静态页面加载到页面中,来使用其中的功能,达到增强的目的。 关于standard notes 作为开源软件和服务提供商,它本身的写笔记和同步笔记是不收费的,提供了mac/win的客户端和web端应用,所以多端同步是它最大的优势之一,但它对于插件是使用的收费订阅的模式,每个月基本在3美金以内,但是我都自建服务了,为啥还需要去用它本身的服务了,所以参考了一些文档,调查了一些插件的接入步骤,陆续接入了很多插件。 接入插件步骤查看对应的插件接入文档作为开发人员,一般了解到一个不太熟悉的内容,或者需要接入某些组件,第一件事就是查看对应的文档,自己了解到一些细节点,文档地址:https://docs.standardnotes.org/extensions/intro/ 查看github上大牛帮你收集好的插件集合github上有很多各种领域的大牛...
好用的日常笔记本standard notes
前言很久很久之前就一直在找一些好用的并且开源的note app,尝试过trilium、蚂蚁笔记、notion、语雀 都没有找到我心仪的那一款,要么是数据是存储在境外,一旦国家的墙更厚了,就尬了,另外一些就是数据很分散,备份出来的数据无法很顺利的导入到其他的app中。直到有一天我发现了Standard notes。 关于Standard notesStandard notes是一款免费、开源且完全加密的笔记应用程序。 简单介绍一些它的优点: 开源 代码开源,可以自己创建对应的服务,将数据存储在自己的自建数据库中,这也是我最看重的一点 免费 知识付费时代,有一些免费的可维护的项目也是很难得,该产品也是通过开源的形式,然后使用官方的服务队插件进行收费 完全加密 按照文档的说法是完全的端到端加密,数据在浏览器进行接口传输之前就已经进行了加密,避免网络传输过程中被拦截后数据泄露的场景 部署Standard notesStandard notes大部分语言是使用node写的,按照微服务的方式进行拆分,分为几大块: 服务层: 同步服务器 业务逻辑的核心,负责对用户数据的所有操作。 同步...