Golang依赖pipe理最佳实践

在Golang中,我们可以在GitHub上指定开源库作为依赖关系。 例如: import "github.com/RichardKnop/somelibrary" 这将尝试寻找一个基于你的Go版本的分支,如果我理解正确的话,默认为master。 所以没有办法导入一个特定的依赖版本,例如: import "github.com/RichardKnop/somelibrary#v1.4.8" 那么在Go中pipe理依赖项的最佳实践是什么? 我可以看到两种方法。 I.版本模块 是否为重大版本创build新的模块,并进行重大更改? 例如,我的Go库可以定义模块v1和v2,所以你可以这样做: import "github.com/RichardKnop/somelibrary/v1" 要么: import "github.com/RichardKnop/somelibrary/v2" 根据你的需要。 对v1或v2所做的任何更改都将不被要求破坏任何API或工作function。 II。 分叉 这将使您完全控制Go代码所需的外部依赖版本。 例如,您可以将github.com/RichardKnop/somelibrary分叉到您自己的GitHub帐户中,然后在您的代码中执行: import "github.com/ForkingUser/somelibrary" 那么你将不得不fork所有的外部依赖这似乎有点矫枉过正。 但是它会让你完全控制版本。 您可以将您的叉子保留在您知道正在使用您的代码的版本中,并且只有在检查到新版本的依赖关系不会破坏任何东西后才更新叉子。 思考?

iOS 11导航栏高度自定义

现在在iOS 11中, sizeThatFits方法不是从UINavigationBar子类中调用的。 更改UINavigationBar的框架会导致毛刺和错误的插入。 那么,现在有什么想法如何自定义导航栏高度?

什么是折叠一组潜在重叠范围的好的通用algorithm?

我有一个方法来获得这个类的一些对象 class Range<T> { public T Start; public T End; } 在我的情况下, T是DateTime ,但为简单起见使用int 。 我想要一个方法,将这些范围折叠成覆盖相同“区域”但不重叠的方法。 所以,如果我有以下范围 1至5 3至9 11到15 12至14 13到20 该方法应该给我 1至9 11至20 猜猜这会被称为工会? 我想象的方法签名可能看起来像这样: public static IEnumerable<Range<T>> Collapse<T>( this IEnumerable<Range<T>>, IComparable<T> comparer) { … } 我在这里看到了一些类似的其他问题,但我还没有find一个这样的实现。 这个答案和其他一些相同的问题的答案描述algorithm,但我不太清楚,如果我理解的algorithm。 不是特别擅长实现algorithm,所以我希望这里有人能帮助我。

是variables赋值和读取primefaces操作吗?

我无法在文件中find任何提及… 是分配给一个双重(或任何其他简单的types,包括布尔值)从线程的angular度来看一个primefaces操作? double value = 0; public void First() { while(true) { value = (new Random()).NextDouble(); } } public void Second() { while(true) { Console.WriteLine(value); } } 在这个代码示例中,第一个方法在一个线程中调用,第二个方法在另一个线程中调用。 如果第二个方法在赋值给另一个线程中的variables的时候得到了执行的结果,那么第二个方法会得到一个乱码值吗 我不在乎是否收到旧的值,只有接收到一个有效的值才是重要的(不是8个字节中有2个是设置的)。 我知道这是一个愚蠢的问题,但我想确定,因为我不知道CLR如何设置variables。

如何在Android ListView的一侧显示字母

我已经看了很多教程,使一个ListView在侧面(如联系人列表)上有字母字母,但他们似乎都使用ListActivity类和/或数据库中的数据,而我只是使用ListView(没有特殊的Activity)和一个数据的ArrayList。 有谁知道我可以如何在我自己的ListView的联系人列表中实现字母滚动function? 再次编辑 我遵循这个教程 ,我认为这个教程终于可以实现,但是我仍然被迫closures。 class AlphabeticalAdapter extends ArrayAdapter<String> implements SectionIndexer { private HashMap<String, Integer> alphaIndexer; private String[] sections; public AlphabeticalAdapter(Context c, int resource, List<String> data) { super(c, resource, data); for (int i = 0; i < data.size(); i++) { String s = data.get(i).substring(0, 1).toUpperCase(); alphaIndexer.put(s, i); } Set<String> sectionLetters = alphaIndexer.keySet(); ArrayList<String> sectionList = […]

为什么Guid.ToByteArray()以这种方式sorting字节?

当您在.NET中以GUID调用ToByteArray() ,与GUID的string表示forms相比,生成的数组中的字节顺序不是您所期望的。 例如,对于以string表示的以下GUID: 11223344-5566-7788-9900-aabbccddeeff ToByteArray()的结果是这样的: 44, 33, 22, 11, 66, 55, 88, 77, 99, 00, AA, BB, CC, DD, EE, FF 请注意,前四个字节的顺序是相反的。 字节4和5交换,字节6和7交换。 但最后的8个字节与它们在string中的表示顺序相同。 我明白这是发生。 我想知道的是为什么.NET这样处理它。 作为参考,你可以在这里和这里看到一些关于这个(不正确的归因于Oracle数据库)的讨论和困惑。

如何防止诸如Zalgo文本的变音符号

上图中的人物是在几个月前由计算机安全专家MikkoHyppönen啾啾 ,他以计算机病毒和TED计算机安全方面的工作而闻名。 关于这个,我只会发表一个形象,但你明白了。 这显然不是你想要传播你的网站,并吓坏游客。 经过进一步的检查,这个angular色似乎是一个泰国字母组合的超过87个变音符号(有甚至是一个限制?!)。 这让我想到安全性,本地化以及如何处理这种input。 我的search引导我在Stack上提出这个问题 ,而Michael Kaplan则发表了一篇关于剥离符号的博客文章。 在这个例子中,他演示了如何将一个string分解为它的“基本”字符(为简洁起见,在这里简化): StringBuilder sb = new StringBuilder(); foreach (char c in "façade".Normalize(NormalizationForm.FormD)) { if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) sb.Append(c); } Response.Write(sb.ToString()); // facade 我可以看到这在某些情况下会是有用的,但是在用户input方面,它将删除所有的变音符号。 正如卡普兰指出的那样,删除某些语言的变音符号可以完全改变这个词的含义。 这引出了一个问题: 如何在用户input/输出中允许一些变音符号,但排除其他极端情况,如MikkoHyppönen的人物angular色?

在sbt 0.13中使用.sbt文件编写多项目编译的习惯方法

我听说.sbt文件已经在0.13中以各种方式得到了改进,现在我可以指定它们中的多项目构build。 http://www.scala-sbt.org/0.13.0/docs/Community/ChangeSummary_0.13.0.html#sbt-format-enhancements提到我们现在可以在.sbt文件中定义子项目。 我也知道,根中的多个.sbt文件将被聚合成一个概念文件。 但是我真正喜欢的是不要用十几个子项目.sbt文件污染我的根。 有没有一种方法可以将子项目build.sbt文件放到它们各自的子目录中,在它们之间保留一些共享的代码,然后为整个项目build立一个根build.sbt来聚合子项目? 我现在在.scala文件中有一个类似的设置,但如果可能的话,宁愿使用.sbt文件。 如果这是不可能的,用.sbt文件构build大型多项目构build的“正确”方法是什么?

debugging器不会在asynchronous方法中打破/停止exception

当一个debugging器连接到一个.NET进程时,它通常会在引发未处理的exception时停止。 但是,当你在一个async方法,这似乎不工作。 我以前尝试过的场景在以下代码中列出: class Program { static void Main() { // Debugger stopps correctly Task.Run(() => SyncOp()); // Debugger doesn't stop Task.Run(async () => SyncOp()); // Debugger doesn't stop Task.Run((Func<Task>)AsyncTaskOp); // Debugger stops on "Wait()" with "AggregateException" Task.Run(() => AsyncTaskOp().Wait()); // Throws "Exceptions was unhandled by user code" on "await" Task.Run(() => AsyncVoidOp()); Thread.Sleep(2000); } […]

gunicorn.errors.HaltServer:<HaltServer'Worker无法启动。 3> django

我有一个Django的应用程序,并试图设置它与gunicorn第一,后来与主pipe和nginx。 该应用程序正常运行与正常的Django命令完全像python manage.py runserver 我安装gunicorn使用pip像pip install gunicorn和django版本是1.5.3 当我在下面的虚拟env中运行下面的命令 gunicorn hello.wsgi:application -b xx.xxx.xxx.xx:8000并面临错误 Traceback (most recent call last): File "/root/Envs/proj/bin/gunicorn", line 9, in <module> load_entry_point('gunicorn==19.0.0', 'console_scripts', 'gunicorn')() File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 166, in run super(Application, self).run() File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 71, in run Arbiter(self).run() File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 169, in […]