最新 | 最热门 | 最高评价

+0  真假百度蜘蛛的甄别

Tag: Technical | Linux
老王 发于 2017年01月19日 12:16 | 点击: 240 | 展开摘要
虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 User-Agent 把自己伪装成百度蜘蛛,此时如果单纯以 User-Agent 来判断是否是百度蜘蛛就不合适了。虽然网上能找到很多现成的百度蜘蛛 IP 段,但是并不能确认它们的准确性,所以我打算自己收集,进而甄别真假百度蜘蛛。

实际上百度在常见问题解答中给出了甄别的方法:当有 User-Agent 是 Bai

查看全文: http://www.udpwork.com/item/16065.html

+0  Laravel专供:实现Schemaless

Tag: Technical | PHP
老王 发于 2017年01月14日 17:11 | 点击: 327 | 展开摘要
之所以要实现 Schemaless,主要是因为在线 DDL 有很多痛点,关于这一点,我在以前已经写过文章,没看过的不妨看看「史上最LOW的在线DDL解决方案」,不过那篇文章主要以介绍为主,并没有涉及具体的实现,所以我写了一个 Laravel 的例子。

首先创建测试用的 users 表,并且添加虚拟字段 name、address、level:

mysql> CREATE TABLE users (
id INT UNSIGNED NOT NULL

查看全文: http://www.udpwork.com/item/16061.html

+0  自动打Tag杂记

Tag: Technical | Python
老王 发于 2017年01月07日 18:00 | 点击: 443 | 展开摘要
给一段文字标记 Tag 是一个很常见的需求,比如我每篇博客下面都有对应的 Tag,不过一般说来,Tag 是数据录入者人为手动添加的,但是对大量用户产生的数据而言,我们不能指望他们能够主动添加合适的 Tag,于是乎就产生了这样的需求:自动打 Tag。

实际上这已经属于 NLP 高大上的范畴了,不是我这种非科班出身的人所能掌控的。好消息是百度和腾讯都有 NLP 平台可供选择,坏消息是免费版的 API 配额极其有限。如果不差钱的话,直接选择 NLP 平台无疑是最方便的,不过对我来

查看全文: http://www.udpwork.com/item/16053.html

+0  SQL里是否可以使用JOIN

Tag: Technical | SQL
老王 发于 2016年12月18日 17:34 | 点击: 547 | 展开摘要
很多公司都禁止程序员在 SQL 中使用 JOIN,至于原因则出奇的一致:用 JOIN 慢。不过我从没见过谁来论证为什么用 JOIN 慢,结果这个人云亦云的结论越传越广,让我觉得是时候来讨论一下这个看似正确的结论了。

举个例子:查询最新的十篇帖子和对应的用户信息,用 JOIN 是这样的:

SELECT posts.id, posts.content, users.name, ...
FROM posts
JOIN users on posts.user_id = users

查看全文: http://www.udpwork.com/item/16007.html

+0  手把手教你用Dropwatch诊断问题

Tag: Technical | Linux
老王 发于 2016年12月15日 18:25 | 点击: 410 | 展开摘要
老实说,Dropwatch 并不是什么新鲜玩意,很多年前霸爷就专门撰文介绍过它,通过它可以大概找出系统为什么会丢包,其原理就是跟踪 kfree_skb 的调用行为。不过虽然很多人知道它的存在,但是却并不知道如何具体使用它,所以我写下了这篇文字。

以 CentOS 为例,动手前需要了解系统的版本,并确保已经安装了对应的包:

shell> uname -r
2.6.32-431.23.3.el6.x86_64

shell> rpm -qa | grep kern

查看全文: http://www.udpwork.com/item/16004.html

+0  如何正确设置CRON定时任务

Tag: Technical | Linux
老王 发于 2016年12月12日 18:29 | 点击: 455 | 展开摘要
相信很多人看了标题后都会纳闷:设置 CRON 定时任务有什么难的?不过请相信我,正确设置 CRON 真的不是一件简单的事情!各位看官不妨听我慢慢道来。

关于 CRON,出镜率最高的一个问题莫过于:为什么手动执行一切正常,放到 CRON 里就不执行呢?实际上此类问题多半是因为环境变量导致的,答案就在配置文件里:

shell> cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAIL

查看全文: http://www.udpwork.com/item/16001.html

+0  谈谈PHP的Reload操作

Tag: Technical | PHP
老王 发于 2016年12月11日 19:00 | 点击: 509 | 展开摘要
通常修改了 PHP 的配置后,为了让修改生效会执行 reload,而不是 restart,因为有很多前辈告诫过我们,reload 能保证整个过程的平滑性,所谓平滑性指的是在 reload 的过程中,旧的进程在处理完当前请求前不会提前终止。很多年来,我一直坚信这个结论,直到有一天,当我 reload 的时候,出现了 502 错误,让我不得不重新思考。

如何重现问题呢?让我们写一个简单的脚本来模拟:

<?php

sleep(11);
echo "foo";

?>

查看全文: http://www.udpwork.com/item/15998.html

+0  实战ElasticStack

Tag: Technical | Elastic
老王 发于 2016年12月11日 15:22 | 点击: 474 | 展开摘要
我对 ElasticStack 可以说是既熟悉又陌生,说熟悉是因为很久以前就已经开始使用 ELK 来分析日志了,说陌生是因为以前的 ELK 环境都是同事搭建的,我主要是看看 Kibana 面板而已。随着 V5 的发布,ELK 全面进化为 ElasticStack,该自己动手了。

实际操作前最好大致浏览一下官方文档,以便对 ElasticStack 各个组件的作用有一个基本概念,如果看完文档还没搞清楚,那么至少要看明白下面这张图:

ElasticStack

整个流程相当简

查看全文: http://www.udpwork.com/item/15997.html

+0  手把手教你用Sar诊断问题

Tag: Technical | Linux
老王 发于 2016年12月02日 15:18 | 点击: 400 | 展开摘要
如今各种高大上的监控工具早已经让人目不暇接了,但是熟悉基础的 Linux 监控命令依然是必要的,就好比 IDE 再好用,我们也得学会 vi 或者 emacs 才行。如果让我选一个必须学会的 Linux 监控命令的话,那么我想我一定会选 sar,没有之一。

监控命令 sar 隶属于 sysstat 包,监控的内容可以说是无所不包,常见的有:

sar -q:查看 Load

sar -u:查看 CPU

sar -r:查看 Memory

sar -b:查看 IO

除了这些

查看全文: http://www.udpwork.com/item/15956.html

+0  史上最LOW的在线DDL解决方案

Tag: Technical | MySQL | PostgreSQL
老王 发于 2016年11月23日 18:31 | 点击: 231 | 展开摘要
说起在线 DDL,最常见的操作莫过于在线加一个字段或者索引,不过如果数据量比较大的话,伴随而来的往往是长时间的等待,更要命的是系统在操作期间很可能会出现不可用的情况,所以一般只能等到凌晨操作,简直就是梦魇一般的存在。

在 PostgreSQL 中,如果注意使用方法,那么在线 DDL 并不是一个太难的事情。这里面说注意使用方法,指的是 PostgreSQL 跟其它一些数据库一样,在加字段或者索引的时候会锁住表,不过有一些技巧可以绕开此限制:

加字段:使用 ALTER TAB

查看全文: http://www.udpwork.com/item/15957.html

+0  一个PHP实现的ID生成器

Tag: Technical | PHP
老王 发于 2016年11月03日 20:03 | 点击: 118 | 展开摘要
通常来说,不管使用什么数据库,表里都有一个名为 id 的主键,既然是主键,那么必然要满足唯一性,对于 MySQL 用户来说,它多半是一个 auto_increment 自增字段,也有一些别的用户喜欢使用 UUID 做主键,不过对 MySQL(特别是 InnoDB)来说,UUID 通常不是一个好选择,因为聚簇索引要求物理数据按照主键排序,而 UUID 本身是无序的,所以会带来很多不必要的 IO 消耗。于是乎我们得到一个结论:ID 最好是顺序的唯一值。

如此说来,就用 MySQ

查看全文: http://www.udpwork.com/item/15958.html

+0  实战Pinba

Tag: Technical | PHP
老王 发于 2016年10月26日 16:33 | 点击: 109 | 展开摘要
谁都知道监控系统很重要,但是要自己搭建一套好用的系统却不是一件简单的事情。国内已经有不少厂商提供类似的服务,比如:OneAPM、听云,其原理就是通过在服务器上部署一套探针,把数据汇总上报,但是问题却不像说起来这么简单,我曾经买过国内某个厂商高大上的 APM 服务,谁知道它监控的指标太多了,并且无法自定义,结果导致一上线,系统性能就下降百分之二十,最后无奈只好放弃。

我想要的是一种对系统性能影响尽可能小的监控系统,它不需要监控太多指标,只要有 RPS、CPU、内存、响应时间等

查看全文: http://www.udpwork.com/item/15959.html
|<<<1234567>>>| 一共11页, 129条记录