小编Dav*_*lin的帖子

如何获取已安装的CPAN模块列表?

除了尝试

perldoc <module name>
Run Code Online (Sandbox Code Playgroud)

单独用于任何CPAN模块,我喜欢或浏览文件系统并查看目录我不知道我们安装了哪些模块.

获得安装的每个CPAN模块的最佳列表的最简单方法是什么?从命令行或其他方式.

perl cpan

82
推荐指数
13
解决办法
21万
查看次数

无法使用Python 2.6导入SQLite

我在Unix上运行Python 2.6,当我运行交互式提示符(SQLite应该是预装的)时,我得到:

[root@idev htdocs]# python
Python 2.6 (r26:66714, Oct 23 2008, 16:25:34)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sqlite
>>>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

python sqlite

10
推荐指数
3
解决办法
2万
查看次数

在使用mod_perl时,如何仅在编译时执行低效代码?

我一直在对我在Perl中编写的框架的性能进行基准测试,并且我的每秒请求数比现有代码库减少了50%(一些命中率是可以理解的,因为我们将从程序意义上的代码转换为OOP MVC框架).

应用程序在mod_perl下运行,我已将Moose和我的所有框架代码添加到startup.pl脚本中,该脚本本身使我的请求每秒加倍.我希望进一步增强这个数字,使其尽可能接近现有数量.我们认为这是过早的优化,但是我想解决一些明显的低效问题,看看它如何影响性能.

像大多数框架一样,我有一个配置文件和一个调度程序.配置部分由Config :: General处理,因此需要一些IO和解析来将我的配置文件加载到应用程序中.我在这里看到的最大问题是我正在为每一个请求进行此操作!

在我的应用程序上运行Devel :: Dprof指向Config :: General :: BEGIN和一堆相关的IO模块作为不是Moose的主要慢点之一.所以我想要做的事情,以及事后更有意义的是利用mod_perl的持久性和startup.pl编译的东西,只做一次加载配置文件的工作 - 当服务器启动时.

问题是我不太熟悉它是如何工作的.

目前每个项目都有一个非常精简的PerlHandler引导类,如下所示:

use MyApp; 
MyApp->new(config_file => '/path/to/site.config')->run();
Run Code Online (Sandbox Code Playgroud)

MyApp.pm继承自框架Project模块,该模块具有以下代码:

my $config = Config::General->new(
                -ConfigFile => $self->config_file,
                -InterPolateVars => 1,
             );    

$self->config({$config->getall});
Run Code Online (Sandbox Code Playgroud)

要仅在编译时执行此操作,我的引导程序和项目基础模块都必须更改(我认为),但我不确定要进行哪些更改并仍然保持代码良好和精益.任何人都能指出我在正确的方向吗?

UPDATE

我在每个项目模块方法中尝试了BEGIN BLOCK,如ysth在他的回答中所描述的那样.所以我现在有:

package MyApp::bootstrap;
use MyApp;

my $config;
BEGIN
{
    $config = {Config::General->new(...)->getall};        
}

sub handler { ..etc.
    MyApp->new(config => $config)->run();
Run Code Online (Sandbox Code Playgroud)

这个快速变化让我每秒的请求增加了50%,证实了我的想法,配置文件是一个值得修复的主要瓶颈.我们的crotchety旧开发机器上的基准数字是60rps,我的框架已经从30rps变为45rps单独进行此更改.对于那些说Moose很慢并且编译时间很短的人来说......在启动时编译我所有的Moose代码时我得到了相同的(50%)增加,就像我预先编译我的配置文件一样.

我现在唯一的问题是这违反了DRY主体,因为相同的Config :: General->新代码在每个BEGIN块中,只有配置文件的路径不同.我有一些不同的策略来限制这个,但我只是想发布这个变化的结果.

perl performance mod-perl

9
推荐指数
1
解决办法
445
查看次数

计算忽略搜索引擎的页面的视图数量?

我注意到StackOverflow对每个问题都有一个视图计数,并且这些视图编号相当低且准确.

我的一个网站上有类似的东西.每当页面加载到后端代码中时,它基本上都会记录"命中".不幸的是,它也为搜索引擎命中率提供了膨胀和不准确的数字.

我想一种不计算机器人的方法是在页面加载后用AJAX调用进行视图计数,但我确信还有其他更好的方法可以忽略搜索引擎中的搜索引擎,同时仍让它们进入抓取您的网站.你知道任何?

search-engine website-metrics

8
推荐指数
1
解决办法
1350
查看次数

你如何处理小数据集?

对于非常小的数据集,我工作的策略通常是将它们粘贴到文本文件中,但根据我的经验,这可能是一个令人头疼的问题.数据通常来自数据库,当它没有时,设置/存储数据的过程通常隐藏在代码中.使用数据库,您通常可以查看可用的所有数据以及与其他数据相关的方式.

有时对于非常小的数据集我只是将它们存储在代码中的内部数据结构中(如A Perl哈希),但是当需要进行更改时,它就在开发人员手中.

那么如何处理少量不经常更改的数据呢?您是否设置了何时使用数据库表或文本文件或..的标准?

我很想把数据库表用于绝对的一切,但我不确定是否有任何影响.

编辑:对于上下文:

我被要求在网站上为少数公司添加一个新的联系表格,将来偶尔会添加更多的联系表格.除了公司没有联系电子邮件地址..这些公司内部的用户这样做(因为他们通过自己的帐户发布工作).现在,我们想要一个"推测应用程序"类型的功能,并且表单需要一个电子邮件地址来发送这些应用程序.但我们也不希望将电子邮件地址作为表单中的属性,否则垃圾邮件发送者只能将其用作开放式电子邮件网关.很明显,我们需要与公司建立ID - > contact_email类型的关系.

所以,我可以在一个包含数百万行的表中添加一列,从字面上讲,大约20次,或者创建一个最多可容纳20行的新表.通常我们过去如何处理这个问题只是创建一个讨厌的文本文件并从那里读取它.但是这会产生维护噩梦,并且当它们依赖的数据发生变化时,这些文本文件经常被查看.也许这是这个过程的错误,但我只是对听到这个问题的看法感兴趣.

database theory

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