首页 文章 精选 留言 我的

精选列表

搜索[Web安全],共10000篇文章
优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——路由装饰器

现在,有了起步的基本认识,现在需要一个可以媲美flask或者bottle的简洁易用的路由功能,可以用装饰器写法任意映射 URLs 到代码。 这个,并不难。首先,来一个叫做hi的模块:hi.py: 1 import re 2 3 class hi: 4 def __init__(self): 5 self.uri_map={} 6 self.uri_regex_map={} 7 8 def route(self,pattern,method): 9 def wrapper_a(func): 10 self.uri_map[pattern]={'method':method,'callback':func} 11 self.uri_regex_map[pattern]=re.compile(pattern) 12 def wrapper_b(req,res,param): 13 func(req,res,param) 14 return wrapper_b 15 return wrapper_a 16 17 def run(self,req,res): 18 for k,v in self.uri_map.items(): 19 if req.method() in v['method']: 20 m=self.uri_regex_map[k].match(req.uri()) 21 if m: 22 v['callback'](req,res,m.groupdict()) 23 break 把它和index.py放在同一个目录中。以下就是使用路由装饰器后的新代码: 1 import sys 2 sys.path.append('/usr/local/nginx/python') 3 4 from hi import hi 5 app =hi() 6 7 @app.route(r'^/test/?$',['GET','POST']) 8 @app.route(r"^/$",['GET']) 9 def hello_world(req,res,param): 10 res.header('Content-Type','text/plain;charset=utf-8') 11 res.content('hello,world') 12 res.status(200) 13 14 @app.route(r"^/client/?$",['GET','POST']) 15 def client(req,res,param): 16 res.content('{}<br>{}<br>{}<br>{}<br>{}'.format(req.client(),req.method(),req.uri(),req.user_agent(),req.param())) 17 res.status(200) 18 19 @app.route(r"^/hello/(?P<who>\w+)?$",['GET']) 20 def hello(req,res,param): 21 res.content('{}={}'.format('who',param['who'])) 22 res.status(200) 23 24 25 26 if __name__ == '__main__': 27 app.run(hi_req,hi_res) 是不是跟些flask或者bottle一样简单?而且还快得多喔! 访问http://localhost:8080/,http://localhost:8080/client?a=90,http://localhost:8080/hello/cnblogs即可查看结果。 当然,也可以先安装hi.py:https://github.com/webcpp/hi.py 这样的话,上面代码的第1,2行就可以免了。

优秀的个人博客,低调大师

运行第一个Docker容器-Docker for Web Developers(1)

1. Docker介绍 Docker由dotCloud公司发起的一个内部项目,后来Docker火了,dotCloud公司改名为Docker了; Docker使用了Go语言开发,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术; Docker vs VM如下图所示: 2. Docker的安装 Docker现在区分Community Edition,简称:CE版本;Enterprise Edition,简称:EE。两个版本,一个免费,一个付费。所以我们安装的是的CE版本。安装步骤在官方完成有详细的的说明,这里略过。 我在DO上的服务器操作系统版本是:Ubuntu 14.04 LTS。安装官方文档,能顺利安装成功。 Docker CE for Ubuntu 3. Docker架构 4. 运行第一个容器 运行容器可以通过两种方式: 4.1 通过Dockerfile构建一个镜像,上传到Docker Hub上,然后在host主机上pull这个镜像,运行一个容器 4.2 通过docker pull从Docker Registry上获取一个镜像,然后通过这个镜像运行容易。 本文主要说明第一种情况,流程如下图所示: 步骤1 本地机器上新建一个文件夹,创建一个Dockefile文件,创建一个dist目录。dist放置了一个简单的hml页面,页面加载了2个图片,也就是我们前端的代码。 Dockefile文件内容如下: FROM nginx:1.11.5 ADD dist/ /usr/share/nginx/html 告诉Docker引擎下载Nginx 1.11.5版本的镜像,然后复制dist文件夹内容到/usr/share/nginx/html目录中。 执行生成镜像命令: docker build -t bage88/docker-demo:0.0.1 -f Dockerfile . bage88/docker-demo:我再Docker Hub创建的repository的名称,必须一致,才能保证后面能正确将本地的镜像推动的Docker Hub仓库中。 0.0.1:镜像的版本号。 步骤2 将生成好的镜像推送到Docker Hub仓库中。命令如下: docker push bage88/docker-demo:0.0.1 步骤3 需要从Dock Hub获取镜像,默认未修改仓库地址,默认都是从Docker Hub上获取镜像。现在我们来获取刚推送到Docker Hub上的镜像。命令如下: docker pull bage88/docker-demo:0.0.1 步骤4 最后一步也是最简单的一步,根据镜像运行容易。 docker run -d -p 80:80 bage88/docker-demo:0.0.1 在浏览器中访问地址:http://138.68.40.38/,可以看到下面的界面,表面当前的容器运行成功了。 参考资料 Docker —— 从入门到实践 Docker架构详解 Docker官网 本文转自快乐八哥博客园博客,原文链接http://www.cnblogs.com/liminjun88/p/run-first-docker-container.html如需转载请自行联系原作者 快乐八哥

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册