小编Uri*_*Uri的帖子

如何解压缩比通过索引访问更快?

我指的是这个问题,特别是对@David Robinson和@mgilson的第一个答案的评论: 在列表中求和每个元组的第二个值

最初的问题是将每个tuble的第二个值相加:

structure = [('a', 1), ('b', 3), ('c', 2)]
Run Code Online (Sandbox Code Playgroud)

第一个答案:

sum(n for _, n in structure)
Run Code Online (Sandbox Code Playgroud)

第二个答案:

sum(x[1] for x in structure)
Run Code Online (Sandbox Code Playgroud)

根据讨论,第一个答案是快50%.

一旦我弄明白第一个答案是什么(来自Perl,我用Google搜索了特殊的_变量意味着在python中),我想知道怎么会出现一个纯粹的子集任务(只获得每个元组的第二个元素与获取和绑定到变量这两个元素)实际上更慢?是否缺少优化Python中的索引访问的机会?我错过了第二个答案需要时间吗?

python

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

从Windows Cmd行运行git:关键文件在哪里?

所以我安装了msysgit,并从bash shell中成功运行git.

从bash shell中,我创建了键ssh-keygen- 一切正常.
密钥文件在我的%userprofile%\.ssh文件夹中(来自bash shell,它是:) ~/.ssh.
我能够连接到我的服务器(在我的情况下解开).

接下来,我确实希望能够从Windows Cmd shell运行git.
添加c:\msysgit\binc:\msysgit\mingw\bin搜索路径.
Git在本地工作很好:分支,合并,添加,提交,结账,......运作良好.

但是,尝试使用服务器失败,使用:' Permission denied (publickey).'
它看起来像git,当从命令行执行时查看尝试分配密钥文件的其他位置,或导致其失败的其他原因.

git ssh msysgit

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

一个自定义的ostream

我需要一些指导或指导,了解如何实现自定义ostream.我的要求是:

  1. 一个带有'<<'运算符的类,用于多种数据类型.
  2. 目的是将输出发送到数据库.每条"线"都应该单独记录.
  3. 每个记录最重要的字段是文本(或blob),但其他一些字段,如时间等,大部分都可以自动推断出来
  4. 缓冲很重要,因为我不想为每条记录访问数据库.

首先,它是否值得从ostream中获得?从ostream得到什么?如果我的类只实现了很少的operator<<方法(包括一些自定义数据类型),该怎么办 我从ostream获得哪些功能?

假设我想要的是一个源自ostream的类,我需要一些指导来理解ostream和streambuf类之间的关系.我需要实施哪一个?看一些样本,似乎我根本不需要从ostream派生,只需给ostream构造函数一个自定义的streambuf.真的吗?这是规范的方法吗?

我需要在自定义streambuf中实现哪些虚拟功能?我已经看到了一些示例(包括这个站点:这里这里,还有更多),一些覆盖了该sync方法,而另一些覆盖了该overflow方法.我应该覆盖哪一个?另外,查看stringbuf和filebuf源(Visual Studio或GCC),这两个缓冲类都实现了streambuf的许多方法.

如果需要从streambuf派生的自定义类,是否可以从stringbuf(或任何其他类)而不是直接从streambuf获得任何好处?

至于"线".至少当我使用'endl'操纵器的类的用户是一个新行(即数据库中的记录)时,我想.也许 - 取决于努力 - 每个'\n'字符也应被视为新记录.谁为我的自定义ostream和/或streambuf获得通知?

c++

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

有没有办法得到"当前函数"的返回类型

我想编写一个模板,它将获取实例化函数的返回类型作为参数.

例如,假设我有一个Result模板类:

template<type T>
class Result {
    T _result_value;
    T& operator=( T that );
    ~Result( );
}
Run Code Online (Sandbox Code Playgroud)

这个类有几个专业.在析构函数中,我想记录返回类型,并且在operator=分配中我想检查并断言错误值.

理想情况下,我希望能够有这样的定义:

#define RESULT Result< /* decltype magic for type of current function */ >
Run Code Online (Sandbox Code Playgroud)

所以我可以用它:

HFILE MyOpenFile( ... ) {
    RESULT result;
}
Run Code Online (Sandbox Code Playgroud)

...将被推断出来Result<HFILE>.这是一个简化的例子:编写RESULT代替Result<HFILE>并不是什么大问题,但是还有其他情况下不容易获得当前函数的返回类型.

c++ type-inference c++11

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

修改右值参考值 - 它是如何工作的?

下面的代码编译并运行得很好.正当我以为我开始对rvalue引用和std :: forward进行了很好的掌握 - 这个非常简单的代码揭示了rvalue有一些非常基本的东西,我不明白.请澄清.

#include <iostream>
#include <iomanip>
using namespace std;

void fn( int&& n )
{
    cout << "n=" << n << endl;
    n = 43;
    cout << "n=" << n << endl;
}


int main( )
{
    fn( 42 );
}
Run Code Online (Sandbox Code Playgroud)

我用g ++ 4.7使用以下命令行编译它:
g ++ --std = c ++ 11 test.cpp

输出为:
n = 42
n = 43

我的主要问题是编译器在函数fn中存储'n'的位置?

c++ rvalue-reference c++11

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

Twitter Bootstrap是否有任何RTL或i18n支持?

我需要为我的网站添加从右到左(RTL)支持,已经使用Twitter Bootstrap实现了.据我所见,发行版没有任何内容.我错过了什么吗?是否有任何外部库/框架/工具?

internationalization right-to-left twitter-bootstrap

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

从python中的函数返回左值

[抱歉,我是Python新手.虽然这似乎是一个非常基本的问题,但我在询问这些观众之前做了我的尽职调查,试图避免真正愚蠢的问题.

我试图弄清楚从函数返回l值的正确习惯用法.假设我有一个64个对象的容器,我希望能够返回对这些对象的引用.

class ChessBoard:
    def __init__(self):
        self.squares = [None for x in range(64)]

    square( row, col ):
        return self.squares(row*8+col)    <---- I'd like this to be l-value
Run Code Online (Sandbox Code Playgroud)

然后,从课外我想:

board = ChessBoard()
board.square(0,0) = Piece( Shapes.ROOK, Colors.White )    <-- I'm getting an error here
board.square(0,1) = Piece( Shapes.BISHOP, Colors.White )
... etc.
Run Code Online (Sandbox Code Playgroud)

所以,我希望函数'at'返回一个左值(类似于C++中的引用),但是我找不到类似于语言中的引用或指针的东西.如果我在包含一块的每个方块中存储一个列表,我可以做类似的事情:board.square(0,0)[0] = Piece - 但它看起来很疯狂(或者可能不是 - 正如我所说,我'我是语言的新手.

您将如何处理此数据结构?

python

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

Eclipse'Git Repository'视角与'团队同步'

我试图合理化两个似乎相关的视角(或者至少提供非常相似的功能):'Git Repository'视角(我在添加EGit后得到)和'Team Synchronizing'视角(我认为是EE分布的一部分).

据我所知,我能够让Git Repository工作(使用GitHub),或至少大部分功能:'Git Staging'窗口工作正常,我可以通过拖动文件来提交'未分级更改为"分阶段更改",然后单击"提交"图标.然后我可以通过右键单击工作区 - >遥控器 - >原点 - >网址,从"Git存储库"窗口推送我的更改,然后选择从菜单推送(是'正确'程序吗?).

通过"团队同步"的观点,即使设置它也没有运气.一旦选择'Synchronize ...'菜单,Git,然后我看到一个表(它是什么?).我正在为Destination尝试各种值(否则,无法点击Finish按钮),但无论我做什么,它都会告诉我所有项目都没有"更改".

右键单击项目并选择"团队"时,还有许多上下文菜单项.这些是什么?

eclipse egit

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

无法在Google App Engine中调试dev_appserver

我认为这个问题不是PyDev独有的,而是任何python调试器.

使用Eclipse和pydev,我无法在dev_appserver(Google应用引擎开发服务器)进程中打破我的WSGI处理程序.我不是100%肯定,但我认为这是GAE 1.7.6或1.7.7的回归,因为我几乎可以肯定我能够在升级到1.7.7之前调试我的代码

似乎GAE创建了一个不受PyDev控制的新进程('_python_runtime.py').我找不到PyDev中有"调试子进程"功能的任何证据,所以现在我有点迷失了.

看看GAE代码(1.7.7),看来子进程是在tools/devappserver2/http_runtime.py中调用的safe_subprocess.py/start_process.

闲逛我没有看到任何明显的方法:1.从同一个过程告诉GAE服务器到用户处理程序.2.告诉GAE将新项目的命令行更改python _python_runtime.pypython pydev.py ... --file _python_runtime.py(即使这样,不确定PyDev是否能够将其取出).

有什么建议吗?这真的是回归吗?

编辑(部分答案):
这是部分答案.在SDK 1.7.6中,Google App Engine有一个全新的服务器.服务器现在是一个多进程.主进程生成子进程(称为运行时)以运行WSGI处理程序.这些子进程未被调试.

这种变化在社区中引起了很多反响,但显然GAE社区主要生活在谷歌群组中,而不是在SO中(直到昨天我才知道这一点).以下是讨论的链接:

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/ep5BWYKpQpU

基本上有两种解决方案:

  1. 最简单的方法是使用旧的服务器,从1.7.7开始仍然可用.而不是dev_appserver.py,只需启动old_dev_appserver.py即可.在Eclipse PyDev中,转到Debug Configuration ...,并将'Main Module'替换为$(GOOGLE_APP_ENGINE)/old_dev_appserver.py,并启动,好像新服务器从未发生过一样.这个解决方案显然具有运行旧服务器的缺点,并且不知道该设置将保持多长时间.

  2. 第二个解决方案涉及更多,我还无法一路解决它.它基于PyDev的远程调试功能,并能够告诉GAE在运行时进程开始时运行脚本.所以这是怎么做的:

    1. 创建一个脚本并命名为:gae_runtime_startup.py.Put在某处(下方).
    2. 在全局PyDev首选项(窗口菜单 - >首选项 - > PyDev - >解释器Python - >字符串替换变量中,添加一个新的PYDEV变量,并将值设置为eclipse的PyDev插件(在我的计算机中这是c:\ eclipse \插件\ org.python.pydev_2.7.1.2012100913).
    3. 在project属性中,将$ {PYDEV}/pysrc添加到PYTHONPATH.这样,你就可以篡改pydevd
    4. 你需要告诉GAE运行gae_runtime_startup.py.转到Launcher,并将以下选项添加到命令行(Debug Configurations - > Arguments): - python_startup_script = <full path> /gae_runtime_startup.py --max_server_instances = 1
    5. 启动PyDev远程服务器.

    所以,在完成所有这些之后,我在运行时进程上运行的runtime_startup.py中获得了一个断点.如果我上堆栈,我将进入runtime.py源代码 - 所以我认为我正朝着正确的方向前进.然而,我在处理程序中设置的断点不会中断 - 所以这条路线仍然被阻挡.任何帮助将不胜感激.
# gae_runtime_startup.py
import pydevd; 
pydevd.settrace()
Run Code Online (Sandbox Code Playgroud)

一些相关链接:

  • Google小组讨论:https://code.google.com/p/appengine-devappserver2-experiment/issues/detail?id = …
  • google-app-engine pydev

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

    PyBluez活着吗?

    PyBluez项目似乎是用Python做蓝牙的规范项目(如果我错了,请纠正我).但是,上一版本是从2009年11月起的0.18).问题(目前,我对第43期最烦恼:不支持python 2.7)没有修复.

    我确实看到了一些活动,所以我想知道它的状态.PyBluez是做蓝牙的规范方式吗?PyBluez有替代品吗?(我很想念BlueSoleil堆栈支持).

    python bluetooth

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