这篇文章旨在为刚接触 wechat_spider 的人提供一个快速了解这个项目基本原理的途径。
首先我们随便进入一个微信公众号详情页。
| # !/usr/bin/env python | |
| # -*- coding: utf-8 -*- | |
| import sys | |
| import json | |
| from urlparse import urlparse, parse_qs | |
| import requests |
| /* display:flex; */ | |
| .flex { display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; } | |
| /* for Android 4.3- */ | |
| .flex > * {display: block;} | |
| /* row reverse */ | |
| .flex.flex--reverse { -webkit-box-orient: horizontal; -moz-box-orient: horizontal; -webkit-box-direction: reverse; -moz-box-direction: reverse; -webkit-flex-direction: row-reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } | |
| /* column */ | |
| .flex--clo { -webkit-box-orient: vertical; -moz-box-orient: vertical; -webkit-box-direction: normal; -moz-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } | |
| /* column reverse*/ | |
| .flex--col.flex--reverse { -webkit-box-orient: vertical; -moz-box-orient: vertical; -webkit-box-direction: reverse; -moz-box-direction: reverse; -webkit-flex-direction: column-reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } |
mathclub是最近做的一个个人项目,帮助考SAT的同学通过在线做题、回顾、问答提高成绩。用户功能有:计次/计时做题、成绩单、错题分布、错题回顾、提问、汇总以及注册登录。管理后台主要是题库管理、学员管理、成绩单管理、问题回复。怎么看都像学校里的课设,的确项目本身并不出奇,开发上选用的一些方案或许更有意思。
整个项目一个人从产品需求、原型设计、前后端开发到部署历时2周左右。可以从截图上感受一下:
技术选型上服务端是Node.js,应用框架选了老牌的Express(4.x变化挺大不少中间件都废了),数据服务用的是MongoLab(MongoDB的云服务平台),图片上传用的是又拍云,程序部署在Nodejitsu上。模板引擎没选主流的Jade或ejs,而是用Express React Views它实现了在服务端渲染React组件。前端框架是用React,这次有意想追求前后端全部组件化的组织。之前是用Webpack实现CommonJS模块打包,这次用Browserify配置更简单,它有丰富的transform很赞,其中的reactify转换React的JSX很完美。CSS用Sass+autoprefixer让人省心。将这一切串起来的自动构建工具是Gulp。我其实崇尚用最精简的工具组合开发,上述组合在我看来比较精简了。(帖纸留念)
); | |
| define('DATA_FILE', APP_PATH. '/sms.htdata'); | |
| if ($_SERVER['REQUEST_METHOD'] == 'POST') { //tasker提交 | |
| if (!isset($_POST['c'])) { | |
| die('Invalid Request!'); | |
| } else { | |
| $data = ''; | |
| if (file_exists(DATA_FILE)) { //读入已有数据 |
| #!/usr/bin/env python | |
| #-*- coding:utf-8 -*- | |
| import datetime | |
| from flask import Flask | |
| from mixins import db | |
| from models import Post, User |
| package main | |
| import ( | |
| "compress/gzip" | |
| "io" | |
| "net/http" | |
| "strings" | |
| ) | |
| type gzipResponseWriter struct { |