あまみや ゆうこ » PAGE6

Anti XSS - Pomelo 扩展包系列

Introduction

最近在开发的时候遇到这样的需求,普通用户允许使用基本的markdown语法,而管理员除了markdown以外可以发html,比如<embed><video>等。

那么现在就有这样的一个问题,市面上主流的反XSS插件都是要求在C#端写Hard Code,这样一来开发者就没有办法进行权限的校验了。因此Pomelo为广大开发者提供了一款自由度很大的反XSS插件。

Getting Started

与其他包一样,需要添加Pomelo的MyGet Feed:<add key="Code Comb" value="https://www.myget.org/F/pomelo/api/v2/" />,接下来在project.json中引用Pomelo.AspNetCore.Extesions或Pomelo.AspNetCore.AntiXSS包。

Pomelo.AspNetCore.AntiXSS提供了三种白名单提供方式:

Hard Code

Hard Code方式要求开发者自行封装一个IWhiteListProvider将IDictionary形式返回。

更多内容 »

Published on 6/15/2016 2:16:06 PM

Timed Job - Pomelo扩展包系列

Introduction

许多.NET开发者向我反馈,在不使用Azure Jobs的时候,做定时事件太麻烦。因此设计了Timed Job框架以供开发者在进行ASP.NET Core时,能够拥有低后期维护成本、条理清晰地编写定时事务逻辑。具体可以应用于定时生成报表、定时生成网站缓存等场景。

Getting Started

使用方法很简单,首先引用Pomelo.AspNetCore.TimedJob包(注意,该包没有包含在Pomelo.AspNetCore.Extensions中)。当然这要添加MyGet Feed:<add key="Code Comb" value="https://www.myget.org/F/pomelo/api/v2/" />

在Startup.cs中添加TimedJob:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;

更多内容 »

Published on 6/12/2016 9:03:04 PM

Blob Storage - Pomelo扩展包系列

Introduction

Blob Storage是Pomelo扩展包中为了让开发者快速实现文件存储、文件上传而设计的框架。使用该框架可实现类似GitHub Issue编辑器中的Ctrl+V粘贴图片至编辑器或拖拽图片至编辑器的功能。

Getting Started

首先创建一个ASP.Net Core RC2的空白项目:

file

在解决方案根目录(即.sln文件所在目录)中创建NuGet.config文件:

file

file

更多内容 »

Published on 6/11/2016 9:34:37 AM

Pomelo IDE

开发这个有三个目的,一是参加微软云中黑客松比赛,虽然这个比赛办的不怎么样。二是为了毕业设计给自己挖的坑,所以这个项目前端是用之前发表的文章里说的jFlick开发的。三是为了进微软,证明一下自己的实力。

源代码在GitHub上:https://github.com/pomeloide

Published on 6/6/2016 6:54:08 PM

谁束缚了你的数据库?

过程不重要,重要的是结果!

在程序开发中,难免遇到复杂的逻辑,那么如何持久化存储这些数据?

我相信任何一个从事关系型数据库开发的人员,都了解1NF~6NF,那么为什么要按照范式进行数据库结构设计呢,其目的是减少冗余字段。

第一范式(1NF): 无重复的列,不存在某列包含其他列的内容。
第二范式(2NF): 数据库表中的每一行必须可以被唯一地区分。
第三范式(3NF): 数据库表中不包含已在其它表中已包含的非主关键字信息。

现在试想一个案例,客户提供了城市与城市边界的GPS坐标点数个,现在要求输入一个坐标点,输出这个坐标属于哪个城市,那么这个数据库要如何存储呢?注意,这里说的是如何存储,而不是如何计算这个点在不在边界范围内。

如果按照常规的关系型数据库要求的1NF~3NF设计,那么结果应该是这样的:

更多内容 »

Published on 4/26/2016 9:28:25 AM