小编Wil*_*och的帖子

电子邮件线程中自定义标头的持久性

我这可能是一个奇怪的问题,但我想我会继续问问.说,我通过特殊客户端使用IMAP SMTP 发送电子邮件.此客户端在发送电子邮件之前会向电子邮件中添加一些自定义标头.收件人收到此电子邮件并直接回复我(也可能是CC的一些人).

我的问题是:鉴于上面的例子,这些X-header是否会在线程中的所有新消息中持续存在?

我能想到的一件事是客户端会知道它发送的原始电子邮件.对此电子邮件的所有后续回复都将有一个"回复"标题,其值等于上一封电子邮件的"Message-Id".在看到客户端发送的原始邮件之前,我不明白为什么我无法抓取这些回复帖子,从而导出原始的自定义标头.

也许我在想这个.有什么建议?:)

email header rfc5322

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

使用ChromeDriver,Capybara和Docker Compose"拒绝连接"

我正试图从PhantomJS转向Headless Chrome,并遇到了一些障碍.对于本地测试,我使用Docker Compose来启动和运行所有相关服务.要配置谷歌浏览器,我使用的图像将它和ChromeDriver捆绑在一起,同时在端口上提供服务4444.然后我在这个简化的docker-compose.yml文件中将它链接到我的app容器,如下所示:

web:
    image: web/chrome-headless
    command: [js-specs]
    stdin_open: true
    tty: true
    environment:
        - RACK_ENV=test
        - RAILS_ENV=test
    links:
        - "chromedriver:chromedriver"

chromedriver:
    image: robcherry/docker-chromedriver:latest
    ports: 
        - "4444"
    cap_add: 
        - SYS_ADMIN
    environment:
        CHROMEDRIVER_WHITELISTED_IPS: ""
Run Code Online (Sandbox Code Playgroud)

然后,我有一个spec/spec_helper.rb文件来引导测试环境和相关的工具.我定义了:headless_chrome驱动程序并将其指向ChromeDriver的本地绑定; http://chromedriver:4444.我很确定以下内容是正确的:

Capybara.javascript_driver = :headless_chrome

Capybara.register_driver :chrome do |app|
    Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.register_driver :headless_chrome do |app|
    capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu window-size=1440,900] },
)

Capybara::Selenium::Driver.new app,
    browser: :chrome,
    url: "http://chromedriver:4444/",
    desired_capabilities: capabilities
end
Run Code Online (Sandbox Code Playgroud)

我们也使用VCR,但我已将其配置为忽略与ChromeDriver使用的端口的任何连接:

VCR.configure …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara docker-compose google-chrome-headless

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

PHP仅在命令行模式下抛出XDebug错误

自从我启用XDebug以来,我在命令行中运行基于PHP的实用程序时遇到了一些问题.它通过浏览器执行脚本时运行正常,但是一旦我尝试在命令行上执行脚本,它就会抛出以下错误:

h:\www\test>@php test.php
PHP Warning:  PHP Startup: Unable to load dynamic library 'E:\development\xampplite\php\ext\php_curl.dll' - The specified module could not be found in Unknown on line 0
PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0

h:\www\test>
Run Code Online (Sandbox Code Playgroud)

在此之后脚本运行得很好,但这似乎是我无法绕过的东西.它可能是我的php.ini配置中的路径问题吗?我不确定是否会出现这种情况,无论我在何处访问@php环境变量,它都会抛出同样的错误.

此外,我的php.ini中的所有路径都是绝对的.不确定这里发生了什么.

php

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

Django Admin使用RESTful API与数据库

我知道这是一个奇怪的问题,但请耐心等待.我们为我们的iPhone应用程序开发了一个使用Python的RESTful平台.webapp版本是使用Django构建的,它也使用了这个API.我们认为使用Django的内置控制面板功能来帮助管理数据是个好主意.

这本身不是问题.问题是每个人都认为管理中心本身就是一个位于RESTful平台之上的客户端.

所以,我的问题是,有没有办法操纵Django的模型层直接访问我们的API,而不是直接与数据库通信?模型层将充当客户端向管理中心传递请求和响应.

我确信这是可能的,但我不确定我会从哪里开始.有什么输入?

python rest django-models django-admin

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

使用cURL在BASH脚本中发送JSON

好吧,这就是我想要做的.我正在尝试在bash中编写一个快速构建脚本,该脚本将从远程服务器上的GitHub检出私有存储库.要做到这一点,尽可能"手动",我想在远程服务器上生成本地RSA密钥集,并将公钥添加为该特定存储库的部署密钥.我知道如何使用GitHub的API来做到这一点,但是我在使用Bash构建JSON有效负载时遇到了麻烦.

到目前为止,我有以下特定流程:

#!/bin/bash

ssh-keygen -t rsa -N '' -f ~/.ssh/keyname -q
public_key=`cat ~/.ssh/keyname.pub`

curl -u 'username:password' -d '{"title":"Test Deploy Key", "key":"'$public_key'"}' -i https://api.github.com/repos/username/repository/keys
Run Code Online (Sandbox Code Playgroud)

它只是没有正确构建有效载荷.在Bash中使用字符串操作时我不是专家,所以我可以认真地使用一些帮助.谢谢!

ssh bash curl github

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

在PHP中迭代MASSIVE CSV文件的最佳实践

好吧,我会尽量保持这个简短,甜蜜和重点.

我们通过将MASSIVE CSV文件上传到基于PHP的CMS,对我们的系统进行大量的GeoIP更新.这件事通常有超过100k的IP地址信息记录.现在,简单地导入这些数据根本不是问题,但我们必须对当前的区域IP地址映射运行检查.

这意味着我们必须验证数据,比较和拆分重叠的IP地址等.并且必须对每条记录进行这些检查.

不仅如此,我还创建了一个字段映射解决方案,允许其他供应商以不同的格式实现其GeoIP更新.这是通过将规则应用于CSV更新中的IP记录来完成的.

例如,规则可能如下所示:

如果'countryName'=='澳大利亚'然后发送到'澳大利亚IP池'

可能存在多个必须运行的规则,并且每个IP记录必须全部应用它们.例如,根据10条规则检查的100k记录将是100万次迭代; 不好玩.

我们发现100条记录的2条规则最多需要10分钟来处理.我完全清楚这里的瓶颈是成功导入必须发生的剪切迭代量; 只是没有充分意识到我们可能需要加快一些其他选择.

有人建议将文件拆分为服务器端的块.我不认为这是一个可行的解决方案,因为它为已经很复杂的系统增加了另一层复杂性.必须打开,解析和拆分该文件.然后脚本也必须遍历块.

所以,问题是,考虑到我刚刚写的内容,最好的方法是什么才能加快这个过程?不幸的是,升级服务器的硬件JUST对于这个工具不是一个选择,但它们是非常高端的盒子.

不像我想的那么短,但是.HALPS?:(

php csv

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

在Rails中调试Cucumber + Capybara + PhantomJS中的jQuery Ajax

我很难绕过这个问题,所以任何帮助都将不胜感激.

我想要做的就是在我的项目上测试一个简单的基于Ajax的注册表单.如果表单提交成功,您将被重定向到欢迎页面.如果不是,则会获得与每个违规字段相关的相应验证错误.

由于一些奇怪的原因,Capybara没有遵循重定向.正在进行Ajax调用,我看到在数据库中注册了一个新帐户,但是onSuccess根本没有调用回调,或者忽略了重定向.

这是我正在尝试使用的(为了简洁起见,我缩写了代码):

特征:

  Feature: Registration
    In order to obtain a new account
    As a prospective customer
    I must submit a valid registration form.

    @javascript
    Scenario: A valid registration attempt
      Given an account registration form
      When I complete the form with valid values
      Then I should be redirected to the welcome screen 
Run Code Online (Sandbox Code Playgroud)

测试:

Given(/^an account registration form$/) do
  visit("/signup")
  assert current_path == "/signup"
end

When(/^I complete the form with valid values$/) do
  within("#signupForm") do
    fill_in("email",    :with => …
Run Code Online (Sandbox Code Playgroud)

ajax jquery cucumber capybara phantomjs

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

capybara chrome无头确认对话框

我试图在rspec Ruby on Rails中使用无头模式的chrome和capybara/selenium,并在尝试单击确认对话框时出现错误

Capybara.register_driver(:headless_chrome) do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu test-type window-size=1920x1080] }
  )

  driver = Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: capabilities
  )

  driver
end

Capybara.server = :puma
Capybara.javascript_driver = :headless_chrome



scenario 'delete movie' do
  login_as user
  visit edit_public_movie_path(movie)

  expect(page).to have_selector('span[ng-click="ctrl.deleteMovie()"]')
  find('span[ng-click="ctrl.deleteMovie()"]').click

  page.driver.browser.switch_to.alert.accept

  wait_for_ajax(wait_after: 1)
  expect(page).to have_content('Click here to upload movie (Max: 500 MB)')
end
Run Code Online (Sandbox Code Playgroud)

并得到了这个错误

 Event movie success delete movie
 Failure/Error: page.driver.browser.switch_to.alert.accept

 Selenium::WebDriver::Error::NoSuchAlertError:
   no alert open
     (Session info: headless chrome=59.0.3071.115)
     (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac …
Run Code Online (Sandbox Code Playgroud)

google-chrome ruby-on-rails headless selenium-chromedriver

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

帮助在OSX上为ANT安装FTP任务

大家好.我目前正在尝试在OSX(Snow Leopard 10.6.7)上为我的ANT(版本1.8.2)安装设置FTP支持,我有点碰壁.我已经阅读了Apache.org上的文档,内容涉及新任务的安装以及遍布整个网络的几篇文章,我似乎无法让这件事工作.

我读过的所有文章都提到了两个特定的JAR文件,这些文件没有与ANT的默认安装一起打包:

  1. Commons-Net(2.2.0)
  2. 雅加达ORO(2.0.8)

显然,Jakarta ORO不再是一个活跃的Apache项目,但我能够找到一个存档版本.

然后,显然,我所要做的就是将预编译的JAR文件放入相对于ANTs基本安装目录的lib文件夹中.我运行了以下命令:

ant -diagnostics | grep ftp.*Available
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

ftp : Not Available (the implementation class is not present)
Run Code Online (Sandbox Code Playgroud)

没有快乐.

不知道还能做什么.从我读过的内容来看,我正在执行适当的步骤来使这件事工作.

所以,我做了几个小时的尽职调查,我别无选择,只能请大家帮忙.以下是-diagnostics开关输出的直接链接.希望有人可以解释我在这里做错了什么.

http://www.thedrunkenepic.com/uploads/antDiagnostics.txt

一如既往,我很感激能得到任何帮助!

免责声明:过去几个月我一直在使用OSX,虽然我觉得使用终端很舒服,但我还是比较新的.所以,请...温柔.:)

ant ftp macos

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

使用HTTP DELETE方法时数据访问的RESTful问题

我在使用HTTP DELETE指令访问脚本时从PHP访问原始请求信息时遇到问题.我正在使用一个使用Ajax访问脚本的JS前端.这个脚本实际上是我正在开发的RESTful API的一部分.

此示例中的端点是:

http://api.site.com/session

此端点用于生成可用于后续API请求的身份验证令牌.在此URL上使用GET方法以及HTTP基本身份验证的修改版本将为客户端提供访问令牌.然后,必须将此令牌包含在与服务的所有其他交互中,直到它过期.

生成令牌后,会以客户端发送服务的"Accept"标头指定的格式将其传递回客户端; 在这种情况下'application/json'.成功后,它会响应HTTP 200 Ok状态代码.失败时,它会使用HTTP 401 Authorization Required代码抛出异常.

现在,当您要删除会话或"注销"时,您使用HTTP DELETE指令访问相同的URL.要验证对此端点的访问权限,客户端必须通过提供要终止的令牌来证明它们之前已经过身份验证.

如果他们"登录",则终止令牌和会话,并且服务应该使用HTTP 204 No Content状态代码进行响应,否则,他们再次受到401异常的欢迎.

现在,我遇到的问题是删除会话.使用带有Ajax的DELETE指令,一旦请求到达服务,我似乎无法访问我设置的任何参数.在这种情况下,我正在寻找名为'token'的参数.

我使用Firebug查看原始请求标头,我注意到'Content-Length'标头随着发送标记的大小而变化.这告诉我这个数据确实被发送到服务器.

问题是,使用PHP,我如何获取参数信息?它不是POST或GET请求,因此我无法像在PHP中那样访问它.参数在请求的内容部分内.

我已经尝试查找$ _SERVER,但这显示我有限的标头数量.我尝试了'apache_request_headers()',这给了我更详细的信息,但仍然只针对标题.我甚至试过'file_get_contents('php:// stdin');' 我一无所获

如何访问原始HTTP请求的内容部分?

对于冗长的帖子感到抱歉,但我认为太多的信息比太少了.:)

php rest http

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