小编mar*_*cio的帖子

Postgres数据库具有不同的编码

我尝试在postgres中创建具有不同编码的数据库(我使用PgAdmin作为我的数据库管理器),但是当我尝试使用非UTF8编码创建数据库时,PgAdmin向我显示错误,说我无法创建数据库,因为它与我当前的语言环境"Portuguese_Brazil_1252"不匹配,并且LC_Ctype配置需要编码"WIN1252".

如何在PostGres中配置它?我正在使用Windows XP(不是我选择)的区域设置测试服务器下运行它.是否可以创建具有不同编码的数据库或该行为是PostGres限制?这里有人已经成功管理了吗?

谢谢

database postgresql encoding multiple-databases

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

在对象上下文中运行的回调函数?

我试图在运行时配置一个对象传递一个回调函数,如下所示:

class myObject{
  protected $property;
  protected $anotherProperty;

  public function configure($callback){
    if(is_callable($callback)){
      $callback();
    }
  }
}

$myObject = new myObject(); //
$myObject->configure(function(){
  $this->property = 'value';
  $this->anotherProperty = 'anotherValue';
});
Run Code Online (Sandbox Code Playgroud)

当然我收到以下错误:

致命错误:在不在对象上下文中时使用$ this

我的问题是,如果有一种方法可以$this在回调函数内部使用或者可能获得更好模式的建议.

PS:我更喜欢使用回调.

php php-5.3

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

在没有已知原因的情况下进行“恐慌:同步:解锁已解锁的互斥锁”

我在 Go 中有一个 cli 应用程序(仍在开发中),并且源代码和依赖项都没有进行任何更改,但突然它开始恐慌panic: sync: unlock of unlocked mutex

我运行并发代码的唯一地方是在程序被请求关闭时进行处理:

func handleProcTermination() {
    c := make(chan os.Signal, 1)
    signal.Notify(c, os.Interrupt)
    go func() {
        <-c
        curses.Endwin()
        os.Exit(0)
    }()
    defer curses.Endwin()
}
Run Code Online (Sandbox Code Playgroud)

我所做的唯一一件事就是重命名我的 $GOPATH 和工作空间文件夹。这个操作会导致这样的错误吗?

您是否遇到过一些相关问题却没有任何解释?是否有一个合理的检查清单可以帮助找到问题的原因?

runtime-error go

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

zend_string_release和zend_string_free有什么区别?

我看到了源头,但仍无法完全解释差异:

static zend_always_inline void zend_string_free(zend_string *s)
{
    if (!IS_INTERNED(s)) {
        ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
        pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
    }
}

static zend_always_inline void zend_string_release(zend_string *s)
{
    if (!IS_INTERNED(s)) {
        if (--GC_REFCOUNT(s) == 0) {
            pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果有一个zend_string_free更合适的实例,zend_string_release反之亦然,那将是很好的.

c php-internals

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

是否可以向PHP添加新功能?

我想在PHP中添加一个函数,这样我就可以在我的服务器上运行的任何脚本中使用它.是否可以注册一个函数,如果它是PHP本机的?PHP是否有某种配置文件,我可以注册新的全局/本机函数?

没有意图在生产中使用它,我只是对如何实现这一点感到好奇.

php function configuration-files

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

从具有多个返回值的函数调用中仅获取特定值?

给定swap一个返回多个值的函数,假设它是某些API的一部分,我无法修改:

package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用swap函数并仅获取第一个返回值,丢弃第二个值?我试过这个:

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a)
}

ERROR: prog.go:10: b declared and not used [process exited with non-zero status]
Run Code Online (Sandbox Code Playgroud)

这也是不可能的:

a := swap("hello", "world")

ERROR: prog.go:10: multiple-value swap() in single-value context
Run Code Online (Sandbox Code Playgroud)

当我不需要所有返回的部分时,如何处理返回多个值的函数?


代码基于" 参观之旅 - 第9课 "

go

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

是否有可能在Go中的单值上下文中有选择地获取返回值?

一个简单的例子:

package main

import "fmt"

func hereTakeTwo() (x, y int) {
    x = 0
    y = 1
    return
}

func gimmeOnePlease(x int){
    fmt.Println(x)
}

func main() {
    gimmeOnePlease(hereTakeTwo()) // fix me
}
Run Code Online (Sandbox Code Playgroud)

是否可以在hereTakeTwo() 使用显式_赋值的情况下仅传递第一个返回值?我想避免的例子:

func main() {
    okJustOne, _ := hereTakeTwo()
    gimmeOnePlease(okJustOne)
}
Run Code Online (Sandbox Code Playgroud)

我想要的是使gimmeOnePlease函数能够接收未定义数量的参数,但只采用第一个一种方式来调用hereTakeTwo函数,并获得第一个返回值而无需使用_赋值.

或者在最后的手段(疯狂的想法)使用某种适配器功能,它需要N args并且仅重新输入第一个,并且具有如下内容:

func main() {
    gimmeOnePlease(adapter(hereTakeTwo()))
}
Run Code Online (Sandbox Code Playgroud)

为什么?我只是测试语言的界限,并了解它对某些目的的灵活性.

return-value go

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

Bison语法规则匹配一组令牌

有没有办法一次匹配多个令牌?现在我的一条规则看起来像这样:

rule:
    T_A { $$ = some_common_behavior(); }
  | T_B { $$ = some_common_behavior(); }
  | T_C { $$ = some_common_behavior(); }
  ... // many more tokens
Run Code Online (Sandbox Code Playgroud)

但如果一组令牌可以立即匹配,那将更加可维护:

rule:
  T_A | T_B | T_C | ... { $$ = some_common_behavior(); }
Run Code Online (Sandbox Code Playgroud)

PS:some_common_behavior调用已处理当前令牌,因此不需要像第一个示例那样为每个令牌重复代码.我只需要一种更好的方式来宣告这一点而不需要重复.

c bison

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

如何使用zend引擎API对类似(int)的值进行类型转换?

我尝试过的:

//...
zend_long dest;
if (UNEXPECTED(!zend_parse_arg_long(arg, &dest, NULL, 0, 0))) {
    zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type integer", "", zend_zval_type_name(arg), "", arg);
}
zval_ptr_dtor(arg);
ZVAL_LONG(arg, dest);
//...
Run Code Online (Sandbox Code Playgroud)

问题是,如果arg是一个带有格式错误的数字的字符串,就像"10x"引擎引发了一个通知:

Notice: A non well formed numeric value encountered in...
Run Code Online (Sandbox Code Playgroud)

我真正想要的是能够arg像下面的PHP用户态代码一样进行转换:

(int) "10x" // evaluates to 10, no NOTICE
Run Code Online (Sandbox Code Playgroud)

我仍在浏览zend API,所以欢迎任何有关如何找到一个好的(更新的)PHP内部参考或一般建议的帮助.

c php-internals

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