更新:从Git 1.8.3开始,这将更直观地工作,请参阅我自己的答案.
想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.
我可以git checkout .,但git checkout.添加稀疏结帐排除的目录
有git reset --hard,但它不会让我为子目录这样做:
> git reset --hard .
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)
再说一遍:为什么git不能通过路径进行硬/软复位?
我可以使用反向修补当前状态git diff subdir | patch -p1 -R,但这是一种相当奇怪的方法.
什么是适合此操作的Git命令?
下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我不希望明确恢复a/a和a/b,我只"知道" a,并希望下面恢复一切.编辑:我也不"知道" b,或者与其他目录位于同一级别a.
#!/bin/sh
rm -rf repo; git init repo; cd repo
for f in a b; do …Run Code Online (Sandbox Code Playgroud) 有没有办法从其Web界面重新启动在Windows上运行的TeamCity服务器?我没有找到按钮或文档是否可行.
这个问题导致了一个新的R包:
wrswoR
没有替换使用的R的默认采样sample.int似乎需要二次运行时间,例如,当使用从均匀分布中提取的权重时.这对于大样本量来说很慢.有人知道从R中可以使用的更快的实现吗?两个选项是"替换拒绝采样"(参见stats.sx上的这个问题)和Wong和Easton(1980)的算法(在StackOverflow答案中使用Python实现).
感谢Ben Bolker暗示C函数,该函数在被调用时sample.int具有内部调用replace=F和非均匀权重:ProbSampleNoReplace.实际上,代码显示了两个嵌套for循环(第420行random.c).
以下是根据经验分析运行时间的代码:
library(plyr)
sample.int.test <- function(n, p) {
sample.int(2 * n, n, replace=F, prob=p); NULL }
times <- ldply(
1:7,
function(i) {
n <- 1024 * (2 ** i)
p <- runif(2 * n)
data.frame(
n=n,
user=system.time(sample.int.test(n, p), gcFirst=T)['user.self'])
},
.progress='text'
)
times
library(ggplot2)
ggplot(times, aes(x=n, y=user/n)) + geom_point() + scale_x_log10() +
ylab('Time per unit (s)') …Run Code Online (Sandbox Code Playgroud) Windows更新安装安全更新KB2687323后,我的VB6项目无法加载.显示的错误消息是"'[project_vbp_path] /MSCOMCTL.OCX'无法加载 - 继续加载项目?".请注意,messeage中的路径是vbp文件夹路径而不是控件的注册路径.
细节:
安全更新说明指出MSCOMCTL.OCX具有新的固定版本.所以我检查了"升级ActiveX控件"复选框的项目属性.我试过两种方式; 检查和取消选中无济于事.VB6 IDE拒绝加载升级后的OCX.
如果我运行,git diff我会看到工作树中的更改,如果我运行git diff --staged(或者--cached),那么我会看到上传的更改(w/git add),但有没有办法git diff一次性查看所有内容?
刚看到这个:
$ Rscript -e "sessionInfo()['basePkgs']"
$basePkgs
[1] "stats" "graphics" "grDevices" "utils" "datasets" "base"
$ R --vanilla --slave -e "sessionInfo()['basePkgs']"
$basePkgs
[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
[7] "base"
Run Code Online (Sandbox Code Playgroud)
该methods程序包似乎在运行时始终可用R,但不是Rscript.我怀疑这是为了获得性能,但除了显而易见之外还有任何实际意义吗?我问的是因为包装的存在与否而引发的一个有趣的错误methods.
我需要cut在连续变量上应用ggplot2中的Brewer颜色标度来显示它,就像在ggplot2中使用scale_fill_brewer()函数设置数据的断点一样.连续变量是相对差异,我想将数据格式化为"18.2%"而不是"0.182".有没有一种简单的方法来实现这一目标?
x <- runif(100)
levels(cut(x, breaks=10))
[1] "(0.0223,0.12]" "(0.12,0.218]" "(0.218,0.315]" "(0.315,0.413]"
[5] "(0.413,0.511]" "(0.511,0.608]" "(0.608,0.706]" "(0.706,0.804]"
[9] "(0.804,0.901]" "(0.901,0.999]"
Run Code Online (Sandbox Code Playgroud)
我想,例如,第一级出现为(2.23 %, 12 %].有更好的选择cut吗?
哪个Java同步构造可能为具有固定数量线程的并发迭代处理场景提供最佳性能,如下所述?在我自己试验了一段时间后(使用ExecutorService和CyclicBarrier)并对结果感到有些惊讶,我会感谢一些专家建议和一些新想法.这里的现有问题似乎并不主要关注绩效,因此这个新问题.提前致谢!
该应用程序的核心是一个简单的迭代数据处理算法,与Mac Pro上8个内核的计算负载并行,运行OS X 10.6和Java 1.6.0_07.要处理的数据被分成8个块,每个块被送到Runnable,由固定数量的线程之一执行.并行化算法是相当简单的,它在功能上按预期工作,但它的性能还不是我认为的可能.该应用程序似乎花了很多时间在系统调用同步,所以经过一些分析后,我想知道我是否选择了最合适的同步机制.
该算法的一个关键要求是它需要分阶段进行,因此线程需要在每个阶段结束时进行同步.主线程准备工作(非常低的开销),将它传递给线程,让它们处理它,然后在所有线程完成后继续,重新安排工作(再次非常低的开销)并重复循环.机器专用于此任务,通过使用预分配项的每线程池来最小化垃圾收集,并且可以修复线程数(没有传入请求等,每个CPU核心只有一个线程).
我的第一个实现使用了一个带有8个工作线程的ExecutorService.该程序创建8个任务来完成工作,然后让他们处理它,大致如下:
// create one thread per CPU
executorService = Executors.newFixedThreadPool( 8 );
...
// now process data in cycles
while( ...) {
// package data into 8 work items
...
// create one Callable task per work item
...
// submit the Callables to the worker threads
executorService.invokeAll( taskList );
}
Run Code Online (Sandbox Code Playgroud)
这在功能上运行良好(它做它应该做的事情),对于非常大的工作项,确实所有8个CPU都变得高负载,就像预期允许的处理算法一样(一些工作项将比其他工作项完成得更快,然后空闲) .但是,随着工作项变小(并且实际上不受程序控制),用户CPU负载急剧缩小:
blocksize | system | user | cycles/sec
256k 1.8% 85% 1.30
64k 2.5% 77% 5.6
16k 4% …Run Code Online (Sandbox Code Playgroud) java performance multithreading executorservice cyclicbarrier
我不明白为什么这个简单的代码
# file: mp.py
from multiprocessing import Process
import sys
def func(x):
print 'works ', x + 2
sys.stdout.flush()
p = Process(target= func, args= (2, ))
p.start()
p.join()
p.terminate()
print 'done'
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
连续创建"pythonw.exe"进程并且它不会打印任何内容,即使我从命令行运行它:
python mp.py
Run Code Online (Sandbox Code Playgroud)
我在Windows 7上运行最新的Python 2.6 32位和64位
是否存在R包可以存储缓存数据的预定义位置?数据应该跨会话持续存在.我正在考虑创建一个子目录${R_LIBS_USER}/package_name,但我不确定这是否是可移植的,如果我的软件包在系统范围内安装,那么这是"允许的".
这个想法如下:在包mydata.R的data子目录中创建一个R脚本,该脚本将通过调用data(mydata)(根据文档data())执行.此脚本将从Internet加载数据并缓存它,如果之前尚未缓存的话.(如果已经缓存了数据,则将使用缓存.)此外,还将提供一个函数来使缓存无效和/或检查是否可以在线获得更新版本的数据.
这来自以下文件data():
目前,支持四种格式的数据文件:
结束'.R'或'.r'的文件是source()d in,R工作目录暂时更改为包含相应文件的目录.(数据确保附加了utils包,以防它通过utils :: data运行.)
...
实际上,fortytwo.R在data包的子目录中创建一个文件,其中包含以下内容:
fortytwo = data.frame(answer=42)
Run Code Online (Sandbox Code Playgroud)
然后执行data(fortytwo)创建数据框变量fortytwo.现在的问题是:fortytwo.R如果难以计算,会在哪里缓存数据?
编辑:我正在考虑创建两个包:一个提供数据的"数据"包,以及一个对其进行操作的"代码"包.问题涉及"数据"包:它在哪里可以将文件存储在每个用户的存储中,以便它在R会话中保持不变并且可以从不同的R项目访问?