小编Sam*_*uel的帖子

为什么PyCharm使用120个字符行,即使PEP8指定79?

PEP8清楚地指定了79个字符,但是,PyCharm默认为120并且给我警告"PEP8:行太长(...> 120个字符)".

先前版本的PEP8使用120而PyCharm是否未更新其PEP8检查程序?我找不到任何以前版本的PEP8指南,但是,我可以很容易地找到以前版本的PEP8 Python脚本.

我正在开始一个新的Python项目,我不确定要使用哪个.

参考文献:

http://legacy.python.org/dev/peps/pep-0008/

python pep8 pycharm

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

git:合并分支但保持提交历史记录

在我的git工作流中,我们有一个主存储库和一个分支master.每个人都从远程主人拉出来,每个人都推送到远程主人.我准备一个功能时,我想在自己的分支机构工作.到目前为止,我的历史是这样的:

git pull --rebase
git checkout -b new_feature
<make some commits>
git checkout master
git pull --rebase
Run Code Online (Sandbox Code Playgroud)

现在我想合并分支,这就是我需要的东西:

  1. 我的本地主分支中没有合并提交.
  2. 所有提交到我的new_feature分支的提交都合并为master,好像我是在master中创建的一样.
  3. 所有合并的提交都将合并到我的本地远程头指针之上.

我最关心的是第3项,何时需要,以便我可以安全地推动变更.如果合并的提交与head之前的提交交织在一起,那么我将会遇到问题,看到我遇到的相关问题:git:推送单一提交,重新排序使用rebase,重复提交.

我读过以下内容:

而且我想我需要这样做:

git checkout master
git pull --rebase
git checkout new_feature
git rebase master
git checkout master
git rebase new_feature
git push
Run Code Online (Sandbox Code Playgroud)

我的理解是

git checkout new_feature
git rebase master
Run Code Online (Sandbox Code Playgroud)

将使new_feature看起来好像是从新的当前头部分支出来的.真的吗?然后

git checkout master
git rebase new_feature
Run Code Online (Sandbox Code Playgroud)

将new_feature置于主人之上.那是对的吗?如果是这样,这是我困惑的主要原因.如果"git rebase master"将master提交放在new_feature的底部,那么为什么"git rebase new_feature"将new_feature提交到master的顶部,即为什么不执行相反的操作呢?

git version-control history branch rebase

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

无法使用gdb调试多线程应用程序

我正在使用gdb调试多线程应用程序,但是当我在gdb中启动程序时,我收到警告:

警告:无法找到libthread_db匹配劣质的线程库,线程调试将无法使用.

我仍然可以调试,但我不能调试除主线程之外的任何东西.我已经阅读了建议安装软件包libthread-db1和glibc-dbg的论坛,但这并不能解决我的问题.

在我的机器我有3个文件/lib/libthread_db.so.1,/lib/.debug/libthread_db-1.0.so/lib/libthread_db-1.0.so.我尝试/lib使用名称创建符号链接libthread_db.so,一次指向/lib/libthread_db.so.1文件,另一次指向/lib/libthread_db-1.0.so文件,我也创建了/lib/.debug/libthread_db.so指向的符号链接/lib/.debug/libthread_db-1.0.so,一切都没有运气.

在gdb中我尝试设置libthread-db-search-path/lib(一旦设置为符号链接,一次设置为libthread_db.so.1,libthread_db-1.0.so也设置为/lib/.debug.

有什么建议?我正在使用Angstrom Linux v2.6.39作为BeagleBoard-xm.

debugging multithreading gdb beagleboard angstrom-linux

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

68040错误的分支

有没有好的68k组装程序员在那里?我正在为摩托罗拉68040使用商业Green Hills编译器,我从代码中看到一些非常奇怪的行为.有时,代码会执行if/else比较,并采用错误的分支.例如:

float a = 1, b = 2;

if (a < b)
    do c;
else 
    do d;
Run Code Online (Sandbox Code Playgroud)

代码有时会d !? 我发现,当发生此错误时,总会有一个特定的ISR中断比较.我看了一下ISR生成的程序集,看到了一些对我没有意义的事情.首先,看起来浮点状态寄存器FPSR,FPCR和FPIAR不会保存在ISR中.这可以解释为什么if/elses采取了错误的分支.FPSR寄存器用于确定比较结果,如果该寄存器在ISR中被覆盖,则分支可能采用错误的路径.以下是编译器生成的入口和出口程序集:

isr_function:
    FSAVE   -(%SP)
    LINK    %A6,#-192
    MOVEM.L %D0/%D1/%D2/%A0/%A1,-(%SP)
    FMOVEM  %FP0/%FP1/%FP2/%FP3/%FP4/%FP5/%FP6/%FP7,-(%SP)

    ; isr code ...

    FMOVEM  -308(%A6),%FP0/%FP1/%FP2/%FP3/%FP4/%FP5/%FP6/%FP7
    MOVEM.L -212(%A6),%D0/%D1/%D2/%A0/%A1
    UNLK    %A6
    FRESTORE    (%SP)+
    RTE
Run Code Online (Sandbox Code Playgroud)

我查看了程序员参考手册,但我找不到任何暗示FSAVE或FMOVEM保存FP状态寄存器的内容.实际上,我看到一条评论表明它没有,"FSAVE不会保存程序员的浮点单元的模型寄存器;它只保存用户不可见的机器部分." 所以我添加了一些我自己的程序集以在ISR开始时保存寄存器,并在最后恢复它们,这大大提高了性能,但我仍然看到一些问题.以下是我的补充; 备份变量在C代码中键入为unsigned long:

isr_function:
    FSAVE   -(%SP)
    LINK    %A6,#-192
    MOVEM.L %D0/%D1/%D2/%A0/%A1,-(%SP)
    FMOVEM  %FP0/%FP1/%FP2/%FP3/%FP4/%FP5/%FP6/%FP7,-(%SP)

    FMOVE %FPIAR,fpiar_backup
    FMOVE %FPSR,fpsr_backup
    FMOVE %FPCR,fpcr_backup

    ; isr code ...

    FMOVE fpiar_backup,%FPIAR
    FMOVE fpsr_backup,%FPSR
    FMOVE fpcr_backup,%FPCR

    FMOVEM  -308(%A6),%FP0/%FP1/%FP2/%FP3/%FP4/%FP5/%FP6/%FP7
    MOVEM.L -212(%A6),%D0/%D1/%D2/%A0/%A1
    UNLK    %A6
    FRESTORE    (%SP)+ …
Run Code Online (Sandbox Code Playgroud)

compiler-construction assembly 68000 isr

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

如何使用TortoiseGit重新排序提交(rebase)

我想将几个单一提交推送到我们的主git存储库.在做了一些阅读之后虽然听起来我必须重新排序提交才能做到这一点,因为git只会将所有提交推送到指定的提交.首先,我真的不明白为什么这不仅仅是内置于git(我是一个git新手).无论如何,我需要重新排序提交,我正在使用TortoiseGit.我已经找到了如何进入rebase菜单,但我不知道选择哪个选项.要进入rebase菜单我:

  1. 右键单击目录并选择TortoiseGit/Show Log
  2. 浏览并选择我想要重新排序的提交.
  3. 选择"Rebase"master"on this".

我遇到了一个对话框,但我不知道这些字段是什么意思.

首先,有分支领域,我看到主人和一些遥控器选项.我没有任何分支机构.我克隆了一个存储库,到目前为止一直在从本地克隆工作,为什么有一个分支选项?

其次,有一个小按钮,左右箭头相互叠加.这个按钮是什么用的?

第三,有一个上游字段,默认情况下它选择了存储库的SHA.当我点击该字段时,我会看到FETCH_HEAD,master和一些遥控器选项.

我希望看到一个提交列表,我可以上下移动我的提交.通过检查Force Rebase选项,我可以看到提交列表.这是我需要做的吗?我有什么打算,我以为我只是想做一个普通的老底板?

再次,我是一个git新手,任何帮助表示赞赏.

git version-control git-rebase tortoisegit

7
推荐指数
2
解决办法
5671
查看次数

从夹板边界检查的奇怪行为

任何夹板专家在那里?我试图用夹板静态分析大量的项目,我有C.我看到过多数量的边界检查显然不能界失误的错误.我写了一个小测试程序试图找出问题,并在我对代码运行splint时注意到一些非常奇怪的警告.我有3个不同的例子.这是第一个:

int arr[3];

int main(void)
{
    int i;
    int var;

    arr[3] = 0; // (1) warning with +bounds, no warning with +likely-bounds

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

arr[3]+bounds我按照预期使用时,分配会生成警告,但在使用时不会执行任何操作+likely-bounds.什么是+likely-bounds连做?它似乎行不通.第二个例子:

int arr[3];

int main(void)
{
    int i;
    int var;

    for (i = 0; i < 3; i++)
        var = arr[i]; // (2) warning, even though I'm within the bounds.

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这个示例中,splint抱怨我正在读取数组的边界("内存读取引用内存超出分配的存储空间.")var = arr[i],即使我显然不是.这应该是一个警告,因为数组中的值没有初始化,但这不是我得到的警告.初始化数组中的最后一个值将清除错误(但不会初始化第一个或第二个).难道我做错了什么?在第三个例子中:

int arr[3];

int main(void)
{
    int i;
    int var;

    arr[3] …
Run Code Online (Sandbox Code Playgroud)

c arrays splint bounds

6
推荐指数
1
解决办法
337
查看次数

重命名/移动VirtualBox虚拟磁盘

我重命名了我的虚拟磁盘所在的目录,现在我无法启动Ubuntu VM,也无法弄清楚如何使用VirtualBox指定虚拟磁盘的新位置.请帮忙.

ubuntu virtualbox rename move hard-drive

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

如何让 PyC​​harm 的 Fill Paragraph 命令覆盖默认边距?

PyCharm 有一个很棒的 Fill Paragraph 命令,唯一的问题是它包装到右边距设置。问题在于它不遵循 PEP8。我想将右边距设置为 79 以跟随 PEP8,但我希望我的注释块为 72 个字符,如 PEP8 指定的那样。当我运行 Fill Paragraph 命令时,我希望它换行到 72 个字符,而不是 79 个字符。如果在 PyCharm 中无法做到,那么我可能不会严格遵循 PEP8;在我看来,花时间手动修复评论的行长是不值得的,79 将不得不做。

参考:

http://legacy.python.org/dev/peps/pep-0008/

python comments pep8 pycharm

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

termios.c_cflag中的CLOCAL和CRTSCTS标志如何影响串口?

我想配置UART以在Linux中使用硬件流控制线RTS和CTS.根据http://linux.die.net/man/3/termios,CRTSCTS启用RTS/CTS(硬件)流控制,CLOCAL配置串口忽略调制解调器控制线.这两个标志似乎是矛盾的,如何使用CRTSCTS启用硬件流控制并忽略CLOCAL的行?

linux serial-port termios uart

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

automake 环境变量条件

我有一个文件 Makefile.am 我用来生成一个 Makefile。在生成的 Makefile 中,我想要这样的东西:

ifndef SOURCECODEPATH
   SOURCECODEPATH := /home/root/source_code_path
endif
Run Code Online (Sandbox Code Playgroud)

看起来很简单,有人知道我该怎么做吗?

automake conditional makefile autotools environment-variables

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