json对象的遍历

在写内容管理框架时,需要实现根据当前路由 url 自动对导航栏特定项目予以高亮。由于,原有 cmf 是使用 json 结合 laytpl 模版引擎生成导航栏。

这个过程中需要使用到 json 对象遍历,下面简单学习下对如何对json数据遍历。
这里主要使用到 for ( var d in data ) 语句,对于复杂结构的 json 数据比较好用。


- 阅读剩余部分 -

JSONPath的使用

某些情况下,我们需要查询json对象特定属性值下的结果,通过JSONPath可以很方便我们查询。

关于 JsonPath 的介绍,http://goessner.net/articles/JsonPath/JsonPath 对于 JSON 来说相当于 XPATH 对于 XML 。这是一个简单的从文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Java, PythonPHP 等。

这里我要演示的是 javascript 实现版本,使用的 jsonpath 类库来自 GitHubjQuery-JSONPath ,注意该类库依赖于 jQuery

- 阅读剩余部分 -

GHOST CVE-2015-0235漏洞及紧急修复方法

关于该漏洞

安全研究人员近日曝出一个名为幽灵(GHOST)的严重安全漏洞,这个漏洞可以允许攻击者远程获取操作系统的最高控制权限,影响市面上大量Linux操作系统及其发行版。该漏洞CVE编号为CVE-2015-0235。

什么是glibc

glibcGNU 发布的 libc 库,即c运行库。glibclinux 系统中最底层的api,几乎其它任何运行库都会依赖于glibcglibc 除了封装 linux 操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。glibc 囊括了几乎所有的 UNIX 通行的标准。

漏洞概述

代码审计公司 Qualys 的研究人员在 glibc 库中的 __nss_hostname_digits_dots() 函数中发现了一个缓冲区溢出的漏洞,这个 bug 可以经过 gethostbyname*() 函数被本地或者远程的触发。

应用程序主要使用 gethostbyname*() 函数发起 DNS 请求,这个函数会将主机名称转换为ip地址。

影响范围

该漏洞影响 glibc 库版本 2.2-2.17 的 Linux操作系统

操作系统类型包括 CentOS 6 & 7Debian 7Red Hat Enterprise Linux 6 & 7Ubuntu 10.04 & 12.04Linux 发行版。

- 阅读剩余部分 -

判断Laravel Eloquent获取数据结果集是否为空

在使用 Laravel Eloquent 模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用 is_nullempty 是无法判段它结果集是否为空的。

var_dump 之后我们很容易发现,即使取到的空结果集, Eloquent 仍然会返回 Illuminate\Database\Eloquent\Collection 对象实例。
其实,Eloquent 已经给我们封装几个判断方法。

$result = Model::where(...)->get();
//不为空则
if ($result->first()) { } 
if (!$result->isEmpty()) { }
if ($result->count()) { }

参考网站:http://stackoverflow.com/questions/20563166/eloquent-collection-counting-and-detect-empty

更改cmd代码页,修正中文显示

最近在使用 Laravel 单元测试 phpunit ,发现在命令行下,打印某些网页字符串会显示乱码,经搜索后,知晓这是因为命令行代码页与网页编码不一致造成的。

Windows 简体中文系统,默认命令行代码页为936(简体中文),而网页编码一般为UTF-8(65001)。
可以尝试在命令行下输入以下命令,切换代码页:

rem utf-8
chcp 65001

如需切换回简体中文,请输入

rem 简体中文
chcp 936

- 阅读剩余部分 -