小编dre*_*ves的帖子

如何控制水豚/phantomjs测试的时间

我想测试一些截止日期是否在不同时区和一天中的不同时间正确显示给用户。我的测试使用水豚+rspec+phantomjs。

我正在将一个块传递给 Timecop.travel(datetime) 并且该块内的测试代码正确地获取了模拟的日期时间,但看起来 PhantomJS / 模拟的浏览器没有得到模拟的时间。

有没有什么已知的方法可以让 PhantomJS 与 Timecop 一起工作?或者其他方法来模拟或操纵时间以进行测试?

这是一个简单的例子来说明我的意思。

time_spec.rb:

it "should show the Time travel date" do
  # current date is 2017-01-24
  Date.today.should == Date.parse("2017-01-24")
  Timecop.travel( Time.parse("2001-01-01 01:01") ) {
    sign_in(user)
    visit "/#{user.username}"

    Date.today.should == Date.parse("2001-01-01")
    page.should have_text("Today is 2001-01-01")
    page.should have_text("Javascript says 2001-01-01")
  }
end
Run Code Online (Sandbox Code Playgroud)

用户.html.erb:

<p>Today is <%= Time.now.iso8601 %></p>
<script>
  var now = moment().format()
  $('p').append("<p>Javascript says "+now+"</p>")
</script>
Run Code Online (Sandbox Code Playgroud)

运行测试的输出:

Failures:

  1) Dashboard should show the time travel date
     Failure/Error: page.should have_text("Javascript says …
Run Code Online (Sandbox Code Playgroud)

testing ruby-on-rails capybara phantomjs timecop

3
推荐指数
1
解决办法
1051
查看次数

如何让人类和程序访问同一个文件而不踩对方的脚趾

假设我有一个文件urls.txt,其中包含我正在监控的URL列表.我的监控脚本偶尔会编辑该文件,例如,指示每个URL是否可访问.我还想手动编辑该文件,添加或更改URL列表.我怎样才能允许这样我手动编辑时不必考虑它?

以下是一些可能的答案.你会怎么做?

  1. 参与hackery就像让程序检查vim或emacs创建的锁定文件一样.由于这只适合我,这实际上是有效的.

    • 如果人类编辑始终优先,那么只需要总是让人类破坏程序的更改(例如,忽略编辑器警告文件已在磁盘上更改).然后程序可以在下一个循环中重做它的更改.尽管如此,在用户编辑文件时更改文件并不是那么好.

    • 永远不要让人触摸程序正在进行修改的文件.重新思考设计,只有一个文件只有人类编辑,另一个文件只有程序编辑.

    • 为人类提供一个自定义工具来编辑执行相应文件锁定的文件.这可能与锁定文件然后启动编辑器或自定义接口(可能是简单的命令行界面)以插入/更改/删除文件中的条目一样粗糙.

    • 使用数据库而不是平面文件,然后锁定全部自动处理.

(请注意,我编写了URL监控示例,以使其更具体,因为我实际想到的可能是太奇怪和分散注意力 - 这个问题严格来说是关于如何让人类和程序都修改相同的状态文件.)

unix monitoring utilities locking file-locking

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

Javascript/css/php/mysql 在网站的 div 中收集用户电子邮件地址

假设您希望在您的网站上有一个框,上面写着“给我们您的电子邮件地址,我们将向您发送新闻”或类似内容。收集这些电子邮件地址的简单/优雅的方法是什么(假设标准 LAMP 堆栈)?特别是,我想要关于

  1. 用于处理 UI 的 Javascript(如果电子邮件地址无效,请投诉,按 Enter 键时说谢谢等)。
  2. CSS 使其看起来不错。
  3. PHP 来实际收集电子邮件地址并存储它们(平面文件或数据库都可以)。

或者,如果有一种奇特的 Rails 或 AJAX 方式可以做到这一点,我也对此持开放态度。

(我目前所知道的是如何以老式 CGI 方式执行此操作,使用带有提交按钮的纯 html Web 表单和获取表单内容、提取电子邮件地址并吐出 html 的服务器端脚本(可能会重定向回原始页面)。)

如果我天真地认为我可以为此拿一些现成的东西并且应该从 AJAX 教程之类的东西开始,也请告诉我。我看过推荐的这个 JQuery/AJAX 教程。这是启动并运行简单注册表单的最快方法吗?

javascript css ajax lamp webforms

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

短信在Android上自动回复

首先,一个没有编程的问题:我的电话自动回复未接来电,并显示一条短信:“对不起。我现在不在手机旁。” 我的手机在哪里得到了执行此操作的想法,以及如何使其停止?

还有一个编程问题:如何让我的Android响应未接来电,例如给我发送电话号码,或者只是自定义SMS自动回复(也许回复我的位置),以便随心所欲。

sms android voice auto-responder

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

Mathematica函数foo可以区分foo [.2]和foo [.20]

假设我想要一个带有数字的函数并将其作为字符串返回,与给定的完全一样.以下不起作用:

SetAttributes[foo, HoldAllComplete];
foo[x_] := ToString[Unevaluated@x]
Run Code Online (Sandbox Code Playgroud)

输出foo[.2]foo[.20]是相同的.

我想这样做的原因是我想要一个可以用点作为分隔符来理解日期的函数,例如f[2009.10.20].我意识到这是对Mathematica的一种奇怪的滥用,但我正在制作一种特定于域的语言,并希望通过eval(ToExpression)将Mathematica用作解析器.如果我可以依赖于两位数的日期和月份,我可以实现这项工作,例如2009.01.02,但我也想允许2009.1.2,最终沸腾到上述问题.

我怀疑唯一的答案是将事物作为字符串传递然后解析它,但也许有一些我不知道的技巧.请注意,这与此问题有关: Mathematica:Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc等

macros parsing wolfram-mathematica

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

使用NSAttributedString在Objective-C中进行字符串munging

我有一个NSAttributedString s和一个整数i,我想一个函数,si返回具有(字符串化)的新NSAttributedString i预先考虑s.

它看起来像的组合-stringWithFormat:,-initWithString:-insertAttributedString:会做,但我有麻烦没有大量的回旋和临时变量的共同拼凑它.

更一般地说,指向理解NSAttributedString和NSMutableAttributedString的指南将是非常棒的.

string cocoa objective-c

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

在Python中将数组转换为CSV/TSV格式的字符串

Python提供了csv.DictWriter,用于将CSV输出到文件.将CSV输出到字符串或标准输出的最简单方法是什么?

例如,给定像这样的2D数组:

[["a b c", "1,2,3"],
 ["i \"comma-heart\" you", "i \",heart\" u, too"]]
Run Code Online (Sandbox Code Playgroud)

返回以下字符串:

"a b c, \"1, 2, 3\"\n\"i \"\"comma-heart\"\" you\", \"i \"\",heart\"\" u, too\""
Run Code Online (Sandbox Code Playgroud)

打印时看起来像这样:

a b c, "1,2,3"
"i ""heart"" you", "i "",heart"" u, too"
Run Code Online (Sandbox Code Playgroud)

(我正在csv.DictWriter人的话那就是事实上的规范方式来输出数组为CSV.Excel不会正确地分析这样的说法,虽然数学没有.从一个简单看一下上CSV维基百科页面它似乎Mathematica是错的.)

一种方法是使用csv.DictWriter写入临时文件,并使用csv.DictReader读回.什么是更好的方式?

TSV而不是CSV

在我看来,我并没有与CSV结合.TSV将使很多带分隔符和引号头痛消失:只是在二维数组的入口空间,然后只是点缀制表符和换行符替换选项卡,即可大功告成.让我们在答案中包含TSV和CSV的解决方案,以使其对未来的搜索者尽可能有用.

python csv string text

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

在Java中,将位向量(布尔数组)转换为整数,并将整数转换为位向量

取消以下功能的最佳方法是什么?

// Convert a bit-vector to an integer. 
int bitvec2int(boolean[] b)
{
    [CODE HERE]
}

// Convert an integer x to an n-element bit-vector. 
boolean[] int2bitvec(int x, int n)
{
    [CODE HERE]
}
Run Code Online (Sandbox Code Playgroud)

或者有没有比传递布尔数组更好的方法呢?

这出现在一个Android应用程序中,我们需要一个包含20个布尔值的数组,最简单的方法是将一个整数或字符串写入键值存储.

我将发布我们(蜜蜂和我)写上面作为答案的方式.谢谢!

java android bit-manipulation bit

0
推荐指数
1
解决办法
3848
查看次数

带有数字参数的AbsoluteTime表现奇怪

这很奇怪:

DateList@AbsoluteTime[596523]
Run Code Online (Sandbox Code Playgroud)

回报

{2078, 7, 2, 2, 42, 9.7849}
Run Code Online (Sandbox Code Playgroud)

DateList@AbsoluteTime[596524]
Run Code Online (Sandbox Code Playgroud)

回报

{1942, 5, 26, 20, 28, 39.5596}
Run Code Online (Sandbox Code Playgroud)

问题:发生了什么事?请注意,带有数字参数的AbsoluteTime未记录.

(I think I now know what it's doing but figured this is useful to have as a StackOverflow question for future reference; and I'm curious if there's some reason for that magic 596523 number.)

PS: I encountered this when writing these utility functions for converting to and from unix time in Mathematica:

(* Using Unix time (an integer) instead of Mathematica's …
Run Code Online (Sandbox Code Playgroud)

debugging datetime wolfram-mathematica

0
推荐指数
1
解决办法
112
查看次数