小编taw*_*taw的帖子

如何从 OS X 上的脚本远程控制 Firefox

我需要编写一些访问某些网站的脚本。来自命令行的脚本将获取一些页面、发布一些表单、屏幕抓取一些信息等。

它不能真正做到一库“浏览器”之类的libwww-perl的,因为某些步骤可能需要用户交互(CAPTCHA系统阿贾克斯-only形式,任何交互惊喜,等)。

我能想到的最实用的方法是在 Firefox 中远程打开一个选项卡,并将 JavaScript 代码注入其中,有点像GreasemonkeySelenium所做的。它不一定要用于 Firefox,如果更容易,可以是不同的浏览器。

那么最好的方法是什么?

firefox browser-automation

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

最内层TABLE的CSS选择器?

有没有办法只选择最里面的表?那些不包含任何更多表的内容?

我知道我可以过滤element.getElementsByTagName("table").length == 0,我只是想知道是否有更优雅的解决方案.

javascript css jquery jquery-selectors

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

什么是其他浏览器的最佳firebug等价物?

我有时需要在其他浏览器中调试JS,如果他们都有Firebug会非常好 - 失败了,他们最接近的是什么?

javascript

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

高效最常见的后缀算法?

我有几GB的字符串,对于每个前缀,我想找到10个最常见的后缀.那有一个有效的算法吗?

一个明显的解决方案是:

  • 存储已排序的<string, count>对列表.
  • 通过二进制搜索范围识别我们正在搜索的前缀.
  • count在这个范围内找到10个最高s.
  • 可能为所有短前缀预先计算它,因此它不需要查看大部分数据.

我不确定这实际上是否真的有效.有没有更好的方式我被忽视?

答案必须是实时的,但它可以根据需要进行尽可能多的预处理.

algorithm

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

如何调试突然退出的Perl程序?

我有基于Perl的程序IO::Async,它有时会在几小时/几天后退出,而不会打印任何错误消息.有没有什么dmesg/var/log两种.STDOUT/ STDERR都是autoflush(1)这样,数据不应该在缓冲区中丢失.它实际上并没有退出IO::Async::Loop->loop_forever- 打印我放在那里只是为了确保永远不会被触发.

现在一种方法是继续使用越来越多的打印方式来编写程序,并希望其中一个给我一些线索.是否有更好的方法来获取信息,使程序退出/静默崩溃?

debugging perl

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

Erlang gen_tcp和行i/o

有没有办法从Erlang中的套接字读取整行,还是需要手动实现行缓冲gen_tcp:recv

erlang

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

什么是最好的doctype?

它曾经是这样,带有doctypes的文档得到了标准模式,没有doctypes的文档得到了怪癖模式.但似乎现在有一些几乎标准的模式,不同的浏览器遵循不同的规则等.

什么是用于HTML的最佳doctype?有没有理由不使用最简单的<!DOCTYPE html>?无论如何,大多数文件都不遵循任何特定的DTD.

html

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

低开销的Ruby分析?

我有一个Ruby程序,大约需要4分钟才能完成任务,我想把它降到1分钟以下.

我尝试了宝石中的ruby-prof,但是它使运行时间增加到约30分钟,甚至看起来都没有特别好地保持单调性(一些变化可靠地提高了性能 - 使用剖析器并且可靠地降低了性能 - 没有剖析器).此任务也无法真正分解为可以独立进行有意义分析的部分.

目前以最低开销分析Ruby代码的最佳方法是什么?

我使用OSX,但如果由于任何原因,探测器需要另一个操作系统,我可能会重新启动.

编辑:perftools.rb具有更低的开销,但结果看起来相当可疑诚实,超出任何合理的抽样错误 - 至少它必须搞乱GC或i/o缓冲或类似的东西,导致很多愚蠢的错误归因.它仍然击败了ruby-prof.

我会保持问题公开,万一有人知道比这更好的事情.

ruby profiling ruby-prof

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

是否有一个比Perl的Data :: Dumper更简洁的替代品?

我正在尝试打印一些解析树,并且Data::Dumper非常冗长,例如打印:

{
  'A' => {
    'ID' => 'y'
  },
  'OP' => '=',
  'B' => {
    'NUM' => '5'
  }
},
Run Code Online (Sandbox Code Playgroud)

而不是让我们说:

{
  'A' => {'ID' => 'y'},
  'OP' => '=',
  'B' => {'NUM' => '5'}
},
Run Code Online (Sandbox Code Playgroud)

而且它很难阅读,因为它占用了大量的线条.

是否有任何Perl库可以执行Data::Dumper除了更简洁之外的操作,还是需要编写自己的?

perl data-dumper

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

Ruby在[1,2,3]中相当于foo?

Python具有非常优雅的语法,可以针对多种模式检查值.

2 in [1,2,4] #=> True
6 in [1,2,4] #=> False
Run Code Online (Sandbox Code Playgroud)

Ruby版本的订单感觉不对:

[1,2,4].include?(2)
Run Code Online (Sandbox Code Playgroud)

我明白这include?比OO更有意义2.included_in?([1,2,4]),我仍然不喜欢它.Ruby甚至有in关键字,但它似乎只用于构造for i in [1,2,4],而不是用于成员资格测试.

另一种方式是这样的:

(case 2 when 1,2,4 then true end)
Run Code Online (Sandbox Code Playgroud)

相当冗长,但允许模式测试:

(case file_name when "README", /\.txt\z/ then true end)
Run Code Online (Sandbox Code Playgroud)

仍然不是很可读.

我偶然错过了一些非常漂亮的方式吗?

ruby

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

如何运行Unix终端程序并在将其交给用户之前预先输入几行?

所以我可以这样做:

program
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

echo "foo" | program
Run Code Online (Sandbox Code Playgroud)

但是如果我想输入foo然后将输入交给用户,我该怎么做?

我尝试的第一件事是:

cat <(echo "foo") /dev/fd/0 | program
Run Code Online (Sandbox Code Playgroud)

哪种工作,但随后program看到它的标准输入处于非终端模式(即使有终端连接,间接),所以不能正常工作。

是否有任何标准的 Unix 解决方案?或者一些 bash/ruby/任何设置它的脚本?

unix bash

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