NiceLeeのBlog 用爱发电 bilibili~

杂七杂八 啊这。。。

2021-02-24
nIceLee

阅读:


想到哪吐槽到哪。

感想

  • 对于个人而言,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
  • 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、直接部署各种白嫖云等等
    • 国内也有码云等

内容
隐藏