小编Dan*_*anH的帖子

Perl:这是正确的还是坏的正则表达式,以及如何改进它?

我正在尝试捕获传感器的温度输出,为此我有以下相关线:

temp1:       +39.5 C  (crit = +105.0 C)
Core 0:      +40.0 C  (high = +100.0 C, crit = +100.0 C)
Core 1:      +40.0 C  (high = +100.0 C, crit = +100.0 C)
Run Code Online (Sandbox Code Playgroud)

我只需要每行的第一个温度(39.5,40.0,40.0).问题当然是因为在"Core 0"/"Core 1"中有一个额外的空间,所以我不能真正使用单词编号.

我已经提出了以下正则表达式,但是我被告知使用.*对于正则表达式来说是一种有点懒惰和肮脏的方法.

$core_data =~ s/^.*\+(.*)C\ .*$/$1/g;
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有更严格或更好的方法来实现这一目标,还是我做得好?

regex perl

6
推荐指数
1
解决办法
340
查看次数

检测是否在migrate/makemigrations命令的上下文中运行代码

我有一个具有动态选择的模型,如果我能保证在发出django-admin.py migrate / makemigrations命令时运行代码以防止它创建或警告无用的选择更改,我想返回一个空的选择列表.

码:

from artist.models import Performance
from location.models import Location

def lazy_discover_foreign_id_choices():
    choices = []

    performances = Performance.objects.all()
    choices += {performance.id: str(performance) for performance in performances}.items()

    locations = Location.objects.all()
    choices += {location.id: str(location) for location in locations}.items()

    return choices
lazy_discover_foreign_id_choices = lazy(lazy_discover_foreign_id_choices, list)


class DiscoverEntry(Model):
    foreign_id = models.PositiveIntegerField('Foreign Reference', choices=lazy_discover_foreign_id_choices(), )
Run Code Online (Sandbox Code Playgroud)

所以我想如果我能检测到运行上下文,lazy_discover_foreign_id_choices那么我可以选择输出一个空的选择列表.我正在考虑测试sys.argv,__main__.__name__但我希望有可能更可靠的方式或API?

python django django-migrations django-1.8

5
推荐指数
2
解决办法
734
查看次数

如何将 ROW_FORMAT=DYNAMIC 应用于现有表

我有一个包含大量长文本字段 (18) 以及许多其他各种整数和 varchar 字段的表。最近添加了一些额外的长文本字段,突然迫使我了解有关 8K 行大小限制的所有信息。数据库运行的是 Mysql 5.6.34,有问题的表当前是 Antelope / ROW_FORMAT=COMPACT。

我的理解是,在这种格式中,每列每行最多占用 768 个字节,直到溢出到单独的存储中。当太多的各种长文本获取大量数据时,这会导致我出现此错误:

行大小太大 (> 8126)。将某些列更改为 TEXT 或 BLOB 或使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 可能会有所帮助。在当前行格式中,768 字节的 BLOB 前缀是内联存储的。忽略表中的其余字段,如果所有 18 个长文本均为 768 字节,则主索引将为所有字段存储 13,824 字节。

我尝试将表更新为 ROW_FORMAT=DYNAMIC,期望这会将长文本的溢出阈值从 768 字节降低到仅 20 字节,因此应将所有长文本字段的最大主索引存储要求降低到 18 * 20 = 360 字节。我尝试按照以下方式进行更新:

ALTER TABLE mytable ROW_FORMAT=DYNAMIC;
OPTIMIZE TABLE mytable;
Run Code Online (Sandbox Code Playgroud)

没有错误并输出以下内容:

mydb.mytable 优化注意表不支持优化,改为重新创建+分析 mydb.mytable 优化状态 OK

如果我查看表的 CREATE TABLE 语法,我可以看到设置了 ROW_FORMAT=DYNAMIC。

然后,我尝试编写一行来填充所有长文本列,每个列大约 5.7kb,但是在阻止保存该行之前我只能填充其中的 10 个,并且 10 * 768 = 7,680 字节,在计算时其他非长文本必填字段非常接近 8kb 限制,表明 ROW_FORMAT=DYNAMIC 指令不适用于现有行。

我并不是特别希望通过转储/导入来重新创建数据库,但是因为它特别大,并且会代表延长的服务停机时间,我不确定在用尽其他选项之前是否可以证明这一点。

mysql innodb longtext

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

将perl变量发送到命令并捕获输出

我正在尝试将perl变量传递给系统命令,然后捕获输出以供以后使用,这是我当前的代码:

my $updatedCmd = "|svn diff --summarize $svnOldFull $svnNewFull";
my $updatedUrls = '';
open UPDATES, $updatedCmd or die "Can't get updates";
while(<UPDATES>) {
  print $_;
}

print "THIS_SHOULD_OUTPUT_AT_THE_END\n";
Run Code Online (Sandbox Code Playgroud)

这个问题是我得到了输出:

THIS_SHOULD_OUTPUT_AT_THE_END
A       /test
A       /test2
A       /deployment.txt
Run Code Online (Sandbox Code Playgroud)

我希望能够在允许我的perl脚本更进一步之前捕获所有命令输出.

perl stdout

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

Drupal Views:以编程方式更改View并执行到数组

基本上我有一个名为' promo ' 的视图,它建立在Nodequeue上.它被限制为1行,并按Global:Random排序

视图本身用于网站上的块.

另外,视图相同的视图用于节点引用字段' field_promo '.

我想要做的是从促销视图中获取最近的2行,并使用这些行作为field_promo的默认值.

这需要的是我:

  • 加载视图
  • 删除全局:随机排序
  • 添加创建的排序
  • 将寻呼机更改为显示2行而不是1行
  • 执行视图

...

写完所有这些并确保我不是白痴,我已经收集了我可能会在下面发布的解决方案,因为我花了这么长时间才找到它!(将在8小时后发布解决方案,如果你在发布之前解决问题,我会给出分数:P)

default drupal drupal-views

2
推荐指数
1
解决办法
5937
查看次数

将默认装饰器应用于类上的所有方法,并有选择地排除它们

我有一个带有大量方法的类,其中大多数方法要求首先运行一个方法才能填充该类中的列表。但是,我还想使用延迟加载,以便我可以创建实例而无需初始加载,直到调用需要繁重加载的方法为止。因此,我想创建一个类,假定所有方法都需要运行给定方法,除非有选择地排除该方法。这是我的伪代码:

@all_methods_run_load
class myClass
    things = []
    params = []

    @dont_run_load
    def __init__(self, params):
      self.params = params

    @dont_run_load
    def load(self):
      self.things = do_a_ton_stuff()

    def get_things():
      return self.things

    def get_some_things():
      return apply_a_filter(self.things)

    def get_first_thing():
      return self.things[0]

    def get_last_thing():
      return self.things[-1]
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的。我对于装饰者本人还很陌生,并且仍然会记住它们,所以我担心答案可能会令我震惊,但是这种想法横扫了我,我不禁进一步调查:)

python python-2.7 python-decorators

2
推荐指数
2
解决办法
330
查看次数

所以我想开始制作我自己的基于终端的游戏,这可行吗?

一些基本要求和愿望:

  • 视窗/Mac/Linux
  • 在终端窗口中以“全屏”运行,根据需要调整大小。
  • 网络多人游戏(宽松的要求,虽然肯定想要)
  • 基本声音
  • 想用 Python 编写,因为我正在学习。
  • 可作为单个包分发,因为没有非内置或相当普遍的运行时依赖项。

我提出了一些不可能的事情吗?Python 能胜任这项任务吗?我会在使用 Windows 终端时遇到问题吗?

我不一定一心要使用 Python,但我一直在为其他目的学习它,所以如果可能的话,我想“把它留在家里”。

感谢您的任何见解。

python terminal cross-platform

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

在视图GET方法上使用@csrf_protect

我的大部分GET请求都是由Angular触发的,这样可以很容易地在头文件中设置CSRF令牌.这已经开箱即用于POST请求,但是我想知道我是否也可以对GET请求使用CSRF保护.

我最初的直觉是@csrf_protect在View的get方法之前添加,例如:

class ProjectView(View):
    @csrf_protect
    def get(self, request, *args, **kwargs):
        ...
Run Code Online (Sandbox Code Playgroud)

但是这会产生错误:

AttributeError at /project
'ProjectView' object has no attribute 'COOKIES'

File "c:\Apps\msysgit\simpletask\lib\site-packages\django\middleware\csrf.py" in process_view
  95.                 request.COOKIES[settings.CSRF_COOKIE_NAME])
Run Code Online (Sandbox Code Playgroud)

所以我猜测有一些POST请求提供了哪些GET请求没有.有一个更好的方法吗?

此外,在任何人提到应该通过POST请求提取所有敏感信息之前(我最近已经看过几次),我试图坚持使用GET的原因是我正在尝试根据RESTful指南构建,这意味着GET请求用于提取数据,POST用于新记录,PUT用于更新,DELETE用于删除数据.

编辑:

由于似乎有一种情绪我不应该尝试上述内容,而我现在确实有点同意,我试图阻止的漏洞在这三个链接中讨论:

django django-views django-csrf python-2.7 django-1.5

1
推荐指数
2
解决办法
2414
查看次数

什么是检查一系列dicts是否都等于假的最快方法?

例如,给出以下数组:

[{}, {}, {}, {}, {}, {}, {}]
Run Code Online (Sandbox Code Playgroud)

我想测试是否有任何非空的dicts并返回True,如果是这样,例如:

[{}, {}, {}, {}, {}, {}, {}] == False
[{}, {}, {}, {}, {}, {}, {'key': 'val'}] == True
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

使用json.dumps/loads进行序列化/反序列化会产生AttributeError:'unicode'对象没有属性'read'

我试图从亚马逊FPS捕获付款结果信息,它有两种形式:

  • 用户使用GET和查询字符串参数重定向到原始服务器
  • Amazon将POST发送到具有匹配参数的原始服务器

我无法保证哪个请求会首先到达服务器,所以我将第一个请求存储在数据库中,通过序列化request.GETrequest.POST使用json.dumps,然后尝试在以后加载它以json.loads用于与其他请求进行比较:

初步要求:

type = request.META['REQUEST_METHOD']
sub_req = SubscriptionRequest()
params = getattr(request, type)
serialized_params = json.dumps(params)
if type == 'GET': sub_req.client_params = serialized_params
if type == 'POST': sub_req.server_params = serialized_params
sub_req.save()
Run Code Online (Sandbox Code Playgroud)

跟进请求:

stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params)
Run Code Online (Sandbox Code Playgroud)

错误:

  File "/var/www/test.com/htdocs/apps/subscription/services.py", line 147, in subscription_request_check_or_store
    stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params)
  File "/usr/lib/python2.7/json/__init__.py", line 274, in load
    return loads(fp.read(),
AttributeError: 'unicode' object has no …
Run Code Online (Sandbox Code Playgroud)

python django

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

在 ORM 查询中使用原始 SQL

是否可以使用您自己的原始 SQL 进行编辑或覆盖 ORM 生成的 SQL?或者 ORM 是否足够灵活,可以构建几乎任何我能想象到的查询?

具体来说,这是我试图进行的查询,也许通过 ORM 构建并不太难,尽管我看不到任何明显的构建路径。这是模型:

class AllocationStatus(Base):

    STATUS_RESERVED = 1
    STATUS_RELEASED = 2
    STATUS_CHOICES = (
        (STATUS_RESERVED, "Reserved"),
        (STATUS_RELEASED, "Released"),
    )

    __tablename__ = 'allocation_status'

    id = Column(Integer, primary_key=True)
    allocation_id = Column(Integer, ForeignKey('allocation.id'))
    allocation = relationship('Allocation')
    status = Column(Integer())
Run Code Online (Sandbox Code Playgroud)

这个想法是,对于给定的外键 ID allocation_id,我想知道 中的最新记录allocation_status

为了在原始 SQL 中实现这一点,我的目标是以下查询:

SELECT allocation_status.*
FROM allocation_status
LEFT JOIN allocation_status allocation_status2
    ON allocation_status.allocation_id = allocation_status2.allocation_id
    AND allocation_status.id < allocation_status2.id
WHERE allocation_status2.id IS NULL;
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

Mockery没有嘲笑以前需要的模块?

views.js

controllers = require '../../modules/fixture/controllers.js'
exports.custom = (db) ->
  (req, res) ->
    controllers.custom req.body
      , (result) ->
        res.json result : result
      , (error) ->
        res.json 400, error : error
Run Code Online (Sandbox Code Playgroud)

test.js

mockery = require "mockery"

exports.tests = (app, db, config) ->
  describe '#routes', ->
    describe '/fixture/custom', ->
      it 'should return status 400 if no request body was provided', (done) ->
        request app
          .post '/fixture/custom'
          .send
            body :
              players : []
          .expect 400, done

  describe '#views', ->
    describe '#custom', ->
      controller = …
Run Code Online (Sandbox Code Playgroud)

mocking node.js coffeescript

0
推荐指数
1
解决办法
2293
查看次数