最新 | 最热门 | 最高评价

+0  谈谈推荐排序

Tag: Technical
老王 发于 2017年04月25日 16:37 | 点击: 320 | 展开摘要
本文说的排序并不是指「冒泡」之类的技术概念,而是一个业务相关的问题。

举例来说:某个网站,每天都能产生很多数据,需要一个推荐列表页面来展示数据。最初是完全按照时间倒序来排序的,但是这样就产生了一个问题:新鲜的数据不一定是有价值的数据!假设某个时段灌水的数据比较多,那么用户当时在列表页看到的就都是灌水的内容。既然如此,不妨换个思路:给每个数据投票,投票规则可以按业务逻辑自定义,比如:每次评论加一票,每次转发加两票等等。然后按照投票数来倒序是不是就可以了?可惜还有问题:有价值的

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

+0  买不起Alfred和Dash怎么办

Tag: Technical
老王 发于 2017年03月02日 19:37 | 点击: 398 | 展开摘要
对于码畜而言,如果使用 Mac 笔记本的话,那么 Alfred 和 Dash 基本属于必装软件,其中 Alfred 可以免费使用,但是高级的 Powerpack 功能需要付费,而 Dash 则更进一步,不仅要付费购买,连后续升级也要花钱。这点钱对于富人来说或许不算什么,但对我这种工薪阶层来说就不一样了,能省就省,于是我折腾了一个不花钱的替换方案。

说到这里,不得不提到 DevDocs,它集成了很多 API 文档,完全可以替换 Dash。打开系统缺省的浏览器,激活需要的文档,

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

+0  如何抓取汽车之家的车型库

Tag: Technical | Python
老王 发于 2017年02月01日 19:44 | 点击: 560 | 展开摘要
实际上,关于「如何抓取汽车之家的车型库」,我已经在「使用 Mitmproxy 分析接口」一文中给出了方法,不过那篇文章里讲的是利用 API 接口来抓取数据,一般来说,因为接口不会频繁改动,相对 WEB 页面而言更稳定,所以通常这是数据抓取的最佳选择,不过利用 API 接口来抓取数据有一些缺点,比如有的数据没有 API 接口,亦可能虽然有 API 接口,但是数据使用了加密格式,此时只能通过 WEB 页面来抓取数据。

既然要通过 WEB 页面来抓取数据,那么就不得不提到 Scr

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

+0  使用Mitmproxy分析接口

Tag: Technical
老王 发于 2017年01月22日 16:06 | 点击: 593 | 展开摘要
对于服务端开发者来说,通过抓包分析接口是必备技能之一,常见工具有 Charles 和 Fiddler 等等,不过 Charles 是收费的,Fiddler 虽然是免费的,但是其 Mac 版还不稳定,本文使用另一个工具:Mitmproxy。

Mitmproxy 的安装没什么好说的,按照官方文档来就行了,不过需要注意的是,为了能够抓取 Https 请求,还需要安装证书:首先启动 Mitmproxy,然后在手机 WIFI 里设置好代理,最后在手机里浏览 mitm.it 域名,按照

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

+0  真假百度蜘蛛的甄别

Tag: Technical | Linux
老王 发于 2017年01月19日 12:16 | 点击: 684 | 展开摘要
虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 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 | 点击: 533 | 展开摘要
之所以要实现 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 | 点击: 579 | 展开摘要
给一段文字标记 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 | 点击: 645 | 展开摘要
很多公司都禁止程序员在 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 | 点击: 597 | 展开摘要
老实说,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 | 点击: 668 | 展开摘要
相信很多人看了标题后都会纳闷:设置 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 | 点击: 608 | 展开摘要
通常修改了 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 | 点击: 780 | 展开摘要
我对 ElasticStack 可以说是既熟悉又陌生,说熟悉是因为很久以前就已经开始使用 ELK 来分析日志了,说陌生是因为以前的 ELK 环境都是同事搭建的,我主要是看看 Kibana 面板而已。随着 V5 的发布,ELK 全面进化为 ElasticStack,该自己动手了。

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

ElasticStack

整个流程相当简

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