钟声

一座城市,会有很多让你记住的事情记住的人。这座城市让我记住了钟声这个名字。有时候在你身边认识了10多年的朋友但是总是像一张纸,一阵风吹过可能就再也不联系,再也失去了音信。但是有些人却偏偏相反,或许因为一份情感,或许是因为一段故事,或许因为他像年轻的你而已。

钟声,这个名字不庸俗,而且透着一些灵气。他是我在北京认识的一个朋友,有青春期的叛逆,有男人勇气,认识他并不是一件可以畅所欲言的事情,因为我觉得最好的东西总是恰到好处,多一点不好,少一点可惜。我和他认识就刚好如此。他的年龄很小,但是有一份超越年龄的勇气,我来叙述一下他的事情,他在高三放弃高考,选择来北京学PHP,成为一名程序员。可能这是初生牛犊不怕虎,想一出做一出,但是反过来看同龄人能有几个说到并去做到,我觉得现在缺少的不是听话的孩子,而是说到就去做的人。我不认为我们的教育有问题,但是我明白我们的教育教育出来的人不适合推倒一件事情,然后重建一件事情。他就是那个能推倒一件事情再重建一件事情的人。

因为这篇文章发布出去后他一定也会看,所以表扬他的话不想多说,因为这个年龄不应该听太多表扬自己的内容,因为那会让你麻痹,让你骄傲,让你止步不前。只有那些最难听的话,最恶心的东西,才是推着你走上你人生最高峰的动力,因为你会从这些里面吸取有营养的内容,然后去构建一个较为完美的人生观。(当然因人而异,稍微笨一些的人可能更多的是需要表扬)

送给钟声的几点建议,也送给看过这篇文章的你,同样也送给我自己。观点不一定正确,还需要自己去思考,去领悟。但是希望可以给你一个从其他角度观察自己的方法。

我在北京的贫民窟

没有去过北京的人可能无法想像,在北京其实有很多的贫民窟,说好听点就是都市村庄,这里或许还没有你所居中的县城环境好,但这里却是千千万万刚来北京手头拮据的人必选的地方。对2016年我也住在北京的贫民窟-分钟寺,这个地方在我离开的时候也已经开始在进行拆迁,我相信这种地方会越来越少,但这并不代表着这座城市的进步。

如果说起城市最脏乱差的地方,很多人脑海里想起的就是这座城市的贫民窟(都市村庄),但这里绝对不是肮脏!这里是这座城市明天最活跃的驱动力也是千千万万抱有梦想人的集聚地。来谈谈我在北京的贫民窟,因为短短的8个月,让我重新认识了一座城市,让我重新找回了自己,让我重新拾起了梦想!

2016年过完年我就来到北京开始了作为程序员的第一份正式工作,因此我就住在了北京的分钟寺里面的诚同成公寓,说是公寓其实就是一个二层的小平房,只因为这里距离上班的鑫源国际大厦很久,只有短短8分钟的路程,所以我就选择了这里。一间只有不到15平方米的小房间外加卫生间,一个月就要950元的房租,还好我是在二层,没有一层那么潮湿,而且也没有太多外卖小哥的打扰,窗外是一片废墟不过能让房间多多少少进来一些阳光。因为房子年久失修墙上的沙子在外面起风的时候沙拉拉的掉,夏天房间闷热的不行,基本上刚冲完的澡不到5分钟就又满身大汗,蒸桑拿也不过如此。还好这里的消费水平低一些,外面临街有北京最便宜的7元一碗的安徽板面,还有便宜但个头和成色都不太好的水果蔬菜,理一次发也只要10元钱。现在想想有时候还挺怀念这里。

这里一层居住的大多数都是外卖小哥,有百度外卖的有饿了么的还有美团的,剩下就是一些刚来北京没多久,手头没有太多积蓄或还没有找到工作的人,给我留下最深印象的里三个住户:

sql 按天分组统计问题 to_char() 函数

最近遇到一个问题,需要统计数据库中每一天的数据新增量,大家都知道可以使用 GROUP BY 对时间字段分组来实现统计每天的新增量的。关键是我我的数据库中时间字段存储的是 2016-12-16 14:21:33 这样的数据,如果直接使用这个时间字段来统计出来的是不准确的。以下原始sql语句:

SELECT pubtime, COUNT(pubtime) AS num
FROM qt_document
WHERE tid = 292
GROUP BY pubtime
ORDER BY pubtime DESC
LIMIT 10

结果看图:
没有优化


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);
}