小编tat*_*lar的帖子

Array.join("\n")不是用换行符连接的方式吗?

我有一个阵列..

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我想要一个包含由换行符分隔的所有元素的字符串.

1

2

3

4
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,[1,2,3,4].join("\n")我得到了

1\n2\n3\n4
Run Code Online (Sandbox Code Playgroud)

我觉得有一个明显的答案,但我找不到它!

ruby ruby-on-rails

61
推荐指数
4
解决办法
6万
查看次数

如何在多处理器系统上生成并行子进程?

我有一个Python脚本,我想用作另一个Python脚本的控制器.我有一个64位处理器的服务器,所以想要产生第二个Python脚本的64个子进程.子脚本被调用:

$ python create_graphs.py --name=NAME
Run Code Online (Sandbox Code Playgroud)

其中NAME是XYZ,ABC,NYU等.

在我的父控制器脚本中,我从列表中检索名称变量:

my_list = [ 'XYZ', 'ABC', 'NYU' ]
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,作为孩子产生这些过程的最佳方法是什么?我想一次将子项数限制为64,因此需要跟踪状态(如果子进程已完成或未完成),这样我就可以有效地保持整个代的运行.

我查看了使用子进程包,但拒绝它,因为它一次只生成一个子进程.我终于找到了多处理器包,但我承认被整个线程与子进程文档所淹没.

现在,我的脚本subprocess.call一次只生成一个孩子,看起来像这样:

#!/path/to/python
import subprocess, multiprocessing, Queue
from multiprocessing import Process

my_list = [ 'XYZ', 'ABC', 'NYU' ]

if __name__ == '__main__':
    processors = multiprocessing.cpu_count()

    for i in range(len(my_list)):
        if( i < processors ):
             cmd = ["python", "/path/to/create_graphs.py", "--name="+ my_list[i]]
             child = subprocess.call( cmd, shell=False )
Run Code Online (Sandbox Code Playgroud)

我真的希望它一次产生64个孩子.在其他stackoverflow问题中,我看到人们使用Queue,但似乎这会产生性能损失?

python subprocess exec multiprocessing

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

Airflow - 如何将xcom变量传递给Python函数

我需要引用一个由a返回的变量BashOperator.我可能做错了所以请原谅我.在我task_archive_s3_file,我需要从中获取文件名get_s3_file.任务只是打印{{ ti.xcom_pull(task_ids=submit_file_to_spark) }}为字符串而不是值.

如果我使用bash_command,则值正确打印.

get_s3_file = PythonOperator(
    task_id='get_s3_file',
    python_callable=obj.func_get_s3_file,
    trigger_rule=TriggerRule.ALL_SUCCESS,
    dag=dag)

submit_file_to_spark = BashOperator(
    task_id='submit_file_to_spark',
    bash_command="echo 'hello world'",
    trigger_rule="all_done",
    xcom_push=True,
    dag=dag)

task_archive_s3_file = PythonOperator(
    task_id='archive_s3_file',
#    bash_command="echo {{ ti.xcom_pull(task_ids='submit_file_to_spark') }}",
    python_callable=obj.func_archive_s3_file,
    params={'s3_path_filename': "{{ ti.xcom_pull(task_ids=submit_file_to_spark) }}" },
    dag=dag)

get_s3_file >> submit_file_to_spark >> task_archive_s3_file
Run Code Online (Sandbox Code Playgroud)

airflow

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

迭代Django中的相关对象:循环查询集或使用单行select_related(或prefetch_related)

我有一个时事通讯应用程序,其中一个时事通讯在每个问题中都有多篇文章.我想在线显示一个摘要页面,列出时事通讯年份,数量和标签,然后在无序列表中显示问题中的所有文章.我对Django很新,所以我想确定最好的方法.

我定义了模型(只是相关部分):

Models.py:

class Newsletter(models.Model):
    volume = models.ForeignKey(Volume)
    year   = models.IntegerField()
    season = models.CharField(max_length=6, choices=VOLUME_SEASON)
    label  = models.CharField(max_length=20)
    number = models.IntegerField()

class Article(models.Model):
    newsletter = models.ForeignKey(Newsletter)
    section    = models.ForeignKey(Section)
    title      = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

我想在网上看到的内容如下:

<h2>Spring 2012</h2>
<p>Volume 14, Number 1</p>
<ul>
    <li>Foo</li>
    <li>Bar</li>
    <li>Baz</li>
</ul>

<h2>Winter 2011</h2>
<p>Volume 13, Number 4</p>
<ul>
  <li>Boffo</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

很简单.但是,我对编写视图的最佳方式感到困惑.是否使用:

  • zip()在模板中迭代的两个列表
  • 使用select_related()查询集
  • 使用prefetch_related()查询集

我使用第一个选项工作:

Views.py:

from django.shortcuts import render_to_response, get_object_or_404
from www.apps.newsletter.models import Newsletter, Article

def index(request):
    article_group …
Run Code Online (Sandbox Code Playgroud)

python django orm

15
推荐指数
1
解决办法
4万
查看次数

如何模糊Django中"自由输入"文本字段中包含的电子邮件地址

在我的模型中,我经常使用旨在包含大量纺织品格式输入的文本字段.我想自动模糊输入这些文本字段的任何电子邮件地址,这样当它们在模板中打印时,它们对蜘蛛是不可见的.

有一种聪明的方法吗?

更新:

根据lazerscience的答案,这是我最终使用的代码.我将文件命名为encode_mailto.py,并将其放在templatetags目录中,放在我安装到大多数django项目中的"实用程序"类型应用程序中.

import re
import random
from django.utils.safestring import mark_safe
from django import template
register = template.Library()

email_link_pat = re.compile(r'<a\s+href=("|\')?mailto:[^>]+>[^<]*</a>')
email_pat = re.compile(r'\b[-.\w]+@[-.\w]+\.[a-z]{2,4}\b')

def get_script(m):
    code_list = []
    for c in m.group(0):
        d = ord(c)
        x = random.randint(0, d)
        code_list.append("%d+%d" % (x, d-x))

    return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % \
        ",".join(code_list)

def encode_mailto(text):
    text = email_link_pat.sub(get_script, text)
    text = email_pat.sub(get_script, text)
    return mark_safe(text)

register.filter('encode_mailto', encode_mailto)</pre>
Run Code Online (Sandbox Code Playgroud)

然后在模板中使用它,如下所示:

{% load encode_mailto %}
{{"A bunch of text with an email address emailaddress@host.com"|encode_mailto }}
Run Code Online (Sandbox Code Playgroud)

email django obfuscation automation textile

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

优化jQueryMobile的代码:仅在需要时选择性地包含外部JS文件的问题

我正在使用jQueryMobile作为移动应用程序.显然我希望UI能够非常快速地加载,但是应用程序有多个工具,因此我只想在导航到的时候为"页面"加载相关的外部JS库.对于主应用程序(90%的页面),我只想要jQueryMobile核心文件(即来自Google AJAX库和jQueryMobile JS&CSS的最新jquery核心).但是,对于剩余的10%,我需要启用地理位置的Google Maps v3(因此Google Gears外部库)和MarkerClusterer库(我有400个标记,我只想在必要时绘制).

据我了解jQueryMobile是如何工作的(所有这些都是通过内部AJAX请求),您必须在应用程序初始化时加载整个应用程序的所有库.这使得我的应用程序在用户第一次请求移动站点时非常繁重(所有核心文件,以及所有map/gelocation/marker集群文件).我想避免这种情况发生,因为它会吓跑许多潜在用户(特别是只有我的用户的一部分需要地理定位的好处).

我尝试在相关页面的末尾(在页脚div之前)加载Google Maps组件,并尝试将它们放入相关页面的<head>标记中.但是这两个都无法初始化(使用附加到函数的console.log()输出进行检查).

是的,在你问之前,我正在使用"pagecreate"live()函数并且正在寻找正确的div(如果我将与谷歌地图相关的所有内容放入根页头标记中,一切正常就可以了)

我觉得这一定是一个非常常见的问题:使用jQueryMobile选择性加载页面组件.我在网上找不到任何东西 - 大多数jQueryMobile教程都是常见的花园'Hello World!' 多种多样,所以如果你有什么可以提供我的全部耳朵!有选择性加载教程的链接也欢迎!

提前致谢!

ajax jquery google-maps-api-3 google-maps-markers jquery-mobile

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

用于 Django 应用程序的 ProxyPass 和 ProxyPassReverse

我有一个来自我最初的Django 服务问题的后续问题,即如何开发 Django 应用程序并从与我的主要基于 PHP 的站点相同的服务器为它们提供服务(所有这些都是我的网站从静态和 PHP 驱动的网站进行更大迁移的一部分)到一系列 Django 应用程序)。

我不能完全使用我提供的名称服务器解决方案,而是使用 mod_wsgi 将我的 Django 应用程序部署在不同的端口 (8000) 上。但是,现在我需要将 Django 应用程序实际集成到主站点中。在我的 Apache 2.0 配置文件(例如http://www.example.com)中,我添加了以下 ProxyPass 命令(在我的 mod_wsgi 初始化之后):

ProxyPass        /app/newsletter     http://www.example.com:8000/app/newsletter
ProxyPassReverse /app/newsletter     http://www.example.com:8000/app/newsletter
Run Code Online (Sandbox Code Playgroud)

在这里,我希望任何请求:

http://www.example.com/app/newsletter
Run Code Online (Sandbox Code Playgroud)

将成功代理到:

http://www.example.com:8000/app/newsletter
Run Code Online (Sandbox Code Playgroud)

一切都会好起来的。

然而,这种情况并非如此。Apache 挂起 5 分钟左右(制作此问题所需的时间)然后吐出502 代理错误

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /app/newsletter/.

Reason: Error reading from remote server
Run Code Online (Sandbox Code Playgroud)

在此响应后查看我的 …

apache django mod-wsgi mod-proxy proxypass

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

如何确保我的 Quilt 数据包在目录 UI 视图中默认显示相关信息?

在目录视图中查看Quilt 数据包时,如何确保用户的相关信息和数据从 N 层文件夹/文件向上冒泡到数据包登陆视图?

python json quiltdata

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

d3.js线和面积图 - 想要添加由两个点定义的额外线并表示阈值/最小值(为了便于查看)

我有一个可行的d3.js可视化,它将数据返回率显示为复合线和面积图(http://anf.ucsd.edu/tools/data_return_rates/).

x轴是时间,y轴是数据返回率百分比.您可以单击可视化顶部的各种按钮以在数据集之间切换(仅解析JSON文件).

除了原始数据图之外,我想添加一个简单的行来定义所需的最小数据返回率(85%).这纯粹是一种视觉辅助工具,可帮助用户确定数据返回率是否高于此最小值/阈值.我使用数据集上的d3.min()和d3.max()方法计算此"最小值"线(仅两个点)的x值(时间).y值只是整数(85):

var min_data_return = [ 
      {   
      "readable_time": d3.min(data, function(d) { return d.readable_time; }),
      "value": 85
      },  
      {   
      "readable_time": d3.max(data, function(d) { return d.readable_time; }),
      "value": 85
      }   
  ]
Run Code Online (Sandbox Code Playgroud)

(我做了一些其他的转换,以确保一切正常)

现在,在我想要将这个最小化线添加到可视化之前,我只是做了以下操作来创建区域和线图,其工作原理如下:

svg.select("path.area").data([data]);
svg.select("path.line").data([data]);
Run Code Online (Sandbox Code Playgroud)

稍后在脚本中还有一些其他绘图代码:

svg.select("path.area").attr("d", area);
svg.select("path.line").attr("d", line);
Run Code Online (Sandbox Code Playgroud)

我读过的所有d3.js例子都说要创建多行,你只需要让你的数据数组包含你想要绘制的所有数据集,所以在上面的例子中,这个:

svg.select("path.line").data([data]);
Run Code Online (Sandbox Code Playgroud)

变为:

svg.select("path.line").data([data, min_data_return]);
Run Code Online (Sandbox Code Playgroud)

这应该工作.但事实并非如此.我看到数据集线如前所示,但不是min_data_return行.

我有什么想法我做错了吗?

请点击这里:https://gist.github.com/2662793

在Gist中,查看第133-140行(搜索注释字符串OPTION).这些是与此相关的唯一线路.为了完整起见,我将整个脚本放入Gist中.

提前致谢!

javascript d3.js

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

如何使用Boto3加密我现有的RDS实例?

我想加密我现有的rds实例.我正在使用Boto脚本来修改数据库实例.

modified_rds_attributes = rds_conn_boto3.modify_db_instance(
    DBInstanceIdentifier=id,
    StorageEncrypted=True
)
Run Code Online (Sandbox Code Playgroud)

是否可以加密现有的RDS数据库实例?如果是,那么我该如何实现这项任务呢?

encryption rds amazon-web-services python-2.7 boto3

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