Excel函数VLOOKUP和ISNA使用技巧

对于程序员来说,遇到需要数据处理的情况,首先想到写代码实现。其实如果熟悉Excel的一些公式的话,可以非常方便的使用这些公式实现。最近就遇到一个问题,里面涉及到在Excel表中查找数据,并判断该数据对应字段的值,并更新回源数据。简单来说如果要使用代码实现的话,大概要写读Excel文件、for循环、判断、更新源数据字典、最后写回Excel文件。但是如果使用Excel中的固定函数,就特别简单。大致用到IF、ISNA、VLOOKUP三个函数。 Read more

开发爬虫过程中遇到的乱码问题

开发爬虫过程中遇到过非常头痛的问题就是编码问题,如果编码使用不正确最后保存下来的文本就会有问题。在开发过程中,我们可能会遇到各种编码比如ios8859-1,Windows-1252,GBK,GB2313,GB18030等。首先让我们看看如果使用错误的编码解码下载的内容会发生什么情况吧。注意,即使都是乱码,使用不同错误的错误编码解码的效果特征也是不同的。
Read more

快速分辨静态页面和动态页面

静态网页是标准的 HTML 文件,通过 GET 请求方法可以直接获取,文件的扩展名是.html、.htm等,网面中可以包含文本、图像、声音、FLASH 动画、客户端脚本和其他插件程序等。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。静态并非静止不动,它也包含一些动画效果,这一点不要误解。这里我们需要强调的是静态和动态的区别,是页面内容的加载方式,并非展示方式。

我们知道,当网站信息量较大的时,网页的生成速度会降低,由于静态网页的内容相对固定,且不需要连接后台数据库,因此响应速度非常快。但静态网页更新比较麻烦,每次更新都需要重新加载整个网页。

Read more

使用iptables创建动态NAT转发规则开放内网服务

如果局域网中有多台服务器提供服务,但是只有一个公网IP地址,这时使用iptables可以创建动态Nat转发规则,在拥有公网IP地址的机器上提供服务。例如我在阿里云购买了4台云主机,属于同一个子网,内网可以互通。其中一台主机拥有一个公网IP可以访问,另外三台主机创建了一个MongoDB Cluster分片集群。如果需要在外网访问MongoDB集群服务的话,就需要在拥有公网IP的主机上创建Nat规则,将外网来的访问转发到内网主机上。


以下是一个公网IP的Nat转发拓扑图:
Nat for MongoDB Sharding

Read more

使用iptables查看和创建访问规则

由于云服务器IP访问策略配置有限制,手动对单个IP设置访问策略过于繁琐。例如,要对50个IP一对一的设置访问策略,并且这50个IP不是在一个网段内,就只能手动一条一条加,非常麻烦。因此决定使用IPTables在系统内部设置规则,在云配置页面做比较粗力度的IP访问策略设置。顺便学习一下IPTables设置的一些要点,并记录下来。
Read more

微信pc端逆向之自动接收消息(无消息冲突)

之前写过几篇使用OllyDbg进行逆向工程,并使用Frida编写HOOK注入程序的教程。后来有朋友寻求帮住,看看能不能帮忙做一个微信逆向的学习课程。由于这个涉及到一些法律风险,感觉不是很靠谱,因此并没有出这个学习课程。不过还是在网上找到了两篇比较有意思的文章。接下来通过分析这两篇文章中的逆向过程,比较一下两种方法的优劣,并探讨一下是否还有更优的方案。
Read more

开启MongoDB Cluster分片集群身份认证

默认情况下MongoDB集群的身份认证是关闭的,因此存在非常大的安全风险。在正常情况下不同用户有不同的访问权限,即使是MongoDB分片集群也不例外。相对于单节点MongoDB服务来说,开启MongoDB Cluster分片集群身份认证要负责的多。MongoDB官方手册给出了非常详细的操作步骤,本文的重点主要覆盖在如何开启一个已经上线的MongoDB Shard分片集群身份认证。由于MongoDB Cluster分片集群由3大部分组成(Shard副本集、Config副本集、Mongos路由),因此需要分别配置内部身份认证。
Read more

搭建高可用Kafka集群

消息队列目前是实现系统异步处理的成熟中间件。消息由生产者创建并推送至消息队列,由消息队列缓存,最后由消费者消费。Kafka作为消息队列中间件中应用非常广泛的一款产品,能够有效地分离生产者和消费者之间紧耦合的关系,并且实现了生产者和消费者独立伸缩的能力。因此,搭建一套高可用的Kafka集群将是系统中非常重要的一个环节。
Read more