小编pok*_*tad的帖子

字典/地图/哈希的Python命名约定

虽然其他问题已经解决了更广泛的序列模块类别,但我提出这个非常具体的问题:

"你为字典使用什么命名约定?为什么?"

我一直在考虑的一些命名约定样本:

# 'value' is the data type stored in the map, while 'key' is the type of key
value_for_key={key1:value1, key2,value2}
value_key={key1:value1, key2,value2}
v_value_k_key={key1:value1, key2,value2}
Run Code Online (Sandbox Code Playgroud)

不要因为"因为我的工作告诉我"而回答"为什么",而不是非常有帮助.推动选择的原因更为重要.除了可读性之外,字典命名约定还有其他任何好的注意事项吗?

编辑:

选择答案: value_key_map

选择答案的原因:允许代码审阅者快速,轻松地找出地图的关键字和值,以及它是一张地图而无需查看其他任何地方.

python mapping dictionary naming-conventions

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

Xcode 4核心数据:如何使用在数据模型编辑器中创建的获取属性

如何在Xcode 4中实现获取的属性?

以下是两个实体的示例:书籍和页面: 在此输入图像描述

我按照这里的指导创建了一个fetched属性,该属性使用变量$ FETCH_SOURCE引用源实体中的值:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships html的

现在,一旦我保存了这个,我生成了源代码,我得到了这个:

//  Book.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Pages;

@interface Book : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSNumber * pageCount;
@property (nonatomic, retain) Pages * pages;

@end
Run Code Online (Sandbox Code Playgroud)

和...

//  Book.m

#import "Book.h"
#import "Pages.h"


@implementation Book
@dynamic title;
@dynamic pageCount;
@dynamic pages;

@end
Run Code Online (Sandbox Code Playgroud)

获取的属性'fetchLastPage'在哪里?我如何在代码中使用它?

iphone core-data objective-c ios xcode4

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

JSON语法是Python语法的严格子集吗?

JSON与Python语法非常相似.所有JSON对象都可以直接转换为Python而不会出错吗?

以下是有效的JSON对象:

// Valid JSON
{"foo":"bar"}
Run Code Online (Sandbox Code Playgroud)

该对象将直接转换为带有键"foo"和值"bar"的Python字典:

# Python
json_dict = eval('{"foo":"bar"}')
Run Code Online (Sandbox Code Playgroud)

javascript python syntax json

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

Xcode4:为自定义核心数据管理对象生成不同的代码

现在Xcode4已公开发售,我正在将这个问题从Apple的秘密开发论坛中移出:

有人可以解释为什么在以下过程中生成的代码与Xcode3中的代码不同?代码更好还是可能是错误?

我使用Core Data自定义托管类,这是我在Xcode3中遵循的过程:

  1. 转到模型编辑器
  2. 选择要为其生成源代码的实体
  3. 转到文件 - >新建 - >新文件
  4. 选择managedobject类(或者它是什么,我不能再打开xcode3来验证)
  5. 选择要生成的实体(已选中步骤2中先前选择的实体)
  6. 单击完成

现在,在Xcode4中,我认为这是如何做到的,但我不确定,因为它生成不同的代码:

  1. 转到模型编辑器
  2. 选择实体
  3. 转到文件 - >新建 - >新文件
  4. 选择"NSManagedObject子类"
  5. 选择位置并创建.

它产生的代码有很多不同之处:

  1. 用于在实体中添加和删除集合成员的生成代码不再在@interface中声明,而是在@implementation中声明.这会导致代码检测无法检测到这些方法.
  2. 现在已完全定义了用于添加和删除对象的相同生成代码,不再使用CoreDataGeneratedAccessors自动生成

例如,Xcode3会在HEADER文件中生成此代码:

@interface SampleEntity (CoreDataGeneratedAccessors)
- (void)addChildObject:(Child *)value;
- (void)removeChildObject:(Child *)value;
- (void)addChild:(NSSet *)value;
- (void)removeChild:(NSSet *)value;
@end
Run Code Online (Sandbox Code Playgroud)

现在,Xcode4在IMPLEMENTATION文件中生成此代码:

@implementation SampleEntity
@dynamic children;
- (void)addChildObject:(Child *)value {    
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
    [self willChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"children"] addObject:value];
    [self didChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
}
Run Code Online (Sandbox Code Playgroud)

有人可以权衡为什么这是不同的?Xcode4代码感觉不喜欢这种生成NSManagedObject子类的新方法.

iphone cocoa core-data nsmanagedobject xcode4

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

Matplotlib:在3D条形图中格式化x轴上的日期

给定这个3D条形图示例代码,您如何将x轴中的数值数据转换为格式化的日期/时间字符串?我试图使用ax.xaxis_date()函数但没有成功.我也尝试使用plot_date(),它似乎不适用于3D条形图.以下是示例代码的修改版本,用于说明我要执行的操作:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as dates

dates = [dates.date2num(datetime.datetime(2009,3,12)),
         dates.date2num(datetime.datetime(2009,6,9)),
         dates.date2num(datetime.datetime(2010,1,1)),
         #etc...
         ]

fig = plt.figure()
ax = Axes3D(fig)
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
    xs = np.array(dates)
    ys = np.random.rand(20)
    ax.bar(xs, ys, zs=z, zdir='y', color=c, alpha=0.8)

ax.set_xlabel('Date & Time')
ax.set_ylabel('Series')
ax.set_zlabel('Amount')

plt.show()
Run Code Online (Sandbox Code Playgroud)

alt text http://matplotlib.sourceforge.net/_images/bars3d_demo1.png

python numpy graph matplotlib data-analysis

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

是否有Perl模块Term :: VT102的Python等价物?

在Perl中有一个非常方便的模块,Term :: VT102,它允许您在内存中创建一个屏幕.这对于抓取目的非常方便,因为您可以跟踪屏幕各部分的所有更改,然后将屏幕导出为纯文本进行处理.Python中是否有等效的模块?

后续问题:像Pexpect这样的模块可以让你屏幕刮掉VT100屏幕,但是VT100与VT102的不同之处是什么?

python perl screen-scraping command-line-interface vt100

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

CouchDB:"每用户数据库"还是"One-Database-For-All"设计?

我正在构建一个简单的书签应用程序,用户将在其浏览器中安装扩展程序,将本地书签同步到我们的应用程序中.

我正在使用CouchDB来存储用户数据.如果可扩展性是我的目标,那么在给定以下选项的情况下,使用CouchDB的最佳方法是什么?

  1. 有一个couchDB并将所有内容放入其中.
  2. 为用户创建专用数据库,并将书签存储为文档.

还要别的吗?

architecture couchdb

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

Python程序设计语言的词汇分析

有谁知道Python的FLEX或LEX规范文件存在于何处?例如,这是ANSI C编程语言的lex规范:http://www.quut.com/c/ANSI-C-grammar-l-1998.html

仅供参考,我正在尝试将代码突出显示到Cocoa应用程序中.正则表达式不会这样做,因为我也希望语法解析折叠代码并识别块.

python lex syntax-highlighting lexical-analysis

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

CouchDB:限制用户仅复制自己的文档

我在查找复制过滤器中使用的请求对象参数的文档时遇到问题(下面示例中的'req'):

function(doc, req) {
  // what is inside req???
  return false;
}
Run Code Online (Sandbox Code Playgroud)

这篇旧的CouchBase博客文章有一个小代码片段,显示userCtx变量是请求对象的一部分:

这个userCtx是什么?当您针对CouchDB进行经过身份验证的请求时,使用HTTP基本身份验证,安全cookie身份验证或OAuth,CouchDB将验证用户的凭据.如果它们与CouchDB用户匹配,则会使用有关用户的信息填充req.userCtx对象.

此userCtx对象对于限制将文档复制到文档所有者非常有用.看看这个例子:

function(doc, req) {
  // require a valid request user that owns the current doc
  if (!req.userCtx.name) {
    throw("Unauthorized!");
  }
  if(req.userCtx.name == doc.owner) {
    return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

但现在的问题是CouchDB要求复制的发起者明确选择过滤器方法(在这种情况下,发起者是我的Web应用程序的移动用户):

curl -X POST http://127.0.0.1:5984/_replicate \
-d '{"source":"database", \
     "target":"http://example.com:5984/database", \
     "filter":"example/filtername"
     }'
Run Code Online (Sandbox Code Playgroud)

问题

有没有办法在默认情况下强制执行特定的过滤器,以便用户只能复制自己的数据?我认为最好的方法是使用CouchDB的前端,比如Nginx,并将所有复制请求限制为包含该过滤器的复制请求.思考?想要在没有CouchDB前面的另一层的情况下做到这一点.

couchdb

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

Python:如何确定子进程子进程已全部运行完毕

我试图检测安装程序何时从Python脚本中执行.具体来说,该应用程序是Oracle 10gR2数据库.目前我正在使用Popen的子进程模块.理想情况下,我只是使用wait()方法等待安装完成执行,但是,记录的命令实际上生成子进程来处理实际安装.以下是失败代码的示例代码:

import subprocess
OUI_DATABASE_10GR2_SUBPROCESS = ['sudo',
                                 '-u',
                                 'oracle',
                                 os.path.join(DATABASE_10GR2_TMP_PATH,
                                              'database',
                                              'runInstaller'),
                                 '-ignoreSysPrereqs',
                                 '-silent',
                                 '-noconfig',
                                 '-responseFile '+ORACLE_DATABASE_10GR2_SILENT_RESPONSE]
oracle_subprocess = subprocess.Popen(OUI_DATABASE_10GR2_SUBPROCESS)
oracle_subprocess.wait()
Run Code Online (Sandbox Code Playgroud)

还有一个类似的问题在这里:杀害包括其子女从蟒蛇一子,但所选择的答案没有解决孩子的问题,而是指示用户直接调用应用程序等待.我正在寻找一个等待子进程的所有子进程的特定解决方案.如果有不确定数量的子流程怎么办?我将选择解决等待所有子进程完成的问题的答案.

更清楚失败:子进程在wait()命令之后继续执行,因为该命令只等待顶级进程(在这种情况下它是'sudo').下面是这个问题中已知子进程的简单图表:Python子进程模块 - > Sudo - > runInstaller - > java - >(未知)

python subprocess oracle10g spawning child-process

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

CouchDB是否具有相当于Redis的过期?

CouchDB有没有像Redis一样过期?

Redis的示例到期:

#!/usr/bin/env python
import redis
redis_server = redis.Redis(host='localhost',port=5477,db=0)
r.set('cat','meow')
r.expire('cat',10)
# do some work and ten seconds later...
r.get('cat') # returns None
Run Code Online (Sandbox Code Playgroud)

python couchdb redis key-value-store

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

Gevent Pywsgi 服务器 - 多处理?

以下代码(取自此处: https: //bitbucket.org/denis/gevent/src/6c710e8ae58b/examples/wsgiserver_ssl.py)实现了一个极快的greenlet驱动的wsgi网络服务器:

#!/usr/bin/python
"""Secure WSGI server example based on gevent.pywsgi"""

from gevent import pywsgi


def hello_world(env, start_response):
    if env['PATH_INFO'] == '/':
        start_response('200 OK', [('Content-Type', 'text/html')])
        return ["<b>hello world</b>"]
    else:
        start_response('404 Not Found', [('Content-Type', 'text/html')])
        return ['<h1>Not Found</h1>']

print 'Serving on https://127.0.0.1:8443'
server = pywsgi.WSGIServer(('0.0.0.0', 8443), hello_world, keyfile='server.key', certfile='server.crt')
# to start the server asynchronously, call server.start()
# we use blocking serve_forever() here because we have no other jobs
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

然而,这仅在一个核心上运行。您将如何修改它以利用多个进程?不是寻找涉及gunicorn的答案,而是寻找更简单的东西。

暗示

这是使用 gevent 和多处理的代码示例,但我仍然不知道如何使用 WSGI 使其工作(取自https://gist.github.com/1169975): …

python webserver wsgi gevent greenlets

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

如何使用Net :: Telnet模块在Perl中发送箭头键?

使用Perl模块Net :: Telnet,如何将箭头键发送到telnet会话,以便与用户按下键盘上的向下键相同?

use Net::Telnet;
my $t = new Net::Telnet();
my $down_key=?; #How do you send a down key in a telnet session?
t->print($down_key);
Run Code Online (Sandbox Code Playgroud)

VT102代码列表表示光标键代码如下:

Up:    Esc [   A
       033 133 101
Down:  Esc [   B
       033 133 102
Right: Esc [   C
       033 133 103
Left:  Esc [   D
       033 133 104
Run Code Online (Sandbox Code Playgroud)

我将如何通过telnet发送这些内容?这些代码是否与键盘上按下的箭头键相同?

perl automation screen-scraping escaping telnet

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