本页 12 篇文章
StarBloghttps://blog.deali.cn/blog/csharp-unit-test-coverage-analysis
...harp-aot-imageglider)介绍 ImageGlider 的文章里预告的那样,这篇同样属于那套「C# + 自动化发布」开发流程的系列分享,继续把踩过的坑和总结的经验都记录下来,大家一起少走弯路。 单元测试的重要性不用我多说了吧?😄 而**覆盖率**,保证了单元测试的**广度和有效性——它能帮助...
StarBloghttps://blog.deali.cn/blog/sharpico-pure-csharp-zero-dependency-ico-generator
...上 找到了一个基于 nodejs 实现并且零依赖的(大部分都是依赖于 Magick 这个 C++实现的图片库),然而很遗憾,这个工具在我电脑上并不能使用…… 目标 这时我想起来之前曾经用 c# 开发了一个图片格式转换工具,使用了 .Net8 的 AOT 功能,可以像 go 语言那样开发出跨平台的单可执行文件 所以我决定继续使用 C# 开发一个图标生成工具,这个工具可以实现: 纯 C...
StarBloghttps://blog.deali.cn/blog/almost-abandoned-project-open-source
...非常简陋,甚至没有应用管理功能,多个系统都共用相同的 token ,然后在每个系统里去判断用户权限,非常不优雅也不安全。 去年底就开始计划这个单点认证项目 起初做了一些技术选型和调研,本来打算在 C# 生态里选择的,不过 C# 生态里的单点认证项目实在是少,开源的比较完善的也就 IdentityServer4 了,但这个项目已经停在了 .Net6 版本,现在这个团队已经转向商业版的开发。 Ide...
StarBloghttps://blog.deali.cn/blog/asp-net-core-non-intrusive-audit-logging
...og.cs └─ AuditConstant.cs 6 directories, 10 files 创建 EntityChangeInfo 实体 用来保存实体变化 c# public class EntityChangeInfo { public string Entity { get; set; } public string Action { get; ...
StarBloghttps://blog.deali.cn/blog/starblog-dev-notes-25-img-int-file-upload
...分页查看也是有的,不过因为筛选功能没有做,所以就不定义一个ViewModel作为参数了。 控制器代码 StarBlog.Web/Apis/Blog/PhotoController.cs c# [HttpGet] public ApiResponsePaged<Photo> GetList(int page = 1, int pageSize = 10) { var paged =...
StarBloghttps://blog.deali.cn/blog/starblog-blog-dev-16-new-features
...这个GetQuerySet,这点让我这种用习惯DjangoORM的人觉得很不适应 = =.. 这个接口计算总访问量、今日访问量、昨日访问量,方便做对比~~(受知乎的创作者中心启发)~~ c# public object Overview() { ISelect<VisitRecord> GetQuerySet() => _repo.Where(a => !a.RequestPath....
StarBloghttps://blog.deali.cn/blog/csharp-aes-encryption-implementation
...Columns—为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。 C#代码实现 定义默认密钥向量 c# private static byte[] _aesKetByte = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD...
StarBloghttps://blog.deali.cn/blog/starblog-article-detail-page-note7
...文章详情页面的设计不能马虎~ 思路 文章正文是以markdown格式存储的,要在网页上展示的话,需要把markdown渲染成HTML才行。 那么就有两种思路: 一种是在后端渲染,使用C#把markdown转换成HTML然后渲染成网页 另一种是后端直接输出markdown,使用一些开源的JS库实现markdown渲染 一开始我是采用第一种的后端渲染方式,用到的C#库是Markdi...
StarBloghttps://blog.deali.cn/blog/project-sumup-blazor-grpc
...义为服务端流式输出,然后我又在 Blazor 项目里封装了一个 ChatService 用生成器的方式,返回一个 IAsyncEnumerable 对象。*(详见第三个参考资料)* c# public async IAsyncEnumerable<string> StreamingChat(string prompt) { using var call = ClientRoute...
StarBloghttps://blog.deali.cn/blog/starblog-dev-notes-13-friend-links
...:听起来怎么那么熟悉)~~ 建模 根据需求,需要俩模型 一个是要显示的友情链接,一个是友情链接申请记录 那开始吧 在StarBlog.Data/Models中创建数据模型 c# /// <summary> /// 友情链接 /// </summary> public class Link { [Column(IsIdentity = true, IsPrimary ...
StarBloghttps://blog.deali.cn/blog/system-text-json-common-issues
...ASCII 的字符进行转义,这就会导致很多时候我们的一些非 ASCII 的字符就会变成 \uxxxx 这样的形式,很多场景下并不太友好,我们可以配置字符编码来解决被转义的问题。 例子: c# var testObj=new { Name = "测试", Value = 123 }; var json = JsonSerializer.Serialize(testObj); Co...
StarBloghttps://blog.deali.cn/blog/2d-bin-packing-crossover-analysis-koro
...”对应的数字,我只需要循环嵌套判断,“1”对应的数字是“6”,“6”对应的数字是“3”,“3”对应的数字是“-1”,循环停止,所以我找到了“1”最终对应的数字是“3”,如此便实现了冲突检测。 c# /// <summary> /// PMX交叉算子 /// </summary> /// <param name="parent1">父类基因一</param> /// <param name="p...