Other articles


  1. 一个简单的数据分组算法

    Table of Contents

    之前有这么一个需求

    将数据按照时间分组,比如说每5分钟为一组,或者每30分钟为一组,开始时间如果分钟数大于等于30分钟,则设置为30,如果小于30,则设置为0(也可以设置为更复杂的逻辑)

    当然中间还有一些数据的统计,分析和计算暂时不管

    获取开始时间

    def get_start_date(start_date):
        time = datetime.fromtimestamp(int(start_date) / 1000)
        if time.minute >= 30:
            minute = 30
        else:
            minute = 0
        start_date = datetime(time.year, time.month, time.day, time.hour, minute,
                              0)
        start_date = mktime …
    read more

    There are comments.

  2. celery动态添加任务

    celery是一个基于Python的分布式调度系统,文档在这 ,最近有个需求,想要动态的添加任务而不用重启celery服务,找了一圈没找到什么好办法(也有可能是文档没看仔细),所以只能自己实现囉

    为celery动态添加任务,首先我想到的是传递一个函数进去,让某个特定任务去执行这个传递过去的函数,就像这样

    @app.task
    def execute(func, *args, **kwargs):
        return func(*args, **kwargs)
    

    很可惜,会出现这样的错误

    kombu.exceptions.EncodeError: Object of type 'function' is not JSON serializable
    

    换一种序列化方式

    @app.task(serializer='pickle')
    def execute(func, *args, **kwargs):
        return func(*args, **kwargs …

    read more

    There are comments.

  3. 基于whoosh实现的flask全文搜索插件

    flask 貌似很少全文搜索的插件,有一个 https://github.com/gyllstromk/Flask-WhooshAlchemy , 但试了几次都用不了,所以参考 Flask-WhooshAlchemy 自己写了一个

    Quickstart

    插件基于 whoosh,纯 python 编写,使用上很简单

    from flask_msearch import Search
        [...]
        search = Search()
        search.init_app(app)
    
        # models.py
        class Post(db.Model):
            __tablename__ = 'post'
            __searchable__ = ['title', 'content']
    
        # views.py …

    read more

    There are comments.

  4. himawari8图片下载改进版

    第一版下载图片后设为壁纸,四周都是黑黑的不好看, 所以结合本地壁纸将两张图片进行合成

    只要计算一下要缩减的大小与要放置的位置

    我的方法是:打开gimp,合成两张图片,记下缩减的大小(214,214)与位置(160,160)

    每次只要运行一下

    python himawari8.py
    

    源码

    from PIL import Image, ImageOps, ImageDraw
    from io import BytesIO
    from urllib.request import Request, urlopen
    from datetime import datetime, timedelta
    import json
    
    SCALE = 2
    WIDTH = 1368
    HEIGHT = 768
    
    
    def …

    read more

    There are comments.

  5. 下载Himawari8拍摄的实时地球图片

    直接给出源码

    设置壁纸

    feh --bg-scale /tmp/earth.png
    

    设置桌面大小,及图片放大倍数

    SCALE = 4
    WIDTH = 1368
    HEIGHT = 768
    

    from PIL import Image
    from io import BytesIO
    from urllib.request import Request, urlopen
    from datetime import datetime
    import json
    
    SCALE = 4
    WIDTH = 1368
    HEIGHT = 768
    
    
    def get_info():
        url = "http://himawari8-dl.nict.go.jp …
    read more

    There are comments.

  6. sqlalchemy使用上的小tips

    sqlalchemy object序列化为json

    灵感来源于 *Django REST framework*

    posts = Post.query.all()
       serializer = Seralizer(posts,many=True)
       data = serializer.data
    

    多个实例

    单个实例

    post = Post.query.first()
       serializer = Seralizer(post …
    read more

    There are comments.

  7. 使用flask实现一个简单的图片上传存储服务

    GitHub地址: https://github.com/honmaple/maple-file

    maple-file

    使用flask实现的一个简单的图片上传服务

    设计初衷

    对于图片的存储,有很多选择,一般采用云服务如(七牛,又拍等),但是国内的服务像七牛 自定义域名竟然需要域名备案(Excuse me …

    read more

    There are comments.

  8. 升级至python3.6导致环境出错解决

    Table of Contents

    最近archlinux升级至了python3.6 ,直接导致了我的开发环境失效,唉

    archlinux 果然不适合开发

    虽然后面都已经解决了

    事故(一)

    virtualenv不可用,原先使用python3.5创建的环境直接不能用了,只好删了原有了东西,重新使用python3.6创建

    pip freeze > requestments.txt
       pip install -r requestments.txt
    

    事故(二)

    py3status 报错

       Traceback (most recent call last):
      File "/usr/bin/py3status", line 11, in <module …

    read more

    There are comments.