PM2 的安装、配置和使用

安装和常用命令

安装 nodejs 和 npm

# 对于 ubuntu22.04,直接:
sudo apt install -y nodejs npm

安装 PM2

npm install -g pm2

启动程序

pm2 start <app_name|id|all>

通过 DDNS+显性URL 把内网部署的.NET CORE WEBAPI 项目暴露到公网中

通过本文,你可以把部署在公司/家里服务器/虚拟机上的网站、webapi等站点、服务暴露到公网中,通过显性URL来达到隐藏端口号,直接80/443端口访问。

环境说明

  • .NET CORE WebAPI:本文初衷是因为作者日常 obsidian 中的模板需要一个天气 api,原本是用了 witt 站点提供的服务,但经常抽风,无奈之下准备自己搭建一个,至少可控。
    • 提供天气的服务基于 .NET CORE WEBAPI(.NET 6)
    • 高德天气服务(考虑到会有端口被扫描的风险,个人编写的查询 api 不再对外开放使用。)
  • R86S:
    • PVE7 容器(OS 为 ubuntu 22.04)
    • DDNS 服务(宿主为 istoreOS)
  • 本文域名和解析在腾讯云上(阿里云,花生壳类同)

发布、打包程序

因为内网使用,所以直接 http 即可,为了防止 webapi 自动跳转到 https,建议程序中注释以下部分:

app.UseHttpsRedirection();

打包项目:
直接在 VS 上打包:

如果你要用 PM2 来进行进程守护,那么可以生成的时候,建议用独立部署模式,这样子才能生成不包含 .dll 后缀的文件,以便 PM2 来执行

使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh

为了同 iterm2 下的 oh-my-zsh 保持基本一致,博主用的是 aliens 主题+一些自定义配置调整,最终效果如下,你也可以根据自己需要进行细调,本文旨在快速让你进行美化,少踩一些坑:

  • 如果你闲麻烦,或者想跟我用一样的,文末会给出主题配置,直接拿去用即可。
  • 效果图:

版本说明:

  • 本文撰写时:
    • oh-my-posh 版本为 v7.87.0
    • powershell 的版本为 7.2.3,(最新为 7.2.4)
    • OS:win10,21H1,19043.1706

注意事项:

**1. 安装时请关闭杀毒软件、各类管家,否则写入注册表时会报错。

  1. 有条件的请挂代理,因为源文件在 git 上。
  2. 全程在 powershell ,管理员模式 下进行。**

安装 windows terminal:

可直接在 microsoft store 中搜索安装。这里不赘述。

《富爸爸穷爸爸》Summary


比较经典的一本理财入门书:《富爸爸穷爸爸》,2013 年左右读过一次,这次算是二刷,有新的感悟,已经分不清日常操作中的一些方法和思维方式是否是从这本书中悟得,但着实不错,做了点摘要分享下。

《买基金为自己加薪》Summary

绩效导向:挑选中、长期绩效好的基金

  • 中长期指:近 3 年绩效都在前 1/4 的基金。(因为经济走完一个循环差不多就是 3 年的时间,只要基金在这个周期内绩效都能稳居前列,说明无论在什么景气阶段,该基金都能打败其他基金)
    • 也可以直接按照是否连续 6~8 个月跌出 1/2 来判断是否需要考虑换基金。
  • 如果是单笔投资,可以看短一点,如 1 年的绩效,同样是看是否是前 1/4 的基金,之后再看 6 个月, 3 个月的绩效,删掉跌出 1/4 的基金。
  • 不要迷恋第一名,要投资稳居前列的。

定额投资方法:

【不到获利心不死,绝不轻易提分手】

.NET CORE 下通过 SmtpClient 发送邮件

通过本文你可以实现:使用 .NET SmtpClient 来发送邮件

  • 基础使用:仅含有邮件内容,无附件;
  • 发送含有附件的邮件;
  • 以及抄送等功能。

通过使用 epplus 来动态生成 excel 表单

Summary:

  • 本文旨在说明通过建立本地模型类,通过 EPPlus,来统一生成 excel,模型类见下方代码块。
    • 适合需要动态生成整个 excel 表单的业务。
    • 如果无需动态生成,则可以直接给出物理excel文件硬编码即可。
  • 因涉及到公司业务,这里仅给出和业务无关部分代码。

环境说明:

在 .net core 2.1 和 3.1 中使用 autofac

通过本文你可以获得如何用 autofac 替换 .NET CORE(2.1,3.1) 默认 IOC 容器。

生命周期说明

  • 每个依赖一个实例(Instance Per Dependency) (默认) —-InstancePerDependency()
  • 单一实例(Single Instance) 单例 —-SingleInstance()
  • 每个生命周期作用域一个实例(Instance Per Lifetime Scope)—-InstancePerLifetimeScope()
  • 每个匹配的生命周期作用域一个实例(Instance Per Matching Lifetime Scope)—-InstancePerMatchingLifetimeScope()
  • 每个请求一个实例(Instance Per Request) asp.net web请求—-InstancePerRequest()
  • 每次被拥有一个实例(Instance Per Owned) —-InstancePerOwned()

注册方式

  • 反射
  • 使用实例
  • lambda 表达式

示例代码说明: