小编Nat*_*ong的帖子

如何将HTML表格刮到CSV?

问题

我在工作中使用了一个工具,可以让我查询并获取HTML信息表.我没有任何类型的后端访问权限.

如果我可以将它放入电子表格进行排序,平均等,那么很多这些信息会更有用.如何将这些数据屏蔽到CSV文件?

我的第一个想法

因为我知道jQuery,我想我可能会用它去除屏幕上的表格格式,插入逗号和换行符,然后将整个混乱复制到记事本中并另存为CSV.有更好的想法吗?

解决方案

是的,伙计们,它真的像复制和粘贴一样容易.我不觉得傻.

具体来说,当我粘贴到电子表格中时,我必须选择"选择性粘贴"并选择"文本"格式.否则它会尝试将所有内容粘贴到单个单元格中,即使我突出显示整个电子表格也是如此.

screen-scraping

40
推荐指数
5
解决办法
8万
查看次数

如何在PHP中设置绝对包含路径?

在HTML中,我可以通过以"/"开头的文件路径找到从Web服务器的根文件夹开始的文件.喜欢:

/images/some_image.jpg
Run Code Online (Sandbox Code Playgroud)

我可以将该路径放在任何子目录中的任何文件中,它将指向正确的图像.

使用PHP,我尝试了类似的东西:

include("/includes/header.php");
Run Code Online (Sandbox Code Playgroud)

......但这不起作用.

我认为这个页面说的是我可以设置include_path一次,之后,它将被假设.但我不太懂语法.这两个例子都以句号开头,它说:

用一个 .在include路径中允许相对包含,因为它表示当前目录.

相对包含正是我想要的.

如何确保我的所有包含指向该root/includes文件夹?(额外奖励:如果我想将该文件夹放在公共目录之外怎么办?)

澄清

我的开发文件目前由XAMPP/Apache提供.这会影响绝对路径吗?(我不确定生产服务器是什么.)

更新

我不知道我的问题在这里.include_path我上面引用的东西正是我所寻找的,语法并不是真的令人困惑.我只是尝试过,效果很好.

我发生的一件事是,有些人可能认为"/ some/path"是"绝对路径",因为他们认为操作系统是Linux.此服务器是Windows,因此绝对路径必须以驱动器名称开头.

无论如何,问题解决了!:)

php

40
推荐指数
4
解决办法
10万
查看次数

跨浏览器网站的最佳做法是什么?

(我希望这是最权威的社区维基.我根据自己对这个问题的回答来播种.)

指定一切

许多跨浏览器问题相当于:您没有指定某些内容,并且不同的浏览器会做出不同的假设.因此:

声明有效的doctype

您的doctype告诉浏览器您将在代码中使用哪些规则.如果您没有指定,则浏览器必须猜测,并且不同的浏览器将以不同的方式猜测.

根据我的经验,"严格"的doctype使IE表现得更好(启用CSS之类的东西:IE7中div上的悬停选择器).

本文提供了有关do​​ctypes的良好背景知识.

使用Web标准

避免使用特定于浏览器的标记,或仅在其他浏览器中的故障对站点体验不重要时才使用它.

验证您的HTML和CSS

您不必完美无缺,但验证是很好的反馈.正如杰夫所说:

了解规则和边界有助于您定义自己正在做的事情,并为您提供合法的弹药以达成一致或不同意.你可以做出明智的选择,而不是随意的"我只是这样做而且它有效".

想象一下,你打开一个段落标签,从未关闭它.如果你打开一个列表标签,是不是意味着它在段落内?验证将帮助您捕获,关闭标记并消除歧义.

考虑CSS重置

不同的浏览器采用不同的基线CSS规则 您可以通过明确解决前面的差异来帮助他们所有人采取相同的行动.编写CSS:The Definitive Guide的 Eric Meyer 使用了这个重置.另一个受欢迎的选择是YUI重置CSS.

使用Javascript库进行DOM交互

每当您的Javascript需要使用页面上的元素时,最好使用jQuery,Prototype或MooTools等库.这些库被成千上万的开发人员使用,它们消除了浏览器对Javascript的解释之间的大部分不一致,在内部处理这些库,并为您提供一组一致的命令.试图找到并解决所有这些不一致的问题是浪费时间并且可能会产生错误.

在多个浏览器中测试,最后处理IE

随时在多个浏览器中进行测试.通常,您会发现非IE浏览器的行为类似,IE是一种特殊情况 - 特别是如果您遵循上述建议.必要时,您可以在单独的样式表中添加IE hacks,并仅为IE用户加载它.

Quirksmode.com是一个搜索随机浏览器差异的好地方.

Browsershots.org可以帮助显示您的页面如何在各种浏览器和操作系统中显示.

优雅地失败

在每个存在的浏览器中,任何网站都不会看起 如果用户没有Flash,Javascript或高级CSS等,您仍希望您的网站可用.考虑到这一点的设计:

检查裸HTML

尝试使用裸HTML加载您的网站 - 没有样式,没有脚本.有菜单选项吗?主要内容是否位于次要内容之前?该网站是否可用,即使丑陋?

考虑测试驱动的渐进增强

本文中描述,此技术使用javascript来检查浏览器是否具有给定的功能,例如在页面上使用它之前支持给定的CSS属性.它与浏览器嗅探不同,因为它测试的是功能而不是特定的浏览器.

cross-browser

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

Ruby中获取第一个可枚举元素的最快方法是什么?

Ruby中获取第一个可枚举元素的最快方法是什么?

例如:

arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first  # => 107
Run Code Online (Sandbox Code Playgroud)

我想这样做而不会遍历整个阵列select,因为我只需要第一场比赛.

我知道我可以做一个each并且取决于成功,但我认为有一种本地方法可以做到这一点; 我只是没有在文档中找到它.

ruby arrays enumerable

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

为什么我们要在Ruby中的类中放置一个模块?

在Ruby中,我发现为了命名空间而将类放在模块中会很有用.我也看到可以将模块放在类中.但我不明白你为什么那样做.

模块通常混合成类,对吧?那么,在类中定义模块的目的是什么?

ruby namespaces

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

如何让Rspec运行嵌套在文件夹下的所有测试?

我喜欢在单独的选项卡中运行Spork运行我的Rspec测试.我经常使用我的测试rspec spec,我打算用"递归搜索并运行spec文件夹中的所有内容".

我最近意识到这实际上没有运行我的所有测试.我现在有一个spec/requests未运行的spec文件.我知道这是因为我编辑了其中一个测试以引发错误,并执行以下操作:

  • rspec spec - 没有错误提出.
  • rspec spec/requests- 仍然没有错误提出,并且0 examples, 0 failures!
  • rspec spec/requests/my_controller.rb- 宾果游戏.17 examples, 1 failure并且失败有我的错误消息.

为什么Rspec找不到我的所有测试文件?这是配置问题,还是我需要使用不同的命令来运行我的测试?

我需要立即运行所有测试,以确保我不会引入回归.

(顺便说一句,不使用Spork没有任何区别.)

ruby rspec ruby-on-rails

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

在Vim中,什么是"备用文件"?

我刚刚:help registers在Vim中运行并注意到#'包含备用文件的名称'.

我看过一个重命名文件的例子,如下所示:

" Save the current file, foo.txt, as bar.txt
:w bar.txt
" Start editing bar.txt
:e#
Run Code Online (Sandbox Code Playgroud)

显然,在这种情况下,您刚刚保存的文件是"备用文件".

有人可以给我一个更为一般的"备用文件"定义以及你可以用它做什么?

vim

34
推荐指数
4
解决办法
6752
查看次数

如何在标签中有条件地包装一些HAML内容?

如何使用条件来决定是否在HAML中输出周围标记?我正在尝试创建下面代码的DRY版本.

- if i_should_link 
  %a{:href => url}
   .foo
     .block
       .of  
         .code
- else
  .foo
    .block
      .of  
        .code
Run Code Online (Sandbox Code Playgroud)

html haml

34
推荐指数
2
解决办法
8790
查看次数

DOM节点上的事件处理程序是否会被节点删除?

(注意:我在下面使用jQuery,但问题实际上是一般的Javascript问题.)

假设我有一个div#formsection使用AJAX反复更新其内容的内容,如下所示:

var formSection = $('div#formsection');
var newContents = $.get(/* URL for next section */);
formSection.html(newContents);
Run Code Online (Sandbox Code Playgroud)

每当我更新这个div时,我会触发一个自定义事件,它将事件处理程序绑定到一些新添加的元素,如下所示:

// When the first section of the form is loaded, this runs...
formSection.find('select#phonenumber').change(function(){/* stuff */});

...

// ... when the second section of the form is loaded, this runs...
formSection.find('input#foo').focus(function(){/* stuff */});
Run Code Online (Sandbox Code Playgroud)

所以:我将事件处理程序绑定到某些DOM节点,然后删除这些DOM节点并插入新节点(html()这样做)并将事件处理程序绑定到新的DOM节点.

我的事件处理程序是否与它们绑定的DOM节点一起被删除?换句话说,当我加载新的部分时,很多无用的事件处理程序堆积在浏览器内存中,等待不再存在的DOM节点上的事件,或者当它们的DOM节点被删除时它们被清除了吗?

奖金问题:如何自己测试?

javascript dom javascript-events

32
推荐指数
2
解决办法
9937
查看次数

什么是最安全的Devise配置?

我即将开始在我们公司设立一个仅限员工的Rails应用程序来处理敏感信息.将会有防火墙,物理安全措施等.我现在关心的是应用程序的登录过程.

我想使用Devise进行身份验证.Devise最安全的配置是什么?

我想我会做以下事情:

  • 在少量登录尝试失败后锁定帐户
  • 使用config.paranoid这样攻击者无法判断他们是否猜到了有效的电子邮件地址
  • 也许通过电子邮件禁用密码重置?

一些我不确定的具体事情,用devise.rb斜体字引用:

  • 胡椒.Devise可以选择"设置胡椒来生成加密密码".我的理解是,这是一个单独的,特定于应用程序的值,它将诸如"password123"之类的愚蠢密码转换为类似"password123K#(!@ akdlwekdf"或"*%!kd39gpassword123"或类似之前的任何哈希值).这是为了挫败彩虹表攻击,但我对这篇文章的理解是,它不如每个密码的独特盐那么好.然后,这篇文章本文说bcrypt有内置的盐.使用胡椒与bcrypt真的添加任何东西吗?我可以,还有什么需要,还有一个盐柱吗?
  • 伸展."对于bcrypt,这是散列密码的成本,默认为10." 基于这个问题,我正在考虑使用12的工作系数.这看起来合情合理吗?
  • 密码长度.一般来说,较长的密码似乎更安全,但我不希望它太难以让用户将它写在某张纸上.如果我们使用bcrypt,密码长度是否重要?
  • SSL cookie.对于启用了SSL的公共应用程序,将cookie标记为"这只能通过HTTPS传输"可以防止Firesheep风格的攻击.但我不确定为内部应用程序获得安全证书会有多大意义.这很傻吗?

我还缺少什么?

security encryption bcrypt devise ruby-on-rails-3

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