在上一篇文章中,我的中间件是 保存在我的web 业务app 中的.但是rbac我想要完成的是一个 组件的功能, 所以这个验证的 中间件,  何不放到rbac的app之中: 为了太乱先放一个项目的目录图片: 不要忘记我们的目的: 做一个 可以灵活使用的rbac 权限组件:先看看setting中的配置: import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.pat…
1.引入权限组件rbac 1.settings配置app.中间件 INSTALLED_APPS = [ ... ... 'crm.apps.CrmConfig', "stark.apps.StarkConfig", 'rbac.apps.RbacConfig', ] 中间件 MIDDLEWARE = [ .... 'rbac.service.rbac.ValidPermission', ] 2.员工表UserInfo和rbac.User表关联 一对一 UserInfo中的用户名和密码也…
在 jQuery 1.9 之前(不含1.9):如果传入一个空字符串. null 或 jQuery.parseJSON( jsonString ) ,该函数将返回,而不是抛出一个错误,即使它不是有效的 JSON 字符串.…
所谓爬虫简单点说,就是把别人网站上的东西爬下来,至于爬做什么用就看你自己了,比如:把别人网站上的东西爬下来放在自己网站中(感觉有点像小偷^v^). 这里随便写了一个爬虫代码(可以自己再去进行完善): protected void Button1_Click(object sender, EventArgs e) { string htmlcode = GetHTML("http://www.imooc.com/learn/348"); Regex reg = new Regex(&qu…
目录 1. 出发 A. 安装 B. 设置机器身份 C. 创建版本(仓)库 repository D. 可管理文件 2. 基础操作 A. 添加文件至仓库 B. 修改文件并查看修改 C. 查看历史变动 D. 版本回退 E. 工作区和暂存区 F. 管理修改的概念 G. 撤销修改 H. 删除文件 3. Git 的杀手锏一:远程仓库 A. 添加远程仓库 B. 推送上去 C. 从远程库克隆 参考(强烈推荐):廖雪峰的 Git 教程. 1. 出发 A. 安装 输入 git 查看是否已安装. 如果没有安装,安装…
造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为ToyWebF. 本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换. ToyWebF的简单特性: 1.支持多种不同形式的路由注册方式 2.支持静态HTML.CSS.JavaScript 3.支持自定义错误 4.支持中间件 下面我们来实现这些特性. 最简单的web服务 首先,我们需要安装gunicorn,回忆一下Flask框架,该框架有内置的Web服务器,但不稳定,所以上线时通常会替换成uW…
队名:我头发呢队 组长博客 作业博客 杰(组长) 过去两天完成了哪些任务 继续翻阅Google Material Design 2的官方文档 接下来的计划 音源爬取 还剩下哪些任务 app开发 燃尽图 有哪些困难 无力 有哪些收获和疑问 不能凑合,当初应该果断拒绝. 跃安 过去两天完成了哪些任务 学习了基础的安卓开发. 尝试了音乐源的爬取. 接下来的计划 音乐源的爬取还不够好,继续完善代码. 还剩下哪些任务 完善的音乐播放器界面 有哪些收获和疑问 第一次尝试音乐源的爬取,很有意思. 写代码的过程…
继ok6410 u-boot-2012.04.01移植四.五后,开发板基本已支持MLC NAND,支持DM9000.但是通过NAND命令更新u-boot到NAND,还存在问题,需要根据u-boot的nand命令继续修改,最终实现通过网卡tftp程序到内存,接着通过NAND命令写到NAND. 开发环境: 系统:ubuntu 10.04.4 单板:ok6410 NAND FLASH:K9GAG08U0D 2048MB NOR Flash:EN29LV160AB 2MB DDR:K4X1G163PCX…
(一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取当前目录中的文件列表,创建.删除文件和目录等. 2.I/O流 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 (二)在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一…
CSDN上发博文,尤其是有代码的,要用好“插入代码”功能(见下图).这是必须的,未来的IT程序员,需要用这种方式,展示出自己的代码.这是尊重读者,树立品牌的需要. 相关方法,参考见视频<发布第一个C++上机报告>和博文<搬家到CSDN的同学要用好一个好功能>. 不过这样一来,也带来了一些麻烦,用不好这些功能,会将页面搞得乱七八糟,尤其对刚开始学习程序设计的菜鸟.本文将就常见的问题,提出解决办法.这对老鸟根本不是问题,菜鸟们做到了,就是一种进步,同时,对以后要学习HTML而言,也是一…
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里打滚了两年的文艺小码农来说,也有自己的一些体会,今天就来分享一下自己基于Gulp编写的一个比较丑陋的前端开发环境,本人技术有限,有问题和意见请私下聊,勿喷: 首先安装Node.js,至于怎么安装的话 ,自行度娘.安装完成之后在命令行里面输入下面两个命令,如果输出了版本号的话(这个是我自己电脑上的版本…
vim是一款支持插件.功能无比强大的编辑器,无论你的系统是linux.unix.mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding.如果能把vim用好了,不仅编程效率能得到大幅度提高,周围人也会因此而看得头晕眼花佩服不已,自己心里当然也会心花怒放啦.下面就让我 来介绍一下如何来进行配置.这些配置所涉及到的内容有:autocomplpop, ctags, TagList,omnicppcomplete 首 先Vim是内建代码补全功能的,在不需要通过任何设置的情况下就能…
1. 引言 可以使用脚本/插件来给vim添加各种神奇的功能,从更换颜色主题.到代码智能提示,甚至项目管理.无数开发者通过开源社区贡献自己开发的插件,使得vim有可能变得无比强大.这儿http://vim-scripts.org/vim/scripts.html 是一份vim扩展脚本的列表. 然而,我的思想是尽量不要使用vim插件,除了那些非常优秀且对自己的工作而言所必需的.这样,当需要配置一台新电脑或者临时要在别人的电脑上工作时,最起码能比较方便地配置好环境,或者直接使用默认环境熟练地完成任务,…
需求 在之前的文章中"[DevOps]如何用VSTS持续集成到Github仓库" 我们有讲述如何将vsts中的代码编译推送到github中,这一篇我们来完善,如果有人给你开源项目推送了代码,你审核后,如何自动将代码推送回vsts,从而实现双同步. 准备工作 首先你要生成一个key,登录到你的vsts中.进入"Security"菜单栏. 点击Add,添加一个密钥. 注意:此处生成的密钥,请自行保存,因为你刷新页面后,此处的密钥就不会再出现.同时密钥是有失效时间的.所以…
http://www.myexception.cn/program/679738.html Go调用C代码,Cgo笔记 参考: 官方文档: http://golang.org/cmd/cgo/ http://blog.golang.org/2011/03/c-go-cgo.html 一份博文,编译过程讲得比较细: http://googollee.blog.163.com/blog/static/1159411201031812128593/ Go语言教程:使用C语言函数: http://cha…
<script> //判断是不是原始值 //判断是数组还是对象 //建立相应的数组或对象 var obj={ name:'辣鸡', sex:'male', card:['laobi','feiwu'], wife:{ name:'智障', son:{ name:'彩笔' } } } var obj1={} function deepClone(Origin,Target){ var Target=Target ||{}, toStr = Object.prototype.toString, a…
半年不迭代,迭代搞半年,说的就是我,这里有点尴尬了,直接进入主题吧 我记得在这篇博客的时候集成了Promise的,不过那个时候就简简单单的写了一点最基础,在一些特殊的case上,还是有点问题的,所以才有了这个博客.在拜读了w3c和PromiseA+规范之后,从头到尾详细的了解了Promise这个东西,然后自己亲手写了一个和es6文档拥有相同功能的库. 什么是promise? promise是一个对象,表示单个异步操作的最终结果. 什么时候使用? 任何一门技术都不是一个“万金油”,只有在它最合适的…
停止编写Javascript框架吧. Javascript框架就好像死亡和税收一样:终究不可避免它的存在.我确信如果我是那面墙上的一只苍蝇,每次有人开始一个新的网页项目时,第一个问题肯定是我们用的是哪个JS框架?这就是当今业内对JS框架的根深蒂固的思维模式.但事实上并不需要如此,相反的,需要停止使用JS框架. 我们来看看我们都有些什么. Angular.Backbone和Ember,哎哟妈呀 很长一段时间内网页平台.技术堆栈对于HTML+CSS+JS最简洁的描述就是灾难(缺少一个更好的解释).谁…
题目: * 随机生成50个数字(整数),每个数字范围是[10,50],统计每个数字出现的次数 * 以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来, * 如果某个数字出现次数为0,则不要打印它.打印时按照数字的升序排列. 要求: * 使用数组的知识完成此功能,不能使用JDK的API函数. 分析: * 需要写一个随机数生成函数 * 需要写一个冒泡排序函数 * 需要写一个二分查找获取数组中某元素个数的函数 代码如下: package Array32; /** * 随机生成50个数…
前言 项目中代码质量,往往需要比较有经验的程序员的审查来保证.但是随着项目越来越大,代码审查会变得越来越复杂,需要耗费越来越多的人力.而且程序员的经验和精力都是有限的,能审查出问题必定有限.而在对代码质量要求越来越严格的当今IT界,这无疑是个矛盾点.幸运的是,不少公司发布了代码扫描工具,来检测代码中存在的问题.尽管它们无法扫描出所有的bug,但仍然能够为我们的工作带来极大的便利.其中FindBugs就是这其中的佼佼者,本文将结合Android Studio来介绍该工具的使用. 一.FindBug…
前言 说起加密方式,其实密码学的角度ASCII编码其实本身就是一种加密解密. 由于其公开,现在用于数字与字符的转换. 查看ASCII表可以去官网查查. 转换代码如下: static void Main(string[] args) { char c = (char)97; Console.WriteLine(c);//a Console.ReadKey(); } 大概就是这样了. 再讲另外一个故事,我们在数据传输过程中为什么要求编码格式一致. 这个问题其实也是一个密码学问题.比如说传输方的编码是…
前言 事情是这样的,作为一个意志力极低的人,最近一直在找寻提高意志力的方法. 然后决定试一试所谓的"建立奖励机制",也就是说,完成一项意志力挑战后给自己一些奖励(具体操作方法不在这里进行赘述). 那么,一款丝滑的"抽奖页面"也就理所当然加入了我的(瞎)待(折)办(腾)事项中. 整个过程还是比较简单的,涉及到的知识也相对基础,作为这个博客的第一篇技术文章,再加上作为一个技术小白,写的相对简单.希望能带个大家些许帮助,如果有建议批评也欢迎大家踊跃反馈. 涉及到的技术栈/…
构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创建时,都需要初始化才可以使用. 注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化.如果在类中自定义了构造函数,那么默认的构造函数就没有了. 一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分.…
程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习<深入理解java虚拟机-JVM高级特性与最佳实践>这本书,终于初步了解了一下java虚拟机的内存模型.本文通过写出使jvm发生内存溢出异常的代码来对自己的学习结果进行总结,同时也提醒自己以后写代码时候不要再跳进这个坑啦. java的内存管理是由java虚拟机自动进行管理的,并不需要程序员过多的手动干预…
1.媒体查询方法在 css 里面这样写 -------------------- @media screen and (min-width: 320px) and (max-width: 480px){在这里写小屏幕设备的样式} @media only screen and (min-width: 321px) and (max-width: 1024px){这里写宽度大于321px小于1024px的样式(一般是平板电脑)} @media only screen and (min-width:…
1 目的 统一规范XCode编辑环境下Objective-C.swift的编码风格和标准 2 适用范围 适用于所有用Objective-C,swift语言开发的项目. 3 编码规范 3.1 文件 项目文件必须使用一个有意义的名字且前缀以PRJ_.例如:XCcode中下拉刷新的项目文件被命名为’PRJ_PullDownRefresh.xcodeproj’. 对于文件的目录要按如下结构创建: 建立Libraries文件夹,所有第三方库放入其中.(CocoaPods代替) 建立Constants.h头…
VS中如何快捷地给自己的代码添加创建信息注释 Intro 以下讨论的都是没有使用 GIT 来管理源代码的情况,如果使用 GIT 管理源代码可直接使用VS的Git扩展就不需要考虑以下问题. 什么是创建信息注释? 创建信息注释,类似于文件的创建信息,一般来说,至少要有创建人和创建时间.如果说有人修改了方法也应该添加一个更新信息注释. 为什么要添加创建信息注释? 可能在一个人编码的时候,创建信息注释并不太重要,但是如果许多人共同维护一个项目,并且经常会出现多个人修改同一个文件的代码 时,这就显得很重要…
为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题. 在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间. 有了ClangFormat插件后,就可以一键把代码格式化成统一的样式,不仅节省了时间,也使得代码更规范.我们还可以定制自己喜欢的样式. 安装ClangFormat插件 可以手动安装(下载GitHub项目编译),也可以用Alcatraz(插件管理器)安装,都很简单,具体可以看我的文章<Xcode方便开发的插件推荐>…
[规范习惯]命名规范1-命名空间 使用<Company>.<Component>2-程序集不必与命名空间同名3-命名空间使用附复数4-避免与FCL的类型重名5-类型名称用名词6-接口名称用形容词,以I做前缀7-派生类命名用基类名做后缀8-泛型参数以T做前缀9-枚举名称用复数,枚举元素用单数10-公开元素命名用PascalCasing法[属性/字段/方法]11-私有元素命名用camelCasing法[变量/参数名/私有字段]12-使用类名作为属性名13-有条件使用前缀(不建议)14-…