一开始看了一篇使用阿里云 OSS 搭建图床的文章,于是有了使用 OSS 搭建图床的想法,但我不想用现成的 OSS,后来想到之前使用过免费的 Minio: Setup private object storage using MinIO,遂用之

首先搜索了一下,发现已经有人实现过了:Minio+Nginx搭建图床一键上传博客图片,实话实说,吸取了链接文章的部分经验

环境

  • Ubnutu 18.04
    • docker
  • Windows 10 Pro 1909
    • VS 2019
    • dotnet core 3.1.302

参考

步骤

MinIO 负责图片的存储,Nginx 负责展示图片,dotnet core 编写程序负责上传图片到 MinIO

使用 Typora 作为 Markdown 编辑器,并设置 Typora 在插入图片时自动上传

搭建 MinIO

详情可见 Setup private object storage using MinIO ,这里选用 docker,复读一遍:

  1. 下载镜像
    • 执行指令
      sudo docker pull minio/minio
  2. 启动容器
    • 执行指令
      docker run -d -p 9000:9000 --name minio1 \
        -e "MINIO_ACCESS_KEY=[your username]" \
        -e "MINIO_SECRET_KEY=[your password]" \
        -v /home/azhuge233/minio-data:/data \
        minio/minio server /data

      路径映射可以自行更改,我在主目录新建了 minio-data 文件夹作为 minio 存储路径

    • MinIO 界面

Continue reading “使用 MinIO + Nginx + dotnet core 搭建图床”

一个基于 ASP.NET Core 3.1 的功能齐全的简易博客引擎

环境

  • Ubuntu 16.04
  • dotnet core sdk 2.2
    • 通过 dotnet CLI 安装的版本需要 dotnet core sdk 2.2

参考

步骤

  1. 安装并新建 Miniblog.Core
    • 先安装 dotnet 环境,参见 Microsoft 官方页面
    • 执行指令
      dotnet new --install MadsKristensen.AspNetCore.Miniblog
      mkdir blog.net
      cd blog.net
      dotnet new miniblog

      查看目录,项目结构为 ASP.NET Core MVC

  2. 配置账户密码
    • 打开目录下的 appsettings.json
      vim appsettings.json
    • 更改用户名和密码字段,注意密码字段需要填写对应 Hash 值,Hash 可以进入字段后注释中的网址 Online hasher 生成如果加盐需要将盐填入盐字段
    • 在 appsettings.json 中还可以设置博客的标题等等
  3. 指定绑定 IP 和端口(可跳过)
    • 默认情况下直接运行博客,只会运行在 localhost:5000,只能在本机访问
    • 如果想要外网访问,安全的做法是使用 nginx 等 Web 服务器反向代理(proxy_pass),这里仅作测试用(或者只在内网访问)
    • 编辑 Startup.cs,找到 CreateDefaultBuilder 一行,添加方法 UseUrls()
      //...
      WebHost.CreateDefaultBuilder(args)
          .UseStartup<Startup>()
          .UseKestrel(a => a.AddServerHeader = false)
          .UseUrls("http://0.0.0.0:5000") // add this
          .Build();
      //...
  4. 运行博客
    • 在博客目录下执行指令
      dotnet run

Continue reading “基于 dotnet core 的简易博客引擎 Miniblog.Core 搭建”

Selenium 4 中加入了对新版 Chromium Edge 的支持,但其仍处于 alpha 阶段,没有正式发布

如果使用最新稳定版的 Selenium 操作 Chromium Edge,则需要一些其他的操作

环境

  • Windows 1909
    • macOS 和 Linux 的使用方式相同
  • dotnet core 3.1
    • 其他语言可能有其他方法
  • Microsoft Edge (Chromium)
  • Edge Webdriver

参考

步骤

  1. 环境准备
    • 根据已安装的 Edge 版本下载对应的 Webdriver
    • 将 Webdriver(名称为 msedgedriver.exe)移动到与 msedge.exe 同级目录下(默认安装路径为 C:\Program Files (x86)\Microsoft\Edge\Application
    • 将 Webdriver 的路径加入环境变量
  2. 实例
    • 在项目中引入 Selenium.WebDriverMicrosoft.Edge.SeleniumTools
    • 使用 dotnet core 打开一个页面
      using Microsoft.Edge.SeleniumTools;
      //...
      var options = new EdgeOptions();
      options.UseChromium = true;
      // options.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
      options.AddArgument("disable-gpu");
      options.AddArgument("--no-sandbox");
      options.AddArgument("--disable-dev-shm-usage");
      options.AddUserProfilePreference("profile.managed_default_content_settings.images", 2);
      
      string source = string.Empty;
      using (var edge = new EdgeDriver(options)) {
          edge.Navigate().GoToUrl(url);
          Thread.Sleep(5000);
          source = edge.PageSource;
          edge.Quit();
      }
      
      Console.WriteLine(source);
      //...

      注意不要引用 Selenium.WebDriver 官方的 OpenQA.Selenium.Edge,会与 Microsoft.Edge.SeleniumTools 包冲突

      前者的 EdgeOptions 内没有定义 UseChromium,无法正常使用新版 Edge

Continue reading “Dotnet Core Selenium 3 自动化 Chromium Edge”