小编Jos*_*nig的帖子

GitHub Windows客户端代理

我正在尝试让Windows的GitHub客户端工作.我在公司代理和防火墙后面的企业Win 7 x64计算机上.通过各种其他帖子并尝试环境变量和配置变量的多种组合,我发现克隆和推送更新工作的唯一方法是使用HTTPS_PROXY环境变量,包括我的完整公司域用户ID和密码.

从安全角度来看,这是不可接受的.有没有其他方法让这个工作?

补充说明:

以下工作:

  • 添加所谓的环境变量HTTPS_PROXY与值http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

下面也没有工作:

  • HTTPS_PROXY变量中省略用户标识和密码
  • 使用一个名为HTTP_PROXY(no S)的环境变量
  • http.proxy变量添加到全局配置文件(.gitconfig)
  • https.proxy变量添加到全局配置文件

在所有情况下,GitHub 客户端仍然无法识别代理:文件的内容在启动时TheLog.txt 始终显示以下内容:

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy
Run Code Online (Sandbox Code Playgroud)

接下来是几次失败的代理身份验证尝试的输出,所有这些都表示"缺少证书".

proxy github github-for-windows

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

在C#中迭代字符串中单个字符的最快方法是什么?

标题是问题.以下是我尝试通过研究回答这个问题.但我不相信我不知情的研究,所以我仍然提出问题(在C#中用字符串中的单个字符迭代的最快方法是什么?).

偶尔我想逐个循环遍历字符串的字符,例如在解析嵌套标记时 - 这是正则表达式无法完成的.我想知道最快的方法是迭代字符串中的各个字符,特别是非常大的字符串.

我自己做了一堆测试,结果如下.然而,有许多读者对.NET CLR和C#编译器有更深入的了解,所以我不知道我是否遗漏了一些明显的东西,或者我是否在测试代码中犯了错误.所以我征集你的集体回应.如果有人深入了解字符串索引器的实际工作方式,那将非常有帮助.(这是C#语言功能在幕后编译成其他东西吗?还是内置于CLR中的东西?).

使用流的第一种方法直接取自线程中接受的答案:如何从字符串生成流?

测试

longString是一个9910万字符的字符串,由89个纯文本版本的C#语言规范组成.显示的结果是20次迭代.如果存在'启动'时间(例如方法#3中隐式创建的数组的第一次迭代),我会单独测试它,例如在第一次迭代后断开循环.

结果

从我的测试中,使用ToCharArray()方法在char数组中缓存字符串是迭代整个字符串的最快速度.ToCharArray()方法是一项前期费用,对单个字符的后续访问速度略快于内置索引访问器.

                                           milliseconds
                                ---------------------------------
 Method                         Startup  Iteration  Total  StdDev
------------------------------  -------  ---------  -----  ------
 1 index accessor                     0        602    602       3
 2 explicit convert ToCharArray     165        410    582       3
 3 foreach (c in string.ToCharArray)168        455    623       3
 4 StringReader                       0       1150   1150      25
 5 StreamWriter => Stream           405       1940   2345      20
 6 GetBytes() => StreamReader       385       2065   2450      35
 7 GetBytes() => BinaryReader       385       5465   5850      80 …
Run Code Online (Sandbox Code Playgroud)

c# string

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

有效地找到最近的字典键

我在a中有一堆日期和货币值SortedDictionary<DateTime, decimal>,对应于在合约定义的复利日期计算到未来的贷款余额.有没有一种有效的方法来查找最接近给定值的日期键?(具体而言,最接近的键小于或等于目标).关键是在值改变时仅存储数据,但有效地回答"x日期的余额是什么?"的问题.对于范围内的任何日期.

一个类似的问题被问到(.NET字典支持"查找最近的密钥"操作?)当时答案是"不",至少来自响应的人,但那是差不多3年前的事.

如何在排序字典中找到两个键之间的点的问题提出了天真地遍历所有键的明显解决方案.我想知道是否存在任何内置框架函数来利用密钥已经在内存中索引和排序的事实 - 或者内置的Framework集合类,它将更好地适应这种类型的查询.

c# sorting dictionary

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

用于"AND NOT"操作的正则表达式

我正在寻找一个通用的正则表达式构造来匹配模式中的所有内容x EXCEPT匹配模式y.这很难完全和简洁地解释......请参阅Material Nonimplication以获得正式定义.

例如,匹配任何单词字符(\w)除了'p'.注意我从一个较大的集合(所有单词字符)中减去一个小集合(字母'p').我不能只是说,[^p]因为这没有考虑到只有单词字符的更大限制集.对于这个小例子,当然,我可以手动重建类似的东西[a-oq-zA-OQ-Z0-9_],这是一种痛苦但可行的.但我正在寻找一个更通用的结构,以便至少大的正集可以是一个更复杂的表达式.喜欢匹配,((?<=(so|me|^))big(com?pl{1,3}ex([pA]t{2}ern)除非它以"我的"开头.

编辑:我意识到这是一个不好的例子,因为在开始或结束时排除东西是负面前瞻和后视表达式工作的情况.(波希米亚人,我仍然给你一个赞成说明这一点).那么......在中间的某个地方排除包含"我的"的匹配怎么样?...我仍然在寻找一个通用的构造,就像一个正则表达式相当于下面的伪sql

select [captures] from [input]
where (
    input MATCHES [pattern1]
    AND NOT capture MATCHES [pattern2]
)
Run Code Online (Sandbox Code Playgroud)

如果答案是"它不存在,这就是为什么......"我也想知道这一点.

编辑2:如果我想定义自己的函数来执行此操作,那就像(这里是C#LINQ版本):

public static Match[] RegexMNI(string input, 
                               string positivePattern, 
                               string negativePattern) {
    return (from Match m in Regex.Matches(input, positivePattern)
            where !Regex.IsMatch(m.Value, negativePattern)
            select m).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

我仍然只是想知道是否有一个本机正则表达式构造可以做到这一点.

regex logical-operators

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

VBA中的自定义回调

注意标签:VBA,而不是VB6,而不是VB.NET.

这特定于MS Access中的VBA.我在一个名为"Enumerable"的模块中构建了一组方法.它做了许多令人联想到.NET中的Enumerable类和接口的事情.我想要实现的一件事是ForEach方法,与.NET Enumerable.Select方法类似.

我构建了一个使用Application.Run方法为每个元素调用函数的版本,但Application.Run仅适用于用户定义的方法.例如,以下工作:

' User-defined wrapper function:
Public Function MyReplace( _
    Expression As String, Find As String, StrReplace As String, _
    Optional Start As Long = 1, _
    Optional Count As Long = 1, _
    Optional Compare As VbCompareMethod = vbBinaryCompare)
    MyReplace = Replace(Expression, Find, StrReplace, Start, Count, Compare)
End Function

' Using Application.Run to call a method by name
Public Sub RunTest()
    Debug.Print Run("MyReplace", "Input", "In", "Out")
End Sub
Run Code Online (Sandbox Code Playgroud)

RunTest按预期打印"输出".以下不起作用:

Debug.Print Run("Replace", …
Run Code Online (Sandbox Code Playgroud)

vba callback

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

识别唯一自由多边形(或多边形散列)的算法

简而言之:如何散列免费的多米诺骨牌?

这可以推广到:如何有效地散列2D整数坐标的任意集合,其中集合包含唯一的非负整数对,并且当且仅当没有平移,旋转或翻转可以映射它时,集合被认为是唯一的与另一套相同?

对于不耐烦的读者,请注意我完全了解蛮力方法.我正在寻找一种更好的方式 - 或者是一种非常有说服力的证据,证明没有其他方法可以存在.

我正在研究一些不同的算法来生成随机多项式.我想测试它们的输出以确定它们的随机性 - 即给定订单的某些实例比其他订单更频繁地生成.在视觉上,很容易识别自由多边形的不同方向,例如下面的维基百科插图显示了"F"pentomino的所有8个方向(来源):

F pentimino

如何在这个多米诺骨牌上放一个数字 - 也就是说,哈希一个免费的多米诺骨牌?我不想依赖预先列出的"命名"多项式列表.无论如何,仅对订单4和5存在广泛认可的名称.

这不一定等于枚举给定订单的所有自由(或单侧或固定)多边形.我只想计算给定配置出现的次数.如果生成算法永远不会产生某个多边形,那么就不会计算它.

计数的基本逻辑是:

testcount = 10000 // Arbitrary
order = 6         // Create hexominos in this test
hashcounts = new hashtable
for i = 1 to testcount
    poly = GenerateRandomPolyomino(order)
    hash = PolyHash(poly)
    if hashcounts.contains(hash) then  
        hashcounts[hash]++
    else
        hashcounts[hash] = 1 
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种有效的PolyHash算法.输入多边形简单地定义为一组坐标.T tetronimo的一个方向可能是,例如:

[[1,0], [0,1], [1,1], [2,1]]:

 |012
-+---
0| X
1|XXX
Run Code Online (Sandbox Code Playgroud)

您可以假设输入多边形将已经标准化以与X和Y轴对齐并且仅具有正坐标.形式上,每套:

  • 将具有至少1个坐标,其中x值为0
  • 在y值为0时将至少有一个坐标
  • x <0或y <0时不会有任何坐标

我真的在寻找新的算法,以避免一般强力方法所需的整数运算数量增加,如下所述.

蛮力

这里和 …

algorithm hash coordinates

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

在VBA中复制数组引用

有没有办法在VBA(或VB6)中复制数组引用?

在VBA中,数组是值类型.将一个数组变量分配给另一个数组变量复制整个数组.我想得到两个数组变量指向同一个数组.有没有办法实现这一点,可能使用一些API内存函数和/或VarPtr函数,实际上返回VBA中变量的地址?

Dim arr1(), arr2(), ref1 As LongPtr
arr1 = Array("A", "B", "C")

' Now I want to make arr2 refer to the same array object as arr1
' If this was C#, simply assign, since in .NET arrays are reference types:
arr2 = arr1

' ...Or if arrays were COM objects:
Set arr2 = arr1

' VarPtr lets me get the address of arr1 like this:
ref1 = VarPtr(arr1)

' ... But I don't know of a …
Run Code Online (Sandbox Code Playgroud)

vba pointers reference

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

下降网格项的算法

我不知道如何简洁地描述目标,这可能是为什么我无法找到适用的算法,尽管搜索量充足,但图片清楚地显示:

联锁项目

鉴于左侧网格中的项目状态,是否有人知道有效查找右侧网格中显示的结束位置的算法?在这种情况下,所有项目都"下降""向下",但当然方向是任意的.关键在于:

  • 有一组任意形状的项目,但都由连续的正方形组成
  • 物品不能重叠
  • 所有物品都应该沿给定方向移动最大距离,直到它们碰到墙壁,或者他们正在触摸另一个项目[...正在触摸另一个项目无限...]正在触摸墙壁.

这不是家庭作业,我不是学生.这是出于我对几何和编程的兴趣.我没有提到这种语言因为没关系.我可以使用我正在使用的语言中的任何算法来处理我正在处理的特定项目.一个有用的答案可以用文字或代码来描述; 这是重要的想法.

这个问题可能被抽象成依赖性和松弛空间的某种图形(在数学意义上),因此可能会采用旨在最小化滞后时间的算法.

如果您不知道答案但是即将尝试在现场编写算法,请记住可能存在循环依赖关系,例如互锁粉红色(向后)"C"和蓝色"T"形状.T的部分低于C,C的部分低于T.如果通过几个部件的"环"锁定互锁物品,这将更加棘手.

适用算法的一些注意事项:由于我构建网格对象管理框架的方式,以下所有内容都非常简单快捷:

  • 枚举一块中的各个正方形
  • 列举所有部分
  • 找到占据整个网格中特定方块的块(如果有)

关于答案的说明: maniek首先暗示了它,但是bloops提供了一个精彩的解释.我认为绝对关键是所有移动相同数量的作品保持彼此之间的关系的洞察力,因此不必考虑这些关系.

对于人口稀少的板,额外的加速是将所有部件移位以消除完全空的行.计算空行并在一侧("上方")标识空行非常容易.

最后一点:我确实实现了bloops描述的算法,并进行了一些特定于实现的修改.它工作得很漂亮.

algorithm graph

12
推荐指数
2
解决办法
781
查看次数

带有名称的元组的C#解决方法

我希望不可变的匿名类型具有可以传递,比较和识别的命名成员 - 元组和匿名类型的合并.这不存在,我意识到这一点.

所以问题是:使用C#4或5,这是一个很好的惯用替代品吗?

用例是来自异构数据源的流畅的LINQ数据处理.总之,C#中的ETL.我做了一些非常复杂的分析,数据来自多个平台和来源.它不是"只需将它们放在同一平台上并使用实体框架"的选项.我希望能够流畅地传递基本上任意的记录 - 不可变命名的只读属性集.

我唯一能想到的就是为每个单独的匿名类型创建一个自定义的不可变POCO,就是使用属性将编译的注释添加到返回Tuples的方法中.当然,编写用于吐出不可变POCO的代码生成器并不困难,但我讨厌如何混淆项目的对象模型.使用dynamic完全消除静态类型的所有性能和设计时有用性,特别是如果从其他方法的结果组成进一步的查询,所以我不认为它是一个可行的解决方案.

// My idea: Adding a attribute to methods to at least record the names
// of the "columns" of a Tuple at a method level
public class NamedTupleAttribute : Attribute {
    public string[] Names { get; private set; }
    public NamedTupleAttribute(string[] Names) { this.Names = Names; }
}

// Using NamedTuple attribute to note meaning of members of Tuple
[NamedTuple(new[] { "StoreNumber", "Gross", "Cost", …
Run Code Online (Sandbox Code Playgroud)

c# linq tuples anonymous-types

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

是否可以将泛型类型参数约束为String OR Array

简而言之:是否可以定义一个泛型方法,其中类型参数(T)被约束为stringint[]?在伪C#中,我想要做的是:

public static int MyMethod<T> ( T arg1, T arg2 ) 
    where T : (has an indexer that returns an int) {
    // stuff with arg1[i], arg2[j], etc...
}
Run Code Online (Sandbox Code Playgroud)

请注意,在C#中,由于内置string索引器(返回a char)以及从charto的隐式转换 int,以下表达式意味着完全相同的source是a string还是int[]:

int someval = source[index];
Run Code Online (Sandbox Code Playgroud)

根据线程将Constrain泛型扩展方法用于基类型和字符串我意识到我不能只在where T : x...约束子句中创建一个非关联类型的列表.双方int[]string会遵守T: IEnumerable<int>,但IEnumerable<T>不要求实施者有一个索引,而这正是共同的特点,我从两种类型使用.

这背后的目的是我正在构建一些高度优化的字符串解析和分析功能,例如Damerau-Levenshtein距离算法的快速实现.我发现,首先将我的字符串转换为int数组有时会在重复的逐字符处理中产生明显更快的执行(与DL算法一样).这主要是因为比较int值比比较值要快得多char.

操作词是"有时".有时直接在字符串上操作更快,并避免首次转换和复制到数组的成本int.所以我现在拥有除声明之外真正相同的方法.

当然我可以使用 …

c# string generics

9
推荐指数
2
解决办法
2521
查看次数