小编Hon*_*gli的帖子

访问静态初始化的__thread变量时出现分段错误

请考虑以下代码:

#include <stdio.h>

__thread bool foo = true;

int
main() {
    printf("foo = %d\n", foo);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译并运行:

$ g++ tls.cpp -o tls -o tls
$ ./tls
Run Code Online (Sandbox Code Playgroud)

在某些系统上 - 例如Amazon Linux 2013.09.0,ami-5b792c32,内核3.4.62-53.42.amzn1.i686,g ++ 4.6.3 20120306(Red Hat 4.6.3-2) - 这会导致分段错误一旦foo被访问.

另一方面,foo在代码中显式初始化不会导致分段错误:

#include <stdio.h>

__thread bool foo = true;

int
main() {
    foo = true;  /* Added!! */
    printf("foo = %d\n", foo);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么第一个代码示例在某些系统上崩溃,而后者却没有?是否__thread变量的静态初始化不起作用?可能会破坏操作系统?

c++ linux thread-local

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

SSL 证书验证失败,如何找出导致它的原因?

我最近在 Namecheap 获得了 PositiveSSL 证书并将其安装在我的服务器上。从 Firefox 访问站点工作正常,但从 Ruby 的 net/https 库访问它不起作用:即使我指定了证书的路径并且我检查了文件是否可读,它也无法验证连接证书. Curl 也失败了:

curl --cacert /path/to/cert https://mysite.com/
Run Code Online (Sandbox Code Playgroud)

它只是这样说:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a …
Run Code Online (Sandbox Code Playgroud)

ssl certificate

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

用于Rails 2.3.18应用程序的config.ru文件

有谁知道config.ru生产中的Rails 2.3.18应用程序应该在Passenger/Unicorn/Puma上运行的内容是什么?

到目前为止我有:

# Require your environment file to bootstrap Rails
require ::File.dirname(__FILE__) + '/config/environment'

# Dispatch the request
run ActionController::Dispatcher.new
Run Code Online (Sandbox Code Playgroud)

但它正在加载development而不是正确的生产环境.

rack ruby-on-rails unicorn

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

如何在 GORM 中引用复合主键?

Golang 的 GORM 库支持复合主键。但如何从相关模型中引用它们呢?

例如,假设我有一个 User 和一个 Note 模型:

type User struct {
    OrganizationID uint   `gorm:"primaryKey; not null"`
    Name           string `gorm:"primaryKey; not null"`
}

type Note struct {
    ID             uint   `gorm:"primaryKey; not null"`
    OrganizationID uint   `gorm:"not null"`
    UserName       string `gorm:"not null"`
    User           User
}
Run Code Online (Sandbox Code Playgroud)

自动迁移器创建notes这样的表,但失败了:

CREATE TABLE "notes" ("id" bigserial NOT NULL,"user_name" text NOT NULL,"organization_id" bigint NOT NULL,PRIMARY KEY ("id"),
CONSTRAINT "fk_notes_user" FOREIGN KEY ("user_name") REFERENCES "users"("name"))
Run Code Online (Sandbox Code Playgroud)

但我希望它这样做:

CONSTRAINT "fk_notes_user" FOREIGN KEY ("user_name", "organization_id") REFERENCES "users"("name", "organization_id")
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

go-gorm

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

如何避免Google电子表格中的"exec maxSimultaneous"限制?

我正在使用Google电子表格进行税务管理.我在一年内完成的所有财务交易都在电子表格中.因为我国的税收规则非常复杂,所以我开发了许多JavaScript函数来帮助我计算.我的电子表格中有很多行,大约1000行.每行都有多个对这些JavaScript函数的引用.

这个系统之前运行得非常好,但今天我发现Google在Google Spreadsheet中安装了某种运行时限制系统,导致我的许多列中止以下错误:

Service invoked too many times in a short time: exec maxSimultaneous.
Try Utilities.sleep(1000) between calls.
Run Code Online (Sandbox Code Playgroud)

经过一些调查后,似乎这个时间限制可以防止脚本运行时间过长.我的情况不同:我的脚本都是简短的O(1)算法,除了计算一些数字之外什么都不做.典型的脚本如下所示:

// Calculates the total amount excluding Value Added Tax, given
// an amount including Value Added Tax, and other sorts of information.
function ex_btw(inc_btw, commentaar, soort, btw_verlegd, btw_pct) {
  Utilities.sleep(1000);
  var soort = soort.toLowerCase();
  if (soort == 'eten en drinken'
   || commentaar.match(/treinkaartje/i)
   || commentaar.match(/treinticket/i)
   || commentaar.match(/taxi/i)
   || commentaar.match(/ boek /i))
  {
    return inc_btw / 1.06;
  } else if (soort == 'priveonttrekking' …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

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