安装测试kubernetes集群
今天需要搭建一个简单的测试k8s集群,简单记录下流程
今天需要搭建一个简单的测试k8s集群,简单记录下流程
迅雷如今已经变成迅雷浏览器了(迅雷9)
我还一直在用迅雷极速版,简直是业界良心:
不难看出在那个时期公司内部还是有一批人专心做产品的,可是后期由于商业化不足被迫转型。
回到正题,最近使用过程中,下美剧,经常有显示版权受限,确实挺头疼
在网上终于找到了解决办法,分享给大家,原理就是通过hosts屏蔽部分连续迅雷服务器的请求
只需要hosts添加如下:
1 | 127.0.0.1 hub5btmain.sandai.net |
理论上就可以,先用着吧,貌似没有什么好的替代工具
说起我的小博客的历史啊真的很久了。最早之前是在10年暑假,那时候自己学习ACM,在POJ上面做题目。每天都做几道,当时想着把好不容易把这些题目写出来,到时过不了多久在看到的时候就忘了,这样多浪费啊,于是我开始谋划我的博客,当时wordpress很火,我也就开始了我的博客生涯,买了个90元的博客主机,买了个域名,开始了我的做题笔记。
后来在12年的时候,那时学习python,准备往web方向走,虽然django的文档还是很多,但是必定需要一个实际项目入手,我决定将我的博客重写,于是用django实现了一个版本,写出第一版后就没怎么改过了,现在在去看我当时写的代码,真的是很不规范,很多代码现在我都看不下去,不过必定是我的一个作品,呵呵。具体项目在JoveSky,虽然这是我的地一个django项目,但是相对来说很多功能都实现了,当初选择markdown作为书写格式,也为这次迁移减少了很多麻烦。
当初python的那个版本,一直挂在我朋友的SAE上,也就一直没要钱,但是不知道怎么回事,速度很不稳定,后来想想,其实我的博客,真的也只有文字,那么还是专注于写作吧,于是我选择了使用静态博客。既然是静态博客,当然要找一个python写的了,(不行就自己写个,^_^)
搜索了半天,找到了python的wiki,https://wiki.python.org/moin/StaticSiteGenerator
简单看了下有一些不错的,其中我比较有名的是Pelican,但是他的模板渲染用的是jinja2,这个我不是很熟,最近跟转到后台那边去了,也正好在用mako,所以想找个mako模板的后面我该起自己的主题也方便一些,最后找了半天选择了Nikola,选择他书要有3个原因
我之前django博客中,是用markdown来书写,所有文章都在数据库内,现在要都迁移出md文件,首先我去SAE中的数据库导出,其实可以到处成XML或这YAML但是我没这么麻烦,直接到处成SQL,然后导入了我本地的mysql,自己书写了个脚本来完成将文章变成文件的工作。简单晒下我的脚本吧。
1 | # -*- coding: utf-8 -*- |
这样我们就看到了一文件夹的文章,python做这种小工具真心简单。
之前我所有的系统都是使用多说评论,无论是我的wordpress还是django,多说做的是真不错,但是这个框架必定是老外写的,其中集成了disqus,我参考disqus的实现将多说集成进去,找到源码中的comments_helper_disqus.tmpl,参考他我完成了comments_helper_duoshuo.tmpl源码如下
1 | ## -*- coding: utf-8 -*- |
其实这个最好的部署环境是github page,但是大天朝你懂得,好在国内有很多良心企业,比如托总的gitcafe,稍微修改了下,我就将整个博客部署到上去
博客是我技术的一个载体,真的记载了我从开始接触真正的技术到后来的练习的过程,我博客的变迁,也是我成熟的过程,我相信我的小博客不会就这么接触,也许还会有下一次迁移,倒是折腾吧!
AJAX是目前web开发少不了的环节,在很多时候不仅仅是get或者post数据,更重要的是要得到返回的数据,在我所开发的项目中大部分推崇的都是使用json作为返回格式,不仅在webapi上调用方便,在客户端上也有各种解析库!
作为一个web新手,逐渐使用AJAX频繁,也就自然而然的遇到了AJAX的跨域问题,这个时候我遇到了jsonp,仅仅多了一个字,不难看出他的本质还是json,但是他能够完成我们头疼的跨域问题
这篇文章就是用来解释这样一个问题,json和jsonp有什么区别,jsonp怎么调用,如果你是个web老手完全可以去冲咖啡了,刚刚学习,以此为记!没有什么人指点,可能很多都是我的个人见解。
django中提供便捷的分页服务,主要通过
Pagination来实现的,详细可以参考Django文档,通过简单设立每页显示的数量,来自动化获得分页object_list,先来看看调用方式,借用文档里面的例子:
1 | >>> from django.core.paginator import Paginator |
其实分页并不是一个复杂的流程,但是我跟喜欢使用官方提供的功能,省的自己浪费没有必要的时间,但是在使用的过程中,还是优点满足不了我们的用途,一般写导航的时候都会显示当前页前后3-4也的导航,向这样的:
![导航][2]
而我们仅仅能得到一个所有的列表,加之每次都要在模板里配置嫌多判断,前不久学习了一种好的写法,稍微改造了下,封装了下,代码如下:
1 | def my_pagination(request, queryset, display_amount=15, after_range_num = 5,bevor_range_num = 4): |
在模板中配套加入代码,这个模板使用bootstrap应该很好理解
分页出来的数据处理,像这样写
1 | {% if objects.object_list %} |
然后在下面加入导航
1 | <div class="pagination pagination-centered"> |
大家可能还关心view怎么写,给一个简单的示例吧:
1 | def my_view(request): |
简单来说下这样写的好处,一方面不用关心处理的逻辑,一方面不需要对模板进行特殊处理,将request传进去,连page参数都不用操心,相信这样的一个分页函数能帮到你!
django中的auth一般人都会用到不管是用他进入后台,还是自定义User model来实现用户管理,这都比必用的app,然后在使用中有一点很不方便,这两天研究了下,一般办法都是利用form解决的!但是苦于一直找不到想权限那样合适的控件!今天一个碰巧的情况解决了这些问题,不多说,重写groupadmin的form
1 | from django import forms |
初到北京,一切比想象中顺利,地铁40分上班,可以接受,折腾了一周,安顿下来,忙完比赛,也该简单写写感想了!
来北京本来就是一个艰难的决定,回想起来也没有想那么多,记得第一天上班老大很客气的教会我公司的基本细节,第一天把所有东西安顿好,手续办完,各种账号注册完就已经不早了。
老大说他是湖北人,挺亲切的!公司的氛围还不错,每天上下班,吃饭,休息,纯靠自觉,挺自由,感觉来北京的压力一下小了很多。
说起来,在北京第一次待这么久,说说对北京的感觉吧:
其实也没有被人说的那么夸张,那么不堪入目,大城市嘛,生活节奏快,人多,其实挺正常的,相信上海香港,也是一样繁忙!
人们常常担心的PM2.5的确很高,我嘛,天气不好不出门活动,不过这几天天气不错啊,也许是一直在下雨吧!
地铁。。。硬伤啊。。幸好,我每天不用挤高峰期,但是少数不幸了几次。。
还要在北京待几个月,也不知道会怎么样,自己照顾自己对我来说真的很轻松!但是希望爸爸的病快点好!别出什么意外了!
django中为大家提供便捷的图片上传功能,我的博客的图片类设计是这样的
1 | class Image(models.Model): |
挺简单的,但是这样传后,我也发现个问题,就是图片尺寸较大的,直接引用在页面中显示太大,而且速度也很慢,所以我想到生成缩略图,我的思路是再图片上传的时候进行缩略然后存储,有的人设计类的时候,设计原图和缩略同时存在的,原理也是类似,花了一个晚上,查了各种资料,还翻了下django源码,终于完成了。
首先看看怎么缩略图的生成,这里用的当然是PIL库了,缩略这样最基本的功能,实现起来不难,参考这篇文章然后将处理完的图片传递给django保存即可,这里保存过程找了很多方法,查看源码后找出一种比较美观简洁的方法。
代码如下,这里把image重命名为PImage
1 | from django.db import models |
具体效果是这样的
看到微信这么火,最近想尝试给自己的小站加个微信公众平台,不过结果估计也不会又多少人关注,纯当学习下django怎么调用别人的API把。
首先去微信公众平台的网站申请一个号,然后填写必要的信息,这么我就不罗列了,选择高级功能,打开开发者模式。然后会验证你的接口,这里我们再开始改造我们的django
这里我们执行
1 | python2 manage.py startapp wechat |
微信公众平台验证接口,会发送GET请求到指定的URL,并带上四个参数,分别是signature微信加密签名,timestamp时间戳,nonce随机数,echostr随机字符串,通过检验signature来判断该请求是否来自微信服务器,这里会用到一个自己设参数token,相当与一个加密密钥,通过这个可以防止第三方伪造请求,如果判断成功就原样返回echostr那么就接入成功。
加密方式不复杂,文档里这样介绍的
加密/校验流程:
- 将token、timestamp、nonce三个参数进行字典序排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
根据这个流程我们实现这样一个验证函数,通过python强大的标准库
1 | def checkSignature(request): |
打开wechat中的views.py编写如下代码正确响应微信接入信号
1 | from django.http import HttpResponse |
python就是这样,语句永远跟自然语言相近,基本语义按顺序读下来就好
我个人喜欢再app目录下单独管理每个app的url所以我再wechat目录下新建一个urls.py代码如下:
1 | from django.conf.urls import patterns, include, url |
然后在总urls里面添加
1 | urlpatterns += patterns('', |
再setting中启用wechat,尝试下在公众平台中验证下,地址就是你自己配置的URL,token填写自己设的token,应该很快可以验证通过,这样你就拥有了微信公众平台的开发权限了
微信公众平台做的原来越好,看到很多优秀的微信应用,最近看36kr微信公众账号,感慨微信都支持自己添加菜单了,开放程度还是很高的,加上这种语音文字图像结合的交流方式,我感断言微信将会成为媲美微博的大平台,虽然现在自定义菜单还在内测相信要不了多久就能开放,下一步,准备简单添加几个功能,比如查看最新文章之类的!