小编dan*_*neu的帖子

BeautifulSoup:如何从包含一些嵌套<ul>的<ul>列表中提取所有<li>?

我的源代码如下:

<h3>Header3 (Start here)</h3>
<ul>
    <li>List items</li>
    <li>Etc...</li>
</ul>
<h3>Header 3</h3>
<ul>
    <li>List items</li>
    <ul>
        <li>Nested list items</li>
        <li>Nested list items</li></ul>
    <li>List items</li>
</ul>
<h2>Header 2 (end here)</h2>
Run Code Online (Sandbox Code Playgroud)

我希望所有"li"标签跟在第一个"h3"标签之后,并停在下一个"h2"标签,包括所有嵌套的li标签.

firstH3 = soup.find('h3')

正确找到我想要开始的地方.

firstH3 = soup.find('h3') # Start here
uls = []
for nextSibling in firstH3.findNextSiblings():
    if nextSibling.name == 'h2':
        break
    if nextSibling.name == 'ul':
        uls.append(nextSibling)
Run Code Online (Sandbox Code Playgroud)

给我一个UL列表,每个都有我需要的LI内容.

摘录"uls"列表:

<ul>
...
    <li><i><a href="/wiki/Agent_Cody_Banks" title="Agent Cody Banks">Agent Cody Banks</a></i> (2003)</li>
    <li><i><a href="/wiki/Agent_Cody_Banks_2:_Destination_London" title="Agent Cody Banks 2: Destination London">Agent Cody Banks 2: Destination …
Run Code Online (Sandbox Code Playgroud)

python screen-scraping beautifulsoup

23
推荐指数
2
解决办法
4万
查看次数

你如何"嵌套"或"分组"测试::单元测试?

RSpec有:

describe "the user" do
  before(:each) do
    @user = Factory :user
  end

  it "should have access" do
    @user.should ...
  end
end
Run Code Online (Sandbox Code Playgroud)

你会如何用Test :: Unit对这样的测试进行分组?例如,在我的控制器测试中,我想在用户登录时以及没有人登录时测试控制器.

ruby ruby-on-rails testunit

20
推荐指数
2
解决办法
5469
查看次数

如何在没有生成器的Gem for Rails 3.1中打包CSS/JS文件?

我想写一个gem,一旦捆绑到Rails 3.1 Gemfile,包含一些样板CSS和JS文件.

我知道生成器,但是如果没有它们我怎么能这样做,这样可以添加和删除gem的效果而不需要在Rails Gemfile中编辑一行?

理想情况下,我希望gem在安装时包含其默认的CSS/JS,然后让用户使用生成器生成CSS/JS文件,如果他们想要进行任何修改.


这是我从jquery-rails复制的示例gem ,其中包含没有生成器的javascript文件.

css_gem/
  lib/
    css_gem.rb       {1}
    css_gem/
      engine.rb      {2}
  app/
    assets/
      stylesheets/
        css_gem/
          index.css  {3}
          base.css   {4}
Run Code Online (Sandbox Code Playgroud)

{1} lib/css_gem.rb

module CssGem
  require "css_gem/engine"
end
Run Code Online (Sandbox Code Playgroud)

{2} lib/css_gem/engine.rb

module CSSGem
  class Engine < Rails::Engine
  end
end
Run Code Online (Sandbox Code Playgroud)

{3} app/assets/stylesheets/css_gem/index.css

/*
 *= require base
 */
Run Code Online (Sandbox Code Playgroud)

{4} app/assets/stylesheets/css_gem/base.css

.custom { color: red; }
Run Code Online (Sandbox Code Playgroud)

Rails Gemfile

gem 'css_gem', :path => 'path_to_my_local_gem'
Run Code Online (Sandbox Code Playgroud)

这对我不起作用,Rails没有看到CSS文件.我究竟做错了什么?


解决方案:谢天谢地,我找到了一个视频来握住我的手:http://house9.blogspot.com/2011/06/rails-31-asset-gem.html

我不得不手动添加*= require css_gem到我的Rails样式表清单(app/assets/stylesheets/application.css).咄.

gem ruby-on-rails ruby-on-rails-3.1

16
推荐指数
2
解决办法
6867
查看次数

你在git commit --gpg-sign = <key-id>`时签署了什么数据?

我正在试图弄清楚如何手动签署/验证提交,但我无法弄清楚正在签署哪些数据来创建签名.换句话说,我想不出什么<data>gpg --verify <commit-sig> <data>需求如此.

这是git源代码的相关部分:https://github.com/git/git/blob/master/commit.c#L1047-L1231但我也是C.的新手.


这是一些示例数据:

在一个新的git仓库中,我创建了一个文件ledger.txt并使用签名提交提交它:

git config --global user.signingkey 7E482429
git init
echo "EAC5-531F-38E8-9670-81AE-4E77-C7AA-5FC3-7E48-2429 1\n" > ledger.txt
git add ledger.txt
git commit -m "Initial commit" --gpg-sign=7E482429
Run Code Online (Sandbox Code Playgroud)

在这里它是在日志中:

git log --show-signature

    commit 876793da21833b5b8197b08462523fd6aad3e5ba
    gpg: Signature made Fri May  9 20:01:55 2014 CDT using RSA key ID 7E482429
    gpg: Good signature from "Dan Neumann <danrodneu@gmail.com>"
    Author: Dan Neumann <danrodneu@gmail.com>
    Date:   Fri May 9 20:01:55 2014 -0500

        Initial commit
Run Code Online (Sandbox Code Playgroud)

这是漂亮的打印提交对象(它存在于.git/objects/87/6793da21833b5b8197b08462523fd6aad3e5ba …

c git gnupg

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

我试图让Flask运行时看到了什么问题?(mod_wsgi + virtualenv)

我有一个运行全新安装的Ubuntu 10.04 LTS的VPS.我正在尝试使用Flask微框架设置一个实时应用程序,但它给了我麻烦.当我试图让它运行时我记笔记,这是我的逐个播放,以确定我出错的确切位置.

安装

http://flask.pocoo.org/docs/installation/#installation

$ adduser myapp
$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

/home/myapp/
-- www/

$ sudo pip install virtualenv

/home/myapp/
-- www/
-- env/

$ . env/bin/activate
$ easy_install Flask
Run Code Online (Sandbox Code Playgroud)

mod_wsgi的

http://flask.pocoo.org/docs/deploying/mod_wsgi/

$ sudo apt-get install apache2
$ sudo apt-get install libapache2-mod-wsgi
Run Code Online (Sandbox Code Playgroud)

创建WSGI文件

$ nano /home/myapp/www/myapp.wsgi

--myapp.wsgi contents:--------------------------
activate_this = '/home/myapp/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
from myapp import app as application

/home/myapp/
-- www/
     -- myapp.wsgi
-- env/
Run Code Online (Sandbox Code Playgroud)

配置Apache

$ nano …
Run Code Online (Sandbox Code Playgroud)

python mod-wsgi apache2 virtualenv flask

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

Factory Girl怎么没有对独特属性进行排序?

我的控制器规范失败,因为Factory Girl似乎正在创建非唯一用户,即使我对需要唯一的用户属性进行排序.

错误

  1) TopicsController POST #create when topic is invalid should render new
     Failure/Error: let(:invalid_topic) {Factory.build :invalid_topic}
     ActiveRecord::RecordInvalid:Validation failed: Email has already been taken, Username has already been taken

  2) TopicsController POST #create when topic is valid should redirect to show
     Failure/Error: let(:valid_topic) {Factory.build :topic}
     ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken, Username has already been taken
Run Code Online (Sandbox Code Playgroud)

控制器规格(RSpec)

  describe "POST #create" do                          
    let(:valid_topic) {Factory.build :topic}
    let(:invalid_topic) {Factory.build :invalid_topic}

    context "when topic is invalid" do
      it "should render new" …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails factory-bot

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

设计:允许用户注册为"UsErNaMe",但使用"用户名"登录

与大多数网站的工作方式相同,我将"UsErNaMe"存储在数据库中,但允许用户使用"用户名"登录.

这是一个相当明显和必要的功能,很多人似乎已经问过它,但我一直磕磕绊绊的解决方案似乎与Devise自己的文档没有关系.

例如,请考虑此博客文章:http://anti-pattern.com/2011/5/16/case-insensitive-keys-with-devise

[...]你可能遇到了一些用户喜欢用大写字母在他们的登录名(电子邮件和/或用户名)中输入某些字母的问题,但是当他们尝试登录时,他们希望它不区分大小写.没有不合理的要求[...]

凉!这就是我想要的.

他的解决方案

# config/initializers/devise.rb
Devise.setup do |config|
  config.case_insensitive_keys = [:email, :username]
end
Run Code Online (Sandbox Code Playgroud)

这是我一直在寻找的解决方案.但这是该配置选项的文档:

# Configure which authentication keys should be case-insensitive.
# These keys will be downcased upon creating or modifying a user and when used
# to authenticate or find a user. Default is :email.
config.case_insensitive_keys = [ :username, :email ]
Run Code Online (Sandbox Code Playgroud)

特别是:"这些密钥将在创建/修改用户时降低." 换句话说,用户名在数据库中被降级.

核实:

User.create username: "UsErNaMe", password: "secret", email: "email@com.com"
#=> <User username="username"...>
Run Code Online (Sandbox Code Playgroud)

我错过了一些痛苦明显的东西吗?

ruby-on-rails devise ruby-on-rails-3

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

如何在RSpec测试中访问Sorcery?

巫术认证宝石:https://github.com/NoamB/sorcery

Sorcery的创建者在其Test :: Unit功能测试中提供了一个带有Sorcery测试助手的示例Rails应用程序:https://github.com/NoamB/sorcery-example-app/blob/master/test/functional/users_controller_test.rb

# Test::Unit functional test example
require 'test_helper'

class UsersControllerTest < ActionController::TestCase
  setup do
    @user = users(:noam)
  end

  test "should show user" do
    login_user
    get :show, :id => @user.to_param
    assert_response :success
  end
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何使用login_user我的RSpec控制器规格.

/gems/sorcery-0.7.5/lib/sorcery/test_helpers/rails.rb:7:in `login_user': 
undefined method `auto_login' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

以下是关于上述错误的Sorcery gem中的相关代码:https: //github.com/NoamB/sorcery/blob/master/lib/sorcery/test_helpers/rails.rb

module Sorcery
  module TestHelpers
    module Rails
      # logins a user and calls all callbacks
      def login_user(user = nil)
        user ||= @user
        @controller.send(:auto_login,user)
        @controller.send(:after_login!,user,[user.send(user.sorcery_config.username_attribute_names.first),'secret']) …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails-3 sorcery

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

在终端(Bash)中,如何在文件名中间自动完成部分匹配?

我有一堆文件名为:

2011-04-02-hello.rb
2011-04-02-bye.rb
2011-06-22-cat.rb
2011-06-17-dog.rb
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以通过键入访问第一个文件vim h<TAB>,并自动完成其余文件.

在终端中,如何在名称中间自动填充部分匹配的文件名?

bash terminal autocomplete

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

什么是Scala + sbt工作流相当于Ruby + Bundler和Gemfile?

我正在学习Scala,但我正在努力学习如何设置开发环境.

在Ruby中

什么是Scala等同于sbt?

我正在阅读关于sbt以及package/imports/jar依赖项如何在Java/Scala中工作,但我似乎无法过滤掉这些必需品.

我通过手动导入.jars然后从库中导入包直到编译器/运行时错误停止并且代理工作,从而在Eclipse中工作.但这种经历令人沮丧,我来这里悔改.

这个问题的含义:Java生态系统/工作流程对我来说是压倒性的,因为他已经习惯了Ruby的轻松无IDE工作流程.我认为相当于一块骨头会给我一个开始建立的地方.

理想情况下,我希望在依赖Eclipse之前让Scala开发只使用Vim和命令行.

development-environment scala sbt

6
推荐指数
2
解决办法
997
查看次数

你会如何为`Iconv.new("UTF8 // IGNORE",...)`成语写一个测试?

这个Iconv习惯用法将字符串转码为UTF-8并删除无法音译的字符:

require "iconv"

def normalize(text)
  Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv(text.dup)
end
Run Code Online (Sandbox Code Playgroud)

你怎么会为此写一个测试?

编辑:我最终简化了问题,因为我意识到尝试在Rails # encoding: utf-8spec文件中测试它的上下文使问题变得复杂.所以现在赏金有点傻但是我会奖励它,如果有人可以展示我可以解决的测试.

ruby ruby-on-rails character-encoding ruby-on-rails-3.2

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

我可以在我的Apache服务器上运行Bottle.py而不会中断我的PHP应用程序吗?

我刚才最近捡起它,让我的网络服务器上的Python运行起来很烦人.

我选择了Bottle.py,因为它看起来很简单,易于访问和包含.我对Web服务器的工作原理(如何弄乱它们)的经验和知识很少,如果我不需要,我不愿意使用我的服务器的Apache,因为它已经托管了一个非常活跃的留言板.

Bottle的文档似乎假定了我没有的服务器/ python理解的一两步,因为我已经将bottle.py复制到我的doc根目录时,我甚至不确定在哪里放置实际的路由/网站内容.或者当我去"mydomain.com"时服务器如何知道运行瓶子(或执行python).

python apache2 bottle

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

将jquery代码转换为coffeescript代码时出错

这个jquery代码适用于jquery格式.

我想将此jquery代码转换为coffeescript代码:

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();
    reader.onload = function (e) {  
      $('.preview_browse img#thumb').attr('src', e.target.result).width(251).show();
    };
    reader.readAsDataURL(input.files[0]);
    $('.not_found_image_browse').hide();
  }
}
Run Code Online (Sandbox Code Playgroud)

我从http://js2coffee.org/获得此代码:

readURL = (input) ->
  if input.files and input.files[0]
    reader = new FileReader()
    reader.onload = (e) ->
      $(".preview_browse img#thumb").attr("src", e.target.result).width(251).show()
    reader.readAsDataURL input.files[0]
    $(".not_found_image_browse").hide()
Run Code Online (Sandbox Code Playgroud)

但是当我在post.js.coffee中的项目rails中输入此代码时,对我来说效果不佳.

我在浏览器控制台中遇到此错误:

readURL is not defined
onchange()onchange (line 2)
event = change
[Break On This Error]   
readURL(this);
Run Code Online (Sandbox Code Playgroud)

这是我的输入文件中的html代码:

<input id="post_image" class="file required" type="file" onchange="readURL(this)" name="post[image]">
Run Code Online (Sandbox Code Playgroud)

jquery coffeescript

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