虽然这个问题和答案中的大部分信息都可以在StackOverflow上获得,但它分布在许多页面以及其他错误或误导性的答案中.我花了一段时间拼凑出我想知道的一切.
有很多不同的程序可以用作你的git difftool和mergetool,对于哪个是最好的(意见,要求和操作系统明显不同)肯定没有共识.
Meld是一个流行的跨平台(UNIX/Linux,OSX,Windows)选择,如StackOverflow问题所示,什么是Git最好的可视化合并工具?其中提出梅尔德的答案的答案是其他任何工具的3倍以上.
我的答案将在下面回答以下两个问题:
注意:没有必要使用与difftool和mergetool相同的程序,可以为两者设置不同的程序.
我只能在两个拆分窗口上放两个不同的文件.如何在两个窗口上放置相同的文件?
我正在查看1997 年发布的nmap的源代码,我注意到这段代码对我来说看起来有点奇怪:
int i=0, j=0,start,end;
char *expr = strdup(origexpr);
ports = safe_malloc(65536 * sizeof(short));
i++; /* <<<<<< */
i--; /* <<<<<< */
for(;j < exlen; j++)
if (expr[j] != ' ') expr[i++] = expr[j];
expr[i] = '\0';
Run Code Online (Sandbox Code Playgroud)
为什么你们会i++;然后i--;紧跟其后?i是0,则i++轮流i到1。在那之后,i--变成i到0。
链接到原始源代码。搜索:
i++;
i--;
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这是干什么用的?
有谁知道这个捷径?我在网上寻找它,但我似乎无法找到它
以下排序方法非常有效.
def sort_view_items(self):
cs = self.settings.case_sensitive
if self.settings.sort_by_file_name:
sk = lambda vi: (vi.name if cs else vi.name.lower(), vi.group, vi.tab)
elif self.settings.sort_by_folder:
sk = lambda vi: (vi.folder, vi.name if cs else vi.name.lower())
elif self.settings.sort_by_syntax:
sk = lambda vi: (vi.syntax, vi.name if cs else vi.name.lower())
elif self.settings.sort_by_indexes:
sk = lambda vi: (vi.group, vi.tab)
self.view_items.sort(key = sk)
Run Code Online (Sandbox Code Playgroud)
然而lambdas的区分大小写的相关部分vi.name if cs else vi.name.lower()被使用了3次,这使我重复的代码基因变得烦恼.
出于兴趣,可以以某种方式提前设置案例方面,但不对name属性进行永久性更改或在view_items列表的临时副本中进行此类操作吗?
例如,我尝试在lambda中使用lambda,我认为它不会起作用,猜猜是什么,它没有.虽然意外地接受了语法(没有例外),但它只是没有导致实际执行任何排序.
def sort_view_items(self):
cs = self.settings.case_sensitive
name_lambda = lambda vi: vi.name if cs else …Run Code Online (Sandbox Code Playgroud) 我正在 Unix shell 中试验 $RANDOM 变量,并注意到一些奇怪的事情。我运行了以下命令,该命令循环读取 $RANDOM 100k 次,然后将输出传输到“uniq”以查找重复项。
$ for i in {1..100000}; do echo $RANDOM; done | uniq -d
Run Code Online (Sandbox Code Playgroud)
我运行上述命令 7 次,相同的两个数字(4455 和 4117)重复了 7 次。下面的屏幕截图显示了命令行输出。
$ for i in {1..100000}; do echo $RANDOM; done | uniq -d
Run Code Online (Sandbox Code Playgroud)
请参阅: https: //i.stack.imgur.com/5bpEe.png
我还打开了另一个终端窗口并重复了该过程。在第二个航站楼中,数字不同,但以类似的方式重复。这让我想知道 $RANDOM 变量的熵何时以及如何播种。
我的猜测是,每当调用它时,它都会重新播种bash,但我想知道是否有人知道当我在单个终端窗口中重复该命令时为什么会重复相同的值。
Package Control 未在 MacOS、Catalina 10.15.6 上运行的 Sublime Text 3 中加载。
命令面板中未显示任何包控制命令。
我检查过 Package Control 不在 中ignored_packages,手动重新安装了 Package Control(多次),甚至卸载并重新安装了 Sublime Text 3。
当我启动 Sublime Text 3 时,当它尝试加载 Package Control 时,控制台中会显示以下错误。看起来问题在某种程度上与 OpenSSL 有关,特别是与该libcrypto.dylib文件有关。
我最近使用 Homebrew 更新/升级了我的系统,并怀疑更新过程中发生了某些事情导致了问题。
reloading plugin Package Control.Package Control
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 125, in reload_plugin
m = importlib.import_module(modulename)
File "./python3.3/importlib/__init__.py", line 90, in import_module
File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
File "<frozen …Run Code Online (Sandbox Code Playgroud) 在Linux上使用Sublime Text 3(Build 3059).
在Sublime Text列中,选择可用于选择文件的矩形区域.当使用鼠标执行此操作时,在每个平台上使用不同的鼠标按钮.在OS X和Windows上,鼠标中键可用于选择文本矩形.在Linux上你需要使用鼠标右键+ shift,我觉得这个组合不方便,所以我想用鼠标上的第4个按钮来做这个而不用修改键的麻烦.
很简单我只需要在默认的mousemap文件中更改列选择鼠标映射.
以下是3(Linux,OS X和Windows)默认鼠标映射文件的相关部分:
// Column select Linux default mousemap file
{
"button": "button2", "modifiers": ["shift"],
"press_command": "drag_select",
"press_args": {"by": "columns"}
},
// Column select is the same in the default OS X and Windows mousemap files:
{
"button": "button3",
"press_command": "drag_select",
"press_args": {"by": "columns"}
},
Run Code Online (Sandbox Code Playgroud)
所以我认为我需要做的就是使用与OS X和Windows相同的代码,但设置"button4"而不是"button3".所以我最终得到了这个:
// ~/.config/sublime-text-3/Packages/User/Default (Linux).sublime-mousemap
[
// Map column select to 4th mouse button.
{
"button": "button4",
"press_command": "drag_select",
"press_args": {"by": "columns"}
}
]
Run Code Online (Sandbox Code Playgroud)
所有这些都非常合乎逻辑且直截了当,除非它不起作用.按第四个鼠标按钮不会进行列选择,它什么也不做.怎么了?!
为什么以下C代码在我的桌面和服务器上给出了不同的结果,两者都运行类似的Linux版本?
它在18万亿投币中找到了行序列中最长的同一侧.[见Iain M. Banks的科幻小说考虑Phlebas.]
在服务器上,经过15.7万亿投币(它仍然在运行)之后,到目前为止,行序列中最长的同一侧只有29个.因为2^44 = 17,592,186,044,416,我希望最长的同一侧序列在40到40年代的中间位置,在完成所有18万亿之后,可能还有44个.
在仅仅47亿次投掷硬币之后的桌面上,最长的序列已经是31,从那以后2^31 = 2,147,483,648,这听起来是正确的.
那么为什么我在15.7万亿投币后只在服务器上获得了29个序列,但在我的桌面上只有47亿的31个序列?
Modulo偏见是我的第一个想法.RAND_MAX在桌面和服务器上是相同的,2,147,483,647(32位签名长).所以rand()函数会给我一个数字0 <= rand() <= 2,147,483,647.0是偶数,2,147,483,647是奇数,所以除非我非常误以为我int rand_num = (rand() % 2);的代码行没有引入模偏差.
我知道C标准库的伪随机数生成器不适合加密.当然,这不可能是一个因素,当然产生非常长,零和一系列的序列.可以吗?
这是来源:
在两台机器上编译使用: gcc -O3 -o 18TCT 18TrillionCoinTosses.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
srand(time(NULL));
int current_seq = 0;
int longest_seq = 0;
int prev_rand_num = -1;
long long i = 0;
long long total = 18000000000000;
// To …Run Code Online (Sandbox Code Playgroud) 如何使用自定义命令调色板条目或使用键绑定又称快捷键打开特定文件?
我打开了一些文件,但没有与任何特定项目相关联.能够使用命令选项板或键绑定快速打开它们会很有用.
我需要一个 Python 正则表达式来匹配整数而不是来自字符串输入的浮点数。
下面的正则表达式使用负前瞻和负后瞻来确保数字前面和后面都没有“.”。
(?<!\.)[0-9]+(?!\.)
Run Code Online (Sandbox Code Playgroud)
它仅适用于个位数浮点数。例如
int_regex = re.compile("(?<!\.)[0-9]+(?!\.)")
str_int_list = int_regex.findall(text)
Correct when no more than 1 digit on each side of a float:
"1 + 2 + 3.0 + .4 + 5. + 66 + 777" --> ['1', '2', '66', '777']
Incorrectly matches the '1' of '12.3' and the '5' of '.45'.
"12.3 + .45 + 678" --> ['1', '5', '678']
Run Code Online (Sandbox Code Playgroud)
问题似乎是[0-9]+正则表达式中间的 不够贪婪。
我尝试将数字匹配添加到前瞻和后视,但在 Python 错误中遇到了“后视需要是常量长度”。
关于如何只匹配整数而不匹配浮点数的任何建议将不胜感激。
sublimetext ×5
sublimetext3 ×5
sublimetext2 ×4
c ×2
python ×2
random ×2
bash ×1
git ×1
kali-linux ×1
meld ×1
nmap ×1
python-3.x ×1
regex ×1
text-editor ×1
unix ×1
zsh ×1