8 PayneQin

尚未进行身份认证

暂无相关简介

等级
TA的排名 786

通过EF/Dapper扩展实现数据库审计功能

相信大家都有过周末被电话“吵醒”的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据“异常”,然后你花费大量时间去排查这些错误数据,发现这是客户使用某一种“骚”操作搞出来的“人祸”。可更多的时候,你不会这么顺利,因为你缺乏有力的证据去支持你的结论。最终,你不情愿地去处理了这些错误数据。你开始反思,为什么没有一种流程去记录客户对数据的变更呢?为什么你总要花时间去和客户解释这些数据产生的原因呢?好了,这就要说到我们今天这篇博客的主题——审计。什么是审计?结合本文引言中的描述的场景,当我们

2020-05-11 11:04:45

.NET Core + ELK搭建可视化日志分析平台(上)

Hi,各位朋友,大家好!欢迎大家关注我的博客,我的博客地址是: https://blog.yuanpei.me。今天是远程办公以来的第一个周末,虽然公司计划在远程两周后恢复正常办公,可面对着每天都有人离开的疫情,深知这一切都不会那么容易。窗外的阳光透过玻璃照射进屋子,这一切都昭示着春天的脚步渐渐近了。可春天来了,有的人却没有再回来。那些在2019年结束时许下的美好期待、豪言壮语,在这样一场灾难面前...

2020-03-04 11:08:57

使用 jsDelivr 为 Hexo 博客提供高效免费的CDN加速

最近给博客做了升级,从3.x升级到了4.x,主要是在官网看到了关于静态页面生成效率提升的内容。众所周知,Hexo在文章数目增加以后会越来越慢。博主大概是从14年年底开始使用Hexo这个静态博客的,截止到目前一共有176篇博客,其中的“慢”可想而知,中间甚至动过使用Hugo和VuePress的念头,所以,听说有性能方面的提升,还是决定第一时间来试试。整个升级过程挺顺利的,唯一遇到的问题是关于外部链接...

2020-03-04 11:06:40

从 .NET Core 2.2 升级到 3.1 的踩坑之旅

有时候,版本更新太快并不是一件好事。虽然,两周一个迭代的“敏捷”开发依然被客户嫌弃交付缓慢,可一边是前端领域“求不要再更新了,学不动了”的声音,一边则是.NET Core从1.x到2.x再到3.x的高歌猛进。版本更新太快,带来的是API的频繁变动,无法形成有效的知识沉淀,就像转眼到了2020年,Python2.x和Windows7都引来了“寿终正寝”,可能你都还没有认真地学习过这些知识,突然就被告...

2020-01-23 10:52:46

使用Liquid实现简单的数据交换

在平时的开发工作中,接口对接是一件无可避免的事情。虽然在“前后端分离”的大趋势下,后端的角色逐渐转换为数据接口的提供者,然而在实际的应用场景中,我们面对的往往是各种不同的“数据”,譬如企业应用中普遍使用的企业服务总线(ESB),这类服务要求服务接入者必须使用WebService来作为数据交换格式;再譬如电子数据交换(EDI)这种特定行业中使用的数据交换格式,从可读性上甚至还不如基于XML的WebS...

2019-12-29 14:44:08

Referrer还是Referer? 一个迷人的错误

诗人郑愁予曾经在一首诗中写道:我达达的马蹄是个美丽的错误,我不是归人,是个过客。而对我来说,十九岁之前的我,一样是个沉浸在诗歌中的文艺少年。十九岁之后的我,作为一名程序员,更多的是邂逅各种错误。可偏偏人类世界对待错误从来都不宽容,所以,错误本身既不美丽,亦不浪漫。接近中年的我,无论如何,都写不出年轻时令人惊艳的句子,这或许和我们面对错误时的不同心境,有着莫大的关联,而今天这篇博客,同样要从一个历史...

2019-12-29 14:43:01

浅析网站PV/UV统计系统的原理及其设计

国庆节前有段时间,新浪的“图床”一直不大稳定,因为新浪开启了防盗链,果然免费的永远是最贵的啊。为了不影响使用,我非常粗暴地禁止了浏览器发送Referer,然后我就发现了一件尴尬的事情,“不蒜子”统计服务无法使用了。这是一件用脚后跟想都能想明白的事情,我禁止了浏览器发送Referer,而“不蒜子”正好使用Referer来识别每个页面,所以,这是一个再明显不过的因为需求变更而引入的Bug。这个世界最离...

2019-12-29 14:41:21

使用Python开发插件化应用程序

插件化应用是个老话题啦,在我们的日常生活中更是屡见不鲜。无论是多年来臃肿不堪的Eclipse,亦或者是扩展丰富著称的Chrome,乃至近年来最优秀的编辑器VSCode,插件都是这其中重要的组成部分。插件的意义在于扩展应用程序的功能,这其实有点像iPhone手机和AppStore的关系,没有应用程序的手机无非就是一部手机,而拥有了应用程序的手机则可以是Everything。显然,安装或卸载应用程序并...

2019-12-29 14:39:55

百度地图加载海量标注性能优化策略

在上一篇博客中关于Vue表单验证的话题里,我提到了这段时间在做的城市配载功能,这个功能主要着眼于,如何为客户提供一条路线最优、时效最短、装载率最高的路线。事实上,这是目前物流运输行业智能化、专业化的一个趋势,即面向特定行业的局部最优解问题,简单来说,怎么样能在装更多货物的同时满足运费更低的条件,同时要考虑超载等等不可抗性因素,所以,这实际上是一个数学问题。而作为这个功能本身,在地图上加载大量标注更...

2019-11-26 17:48:37

Vue快速实现通用表单验证

本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...

2019-11-26 17:10:54

在WSL中使用Linux桌面环境的尝试与总结

最近忙里偷闲的博主,再次迷恋上折腾Linux。话说自从微软推出WSL以后,我就彻底地停止了Windows + Linux 的双系统组合。回想起从前使用过的各种Linux发行版,基本上每隔一段时间就会崩溃一次,所以,面对WSL这种近乎应用级别的方案,我个人是非常愿意去接受的。因为一不小心玩坏了的话,可以直接对应用程序进行重置,或者重新从应用商店下载,相比重装系统,我觉得这种方式要更友好一点。虽然说W...

2019-08-25 11:22:03

通过ApiExplorer为Swagger提供MVC扩展

我一直想吐槽下运维同事提供的Jekins项目模板,因为它居然不支持含有多个项目的解决方案。作为一个有追求的程序员,每个解决方案下最少应该含有两个项目,即项目本身和项目对应的单元测试。可惜在这样一种情形下,我没法再去坚持这样的原则,而这真正让我感到难过的是,为了在编译环节向Jekins妥协,大家在一个项目里极尽所能,在这一个项目里居然混合了MVC、WebApi和WebService三种技术,甚至到最...

2019-08-25 11:20:53

.NET Core POCOController在动态Web API中的应用

Hi,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是:https://blog.yuanpei.me。在上一篇文章中,我和大家分享了ASP.NET中动态Web API的实现,这种方案的现实意义是,它可以让我们把任意一个接口转换为Web API,所以,不单单局限在文章里提到的WCF迁移到Web API,任意领域驱动开发(DDD)中的服务层,甚至是更为普遍的传统三层,都可以通过这种方式快...

2019-08-25 11:19:24

长安十二时辰随想

年少时未见长安,难以想象万国来朝的盛唐气象,心中最为仰慕的人物,是那个“好剑术、喜任侠“、二十五岁“仗剑去国、辞亲远游”的李白。人在年少轻狂的时候,容易因为一个人的豪迈不羁,而选择性地模糊一个时代的印象。于是,长安就蓦地变成了李太白大放异彩的舞台。印象里的长安,是一个可以让人吟咏“安能摧眉折腰事权贵,使我不得开心颜”的地方,是一个可以让“贵妃捧墨、力士脱靴”的地方,是一个“绣口一吐,就是半个盛唐”...

2019-08-25 11:17:35

使用ASP.NET Core和Hangfire实现HTTP异步化方案

Hi,大家好,我是Payne,欢迎大家一如既往地关注我的博客。今天这篇博客里的故事背景,来自我工作中的一次业务对接,因为客户方提供的是长达上百行的XML,所以一度让更喜欢使用JSON的博主感到沮丧,我这里不是想讨论XML和JSON彼此的优缺点,而是我不明白AJAX里的X现在基本都被JSON替代了,为什么还有这么多的人坚持使用并友好的XML作为数据的交换协议呢?也许你会说,因为有这样或者那样等等的理...

2019-07-14 23:27:23

通过动态Controller实现从WCF到Web API的迁移.

在《又见AOP之基于RealProxy实现WCF动态代理》这篇文章中,我和大家分享了关于使用动态代理来简化WCF调用过程的相关内容,当时我试图解决的问题是,项目中大量通过T4生成甚至手动编写的“代理方法”。今天,我想和大家分享的是,如何通过动态的Controller来实现从WCF到Web API的迁移。为什么会有这个环节呢?因为我们希望把一个老项目逐步迁移到.NET Core上面,在这个过程中首当...

2019-07-14 23:23:05

《Web API 的设计与开发》读书笔记

设计优美的Web API:易于使用、便于更改、健壮性好、不怕公开REST的两层含义:指符合Fielding的REST架构风格的Web服务系统指使用符合RPC风格的XML或JSON + HTTP接口的系统(不使用SOAP)端点的基本设计:短小便于输入的URI-人可以读懂的URI没有大小写混用的URI修改方便的URI不暴露服务端架构的URI规则统一的URIHTTP方法和...

2019-07-14 23:20:09

又见AOP之基于RealProxy实现WCF动态代理

最近一直在研究Mongodb和ElasticSearch之间同步数据的问题,苦于到目前为止,并没有取得任何实质性的进展。偶尔“趁得浮生半日闲暇”,看一看Web API设计方面的书籍,和前辈交流下项目中的历史遗留问题,最为直观的感受就是,这个世界上任何方案的最终落地,都经过理想和现实的无数次挣扎,比如我们希望迁移项目到.NET Core平台上,初步分析大概有将近1000多个无法兼容的地方,维持现状固...

2019-07-14 23:15:57

WSL下Docker使用踩坑小记

众所周知,Win10中开始提供Linux子系统,即WindowsSubsystemforLinux,简称WSL,它可以让我们在Windows系统使用Linux系统,自从有了这个新功能以后,博主果断地放弃双系统的方案,因为折腾起来实在花费时间。关于如何使用WSL,网上有非常多的文章可以参考,这里不再赘述。今天想说的是,WSL下使用Docker遇到的各种坑。装完WSL以后,对各种编译环境的使用...

2019-05-03 23:05:26

由DBeaver与PL/SQL引发的数据库吐槽

因为工作中需要同时面向MySQL、Oracle和SQLServer三种数据库进行开发,所以,大概从去年国庆节开始,我开始使用一个开源的数据库管理工具——DBeaver。使用这个工具的初衷,是因为我不想在同一台电脑上安装三个客户端工具,尤其是Oracle和SQLServer这种令人恐惧的、动辄需要重装系统的应用程序。我不想再使用类似Navicat这样的软件,因为它的画风像是上个世纪VB6.0的产品...

2019-04-28 16:48:57

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。