-
确认一个 Email 地址是否存在
前些天做销售的同事给我出了个题目: 她的客户数据里有很多的 Email 地址都是过期的或者错误的, 因此群发发邮件时会收到很多退信. 但是由于数量较大, 又不好手工去一一找出哪些地址是无效的. 有没有可能用程序解决呢? 当然是可能的啦, 思路: 首先肯定不能通过发邮件来测试, 因为, 乱发垃圾邮件那是违法的. 于是我采取三个步骤: 利用 regex 从 Email 地址的格式上先淘汰一些, 例如连 @ 都没有的那肯定不是合格的 Email 地址. 再从 DNS MX 记录上淘汰一些. 如果某域名没有有效的 MX 记录, 那该域名结尾的任何 Email 地址都是无效的. 最后使用 SMTP 协议”假装”发邮件, 只查询收件人是否存在, 便挂断. 基本能够达到目的, 但不保证 100% 准确. 因为… 很多发垃圾邮件的专业户也是这么做的, 所以一些邮件服务器对此是提防的. 程序如下. require ‘net/smtp’ require ‘dnsruby’ class EmailValidator def check_format(email) m…
-
用一秒钟解数独(Sudoku)
最近要热身一下准备做编程工作了, 想起来以前曾计划写个程序解 Sudoku 但一直拖拉也没做成, 那说做就做吧. 首先我从手机里的 Sudoku 游戏里抄了一道高难度的题目, 写成九行九列的一个方阵. 然后找到已知的数字, 猜测未知的数字. 基本算法是递归. 经过一些优化, 从第一个能解题的版本的 4.6 秒改善到第三版的 1.1秒. 改天再战, 希望能进 1 秒内. 源码我放 GitHub 了, 这里就不重复贴了.