小编Ars*_*nko的帖子

使用JavaScript进行Alt属性编码

Html实体必须在HTML页面中的图像的alt属性中进行编码.所以

<img id="formula" alt="A &rarr; B" src="formula.png" />
Run Code Online (Sandbox Code Playgroud)

会运作良好.

另一方面,相同的JavaScript代码将无法使用

document.getElementById('formula').alt = 'A &rarr; B';
Run Code Online (Sandbox Code Playgroud)

并将产生A→ B而不是A→B.

当无法在源代码中放入特殊(未编码)字符时,如何通过JavaScript实现?

html javascript encode special-characters

8
推荐指数
2
解决办法
6841
查看次数

大写字符串的长度是否始终与原始字符串相同?

  • 无论使用何种文化,unicode大写字符串的长度是否始终与原始字符串的长度相同?

  • 无论使用何种文化,unicode小写字符串的长度是否始终与原始字符串的长度相同?

换句话说,C#中的以下是真的吗?

text.ToUpper(CultureInfo.CurrentCulture).Length == text.Length
text.ToLower(CultureInfo.CurrentCulture).Length == text.Length
Run Code Online (Sandbox Code Playgroud)

请注意,我对字节数不感兴趣:关于它的问题已经得到解答.

c# unicode

8
推荐指数
2
解决办法
599
查看次数

如何在一个带有被动过载的大方法和一堆小过载之间做出选择,每个方法都做了少量的工作?

有两种方法可以实现重载.第一个是在一个方法/构造函数中执行所有操作,并从其他重载调用它,这会导致更长的方法体.第二个是在每个重载中做最小的,因此有时难以导航代码并且理解哪个重载做了什么.

例如,如果一个类的两个重载Cat是:

public Cat(string name, int? weight, Color mainColor);
public Cat(string name);
Run Code Online (Sandbox Code Playgroud)

有两种方法可以实现这个:

第一种

public Cat(string name, int? weight, Color mainColor)
{
    // Initialize everything.
    this.name = name;
    if (weight.HasValue) this.weight = weight.Value;

    // There is a bug here (see the anwer of @Timwi): mainColor can be null.
    this.colors = new List<Colors>(new[] { mainColor });
}

public Cat(string name)
    : this(name, null, null)
{
    // Nothing else to do: everything is done in the …
Run Code Online (Sandbox Code Playgroud)

.net c# overloading

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

Python 3,urllib POST提交

我想编写一个Python脚本来自动登录我的宽带使用率计帐户.我之前从未做过POST提交,而且我遇到了一些问题.

import urllib.request, urllib.parse, urllib.error
import socket

try:
    details = urllib.parse.urlencode({ 'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD' })
    url = urllib.request.Request('https://login1.telecom.co.nz/distauth/UI/Login?realm=XtraUsers&goto=https%3A%2F%2Fwww.telecom.co.nz%3A443%2Fjetstreamum%2FxtraSum%3Flink%3Drdt', details)
    url.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")

    responseData = urllib.request.urlopen(url).read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.HTTPError as e:
    responseData = e.read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.URLError:
    responseFail = True

except socket.error:
    responseFail = True

except socket.timeout:
    responseFail = True

except UnicodeEncodeError:
    print("[x]  Encoding Error")
    responseFail = True

print(responseData)
Run Code Online (Sandbox Code Playgroud)

从我导出的HTML IDToken1是用户名id,IDToken2是密码id. …

python post urllib python-3.x

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

为什么 SmtpClient.UseDefaultCredentials 被忽略?

我正在尝试通过使用集成 Windows 身份验证的域 SMTP 服务器发送电子邮件。明确指定凭据时,一切正常:

using (var client = new SmtpClient("<Server>"))
{
    client.Credentials = new NetworkCredential("<User name>", "<Password>");
    client.EnableSsl = true;
    client.Send(...);
}
Run Code Online (Sandbox Code Playgroud)

SMTP 服务器日志显示 EHLO、STARTTLS、STARTTLS 和 EHLO,然后是 AUTH、MAIL 等。

另一方面,当使用默认凭据时:

using (var client = new SmtpClient("<Server>"))
{
    client.UseDefaultCredentials = true;
    client.EnableSsl = true;
    client.Send(...);
}
Run Code Online (Sandbox Code Playgroud)
  • SmtpException被抛出,与消息“发送邮件失败。”

  • 内部IOException消息是:“无法从传输连接读取数据:远程主机强行关闭了现有连接。”和

  • 内部内部SocketException是:“远程主机强行关闭了现有连接”。

SMTP 服务器日志显示 EHLO、STARTTLS、STARTTLS 和 EHLO,然后什么都没有。

如果选项从源代码移动到 App.config configuration/system.net/mailSettings/smtp/network,无论是否指定端口号,结果都是完全相同的(第一个示例成功,第二个示例失败)。

鉴于:

  • 根据文档SmtpClient.UseDefaultCredentials“[g]ets 或设置一个布尔值来控制是否随请求发送 DefaultCredentials”,即

  • “对于客户端应用程序,[ CredentialCache.DefaultCredentials] 通常是运行该应用程序的用户的 Windows 凭据(用户名、密码和域)”,并且

  • 被测试的代码是一个 Windows 窗体客户端应用程序,它运行在同一个帐户中,其凭据在上面的第一个示例中指定, …

c# smtp credentials smtpclient

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

如何防止模板参数中的零?

我有一个模板类,其中模板参数对应于类中数组的大小。

template <typename T, size_t S>
class Example {
    ...

 private:
    T values[S];
};
Run Code Online (Sandbox Code Playgroud)

这会导致预期的警告:“ISO C++ 禁止零大小数组。” 在我的情况下,类似的东西是Example<uint8_t, 0>没有意义的,我想阻止包含的代码Example<..., 0>编译。

我如何在 C++ 中表示S应该优于或等于 1?

c++ templates

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

Wpf:Storyboard.TargetName有效,但Setter TargetName没有

假设我们有一个像这样的XAML代码:

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border HorizontalAlignment="Center" VerticalAlignment="Center">
                    <Border.LayoutTransform>
                        <!--We are rotating randomly each image. Selected one will be rotated to 45°.-->
                        <RotateTransform Angle="{Binding RandomAngle}" x:Name="globalRotation"/>
                    </Border.LayoutTransform>
                    <Grid>
                        <Image Source="{Binding ImageLocation}" Stretch="None" />
                        <TextBlock x:Name="title" Text="{Binding Title}" />
                    </Grid>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter TargetName="title" Property="Visibility" Value="Visible"/>
                        <!--The next line will not compile.-->
                        <Setter TargetName="globalRotation" Property="Angle" Value="45"/>
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <!--This compiles well.-->
                                    <DoubleAnimation Storyboard.TargetName="globalRotation" Storyboard.TargetProperty="Angle" To="45" Duration="00:00:03"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate> …
Run Code Online (Sandbox Code Playgroud)

wpf xaml storyboard

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

SQL连接等待15秒,尽管连接字符串中有3秒超时

我有一个在本地网络上使用Microsoft SQL 2008 Server的网站。有时,SQL Server计算机会重新启动,因此网站无法连接到数据库。如果机器运行起来,它迅速作出反应。如果出现故障,则无需等待15秒。3秒还可以。

当数据库不可访问时,我想在网站上表示歉意,并希望尽快做到。但是Connection Timeout=3在连接字符串中设置似乎无效。该页面花了22秒钟等待,然后再SqlException继续SqlConnection.Open();

它出什么问题了?难道它是一个覆盖了超时的隐藏配置?

目前,我的连接字符串是

Data Source=...;
Initial Catalog=...;
Integrated Security=True;
Connection Timeout=3
Run Code Online (Sandbox Code Playgroud)

如果我将其设置为...;ConnectionTimeout=3(无空格),

System.ArgumentException: Keyword not supported: 'connectiontimeout'.
Run Code Online (Sandbox Code Playgroud)

被抛出(奇怪的是,MSDN文档指示我们可以同时使用两个字符串)。

c# connection-string sql-server-2008 connection-timeout

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

XML有哪些缺点?

阅读StackOverflow并听Joel Spolsky和Jeff Atwood的播客,我开始相信很多开发人员讨厌使用XML,或者至少尽量避免使用XML来存储或交换数据.

另一方面,我喜欢使用XML有很多原因:

  • XML序列化以大多数现代语言实现,并且非常易于使用,
  • 比二进制序列化慢,XML序列化在使用来自多种编程语言的相同数据或者用于读取和理解的情况时非常有用,即使对于人类的调试(例如,JSON,更难)了解),
  • XML支持unicode,如果使用得当,不同的编码,字符等都没有问题.
  • 有许多工具可以轻松使用XML数据.XSLT就是一个例子,可以轻松呈现和转换数据.XPath是另一个,可以轻松搜索数据,
  • XML可以存储在某些SQL服务器中,这样就可以保存和操作过于复杂而无法轻松存储在SQL表中的数据.例如,JSON或二进制数据不能通过SQL直接操作(除非通过操作字符串,这在大多数情况下是疯狂的),
  • XML不需要安装任何应用程序.如果我希望我的应用程序使用数据库,我必须首先安装数据库服务器.如果我希望我的应用程序使用XML,我不需要安装任何东西,
  • XML比例如Windows注册表或INI文件更加明确和可扩展,
  • 在大多数情况下,由于XML提供的抽象级别,没有CR-LF问题.

那么,考虑到使用XML的所有好处,为什么这么多开发人员讨厌使用它呢?恕我直言,唯一的问题是:

  • XML过于冗长,并且需要比大多数其他形式的数据更多的地方,特别是在涉及Base64编码时.

当然,有很多情况下XML根本不适合.在服务器端的XML文件中存储SO的问题和答案绝对是错误的.或者,在存储AVI视频或一堆JPG图像时,XML是最糟糕的事情.

但其他场景呢?XML有哪些缺点?


对于那些认为这个问题不是真正问题的人:

1980年以来计算机中非封闭的重要新发明之类的问题相反,我的问题一个非常明确的问题,并且明确地邀请解释其他人在使用XML时遇到的弱点以及他们为什么不喜欢它.例如,它不会邀请讨论XML是好还是坏.它也不需要进行长时间的讨论; 因此,到目前为止收到的当前答案简短而精确,并提供了我想要的足够信息.

它是一个维基,因为这个问题没有一个独特的好答案.

根据SO,"不是一个真正的问题"是一个问题,"很难说这里有什么问题.这个问题含糊不清,含糊不清,不完整或修辞,无法以现有形式得到合理回答."

  • 这里有什么问题:我认为问题本身非常清楚,上面的几段文字使它更加清晰,
  • 这个问题含糊不清,含糊不清,不完整:再一次,没有任何含糊不清,既不模糊也不完整,
  • 或修辞:事实并非如此:我的问题的答案并不明显,
  • 并且无法合理地回答:几个人已经对这个问题给出了很好的答案,表明这个问题可以合理地回答.

如何评估答案并确定接受的答案似乎也很明显.如果答案给出了XML错误的充分理由,那么这个答案很可能会被投票,然后被接受.

xml data-storage xml-serialization data-exchange

6
推荐指数
2
解决办法
862
查看次数

我应该如何在uglifyjs中使用mangle选项?

运行以下命令时:

echo "let demo = 3; console.log(demo);" | uglifyjs --compress --mangle
Run Code Online (Sandbox Code Playgroud)

我期望以下输出:

let a=3;console.log(a);
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

let demo=3;console.log(demo);
Run Code Online (Sandbox Code Playgroud)

因此,我不明白如何使用--mangle选项。官方文档说明了如何排除不应修改的名称,如何修改属性等,但是如何仅转换普通变量的名称呢?

还是此选项做的事情完全不同,我误解了它的目的?

注意:我使用的是uglify-es 3.2.2。

javascript minify uglifyjs

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