小编Ago*_*gos的帖子

列表理解与lambda +过滤器

我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.

我的代码看起来像这样:

my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)

但后来我想,这样写它会不会更好?

my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)

它更具可读性,如果需要性能,可以取出lambda来获得一些东西.

问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?

python lambda functional-programming list filter

793
推荐指数
12
解决办法
65万
查看次数

为什么typeof null的值在循环内发生变化?

在Chrome控制台中执行此代码段:

function foo() {
    return typeof null === 'undefined';
}
for(var i = 0; i < 1000; i++) console.log(foo());
Run Code Online (Sandbox Code Playgroud)

应打印1000次false,但在某些机器上将打印false多次迭代,然后true用于其余部分.

在此输入图像描述

为什么会这样?这只是一个错误吗?

javascript v8

109
推荐指数
3
解决办法
7263
查看次数

基于类的视图有什么优势?

我今天读到Django 1.3 alpha正在发售,最引人注目的新功能是引入基于类的视图.
我已经阅读了相关的文档,但我发现很难看到使用它们可以获得的大优势,所以我在这里要求一些帮助来理解它们.
让我们从文档中获取一个高级示例.

urls.py

from books.views import PublisherBookListView

urlpatterns = patterns('',
    (r'^books/(\w+)/$', PublisherBookListView.as_view()),
)
Run Code Online (Sandbox Code Playgroud)

views.py

from django.shortcuts import get_object_or_404
from django.views.generic import ListView
from books.models import Book, Publisher

class PublisherBookListView(ListView):

    context_object_name = "book_list"
    template_name = "books/books_by_publisher.html",

    def get_queryset(self):
        self.publisher = get_object_or_404(Publisher, name__iexact=self.args[0])
        return Book.objects.filter(publisher=self.publisher)

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(PublisherBookListView, self).get_context_data(**kwargs)
        # Add in the publisher
        context['publisher'] = self.publisher
        return …
Run Code Online (Sandbox Code Playgroud)

django django-class-based-views

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

手动登录没有密码的用户

我希望你能帮助我找到在使用密码的情况下实现手动(服务器端启动)登录的最佳方法.让我解释一下工作流程:

  • 用户注册
  • 谢谢!已发送包含激活链接的电子邮件blablabla
  • (帐户现在存在但标记为未启用)
  • 用户打开电子邮件,点击链接
  • (帐户已启用)
  • 谢谢!您现在可以使用该网站

我想要做的是在用户点击电子邮件链接后登录用户,这样他就可以立即开始使用该网站.

我不能使用他的密码,因为它是在DB中加密的,是编写自定义身份验证后端的唯一选择吗?

django login django-authentication email-confirmation

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

Django从查询集中排除特定实例而不使用字段查找

有时我需要确保某些情况下是从查询集排除.
这是我通常这样做的方式:

unwanted_instance = MyModel.objects.get(pk=bad_luck_number)
uninteresting_stuff_happens()
my_results = MyModel.objects.exclude(id=unwanted_instance.id)
Run Code Online (Sandbox Code Playgroud)

或者,如果我有更多的:

my_results = MyModel.objects.exclude(id_in=[uw_in1.id, uw_in2.id, uw_in3.id])
Run Code Online (Sandbox Code Playgroud)

这'感觉'有点笨重,所以我试过:

my_ideally_obtained_results = MyModel.objects.exclude(unwanted_instance)
Run Code Online (Sandbox Code Playgroud)

哪个不起作用.不过,我看到这里的SO是一个可以使用子查询作为参数排除.
我运气不好吗?我缺少一些功能(检查文档,但没有发现任何有用的指针)

django filtering django-queryset

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

调试PHP Mail()和/或PHPMailer

我很困惑从PHP脚本发送邮件时遇到问题.一些数据:

  • 共享主机,无SSH访问,仅托管提供商面板
  • PHP版本5.2.5
  • 去年我建立了一个网站,使用相同的托管发送邮件没有问题
  • 假设域名为"domain.com",我的私人地址为"myaddress@mydomain.com",以便在以下代码中保持一致.

这是代码:

<?php
error_reporting(E_ALL); 
ini_set("display_errors", 1);

$to = "myaddress@mydomain.com";
$subject = "Hi";
$body = "Test 1\nTest 2\nTest 3";
$headers = 'From: info@domain.com' . "\r\n" .
    'errors-to: myaddress@mydomain.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

if (mail($to, $subject, $body, $headers)) {
    echo("Message successfully sent");
} else {
    echo("Message sending failed");
}

require('class.phpmailer.php');
$message = "Hello world";
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->AddAddress("myaddress@mydomain.com", "Agos");
$mail->SetFrom("info@domain.com","My Site");
$mail->Subject = "Test Message";
$mail->Body = $message;
$mail->Send();
?>
Run Code Online (Sandbox Code Playgroud)

这就是我得到的: …

php email sendmail

27
推荐指数
1
解决办法
12万
查看次数

Python:从间隔映射到值

我正在重构一个函数,给定一系列隐式定义区间的端点,检查区间中是否包含一个数字,然后返回一个对应的(以任何可计算的方式不相关).现在处理工作的代码是:

if p <= 100:
    return 0
elif p > 100 and p <= 300:
    return 1
elif p > 300 and p <= 500:
    return 2
elif p > 500 and p <= 800:
    return 3
elif p > 800 and p <= 1000:
    return 4
elif p > 1000:
    return 5
Run Code Online (Sandbox Code Playgroud)

这是IMO非常可怕,缺乏间隔和返回值都是硬编码的.当然可以使用任何数据结构.

python range intervals

14
推荐指数
1
解决办法
6887
查看次数

如何在没有绝对定位的情况下将文本放在图像上或将图像设置为背景

我试图看看是否可以在图像上放置一些文本而不使用position:absolute或者将图像作为元素的背景.
限制的原因是HTML代码进入电子邮件,事实证明hotmail既不支持也不支持.
我记得当我第一次开始学习CSS时,摆弄图像周围的浮动文本时,我常常最后快速地将图像传遍整个图像.可悲的是,我不能重现那种行为.

全文(编辑):
我从图形设计师那里得到了一个精美的布局.它基本上是一个很好的背景图片,标识链接到网站,基本上是中间的"文本到达"区域.
像往常一样,在这些情况下,我正在使用表来确保所有内容都保持原位并运行crossbrowser + crossmailclient.
问题来自于中间的"文本到此处"区域不是白色矩形,而是具有一些背景图形.
经过一些测试,看起来Live Hotmail似乎不喜欢这两个位置:绝对或背景图像; 相对利润也不好,因为它们会破坏其余的布局.

当前版本,适用于任何其他邮件客户端/网站:

...
<td>
<img src='myimage.jpg' width='600' height='400' alt=''>
<p style="position: absolute; top: 120px; width: 500px; padding-left: 30px;">
blablabla<br>
yadda yadda<br>
</p>
</td>
...
Run Code Online (Sandbox Code Playgroud)

当然,"这是不可能的"可能是一个完全可以接受的答案,但我希望不是;)

html css css-position hotmail css-float

13
推荐指数
2
解决办法
7万
查看次数

我应该将一个大的Django项目拆分成许多应用程序吗?

简短版本:
我有一个正在开发和测试的Django项目(尚未投入生产),这个项目正在慢慢变得"不那么小",最近我一直想知道为了保持可管理性而将事情分开.

项目布局:
该项目包括我不开发的各种可重用应用程序,例如avatar,django_evolution,压缩器,以及由我开发的更大的单片,我说的应用程序,其中包含该站点的主要功能.视图文件达到1k行,有12个模型,但功能几乎全部到位(即我不期望它们增长10倍).

疑问:
可以将模型和视图区分为三个"组",从而导致分成三个应用程序,但是:

  • 绝对没有可重用性,因为应用程序彼此紧密联系在一起
  • 有一些"公共区域"的问题,如主页,虽然我读过这些可能只是放在任何项目之外.

最后,我的问题:
我可以通过拆分我的应用程序获得任何优势吗?
如果仅仅是为了"大"文件的可读性和可维护性,我可以将这些文件拆分并放在一个文件夹中(正如许多相关问题的答案所示).

django django-project-architect

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

如何调试等待 React.lazy 导入超时的测试

我有一个React+vite应用程序,我正在为其编写测试以涵盖应用程序启动时的前端路由重定向逻辑。

路由由 v6 处理react-router,所有与路由相关的组件都包装在React.lazy. 测试是由运行的vitest,我正在使用react-testing-library助手

所有测试都是相似的,看起来像这样

it('Redirects from app root to red room if the user has a red shirt', async () => {
    getUser.mockReturnValue(redShirtUser);
    render(MyTestedComponent, { wrapper });

    await waitFor(() => expect(screen.getByText('Welcome to the red room'));
    expect(history.location.pathname).toBe('/red-room');
  });
Run Code Online (Sandbox Code Playgroud)

然而,其中一项测试花费的时间比其他测试要长得多,甚至waitFor超时。我可以指定更长的超时waitFor,但它仍然无法在 CI 上可靠地运行。如果测试是其文件中唯一的测试/唯一正在执行的测试,也会发生这种情况。

我已经将缓慢的部分(通过调试的魔力console.log)缩小为惰性import()语句 - 导入并执行模块需要花费很多时间(秒)。

我该如何调试这个?是否有已知的因素会导致(惰性)导入变慢?

testing dynamic-import reactjs react-testing-library vitest

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