chrome json格式化展示插件

现在面向API开发是越来越多,其中API数据交互使用JSON格式的也成为主流,在开发过程中因为JSON格式用肉眼直接判别是有些许难度的,尤其是大段大段的JSON代码,会让你找的头晕目眩。

之前我都是复制这段JSON代码,粘贴到 http://json.cn/ 这个网站上帮我格式化,大大的提高了阅读JSON代码的效率。但是由于每一次都需要在这个网站上翻译,难免有时候网络问题,或者没有网络的时候,只能眼巴巴的用记事本一点点分拆。

后来找到一款还不错的chrome插件,可以解决这个问题,这款插件在发现该页面是JSON格式的时候,会自动格式化这段JSON代码,便于我们阅读。

插件的名字是:JSONView
如果你可以访问Chrome应用商店,那就打开这个链接下载吧:Chrome应用商店
如果因为众所周知的原因访问不了,那就点击这里下载我备份的:下载地址

使用前后对比图
使用前




PHP获取客户端IP的方法

PHP获取客户端IP的方式有很多,我这里提取了几大CMS程序获取IP的方法,然后总结整理,得到下面这个获取客户端IP地址的PHP函数,你可以直接把这个函数复制的你的项目中,在需要的地方直接调用就好了,也可以把这两个函数封装到自己的工具类里面,不过需要稍加修改。

这个获取的IP的真实性还是有一些问题的,比如如果用户使用了梯子,那么这个可能获取到的IP就是梯子的IP,而不是用户电脑的真实IP,不过对于大多啥情况下获取的IP地址是真实的,所有大可放心拿去在项目中使用。

如果你有更好的获取客户端真实IP的方法,希望你在下面的留言中分享出来,让我也见识见识真正的行家!

以下就是两个函数的代码:

/**
 * 获取用户IP
 * @return string
 */
function getIp()
{
    $ip = '未知IP';
    if(!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        return is_ip($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : $ip;
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        return is_ip($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $ip;
    }
    else
    {
        return is_ip($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $ip;
    }
}


/**
 * 判断是否是IP地址
 * @param $str
 * @return bool|int
 */
function is_ip($str)
{
    $ip = explode('.', $str);
    for($i=0; $i<count($ip); $i++)
    {
        if($ip[$i]>255)
        {
            return false;
        }
    }
    return preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $str);
}

ThinkPHP3.2.3 递归无限分类

因为递归的效率相对来说比较低,所以很少使用,尤其是在查询数据库的时候对数据库的长时间占用很不合理。

但是递归遍历无限分类列表还是相当重要的,而且还可以对数据进行格式化处理,如果嫌弃效率问题,本人给你一个好建议就是缓存。比如当用户登录的时候判断完用户的权限后获取用户可以操作的菜单,然后递归格式化菜单分类列表,然后缓存起来,这样用户之后的操作都不会涉及到递归获取菜单,效率可以大大提升。

以下是在ThinkPHP3.2.3中使用递归遍历菜单的方法:
1.在项目的Common目录中的function.php中添加以下函数:

/**
 *
 * @param array $data 结果集
 * @param int $fid 父类ID
 * @param array $result 结果数据
 * @param int $deep 分类级数
 * @return array
 */
function getList($data, $fid = 0, &$result = array(), $deep = 0)
{
    $deep += 1;
    foreach($data as $key => $val)
    {
        if($fid == $val['fid'])
        {
            $result[$key]['id'] = $val['id'];
            $result[$key]['name'] = "|".str_repeat("--", $deep).$val['name'];
            $result[$key]['fid'] = $val['fid'];
            $this->getList($data, $val['id'], $result, $deep);
        }
    }
    return $result;
}


Nginx配置if巧妙多条件

在Nginx的网站配置文件里面可以使用if(){}来添加判断,但是一开始我理解成了和PHP一样的语法,所以我写了如下规则:

if ( $ssl_protocol = "" && $host = keinx.com ) { return 301 https://$host$request_uri; }

但是当我重启Nginx的时候提示配置文件错误,错误的位置在"&&",后来在网上查询得到原来Nginx的配置只支持一次判断和PHP中的不一样,于是我就写了下面这种规则,就可以满足多重判断了。

set $flg a;
if ( $ssl_protocol = "" ) { set $flg "${flg}b"; }
if ( $host = keinx.com ) { set $flg "${flg}c"; }
if ( $flg = "abc" ) { return 301 https://$host$request_uri; }

然后重新启动Nginx发现没有问题了,在测试一下缺失OK,如果你遇到这样的问题,可以使用这种方法加多重判断,如果你有更好的方法请留言告诉我,谢谢!

五支牙膏,我在北京的长度

叙:
将这篇文章写在离开北京前,献给我一年的青春,献给在这里认识的所有人,献给还在北京为梦想奋斗的人,献给四季的光阴。从15年9月6日到北京算起已有一年多的时间,我仔细回忆了下,这段时间里我一共用过了五支牙膏。这或许就是天注定我在北京的长度。

一.野心驱使来北京

来北京前我在郑州从事过机房管理、无盘网络技术维护、打印机维修、上门电脑维修等和计算机沾点边的工作,但都因为不合口味每一次都干不了多久便离职了,也被别人看作是不踏实的表现(包括我女朋友),后来在一部书里面看到这其实是很多年轻人的通病,属于职业选择期的正常表现(或许是自己给自己的安慰吧)。每一次换工作都计划的很好,如何如何干,从什么起步干到什么程度,基本上就是一个每三个月的人生计划。但是后来都放弃了。至于为什么放弃,无非太苦太累、没前途、没意思。唯一能让我保持劲头的是路一直都是自己选择的。

时间很快,熬过了“各式各样”的工作,熬过了考驾照,到最后没有什么可以拿出来熬的时候自己心慌了,又像之前那样开始计划着又一次的选路, 不踏实的本质又开始了。其实当时选择了很多,有一些我自己都不好意思说出来,就是那种孩子般的天方夜谭,后来选择了学PHP,成为一名程序员,其实这个职业很早就有考虑过,但是被英语吓得不敢入门罢了。

野心是有的,开公司融资上市,哪个创业者没有做过这样的梦,但是说给别人听可以,自己还是装的沉稳一点吧。同样是抱着这种野心我选择了来北京,自然先是学PHP这门最简单的手艺了。“学习是最幸福的”这句话我现在深有体会。而且编程是可以很轻松让你获得成就感的事情,如果我将来的孩子是个男孩,我会从小教他敲代码。

孤身一人背个书包,拉个行李箱,里面还塞满了之前买来的编程书籍,这就是我来北京时的样子,不管生活条件多差,未来的幸福就在自己指尖下的键盘上。