小编Sus*_*Pal的帖子

当我在一台机器上开发EXE并在另一台机器上运行它时,为什么安装vcredist_x86.exe不会修复SideBySide错误?

问题

我在Windows XP Professional版本2002 Service Pack 3上使用Microsoft Visual Studio 2005 Verison 8.0.50727.762(SP.050727-7600)编写了一个名为'Foo'的C++项目.我将项目构建到Foo.exe中.然后,我将文件Foo.exe复制到Windows Server 2003企业版Service Pack 2.当我尝试运行它时,它失败并出现此错误,

C:\foo.exe
The application has failed to start because the application configuration is incorrect.
Reinstalling the application may fix the problem.
Run Code Online (Sandbox Code Playgroud)

在事件查看器>系统中,记录了三个事件.

事件ID:32; 资料来源:SideBySide

Dependent Assembly Microsoft.VC80.CRT could not be found and Last Error was
The referenced assembly is not installed on your system.
Run Code Online (Sandbox Code Playgroud)

事件ID:59; 资料来源:SideBySide

Resolve Partial Assembly failed for Microsoft.VC80.CRT.
Reference error message: The referenced assembly is not installed on your system.
Run Code Online (Sandbox Code Playgroud)

事件ID:59; …

c++ side-by-side visual-c++

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

如何让Vim理解*.md文件包含Markdown代码,而不是Modula-2代码?

当我在Vim中编辑包含Markdown代码的README.md并执行:set filetype?命令时,我明白了filetype=markdown.Markdown语法正确突出显示.

但是当我在Vim中编辑包含Markdown代码的foo.md并执行:set filetype?命令时,我明白了filetype=modula2.Markdown语法未正确突出显示.

我应该添加到我的〜/ .vimrc使Vim明白foo.md或扩展名的任何文件.MD是降价文件,而不是modula2文件?

vim

26
推荐指数
2
解决办法
9821
查看次数

为什么客户端调用shutdown(sockfd,SHUT_RD)后,客户端程序中的recv()会收到发送给客户端的消息?

POSIX.1-2008/2013下载shutdown()的文档:

int shutdown(int socket, int how);

...

shutdown()函数将导致与文件描述符套接字关联的套接字上的全双工连接的全部或部分关闭.

shutdown()函数采用以下参数:

  • socket 指定套接字的文件描述符.

  • how 指定关闭的类型.值如下:

    • SHUT_RD 禁用进一步的接收操作.
    • SHUT_WR 禁用进一步的发送操作.
    • SHUT_RDWR 禁用进一步的发送和接收操作.

...

手动页 shutdown(2) 说,几乎同样的事情.

shutdown()调用导致与sockfd关联的套接字上的全双工连接的全部或部分关闭.如果howSHUT_RD,将不允许进一步接待.如果howSHUT_WR,则不允许进一步传输.如果howSHUT_RDWR,将不允许进一步的接收和传输.

但我认为即使在shutdown(sockfd, SHUT_RD)通话后我也能收到数据 .这是我精心策划的测试和我观察到的结果.

------------------------------------------------------
Time  netcat (nc)  C (a.out)   Result Observed
------------------------------------------------------
 0 s  listen       -           -
 2 s               connect()   -
 4 s  send "aa"    -           -
 6 s  -            recv() #1   recv() …
Run Code Online (Sandbox Code Playgroud)

c sockets linux posix network-programming

15
推荐指数
1
解决办法
837
查看次数

为什么.foo a:link,.foo a:visited {}选择器覆盖a:hover,a:active {}选择器在CSS中?

示例代码:http://jsfiddle.net/RuQNP/

<!DOCTYPE html>
<html>
<head>
    <title>Foo</title>
    <style type="text/css">
        a:link, a:visited {
            color: blue;
        }

        a:hover, a:active {
            color: red; 
        }

        .foo a:link, .foo a:visited {
            color: green;
        }

        /* A possible fix */
        /*
        .foo a:hover, .foo a:active {
            color: red;
        }
        */
    </style>
</head>
<body>
    <div class="foo">
        <a href="http://example.com/">Example</a>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我期待的是:

悬停时链接显示为红色.

我得到了什么:

悬停时链接显示为绿色.

问题:

  1. 为什么color定义的.foo a:link, .foo a:visited 选择器覆盖了a:hover, a:active?这是怎么回事?
  2. 我知道我可以修改它并通过取消注释注释代码来获得我的期望.但是,我想知道如何更正 .foo a:link, .foo a:visited选择器,使其不会覆盖color定义的 …

css css-selectors

14
推荐指数
1
解决办法
5115
查看次数

为什么减少段落中SPAN元素的字体大小会增加段落的高度?

我正在显示两个DIV面板,其代码如下.两个面板之间的唯一区别是第一个DIV元素中的SPAN元素具有font-size: 14px应用于它的样式,而第二个DIV元素中的SPAN元素没有此样式.在Firefox和Chrome上,第一个面板的高度似乎高于第二个面板.这是一个演示URL:http://jsfiddle.net/UWX2u/

代码的副本如下:

<!DOCTYPE html>
<html>
<head>
<title>Margin border</title>
<style type="text/css">
body {
    line-height: 38px;
    font-size: 32px;
}

#panel1 {
    background: #00a000;
    float: left;
}

#panel2 {
    background: orange;
    float: left;
}

#panel1 p span {
    font-size: 14px;
}
</style>
</head>
<body>

    <div id="panel1">
        <p>Foo <span>Bar</span></p>
    </div>

    <div id="panel2">
        <p>Foo <span>Bar</span></p>
    </div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用Firebug,我可以看到第一个DIV中P元素的计算高度是44.1833px,而第二个DIV中P元素的计算高度是38px.为什么会出现这种差异?

如果我line-height: 38px从CSS中删除属性,则两个DIV元素具有相同的高度.这是一个演示这个的页面:http://jsfiddle.net/FJUDn/

html css font-size

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

Python - 获取列表的所有组合

我知道我可以使用itertools.permutation来获得大小为r的所有排列.但是,对于itertools.permutation([1,2,3,4],3)它将返回(1,2,3)以及(1,3,2).

  1. 我想过滤那些重复(即获得组合)

  2. 是否有一种简单的方法来获得所有排列(所有长度)?

  3. 如何将itertools.permutation()结果转换为常规列表?

python combinations list permutation python-itertools

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

为什么在双引号中指定路径的一部分时,posh无法执行路径名扩展?

考虑以下简单的shell脚本:

rm -rf bar \"bar\"
mkdir -p bar
touch bar/baz
echo "bar"/*
Run Code Online (Sandbox Code Playgroud)

我用bash,ksh,zsh和dash得到了预期的输出,但是我没有用它来得到它:

susam@debian:~$ bash foo.sh
bar/baz
susam@debian:~$ ksh foo.sh
bar/baz
susam@debian:~$ zsh foo.sh 
bar/baz
susam@debian:~$ dash foo.sh
bar/baz
susam@debian:~$ posh foo.sh
bar/*
Run Code Online (Sandbox Code Playgroud)

我试图了解posh的行为是否符合POSIX标准或是否是一个bug.

POSIX文档中的相关部分似乎是"2.6 Word扩展":

他们都提到路径名扩展发生在引用删除之前.

  1. 除非有效,否则应执行路径名扩展(请参阅路径名扩展)set -f.
  2. 报价删除(参见报价删除)应始终执行.

考虑到这一点,豪华行为看起来正确,因为"bar"/*在删除引用之前不会与上面的任何路径字面匹配,因此不会发生路径扩展.

所以这让我怀疑如果有一个字面命名的目录"bar",即引号是目录名称的一部分,那么豪华就会匹配它.但是以下改进的脚本表明这不是真的.

rm -rf bar \"bar\"
mkdir -p \"bar\"
touch \"bar\"/baz
echo "bar"/*
Run Code Online (Sandbox Code Playgroud)

这是输出:

susam@debian1:~$ bash foo2.sh 
bar/*
susam@debian1:~$ ksh foo2.sh 
bar/*
susam@debian1:~$ zsh …
Run Code Online (Sandbox Code Playgroud)

linux shell debian posix

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

为什么netcat无法接收第二个广播消息?

在试验广播消息时(在Windows 7笔记本电脑上的VirtualBox 5.0.14上运行的Debian 8.3 VM上),我发现netcat(nc)只接收第一个广播消息.它不接收第二个广播消息.

程式

这是客户端程序.

// client.c
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>

int main()
{
    int sockfd;
    int ret;
    char buffer[1024];
    ssize_t bytes;
    int yes = 1;
    struct addrinfo hints, *ai, *aii;

    memset(&hints, 0, sizeof hints);
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_DGRAM;

    if ((ret = getaddrinfo("255.255.255.255", "9090", &hints, &ai)) == -1) {
        fprintf(stderr, "client: getaddrinfo() error: %s\n", gai_strerror(ret));
        return EXIT_FAILURE;
    }

    for (aii = ai; …
Run Code Online (Sandbox Code Playgroud)

c sockets datagram broadcast netcat

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

为什么a = a ['k'] = {}创建一个无限嵌套的字典?

这是我的Python代码,它创建了一个无限嵌套的字典:

a = a['k'] = {}

print(a)
print(a['k'])
print(a['k']['k'])
print(a is a['k'])
Run Code Online (Sandbox Code Playgroud)

这是输出:

{'k': {...}}
{'k': {...}}
{'k': {...}}
True
Run Code Online (Sandbox Code Playgroud)

输出显示a['k']引用a自身,使其无限嵌套.

我猜这句话:

a = a['k'] = {}
Run Code Online (Sandbox Code Playgroud)

表现得像:

new = {}
a = new
a['k'] = new
Run Code Online (Sandbox Code Playgroud)

这确实会创建一个无限嵌套的字典.

我查看了第7.2节:Python语言参考的赋值语句,但我找不到任何暗示a = a['k'] = {}应首先设置a为新字典然后在该字典中插入键/值对的内容.以下是我发现相关但没有回答我的问题的参考摘录:

如果目标列表是没有尾随逗号的单个目标,可选择在括号中,则将该对象分配给该目标.

如果目标是订阅:将评估引用中的主表达式.它应该产生可变序列对象(例如列表)或映射对象(例如字典).接下来,评估下标表达式.

如果primary是映射对象(例如字典),则下标必须具有与映射的键类型兼容的类型,然后要求映射创建将下标映射到指定对象的键/数据对.这可以用相同的键值替换现有的键/值对,或者插入新的键/值对(如果不存在具有相同值的键).

这些摘录中的每一个都定义了具有单个目标的任务的行为,例如a = {},a['k'] = {}但是他们似乎并没有谈论在情况下会发生什么a = a['k'] = {}.记录此类声明的评估顺序在哪里?

python dictionary reference operator-precedence assignment-operator

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

如何在粘贴上获取textarea输入字段的新值?

我看到当我尝试在onpaste调用其函数时从textarea字段读取值时,我得到字段的旧值(粘贴操作之前的值),而不是新值(粘贴操作之后的值).

以下是此行为的演示:http://jsfiddle.net/qsDnr/

代码的副本如下:

<!DOCTYPE html>
<html>
<head>
<title>On Paste</title>
<script type="text/javascript">
var textareaElement;
var previewElement;

function update()
{
    previewElement.innerHTML = textareaElement.value;
}

window.onload = function() {
    textareaElement = document.getElementById('textarea');
    previewElement = document.getElementById('preview');
    textareaElement.onpaste = update    
}
</script>
</head>
<body>
<textarea id="textarea">
</textarea>
<div id="preview">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下步骤确认行为.

  1. 将字符串复制foo到剪贴板.
  2. 右键单击textarea字段并选择"粘贴".div元素中没有任何内容.
  3. 右键单击textarea字段并再次选择"粘贴".foo出现在div元素中.

因为我想要的div元素始终显示什么是与粘贴操作textarea元素更新,所需的输出foo,并foo foo在步骤2和步骤分别3.

我设法获得所需输出的一种方法是通过延迟update()函数调用window.setTimeout(),而不是

textareaElement.onpaste = update    
Run Code Online (Sandbox Code Playgroud)

我有

textareaElement.onpaste = function() {
    window.setTimeout(update, …
Run Code Online (Sandbox Code Playgroud)

html javascript dom onpaste

7
推荐指数
1
解决办法
4882
查看次数