文章归档

MySQL 5.7 使用原生JSON类型的例子

首先回顾一下JSON的语法规则: 数据在键值对中, 数据由逗号分隔, 花括号保存对象, 方括号保存数组。 按照最简单的形式,可以用下面的JSON表示: {"NAME": "Brett", "email": "brett@xxx.com"} 如何在MySQL中使用JSON类型: 新建user表,设置lastlogininfo列为JSON类型。 mysql> CREATE TABLE user(id INT PRIMARY KEY, name VARCHAR(20) , lastlogininfo JSON); Query OK, 0 rows affected (0.27 sec) 向user表插入普通数据与json数据。mysql会对插入的数据进行JSON格式检查,确保其符合JSON格式,若插的是不合法的数据,会出现Invalid JSON text错误。 mysql> INSERT INTO user VALUES(1 ,"lucy",'{"time":"2015-01-01

文章分类 新品尝鲜, 经验分享

PGP/GPG 信息加密介绍

前言 由于某些项目需求,我们需要对敏感资料进行加密处理。 PGP 指的是啥?它是个软件,Symantec旗下的商业产品。 PGP(Pretty Good Privacy),是一个基于RSA公钥加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。 OpenPGP 是一个加/解密标准 由于加/解密的需求太多了,所以也有一个开源的实现了PGP相同功能的项目叫 GPG(GnuPG),他们都完整实现了 OpenPGP 的标准(RFC 4880)。 我们平时说的PGP可能也指 OpenPGP 这个加/解密标准。 就是这样我们就搞清楚 GPG / PGP / OpenPGP 的关系了,GPG / PGP 都是一个软件集,都是实现了OpenPGP 的标准, GPG是开源项目,而 PGP 就是一个商业软件。 原理及构成 请自行Google……我也懒得搬砖。 主要是通过一组密匙与公匙 处理加/解密;公匙用于加密消息,密匙用于解密消息。 就是说你只需要提供公匙给对方就可以将消息加密,而只有拥有密匙的用户才可以解密消息。 PHP的GPG加密 PHP 有 GnuPG的扩展,可以高效的处理消息的加/解密,不过这个扩展,暂时没有Window下的dll,只能在Linux环境玩。 <?php

文章分类 经验分享

[PHP]一种资源管理权限的方案

前言 整理一下最近研究的一个ACL(访问控制层)的思路。 一般的ACL访问控制层的实现。 我们需要定义一堆的权限规则(rule),然后每个规则,对应1个或数个操作。 具体的规则(rule)还要跟具体的角色(role)绑定。 所以我们被逼需要建立一个存放rule的表,天长日久我们就会有数量可观的rule记录。 这里有两个非常烦人的地方: 规格非常的多,判断都需要加载一堆的rule。 判断非常的耗时,每判断一个规则都需要遍历规则数据。 所以有些人想出了解决方法,经典的例子就是*uix 系统的文件权限系统。 *uix们是怎么干的 他们首先规定了所有的文件有3中操作,读/写/执行, 然后再规定有3种类型的操作情况, 分别是:所有者可操作/所有组可操作/其他人可操作 我们在处理文件上传及创建目录的时候,经常会使用的到的0777 标识其实一个是描述了上面的信息,具体拆成二进制就是: 八进制位 7 7 7 访问类型 所有者 所有组 其他人 二进制位 1 1 1 1 1 1 1 1 1 操作 读 写 执行 读

文章分类 经验分享

Chrome Workspace功能

Chrome Workspace功能是将在Chrome开发者工具(F12)中对文档的修改直接应用于对应文件中。 由于Chrome并不知道当然文档对应用的文件为哪个,所以需要配置Workspace的映射关系来告诉Chrome对哪个文件做修改 使用Workspace条件: Chrome V31+(正式版) 本地服务器开发 1.点击F12工具的设置按钮 2.点击左侧的workspace 3.点击Add folder 4.选择服务器所在的根目录,之后确定会chrome会在上面做出一个提示,点击允许 5.双击下图所示的地方,配置映射关系 6.填写映射关系,视具体情况填写,注意右边的/一定要填写(关键性步骤) 然后点击空白处,完成填写 7.然后回到一个页面中去,试着去更改一个样式数值,验证是否生效 注意      Workspace只对外部引入的CSS样式有效!

文章分类 前端技术, 经验分享

PostgreSQL JSON demo

demo2 server 已经安装上postgreSQL, 帐号: postgres 密码: postgres PHP admin UI略难用,推荐使用客户端。 全平台数据库客户端Navicat 10: P:\_员工文件\sam\software\Navicat 10 3.1的框架已经更新PostgreSQL的DBC驱动。 PgSQL 3.1框架JSON结构实例项目 SVN: http://192.168.33.6/svn/sam/pgsql/3.1 demo: http://demo2.mixmedia.com/pgsql/ 注意: 在本地调试的时候注意激活Pgsql的PHP扩展,去掉php.ini里面的对应的注释: extension=php_pdo_pgsql.dll extension=php_pgsql.dll 使用XAMPP的同学,当启动apache时出现提示找不到 libpq.dll的时候, 在apache的httpd.conf 里面加入这句: LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll" 请改成你的libpq.dll 所在的目录路径!一般是在XAMPP/php 文件夹下。

文章分类 新品尝鲜, 经验分享

[翻译]PostgreSQL的JSON类型可以干啥?

这是一篇翻译,原文地址:http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/ PostgreSQL9.2版本开始引入原生JSON类型的支持,不过官方没有提供更多的支持。 你可以使用以下3种方案使JSON类型的真正能够使用起来: 等待PostgreSQL9.3版本。 使用[plv8]扩展, 通过这个扩展能提供更多的扩展性(你可以自定义自己的函数) 使用[json_enhancements] 扩展,这个扩展是将9.3的JSON函数移植到9.2。 现在我准备开始使用这个新玩意,而我使用的是方案3。我写了另外一篇POST去说明怎样去操作。 adding json_enhancements to PostgreSQL 9.2. 假设你已经在使用9.3或者安装了json_enhancements扩展的9.2版本。 那你现在能干啥呢?答案是:非常多!JSON类型的操作及函数你可以在这里[9.3 documentation]找到。 我准备展示一些有趣的真实场景的例子。 开始: 创建一个数据,执行以语句: createdb json_test psql json_test 填充一些数据: CREATE TABLE books ( id integer, data json ); INSERT INTO books VALUES (1, '{

文章分类 新品尝鲜, 经验分享

一种汉堡动画图标的实现

原因 Google Material Design的设计语言出现,使得越来越多的website使用更多的交互效果, 最近风行的汉堡风格网站里面,跟风出现了一些小的交互效果,例如这种汉堡按钮的交互变化。 这里提供一种可供选择的实现方式。 实例 先看看我们实现的效果如何。 http://demo2.mixmedia.com/html/3/ 鼠标点击汉堡按钮的时候,会触发一个交互的小动画,汉堡按钮会变成叉……其实就是这么简单的交互…… OK,效果看到,现在我们需要想想怎样去实现它,可选方案有 SVG / CSS3 Transform, 我们查一下caniuse 看看两种方案的适用平台情况。 这个是 CSS3 Transform : http://caniuse.com/#feat=css-transitions 这个是 SVG http://caniuse.com/#feat=svg-smil 情况好明显……SVG方案之前已经介绍过了,虽然实现的效果及制作的工具都比 CSS3 Transform要好,不过兼容性没有办法保证。 或许等到IE都灭亡了,我们就可以放心的使用SVG方案了。 OK,现在我们使用 CSS3 Transform 去实现这个效果。 前提条件 查 caniuse 我们得知 CSS3 Transform 也不是全兼容的方案。 至少IE8/9 都是不鸟我们的……所以我们需要一个检测 HTML5 功能的工具,为我们区别对待支持 CSS3 Transform的现代浏览器 及不支持 CSS3 Transform的考古浏览器。 有人会问不支持CSS3 Transform的考古浏览器咋办啊?……还用说,用图啊……直接换背景图…… 这个检测HTML5支持情况的工具,应该部分前端的同事知道的了,就是 modernizr 

文章分类 前端技术, 经验分享

快速创建PS辅助线

PS辅助线不管是做图还是切图是都是必不可少的功能,最近Sam介绍的PS插件(GuideGuide)那功能真是强暴了。可惜我的PhotoShop CC 2014装不上。难道要我换成低版本的PS,我才不干呢。别问我为什么,因为我是版本控,有高版本绝不用低版本。 那怎么办呢,难道为了做“版本控”就要手工拉辅助线,今天切图时发现其实PS CC 2014里也有集成PS快速创建的功能。闲话少说,直接上图。 功能菜单 自动分列辅助线 分行+分列辅助线 这张图的辅助线三步完成

文章分类 前端技术

requirejs编译项目

挡箭牌 PS:首先我不认为编译打包能解决所有的问题,而且打包虽然在某程度上+快了页面的加载速度,但是同时也为打包部署及版本控制,带来的一定的问题,这个需要一整套打包发布框架去处理的,但是但是……引入一整套打包发布系统,是非常增加系统复杂度……甚至变成杀鸡用牛刀的……完全脱离了我们做事情的出发点了……所以我们需要从实际使用的出发去审视这套方案,有需要的时候就用,非迫切需要的时候慎用。 高手们请直接无视这篇文章直接到官网上看说明,猛戳这里。 前戏 我们有部分项目使用 RequireJS 作为js包管理框架,在实际使用中有些小瑕疵(加载速度/重复刷新访问拒绝)。就研究了一下RequireJS 项目的打包方式,分享一下一些打包的经验。 RequireJS 做包管理有什么好处我就不再详细描述了,主要都是一种开发规范而已,用来规范Javascript这种自由奔放的开发语言的,以免项目的Javascript的代码野蛮生长到无法收拾的地步。 正文 整套示例代码可以checkout SVN: http://192.168.33.2/svn/sam/rjs 项目里面已经内嵌了nodejs, 需要修改 build/app.build.js  配置文件,分别执行 build/trace.cmd & build/build.cmd ,就可以将整个项目的包,打包到一个js文件里面[ js/build/main.js ]。其中 build/r.js 是的RequireJS 官方的打包脚本。 页面嵌入js的对比: 打包前的js引入方式[ dev/index.html ]: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>开发/测试环境页面</title> <script type="text/javascript" src="../js/lib/jquery/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="../js/lib/require/require-2.1.6.js"></script> </head> <body> <script

文章分类 前端技术, 经验分享

Mobile Web远程调试神器 — Weinre

前端调试的困境 公司做前端的同学,一提起需要调试Mobile页面就开始头痛。由于手机的沙箱机制,使得需要调试mobile端的页面困难重重,有时候只得不断地在alert数据用来验证,css调试更加是通过猜测来调试……如果有个在mobile上的浏览器提供一个firebug就好了。(其实firebug lite真的有个online的版本,可以直接嵌入到页面中,不过mobile的屏幕这么小,很难去操作啊……) 现有的方案 OK,其实现在也是有几套方案去调试Mobile的页面的。由于平台的限制,所以我们分开了2套。 Android平台: Android 4.0以上的机型,可以通过安装Chrome for Android 然后通过Chrome for Desktop的一个ADB plugin去实现在桌面上调试Mobile web。 IOS 平台: 不得不说Apple是挺人性化的,IOS默认的safari支持直接在desktop的safari上调试,不过前提是你需要有一整套Apple的设备(虽然我公司有……)。 神器出现 Weinre 在使用 Weinre 之前,我们先了解一下 Weinre 的基本概念。Weinre 的全称是 Web Inspector Remote(远程 Web 调试工具),功能和 Firebug、Webkit Inspector 类似,可以帮助我们在 PC 端远程调试运行在移动设备浏览器内的 Web 页面或应用,能够即时调试 DOM 元素、 CSS 样式

文章分类 前端技术, 经验分享