摘要: _以下,称这个使用了IdentityServer4的OAuth2.0服务的项目称为Passport项目。_ 组件说明(Nuget) Passport项目所需组件 项目以Asp.net Core Identity项目模板初始化,集成IdentityServer4中间件; 集成IdentityServe 阅读全文
posted @ 2017-08-30 23:50 personball 阅读(239) 评论(1) 推荐(0)
摘要: 1.场景 当一个消费端(win服务)中包含多个Handler订阅了同一个MqMessage。 2.执行顺序 假设有四个Handler: Ha,Hb,Hc,Hd。 2.1执行顺序可配置 Configure.With(...) .Option(o = { o.SpecifyOrderOfHandler 阅读全文
posted @ 2017-08-30 23:49 personball 阅读(449) 评论(0) 推荐(0)
摘要: --->本系列目录:[Abp介绍和经验分享-目录](http://personball.com/abp/2017/05/31/abp-framework-series) Abp的模块系统支持插件机制,可以在指定目录中放置模块程序集,然后应用程序启动时会搜索该目录,加载其中所有程序集中的模块。 ## 如何使用这套机制进行功能插件化开发?首先,插件程序集和应用程序是毫无关系的,应用程序不依赖这个程序... 阅读全文
posted @ 2017-08-30 23:35 personball 阅读(2430) 评论(13) 推荐(0)
摘要: ---前提准备:完整安装Microsoft Web Deploy 3下载页面:[WebDeploy_amd64_zh-CN.msi](http://www.iis.net/downloads/microsoft/web-deploy)## msdeploy 同步站点命令所在目录`C:\Program Files\IIS\Microsoft Web Deploy V3>` msdeploy.e... 阅读全文
posted @ 2017-08-30 23:32 personball 阅读(2021) 评论(1) 推荐(0)
摘要: 本系列目录: "Abp介绍和经验分享 目录" 前言 ABP中有个异常 经常被使用,但是它所在的命名空间是 ,总觉得和展现层联系过于紧密,在AppService中用也就罢了,在领域层中用它总觉得有点不合适。 那么怎么定义业务异常?既要用起来舒服又能体现业务意义? 几点目标 1. 无需每个业务领域都定义 阅读全文
posted @ 2017-08-30 23:21 personball 阅读(1951) 评论(0) 推荐(0)
摘要: 最近看《CLR via C (第4版)》 读到第五章末尾 时,看了下作者的一个利用dynamic动态调用string类型的Contains方法(静态方法)的实现,突然发现这个不就是Ruby的 么!虽然当时已经夜深,仍忍不住起来试试,写了个利用Dynamic构建Xml的小Demo,非常有趣。于是有了本 阅读全文
posted @ 2017-08-30 23:21 personball 阅读(434) 评论(0) 推荐(0)
摘要: 本系列目录: "Abp介绍和经验分享 目录" 介绍ABP的文章,大多会提到ABP框架吸收了很多最佳实践,比如: 1.N层 (复用一下上篇的图) 展现层(Personball.Demo.Web):asp.net mvc只是其展现层,abp同时支持宿主为控制台程序、win服务或桌面程序WPF(wpf我不 阅读全文
posted @ 2017-08-30 23:20 personball 阅读(699) 评论(0) 推荐(0)
摘要: ---最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下。## 症状简介我们团队的DEV开发环境只有一台4核16G的win2012r2。 这台服务器上装了SqlServer、TFS(项目管理、远程Git库、CI、生成代理)、两个系统的整套DEV环境(六七个iis站点和八九个win服务), 还有其他一些辅助服务什么的,总之负担相对较重,内存占用经常10个G以上。现象是经常... 阅读全文
posted @ 2017-08-30 23:19 personball 阅读(532) 评论(0) 推荐(2)
摘要: ---## ELK1. [ElasticSearch](https://www.elastic.co/cn/downloads/elasticsearch)2. [LogStash](https://www.elastic.co/cn/downloads/logstash)3. [Kibana](https://www.elastic.co/cn/downloads/kibana)Server:C... 阅读全文
posted @ 2017-08-30 23:18 personball 阅读(346) 评论(0) 推荐(0)
摘要: 唔,说好的文章,欠了好久,先水一篇。 本系列目录: "Abp介绍和经验分享 目录" 概述 先表个态:对绝大多数人来说,ABP是成熟的,足以用到生产环境的。 最适合的:业务非常复杂且不追求极致性能的(这里并不是说ABP性能不行),或业务非常成熟稳定直接作为产品(卖软件)或服务(SaaS)进行销售的。 阅读全文
posted @ 2017-08-30 23:18 personball 阅读(1192) 评论(1) 推荐(1)
摘要: ---### 提醒`/etc/logstash/conf.d/`下虽然可以有多个conf文件,但是Logstash执行时,实际上只有一个pipeline,它会将`/etc/logstash/conf.d/`下的所有conf文件合并成一个执行。如果希望每个input-filter-output都互相独立,那么就需要在input中加自定义field,后面所有的filter和output必须加if条件语... 阅读全文
posted @ 2017-08-30 23:17 personball 阅读(355) 评论(0) 推荐(0)
摘要: ---话不多说,有兴趣的自己可以仔细研究下涉及的命令:net use、sc、robocopy## 脚本 set BuildConfig=【ENV】 set BuildExeName=【your_exe_name】.exe set BuildProjectBinPath=【path\to\bin】\%BuildConfig% set DeployServiceName=【yo... 阅读全文
posted @ 2017-08-30 23:15 personball 阅读(366) 评论(0) 推荐(0)
摘要: ---很久没动博客了,人比较懒。 最近想写点啥,主要就介绍下ABP框架和我这两年的使用经验。 文档翻译之类的工作就算了,需要的请参考: [官方文档](https://www.aspnetboilerplate.com/Pages/Documents) *PS:官方文档末尾有中文文档的链接,这里就不贴了*先列个提纲,有想到的不定期补充,思路略混乱。## What Is Abp1. [Quic... 阅读全文
posted @ 2017-08-30 23:15 personball 阅读(597) 评论(0) 推荐(1)
摘要: ---博客有阵子没打理了,今天刚恢复样式,但是标题还是不太正常,总算能凑合看看。回到正题,最近为了能在VS的程序包管理器控制台上能方便的自定义ps脚本去调整project的package,就开始看powershell的教程,做些笔记。## 在nuget控制台场景下的powershell### 自定义脚本放哪?在nuget包管理器控制台中,变量$profile代表一个特定ps脚本文件的路径,这个文件... 阅读全文
posted @ 2017-08-30 23:14 personball 阅读(434) 评论(0) 推荐(0)
摘要: ---## 目标:根据业务提供的两份数据,生成DataSeed代码SampleDataA 上海 华东一线 上饶 华东四线 中山 华南二线 临汾 华北四线 临沂 华东二线SampleDataB 上海 1D04E3A1-EE87-431C-9AA7-AC245014C511 上饶 138B9CD6-19AF-4F85-A566-4B4ECF6A7... 阅读全文
posted @ 2017-08-30 23:13 personball 阅读(330) 评论(0) 推荐(0)
摘要: ---### 安装系统:CentOS 6环境: rabbitmq 依赖的[Erlang环境包](https://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm) wget https://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm... 阅读全文
posted @ 2017-08-30 23:12 personball 阅读(214) 评论(0) 推荐(0)
摘要: ---## 建站批处理batch_createSites.bat @echo off rem 以管理员身份执行本脚本,可添加多条call 以建立多个站点 call path\to\createSites.bat www com.yourdomain yourdomain.com d:\Sites pausecreateSites.bat @echo off re... 阅读全文
posted @ 2017-08-30 23:12 personball 阅读(1075) 评论(0) 推荐(0)
摘要: ---近期工作总结备忘,下次重新部署时再总结更新。### 基本流程1. 一台初始化的win2012;2. 安装服务器角色,启用IIS,启用IIS管理服务,启用.Net相关框架等;3. 安装webdeploy工具(选择完整安装,管理服务委派是webdeploy安装的);4. 打开iis,添加iis管理用户;5. 配置管理服务,允许远程管理;6. 管理服务委派,添加规则,添加createapp、set... 阅读全文
posted @ 2017-08-30 23:11 personball 阅读(514) 评论(0) 推荐(0)
摘要: ---最近工作成果之一,特此记录。### 用于打包的批处理脚本注意设置 path/to/your/solutionfile.sln 指向vs的解决方案文件。 setlocal enabledelayedexpansion set "filepath=%cd%" cd /d c:\ if not exist localzips ( mkdir localzips ) ... 阅读全文
posted @ 2017-08-30 23:10 personball 阅读(860) 评论(0) 推荐(0)
摘要: ---今天刚配置完tfs2015+vs2013的持续集成(自动构建+自动发布),记录一下走过的坑。 tfs2015和tfs build server是之前其他同事装的,略去不讲,列一下几个坑以及埋坑方法。 ## 前提微软TFS的持续集成配过一次后会觉得真的还是蛮方便的,当然前提是你对它的构建工具和VS足够了解。 首先,打开vs2013的 _团队资源管理器_ ,连接上TFS后,在团队资源管理首... 阅读全文
posted @ 2017-08-30 23:09 personball 阅读(530) 评论(0) 推荐(0)
摘要: ---从vs2013开始,vs已经对git的操作提供了很好的支持,但是重度使用时还是会遇到很多抽风的时候,在此记录一些常用命令。## 分支操作1. 查看所有远程分支 git branch -r2. 查看本地分支 git branch3. 查看所有分支 git branch -a4. 删除本地分支 git branch -d branchName5. 删除远程分支 git push origin -... 阅读全文
posted @ 2017-08-30 23:09 personball 阅读(139) 评论(0) 推荐(0)
摘要: ---### 声明本文对Lambda表达式的扩展,示例代码来源于网络。### 场景描述web开发查询功能的时候,如果查询条件比较多,就会遇到动态组合查询条件的情况。在手写sql的情况下,我们一般会根据传入的参数,针对where部分进行sql语句的动态组装,而现在在使用EF的时候遇到这个问题,查询条件不再是以sql字符串的形式传递了,而是一个Lambda表达式,那么如何进行Lambda表达式的动态构... 阅读全文
posted @ 2017-08-30 23:08 personball 阅读(381) 评论(0) 推荐(0)
摘要: ---### 前言对于Enum在AspNet Mvc中的应用,我之前提到一种扩展,[如何在 Asp.net Mvc 开发过程中更好的使用Enum](http://personball.com/web开发/2014/09/21/an-extension-for-enum-in-dotnet-mvc-develop/)。这里将介绍另一种更好的使用Enum的方法。 ### Enum定义以一个代表权限的... 阅读全文
posted @ 2017-08-30 23:07 personball 阅读(303) 评论(2) 推荐(1)
摘要: ---刚为一个EF6 CodeFirst项目启用了Migration,记几个注意点。### 启用方法在Nuget控制台使用以下命令启用Migration Enable-Migrations #此时生成当前数据库结构的基本架构 Add-Migration #此时生成了数据库结构具体变动的代码 Update-Database #将修改应用到数据库,-Verbose选项可查看相关的sq... 阅读全文
posted @ 2017-08-30 23:06 personball 阅读(222) 评论(0) 推荐(0)
摘要: ---### 前言这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验。至于为何需要OAuth2.0、为何是Owin、什么是Owin等问题,不再赘述。我假定读者是使用Asp.Net,并需要搭建OAuth2.0服务器,对于涉及的Asp.Net Identity(Claims Based Authentication)、Owin、OAuth2.0等知识点已有基本了解。若不了解,请先参考... 阅读全文
posted @ 2017-08-30 23:06 personball 阅读(317) 评论(0) 推荐(0)
摘要: ---### 场景描述在web开发过程中,有时候需要根据Enum类型生成下拉菜单; 有时候在输出枚举类型的时候,又希望输出对应的更具描述性的字符串。 `喜欢直接用中文的请无视本文`不多说,直接看代码。 以下代码借鉴自http://stackoverflow.com/`本文针对 Aspnet Mvc 4 开发而言`### Enum定义 using System.ComponentModel; ... 阅读全文
posted @ 2017-08-30 23:05 personball 阅读(299) 评论(0) 推荐(0)
摘要: ---好久没写博客了,终于憋出了一个大招,现在总结下。 虽然文章题目是针对EF的,但涉及的内容不仅仅是EF。### 场景介绍目前在做的一个项目,行业门户,项目部分站点按域名划分如下:1. user.xxx.com:用户登陆注册2. owner.xxx.com:个人用户后台3. company.xxx.com:企业后台4. manage.xxx.com:网站管理其中user.xxx.com为个人用... 阅读全文
posted @ 2017-08-30 23:04 personball 阅读(298) 评论(0) 推荐(0)
摘要: ---今天在尝试 Mac 下使用 Xamarin Studio (以下简称XS) 开发 Asp.Net Mvc 项目,发现XS没启用版本控制,故自己去命令行下使用 git init,想到需要一个.gitignore文件。于是在github上翻到一个不错的库:[A collection of useful .gitignore templates](https://github.com/github... 阅读全文
posted @ 2017-08-30 23:03 personball 阅读(326) 评论(0) 推荐(0)
摘要: ---### irb* 语言:Ruby* 帮助:help* 清屏:CTRL+L* 自动完成:Tab+Tab (若未开启,则在`/etc/irbrc`中`require 'irb/completion'`)* 退出:quit/exit/CTRL+D### io* 语言:Io* 清屏:CTRL+L* 自动完成:无(可使用slotNames消息查看可用的槽)* 退出:exit/CTRL+D### gpr... 阅读全文
posted @ 2017-08-30 23:03 personball 阅读(341) 评论(0) 推荐(0)
摘要: ---`网上关于AspNet vNext的介绍已经非常多,本文不再赘述,仅记录下Mac环境的几点注意事项。`### 环境* OSX 10.9.4* Mono 3.6.1* Kvm 1.0.0-alpha4-10285mono官网提供了mac使用的安装包,安装比较顺利,不详细说了。 这里比较麻烦的就是kvm,kvm的安装文件获取需要访问亚马逊的服务,网速不给力。 用HomeBrew安装的时候,为... 阅读全文
posted @ 2017-08-30 23:02 personball 阅读(158) 评论(0) 推荐(0)
摘要: ---`系统:OSX 10.9.4`1. 将光标移动到行首:ctrl + a2. 将光标移动到行尾:ctrl + e3. 清除屏幕: ctrl + l4. 搜索以前使用命令:ctrl + r5. 清除当前行: ctrl + u6. 清除至当前行尾: ctrl + k7. 单词为单位移动: option + 方向键8. 新开命令行窗口: cmd + N9. 新开命令行标签:... 阅读全文
posted @ 2017-08-30 23:01 personball 阅读(224) 评论(0) 推荐(0)
摘要: ---`系统:OSX 10.9.4``内容来自网络,存于此以便查阅`### 基本操作* 全屏截图:Command-Shift-3* 指定区域截图:Command-Shift-4* 指定窗口截图:Commnad-Shift-4-Space### 指定区域截图高级用法Command-Shift-4 不要松开鼠标,继续按住(不放)以下按键之一,:* Space:再移动鼠标来移动整个已选择区域。* Shi... 阅读全文
posted @ 2017-08-30 23:00 personball 阅读(165) 评论(0) 推荐(0)
摘要: ---### 要玩集群的时候,怎么处理会话状态Session?InProc模式的sessionState是不能用了,因为这是在web服务器本机进程里的,会造成各节点数据不一致。除非在分流的时候用ip hash策略,不是长久之计。 1. 用StateServer模式,可能单点故障2. 用SQLServer模式,需要另配一个数据库实例,SQLServer不方便做读写分离等集群化架构3. 用Custom... 阅读全文
posted @ 2017-08-30 23:00 personball 阅读(257) 评论(0) 推荐(0)
摘要: ---`本文针对新手`使用Web.config的配置信息,一般都习惯于使用 ConfigurationManager.AppSettings["ConfigKey"]当程序不断迭代,开发维护了一段时间之后,是不是发现Web.config文件中的配置信息堆砌了一大堆?{% highlight xml %} ... 阅读全文
posted @ 2017-08-30 22:59 personball 阅读(142) 评论(0) 推荐(0)
摘要: ---#### 先来看一个简单mvc3网站的响应头![响应头版本信息示意图](http://personball.com/assets/img/version_header_before.png "响应头版本信息示意图")#### 修改Global.asax文件在Application_Start方法中添加如下代码 MvcHandler.DisableMvcResponseHeader = tru... 阅读全文
posted @ 2017-08-30 22:58 personball 阅读(257) 评论(0) 推荐(0)
摘要: ---### varnish安装* [ubuntu12安装参考](https://www.varnish-cache.org/installation/ubuntu) * [其他系统参考](https://www.varnish-cache.org/docs)如果选择了直接从源安装的方式的话,就不要自己去编译了,以免出现意外(悲剧的我,varnishlog 有点问题,之前先编译安装了,再从源安装... 阅读全文
posted @ 2017-08-30 22:57 personball 阅读(219) 评论(0) 推荐(0)
摘要: ---有时候需要切换本机dns,将网络环境转至测试环境 @echo off netsh interface ip set dns name="本地连接" source=static addr=192.168.1.1 primary ipconfig /flushdns pause exit 阅读全文
posted @ 2017-08-30 22:56 personball 阅读(494) 评论(0) 推荐(0)
摘要: ---`word文档作为产品文档的问题:`1. word文档本身的设计是为了打印;2. word文档的编辑较为繁琐;3. 作为产品文档的word文档往往长达百页以上,难以维护,且容易分散注意力,不利于查阅;4. 没有一个简单易用的搜索机制;5. 文档更新后的发布共享过程比较低效`Wiki作为产品文档的优势:`1. wiki的内容是大家都可以编辑的,方便各种信息的聚合;2. wiki的内容是修改后直... 阅读全文
posted @ 2017-08-30 22:55 personball 阅读(302) 评论(0) 推荐(0)
摘要: ---`linux相关的东西,入门最快捷,最通用的方式无非查阅帮助文档。``man命令很好理解,就不讲了,这里就提几个info相关的FAQ(也就3点啦)`### 基本操作,如何入门info首先,输入info命令 ,进入(dir)Top节点。找到左边置顶的Menu下方的Info(这个链接也可能在最末尾)。光标移到Info上,按回车(鼠标直接点也可以),按空格翻页,找到Menu下的Getting St... 阅读全文
posted @ 2017-08-30 22:54 personball 阅读(350) 评论(0) 推荐(0)
摘要: ---### 《The Little Schemer》 FP编程、lisp入门必备1. 这书貌似没中文版;2. 有英文pdf版;[完整版下载链接](http://down.51cto.com/data/671043)3. 英文不好的,被前几页噎住的,可以先到这里看[翻译好的前言部分](http://blog.csdn.net/sedgewick/article/details/6024036)4.... 阅读全文
posted @ 2017-08-30 22:53 personball 阅读(342) 评论(0) 推荐(0)
摘要: ---`场景:项目PA的源代码控制在开发者DA手中,所有代码调整,优化,发布必须经过DA。`#### 降低对具体人员的依赖DA因各种问题(病假,事假,突发情况等)不能工作,相应的工作(bug修复,代码调整,版本更新等)无法开展。(注:更悲剧的一个案例是某朋友的创业项目的关键技术开发者拒绝交出源代码而导致代码维护不及时,存在以源代码要挟的可能性)#### 降低灾难恢复代价如果DA本地也没有进行代码管... 阅读全文
posted @ 2017-08-30 22:52 personball 阅读(562) 评论(0) 推荐(0)
摘要: ---最近在看《构建高可用Linux服务器》由于对FreeBSD的稳定性仰慕已久,正好参照该书的指导进行体验一二。先感谢下该书作者余大大,同时做个声明:`本文中若有命令脚本涉及版权问题,请与personball@163.com联系`### 2012/08/21#### 最小化安装,略;这里本人安装的是FreeBSD9.0-i386 在官网找来的500多M的一个iso刻盘。#### 更新ports源... 阅读全文
posted @ 2017-08-30 22:51 personball 阅读(228) 评论(0) 推荐(0)
摘要: ---1. 网关地址(端口)未提供端口的一般是默认端口78902. 网关接入使用的账号密码3. 长号码:显示在接收方手机上的号码,比如1065 XXXX XXXXX4. 提交短信时的字段 Msg_src 6 Octet String 信息内容来源(SP_Id)长度为6的一串东西,一般模拟器上会直接填入账号作为该字段的值,实际接入时,需问清楚网关方此项该填入什么。。最后,开发cmpp2.0... 阅读全文
posted @ 2017-08-30 22:50 personball 阅读(201) 评论(0) 推荐(0)
摘要: ---以下代码满足这样的需求:1. 多个文件内容合并到一个文件A中(如果没有下面这条,使用cat就能解决)2. 文件A中每段内容之前保留原先的文件名 awk 'tmp!=FILENAME{tmp=FILENAME;print tmp":"} {print "\t"$0}' * >Ex.report得到的文件内容如下 personball@vostro:Ex$ cat Ex.report app_... 阅读全文
posted @ 2017-08-30 22:50 personball 阅读(272) 评论(0) 推荐(0)
摘要: ---今天是2012-07-13 星期五,所以刚好有了这么个想法,获取最近100年的所有黑色星期五的日子。丢个砖: personball@vostro:SHELL$cat GetBlackFri.sh #!/bin/bash first="2012-07-13 00:00:00" tst=`date -d "$first" "+%s"` for i in {1..5200} do let ... 阅读全文
posted @ 2017-08-30 22:49 personball 阅读(175) 评论(0) 推荐(0)
摘要: ---测试数据: personball@vostro:SHELL$cat aaa personball@vostro:SHELL$根据 `匹配,行号` 范围执行替换: personball@vostro:SHELL$sed '/instr/,5 s/"[^"]*"/"999"/' aaa 根据 `匹配,相对匹配行号` 范围执行替换: personball@vost... 阅读全文
posted @ 2017-08-30 22:48 personball 阅读(1229) 评论(0) 推荐(0)
摘要: ---问题源起:[http://bbs.chinaunix.net/thread-3753784-1-1.html](http://bbs.chinaunix.net/thread-3753784-1-1.html)代码如下{% capture text %}$awk '{if(!a[$1]){a[$1]=$1" "$2;}else{a[$1]=a[$1]"_"$2}}END{for(i in a... 阅读全文
posted @ 2017-08-30 22:47 personball 阅读(200) 评论(0) 推荐(0)
摘要: ---源起:[http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3754423&page=1&extra=#pid22172981](http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3754423&page=1&extra=#pid22172981) find . -type f ... 阅读全文
posted @ 2017-08-30 22:47 personball 阅读(496) 评论(0) 推荐(0)
摘要: ---参考[http://bbs.chinaunix.net/thread-2309494-1-1.html](http://bbs.chinaunix.net/thread-2309494-1-1.html)>10.awk ‘! a[$0]++’ 怎么理解? >这是一个非常经典的去重复项的awk语句,虽然短小,不过涉及到了不少知识点,下面一一解读: >:”!” 即非。 >:a[$0],以$... 阅读全文
posted @ 2017-08-30 22:46 personball 阅读(707) 评论(0) 推荐(0)
摘要: --- $awk -v RS= '{print $1}' testRS 默认值为\n 换行符。 此处设置`RS=` 等效于 `RS=“”` 代表一个空行 (若理解有误请指正,在以下例子中符合) $cat test 1.aaaaaaaa bbbbbbb cccccc 2.ddddddd fffffff eeeeeee 3.zzzzz cccccccc fd $awk -v RS= '{print ... 阅读全文
posted @ 2017-08-30 22:45 personball 阅读(478) 评论(0) 推荐(0)
摘要: ---参考了[shell十三问](http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=218853&page=7) 以及[http://hi.baidu.com/leejun_2005/blog/item/ebfee11a4177ddc1ac6e751d.html](http://hi.baidu.com/leejun_2005/blog/... 阅读全文
posted @ 2017-08-30 22:44 personball 阅读(264) 评论(0) 推荐(0)