小编Nin*_*pac的帖子

如何使用沙箱测试Paypal订阅按钮?

经过5个小时的研究和阅读过时的paypal文档,我终于放弃了!

我需要使用paypal沙箱测试一个简单的paypal订阅按钮.

按钮代码:

<form action="https://www.sandbox.paypal.com/us/cgi-bin/webscr" method="post">
     <input type="hidden" name="cmd" value="_s-xclick">
     <input type="hidden" name="hosted_button_id" value="34CXHXVU2J8BY">
     <input type="image" 
            src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_subscribeCC_LG.gif" 
            border="0" name="submit" 
            alt="PayPal — The safer, easier way to pay online." 
            style="border:none;padding:0;height:auto;width:auto">
     <img alt="" border="0" 
          src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" 
          width="1" height="1">
</form>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试发送表单时,我在paypal网站上收到此错误:

http://i.stack.imgur.com/AVuTz.png

先谢谢,菲利普

html paypal subscription paypal-subscriptions paypal-sandbox

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

递归地搜索数组中的键

private function find($needle, $haystack) {
    foreach ($haystack as $name => $file) {
        if ($needle == $name) {
            return $file;
        } else if(is_array($file)) { //is folder
            return $this->find($needle, $file); //file is the new haystack
        }               
    }

    return "did not find";
}
Run Code Online (Sandbox Code Playgroud)

嘿,此方法在关联数组中搜索特定键并返回与其关联的值.递归有一些问题.任何线索?

php arrays recursion search

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

Chrome 64上的音频播放停止/停止

谷歌只是改变如何Chrome会预先载入audiovideo; 请参阅:https://googlechrome.github.io/samples/media/preload-metadata

我的理解是简单地设置preload属性auto应该解决问题,但是,我无法这样做:

let mp3 = 'https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3';
let audio = new Audio(mp3);
audio.preload = 'auto';

audio.play();
Run Code Online (Sandbox Code Playgroud)

<audio src="https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3" preload="auto" autoplay></audio>
Run Code Online (Sandbox Code Playgroud)

这两个都将在Chrome 64和Chrome 65-dev上停止播放一分钟(其他浏览器和较旧的Chromes不受影响).我在Mac,Windows和Android上复制了这个问题.

在我的调试过程中,我已将所有可能的媒体事件附加到JS对象(即audio.addEventListener('timeupdate', () => { console.log('timeupdate') })),并且最初事件是这样触发的:

progress timeupdate progress timeupdate [...]

后来这样: timeupdate timeupdate timeupdate [...]

当音频播放停止时,我收到了一些error事件,并且转储audio.error返回:PIPELINE_ERROR_DECODE: Failed to send audio packet for decoding: timestamp=81763265 duration=26122 size=201 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)

我该如何解决?这是Chrome错误吗?

更新: …

javascript audio google-chrome

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

如何使用JavaScript SDK在AWS Polly中播放AudioStream响应?

这是我的脚本:

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.13.min.js"></script>
<script>
    AWS.config.region = 'eu-west-1';
    AWS.config.accessKeyId = 'FOO';
    AWS.config.secretAccessKey = 'BAR';

    var polly = new AWS.Polly({apiVersion: '2016-06-10'});

    var params = {
        OutputFormat: 'mp3', /* required */
        Text: 'Hello world', /* required */
        VoiceId: 'Joanna', /* required */
        SampleRate: '22050',
        TextType: 'text'
    };

    polly.synthesizeSpeech(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
    });
</script>
Run Code Online (Sandbox Code Playgroud)

请求成功,我得到了这样的回复:

在此输入图像描述

我该如何使用这种回复?我知道响应是反序列化的音频,但我如何实际播放它,比如说,在HTML5音频元素中?

此外,这个答案解释了为什么这种类型的阵列适合音频数据:https://stackoverflow.com/a/26320913/1325575

javascript audio html5 amazon-web-services amazon-polly

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

有Google Trips API吗?

Google推出了Trips产品:https://get.google.com/trips/(Android应用)

它有API吗?我想获得城市的日常旅游指南.我找到了飞行旅行(这里),但这不是我想要的.

通过更进一步的谷歌搜索,我能够找到这个,但这似乎是一个导航API,而不是Trips.

谢谢

google-maps google-api

9
推荐指数
0
解决办法
4465
查看次数

如何在Heroku/PHP 5.6环境中使用故障转移支持设置Memcached?

最近,由于我们的一个Memcached节点死亡(我们使用Memcachier作为Memcached提供程序),我们的PHP Web应用程序几分钟后就不可用了.

这是我们的user.ini配置(Heroku user.ini用作定义配置的地方),这有效,但显然不支持故障转移:

session.save_handler=memcached
session.save_path=${MEMCACHIER_SERVERS} # I understand this is redundant, but I just kept it as-is because I didn't write the original user.ini
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1

memcached.sess_binary=1
memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
Run Code Online (Sandbox Code Playgroud)

我们的新user.ini配置旨在提供故障转移功能

session.save_handler=memcached
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1

memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
memcached.sess_binary=1
memcached.sess_number_of_replicas=1
# I also tried memcached.sess_consistent_hash=1, to no avail
Run Code Online (Sandbox Code Playgroud)

MEMCACHIER_SERVERS的环境变量如下:123.45678.us-east-1.heroku.prod.memcachier.com:11211,123.45678.us-east-1.heroku.prod.memcachier.com:11211.我认为这意味着我们有2个节点.

我们在新配置中遇到的问题是超时,以及关于PHP会话功能的许多错误(session_start(),session_write_close()).

为什么会这样?

请记住,我们根本不在PHP代码中使用Memcached,而只是作为会话存储引擎.

我确实尝试过联系Memcachier支持,但客户代表只能提供推荐的PHP代码(我们不需要).

php session memcached heroku memcachier

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

PHP:in_array()vs array_intersect()性能

什么,以及多少,更快 - 手动迭代数组foreach并检查needle出现in_array()或使用array_intersect()

php arrays performance benchmarking array-intersect

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

为什么 array_uintersect() 比较 array1 和 array2、array1 和 array1 以及 array2 和 array2 之间的元素?

测试脚本

$i = 0;
array_uintersect(['foo', 'bar'], ['baz', 'qux'], function($a, $b) use (&$i) {
    print_r([$a, $b, $i++]);
});
Run Code Online (Sandbox Code Playgroud)

实际结果

Array
(
    [0] => bar
    [1] => foo
    [2] => 0
)
Array
(
    [0] => qux
    [1] => baz
    [2] => 1
)
Array
(
    [0] => bar
    [1] => qux
    [2] => 2
)
Array
(
    [0] => bar
    [1] => foo
    [2] => 3
)
Run Code Online (Sandbox Code Playgroud)

预期结果

Array
(
    [0] => foo
    [1] => baz
    [2] => 0
)
Array …
Run Code Online (Sandbox Code Playgroud)

php arrays filtering array-intersect custom-function

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

AWS上的Heroku Pipelines?

我正在为之工作的组织正在从Heroku迁移到AWS,我们错过了最后一块拼图 - 在AWS上复制Heroku Pipelines.

Heroku管道很棒,它们让我们:

  • 有多个开发阶段:测试,登台和生产,每个阶段都有自己的环境变量.测试阶段可以有多个应用程序.
  • 连接到Github:自动部署到生产应用程序对主分支所做的任何更改,在我们发出拉取请求时自动在测试阶段创建应用程序("查看应用程序",非常有用)
  • 自动化测试:我们不进行单元测试,我们对网站进行高级功能测试 - 每次创建拉取请求并在测试阶段创建应用程序时,都会从composer.json文件执行CLI脚本,该脚本使用Browserstack并将结果发送给我们

到目前为止,我已经找到了这些替代方案,但我认为其中任何一个都不符合上述所有要求:

列表中的最后一项,Harrow,似乎与我们所需要的一样接近,而且我很好奇是否有任何与我有相同(或非常相似)要求的人使用它并对此感到满意.我有一种感觉,这就是Heroku在幕后使用的.

对于生产,我们将在负载平衡器后面使用几个EC2.对于测试和暂存,我们可以使用一个带有多个虚拟环境的EC2(即Docker),也可以为每个测试和暂存应用使用t2.nano.

总结一下我的问题:什么是可以复制Heroku Pipelines的最佳工具,开源或商业?

git heroku amazon-ec2 amazon-web-services

5
推荐指数
0
解决办法
374
查看次数

如何在IDE中输入提示上下文?

我正在使用Closure::call(http://php.net/manual/en/closure.call.php)在类上下文中调用外部闭包.

这是一个简单的复制品:

class Foo {
    private $bar = 'baz';

    /**
     * Executes a closure in $this context and returns whatever the closure returns.
     *
     * @param \Closure $closure
     * @return mixed
     */
    public function callClosureInThisContext(\Closure $closure) {
        return $closure->call($this);
    }
}

class Closures {
    /**
     * @return \Closure
     */
    public function getClosureForFoo() : \Closure {
        return function () {
            // how do I tell my IDE that in this context $this is actually class Foo,
            // …
Run Code Online (Sandbox Code Playgroud)

php ide phpdoc intellij-idea phpstorm

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

webcal:// 链接不再在 MacOS 上打开 Apple 日历

我们的平台将用户的日历发布为 .ics 供稿,用户可以订阅该供稿 - 该供稿是使用 PHP 在运行时生成的,并且使用以下格式发布链接:webcal://domain.com/calendar/very-long-impossible-to-guess-filename.ics直到最近,在 Macbook 上,这将打开 Apple 日历-> 预填充的新日历订阅Calendar URL,如下所示:

苹果 iCalendar 屏幕截图

现在情况已不再如此 - 现在它会打开 Google 日历(在浏览器内),它会尝试将日历添加到自身 - 这不是我们想要的。

MacOS Mojave 和 MacOS Catalina 的 Chrome 78 上的行为已得到确认。它仍然可以在 iOS 上正确添加日历。当单击 MacOS 版 Safari 时,它会要求切换到 Chrome,然后 Chrome 再次重定向到 Google 日历。

我们如何恢复之前的行为,即通过链接在 MacOS 上打开 Apple 日历?请记住,下载的 .ics 文件不适合我们,因为我们的目标是让用户通过 Apple 日历跟踪网站上不断变化的日程安排。

macos icalendar calendar google-chrome caldav

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

几天后,我无法再启动 Puppeteer,直到重新启动服务器

    \n
  • 傀儡师版本:10.2.0
  • \n
  • 平台/操作系统版本:Ubuntu 20.04.3 LTS aarch64
  • \n
  • Node.js 版本:v.14.17.6
  • \n
  • 发生在任何 URL 上。
  • \n
\n

这是我的测试脚本:

\n

bug.hr/homepage.js

\n
const puppeteer = require(\'puppeteer-extra\');\n\n(async () => {\n    const eventPage = `https://www.bug.hr/`;\n    const browser = await puppeteer.launch({\n        headless: true,\n        dumpio: true\n    });\n    const page = await browser.newPage();\n    await page.goto(eventPage, {\n        waitUntil: \'domcontentloaded\'\n    });\n    console.log("TITLE: ", await page.evaluate(() => document.title));\n    await browser.close();\n})();\n
Run Code Online (Sandbox Code Playgroud)\n

这应该启动 Puppeteer (并且在我重新启动服务器后启动),相反,我得到了这个:

\n
ubuntu@ip-123-45-67-89:/var/www/tests$ env DEBUG="puppeteer:*" node bug.hr/homepage.js \n  puppeteer:launcher Calling /usr/bin/chromium-browser --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu node.js seccomp puppeteer

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