小编Ser*_*Ala的帖子

替代Windows shell,除了CMD.EXE?

我不喜欢CMD.EXE,内置的Windows终端.其中的问题包括:

  1. 难以复制和粘贴.

  2. 难以调整窗口大小.

  3. 很难打开另一个窗口(没有菜单选项这样做).

  4. 似乎总是从C:\ Windows\System32开始,这是超级无用的.

  5. 奇怪的滚动.有时它会向下滚动到空白区域,您必须向上滚动到实际填充窗口的位置.

我喜欢Cygwin,但Cygwin的问题在于它运行不同的可执行文件.Cygwin Python与Windows Python不同,它们链接到不同的库和东西.

谢谢.

terminal cmd

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

如何使用setx添加到Windows PATH变量?有奇怪的问题

我想使用修改Windows PATH变量setx.以下在Windows 8上至少有50%的时间可以正常工作:

setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
Run Code Online (Sandbox Code Playgroud)

如果它给出错误"默认参数只能使用2次",那么下面的部分时间会起作用:

setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
Run Code Online (Sandbox Code Playgroud)

不同之处在于我们将第二个参数包装在引号中.我相信%PATH%扩展包含空格时引号是必要的.

但是,我在Windows 7上遇到了一些奇怪的问题.在一台特定的Windows 7机器上,我遇到了这个问题:

echo %PATH%
Run Code Online (Sandbox Code Playgroud)

它打印:

C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
Run Code Online (Sandbox Code Playgroud)

然后我这样做:

setx PATH "%PATH%;C:\Quux\"
Run Code Online (Sandbox Code Playgroud)

然后它说"错误:截断1,024个字符." 现在让我们检查一下PATH包含的内容:

echo %PATH%
Run Code Online (Sandbox Code Playgroud)

它打印:

C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
Run Code Online (Sandbox Code Playgroud)

......它被裁减为1,024个字符.由于重复,它跑了过来.同样有趣的是:尽管setx引发了错误而没有说"成功" ,但PATH的价值也发生了变化.

我能够多次重复这种奇怪的行为(幸运的是我保存了PATH的原始内容).

目前,我知道附加到PATH的唯一可靠方法如下:

  1. echo 路径.

  2. 将PATH的内容复制到文本文件中,然后手动添加;C:\Python27\;C:\Python27\Scripts\到PATH的末尾.

  3. 将整个事物复制出文本文件.

  4. setx PATH "<paste the string here>"

该过程在Windows 7和Windows 8上每次都有效.

我应该能够在一个命令中做到这一点.我究竟做错了什么?

谢谢.

windows cmd path setx

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

当我做"git push"时,统计数据意味着什么?(总数,三角洲等)

这是一个例子:

$ git push -u myserver master
Counting objects: 22, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done.
Total 14 (delta 10), reused 0 (delta 0)
To myserver.com:git/myrepo.git
   ed46414..0cae272  master -> master
Branch master set up to track remote branch master from myserver.
Run Code Online (Sandbox Code Playgroud)

基本上唯一对我来说有意义的数字是"使用多达8个线程"的8,因为我有一个四线程处理器,超线程,因此我可以运行8个线程.

有22个?为什么说22和14,其他8发生了什么?为什么它说0字节/秒,因为它做了东西并花了有限的时间?什么是"总"和"三角洲"和"重用"?

有关示例的详细信息:上面的示例是从Mac OS X上的终端进行了复制粘贴.我手动执行了一个find-replace来替换"myrepo"和"myserver.com",其他一切都是逐字的.存储库有910次提交,自上次推送以来我做了大约3次提交.3个新提交影响了至少3个文件.回购包含超过一千个文件.

git git-push

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

在Git中, - (破折号)意味着什么?

在阅读Git命令的手册页时,您经常会看到一个可选的--(破折号).根据我的经验,这--不是必要的,没有任何区别.你什么时候需要它?一般来说它是什么意思,因为它出现在如此众多的命令中?

git

46
推荐指数
2
解决办法
9640
查看次数

如何在Windows 8上禁用Cygwin中的Vim'vi compatible'模式?

我在Windows 8(64位)上使用Cygwin 1.7.22(32位).在Cygwin中,我使用的是Vim 7.3.1152,这是默认版本.

看起来像bug的行为:

  1. 当我按下I进入插入模式时,它没有-- INSERT --在左下角说.事实上,它没有说什么.但它确实表现正常.

  2. 当我Backspace在插入模式下删除字母时,字母不会消失,但光标会向左移动.

  3. 当我在插入模式下使用箭头键时,它输入字母A,B,C和D,而不是移动光标.箭头键在插入模式之外正常工作.

如何让Vim像我期望的那样表现?

vim cygwin

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

在调用Python脚本时,"./ script.py"和"python script.py"之间有什么区别

一个区别是"./script.py"仅在script.py可执行时有效(如在文件权限中),但"python script.py"无论如何都有效.但是,我强烈怀疑存在更多差异,我想知道它们是什么.

我有一个Django网站,"python manage.py syncdb"工作正常,但"./manage.py syncdb"由于某种原因创建了一个损坏的数据库,这对我来说仍然是一个谜.也许这与syncdb从命令行提示输入超级用户名和密码的事实有关,并且可能使用"./manage.py syncdb"更改它与命令行交互的方式,从而破坏了密码.也许?我对此错误感到困惑."python manage.py syncdb"完全修复它,所以这只是好奇心.

谢谢.

编辑:对,对,我忘记了shebang line#!/ usr/bin/python的必要性.但我刚刚检查过,"python manage.py syncdb"和"./manage.py syncdb"正在使用相同的Python解释器(2.7.2,在Linux Mint 12上安装的唯一一个).然而前者的作品却没有.

Python代码看到的环境变量可能不同吗?我的代码确实要求$ LD_LOADER_PATH和$ PYTHON_PATH为每个shell设置特殊.

python django posix sh

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

进行永远不会并行运行的Python单元测试

tl; dr -我想编写一个unittest删除文件,运行测试和恢复文件的Python 函数.这会导致竞争条件,因为unittest并行运行多个测试,并且删除和创建一个测试的文件会混淆同时发生的其他测试.

长具体例子:

我有一个名为Python的模块converter.py,它有相关的测试test_converter.py.如果存在config_custom.csv与同一目录中命名的文件converter.py,则将使用自定义配置.如果没有自定义CSV配置文件,则内置默认配置converter.py.

我使用unittestPython 2.7标准库编写了一个单元测试来验证这种行为.单元测试setUp()将重命名config_custom.csvwrong_name.csv,然后它将运行测试(希望使用默认配置),然后在tearDown()其中将文件重命名为应该的方式.

问题: Python单元测试并行运行,我遇到了可怕的竞争条件.该文件config_custom.csv将以非确定性方式在其他单元测试中重命名.在我运行整个测试套件的过程中,它会导致至少一次错误或失败.

理想的解决方案是告诉unittest:不要与其他测试并行运行此测试,此测试是特殊的,需要完全隔离.

我的解决方法是在搜索配置文件的函数中添加一个可选参数.该参数仅由测试套件传递.它会忽略配置文件而不删除它.实际上删除测试文件更优雅,这就是我真正想要测试的.

python unit-testing python-unittest

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

Git:如何列出提交中更改的文件,包括每个文件(blob)的 SHA-1 哈希值?

我想要什么,总结一下:

我有一个提交,例如HEAD111abc111,并且我想要一种优雅的方式来打印所有修改的文件,并且打印修改的文件及其 SHA-1 哈希值。我怎样才能做到这一点?

下面是一个几乎git-cat-file可行的想法,但它要么列出所有文件(包括未更改的文件),要么您必须在批处理模式下使用它。在批处理模式下使用它最初看起来很有希望,但我无法让它工作。请参阅下面的内容,了解我尝试过的事情等等。git-ls-tree

有关我的优先事项的说明,请参阅此问题的下文,或查看我自己写的答案(我不会接受,但也许您可以重构它)。

具体例子:

设置示例:

作为背景,让我们看看我的 Git 工作树是什么样子的:

$ ls

alice.txt
bob.c
carol.h
main.c

$ git status -s

# Nothing prints, the working copy is clean and untouched.
Run Code Online (Sandbox Code Playgroud)

我现在只更改两个文件:

$ echo "Add one line." >> bob.c

$ echo "Add one line." >> carol.h

$ git add .    # Add (stage) both changed files.

$ git status -s

M  bob.c
M  carol.h

$ git commit -m "Two …
Run Code Online (Sandbox Code Playgroud)

git

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

在Django测试中,我应该如何保存数据库对象然后从数据库中检索它?

我正在使用Django 1.8.我编写了以下代码来测试一个pre_save钩子是否正常工作,但是这段代码看起来非常不优雅.这是编写此类单元测试的"正确方法"吗?

class PreSaveTests(TestCase):
    def test_pre_save_hook(self):
        person = Person(name="Joe")
        person.save()
        person2 = Person.objects.get(pk = person.pk)
        # Confirm that the pre_save hook ran.
        # The hook sets person.is_cool to True.
        self.assertEqual(person2.is_cool, True)
Run Code Online (Sandbox Code Playgroud)

这很好用,但看起来很难看.

真正丑陋的部分是,person并且person2是相同的数据库对象.唯一的区别是person2从数据库中检索到的.

python django

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

标签 统计

git ×3

python ×3

cmd ×2

django ×2

cygwin ×1

git-push ×1

path ×1

posix ×1

python-unittest ×1

setx ×1

sh ×1

terminal ×1

unit-testing ×1

vim ×1

windows ×1