小编Joh*_*ohn的帖子

是否有任何其他良好的替代zc.buildout和/或virtualenv安装非python依赖项?

我是一个团队的成员,即将推出基于python(Django)的测试版网站和附带的后端工具套件.过去几周,该团队的规模从2个增加到4个,我们预计未来几个月的增长率至少会持续增长.已经开始困扰我们的一个问题是让每个人都能在配置开发环境和安装所有合适的鸡蛋等方面加快速度.

我正在寻找简化此过程的方法,并使其不易出错.zc.buildout和virtualenv看起来都是解决这个问题的好工具,但两者似乎都主要集中在特定于python的问题上.我们有几个小的子项目在其他语言(特别是Java和Ruby)以及许多必须在本地编译的python扩展(lxml,MySQL驱动程序等).事实上,我们方面最大的荆棘之一就是针对适当版本的共享库编译了这些扩展,以避免段错误,malloc错误和各种类似的问题.我们有4种不同的开发环境 - 在ppc上有1只豹子,在intel上有1只豹子,1只ubuntu和1只窗户,这对我们没有帮助.

从dos/unix提示符开始,最理想的是大致类似的东西:

$ git clone [repository url] ... $ python setup-env.py ...

然后执行zc.buildout/virtualenv所做的事情(复制/符号链接python解释器,提供一个干净的空间来安装鸡蛋)然后安装所有必需的鸡蛋,包括安装任何本机共享库依赖项,安装ruby项目,java项目等.

显然,这对于开发环境以及在登台/生产服务器上部署都很有用.

理想情况下,我希望通过python将可以完成此任务的工具写入/可扩展,因为这是(并且将永远是)我们团队的通用语言,但我对其他语言的解决方案持开放态度.

那么,我的问题是:是否有人对更好的替代方案有任何建议,或者他们可以使用这些解决方案之一分享哪些经验来处理更大/更广泛的安装基础?

python deployment build-process

7
推荐指数
1
解决办法
2442
查看次数

最好先预先开发跨浏览器代码,或者为一个浏览器开发,然后返回并在以后的其他浏览器中使用它们?

我正在寻找有关人们开发跨浏览器的网站的经验的反馈.在我看来,至少有两种明显的方法来完成使您的网站/ webapp跨浏览器工作的任务:

  1. 在每一步中不断测试所有支持的浏览器; 要么
  2. 选择一个浏览器,将其中的所有内容作为参考实现,然后使所有其他浏览器与参考实现相匹配.

每种方法都有一个明显的缺点 - #1的问题是你最终会做很多不必要的工作 - 特别是如果你正在开发一个经历了大量迭代/原型设计/尖峰等的webapp.你会做的一堆东​​西在浏览器中工作,随后将被丢弃/删除.

方法#2的缺点在于,虽然它使初始开发更快更痛苦,但却更难以弄清楚某些特定错误出现的位置,特别是对于更复杂的问题 - 而如果你一直在为所有人开发浏览器马上你应该立即抓住它并知道引入问题的变化.

一个有点明显的第三种选择是混合方法,但在我看来,你最终会因为体验#1和#2的问题而失去更多,而不是从两者的好处中获得.

你发现什么是应对这一挑战最有效的方法?

cross-browser

7
推荐指数
1
解决办法
787
查看次数

在长时间运行的流程中跟踪警告/错误的最佳做法是什么?

我们的团队有许多流程,我们手动运行,但可能会运行很多天.这些过程会对大量实体(网页,数据库行,图像,文件等)执行各种操作.显然有时会出现故障,我们必须设计或处理以优雅地处理这些故障并继续前进,这样整个工作就不会失败.

根据所讨论的特定过程,故障的发生率,严重程度和紧急程度会有所不同.在某些情况下,我们会在发生罕见但重要的错误时发送电子邮件,在其他情况下,我们只需记录并继续,依此类推.

问题是我们有不同的错误处理代码分散在各处,而且当我们"记录并继续"时,没有人回过头来读取日志,因此没有人知道发生了什么问题.我们不能默认发送所有问题的电子邮件,因为只会有太多的电子邮件.

这些是长时间运行的进程,但不是守护程序,如SNMP或Nagios之类的东西可能是合适的.当然这是一个相当普遍的问题,但我似乎无法在网上找到很多解决方案.我听说有人在谈论使用log4j(或其他类似的日志包)来登录数据库等,这似乎可能是朝着正确方向迈出的一步,但是现在肯定还有更复杂的解决方案. ?我正在想象你的记录器将事件写入数据库的东西,并且有一个类似Nagios的Web界面,可以让你看到实时的哪些进程发生了什么错误,以及为特定模式配置电子邮件警报等.

这样的事情存在吗?如果没有,您用什么方法成功处理类似的问题?

(对于我们的大部分代码库都是在python中值得的,但我想这个想法的任何体面实现都基本上是非语言特定的,显然任何概念解决方案都是如此).

更新:我只是花了一些时间看Chainsaw,这是我正在寻找的东西,但我希望它是一个webapp而不是桌面应用程序,并具有警报功能.

更新:我刚刚发现了hoptoadapp例外,它们都与我的想法有所不同,尽管两者都是专门针对Rails的.

logging monitoring

5
推荐指数
1
解决办法
294
查看次数

HTTP版本或标题是否会影响网页的可视外观?

我知道,我会认为答案显然也是"不",但我遇到了一个奇怪的情况,当我从我们的登台服务器查看我的网站时,它看起来比我从本地开发服务器查看时略大.我用Charles确认所有的内容 - HTML,图像,CSS,javascript,一切都是一样的.

流量的唯一区别是(因为本地站点是从Django开发模式服务器提供的)响应头如下所示:

HTTP/1.0 200 OK
Server  WSGIServer/0.1 Python/2.5.2
Date    Thu, 04 Sep 2008 23:56:10 GMT 
Vary    Cookie
Content-Length  2301
Content-Type    text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

而在登台服务器上(Django在Apache中运行),标题如下所示:

HTTP/1.1 200 OK
Date    Thu, 04 Sep 2008 23:56:06 GMT
Server  Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2 PHP/5.2.4-2ubuntu5 with Suhosin-Patch
Vary    Cookie
Content-Length  2301
Content-Type    text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

因此,据我所知,唯一的区别是HTTP/1.1与HTTP/1.0,服务器标识(Apache与WSGIServer)以及日期/服务器标头的顺序.

为了进一步详细说明外观上的差异,基本上看起来好像登台服务器上的站点版本被"放大"了大约10%.例如,支配我们主页的主要徽标宽度为220像素,但来自我们的登台服务器的服务器显示为245像素宽.页面上的其他所有内容(其他图像,文本,间距等)也相应地更大.

这完全在Firefox 3中.我目前没有任何其他浏览器可供测试.

以前有没有其他人遇到过这种奇怪的行为?我很茫然.

python django firefox

3
推荐指数
1
解决办法
170
查看次数