-
确认一个 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 了, 这里就不重复贴了.
-
Enclave MK III(Raspberry Pi + OpenELEC)
距离上次 Enclave MK II 的完成已经两年多了… 前些天测试了一下 Raspberry Pi, 我发现这小东西居然可以胜任 1080P 解码. 看来可以考虑让 MK II 退休了. 下面是我用 Pi 搭建媒体中心的(简要)步骤: 首先是准备一张 SD 卡, 貌似没有什么容量要求, 不过还是大一点吧. 要安装的系统是 OpenELEC. 下载其为 Pi 编译的专用版本, 然后按照这里的详细步骤来写镜像到 SD 卡. 顺便赞一下 OpenELEC 团队, wiki 里面同时照顾 Linux, OSX 和 Windows 用户. 之后把写好的 SD 卡插到 Pi 上, 连上网线, HDMI, USB(包括供电, 键盘, 外接硬盘. 我把供电和外接硬盘合二为一了), 就可以准备开机了. 见到 XBMC…
-
再学化学
其实, 要是中学时化学和英语结合起来学是不是更好? 因为现在看到一些元素单词我根本对不上号, 还得重来一次… 氢 H Hydrogen 氦 He Helium 锂 Li Lithium 铍 Be Beryllium 硼 B Boron 碳 C Carbon 氮 N Nitrogen 氧 O Oxygen 氟 F Fluorine 氖 Ne Neon 钠 Na Sodium 镁 Mg Magnesium 铝 Al Aluminum 硅 Si Silicon 磷 P Phosphorus 硫 S Sulfur 氯 Cl…
-
笑笑 Level 5!
一天我对笑笑说, 喊你妈妈来吃粉条. 笑笑照做, 喊, 妈妈来吃粉桥. 老婆笑说, 笑笑, 是粉条, 不是粉桥. 笑笑如实转达, 说, 爸爸, 是粉条, 不是粉桥, 你说错了. 老婆一直特希望笑笑是个神童, 哈哈, 哪个妈妈不是呢? 因此老婆有空就教笑笑识字, 算术什么的. 遗憾的是, 笑笑可不是神童,和其他人一样的,她不会认为识字和算术是有趣的事情。还是找些儿童教育的游戏吧。 一天, 笑笑不知如何在 YouTube 上找到了 MineCraft(下称MC) 的视频, 问我这是什么? 我随口答, MC. 于是几天后笑笑嚷着要 MC了. 我答应她, 等她完成了老师的作业后就给她装. 后来呢, 说话要算数的, 于是给笑笑的 iPad 上装了 MC. 笑笑一玩起来, 仿佛我就看到小时候的自己了. 没用多久她自己就会玩 MC 了, 一开始只是爬树, 后来盖房子, 进而盖楼了. 我很庆幸她用 MC 盖楼, 要是换了 Lego 我就得破费了不是.…
-
猫本一周年之交通
刚到猫本我们去哪都不方便, 不仅没车开, 公交线路也不熟. 更糟糕的是家当还在海上漂着呢, 缺东少西的. 于是一旦赶上好友 Lily 有空, 就蹭她的车去超市大采购一番. 好在猫本对于我这外国人的驾车要求反而不高, 中国的驾照加上有资质翻译公司的翻译就可以开车上路了(感谢前辈们). 于是我们决定尽快买车. 一开始开车上路,真是顾头顾不了尾的感觉, 因为左侧通行, 也因为这里的规则更细致. 几个较大的差异是: 首先是互动. 原来开车时基本没有互动, 当然巴士是个例外, 因为巴士并线时售票员会挥手示意的. 逐渐我注意到路上司机谦让时会伸手摆出个”请领导先走”的姿态, 然后被让路的”领导”则挥挥手, 表示”同志们辛苦了”. 这挺有意思的, 轮流当领导了, 尤其是一个方向车堵满了时, 人们会留出缺口让另一个方向通行, 这有效的避免了”互锁”型堵塞. 过环岛的规则相当复杂: 进环岛前要减速, 如右方有车在环岛内或者即将进入, 那么要谦让. 如果对面有车进入且打右转灯那么也要谦让. 但是这导致一个问题, 如果四辆车同时在四个入口准备进入环岛该怎么办呢… 那就拼人品吧… 给急救车辆的让路也给我很深印象. 一次高速路堵车, 我在中间车道, 基本停止. 这是后方传来救护车的声音. 于是我看到所有的车辆都在尽力的往左边靠, 把最右的车道让出来. 结果我光看热闹, 自己没跟上… 但第二次我就知道怎么做了 🙂 最牛的就是步行的行人了 规则复杂, 但大部分都掌握了以后, 开车上路就变得很傻瓜很没技术含量了. 猫本公共交通由城铁(但是速度并不是很快), 电车和公交车组成. 很方便的一点就是换乘很容易, 因为城际火车和城铁列车共用同一套轨道系统.…
-
少年 Raspberry 派
总算等到 Raspberry Pi(下简称 Pi) 到手这一天了. 他们是饥饿营销还是真的供不应求了? 不过顾不得那些了, 还是先把这小东西跑起来吧. 需要的零件如下: 一张 SD 卡, 最小 2GB, 越大越好了. 电源适配器, 最小 5V 1A 的, 如果外挂硬盘的话, 就需要 5V 2A 的了. 接口可以是 microUSB 也可以是普通的 USB 2.0(需 Pi 版本>1.0) 有 HDMI 输入的显示器或者电视. Pi 也支持 RCA, 不过我没试. USB 键盘 网线以及网络连接 首先从 Pi 老家下载系统镜像, 地址在 http://www.raspberrypi.org/downloads , 一般推荐基于 Debian Wheezy 的 Raspbian 镜像. 将下载文件展开后,…
-
笔记: Linux 简单的网关脚本
这个现在用到的机会不多了, 因为无线路由器什么的都是现成的网关了. 但如果要在一台 Linux 主机上建一些虚拟机, 可能还用的到. eth0 是外网网卡, br0 是局域网网桥. #!/bin/sh #this is /etc/network/if-up.d/gateway PATH=/usr/sbin:/sbin:/bin:/usr/bin # # delete all existing rules. # iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # Always accept loopback traffic iptables -A INPUT -i lo -j ACCEPT # Allow established connections, and those not coming from…