使用阿里云DirectMail实现网站事件推送

 — 

接上期文章,监听数据库事件之后,我们有了特定情形下通知的诉求,通常来说e-mail比较经济方便。起初在163注册了一个邮箱,结果发现什么admin@cxwloves.cc啊,web_admin@cxwloves.cc之类基本大家都能想到的账号全都被注册干净了,让人不得不怀疑背后是否存在一条产业链。

无奈选了一个比较冷门的地址注册,在邮箱设置里面打开SMTP/POP3服务,同时开启了第三方客户端登陆码。这样Python就能连接上了。兴冲冲的准备发出一份Hello World邮件,结果提示邮件被Rejected,原因是被认定为垃圾邮件。

百度了下发现个人注册的邮箱似乎以这种方式送达率很低,所以权衡之下找到了阿里云DirectMail做推送,每天200封的免费邮件已经足够。更让人惊喜的是邮箱地址绑定到了域名,这样浑然一体没有遗憾了。

使用SMTP方式

阿里云处于安全考虑,关闭了25端口。

使用Web API方式

参照了阿里的文档,试了几次才成功,文档写的确实有一点问题。我这里总结起来供参考。API方式参数有两类,一类是公共方法参数,比如发信的方式,发信的AccessKey,签名加密的方式,时间戳等;第二类是私有方法参数,主要和发信相关,如收件人,主题,邮件正文,邮件html等。

  1. 准备好所有的参数,包括公共的和私有的,签名因为尚未计算不包含进去 …
Category: 编程 Tags:

利用sqlite3进行全文检索

 — 

在设计后台的时候,需要管理blog当中的静态图片,于是就有了这样的需求:

  • 根据图片名检索数据库,获取图片的使用情况

搜索了一番,找到了如下网页 http://www.sqlite.org/fts3.html 。 sqlite也能实现全文检索。官网介绍了fts3,fts4插件,需求的版本应分别高于3.5.0和3.7.4。而fts1,fts2因为年久失修不被推荐使用。据介绍,ft4显著快于ft4,但可能会多占用1~2%的磁盘空间。

如何使用?

-- 不指定Column,将自动创建一个Column为content的fts3表,当然还有rowid:
CREATE VIRTUAL TABLE data USING fts3();

-- 传入一组逗号隔开的列表创建Column:
CREATE VIRTUAL TABLE pages USING fts4(title, keywords, body);

-- 更加详细的建表方式,但会忽略所有约束 …
Category: 编程 Tags:

利用flask-HTTPauth完成博客API构建

 — 

为了配合页面各种ajax的使用需求,设计自己博客的API需求日益增加。由于我采用flask作为我的web框架,自然想到使用flask-HTTPauth作为扩展,由flask作者亲自开发,质量自然有保证。

  • github地址 https://github.com/miguelgrinberg/Flask-HTTPAuth
  • 中文文档地址 http://www.pythondoc.com/flask-restful/third.html
  • 英文文档地址 http://flask-httpauth.readthedocs.io/en/latest/

建议阅读英文文档,之前由于对HTTP协议一无所知,在带token认证这一步卡了很久。后来查到如下:

The verify_token callback receives the authentication credentials provided by the client on the Authorization header. This can be a …

Category: 编程 Tags:

利用JinJa宏及SQLite CTE设计类似网易评论的回复系统

 — 

本人从事和流程优化的工作,和计算机本无多大关系。后来阴差阳错渐渐自学编程,倒也找到了很多乐趣,当然也有很多坑。

这篇文章将作为记录我开发博客系统遇到的大大小小的坑中的首篇——也是卡住我最多时间思考的地方。

如何制作一个类似网易盖楼的评论系统?

问题就分解成了:

  1. 如何设计数据库的评论表
  2. 如何在视图中展示出嵌套的样式

在网上查了一些资料,

  • 评论表有的是回复和评论功用一张表,但是必须要指定每一条评论的id以及它的回复对象pid,若是第一条回复,它的回复对象则是null。
  • 也有方案是以回复和评论以两张表分开的形式存储

从降低耦合的角度出发,第二种方案更好,在第一种方案中假如需要删除评论,也许就会其他评论造成断档的问题。由于水平有限,我还是采取了第一种方案,理由是建表简单。

但是考虑到上述问题,我也设计了一个评论必须经过审核的逻辑,没有经过审核的评论是无法展示的,也就避免了展示后被删除的可能。

CREATE TABLE "Comment" (
    id INTEGER NOT NULL, 
    uid VARCHAR(50) NOT NULL, 
    rdr_name VARCHAR(20) NOT NULL, 
    rdr_mail VARCHAR(20) NOT NULL …
Category: 编程 Tags:

© NegativeDearc 2016-2017

Powered by Pelican, Themed by aboutwilson

苏ICP备:17001932-2