Axetroy

Results 127 issues of Axetroy

2022 年上半年,开始学习和使用 Rust 来写一些东西。 包括 - [gpm.rs](https://github.com/axetroy/gpm.rs) - [cask.rs](https://github.com/cask-pkg/cask.rs) - [prune.rs](https://github.com/axetroy/pruners) 未来如果没有其他特殊的需求的话,其他的工具也会使用 Rust 来完成 ### 未来可能用 Rust 完成的重写计划 1. [dvm](https://github.com/axetroy/dvm) - Deno 的版本管理器 > 重写理由: 主要是之前用 Golang 来写的有点乱,无论是组织代码,还是写的逻辑,而且不够严谨 1. kp...

分享

> 最近在研究 AST, 之前有一篇文章 [面试官: 你了解过 Babel 吗?写过 Babel 插件吗? 答: 没有。卒](http://axetroy.xyz/#/post/170) > 为什么要去了解它? 因为懂得 AST 真的可以为所欲为 简单点说,使用 Javascript 运行Javascript代码。 这篇文章来告诉你,如何写一个最简单的解析器。 ## 前言(如果你很清楚如何执行自定义 js 代码,请跳过) 在大家的认知中,有几种执行自定义脚本的方法?我们来列举一下: ### Web #### 创建...

技术

新的一年,新的气象,好久没有更新过博客了。 在这里祝大家新年快乐,大吉大利。 ### 如何反向代理一个站点? 代理,大家都不陌生,大体上分为正向代理和反向代理。常见的有 - 正向代理: (HTTP/Socket5/v2ray/shadowSocket) - 反向代理: (Nginx/Apache) 本文就讲解,如何制作一个反向代理工具,并且代理任意站点。 市面上已经有那么多代理工具,为什么还要折腾一个? ### 起因 在开发时,我们可能会有这样的一些需求: 1. 如何调试/在线修改站点?(非 SPA) 像 Chrome 浏览器的开发者工具里面就有 override 功能,可以修改服务器返回的资源(HTML/CSS/JS),并映射到本地目录。 但它有一个缺陷:如果修改的站点带有端口,就无法映射到本地,因为 `:` 是一个非法字符,无法在文件系统中创建,或者你可以试试创建一个目录 `localhost:8080` ref: https://stackoverflow.com/questions/70337046/chrome-local-overrides-with-port-number...

技术
分享

不要陷入技术魔咒 > 如果你是业内有名的技术大牛,那么可以略过这篇文章 我呢,是很喜欢技术研究,喜欢开源,喜欢写库,写工具。 以前呢,觉得这些东西很炫,做出来很有成就感 但是最近发生了很多事 给了我很多感悟,有感而发,写出来分享一下。 ### 技术饭长久不长久? 如果你不是 BAT 内 P7+/T3+ 这个阶梯的技术大神,那么其他都不是关键。 之前不是还有华为 42 岁程序员被裁,顶不住生活压力跳楼了吗。 凡事没有做到行业顶尖的技术,都是不长久的。 你现在厉害,可以加班,每天可以学习为自己充电,跟上时代的步伐。 5 年后呢?10 年后呢?你年薪高了,企业成本高了,家庭有了,琐事多了,每天没有那么多时间为自己充电了。 资本是无情的,年龄的增加,你的不可替代性就越低,越是竞争不过年轻人。 最后也逃不过被裁的命运。 ### 那就不打造自己的技术了吗 也不是,但是也有方向,不在对一些`应用场景少`、`难以产生效益`、`无法应用到实际项目`、`瞎折腾`的技术进行钻研。 比如有这么一个库,实现了某个功能。 你知道这个库的实现有点毛病,效率不够高,除非有必要,否则没有必要重写一个。 应该写一些业务型的库,而不是写一些极致的库...

感想

> 前面刚刚说不要瞎折腾这种东西了 > 结果身体却很诚实,又写了一个 vscode 扩展. 在 vscode 中查看热映电影、即将上映的电影和评分前 250 名的电影. 在写代码之余,不妨关注下影讯,放松自己。 我们应该把更多的娱乐(上班滑水)元素带入 `vscode`。不要为资本家 996 了进 ICU。 截图 ![Screenshot](https://github.com/axetroy/vscode-movie/raw/master/screenshot-1.png) ![Screenshot](https://github.com/axetroy/vscode-movie/raw/master/screenshot-2.png) Github: [https://github.com/axetroy/vscode-movie](https://github.com/axetroy/vscode-movie) 安装: [axetroy.vscode-movie](https://marketplace.visualstudio.com/items?itemName=axetroy.vscode-movie)

分享

大多数时候, 写的一个小小的库,还得要专门写变更日志。 而遵循一定的 commit 格式,是可以生成标准的变更日志的。 这时候就需要像[conventional-changelog](https://github.com/conventional-changelog/conventional-changelog) 这我就不得不在我的项目中添加脚本 ```bash npx conventional-changelog-cli -p angular -i CHANGELOG.md -s -r 0 ``` 今天呢,就把它提取出来,独立成为一个 vscode 扩展 让你方便的生成 CHANGELOG ### 支持哪些特性 - 从头开始生成更改日志。 - 从最近 1...

分享

#### 前言: > 没有什么是非得用 xx 技术才行的,只是 **能用** 和 **好用** 的区别 > 有些习惯了老旧的工作方式,不愿去学习,不愿意去改变,追求 “能用就行” > 有些不单追求能用,还有提升的空间,追去好用 > It's up to you! ### 为什么需要 Docker? 在上一家公司,操作系统是自由的,你想用 Windows/Linux/Mac, 只要你用的习惯,能够高效率工作,无所谓什么系统。 然而问题就来了,大家的环境不一样。Unix 系系统基本无太大差别,Windows 就不一样了。 环境的差异会导致踩很多很多坑,...

技术

也就前两天,面试大厂,其中有那么一个问题: 1. 你了解过Babel吗? > 了解过抽象语法树,又称AST,有学习过,也写过一个基于AST的[乞丐版模板引擎](https://github.com/axetroy/pag),先是词法解析token,然后生产抽象语法树,然后更改抽象语法树,当然这是插件做的事情,最后根据新的AST生成代码。 2. 写过Babel插件吗 > 没有,只是看过相关文档 3. 如果让你写一个插件,你能写的出来吗? > 应该可以吧... 遂卒.... 开玩笑的,既然提到了,又没回答上来什么,哎哟我这暴脾气,一想到今晚就睡不着,连夜把它撸了。 那么我们来从零写个插件吧。 写一个预计算简单表达式的插件 ### 预览 Before: ```javascript const result = 1 + 2 + 3 +...

技术

写了一个仓库[https://github.com/axetroy/secret](https://github.com/axetroy/secret) 主要是用于存储一些秘密的数据。数据以及源码都是加密过后的。后缀为``.encrypt`` 只留下一个入口文件,动态加载已经打包好的js文件,以及数据(比如json)。 然后坑爹的发现,Github Pages返回的数据并没有经过压缩。要下载的包很大。 查了一下资料,Github Pages使用的服务器是nginx,默认对json,html,css,js等进行压缩。 并没有对``.encrypt``后缀压缩。 于是想了一个取巧的办法,把加密文件的后缀改成``.html``就好了,里面的加密数据还是一样。 **这样就可以gzip压缩了**

踩坑

> 重新编辑,重发 最近沉迷 vscode 扩展无法自拔,开启写了新坑,也维护旧扩展。 其中就有这么一个[扩展](https://github.com/axetroy/vscode-npm-import-package-version)是这样的: 显示导入的包版本号。 ![Screen shot](https://raw.githubusercontent.com/axetroy/vscode-npm-import-package-version/master/screenshot/vue.png) 代码很简单也很少,用`Babel/Typescript/vue-component`分别解析对应的文件,然后标注版本号。 然而就是这么功能简单的扩展,启动速度居然超过其他所有稍微复杂一点的扩展。 ![](https://i.loli.net/2019/03/05/5c7d63269f13f.jpg) ![2019-03-05 02 20 51](https://user-images.githubusercontent.com/9758711/53754049-b668bf00-3eed-11e9-9334-6f380cc4f062.png) 启动速度 `2431ms` ![](https://i.loli.net/2019/03/05/5c7d62237d0d2.jpg) 这不科学呀, 到底是慢在哪里呢? 分析了一下 `profile` 文件后,发现不是我写的代码慢,而是慢在了加载的第三方库 ### Typescript 的通病 Typescript 跟随 ECMA...

分享