网上冲浪指南 |> λ

不要使用 JWT 进行会话管理

2018/10/14

最近我发现越来越多的人推荐使用 JWT 来在 Web 应用中管理会话(Session),这是一个非常非常糟糕的主意,在这篇文章中我会详细地解释为什么“不要使用 JWT 进行会话管理”。

C# 函数式编程:LINQ

2018/09/30

使用 LINQ 来对 IEnumerable<T> 之外的 Monad 进行运算。

一分钟快速上手 F# 语法

2018/09/15

这是对 F# 语法的一个简单的介绍,来帮助完全不会 F# 的新手阅读 F# 代码。时间紧迫,所以我在这里没法详细的介绍,不过本文的内容应该足够让你拥有理解这个系列中出现的代码样例的要点。

为什么要用 F#

2018/09/15

F# 就像其他的函数式编程语言一样,在科学计算、数据分析等领域中表现相当出色,不过使用它来进行企业级的应用开发也是一个很棒的选择。在你开始你的下一个项目之前,不妨看看下面我列出来的 5 个使用 F# 的理由。

今日份的闲的无聊:一行代码实现简单的四则运算器

2018/09/03

今天在网上看到有人用 Haskell 写了一个一行代码实现四则运算的帖子,感觉十分厉害就想着自己也实现一个,但是无奈我看不懂 Haskell 代码,所以就找了一个 F# 版本的例子来模仿

如何在 ASP.NET Core 测试中操纵时间?

2018/08/15

⏳ 时间的膜法,来看一看如何 Mock DateTime.Now 吧~

如何简单的在 ASP.NET Core 中集成 JWT 认证?

2018/07/30

自上一篇介绍如何在 ASP.NET Core 中集成 JWT 的博文发布接近一年后,我又想来分享一些使用 JWT 的经验了。过去的一年中,我每次遇到一些小的,垃圾的项目,就会按照去年的那片文章来进行配置,虽然代码不多,但是每次写这么一些模板代码,又感觉很枯燥、冗余,而且稍不注意就有可能配置的有问题,导致验证不成功。前几天,我继续写自己的垃圾毕设,写到集成 JWT 的时候,我终于忍受不了这种重复的配置工作了,于是便着手封装一个简单易用的 JWT 插件。

博客系统的又一次大重构

2018/07/16

最近在网上瞎逛,发现了一个使用 F# 编写的服务端框架:Giraffe。它除了拥有函数式编程的优雅之外,在自带了一个 Giraffe View Engine —— 可以使用类似 Elm 的 API 来创建服务端页面模板,这对我来这种苦于 Razor 很久的人来说简直是充满了重构的诱惑。另一个使我更加坚定的原因就是 Giraffe 可以非常容易的与 ASP.NET Core 接入,只需 3 行代码,就可以让一个 Giraffe APP 成为 ASP.NET Core 中间件。

Rancher 到 Portainer

2018/07/09

前几天大公鸡突然失去网络连接,向主机商提交了工单后过了大半个星期一直没有回复,我这才断了继续使用大公鸡的念头,于是就着手把博客站点迁移到一台小鸡(1C1G)上面,这种小鸡当然是没法运行 Rancher 的,所以我就使用了 Portainer 作为替代品。

CIL - 运算符

2018/06/29

C# 内置有多种常用的运算符,在这篇文章中,我们将从 CIL 的角度重新学习 C# 中的那些运算符。

CIL - 变量之间的赋值

2018/06/29

在 C# 中,单个 = 表示变量赋值的意思,对于值类型来说,赋值相当于把值拷贝了一份,对于引用类型来说,赋值相当于把引用拷贝了一份,那在 CIL 中是如何实现这样的赋值功能呢?

CIL - 变量类型

2018/06/29

CIL 是一种面向栈设计的语言,我们可以通过 CIL 提供的很多个操作符来对一个栈进行操作,例如,将一个值推入栈的末尾,或者,把栈末尾的值弹出。他的规则设计的如此简单,以至于让第一次见到它的人感到无所适从。不过这并不重要,我们可以先从 CIL 的变量类型开始上手。

CIL - 声明变量与初始化

2018/06/29

在 C# 中我们可通过 类型 变量名 [= 初始值] 这样的语句来定义变量,如果变量被定义在一个函数中,那么,这些变量就被称为本地变量(local variable)。为了简单起见,让我们先从最常见的几种类型的变量的声明与初始化来看 IL 是如何达成这个简单的任务的。

我的 Manjaro🐧

2018/06/28

Manjaro 是 邪教 Arch Linux 一个分支,显而易见的好处就是拥有 AUR 这样的浩瀚的软件仓库,而且背靠 Arch Wiki 跟活跃的论坛,对愿意学习 Linux 的新手来说简直是最好的发行版。当然,最最重要的是,Manjaro 在安装的时候能够自动安装硬件驱动,就算是 N 卡也能愉快的玩耍?

Go vs .NET Core 2.1

2018/06/01

.NET Core 2.1 正式发布之际,微软团队在博客的中提到了 .NET Core 2.1 中的性能提升。这让我想起了去年 Go 语言 Iris MVC 框架作者做的 Go 与 .NET Core 2.0 之间的性能对比,当时的 Iris 在各个方面的表现都基本超出 .NET Core 至少 1 倍,测试结果在社区中引发了不小的讨论,事后,微软团队的成员与 Iris 的作者进行了亲切友好的会谈,并就 Web 框架性能调优相关方面展开了深入的讨论。现在 .NET Core 2.1 版本正式发布,让我们来看看现在的 .NET Core 性能到底如何。

博客开发进度

2018/05/27

一个基于 ASP.NET Core 2.0 的简单博客

Angular 向组件传递模板的几种方法

2018/05/26

使用 <ng-content> 标签可以更方便的控制传入的模板在 DOM 中的位置,而 NgTemplateOutlet 可以向传入的模板传递渲染数据,两者搭配使用可以起到很好的效果。

C# 函数式编程 —— 使用 Lambda 表达式编写递归函数

2018/05/26

最近看了赵姐夫的这篇博客http://blog.zhaojie.me/2009/08/recursive-lambda-expressions.html,主要讲的是如何使用 Lambda 编写递归函数。其中提到了不动点组合子这个东西,这个概念来自于函数式编程的世界,直接理解起来可能有些困难,所以我们可以一起来尝试使用 Lambda 来编写递归函数,以此来探索不动点组合子的奥秘。

8102 年,用 CSS 实现折叠面板的动画

2018/05/26

作为一个经常写后端代码的程序员,偶尔写写前端代码也是勉强可以应付的。最近在重构某网站的时候,需要重新实现一个折叠面板。因为用了 Angular 这样酷炫的前端框架,我相信,就算没有 jQuery 这样的工具,手撸一个折叠面板应该没啥问题。就当我按照自己的直觉写完第一版代码之后,简单的运行了一下,我就发现事情好像并没有那么简单。

使用 SQLServer On Linux 作为开发数据库遇到的编码问题

2018/04/04

在维护旧的项目的时候,遇到了使用 varchar 类型存储中文的情况,本地数据库是直接使用来自上古时期的 T-SQL 创建的。为了方便,我就没有安装 Windows 版的 SQLServer,直接用的 SQLServer On Linux On Docker。结果默认创建出来的数据库实例默认使用拉丁文编码,这导致了原有项目中 varchar 字段插入中文会乱码的问题。

1