问题是这样的: 1只母羊,在第2年和第4年生下小母羊,在第5年死去,问N年后有多少母羊?
想了很久,终于有了一个思路,不过目前效率不高
给出代码:
a = [1] def sheep(N): N = int(N) if N == 1: return a for n,k in enumerate(a): a[n] += 1 for...
问题是这样的: 1只母羊,在第2年和第4年生下小母羊,在第5年死去,问N年后有多少母羊?
想了很久,终于有了一个思路,不过目前效率不高
给出代码:
a = [1] def sheep(N): N = int(N) if N == 1: return a for n,k in enumerate(a): a[n] += 1 for...
map()函数接收两个参数,一个是函数,一个是Iterable, map将传入的函数依次作用到序列的每个元素, 并把结果作为新的Iterator返回。
>>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list...
都可看做是where但用法不一样
question = Questions.query.filter_by(id=1).first()
question = Questions.query.filter(Questions.id==1).first()
其实就是=
与==
还有是否带类名的区别
如果要select * from questions where id < 5
这时只能使用filter
questions...
也就是降序排序
questions = Questions.query.order_by(Questions.time.desc()).all()
如果几乎所有的questions都是按照时间降序排序,总不能每一条语句都加上order_by(Questions.time.desc())
所以设置默认排序是有效的
class Questions(db.Model): __tablename__ = 'questions' id = db.Column(db.Integer...
fabric也使用好久了,这次静下心来好好整理一遍,当然这只是很简单的用法
参考文档
凡事先从安装说起,fabric不支持python3,所以只能安装python2版本的fabric
由于我使用了virtualenv,所以先退出虚拟环境
$ deactivate
安装全局fabric
$ sudo pip2 install fabric
使用之前先想想以前是怎么部署的,是不是这样:
先ssh到服务器,进行数据备份,然后退出(或者重新开一个终端),然后上传文件到服务器,
再ssh到服务器,安装所需要的模块,然后退出,ssh到root账户,重启,再退出···
是不是想想都烦
没关系,有了fabric后就不必这么麻烦了,需求...
·参考
ranger(100)表示0到99这一百个数
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数
>>> a = 'abc' >>> a.replace('a', 'A') 'Abc' >...
书签不够用了
例子1:https://gist.github.com/bkdinoop/6698956
def safe_clean(text): from flask import Markup from bleach import clean tags = ['b','i','font','br'] attrs = { '*':['style'...
:confuse: signature from "Thorsten Töpper [email protected]" is unknown trust
解决:
$ sudo pacman-key --refresh-keys
arch错误:无法准备事务处理 (无法满足依赖关系) :: package-query: 要求 pacman<4.3
解决:
$ sudo pacman -R package...
虽然算不上是实时预览
实时预览功能等有时间在把它加上
还是把实时预览加上,不过实时预览可能会对网站有所影响,读者看着加上
<script type="text/javascript"> function previewTopicContent(){ $.getJSON("{{ url_for('blog.preview') }}", { content: $("#content").val(), }, function(data) { $("...
<script type=text/javascript> $(document).ready(function(){ $('button#ajax').click(function() { $.ajax ({ type : "POST", url : "{{ url_for('index.login') }}", data:JSON.stringify...
必须得记下来,否则等那天看到又要浪费时间了,主要记录访问时间这里
'''记录访问的时间''' now_time = int(time()) #首先得到当前时间戳 '''查询上次访问的时间和最近访问的时间''' query_last_time = redis_data.zscore(visited_users,'last_time'...
supervisor安装请参考flask应用部署——安装环境
# cd /etc # mkdir -p supervisord/conf.d # echo_supervisord_conf > /etc/supervisord/supervisord.conf
# vim supervisord.conf # G直接跳到最后一行
取消下面注释并修改
[include] files = /etc/supervisord/conf.d/*.ini
ok,现在可以在...
虽然以前安装过但是没有记录,这次重新安装,趁机记录下来,省得满世界地找
>环境: centos7
参考资料
使用yum list nginx
会发现nginx是1.6的版本,但现在nginx已经到了1.9,虽然不必那么新,
但是过旧的版本说不定会出现安全问题
# vim /etc/yum.repos.d/nginx.repo
输入
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever...
参考资料
准备
from PIL import Image, ImageDraw, ImageFont, ImageFilter _letter_cases = "abcdefghjkmnpqrstuvwxy" # 去除可能干扰的i,l,o,z _upper_cases = _letter_cases.upper() # 大写字母 _numbers = ''.join(map(str, range(3, 10...
对于网站来说数据无疑是最重要的,而养成备份数据的习惯更加重要,
忽然想到一句经典台词
>曾经有一份数据摆在我的面前,
可我没有备份,
直到数据丢失后才后悔莫及,
人世间最痛苦的事莫过于此,
如果上天能给我一次再来一次的机会,
我会对那份数据说五个字:我要备份你,
如果非要在这份备份上加一个期限,我希望是每天!
进入主题,这只是对数据进行简单的备份
shell脚本
#!/bin/bash backup_time=`date +%Y%m%d` pg_dump articledb > /home/xxx/backup...
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 HTTPS和HTTP的区别主要为以下四点:
对于像我这样的穷学生或者不希望花钱的同学可以使用startssl免费ssl证书...
上课时,我放了一个屁——很普通的屁。既不很臭,当然也绝对不香。
可怕的是,教授正在讲辩证法。
“请你自己对这个屁作一下判断,”教授说,“它好还是不好?”
我只得说:“不好。”
“错了,”教授说,“任何事物都有矛盾组成,有它不好的一面,肯定有它好的一面。”
“那么说它好也不对了?”我问。
“当然。”教授说。
“它既好又不好。”
“错了。你只看到矛盾双方对立斗争的一面,没有看到他们统一的一面。”
我只好认真看待这个严肃的问题,仔细想了想说:“这个屁既好又不好,但不好的一面是主要的,处于主导地位。”
“错了。你是用静止的观点看问题。矛盾的双方会相互转换,今天处于主导地位一面,明天一定处于次要地位...