小编Jef*_*eff的帖子

Windows和Linux目录名中禁止使用哪些字符?

我知道/在Linux中是非法的,以下在Windows中是非法的(我认为) * . " / \ [ ] : ; | , *

我还缺少什么?

但是,我需要一个全面的指南,并且需要考虑双字节字符.链接到外部资源对我来说没问题.

我需要首先使用可能包含禁用字符的名称在文件系统上创建一个目录,所以我打算用下划线替换这些字符.然后我需要将此目录及其内容写入zip文件(使用Java),因此有关zip目录名称的任何其他建议将不胜感激.

linux windows directory zip filenames

315
推荐指数
10
解决办法
33万
查看次数

Scala 2.8中<:<,<%<和=:=的含义是什么?它们在哪里记录?

我可以在Predef的API文档中看到它们是泛型函数类型(From)=> To的子类,但就是这样.嗯什么?也许某处有文档,但搜索引擎不能很好地处理"<:<"之类的"名称",所以我无法找到它.

后续问题:我什么时候应该使用这些时髦的符号/类,为什么?

scala type-constraints scala-2.8

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

你怎么知道何时使用fold-left以及何时使用fold-right?

我知道fold-left会产生左倾的树木,右倾的树木产生右倾的树木,但是当我伸手去拿折叠时,我有时会发现自己陷入了引发头痛的想法,试图确定哪种折叠是合适的.我通常最终会解决整个问题并逐步执行fold函数,因为它适用于我的问题.

所以我想知道的是:

  • 确定是向右折叠还是向右折叠有哪些经验法则?
  • 考虑到我面临的问题,我如何快速决定使用哪种类型的折叠?

Scala by Example(PDF)中有一个示例,它使用折叠编写一个名为flatten的函数,该函数将元素列表列表连接成一个列表.在这种情况下,右侧折叠是正确的选择(考虑到列表连接的方式),但我必须考虑一下才能得出结论.

由于折叠是(功能)编程中的常见操作,因此我希望能够快速,自信地做出这些决策.所以...任何提示?

language-agnostic functional-programming fold

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

Scala的apply()方法魔法是如何工作的?

在Scala中,如果我定义一个apply在类或顶级对象中调用的方法,那么每当我将一个圆括号添加到该类的实例时,将调用该方法,并apply()在它们之间放置适当的参数.例如:

class Foo(x: Int) {
    def apply(y: Int) = {
        x*x + y*y
    }
}

val f = new Foo(3)
f(4)   // returns 25
Run Code Online (Sandbox Code Playgroud)

所以基本上,object(args)只是语法糖object.apply(args).

Scala如何进行此转换?

这里是否存在全局定义的隐式转换,类似于Predef对象中的隐式类型转换(但实物类型不同)?或者它是一些更深层次的魔法?我问,因为看起来Scala强烈赞成一套较小的规则的一致应用,而不是许多例外的许多规则.这最初对我来说似乎是个例外.

scala syntactic-sugar magic-methods companion-object

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

Django中的Python日志记录

我正在开发一个Django应用程序,我试图用错误/跟踪日志记录Python的日志记录模块.理想情况下,我希望为站点的不同区域配置不同的记录器.到目前为止,我已经完成了所有这些工作,但有一件事让我摸不着头脑.

我有根记录器转到sys.stderr,我已经配置了另一个记录器来写入文件.这是在我的settings.py文件中:

sviewlog = logging.getLogger('MyApp.views.scans')
view_log_handler = logging.FileHandler('C:\\MyApp\\logs\\scan_log.log')
view_log_handler.setLevel(logging.INFO)
view_log_handler.setFormatter(logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s'))
sviewlog.addHandler(view_log_handler)
Run Code Online (Sandbox Code Playgroud)

看起来很简单.不过这是问题所在:无论我写入sviewlog还是写入日志文件两次.根记录器只打印一次.就像addHandler()被调用两次一样.当我将代码放入调试器时,这正是我所看到的.settings.py中的代码执行两次,因此创建了两个FileHandler并将其添加到同一个logger实例中.但为什么?我该如何解决这个问题呢?

谁能告诉我这里发生了什么?我已经尝试将sviewlog记录器/处理程序实例化代码移动到它所使用的文件中(因为这实际上对我来说似乎是合适的地方),但我有同样的问题.我在网上看到的大多数例子都只使用根记录器,而我更喜欢使用多个记录器.

python django logging

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

在Django中使用HttpResponseRedirect时如何传递模板上下文信息?

我有一个表单,在用户输入信息后重定向到同一页面(以便他们可以继续输入信息).如果表单提交成功,我将返回

HttpResponseRedirect(request.path)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.但是,在这种情况下,我还想向用户显示一些消息(例如,屏幕顶部的"您的数据已保存").如果我没有重定向,我只是在上下文字典中返回这些消息.但是,通过重定向,我无法做到这一点.

那么在使用HttpResponseRedirect时如何传递模板上下文信息呢?

我正在尝试做的事情似乎非常普遍,所以如果我遗漏了一些明显的东西,请原谅.

python django redirect http

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

Scala:如何合并地图集合

我有一个Map [String,Double]列表,我想将它们的内容合并到一个Map [String,Double]中.我该如何以惯用的方式做到这一点?我想我应该可以用折叠来做到这一点.就像是:

val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
Run Code Online (Sandbox Code Playgroud)

此外,我想以通用的方式处理关键冲突.也就是说,如果我向已经存在的地图添加一个键,我应该能够指定一个返回Double的函数(在这种情况下)并获取该键的现有值,加上我试图添加的值.如果地图中尚不存在该关键字,则只需添加该关键字并使其值不变.

在我的具体情况下,我想构建一个Map [String,Double],这样如果地图已经包含一个键,那么Double将被添加到现有的地图值中.

我在我的特定代码中使用可变映射,但如果可能的话,我对更通用的解决方案感兴趣.

scala map folding scala-collections

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

如何在Rails迁移中添加检查约束?

我需要在我的Rails应用程序中的现有表中添加一个新的整数列.该列只能有值1,2,3,所以我想在表/列中添加一个检查约束.如何在Rails迁移中指定此约束?

ruby mysql ruby-on-rails database-migration

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

使用正则表达式查找哈希表/字典/地图

我试图弄清楚是否有一种合理有效的方法在字典中执行查找(或者哈希,或地图,或者你喜欢的语言所谓的任何语言),其中键是正则表达式,字符串是查找字符串的钥匙套.例如(在Python语法中):

>>> regex_dict = { re.compile(r'foo.') : 12, re.compile(r'^FileN.*$') : 35 }
>>> regex_dict['food']
12
>>> regex_dict['foot in my mouth']
12
>>> regex_dict['FileNotFoundException: file.x does not exist']
35
Run Code Online (Sandbox Code Playgroud)

(显然上面的例子不能用Python编写,但这是我希望能够做的事情.)

我可以想到一种天真的方式来实现它,我在其中迭代字典中的所有键并尝试将传入的字符串与它们相匹配,但随后我丢失了哈希映射的O(1)查找时间,而是有O(n),其中n是我字典中的键数.这可能是一个大问题,因为我希望这个词典变得非常大,我需要一遍又一遍地搜索它(实际上我需要为我在文本文件中读取的每一行迭代它,并且文件大小可以达到几百兆字节).

有没有办法实现这一点,而不是诉诸O(n)效率?

或者,如果您知道在数据库中完成此类查找的方法,那也会很棒.

(任何编程语言都很好 - 我正在使用Python,但我对这里的数据结构和算法更感兴趣.)

有人指出不止一场比赛是可能的,这是绝对正确的.理想情况下,在这种情况下,我想返回一个包含所有匹配项的列表或元组.不过,我会为第一场比赛做好准备.

在这种情况下,我看不出O(1)是可能的; 不过,我会满足于低于O(n)的任何东西.此外,底层数据结构可以是任何东西,但我想要的基本行为是我上面写的:查找字符串,并返回与正则表达式键匹配的值.

python regex hash dictionary

20
推荐指数
1
解决办法
6601
查看次数

Clojure是否具有Java的导入包.*?

或者我是否必须专门枚举我导入的每个类?

我现在正在学习Clojure,在REPL中能够做这样的事情似乎很有用:

(import '(java.io *))
Run Code Online (Sandbox Code Playgroud)

并不是说这是有效的语法,但拥有相同的东西会更好.它可以节省一些打字,特别是在摆弄时.在实际的生产代码中,我总是枚举我正在导入的每个类,无论语言如何,但不必这样做是非常方便的.

import clojure java-interop

19
推荐指数
1
解决办法
3111
查看次数