我对Date类的Java API感到困惑.所有内容似乎都已弃用,并且链接到Calendar类.所以我开始使用Calendar对象做我想用Date做的事情,但直觉上当我真正想要做的就是创建和比较两个日期时,使用Calendar对象会让我感到困扰.
有一个简单的方法吗?现在我做
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0);
cal.set(year, month, day, hour, minute, second);
Date date = cal.getTime(); // get back a Date object
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在C++中以HH :: MM :: SS方式节省时间的方法.我在这里看到的,他们有很多的解决方案和一个小小的研究后,我选择了time
和localtime
.然而,看起来这个localtime
功能有点棘手,因为它说:
对localtime和gmtime的所有调用都使用相同的静态结构,因此每次调用都会覆盖前一次调用的结果.
这导致的问题显示在下一段代码中:
#include <ctime>
#include <iostream>
using namespace std;
int main() {
time_t t1 = time(0); // get time now
struct tm * now = localtime( & t1 );
std::cout << t1 << std::endl;
sleep(2);
time_t t2 = time(0); // get time now
struct tm * now2 = localtime( & t2 );
std::cout << t2 << std::endl;
cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + …
Run Code Online (Sandbox Code Playgroud) 使用cvShowImage
,可以在OpenCV中轻松显示图像.但是,您如何告诉OpenCV在每个其他窗口的顶部显示窗口?
我在显示图像的同时运行全屏OpenGL应用程序.第一次OpenCV窗口弹出我的应用程序窗口,但如果我点击我的应用程序的窗口(即重点关注它),那么我无法让OpenCV回到顶部OpenGL窗口,即使在销毁和重新创建窗口时也是如此.
我想过每次重命名窗口,但还有另一种方法吗?
自从我开始使用Scala之后,我就有一个关于Java API的大问题:为什么Oracle保留了带有"frameset"标签的旧HTML页面并且根本没有搜索功能?看起来他们还没有进入Web 2.0 ......
在Scala的API文档,另一方面,而不是在网络历史上最好的网站,是数量更多的可用几个数量级.
无论如何,如果有人知道为什么会这样,更重要的是,如果存在具有更好界面的Java API文档,请告诉我!
我最近发现了Meteor,我真的很喜欢它为编写新应用程序带来的简单性.我的问题是:你如何将它连接到现有的后端?我们有大量现有的Clojure代码,也与MongoDB一起运行.我想做的是使用Meteor构建我的应用程序的前端.我想我可以将我的Meteor应用程序直接连接到后端的MongoDB实例,但这似乎不是一个好习惯...或者是它?
我想到的另一个选择是从webapp或Clojure代码访问数据库,并使用队列机制或套接字创建两者之间的单独通信方式.任何提示或指向相关文档都会有所帮助!
当尝试调用 grid.arrange 将多个图放在同一个 ggplot2 图上时,我首先构建了一个我想要的图的列表。然后我构建相应的参数列表来调用 grid.arrange,如上一个问题中所述。这是我的代码(我的数据框称为 manip):
args.list <- NULL;
plot.list <- NULL;
for (m in names(manip[2:10])) {
plot.list <- c(plot.list, list(qplot(manip$side, y=manip[,m],ylab=m))
}
args.list <- c(plot.list, 1, 9)
names(args.list) <- c(names(manip)[2:10], list("nrow","ncol"))
do.call(grid.arrange, args.list)
Run Code Online (Sandbox Code Playgroud)
这是有效的,除了 9 个图是完全一样的!经查,数据始终是对应的那个m=10
。所以我的猜测是m
循环中没有分配的值,而是稍后评估。但是,标签ylab=m
已正确分配,并且对于所有图形都不同。
所以我真的不明白有什么区别以及解释器如何选择何时评估 m 的情节。有人可以解释一下吗?
我的(网络)应用程序的设置如下:我得到用户上传的PDF文件,在它们上运行OCR并向他们显示OCRed PDF。由于所有内容都在线,因此最小化生成的PDF文件的大小是减少用户加载和等待时间的关键。
我从用户那里收到的文件是sample.pdf(我创建了一个包含原始文件以及在此处生成的文件的存档:https : //dl.dropboxusercontent.com/u/1390155/tess-files/sample .zip)。我使用tesseract 3.04并执行以下操作:
gs -r300 -sDEVICE=tiff24nc -dBATCH -dNOPAUSE -sOutputFile=sample.tiff sample.pdf
tesseract sample.tiff sample-tess -l fra -psm 1 pdf
Run Code Online (Sandbox Code Playgroud)
OCR的结果很好,但是现在生成的PDF的大小约为2.5倍
所以我问你,如何在保持OCR结果的同时减小生成的PDF的大小?
一种明显的解决方案是在生成tiff时降低分辨率,但是我不想这样做,因为它可能会影响OCR结果。
我尝试的第二件事是使用ghostscript减少了tesseract后的PDF大小:
gs -o sample-down-300.pdf -sDEVICE=pdfwrite -dDownsampleColorImages=true \
-dDownsampleGrayImages=true -dDownsampleMonoImages=true \
-dColorImageResolution=300 -dGrayImageResolution=300 \
-dMonoImageResolution=300 -dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.5 -dMonoImageDownsampleThreshold=1.0 \
sample-tess.pdf
Run Code Online (Sandbox Code Playgroud)
这会有所帮助,生成的文件只有101K,因此约为原始文件的1.5倍。我可以接受,但它似乎也会影响OCR结果。例如,现在缺少“餐厅”和“比萨店”(第二行)之间的空白。
带有ghostscript的另一个(更简单)选项(使用ebook参数)导致PDF文件中的质量较差的43k文件,并且存在缺少空白的相同问题:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dBATCH -dQUIET -sOutputFile=sample-ebook.pdf \
sample-tess.pdf
Run Code Online (Sandbox Code Playgroud)
较低质量的PDF很好,但是我还是不想在OCR上妥协。
我已经使用PNG和JPEG完成了其他测试,但是OCR结果总是下降(甚至略有下降),并且结果PDF不会更小。例如,使用PNG:
convert -density 300 sample.pdf -transparent white sample.png
tesseract sample.png sample-tess-png -l fra -psm 1 pdf
Run Code Online (Sandbox Code Playgroud)
总数(55.50)丢失,最终PDF大小为149k。 …
在OpenGL中,一切都适用于主循环(据我所知).如果要在给定时间内绘制对象,则会出现此问题.现在,我做的是:我测量应用程序的近似FPS并设置一个计数器,我在主循环的每次迭代中减少.当计数器达到0时,我停止绘图.因此,例如,如果我想在屏幕上绘制一个2s的对象,并且我的FPS是30,我将计数器设置为60并绘制对象直到计数器达到0.
这样可以,但不是很好.例如,drawObjectFor(object, time)
由于对象有时"远离"主循环,因此很难编写类似
的内容.有没有更好的方法呢?
就编程而言,我对Windows Phone和Windows Galaxy一般都是新手.对于必须在Windows手机上运行的手机应用程序的项目,我开始探索资源,我有一些问题.
我遇到的一个问题是事情变化很快.例如,这个问题的答案说Windows Phone中的浏览器很可能不支持HTML5.但是,有很多在线教程(例如这里)介绍了ASP.NET MVC 4以及它如何适用于移动应用程序.
我个人希望采用"HTML5 + javascript"的方式,而不是学习如何使用Silverlight进行开发,而Silverlight显然已被微软停产.但是,我的第一个担心显然是能够创建一个有效的应用程序!
所以考虑到这一点,我的问题如下:
关于这些具体问题的任何具体指示或答案都将受到欢迎!:)
我正在尝试创建一个CSV文件,该文件将在服务器上以UTF-16LE编码保存,然后将结果传递给客户端.这就是我在Coffeescript中做的事情:
Meteor.methods {
iconv: (data, from="UTF-8", to="UTF-16LE") ->
Iconv = Meteor.require('iconv').Iconv
iconv = new Iconv(from, to)
res = iconv.convert(data)
res
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我用服务器从服务器写入文件
fs.writeFileSync('/tmp/test.csv', res)
Run Code Online (Sandbox Code Playgroud)
文件正确生成.但是,我想避免在服务器上创建文件并将其直接保存在客户端上(使用filesaver库).示例客户端代码如下所示:
exportToCsv = (data="tête", filename) ->
callback = (err, res) ->
blob = new Blob([res], {type:'text/csv;charset=UTF-16LE'})
saveAs(blob, filename)
Meteor.call('iconv', data, callback)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在测试的数据是一个带有特殊字符的简单字符串('ê').我的问题是我无法将nodejs缓冲区传递给客户端.它会自动序列化为:
Object {0: 116, 1: 0, 2: 234, 3: 0, 4: 116, 5: 0, 6: 101, 7: 0}
Run Code Online (Sandbox Code Playgroud)
而不是我在服务器上获得的缓冲区输出:
<Buffer 74 00 ea 00 74 00 65 00>
Run Code Online (Sandbox Code Playgroud)
问题不在于从十六进制到十进制的转换,我知道我可以使用某些东西转换回十六进制Number(116).toString(16)
.但是如何在blob中将此数据写为二进制?