小编Chr*_*oph的帖子

状态机和状态模式的实现有什么区别?

我想知道状态机是否只是工作中的状态模式,或者这两者之间是否存在差异?

我发现这篇文章的标题是"状态设计模式与状态机",但在一天结束时他只说状态模式使状态机过时但后来没有描述状态机究竟是什么状态机与实施国家格局.

architecture state design-patterns state-machine

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

包含<meta name ="fragment"content ="!">对于使用hashbang的页面有害吗?

谷歌说这个元标记:

以下重要限制适用:

  1. 元标记可能仅出现在没有散列片段的页面中.
  2. 只要 "!" 可能会出现在内容字段中.
  3. 元标记必须出现在文档的头部.

资料来源:https://developers.google.com/webmasters/ajax-crawling/docs/specification?hl = fr-FR

I'm aware that it is only needed for pages that do not contain a hashbang but still should be served with a snapshot. But that is usually just the home page.

Let's say we have:

www.foo.com

www.foo.com/#!/jobs

The second one will be fetched as:

www.foo.com?_escaped_fragment_=/jobs

just because of the hashbang.

But the root page has no hashbang so it needs to have this special meta tag in …

seo meta-tags google-crawlers hashbang

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

发布可观察量的最后一个值

我有一个热门的观察者(在这种情况下是一个主题):

var subject = new Rx.Subject();
Run Code Online (Sandbox Code Playgroud)

我想创建另一个observable,每次创建新订阅时,都会立即触发生成的最后一个值.

所以在伪代码中:

var myObservableWithLastValue = subject.publishLast();

subject.onNext(3);

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 3
});

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 3, too
});

subject.onNext(4);

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 4
});
Run Code Online (Sandbox Code Playgroud)

这大致是我想要的,似乎有效.但是,我想必须有一些内置的机制来实现相同的目标

Rx.Observable.prototype.keepLatest = function () {
    var latestValue;

    var disposable = this.subscribe(function (value) {
        latestValue = value;
    });

    return Rx.Observable.create(function (observer) {
        observer.onNext(latestValue);
        return disposable.dispose;
    });
};
Run Code Online (Sandbox Code Playgroud)

reactive-extensions-js rxjs

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

如何将字符串转换为生锈中的字节向量?

这可能是有史以来最肮脏的Rustlang问题,但我保证我会尽力在文档或网络上的任何其他地方找到答案.

我可以将字符串转换为字节向量,如下所示:

let bar = bytes!("some string");
Run Code Online (Sandbox Code Playgroud)

不幸的是我不能这样做

let foo = "some string";
let bar = bytes!(foo);
Run Code Online (Sandbox Code Playgroud)

因为bytes!需要一个字符串文字.

但是,如何将我的foo转换为字节向量?

type-conversion rust

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

如何在Windows上设置Node.js的工作目录?

我刚刚为windows安装了node.js,让它运行起来真的很轻松.我想将它作为构建过程的一部分,将几个文件组合在一起,如下所示:

// settings
var FILE_ENCODING = 'utf-8',
    EOL = '\n',
    DIST_FILE_PATH = 'dist/myAwesomeScript.js';

// setup
var _fs = require('fs');

function concat(fileList, distPath) {
    var out = fileList.map(function(filePath){
            return _fs.readFileSync(filePath, FILE_ENCODING);
        });
    _fs.writeFileSync(distPath, out.join(EOL), FILE_ENCODING);
    console.log(' '+ distPath +' built.');
}

concat([
    'foo/bar.js',
    'foo/lorem.js',
    'foo/maecennas.js'
], DIST_FILE_PATH);
Run Code Online (Sandbox Code Playgroud)

这真的很有魅力.但是,只有将我的所有脚本放入nodejs目录(即C:\ Program Files(x86)\nodejs)并使用管理员权限启动cmd进程时,它才有效.

但我需要将我的项目文件放在另一个目录(比如D:\ git\projectx \)中,并且希望能够运行:node.exe D:\ git\projectx\combine.js.不幸的是,这样的事情不起作用,因为node.exe将在它自己的目录中查找文件,即C:\ Program Files(x86)\nodejs.必须要离开启动nodejs进程并告诉它使用另一个目录作为其工作目录,我错了吗?

UPDATE

正如有人在IRC上指出的那样.我的问题的解决方案相当简单.刚cd进入D:\git\projectx再使用node.exe combine.js.这使得脚本中的当前目录指向它D:\git\projectx

但是,我接受了卢克的回答,因为它似乎也是真的;-)

windows node.js

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

如何在BaseProxy上调用方法时有效地使用asyncio?

我正在开发一个应用程序,它使用LevelDB并使用多个长期存在的进程来执行不同的任务.

由于LevelDB只允许单个进程维护数据库连接,因此我们所有的数据库访问都通过特殊的数据库进程进行汇集.

要从另一个进程访问数据库,我们使用a BaseProxy.但是因为我们使用asyncio我们的代理不应该阻塞这些调用db进程然后最终从db读取的API.因此,我们使用执行程序在代理上实现API.

    loop = asyncio.get_event_loop()

    return await loop.run_in_executor(
        thread_pool_executor,
        self._callmethod,
        method_name,
        args,
    )
Run Code Online (Sandbox Code Playgroud)

尽管这工作得很好,我不知道是否有到包裹一个更好的选择_callmethod的通话BaseProxyThreadPoolExecutor.

我理解它的方式,BaseProxy调用DB进程是等待IO的教科书示例,因此使用线程这似乎是不必要的浪费.

在一个完美的世界中,我假设async _acallmethod存在,BaseProxy但不幸的是,API不存在.

因此,我的问题基本归结为:在使用时,BaseProxy是否有更有效的替代方法来运行这些跨进程调用ThreadPoolExecutor

python python-asyncio python-multiprocessing

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

为什么Clojure语言使用这么多括号?

好像所有东西都需要用clojure中的括号括起来.即使是一个简单的问候世界!

(println "Hello world!")
Run Code Online (Sandbox Code Playgroud)

该语法决定有什么好处?

syntax clojure

16
推荐指数
3
解决办法
2194
查看次数

将json.RawMessage转换为结构的正确方法是什么?

我有这个 struct

type SyncInfo struct {
    Target string
}
Run Code Online (Sandbox Code Playgroud)

现在我json从ElasticSearch 查询一些数据.Source是类型的json.RawMessage.我想要的只是映射source到我SyncInfo为其创建的变量mySyncInfo.

我甚至想出了如何做到这一点......但这看起来很奇怪.我首先调用MarshalJSON()get a []byte然后将json.Unmarshal()其作为[]byte一个指向我结构的指针.

这工作正常,但感觉好像我正在做一个额外的跳.我错过了什么,或者是从a json.RawMessage到a 的预定方式struct

var mySyncInfo SyncInfo

jsonStr, _ := out.Hits.Hits[0].Source.MarshalJSON()
json.Unmarshal(jsonStr, &mySyncInfo)

fmt.Print(mySyncInfo.Target)
Run Code Online (Sandbox Code Playgroud)

json go

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

为什么Google不使用无头浏览器来抓取客户端内容?

我知道使客户端网站可以抓取所需的步骤:

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started?hl=nl

我只是想知道,为什么谷歌只是他们的抓取工具中集成无头浏览器来节省我们通过NodeJS和服务器端DOM实现提供HTML快照的痛苦?

我想他们可能是我缺少的技术原因.我只是没有看到它.

ajax seo client-side web-crawler

15
推荐指数
0
解决办法
1286
查看次数

静态方法的函数式编程建议如何影响可测试性?

我越是深入研究函数式编程,我就读到了支持静态方法而不支持非静态方法的建议.您可以在本书中阅读有关该建议的示例:

http://www.amazon.de/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588

当然,如果你考虑功能纯度,这是有道理的.一个静态函数站在那里说:"我不需要任何状态!"

但是,这对可测试性有何影响?我的意思是,不是一个有很多静态方法的系统变得很难测试(因为静态方法难以模拟)?或者模拟在函数式编程中扮演次要角色,如果是这样的话:为什么?

编辑

因为怀疑书是否真的提出了这个建议.我会再引用一点.我希望Oliver Sturm没问题.

使用静态方法

静态方法是一般值得考虑的基本思路之一.许多面向对象的程序员都支持它,从功能的角度来看,函数可以在大多数时候保持静态.任何纯函数都可以是静态的.(......)

有些人可能会争辩说,总是传递所有参数的想法意味着你并没有尽可能多地利用面向对象的思想.事实上这可能是真的,但也许是因为面向对象概念并没有像他们应该那样多地考虑并行执行问题.(......)

最后,建议的一个指导原则:当你编写了一个不需要访问它所在类中任何字段的方法时,请将其设置为静态!

顺便说一下,到目前为止一直有很好的答案.感谢那!

c# unit-testing functional-programming

13
推荐指数
3
解决办法
1039
查看次数