小编Seb*_*oli的帖子

使用mgo的Go(Monglang)中的MongoDB:如何更新记录,查看更新是否成功并在单个原子操作中获取数据?

我在Go下使用MongoDB的mgo驱动程序.

我的应用程序要求一个任务(只有一个名为"jobs"的集合中的Mongo记录选择),然后将自己注册为asignee来完成该任务(对同一"作业"记录的更新,将自己设置为受让人).

该程序将在几台机器上运行,所有机器都与同一个Mongo交谈.当我的程序列出可用任务然后选择一个任务时,其他实例可能已经获得该分配,并且当前分配将失败.

我怎样才能确保我读取并更新的记录在更新时是否具有某个值(在本例中为受让人)?

我试图得到一个任务,无论是哪一个,所以我认为我应该首先选择一个待处理任务并尝试分配它,保持它只是在更新成功的情况下.

所以,我的查询应该是这样的:

"从收集'工作'的所有记录中,只更新一个 asignee = null,将我的ID设置为受让人. 然后,给我那个记录,这样我就可以运行这份工作."

我怎么能用Go的mgo驱动程序来表达呢?

go mongodb mgo

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

golang ReverseProxy无法正常工作

我不知道为什么这个反向代理不起作用.我见过几个例子,我发现它没有任何问题.

package main

import (
    "log"
    "net/url"
    "net/http"
    "net/http/httputil"
)

func report(r *http.Request){
  log.Print("URL: " + r.URL.Path)
  log.Print("Scheme: " + r.URL.Scheme)
  log.Print("Host: " + r.URL.Host)
  //r.URL.Scheme = "http"
  //r.URL.Host = "stackoverflow.com"

  //r.Header.Set("Host", "stackoverflow.com")
  //log.Print("Header Host: " + r.Header.Get("Host"))
}

func main() {
  proxy := httputil.NewSingleHostReverseProxy( &url.URL{Scheme:"http",Host:"myrealserver.com"})
    proxy.Director = report
    // http.Handle("/", proxy)
    error := http.ListenAndServe("mylocalhost.com:8080", proxy)
    if(error != nil) {
        log.Fatal(error)
    }
}
Run Code Online (Sandbox Code Playgroud)

它记录:

2014/04/18 21:32:50 URL: /arg/es
2014/04/18 21:32:50 Scheme:
2014/04/18 21:32:50 Host:
2014/04/18 21:32:50 http: proxy error: unsupported …
Run Code Online (Sandbox Code Playgroud)

proxy go

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

闭包和传统课程有什么区别?

关闭类的闭包有哪些优缺点,反之亦然?

编辑:正如Faisal用户所说,闭包和类都可以用来"描述维护和操纵状态的实体",因此闭包提供了一种使用函数语言以面向对象的方式编程的方法.像大多数程序员一样,我对类更熟悉.

这个问题的目的不是打开另一场关于编程范式更好的火焰战争,或者封闭和阶级是完全等同的,还是穷人的另一个.

我想知道的是,如果有人发现一种情况,一种方法真正击败另一种,以及为什么.

language-agnostic oop closures functional-programming

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

来自Go的Android API

我知道可以为Android编译Go程序.

如何在Go程序中使用Android特定API,例如获取GPS坐标或使用默认浏览器打开URL?

android go

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

有没有将Vim命令翻译成人类可读形式的在线服务?

我找到了Vimmish:http://dira.ro/2009/05/07/vimmish-vim-translator

将Vim命令序列转换为人类可读形式的工具:

输入:

iDon't know vim :(.<ESC>^2WBc2wbetter now<ESC><RIGHT>Da.<ESC>II can understan<ESC><RIGHT>~dE
Run Code Online (Sandbox Code Playgroud)

输出:

                 i => insert before cursor:
Don't know vim :(. => type Don't know vim :(.
             <ESC> => go to normal mode
                 ^ => move to the begining of the line (not blank character)
                2W => move to the begining of the next space-separated word, 2 times
                 B => move backwards one space-separated-word
               c2w => change to the begining of the next word, 2 times
        better now => …
Run Code Online (Sandbox Code Playgroud)

vi vim

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

golang,Windows版本中当前正在运行的进程列表

如何在Windows下的golang中获取当前正在运行的进程列表?

我需要这样的东西:

Golang中当前正在运行的进程列表

但也可以在Windows下使用.

go

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

如何配置CKEditor以保持数据属性而不是删除它们?

我使用CKeditor编辑丰富的HTML页面,但是一些javascript功能依赖于<a>触发它们的标签的特殊属性.

这些情况很少见,只有5000多条记录的数据库上的一些记录需要触发此功能,而这个特定的js模块需要特殊的属性作为参数化的一种方式:

<a href="#" data-from="ROM" data-to="NYC" data-promo="8373794">Buy your tickets</a>
Run Code Online (Sandbox Code Playgroud)

CKeditor允许我添加这些属性(通过编辑条目的源代码),但是当客户端编辑页面时,编辑器会删除它们并中断该功能.

指示我的客户不要编辑此特定记录似乎不专业.换到另一个WYSIWYG编辑器可能会有效,但我认为这是最后的选择.

CKEditor必须有一个解决方案!

ckeditor

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

逐步迁移到新的数据库模式.¿建议?

(这个问题是关于临时和编程地保持两个数据库的新记录同步,具有非常不同的模式,忽略旧的过时和不再需要的记录的最佳方法.)

我在一家为导游,报纸和网站提供电视节目信息的公司工作.

我有一个旧系统,有一些限制,正在被一个新系统取代.

不同的客户端以不同的格式(xml,sql,txt,甚至是打印就绪的PDF)以不同的方式(推送,拉取,部分转储,简单导出,人工辅助导出 - 像PDF版本等)获取数据.一些出口产品每月生产一次,其他出口产品每天生产一次.

问题是几个客户端必须依赖旧系统中的数据,直到新系统完全开发和加载,并且维护数据的人员不能同时使两个数据库同步,因为这需要大量的额外工作,但考虑到项目的规模,过夜切换系统似乎是不可能的.

我们不希望将旧数据库中的数据全部输入到新数据库,因为大部分数据已经没有必要,并且有大量垃圾(即具有不同细节级别的重复记录,旧的空气信息我们只需要作为档案).

我们希望在两个数据库中插入新记录,并将旧编辑的记录复制到新数据库中.

我们即将开始使用Symfony和Doctrine开发新系统,我决定我们可以设计一组ORM"代理"类,它们应该具有与简单的Doctrine ORM类集相同的接口,但保留同步在另外两组类之间(与新系统接口的类和与旧系统接口的类).最终旧数据库应该与代理类一起丢弃,并且直接连接到新数据库的Doctrine ORM类应该占用该位置,就像旧系统永远不存在一样.

这是一个很长的镜头,我对这种方法并不完全有信心.
有没有人有这种项目的经验?
您是否知道这种方法中存在任何常见的陷阱,或者其他一些可能适合这种情况的解决方案?

database language-agnostic migration oop design-patterns

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

PHP PDO连接失败会导致警告和脚本执行超时

我试图像这样实例化一个PDO对象:

$this->pdo['pdo'] = new PDO('mysql:host=127.0.0.1;dbname=mydb;charset=UTF-8',
                    'myuser', 'my pass');
Run Code Online (Sandbox Code Playgroud)

我想抓住我认为在MySQL服务器没有运行时会抛出的异常.

PHP.net说"如果尝试连接到请求的数据库失败,PDO :: __ construct()会抛出PDOException."

但是,如果我关闭数据库服务器并运行脚本,我得到的是一个警告:

Warning: PDO::__construct() [pdo.--construct]: [2002] 'A connection attempt failed 
because the connected party did not properly respond after a period of time, or 
established connection failed because connected host has failed to respond.' in
C:\test\test.php on line 5

Fatal error: Maximum execution time of 60 seconds exceeded in C:\test\test.php 
on line 0
Run Code Online (Sandbox Code Playgroud)

没有异常被抛出.

有没有直接的方法来捕获错误(没有临时设置自定义错误管理器功能的麻烦?)

谢谢!

php pdo

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

如何使用 Chrome 的文本片段功能突出显示字符串的所有实例?

我最近发现了一个名为“文本片段”的新 Chrome 功能,该功能允许链接直接指向 URL 中的特定文本并突出显示它。例如:

https://www.nytimes.com/#:~:text=杂志

但是,如果我指向出现多次的作品,则只有第一个实例会突出显示。

有什么方法可以要求它突出显示给定字符串的所有出现位置吗?

google-chrome

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