小编Yan*_*ang的帖子

Grokking Timsort

这块名为Timsort的(相对)新排序.它被用作Python的list.sort,现在将成为Java 7中的新Array.sort.

一些文档和一篇小维基百科文章描述了排序的高级属性和一些低级别的性能评估,但我很好奇是否有人可以提供一些伪代码来说明Timsort正在做什么,确切地说,关键是什么这让它变得有趣.(参见引用的论文"乐观排序和信息理论复杂性".)

(另请参阅StackOverflow相关帖子.)

python java sorting algorithm timsort

25
推荐指数
2
解决办法
8272
查看次数

在Scala中,为什么我会将这个"多态表达式无法实例化为预期类型"?

为什么在Scala 2.9.0.1中会出现以下情况?

scala> def f(xs: Seq[Either[Int,String]]) = 0
f: (xs: Seq[Either[Int,String]])Int

scala> val xs = List(Left(0), Right("a")).iterator.toArray
xs: Array[Product with Serializable with Either[Int,java.lang.String]] = Array(Left(0), Right(a))

scala> f(xs)
res39: Int = 0

scala> f(List(Left(0), Right("a")).iterator.toArray)
<console>:9: error: polymorphic expression cannot be instantiated to expected type;
 found   : [B >: Product with Serializable with Either[Int,java.lang.String]]Array[B]
 required: Seq[Either[Int,String]]
       f(List(Left(0), Right("a")).iterator.toArray)
                                            ^
Run Code Online (Sandbox Code Playgroud)

更新:Debilski提出了一个更好的例子(不是100%肯定这表明了相同的潜在现象):

Seq(0).toArray : Seq[Int] // compiles
Seq(Some(0)).toArray : Seq[Option[Int]] // doesn't
Run Code Online (Sandbox Code Playgroud)

scala

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

如何在R中创建2D散射数据的连续密度热图?

我可以生成一维数据的密度图:

qplot(mydatapoints, geom='density')
Run Code Online (Sandbox Code Playgroud)

我也看过很多热图网格的例子,但这些更类似于1D数据的直方图,因为数据进入离散桶而不是显示平滑曲线.

我可以绘制类似于1D密度的东西,但是对于2D数据,可以用(例如)色调/饱和度/亮度来表示密度吗?

r ggplot2

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

为什么插入符号列车占用了这么多记忆?

当我训练只是使用时glm,一切正常,我甚至没有接近耗尽记忆.但是当我跑步时train(..., method='glm'),我的内存耗尽.

这是因为train为交叉验证的每次迭代存储了大量数据(或者无论trControl程序是什么)?我在看,trainControl我找不到如何防止这种...任何提示?我只关心性能总结和预测的响应.

(我知道它与存储参数调整网格搜索的每次迭代中的数据无关,因为我认为没有glm的网格.)

memory r glm r-caret

20
推荐指数
3
解决办法
8129
查看次数

Scala web微框架

我正在寻找具有以下某些属性的Scala Web框架.

  • 模块化,以防(例如)我不想使用框架默认的特定模板语言或DB接口.
  • 避免"神奇"或令人讨厌的设计决策(一般偏好Unfiltered的功能样式) - 诸如线程本地请求/响应对象,反射(参见Bowler的函数名称约定)等.
  • 数据库接口.任何支持与SQLAlchemy相同程度的灵活性(ORM和SQL支持,平滑的interop和escape hatches)?
  • 模板/视图语言.虽然我对基于组件的方法感兴趣,但这里非常灵活.
  • 性能,可扩展性(Comet支持).

适合该法案的最佳Scala Web微框架是什么?我一直在关注的一些框架:

  • 了Scalatra
  • Bowler(以Scalatra为基础)
  • 播放(Scala界面)
  • 抑扬
  • 未过滤(最小HTTP请求处理,无数据库接口/模板语言)

但是,如果不花时间玩所有这些,就很难分辨出使用什么.

scala web-frameworks

20
推荐指数
3
解决办法
3975
查看次数

在Chrome中重新加载JavaScript

我知道你可以在Chrome开发者工具的Source面板中实时编辑JS,我知道有用于实时重新加载CSS的系统,但是你可以从源位置(URL或本地磁盘,重新加载JS)或以某种方式利用工作区,甚至可能作为Chrome开发者工具插件)?特别是这对于CoffeeScript-to-JS设置非常有用.

javascript google-chrome coffeescript livereload

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

了解用于衡量趋势的算法

在计算维基百科趋势的Hadoop教程hive_trend_mapper.py程序中使用的公式背后的基本原理是什么?

实际上有两个组成部分:月度趋势和每日趋势.我将专注于日常趋势,但类似的问题适用于每月的趋势.

在每日趋势中,pageviews是此主题每天的页面查看数量的数组,每天一个元素,并且total_pageviews是此数组的总和:

# pageviews for most recent day
y2 = pageviews[-1]
# pageviews for previous day
y1 = pageviews[-2]
# Simple baseline trend algorithm
slope = y2 - y1
trend = slope  * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
Run Code Online (Sandbox Code Playgroud)

我知道它在表面上做了什么:它只是查看过去一天的变化(slope),并将其扩展到日志1+total_pageviews(log(1)==0,因此这个缩放因子是非负的).它可以看作是将月份的总浏览量视为一个权重,但随着它的增长而缓和 - 这样,总浏览量不再对"足够受欢迎"的内容产生影响,但同时对无关紧要的内容进行了重大改变. t尽可能地称重.

为什么这样呢?为什么我们想要打折最初不受欢迎的东西?对于那些持续受欢迎程度较低的项目而言,大三角洲不应该重要,而对于那些已经很受欢迎的项目(大三角洲可能落在标准偏差的一小部分内)来说,不应该更少吗?作为一个稻草人,为什么不简单地采取y2-y1和完成它?

什么error会有用?该教程并没有真正有意义地再次使用它.然后,它没有告诉我们如何trend使用 - 这是在最终产品中绘制的,对吗?

我在哪里可以读到关于理论的(最好是介绍性的)背景?有这个疯狂的名字吗?这是一个教科书公式吗?

提前感谢任何答案(或讨论!).

algorithm

18
推荐指数
1
解决办法
8326
查看次数

如何在POSIX中持久重命名文件?

在POSIX文件系统中持久重命名文件的正确方法是什么?特别想知道目录上的fsyncs .(如果这取决于OS/FS,我问的是Linux和ext3/ext4).

注意:在StackOverflow上还有关于持久重命名的其他问题,但是AFAICT它们没有解决fsync-ing目录(这对我来说很重要 - 我甚至不修改文件数据).

我目前有(在Python中):

dstdirfd = open(dstdirpath, O_DIRECTORY|O_RDONLY)
rename(srcdirpath + '/' + filename, dstdirpath + '/' + filename)
fsync(dstdirfd)
Run Code Online (Sandbox Code Playgroud)

具体问题:

  • 这是否也暗含fsync源目录?或者我可能会在电源循环后最终显示两个目录中的文件(意味着我必须检查硬链接计数并手动执行恢复),即不可能保证持久的原子移动操作?
  • 如果我fsync源目录而不是目标目录,那还会隐式fsync目标目录吗?
  • 是否有任何有用的相关测试/调试/学习工具(故障喷射器,内省工具,模拟文件系统等)?

提前致谢.

directory posix rename fsync ext4

18
推荐指数
2
解决办法
7467
查看次数

如何在contenteditable中跟踪插入符/光标?

我想跟踪插入符号/光标的移动.不过,我不确定最好的方法是什么.

我正在听点击,keydown,keyup.(按键当然甚至不会触发箭头键或ctrl-x之类的东西.)

虽然点击工作正常,但keydown的问题是它在插入符号实际移动之前被触发,因此当我查询当前文档选择范围时,我得到旧位置而不是新位置.但是如果我依靠keyup来获取更新的位置,它就会触发太晚:按下键时插入符号就会移动,但是键会在任意时间后释放.

这一定是可能的,因为CKeditor之类的东西能够做到这一点.任何提示?

javascript contenteditable

18
推荐指数
2
解决办法
4713
查看次数

如何使用link.exe静态链接

我一直试图使用Visual Studio 2008命令行工具静态链接到Windows上名为Poco的C++库.

我建立我的程序:

cl /I..\poco\lib /c myapp.cpp
link /libpath:..\poco\lib myapp.obj PocoNet.lib
Run Code Online (Sandbox Code Playgroud)

这导致在运行时需要PocoNet.dll和PocoFoundation.dll的exe.

我花了一些时间阅读Windows中的链接,并学习cl /MT静态链接标准库,同时cl /MD动态链接.

我试图指明/MT,但这似乎没有改变任何东西; 我的应用程序仍然需要Poco DLL.(我也怀疑这/MT是默认行为.)

展望下..\poco\lib,我发现也有一个PocoNetmt.lib,但指定,而不是PocoNet.lib的结果在一堆LNK2005错误("已定义")的:

msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in exp.obj
Run Code Online (Sandbox Code Playgroud)

然后我尝试堆叠更多的标志:

  • /verbose:lib:有用于查看正在发生的事情

  • /Zl:和以前一样的结果

  • /nodefaultlib:libcmt.lib /nodefaultlib:msvcprt.lib:得到了这个错误:

    PocoFoundationmt.lib(Exception.obj) : warning LNK4217: locally defined symbol ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ (public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)) imported in function __ehhandler$??0Exception@Poco@@QAE@ABV01@@Z
    
    Run Code Online (Sandbox Code Playgroud)
  • .lib …

c++ linker static poco visual-c++

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