小编Mic*_*rey的帖子

从application.ini了解Zend Framework引导过程和资源加载

我非常熟悉Zend Framework的详细信息以及大多数工作原理.我仍然不完全理解的一个领域是Zend Framework从application.ini加载资源的方式.

我知道我可以创建自己的protected _init函数,这些函数将在bootstrap期间自动调用.

Zend Framework文档在某些方面缺乏.

例如:resources.db配置选项如何以及何时加载?我的引导程序中没有任何关于db的内容.这是按需加载还是实际在引导过程中加载?

任何解释这一点的参考链接都会非常有用.

php zend-framework

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

使用RESTful API - 它是否安全?

我们正在与服务提供商合作,该服务提供商通过RESTful API公开他们的服务.

我们可以通过将用户名和密码作为URL参数进行身份验证来进行身份验证.

例: https://example.com/api/service.json?api_user=Username&api_key=Password

我知道这是使用SSL.但是,由于用户名和密码是URL的一部分,这不能被第三方截获吗?

api rest url https

6
推荐指数
3
解决办法
196
查看次数

Capybara断言元素是空的

寻找确定元素是否真的为空的最佳方法.

<table id="foo">
  <tr>
    <td>Cell One</td>
    <td></td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

但这两个回归true:

find("#foo td:nth-child(1)").should have_content('')
find("#foo td:nth-child(2)").should have_content('')
Run Code Online (Sandbox Code Playgroud)

所以我用过这个:

find("#foo td:nth-child(1)").text.should == 'Cell One'
find("#foo td:nth-child(2)").text.should == ''
Run Code Online (Sandbox Code Playgroud)

这似乎工作,但不检查元素是否可能包含其他元素.例如,它可能包含图像,链接或跨度.

我可以单独检查每一个(图像,链接或跨度),但似乎应该有更好的方法.

有没有办法测试元素是否为空?

testing dom capybara

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

使用PHP中的_id进行Mongo日期范围查询

作为mongo的新手,我在mongo手册中读到了有关优化对象ID的信息.

http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromntratherthanhavingaseparatetimestampfield.

根据关于不创建单独的Created_On字段的建议,我决定稍后从_id字段中提取日期ObjectID

现在,我有很多记录都没有Created_On字段.

我试图查询日期范围,但不确定语法:

$start = new MongoDate(strtotime("2012-03-01 00:00:00"));
$end = new MongoDate(strtotime("2012-03-15 00:00:00"));

$collection->find(array('_id' => array('$gt' => $start, '$lte' => $end)));
Run Code Online (Sandbox Code Playgroud)

始终返回0结果.虽然我可以查询单个记录并从对象中提取日期.

php mongodb

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

elasticsearch返回的faceface数

我使用elasticsearch 0.19.9进行了多方面的查询.但是我想返回计数> 0的所有方面.

根据文档,我应该能够:

{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "tag" : {
            "terms" : {
                "field" : "tag",
                "all_terms" : true
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

}

据我所知,即使count为0,这也应该给我所有方面.

然而,这仍然只是按计数返回前10个方面.这是默认大小.这似乎影响返回面数的唯一事情就是通过设置实际上"size" : N 这里N是一个将被退回面数.

我可以将它设置为一个非常高的数字,但这似乎是黑客攻击.

关于我可能做错什么的任何想法?

faceted-search elasticsearch

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

定制设计路线

Using devise (3.2.2)
Using rails (4.0.2)
Run Code Online (Sandbox Code Playgroud)

致力于开发仅需要某些路由的API。我的内容如下routes.rb:

devise_for :users, path: '/users', controllers: {
  sessions: 'v1/custom_devise/sessions',
  passwords: 'v1/custom_devise/passwords'
}
Run Code Online (Sandbox Code Playgroud)

大!现在我们有了所有这些路线:

              Prefix Verb    URI Pattern                    Controller#Action
    new_user_session GET     /users/sign_in(.:format)       v1/custom_devise/sessions#new
        user_session POST    /users/sign_in(.:format)       v1/custom_devise/sessions#create
destroy_user_session DELETE  /users/sign_out(.:format)      v1/custom_devise/sessions#destroy
       user_password POST    /users/password(.:format)      v1/custom_devise/passwords#create
   new_user_password GET     /users/password/new(.:format)  v1/custom_devise/passwords#new
  edit_user_password GET     /users/password/edit(.:format) v1/custom_devise/passwords#edit
                     PATCH   /users/password(.:format)      v1/custom_devise/passwords#update
                     PUT     /users/password(.:format)      v1/custom_devise/passwords#update
Run Code Online (Sandbox Code Playgroud)

但是我不需要或不需要这些路线:

    new_user_session GET     /users/sign_in(.:format)       v1/custom_devise/sessions#new
   new_user_password GET     /users/password/new(.:format)  v1/custom_devise/passwords#new
  edit_user_password GET     /users/password/edit(.:format) v1/custom_devise/passwords#edit
Run Code Online (Sandbox Code Playgroud)

所以我想我将按照文档创建自己的路线。所以我改变了我的routes.rb:

devise_scope :user do
  post   '/users/sign_in'  => 'custom_devise/sessions#create',  as: …
Run Code Online (Sandbox Code Playgroud)

ruby api routes ruby-on-rails devise

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

delayed_job在没有错误的情况下死亡 - 将作业保持在锁定状态

DJ死后,日志文件什么也没说.

运行: ./script/delayed_job status

得到: pid-file for killed process 1143 found (/appPath/tmp/pids/delayed_job.pid), deleting. delayed_job: no instances running

奇怪的是,如果我使用:./script/delayed_job run它将在前景中完美运行!永远不会死

试过很多版本delayed_job并且mongoid结果相同.

谁知道如何调试?

使用:

rails (3.2.7)

delayed_job_mongoid (2.0.0)

mongoid (3.0.3)

delayed_job (3.0.3)

ruby-on-rails delayed-job mongoid

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

脚本化openssl可以生成许多证书,而无需手动输入密码?

我已经创建了证书颁发机构,并且需要生成并签署50多个证书。我想编写这个过程的脚本。我不想手动输入密码100次以上!

这是我挂断的命令:

openssl req -newkey rsa:1024 -keyout ~/myCA/tempkey.pem -keyform PEM -out ~/myCA/tempreq.pem -outform PEM
Run Code Online (Sandbox Code Playgroud)

问题是,它要我用以下提示创建密码:

Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)

当系统仅要求我输入密码时,可以使用的-passin pass:mypass命令行选项openssl。但这似乎不适用于创建密码。

另外,当以后我最终将其删除时,需要输入密码似乎很奇怪:

openssl rsa < tempkey.pem > server_key.pem
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个简单的Ruby脚本:

require 'open3'

Open3.popen2("openssl req -newkey rsa:1024 -keyout ~/myCA/tempkey.pem -keyform PEM -out ~/myCA/tempreq.pem -outform PEM") {|i,o,t|
    i.puts "mySecretPassword"
    i.puts "mySecretPassword"
}
Run Code Online (Sandbox Code Playgroud)

但这似乎也不起作用。我仍然遇到一个手动提示,要求我创建密码。

ruby command-line openssl input popen3

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

Zend_Db_Profiler登录到文件

是否有一种简单的方法来记录查询文件?我有Firebug分析工作没有问题:

resources.db.params.profiler.enabled = "true"
resources.db.params.profiler.class = "Zend_Db_Profiler_Firebug"
Run Code Online (Sandbox Code Playgroud)

将它记录到一个没有编写一堆代码的文件会很好.

有没有我可以用Zend_Db_Profiler_Firebug换掉的课程?

更新:请参阅下面的答案.

php zend-framework zend-db zend-db-profiler

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

elasticsearch query_string和术语搜索语法

我想搜索query_string包含Bob和Industry_Type_ID任8OR 9.

我得到一个解析错误: Parse Failure [No parser for element [Industry_Type_ID]]

{
    "query" : {
        "query_string":{"query":"Bob"},
        "terms" : {
            "Industry_Type_ID" : [ "8", "9" ],
            "minimum_match" : 1
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信我错过了一些明显的东西.

elasticsearch

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

内部带有jQuery对话框的表单不提交

我有一个小表单,其中包含一个jQuery UI对话框,以便在选中特定复选框时询问其他信息.该对话框打开,包含2个附加复选框.

问题是当提交表单时,对话框中的2个复选框不会与表单的其余部分一起提交.从jQuery呈现对话框时我可以看出,它实际上将它呈现在结束表单标记之外,导致复选框不再是表单的一部分.

我尝试过这样的事情:

$("#dialog-form").parent().appendTo($("#ContactSpeakerForm:first"));
Run Code Online (Sandbox Code Playgroud)

但还没有想出一个好的解决方案.

这是我的js:

$(function() {

    var eventReg = $('#dialog-form').dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            Ok: function() {
                $(this).dialog("close");
            }
        }
    });

    $('#Confirmed').click(function() {
        if($('#Confirmed').attr('checked')) {
            eventReg.dialog("open");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这是html:

<form id="ContactSpeakerForm" name="ContactSpeakerForm" action="/contacts/add-contact-speaker/id/3420" method="post">

    <input type="hidden" name="ID" value="" id="ID">
    <input type="hidden" name="Contact_ID" value="3420" id="Contact_ID">    

    <div class="page_panel_table">
    <table>
        <tbody>
            <tr>
                <td align="right" class="form_label">Confirmed:</td>
                <td>
                    <input type="checkbox" name="Confirmed" id="Confirmed" value="1">
                </td>
            </tr>
            <tr>
                <td><input type="submit" name="submit" id="submit" value="Save"></td>
            </tr>
        </tbody>
    </table>        
    </div>

    <div id="dialog-form" style="display:none;" title="Speaker …
Run Code Online (Sandbox Code Playgroud)

forms jquery jquery-ui

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

EventMachine - 端口正在使用中

获取端口已被使用错误.

require 'em-websocket'
EM.run {
    EM::WebSocket.run(:host => "192.168.1.100", :port => 9001) do |ws|
        # Code goes here...
    end
}
Run Code Online (Sandbox Code Playgroud)

然后在同一台服务器上同时但不同的IP地址:

require 'em-websocket'

EM.run {
    EM::WebSocket.run(:host => "192.168.1.101", :port => 9001) do |ws|
        # Code goes here...
    end
}
Run Code Online (Sandbox Code Playgroud)

然后我得到这个错误......端口应该绑定IP地址,因此可以使用.

/usr/local/rvm/gems/ruby-1.9.3-p194/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in 'start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

我错过了什么吗?

更新:

跑步:netstat -tulpn | grep ruby显示:

tcp        0      0 0.0.0.0:9001                0.0.0.0:*                   LISTEN      718/ruby
Run Code Online (Sandbox Code Playgroud)

清楚地显示服务器绑定到0.0.0.0And Not192.168.1.100

我怎样才能eventmachine绑定到192.168.1.100? …

ruby linux port networking eventmachine

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