想到哪吐槽到哪。
感想
- 对于个人而言,java真的是比较笨重的东西,python就比较灵活了,js(TypeScript等符合ECMA标准之类的也算)更胜。
- 真就万物皆可前端化,自从谷歌V8引擎出现,Node.js这东西横空出世,拓宽了视野,启发了不少人的思路,发现原来还可以这样玩。
以后平台生态不断发展繁荣,妹的什么都要插一脚,这就很烦。 - 抽象语法树AST这个概念真的666,代码混淆、格式化、标准适配转ES5等等一个思路就能搞定。
- 前端是真的臃肿。
- 先学js基础
-> ES6+极大的进步,新特性
-> UI框架bootstrap(响应式布局)先了解大概后面再深入
-> 为了兼容老版浏览器:babel/browserify等转化工具 (简单使用了解概念, 是啥为啥)
-> 服务器工具Node.js
-> 包管理npm
-> scss、less。。。花里胡哨,最后不还是要转成css、js。
要做得太多,来个打包管理器统一: webpack
-> 语言升级: TypeScript
-> React/Vue/Angular
- 先学js基础
- Visual Studio Code 代码编辑器真牛B。
- 关于vercel serverless:
- 代码运行于只读系统,没法进行写操作;
再加上函数的运行环境会不定时重启,全局变量也会变无,持久化是硬伤。 -
旧版
builds
配置下,所有.py
文件都会被算作一个函数。
免费版最多12个函数 =>.py
文件不能超过12个。Build Failed No more than 12 Serverless Functions can be added to a Deployment on the Hobby plan.
以上可以规避。核心实现使用静态,仅入口视为python函数即可。
{ "builds": [ { "src": "vercel/*.html", "use": "@vercel/static" }, { "src": "core/*.py", "use": "@vercel/static" }, { "src": "vercel/*.py", "use": "@vercel/python" } ] }
- 函数10s超时,不能执行复杂任务
- 无法识别云函数依赖的其它py文件报错的解决方案
-
看了看源代码,本地测试与云环境差别在于文件所在目录不在path中,故而导包导不进来
import inspect from importlib import util # Import relative path https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly __now_spec = util.spec_from_file_location("api.web", "./api/web.py") __now_module = util.module_from_spec(__now_spec) sys.modules["__NOW_HANDLER_MODULE_NAME"] = __now_module __now_spec.loader.exec_module(__now_module) __now_variables = dir(__now_module)
- python 导入module,先正常找,找不到再按照sys.path顺序查找(当前目录默认第一)
- 解决方案:云函数所在目录加入sys.path即可
currentDir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(currentDir)
-
- 代码运行于只读系统,没法进行写操作;
- 关于heroku
- 未验证身份,不能自定义域名,免费时间也只有几百来小时每月
- 半小时会休眠,再之后会重启,之前的东西会消失。。。
-
入门简单,部署方便
// 安装 $ npm insall -g heroku // 登录,授予权限 $ heroku login // 将代码与app相关联(在网页里面新建个app即可) $ heroku git:remote -a appname // 编辑Procfile,告诉heroku你的运行命令, 格式: 任务名: 运行命令 比如 task_name1: java -jar a_.jar task_name2: cd core && python main.py task_name3: cd core && gunicorn main:app // 推送后heroku会直接部署 $ git push heroku master // 查看 $ heroku logs --tail // 本地测试 $ heroku local // 环境变量设置 $ heroku config:set a_name=a_value $ heroku config:unset a_name
- 关于Github Actions
- 和Travis等类似,主要用于CI持续集成。但可以有很多骚操作。
- Cloudflare Workers
- 先占位
- 关于静态博客
- 可以有Github Pages、Git仓库+Vercel、直接部署各种白嫖云等等
- 国内也有码云等