小编sbe*_*eam的帖子

如何在json列中查询空对象?

想要查找某个json列包含空对象的所有行,{}.这可以使用JSON数组,或者如果我在对象中查找特定键.但我只是想知道对象是否为空.似乎找不到会这样做的运营商.

 dev=# \d test
     Table "public.test"
  Column | Type | Modifiers
 --------+------+-----------
  foo    | json |

 dev=# select * from test;
    foo
 ---------
  {"a":1}
  {"b":1}
  {}
 (3 rows)

 dev=# select * from test where foo != '{}';
 ERROR:  operator does not exist: json <> unknown
 LINE 1: select * from test where foo != '{}';
                                      ^
 HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
 dev=# select * from …
Run Code Online (Sandbox Code Playgroud)

postgresql json types jsonb

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

为结构中的值设置为地图中的值时,为什么会出现"无法分配"错误?

Go to Go.遇到这个错误,没有找到原因或理由:

如果我创建一个结构,我显然可以分配和重新分配值没有问题:

type Person struct {
 name string
 age int
}

func main() {
  x := Person{"Andy Capp", 98}
  x.age = 99
  fmt.Printf("age: %d\n", x.age)
}
Run Code Online (Sandbox Code Playgroud)

但如果结构是地图中的一个值:

type Person struct {
     name string
     age int
 }

type People map[string]Person

func main() {
  p := make(People)
  p["HM"] = Person{"Hank McNamara", 39}
  p["HM"].age = p["HM"].age + 1
  fmt.Printf("age: %d\n", p["HM"].age)
}
Run Code Online (Sandbox Code Playgroud)

我得到cannot assign to p["HM"].age.就是这样,没有其他信息.http://play.golang.org/p/VRlSItd4eP

我找到了解决这个问题的方法 - incrementAge在Person上创建一个func,可以调用它,并将结果分配给map键,例如p["HM"] = p["HM"].incrementAge().

但是,我的问题是,这个"无法分配"错误的原因是什么,为什么不允许我直接分配结构值?

go

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

如何使用capybara DSL测试Select2元素?

我在页面上有一个Select2元素,通过ajax加载结果.希望能与水豚/ rspec的测试这个(使用捉弄人的鬼司机),但是由于选择二元素实际上开始作为一个隐藏字段,然后填充一个<ul>一旦结果进行处理,没有一个正常的select,fill_in或者choose助手会工作.

我现在拥有的是什么

  it "should have a search field for events" do
    click_link "Select an Event"       # this works as expected
    within('.select2-container') do    # works
      find('.select2-search input').set(event.description[0,5])  # won't work!
      find(:xpath, "li[text()='#{event.description}']").click 
    end
    click_button "Search"
    page.should have_content("Displaying all 2 photos")
  end
Run Code Online (Sandbox Code Playgroud)

上面的第4行,显然capybara可以找到元素,但值不会改变,Select2永远不会进行ajax调用.(不能fill_in在那里使用普通因为搜索字段元素没有label,id或name属性)

ruby-on-rails capybara capybara-webkit jquery-select2

18
推荐指数
4
解决办法
9124
查看次数

如何指定Rails 3 scope.limit - 带偏移量?

所以我有一些帖子,想展现ñ .. 中号在侧边栏最新的条目(这些数字在配置设定)

我可以轻松地获得最新的n条记录

class Post < ActiveRecord::Base
  default_scope :order => "created_at DESC"
  scope :published, lambda { where("blog_entries.created_at <= ?", Time.zone.now) }
  scope :latest, lambda { |n| published.limit(n) }
end

@posts = Post.latest(6)
Run Code Online (Sandbox Code Playgroud)

但我想要的是

@posts = Post.published.limit(6, 12)
Run Code Online (Sandbox Code Playgroud)

但是这给了wrong number of arguments,AR中有什么方法吗?现在我正在玩will_paginate,但看起来很难用它.

ruby-on-rails

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

如何正确绑定流星中的jquery ui行为?

我正在尝试使用.draggable()通过Meteor订阅填充的jQuery UI创建一组可拖动的DOM对象.我提出的代码看起来像

Meteor.subscribe('those_absent', function() {
     $( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});
Meteor.subscribe('those_present', function() {
     $( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});
Run Code Online (Sandbox Code Playgroud)

这些与一些Meteor.publish()调用相对应,因此只要集合发生更改,.draggable()就会附加行为.至少,这是我的意图.

然而,它只能工作一次 - 一旦其中一个<li>被拖放,那么它们就不再是可拖动的了.

当对象被删除时,我正在触发附加到Template项目的自定义事件,就像这样

    $( "#c_absent .inner-drop" ).droppable({
        drop: function( event, ui ) {
            ui.draggable.trigger('inout.leave');
        }
    });


  Template.loftie_detail.events = {
      'inout.leave': function (e) {
          Lofties.update({_id:this._id}, {$set: {present: 'N' }});
      }
  };
Run Code Online (Sandbox Code Playgroud)

因此,我的想法是对drop上的集合的这种更改应该通过pub/sub进程传播并重新运行.draggable()上面的行.但它似乎没有.

完整的代码可以在这里看到https://github.com/sbeam/in-out/blob/master/client/inout.js,该应用程序现在在http://inout.meteor.com/(那里是一些其他可能无关的问题,项目随机丢失值或完全从UI中消失)

因此,如果我对Meteor中pub/sub的工作原理有所了解,那么最好知道.或者是否有更有效的方法来实现这种无需行为的UI行为绑定?

meteor jquery-draggable

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

sphinx指数与多对多关系

我正在尝试建立一个Sphinx索引,其中包含艺术作品和流派之间基本的多对多关系:

artworks
---------------
id
title
description

genres
---------------
id
name

artwork_genres
---------------
artworks_id
genres_id
Run Code Online (Sandbox Code Playgroud)

在我的sphinx配置文件中,我有类似的东西

source src_artwork {
    ...
    sql_query    = SELECT id, title, description FROM artworks
    sql_attr_multi = uint tag from query; SELECT id,name FROM genres
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这是关于多值属性sql_attr_multi的文档

但显然没有提到那里的领带表,我无法理解它是如何进入配置的.我只是喜欢搜索"印象派"来制作属于该类型的艺术作品(如果在其他领域中看到该术语,则适当加权)

mysql sphinx

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

pip安装的软件包不在sys.path中

我是一个蟒蛇菜鸟.已经安装了virtualenv和pip,一切看起来都不错,但是当尝试导入通过pip安装的软件包时,python找不到它们.我在OS X上并且已经安装了系统python 2.6 /usr/bin,因此/usr/local/bin通过软件包安装程序安装了2.7 .在安装pip和virtualenv时,我确保通过将PATH设置为/usr/local/bin第一个来使用2.7 python .

(pysite)sbeam@pris ~/Sites]$ pip freeze
Django==1.4
Markdown==2.1.1
psycopg2==2.4.5
wsgiref==0.1.2

(pysite)sbeam@pris ~/Sites]$ echo $PYTHONPATH

(pysite)sbeam@pris ~/Sites]$ which python
/Users/sbeam/.virtualenvs/pysite/bin/python

(pysite)sbeam@pris ~/Sites]$ env | grep VIRTUAL
VIRTUALENVWRAPPER_PROJECT_FILENAME=.project
VIRTUAL_ENV=/Users/sbeam/.virtualenvs/pysite
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
VIRTUALENVWRAPPER_HOOK_DIR=/Users/sbeam/.virtualenvs
VIRTUALENVWRAPPER_LOG_DIR=/Users/sbeam/.virtualenvs

(pysite)sbeam@pris ~/Sites]$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from pprint import pprint as pp
>>> …
Run Code Online (Sandbox Code Playgroud)

python pip virtualenv

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

将多个DB/mongoose查询的结果呈现给express.js中的视图

鉴于mongoose(或sequelize,或redis)查询的异步性质,当你在渲染视图之前需要进行多次查询时,你会怎么做?

例如,您user_id在会话中有一个,并希望通过以下方式检索有关该特定用户的一些信息findOne.但您还希望显示最近登录用户的列表.

exports.index = function (req, res) {
    var current_user = null

    Player.find({last_logged_in : today()}).exec(function(err, players) {
        if (err) return res.render('500');

        if (req.session.user_id) {
            Player.findOne({_id : req.session.user_id}).exec(function(err, player) {
                if (err) return;
                if (player) {
                    current_user = player
                }
            })
        }

        // here, current_user isn't populated until the callback fires 
        res.render('game/index', { title: 'Battle!',
                   players: players,
                   game_is_full: (players.length >= 6),
                   current_user: current_user
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

所以res.render在第一个查询回调中,很好.但是等待响应findOne来看看我们是否了解这个用户呢?它只是有条件地调用,所以我不能放入render内部回调,除非我为任何一个条件复制它.不漂亮.

我可以想到一些解决方法 -

  • 使它真的 …

mongoose node.js express

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

vim:反弹到最近的封闭的paren

说我有文字如

CREATE TABLE blah blah (
`id` int not null,
`xxxxxx` varchar(255),
PRIMARY KEY (`id`) )
Run Code Online (Sandbox Code Playgroud)

并且光标位于"xxxxxx" - 我可以做什么来快速跳转到开头"(" - 或关闭那个问题.我可以使用"F",但只能在行内找到.

vim

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