Visual Studio 调试 Doker 容器时的注意点

2022年10月23日 | [debug] docker


  • visual studio 在启动docker调试时不会使用dockerfile去生成镜像
  • 检查容器的环境变量是要考虑到base镜像中设置的环境变量
  • 调试时若需要设置容器环境变量可在launchSettings.json中的Docker段进行设置
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
      "environmentVariables": {
        "ASPNETCORE_URLS": "http://+:5000"
      },
      "publishAllPorts": true
    }

sqlite 数据类型与 C# 类型的对应参考

2022年10月22日 | [sqlite] csharp


sqlite 中的类型

存储类型(Storage Classes),在 sqlite 中一个值的类型与值本身相关,并不与所在“容器”相关。

存储类型 说明
NULL NULL值
INTEGER 一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL 一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT 一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB 一个 blob 数据,完全根据它的输入存储。

亲和类型(Type Affinity) 为了最大化保证 SQLite与其他数据库的兼容性,SQLite 可以使用其他关系数据库的类型,如下所示:

CREATE TABLE t1(a INT, b VARCHAR(10));
INSERT INTO t1(a,b) VALUES('123',456);

SQLite 在列上支持“类型亲和”的概念,列的亲和类型是该列数据的推荐类型。这里的重要思想是该类型是推荐的,而不是必需的。列仍然可以存储任何类型的数据。 只是对于某些列,会更喜欢使用一个存储类而不是另一个。 列的首选存储类称为“亲和类型”。 下表显示了当你指定某些类型时候,列对应的亲和类型:

C#类型 sqlite类型,创建表时可指定的类型 亲和类型/Type Affinity(存储类型)
Int32
Int64
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
INTEGER
String CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
TEXT
Binary BLOB
未指定类型
BLOB
Double
Float
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
REAL
DateTime
Boolean
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC

官方文档 Microsoft.Data.Sqlite 文档

遇见 jsrender 库

2022年10月22日 | [javascript]


这是一个简单直观,可以快速上手的模板渲染工具。
因为需要渲染列表而项目中又不使用 Vue 等界面框架的情况下找到这个工具。
主页:https://www.jsviews.com/#jsrender

javascript 中 const,var,let 的区别

2022年10月22日 | [javascript] js语法


  • var,声明作用域为所在上下文即当前函数或全局范围的变量。
  • let,声明作用域为所在代码块的变量。
  • const,与 let 类似,但 const 声明变量的引用不能改变。

在ES6非严格模式下使用 let 声明的全局变量,不会成为window的属性。

参考资料:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const

DDD、TDD、BDD 都是啥?

2022年10月18日 | [设计]


  • DDD,领域驱动模型(Domain-Driven Design):通过创建领域模型来加速复杂的软件开发
  • TDD,测试驱动开发(Test-Driven Development):通过测试(测试用例,单元测试编写)来驱动开发的进行。
  • BDD,行为驱动开发(Behavioral-Driven Development):客户和开发者用同一的“语言”来定义系统的行为。

debug 心得

2022年10月18日 | [debug] 心得


  • 首先应到 bug 的“第一现场”检查问题,没检查前不要自以为知道问题出现在哪个地方了。
  • 不要在没有完全了解状况的情况下“预设” bug 产生的原因。
  • 耐心

什么是批处理?

2022年10月18日 | [shell]


百度百科【批处理】定义:
批处理是一种简化的脚本语言,也称作宏。它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。

维基百科【Batch file】定义:
Batch file 是在 DOS,OS/2 和 Windows 中的脚本文件。它由一系列可以被命令行解释器执行的命令组成,并保存在纯文本文件中。批处理文件可以包含命令行解释器支持的任何命令,并且批处理文件可以包含条件分支与循环语句,例如 IF、FOR 和 GOTO 语句。 术语“batch”来自批处理(batch processing),意思是“非交互式执行(non-interactive execution)”,虽然名为批处理但批处理文件并不一定需要处理一批多个数据。

个人总结: 批处理的本质就是使用 shell 进行自动化处理的脚本,可能由于历史原因在 DOS,OS/2 等早期操作系统上被称为批处理文件。Windows 则是沿用了 DOS 上的用法。我们也可以把新的 Powsershell 的脚本文件称为批处理文件。综上所述 批处理可以理解为 shell 脚本,包含 shell 脚本的文件称为批处理文件。

批处理(百度百科) Batch file(WikiPedia)

C# 中的非托管类型 unmanaged type

2022年10月16日 | [csharp]


从 C# 7.3 开始,可使用 unmanaged 约束指定:类型参数为“非指针、不可为 null 的非托管类型”。

从 C# 8.0 开始,仅包含非托管类型的字段的 构造 结构类型也是非托管类型。


public struct Coords<T> where T : unmanaged
{
    public T X;
    public T Y;
}

非托管类型包括:

  1. sbytebyteshortushortintuintlongulongcharfloatdoubledecimal 或 bool
  2. 任何枚举类型
  3. 任何指针类型
  4. 任何用户定义的只包含非托管类型成员的 struct 类型。

C# 所有值类型都是在栈(Stack)中的吗?

2022年10月16日 | [csharp]


根据 Nick Chapsas 视频的演示,并不是所有 值类型都是在 Stack中的,下面表格显示在各种情况下 值类型所在的位置

在方法内声明的值类型
在方法参数中声明的值类型
声明为类成员的值类型
声明为结构成员的值类型 其所在结构的位置
ref struct 值类型 只能在栈中

image

使用 powershell 重启网卡

2022年01月23日 | [powershell]


当面对某些特殊的问题,如电脑所连接的路由器重启导致本地的ipv6地址失效时,可以重启网卡解决问题。


#$net_adapter_name 为网卡/适配器名称
Get-NetAdapter -Name $net_adapter_name | Restart-NetAdapter

angularjs 获取 $scope 对象

2022年01月23日 | [javascript] angularjs


在无法直接访问 $scope 对象时,可以使用下面的代码获取 $scope 对象。 将其中的 “[ng-app=mainApp]” 你自己项目中定义的内容。

    $("[ng-app=mainApp]").scope()

遇见 axios 库

2022年01月23日 | [javascript]


axios 是一个基于 promise 的 网络请求库,使用方便。

import axios from "axios";
axios.get('/users')
  .then(res => {
    console.log(res.data);
  });

主页:https://www.axios-http.cn/

如何输出 Entity Framework Core/EF Core 执行的 sql 语句?

2022年01月23日 | [efcore] database


首先引入 Microsoft.Extensions.Logging.Debug 包,然后在 DbContext 类中的 OnConfiguring 方法中添加如下代码:


public static readonly LoggerFactory LoggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() });  

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    //...
    optionsBuilder.UseLoggerFactory(LoggerFactory);
    //
}

这样在启动调试的时候,就可以在 Visual Studio 底部的调试输出中看到 EF Core 执行 sql 的信息了。

ASP.NET MVC Application_Start 不执行怎么办?

2022年01月19日 | [asp.net]


首先检查 Global.asax.cs 与 Global.asax 文件,确定 Global.asax 的代码映射正确,


    <%@ Application Codebehind="Global.asax.cs" Inherits="myapp.MvcApplication" Language="C#" %> 

如果是使用Visual Studio进行开发的,可以尝试【清理】项目,并重启调试。 这次碰到的问题就是使用【清理】解决的。

EFCore 如何禁止实体的某个属性更新到数据库?

2022年01月14日 | [efcore]


代码如下:


    _db.Entry(note).Property(n => n.CreatedTime).IsModified = false;

如何去除 input 元素选中时的黑框(Edge浏览器)?

2022年01月11日 | [html]


只需将html元素的outline样式设置为none.


    input {outline:none;}

第一条笔记

2022年01月01日 | [心得]


制作该页面是为了记录在编码过程中学习到的各种有用却容易为遗忘的知识,也希望这些知识能帮助到看到这个页面的人。