使用传统的web开发技术,也就是html+js,然后搭配一个后端语言,已经成为当今web开发的固定模式了,为此也形成了众多的toolkit,譬如ror,django,各种js图形库更是玲琅满目,从非常大程度上也加速了开发过程.但传统web应用也非常自然地有一些诟病,有些特殊效果,c端能够轻而易举地完毕,但b端就会非常纠结了,从根本上讲,这是由于html这样的语言是内容驱动行为的服务模式,导致js没有状态保留的功能,这在我和我的同事使用webkit结合html+js来搭建一个hybrid应用的时候让我深有体会.后来在进行一些类似tableview的内容展示的时候,已经全然hold不住了,在c端里面最普通的mvc模式就能够解决的问题,在b端里面得用js来做异步数据分段请求,还有非常多坑爹的东西已经不记得了,后来经过几天的评估,还是决定推倒重来,我们之所以要用web来做ui,或者说一些简单的逻辑,主要是我们既须要高的实时内容分发也须要高的开发效率,毕竟这些都是一个走流程的东西,用c/c++来做太大材小用了.我们团队一直是用的python来做这些以上的工作,但这次没实用,由于我们不想开放原始码(别提pyc什么的,跟原始码有多大差别?),二个内容的实时分发能力跟不上,就好比我们须要给用户展示一个类似站点一样的应用,我们希望用户能够实时的得到我们最新的软体功能的推送.想了非常久,终于得出一个结论:我们须要像html+js一样使用python,那就一切问题都迎刃而解了.

故事从python的import机制说开去,阅读了(python import system)https://docs.python.org/3.5/reference/import.html和相关的pep之后,认为这个做法可行,然后就实现了一个能够导入网络包的机制,比方有一个py放在我们website的rs.sysfix.cn/demo/pong.py,那例如以下导入就可以:import
rs.sysfix.cn.demo.pong as pong,之后的使用就和普通的py一模一样了,当然,这样还不够,假设别人直接訪问这个url,就能够得到原始码了,再加一点东西,我们用aes把代码给跑一遍之后再放到server上,然后本地的import机制中解密之后再运行,当然,实际上我们还压缩了,毕竟网络io比cpu资源更宝贵.这个import的机制使用一个py实现的,他必须是在应用软件本地可接触到的,意思就是假设用户刻意去留意这个脚本,然后顺藤摸瓜,那我们的工作还是白做了,好,让我们再疯狂一点,用c来实现这个import的机制,这样本地仅仅须要加载这个c的dll或者其它你喜欢的方式,就能够拥有一个能够加载自己server上压缩加密的py包的执.行环境了.到了c的世界,那保护起来就有无穷无尽的想象了,加壳,花指令......

可能咱们说得不是太清楚,有同学不太明确这样做的意义,这个web的方式和传统的web2py等是不同的,这些py代码是在client运行的,server仅仅是提供一个脚本的地方,就像js一样,但他跟js又不一样,他是一个纯粹的python环境,你能够通过ctype调用dll和系统api,通过urllib发起http连接,使用pyqt搭建native ui,使用numpy做数值计算,用pygame编写游戏.

我们下一步的计划是开发一个拥有这样的机制的浏览器,它不仅能够訪问传统的html站点,使用这样的机制搭建的py站点也能够訪问,应该是非常有趣的,到时候项目会发起在github,敬请关注.

由于近期项目繁忙,代码等有空整理出来开放以飨读者.以上机制能够參考我们团队的这个产品看到这个技术的成果:http://www.sysfix.cn/windowschanpin/shujuhuifu/gaoqingshipinleihuifu/2014/0106/567.html

像web一样使用python的更多相关文章

  1. Web Scraping with Python读书笔记及思考

    Web Scraping with Python读书笔记 标签(空格分隔): web scraping ,python 做数据抓取一定一定要明确:抓取\解析数据不是目的,目的是对数据的利用 一般的数据 ...

  2. <Web Scraping with Python>:Chapter 1 & 2

    <Web Scraping with Python> Chapter 1 & 2: Your First Web Scraper & Advanced HTML Parsi ...

  3. Web scraping with Python (part II) « Jean, aka Sig(gg)

    Web scraping with Python (part II) « Jean, aka Sig(gg) Web scraping with Python (part II)

  4. Create screenshots of a web page using Python and QtWebKit | Roland's Blog

    Create screenshots of a web page using Python and QtWebKit | Roland's Blog Create screenshots of a w ...

  5. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  6. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  7. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  8. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---Crawl

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---Crawl 1.函数调用它自身,这样就形成了一个循环,一环套一环: from urllib.request ...

  9. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href 1.查找以<a>开头的所有文本,然后判断href是否在<a> ...

  10. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll 1..BeautifulSoup库的使用 Beautiful ...

随机推荐

  1. Google机器学习教程心得(一)

    Hello world Google Machine Learning Recipes 1 官方中文博客 http://chinagdg.org/2016/03/machine-learning-re ...

  2. CSS随记

    在CSS中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.如果浮动非替换元素,则要指定一个明确的宽度:否则,它们会尽可能地窄. 注释:float属性不具有继承特性,就是说子元素 ...

  3. The solution for "Eclipse is running in a JRE, but a JDK is required"

    Open the eclipse folder and access the eclipse.ini file:   Before change it ,you will find it don’t ...

  4. ueditor 编辑器的配置 实现上传图片---附效果图

    由于项目需要,最近使用了ueditor,实现了图片上传功能,在此分享一下遇到的一些问题. 项目使用net+mvc框架搭建,则选择的是NET版本ueditor 编辑器(可去百度官网下载), 下载完成导入 ...

  5. 解决Admob Banner首次展示不显示的问题

    Admob banner在第一次虽然加载成功了,但是却不显示.然后等待60秒刷新自动刷新,banner就能正常显示. 如果你没遇到过这种情况,那可能你用的不是集成在play-services里的库,因 ...

  6. [Linux] 解压缩 tar 命令详解

    在Linux环境软件安装过程中通常需要用到解压命令,故在此总结下,以方便以后使用,若有不对之处,欢迎指正.   1. 文件压缩      通过压缩算法将文件的体积缩小,同时会将多个文件合并成至一起方便 ...

  7. Java可视化编程,基于布局管理器的UI设计

    在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...

  8. Python学习笔记(十五):类基础

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...

  9. 服务器:RAID、AHCI、IDE

    RAID 独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法.通过把数据放在多个硬盘上 ...

  10. Oracle 性能优化 — 统计数据收集[Z]

    ORACLE优化器的优化方式有两大类,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为C ...