0%

一个基本的搜索引擎的工作,基本上可以分成以下三个部分:

  1. 利用网络爬虫下载网页,分析网页关键词,制成索引备用;
  2. 理解用户输入,确定检索关键词;
  3. 根据关键词和网页索引,按照相关性排序列出搜索结果。

第一个部分主要涉及网络爬虫技术、图论、自然语言处理等技术;第二个部分主要涉及自然语言处理;第三个部分同样涉及自然语言处理。

自然语言,即是人类用来交流的语言。

由此可见,自然语言处理(NLP, Natural Language Processing)是现代搜索引擎很重要的内容,其终极目的是将自然语言转化为计算机容易处理的形式。

阅读全文 »

使用 QQ 这么多年,管理的群越来越多。现在每天被入群申请搞得烦不胜烦,于是萌生了写一个 QQ 机器人的想法。

要想实现一个 QQ 机器人,首先是要在程序里模拟登录。经过整理,可用的思路有两个:

  • 使用 WebQQ 的方式登录,模拟浏览器的行为;
  • 使用 Android QQ 的方式登录,模拟 Android 客户端的行为。

二者各有利弊。使用 WebQQ 方式登录协议相对简单,网络上也有相关分析;但是 WebQQ 不能与电脑上的 QQ 共存:登录 WebQQ 就会将电脑上的登录踢下线。使用 Android QQ 的方式登录,由于没有现成的资料可供查询,实现起来十分复杂;但是 Android QQ 是手机端 QQ,可以与电脑端 QQ 共存。

「要做就做好」。思前想后,我还是决定使用 Android QQ 的方式登录。于是问题来了,怎样去抓取 Android QQ 的行为呢?

  1. 在 Android QQ 外围进行抓包分析,然后让程序伪装成 Android QQ 向腾讯的服务器发包;
  2. 直接读 Android QQ 的源代码,然后仿照着相关内容重新实现。

方案 1 是常规方法,若能顺利实施,无非是不断重复抓包 - 分析 - 伪造的步骤。不过 QQ 的通信信息是加密处理过的,抓包分析比较费劲。因此,我决定尝试反编译 Android 程序,直接阅读源代码。

这里我介绍反编译安卓程序,得到 Java 代码的详细方法。

请尊重他人劳动成果,勿将此方法用于恶意活动。

阅读全文 »

XeLaTeX 是 eTeX 的扩展。它直接支持 Unicode 字符,并且能够调用安装在操作系统的字体。这些特性解决了以往 TeX 切换字体不便的问题,对于中文 TeX 用户来说,更是福音。

前段时间,TeX Live 更新到了 TeX Live 2015 版本,Mac OS X 上相应的也更新到了 MacTeX 2015 版本。不过此次更新之后,XeLaTeX 却无法通过字体文件名调用系统字体。亦即,下列代码无法通过编译(提示 font-not-found):

1
2
3
4
5
6
\documentclass{article}
\usepackage{fontspec}
\setmainfont{GillSans.ttc}
\begin{document}
GillSans Test.
\end{document}
阅读全文 »

很多书籍在设计版式的时候,会要求 \chapter 从奇数页码开始:上一章节在奇数页结束则留白一页,而后再从奇数页码继续排版。为了避免给读者造成「这里的内容缺失了」的印象,通常会写上「This page is intetionally left blank」的字样。

本文来实现这种效果。

阅读全文 »

Ubuntu 系统在用户登录时会显示欢迎信息。有时用户会看到「有 xx 个软件包可以更新,其中有 xx 个安全更新」。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-48-generic x86_64)

* Documentation: https://help.ubuntu.com/

System information as of Sat Jun 27 01:12:04 UTC 2015

System load: 0.0 Processes: 98
Usage of /: 10.6% of 9.71GB Users logged in: 0
Memory usage: 10% IP address for eth0: 192.168.12.233
Swap usage: 0%

Graph this data and manage this system at:
https://landscape.canonical.com/

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

91 packages can be updated.
39 updates are security updates.

对于一般的更新,如果不影响使用,一般也就罢了。但是通常,如果系统提示有安全更新,大多数用户(特别是服务器管理员)还是会去更新的。不过,面对 Ubuntu 的这些提示,很多用户经常遇到「不管怎么 apt-get updage && apt-get upgrade 也不见好」的问题。

阅读全文 »