小编Iwa*_*aru的帖子

为什么Googlebot会抓取未在任何地方引用的/ mobile/*和/ m/*页面?

自5月底以来,我在网站站长工具/ Google搜索控制台的智能手机抓取错误页面中出现了很多新的404错误.所有这些都以/ m /或/ mobile /开头,其中没有一个是现有的,也没有链接到网站上的任何地方.

例如,我在http://www.example.com/mobile/foo-bar/http://www.example.com/m/foo-bar页面上有404错误.根据Search Console,这些页面在现有页面http://www.example.com/foo-bar/中链接,但它们不是.

Googlebot是否决定自己寻找每个页面的移动版本?我可以禁用此行为吗?这是因为我的网站还不适合移动设备(我收到了Google的另一条警告信息).

mobile seo googlebot google-webmaster-tools

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

无法使用sequelize从本地节点应用程序连接到heroku postgresql数据库

我正在尝试使用Sequelize从本地nodejs应用程序连接到Heroku postgresql数据库.我按照这两个指南,一切都在heroky服务器端工作得很好,但是当我在Mac上本地运行时,我的节点应用程序将无法连接到heroku.

以下是我启动本地应用的方法:

DATABASE_URL=$(heroku config:get DATABASE_URL) nodemon
Run Code Online (Sandbox Code Playgroud)

得到我:

Sequelize: Unable to connect to the database:
Run Code Online (Sandbox Code Playgroud)

但是通过这样做我得到了正确的URL:

echo $(heroku config:get DATABASE_URL)
Run Code Online (Sandbox Code Playgroud)

这些命令工作正常:

heroku pg:psql
psql $(heroku config:get DATABASE_URL)
Run Code Online (Sandbox Code Playgroud)

这是我的nodejs代码:

var match = process.env.DATABASE_URL.match(/postgres:\/\/([^:]+):([^@]+)@([^:]+):(\d+)\/(.+)/)
sequelize = new Sequelize(match[5], match[1], match[2], {
    dialect:  'postgres',
    protocol: 'postgres',
    port:     match[4],
    host:     match[3],
    logging: false
})

sequelize
.authenticate()
.complete(function(err) {
    if (!!err) {
        log('Sequelize: Unable to connect to the database:', err);
    } else {
        http.listen(process.env.PORT || config.server.port, function(){
            log('Web server listening on port '+process.env.PORT …
Run Code Online (Sandbox Code Playgroud)

postgresql heroku node.js sequelize.js heroku-postgres

15
推荐指数
3
解决办法
8634
查看次数

Safari iOS9是否为window.innerHeight返回了错误的值?

这是我的视口元标记:

    <meta name="viewport" content="user-scalable=no, initial-scale = 1, minimum-scale = 1, maximum-scale = 1, width=device-width">
Run Code Online (Sandbox Code Playgroud)

在Safari的iOS 8,window.innerHeight$(window).height()在iPad 928:两者返回相同的值.

但是在Safari iOS 9上,window.innerHeight并且$(window).height()在运行iOS 9.0或1154的iPhone 6s和运行iOS 9.1的iPad mini上分别返回1461和559的不同值.

这是Safari中的错误还是打算?1461在我的iPhone上来自哪里?我应该使用$(window).height()(返回我想要的值)而不是window.innerHeight

javascript safari jquery ios ios9

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

相关表格中"WHERE ... LIKE"的范围

我正在尝试从Postgresql表(table1)中获取数据,该表由property另一个相关表(table2)的字段()过滤.

在纯SQL中,我会像这样编写查询:

SELECT * FROM table1 JOIN table2 USING(table2_id) WHERE table2.property LIKE 'query%'
Run Code Online (Sandbox Code Playgroud)

这很好用:

scope :my_scope, ->(query) { includes(:table2).where("table2.property": query) }
Run Code Online (Sandbox Code Playgroud)

但我真正需要的是使用LIKE运算符进行过滤而不是严格的相等.但是这不起作用:

scope :my_scope, ->(query) { includes(:table2).where("table2.property LIKE ?", "#{query}%") }
Run Code Online (Sandbox Code Playgroud)

因为我收到这个错误:

PG::UndefinedTable: ERROR: missing FROM-clause entry for table "table2" LINE 1: ...ble2" WHERE "table1"."user_id" = $1 AND (tabl... ^ : SELECT "table1".* FROM "table1" WHERE "table1"."user_id" = $1 AND (table2.property LIKE 'query%') ORDER BY last_used_at DESC
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

ruby postgresql activerecord ruby-on-rails rails-activerecord

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

在 Debian 上启动 Thin 时,“必须安装 libgcc_s.so.1 才能使 pthread_cancel 工作”

我在 Debian 7 上使用 Thin 作为开发 Web 服务器和 Rails。自从我将 Rails 更新到 4.2.7.1 后,我无法再启动 Thin,并且收到以下错误消息:

Using rack adapter
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted
Run Code Online (Sandbox Code Playgroud)

我的文件夹中有一个libgcc_s.so.1文件/lib/i386-linux-gnu/,但不知何故,thin 似乎无法在那里找到它。

我已经尝试了这个问题的所有答案,但没有帮助。

编辑:我认为问题与libv8gem 有关,这是对我的项目的依赖。5.3.332.38.1 x86-linux当使用 gem 的默认版本时会出现该错误。但如果我将其强制为 version 5.0.71.48.3 x86-linux,错误就会消失。

debian ruby-on-rails thin libv8

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

如何使用Stripe防止重复充电?

我正在使用Stripe允许我的客户保存信用卡并支付发票(具有唯一ID).在付款时,我使用表单将带有卡ID(由条带提供)的POST请求发送到我的服务器,然后控制器对其进行收费.然后我将发票标记为付款在我身边.

事实证明,如果我足够快地双击我的表单的提交按钮,我发送两个POST请求,并且卡最终被收取两次,因为当第二个POST请求到达我的服务器时,从我的服务器到Stripe API的POST请求(来自第一次点击)没有完成,因此发票尚未标记为付款.

我正在考虑在第一次点击后禁用表单提交按钮,但我觉得可能有一种更清洁的方式.

Stripe方面是否有防止重复收费(可能使用我的发票ID)?如果不是最好的后端方法在我身边做什么呢?

node.js stripe-payments

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

我可以使用 netlify 的 CDN 来防止每天多次执行 lambda 吗?

我有一个 Netlify 部署的应用程序,它带有一个 lambda 函数,它调用外部 API 来获取一些数据。外部API数据每天更新一次,我希望lambda响应在Netlify的CDN中缓存24小时,所以我不调用lambda函数,从而调用外部API,一天不止一次.

为了测试这一点,我编写了一个简单的 lambda 函数:

exports.handler = function(event, context, callback) {
  callback(null, {
    statusCode: 200,
    body: new Date().toString(),
    headers: {
      'Cache-Control': 'public, s-maxage=86400',
    },
  });
};
Run Code Online (Sandbox Code Playgroud)

当 10 秒后第二次调用端点时,我确实在响应主体中获得了相同的时间,表明响应确实被缓存了。但是当从两个不同的设备(我的电脑和我的 4G 手机,所以不同的 IP 和 ISP)调用它时,我得到了不同的日期,好像每个设备都提供了不同的缓存响应,我可以在 Netlify 的仪表板中看到 lambda 是调用了两次。

关于 Netlify 的 CDN 是如何工作的,我有什么不明白的地方吗?有没有办法实现我正在尝试做的事情?

http cache-control netlify

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