月度归档:2018年07月

Nginx-1.14.0源码编译安装之博客升级系列笔记二

直接开始安装步骤(共9步)

0、准备软件安装包(包含Nginx源代码、文档、脚本,叫安装包比较合适)
Nginx官网下载页面下载Nginx最新的stable version安装包,建议不要下载开发版(mainline version)和过期版(legacy versions)。

cd /home
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz

OpenSSL官网下载页面下载OpenSSL最新的 stable version源码包

cd /home
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -zxvf openssl-1.1.0e.tar.gz

继续阅读

编译安装最新稳定版LNMP之博客升级系列笔记

博客升级了配置,主要涉及到LNMP源码编译安装,用的都是目前最新的稳定版,用一个系列记录下来。

各组件的版本如下:
CentOS-7.4 + Nginx-1.14.0 + MySQL-8.0.11 + PHP-7.2.8

计划用接下来四篇文章依次描述:

一、Nginx-1.14.0源码编译安装

二、MySQL-8.0.11源码编译安装

三、PHP-7.2.8源码编译安装

四、Nginx + PHP-FPM配置

Shadowsocks搭建VPN笔记

类似搭建VPN的教程网上很多,其实特别不愿意记录一些重复的东西在互联网上。之前收藏的一篇相关的教程,很好用,过去的两年几次搭建VPN都是参考的这个,今天打开404了,然后又搜索了一番才搞定,特意记录下来。

一、服务端安装配置shadowsocks
0、下载执行安装脚本。登陆到自己的VPS或者云服务器上分别执行下面3条命令

wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh

chmod +x shadowsocks.sh

./shadowsocks.sh 2>&1 | tee shadowsocks.log

继续阅读

PHP后期静态绑定实例、类常量、类静态属性区别笔记

最近在项目中看到一个”后期静态绑定”的用法,之前没有了解过,顺便测试了类常量和静态属性,补补课,特意记录下实例。

根据PHP手册”后期静态绑定“的介绍,一句话总结:在继承范围内,使用预留的关键字static表示程序运行时最初调用的类C,通过static::来访问类C中的常量、静态属性、静态方法(php version >= 5.3)。

不使用后期静态绑定

在演示实例前,我们先看一个不用”后期静态绑定”的例子(本例原型来自PHP手册用户笔记):
继续阅读

Redis Hash类型的坑之单个key中field过多

对投票数据统计的时候发现了Redis Hash类型的一个大坑,单个key中field过多,导致取不出来。特记录下尝试解决和探索的过程。

第一阶段:问题描述

一个投票类的产品,对单个选项mid投票成功后,记录了总票数,还记录了用户投票日志(可以理解成投票明细),用的都是Redis Hash类型来存储。投票日志的存储格式如下:

$redis->hset('vote_log', 'uid|mid|timestamp', 1);

最近,运营需要统计固定时间段每个选项投票的用户数,要的比较急,就很快写了一个脚本
算法:
继续阅读

关于矮大紧指北

从“晓说”,到“晓松奇谈”,再到“矮大紧指北”;从大四,到工作两年,再到工作五年。从在北京没有窗户的隔断到带阳台和卫生间的卧室。

每个周六不听听高老师的声音,似乎都觉得生活缺少了点什么。而“矮大紧指北”的出现,似乎每天都有意无意的听到高老师的声音。

结束了一天的工作,夜幕下,骑着自行车,周围车水马龙,耳机里习惯性的想起高老师的指北,差不多听完的时候也就到家了,那种幸福,简直是一天的发光时刻。
继续阅读

Nginx下wordpress伪静态的两种配置方式

好久没有关心博客了,今天发现用的还是这种带问号的地址(http://niliu.me/?p=200)。之前也就是知道这种地址对SEO不友好,今天查了一些资料对比了下,所谓的不友好是指搜索引擎会对这种网址降权,因为这种地址参数变(参数可以随便加),而内容不变。

我们当然希望我们的文章可以被更多的人通过搜索引擎查询到,那就需要重写这个地址,一般使用WEB服务器提供的rewrite模块就可以了(比如Nginx的ngx_http_rewrite_module),通过修改配置文件,增加规则,重新映射地址, Nginx的rewrite语法如下:

继续阅读

Redis sorted sets score线性变换对性能没有影响

上篇文章《用户互动数据排序中数据归一化的必要性探讨》的结尾提到归一化后的数据存储到Redis sorted sets中是否对数据读写有影响,查了相关资料,推导的结论是没有影响。

这里简化描述问题,用Redis实现投票排行榜TOP3,Option1票数100,Option2票数100000,Option3票数10000000

zadd vote_rank 100 'Option1' 100000 'Option2' 10000000 'Option3'

对数据min-max归一化处理后得到数据分别是0, 0.0099901, 1

继续阅读

用户互动数据排序中数据归一化的必要性探讨

最近在工作中看到了基于用户互动数据排序的两种实现思路,一种是“分权加和”,直接根据权重来计算数值,另一种在第一种的基础上对数据做了归一化处理。当然两种方式都是没问题的,毕竟都经过线上的验证。

做了归一化处理,看似更科学、更严谨,既然不做也可以,那么归一化处理到底有没有好处,是不是有必要呢?

下面首先具体展开描述下两种方式,给有需要的读者一个参考。

继续阅读