小编Iva*_*hko的帖子

在RESTful API请求中指定资源字段列表的方法

我在Web服务中使用RESTful API,具有某些资源,如用户,帖子等.当我提出帖子列表(GET /帖子)的请求时,我想要检索每个帖子(即主题,作者姓名)的减少部分数据的帖子数组.当我提出具体帖子的请求(GET/posts/42)时,我想检索帖子对象字段的完整列表,包括大帖子体,关于喜欢计数,评论计数的其他信息.我想存在很多解决这个问题的方法.在我看来,最明显的3个是:

  1. 在每个请求上明确指定字段lits(/ posts?fileds = subject,author_name和for/posts/42?fields = subject,body,createaAt,author_name,comments_count,likes_count等...).
  2. 仅当字段列表与默认字段列表不同时才明确指定字段列表.
  3. 如果所需字段设置与默认字段不同,请指定应从(设置)默认字段中排除(或包含)的字段列表.

我要为我的客户构建清晰有用的API.我应该选择哪种方式?

api rest restful-architecture

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

为什么TypeScript中的类允许使用duck typing

在TypeScript中看起来绝对没问题(从编译器的角度来看)有这样的代码:

class Vehicle {
    public run(): void { console.log('Vehicle.run'); }
}

class Task {
    public run(): void { console.log('Task.run'); }
}

function runTask(t: Task) {
    t.run();
}

runTask(new Task());
runTask(new Vehicle());
Run Code Online (Sandbox Code Playgroud)

但与此同时,我希望编译错误,因为VehicleTask没有任何共同点.

理智的用途可以通过明确的接口定义来实现:

interface Runnable {
    run(): void;
}

class Vehicle implements Runnable {
    public run(): void { console.log('Vehicle.run'); }
}

class Task implements Runnable {
    public run(): void { console.log('Task.run'); }
}

function runRunnable(r: Runnable) {
    r.run();
}

runRunnable(new Task());
runRunnable(new …
Run Code Online (Sandbox Code Playgroud)

javascript duck-typing interface class typescript

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

express.js(或类似)应用程序的异步初始化

考虑一个例子:我有以下express.js应用程序(请参阅下面的代码片段).我希望在整个应用程序生命周期中有一个与DB的持久连接,以及一个与我自己的服务的持久连接(需要异步调用才能启动).还有一些入口点,即不仅可以通过HTTP协议访问我的应用程序.当然,我想避免服务初始化代码重复,并且可能有几个这样的异步初始化服务.

/* app.js */
var app = require('express')();
// set views, use routes, etc.
var db = require('monk/mongoose/etc')(...); // happily, usually it's a sync operation
var myService = require('./myService');     // however, it's possible to have several such services
myService.init(function(err, result) {
    // only here an initialization process is finished!
});

module.exports.app = app;


/* http_server.js (www entry point) */
var app = require('app');
// create an HTTP server with this app and start listening


/* telnet_server.js (other entry …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous web-frameworks node.js express

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

在javascript中的构造函数概念

在我的一个问题中,我得到以下代码作为答案之一.我对语言的理解现在变得更好了,只有一个小问题.

var person = function() {
     this.firstName = "";
     this.lastName = "";
} 

person.prototype.showFullName = function () { 
     console.log(this.firstName + " " + this.lastName); 
} 

var perObj = new person();
perObj.firstName = "Penelope";
perObj.lastName = "Barrymore";
perObj.showFullName();
Run Code Online (Sandbox Code Playgroud)

考虑到对象,

var person = function() {
     this.firstName = "";
     this.lastName = "";
} 
Run Code Online (Sandbox Code Playgroud)

当我用这个对象来称呼时,

var perObj = new person();
Run Code Online (Sandbox Code Playgroud)

这类似于构造函数的东西吗?

一刻代码

var perObj = new person(); 
Run Code Online (Sandbox Code Playgroud)

被调用会自动执行以下两行吗?

 this.firstName = "";
 this.lastName = "";
Run Code Online (Sandbox Code Playgroud)

而且在我正在研究的一个博客中,如果文件名是Samplescript.js,如果函数是使用相同的名称编写的var Samplescript=function(){},那么这个函数会被视为构造函数吗?请澄清一下这个.

尽管理论上事情很清楚,但实际上我并没有得到任何关于构造函数的令人满意的答案,在这个例子中,它的编写方式有很多清晰的理解.

javascript javascript-events

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

Python相对导入有两个以上的点

可以使用在路径中引用两个以上点的模块吗?像这个例子:

# Project structure:
# sound
#     __init__.py
#     codecs
#         __init__.py
#     echo
#         __init__.py
#         nix
#             __init__.py
#             way1.py
#             way2.py

# way2.py source code
from .way1 import echo_way1
from ...codecs import cool_codec

# Do something with echo_way1 and cool_codec.
Run Code Online (Sandbox Code Playgroud)

UPD:更改了示例。我知道,这将在实践中起作用。但这是一种常见的导入方法吗?

python coding-style python-import python-3.4

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

JavaScript:原生forEach vs native forEach

我注意到,即使对于小型阵列,原生forEach有时也会发生得太慢.看看这个例子:

var a = [], b = []; 
a[1234567] = 'foo'; 
b[10] = 'bar'; 

a.forEach(function(arg1, arg2) { console.log(arg1, arg2); }); //1
//vs 
b.forEach(function(arg1, arg2) { console.log(arg1, arg2); }); //2
Run Code Online (Sandbox Code Playgroud)

在我的Chromium(25.0.1364.160 Ubuntu 12.04)中,第1行和第2行的执行时间是不同的数量级.我知道a的长度等于1234568,而b等于10 等等.但是原生的forEach实现是如此幼稚吗?既一个b是仅由一个元件构成.如何解释这种行为?

javascript performance foreach

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

Xdebug设置了多次cookie XDEBUG_SESSION

我使用PhpStorm,xdebug和nginx + php-fpm进行远程调试.当我传入XDEBUG_SESSION_START=my_ide_key请求GET参数时,Nginx使用502错误代码(Bad Gateway)进行调用.同时我在IDE中的代码断点工作正常.当我没有传递XDEBUG_SESSION_START参数nginx响应格式良好的HTML和代码200.但没有这个参数显然没有调试.

在nginx错误日志中,我看到有关从上游收到的大标头的通知.我尝试在php-fpm和nginx之间转储通信,只有一个不同的东西是一个Set-Cookie头:

Set-Cookie: XDEBUG_SESSION=666; expires=Mon, 16-Sep-2013 16:07:28 GMT; path=/
Run Code Online (Sandbox Code Playgroud)

我试着找到这个标题出现在响应中的时间.我发现在我的smarty插件Smarty_Internal_Template析构函数中(在我的启动脚本的最后一行代码行之后),如果我调用,headers_list()我会看到大量的Set-Cookie标头(相等的析构函数调用和Set-Cookie标头数量).我确信header('Set-Cookie: XDEBUG_SESSION=...')我的代码中没有一个显式调用.我尝试升级和降级xdebug版本但仍然具有相同的行为.放置代码remove_header('Set-Cookie')Smarty_Internal_Template解决了我的问题,不过这是丑陋的黑客!

有关这种奇怪情况的任何想法?

php xdebug nginx setcookie

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

在PhantomJS + GhostDriver + WebDriver客户端配置中为每个测试清除cookie

如何在我的PhantomJS + GhostDriver + Selenium WebDriver + WebDriver客户端系统中清除每个测试的cookie?

我的测试过程如下所示:

  1. 在hub角色中启动selenium-web-driver-standalone.
  2. 在webdriver模式下启动phantomjs并将其附加到selenium webdriver.
  3. 启动shell脚本,迭代测试套件并启动每个脚本.
  4. 每个测试使用webdriver客户端并与连接到selenium web驱动程序的浏览器进行通信.

当我使用firefox浏览器而不是phantomjs时,所有测试都通过了.但是当我切换到使用phantomjs作为浏览器时,所有检查注册失败的测试都因为cookie在第一次测试执行后已经设置.我可以在每次测试启动时清除所有cookie吗?或者我应该在每个单独的测试中重新启动phantomjs进程(因为这是使用firefox和selenium webdriver而不是hub角色)?

cookies automated-tests phantomjs selenium-webdriver

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

php中返回和回显的行为

我对该计划的运作方式感到困惑; 代码应该打印A, bB 但它正在显示bA,B

class SampleClass {
    public $a = "A";
    protected $b = array ("a" => "A", "b" => "B", "c" => "C");

    public function __get($v){
        echo "$v";
        return $this->b[$v];
    }
}

$m = new SampleClass();

echo $m->a . ", " . $m->b;
Run Code Online (Sandbox Code Playgroud)

php

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

CURLOPT_NOPROXY在PHP中不起作用

我的Ubuntu机器上的/ etc/environment中有http_proxy设置.我已将CURLOPT_NOPROXY定义为10177然后执行

$curl = curl_init('http://127.0.0.1:4444/wd/hub');
curl_setopt($curl, CURLOPT_NOPROXY, '127.0.0.1'); // or '*'
// ... set others params and options ...
curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)

但这不会影响我的脚本,我收到代理错误消息而不是WebDriver响应.同时使用curl --noproxy 127.0.0.1 http://127.0.0.1:4444/wd/hub从命令行效果很好.

其他环境信息:

curl --version
curl 7.22.0 (x86_64-pc-linux-gnu) 
libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 
libidn/1.23 librtmp/2.3 
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 
Run Code Online (Sandbox Code Playgroud)

PHP版本是5.3.10.

如何从我的PHP脚本中设置noproxy选项?

更新:看起来它应该在PHP中运行https://bugs.php.net/bug.php?id=53543.

php proxy curl

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