虽然其他问题已经解决了更广泛的序列和模块类别,但我提出这个非常具体的问题:
"你为字典使用什么命名约定?为什么?"
我一直在考虑的一些命名约定样本:
# '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
选择答案的原因:允许代码审阅者快速,轻松地找出地图的关键字和值,以及它是一张地图而无需查看其他任何地方.
如何在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'在哪里?我如何在代码中使用它?
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) 现在Xcode4已公开发售,我正在将这个问题从Apple的秘密开发论坛中移出:
有人可以解释为什么在以下过程中生成的代码与Xcode3中的代码不同?代码更好还是可能是错误?
我使用Core Data自定义托管类,这是我在Xcode3中遵循的过程:
现在,在Xcode4中,我认为这是如何做到的,但我不确定,因为它生成不同的代码:
它产生的代码有很多不同之处:
例如,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子类的新方法.
给定这个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
在Perl中有一个非常方便的模块,Term :: VT102,它允许您在内存中创建一个屏幕.这对于抓取目的非常方便,因为您可以跟踪屏幕各部分的所有更改,然后将屏幕导出为纯文本进行处理.Python中是否有等效的模块?
后续问题:像Pexpect这样的模块可以让你屏幕刮掉VT100屏幕,但是VT100与VT102的不同之处是什么?
我正在构建一个简单的书签应用程序,用户将在其浏览器中安装扩展程序,将本地书签同步到我们的应用程序中.
我正在使用CouchDB来存储用户数据.如果可扩展性是我的目标,那么在给定以下选项的情况下,使用CouchDB的最佳方法是什么?
还要别的吗?
有谁知道Python的FLEX或LEX规范文件存在于何处?例如,这是ANSI C编程语言的lex规范:http://www.quut.com/c/ANSI-C-grammar-l-1998.html
仅供参考,我正在尝试将代码突出显示到Cocoa应用程序中.正则表达式不会这样做,因为我也希望语法解析折叠代码并识别块.
我在查找复制过滤器中使用的请求对象参数的文档时遇到问题(下面示例中的'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前面的另一层的情况下做到这一点.
我试图检测安装程序何时从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 - >(未知)
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) 以下代码(取自此处: 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): …
使用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发送这些内容?这些代码是否与键盘上按下的箭头键相同?
python ×8
couchdb ×3
core-data ×2
iphone ×2
perl ×2
xcode4 ×2
architecture ×1
automation ×1
cocoa ×1
dictionary ×1
escaping ×1
gevent ×1
graph ×1
greenlets ×1
ios ×1
javascript ×1
json ×1
lex ×1
mapping ×1
matplotlib ×1
numpy ×1
objective-c ×1
oracle10g ×1
redis ×1
spawning ×1
subprocess ×1
syntax ×1
telnet ×1
vt100 ×1
webserver ×1
wsgi ×1