小编Nic*_*DIA的帖子

按名称访问struct属性

这是一个不起作用的简单go程序:

package main
import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    fmt.Println(getProperty(&v, "X"))
}

func getProperty(v *Vertex, property string) (string) {
    return v[property]
}
Run Code Online (Sandbox Code Playgroud)

错误:

prog.go:18:无效操作:v [property](类型*Vertex的索引)

我想要的是使用其名称访问Vertex X属性.如果我这样做v.X,但v["X"]没有.

谁能告诉我如何使这项工作?

go go-reflect

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

我们应该为layerX/layerY使用什么替代品,因为它们在webkit中已被弃用?

在chrome canary中,不推荐使用layerX和layerY,但我们应该使用什么呢?

我找到了offsetX,但它不适用于Firefox.所以为了在webkit上没有警告的情况下获取layerX,我已经这样做了:

var x = evt.offsetX || evt.layerX,
    y = evt.offsetY || evt.layerY;
Run Code Online (Sandbox Code Playgroud)

但这看起来相当复杂!这是否真的应该让layerX在所有浏览器中运行?

javascript

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

为什么我创建一个varchar(65535),我得到一个中等文本?

中间文本和varchar(65535)是否相同?我在这里的意思是他们是将数据直接存储在表中还是mediatext类型存储指针?我问这个是因为如果我尝试创建一个varchar(65535),它会自动转换为中间文本(如果长度实际上大于21811).


我有另一个相关的问题是:

我在桌子上有一些字段,我希望能够存储很多字符(大约10'000).但实际上,它几乎总是存储不超过10个字符.

所以我的问题是,我是否需要使用文本或varchar(10000)类型以获得最佳性能?

我相信varchar类型更适合这种情况.

提前感谢您的回答.

编辑

我不明白的是为什么他们说自从mysql 5.0.3以来我们可以创建一个varchar(65535),但是当我们尝试这样做时,它会将它转换为一个中间文本.对我来说,varchar和text(mediumtext include)之间的区别在于它们的存储方式(使用指针与否).那么为什么他们说我们可以创建长度为65535的varchar,如果我们不能呢?

mysql varchar text

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

使用CAST运算符将VARCHAR列排序为FLOAT在MySQL中不起作用

我找不到一种方法来将varchar列排序为float.这是我的SQL请求:

SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC'
Run Code Online (Sandbox Code Playgroud)

"数字"列的定义如下:

number  varchar(20) ascii_general_ci
Run Code Online (Sandbox Code Playgroud)

此列中为我的测试定义的值为:

0.00
200.00
20.00
100.00
Run Code Online (Sandbox Code Playgroud)

MySQL完全忽略了CAST运算符并按guid对列进行排序......

MySQL中是否有错误或者我做错了什么?

mysql casting

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

如何使用PHP设置WebSocket安全连接?

我找不到任何有关在PHP中设置wss连接的信息.我没有问题连接扔ws.我正在使用这个非常好的库来执行此操作:https://github.com/albeva/php-websocket

但我的网站使用https,我需要一个WebSocket安全连接,以避免Firefox抱怨连接不安全的事实.

在此先感谢您的帮助.


编辑

以下是库用于启动套接字连接的代码:

$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!is_resource($master)) {
    $this->throwSocketError();
}

// set options
if (!socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1)) {
    $this->throwSocketError();
}

// bind
if (!socket_bind($master, $this->host, $this->port)) {
    $this->throwSocketError();
}

// listen for connections
if (!socket_listen($master, SOMAXCONN)) {
    $this->throwSocketError();
}
Run Code Online (Sandbox Code Playgroud)

我相信我需要更改此代码,但我找不到如何.

php html5 websocket

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

一个数据库与许多数据库

我知道这个问题已被多次询问,但我想答案一下.

我正在开发一个Web应用程序,它将允许我的客户管理他们的客户,兑现,发票,预订,网站和许多其他事情.我正在使用MySQL和一个包含大约30个表的数据库.

我希望我的解决方案能够处理大约100,000个或更多客户.我的客户的需求将大不相同.从每年100个插入到一个,每天1000个插入到另一个.

现在我正在使用一个数据库(但我还在开发中),其中每个表都有一个帐户字段.我创建了一个模型层来访问自动将帐户附加到每个查询的数据(WHERE guid = 1成为WHERE帐户= X AND guid = 1).这项工作非常好,并且很容易维护,但我担心混合客户数据的事实.请注意,我使用的是增量ID而不是GUID.

我的问题是,我应该继续做这样的事情还是应该为每个客户创建一个数据库?

mysql database multi-tenant

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

基于另外2个创建对象

可能重复:
如何动态合并两个JavaScript对象的属性?

我有两个对象a和b定义如下:

a = { 
  a: 1, 
  af: function() { console.log(this.a) }, 
};
b = { 
  b: 2, 
  bf: function() { console.log(this.b) },
};
Run Code Online (Sandbox Code Playgroud)

我现在想要的是创建另一个将获得a和b属性的对象,如下所示:

c = { 
  a: 1, 
  af: function() { console.log(this.a) },
  b: 2, 
  bf: function() { console.log(this.b) },
}
Run Code Online (Sandbox Code Playgroud)

请注意,a和b需要保持不变.

知道如何做到这一点?

javascript

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

PHP:使用Golang来处理websocket连接

我有一个相当大的Web应用程序构建与SproutCore和PHP作为后端.我现在想要的是使用websockets实时更新我的​​客户端应用程序.据我所知,PHP处理持久连接真的很糟糕.所以我一直在想我可以使用Go来处理websockets连接,并在每次收到请求时调用我的PHP脚本(这个似乎可以实现).

所以我的第一个问题是,你们认为这是一个好主意(而且一个可行的想法,我还没有找到人们这样做)或者我应该坚持使用PHP?

如果我使用Go来处理websockets连接,我也一直在想我可以逐步从PHP转移到只使用Go(因为它比PHP快得多).如果我这样做,我将必须能够从PHP调用一些Go包.可以用PHP exec函数完成吗?有没有更好的办法 ?再说一遍,这是一个好主意吗?

php go websocket

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

得到文本PHP5不适用于debian

我正在开发一个使用gettext的网站.在当地,每件事都很有效.但今天我已经在我的生产服务器上传了我的网站,gettext不再需要工作了.我想使用的语言是fr_FR和en_US.gettext翻译我的文本,如果我用法语显示我的网站,但英语没有任何意义.

当我在我的debian服务器上执行locale -a时,我得到:

C
fr_FR.utf8
POSIX
Run Code Online (Sandbox Code Playgroud)

我是法国人,所以我觉得每件事都很正常.但是当我这样做:locale-gen en_USlocale-gen en_US.UTF-8然后又是locale -a时,没有任何改变.!这是正常的吗?

以下是PHP代码示例以防万一.但由于gettext适用于法语,我相信问题不在这里.

$langage = 'en_US.utf8';
putenv("LC_ALL=$langage"); 
setlocale(LC_ALL, $langage); 

$languageFileName = "default"; // locale/en_US/LC_MESSAGES/default.mo
bindtextdomain($languageFileName, PATH.'/locale'); 
bind_textdomain_codeset($languageFileName, 'UTF-8');
textdomain($languageFileName);
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

php debian locale gettext

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

从文件中删除特殊注释之间的代码

假设我有这段代码:

some code 1

// @if (debug)
code to remove
// @endif

some code 2

// @if (debug)
code to remove
// @endif

some code 2
Run Code Online (Sandbox Code Playgroud)

我想删除// @if (debug)和之间的所有代码// @endif.为此,我找到了一个sed命令,如果只有一个实例,// @if (debug)但是如果有多个实例则不起作用,因为sed不支持非贪婪匹配(因此,在上面的示例中,也会删除some code 2).这是命令:

sed -r -n '1h;1!H;${;g;s/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g;p;}' file_path.js > file_path.min.js
Run Code Online (Sandbox Code Playgroud)

我已经读过,我可以使用perl哪个支持非贪婪的比赛,但是我无法让它发挥作用.这是一个尝试:

perl -pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
perl -0pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
perl -0777 -pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
Run Code Online (Sandbox Code Playgroud)

有关如何使其适用的任何想法sed,perl或任何其他类似的工具?

regex bash perl replace sed

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