有没有办法使用协议缓冲区序列化字典,或者如果我需要,我将不得不使用Thrift?
我发现了很多关于如何使用Emacs调试简单Python程序的信息.但是,如果我想调试Django应用程序怎么办?我运行开发服务器,我想以某种方式从Emacs附加到进程,然后设置断点等.类似于Visual Studio的"附加到进程".怎么做?
我有一个Django应用程序.以管理员用户身份登录时,我希望能够在URL中传递一个秘密参数,并使整个站点的行为就像我是另一个用户一样.
假设我有一个/my-profile/
显示当前登录用户个人资料的URL .我希望能够做类似的事情/my-profile/?__user_id=123
并让底层视图相信我实际上是ID为123的用户(从而呈现该用户的个人资料).
我为什么要这样?
仅仅因为重现某些只出现在单个用户帐户中的错误要容易得多.
我的问题:
实现这样的最简单的方法是什么?
这样做时我是否应该考虑安全问题?请注意,我(显然)只想为管理员用户提供此功能,而且我们的管理员用户无论如何都可以完全访问源代码,数据库等,所以它不是真正的"后门"; 它只是让访问用户的帐户更容易.
我需要比MongoDB文档中的示例稍微复杂的东西,我似乎无法绕过它.
假设我有一个表单对象的集合 {date: "2010-10-10", type: "EVENT_TYPE_1", user_id: 123, ...}
现在我希望获得类似于SQL GROUP BY查询的内容,对日期和类型进行分组.也就是说,我想要每天每种类型的事件数量.另外,我想通过user_id使它成为唯一的,即.如果用户在同一天有更多事件,则只计算一次.
我正在尝试使用map/reduce.
我做
db.logs.mapReduce(
function() {
emit(this.type, 1);
},
function(k, vals) {
var total = 0;
for (var i = 0; i < vals.length; i++)
total += vals[i];
return total;
}
)
Run Code Online (Sandbox Code Playgroud)
哪个很好地按类型分组,但现在,我如何同时按日期分组?似乎emit()中的键不能是一个数组(我想过这样做emit([this.date, this.type], 1)
).另外,如何确保每用户的唯一性?
我刚刚开始使用MongoDB,我仍然无法掌握基本概念.此外,没有太多可用的文档.感谢更有经验的用户提供的任何帮助.谢谢!
是否有一种简单的方法可以获得特定点所在国家/地区的名称?
我不太关心准确性,也不关心政治争议带来的模棱两可.只需要一个足够好的近似值.
一,背景.我曾经有一个集合,logs
并使用map/reduce来生成各种报告.这些报告中的大多数是基于一天内的数据,所以我总是有一个条件d: SOME_DATE
.当logs
集合变得非常大时,插入变得极其缓慢(比我们监视的应用程序生成日志的速度慢),即使在丢弃大量索引之后也是如此.所以我们决定将每一天的数据放在一个单独的集合中 - logs_YYYY-mm-dd
这样索引就更小了,我们甚至不需要索引日期.这很酷,因为大多数报告(因此map/reduce)都是每日数据.但是,我们有一份报告,我们需要覆盖多天.
而现在的问题.有没有办法在多个集合上运行map/reduce(或更确切地说,地图),就好像它只是一个?
当涉及到不同的序列化格式时,我看到很多对"压缩JSON"的引用.究竟是什么?它只是gzip压缩JSON还是其他什么?
我有一个非常大的表(20M记录),它有一个3列索引和一个数组列.数组列每天更新(通过附加新值)所有行.还有插入,但没有更新.
数组中的数据表示对应于三个键的每日测量值,如下所示:[[date_id_1, my_value_for_date_1], [date_id_2, my_value_for_date_2]]
.它用于绘制这些每日值的图表.假设我希望随着时间的推移可视化键(a,b,c)的值,我这样做SELECT values FROM t WHERE a = my_a AND b = my_b AND c = my_c
.然后我使用values
数组绘制图形.
更新的性能(每天大量发生一次)随着时间的推移而显着恶化.
使用PostgreSQL 8.3.8.
你能给我一些关于在哪里寻找解决方案的提示吗?它可能是从postgres调整一些参数到甚至移动到另一个数据库(我猜一个非关系数据库更适合这个特定的表,但我没有太多的经验).
在对具有非常高的I/O等待的服务器进行故障排除时,我注意到有很多I/O来自查询SELECT max(x) FROM t WHERE y = ?
.
我的索引是btree (x, y)
.
我注意到查询计划执行Index Scan Backward以获得最大值.那不好吗?我应该担心这个并且可能添加另一个索引(反向)吗?或者有更好的方法来创建适合此类查询的索引吗?
我正在做一些时区转换,我得到了非常奇怪的结果.基本上只在整个小时不同的时区之间进行转换,我仍然得到非完整的结果.例如:
from datetime import datetime
from pytz import timezone
datetime(2013, 12, 27, 20, 0, 0, tzinfo=timezone('Europe/Bucharest'))\
.astimezone(timezone('Europe/Berlin')).replace(tzinfo=None)
Run Code Online (Sandbox Code Playgroud)
给我
datetime.datetime(2013, 12, 27, 19, 16)
Run Code Online (Sandbox Code Playgroud)
(布加勒斯特和柏林之间的时差是1小时,所以我应该得到19:00 - 而不是19:16)
我可能错过了一些非常明显的东西,但我无法弄清楚.我究竟做错了什么?
python ×3
django ×2
mapreduce ×2
mongodb ×2
postgresql ×2
debugging ×1
emacs ×1
geolocation ×1
gis ×1
json ×1
optimization ×1
performance ×1
pytz ×1
thrift ×1