有一种图片形式是“data:image/jpeg;base64,…==”

昨天用到一个前端裁剪插件,在jq22上花了六个币下的,裁剪之后的数据是:

"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQ…=="这种形式的。

看起来是个二进制流的图片,毕竟data:image/jpeg了,但是直接把这一串传给后端写入”*.jpg”的文件之后无法打开,说明这串数据并不是二进制流的图片,但是转了base64之后还是不能用,那怎么处理呢?

后来在网上搜base64转图片到了一篇博客,文中整理了一个函数用来处理这块,现在稍作修改,粘在这里留个备份,以便将来查阅

[……]

继续阅读

git配置路上的那些坑

之前用svn,工作原因现在用上了git,但是公司用的电脑是上一位全都弄好了的,直接就用了。但是因为女朋友毕设原因就想自己试试,于是信心满满地踩了一路坑。本次安装以廖雪峰老师的教程为主,多的不再赘述,主要说说因为各种原因踩到的坑还有解决的方向。建议大家按照廖老师的教程一路过来,慢慢看,慢慢试。

廖雪峰老师博客——git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1、安装git

根据廖老师的教程,推荐大家下载msysgit,这个软件主要是命令行的,有的朋[……]

继续阅读

PHP开发Api心得小结

前两天老板给了个活,大概需求就是商机之前是通过人工去导入的excel,现在写个接口,让客户给传商机数据进来,我们检验一下然后存起来,但是客户公司比较大(相对于我们公司。。),要求的比较严,所以老板的要求是要写的bigger高一点。

我的思路:

  1. 签名(安全性)
    (用户唯一的标识码+时间戳+数据条数)的两次md5加密
  2. 错误代码配合文档(专业,而且数字不涉及编码问题)
    根据不同的错误类型区分错误代码
  3. 异常处理(装(哔——))
    所有本来能用if-else判断返回错误代码的地方统统用了抛出异常,说实话除了bigger高之外我并不知道优点是什么,而且异常处理会拖慢处理速度
  4. 用s[……]

    继续阅读

PHP的常见ORM特性初探

最近在跟着岁寒兄的博客尝试造个简单的轮子。由于平时也读不进去框架源码,所以顺便也算是第一次深入底层了解框架的原理。

写到了M层的ORM这一块,没有找到一个中文的系统的说明常见ORM特性的帖子,所以准备整理下来,侧重点是Mysql和MariaDB,边学边记,给自己留一份底,也希望能给后来者一些帮助

Doctrine ORM

信仰?难道是个帕拉丁?

Medoo

Eloquent ORM

(Laravel家的)

ADOdb Active Record

Axon ORM

Flourish

Idiorm

NotORM

P[……]

继续阅读

关于对基于PHP的Web程序搜索之后的结果集进行排序方法的尝试与思考(记一次闲的蛋疼的脑洞)

公司的项目中碰到了一个需求,就是在一个能对IP/PV排序的列表页添加一个搜索功能。
本身搜索功能不难加,排序功能也不难写。按我的习惯,对搜索之后的结果集进行排序无非就是在点击排序之后触发Ajax把条件带给后台,然后程序根据搜索条件进行查询。
然后我分析了一下后台方法里的代码逻辑,做了这么一张图:

想了想,哇,这么麻烦的吗?这得多少层的if判断啊。。
然后就开始想这个问题,这样一直要各种判断,然后感觉很麻烦,想了想不如一次查询或搜索,然后在数据传到前台之后,在js中进行点击排序。
使用js排序的话有个好处,就是只需要一次加载,所有的操作都在浏览器(相当于客户端)完成,不太会受网速的影响。
而在[……]

继续阅读

聊聊MV+

为了让自己更深入的理解框架,最近自己的着手开发一个框架,卡在了设计模式这块,于是进行了资料的搜集、分析和整理。
作为一个PHPer,最先接触到的也是唯一接触到的MV+的逻辑架构就是MVC

MVC

以下内容来自某百科

  • 定义:

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图[……]

    继续阅读

从存储过程说起,浅析业务逻辑写在数据库中还是应用程序中

今天在项目的代码中发现了一个语句:

BEGIN PROC_CREATE_USERRECORD(:userid, :menu, :detail, :login_ip); END;

ORACLE数据库,之前没有接触过,看到这段代码之后感觉不明觉厉,问了下同事,原来是存储过程,所以查了查存储过程。

啥是存储过程
谷歌说,数据库的存储过程,本质上是一个可编程的函数,他在数据库中创建并保存。
普通的SQL语句是先编译再执行的,而存储过程是数据库编译好之后储存在数据库中的,所以会比一些SQL语句执行效率更快。

然后在@刘水镜 的BLOG中看到了触发器的概念,然后就稍微地了解了下触发器。

触发[……]

继续阅读