小编Max*_*Max的帖子

如何在Zend Framework中使用依赖注入?

目前我正在尝试学习Zend Framework,因此我买了"Zend Framework in Action"这本书.

在第3章中,介绍了基本模型和控制器以及它们的单元测试.基本控制器如下所示:

class IndexController extends Zend_Controller_Action 
{
    public function indexAction()
    {
        $this->view->title = 'Welcome';
        $placesFinder = new Places();
        $this->view->places = $placesFinder->fetchLatest();
    }
}
Run Code Online (Sandbox Code Playgroud)

Places是从数据库中获取最新位置的模型类.什么错误我在这里:我应该如何测试IndexController隔离?由于对Places类的引用是"硬编码",我无法注入任何存根或模拟IndexController.

我宁愿拥有的是这样的:

class IndexController extends Zend_Controller_Action 
{
    private $placesFinder;

    // Here I can inject anything: mock, stub, the real instance
    public function setPlacesFinder($places)
    {
        $this->placesFinder = $places;
    }

    public function indexAction()
    {
        $this->view->title = 'Welcome';
        $this->view->places = $this->placesFinder->fetchLatest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我发布的第一个代码示例绝对不是单元测试友好的,因为IndexController不能单独测试.第二个好多了.现在我只需要一些方法将模型实例注入控制器对象.

我知道Zend …

php dependency-injection zend-framework

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

Riak表现 - 意想不到的结果

在最后几天,我和riak玩了一下.我认为初始设置比较容易.现在我有一个3节点集群,所有节点都在同一个vm上运行,以便进行测试.

我承认,我的虚拟机的硬件设置非常降级(1个CPU,512 MB RAM),但我仍然对riak的缓慢性能感到非常惊讶.

地图减少

玩一点地图减少我在一个桶中有大约2000个对象,每个大约1k - 2k的大小为json.我使用了这个地图功能:

function(value, keyData, arg) {
    var data = Riak.mapValuesJson(value)[0];

    if (data.displayname.indexOf("max") !== -1) return [data];
    return [];
}
Run Code Online (Sandbox Code Playgroud)

仅执行http请求返回其结果花了2秒多,不计算我的客户端代码从json反序列化结果所花费的时间.删除3个节点中的2个似乎稍微将性能提升到略低于2秒,但这对我来说似乎仍然很慢.

这是预期的吗?对象的字节大小并不大,一个桶中的2000个对象也不是那么多.

插入

批量插入大约60,000个与上面相同大小的对象花了相当长的时间,实际上并没有真正起作用.

我在riak中插入对象的脚本在大约40.000左右死亡,并说它无法连接到riak节点.在riak日志中,我发现了一条错误消息,表明该节点内存耗尽而死亡.

这真是我在riak的第一枪,所以我肯定有机会搞砸了.

  • 我可以调整任何设置吗?
  • 硬件设置是否受到限制?
  • 也许我用来与riak交互的PHP客户端库是限制因素吗?
  • 在同一台物理计算机上运行所有节点是相当愚蠢的,但如果这是一个问题 - 我怎样才能更好地测试riak的性能
  • 地图减少真的那么慢吗?我读到了map reduce在riak邮件列表中的性能影响,但如果Map Reduce很慢,你应该如何对几乎实时所需的数据执行"查询"?我知道riak没有redis那么快.

如果有更多riak经验的人可以帮我解决其中的一些问题,那对我来说真的会有很大的帮助.

performance nosql riak

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

使用libcurl在PUT请求中发送字符串

我的代码看起来像这样:

curl = curl_easy_init();

if (curl) {
    headers = curl_slist_append(headers, client_id_header);
    headers = curl_slist_append(headers, "Content-Type: application/json");

    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
    curl_easy_setopt(curl, CURLOPT_URL, "127.0.0.1/test.php");  
    curl_easy_setopt(curl, CURLOPT_PUT, 1L);

    res = curl_easy_perform(curl);
    res = curl_easy_send(curl, json_struct, strlen(json_struct), &io_len);

    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);
}
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,该程序永远挂起.

在test.php中,这些是我得到的请求标头:

array(6) {
  ["Host"]=>
  string(9) "127.0.0.1"
  ["Accept"]=>
  string(3) "*/*"
  ["Transfer-Encoding"]=>
  string(7) "chunked"
  ["X-ClientId"]=>
  string(36) "php_..."
  ["Content-Type"]=>
  string(16) "application/json"
  ["Expect"]=>
  string(12) "100-continue"
}
Run Code Online (Sandbox Code Playgroud)

但是身体是空的,意味着没有与请求一起发送的json数据.

我想用libcurl做的事实上就是这些命令行脚本:

curl -X PUT -H "Content-Type: application/json" -d '... some json ...' 127.0.0.1/test.php
Run Code Online (Sandbox Code Playgroud)

c curl

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

使用SharpZipLib创建的ZIP文件无法在Mac OS X上打开

唉,今天是愚蠢问题的日子,我是个白痴.

我有一个应用程序,它创建一个zip文件,其中包含某个目录中的一些JPEG.我使用此代码以便:

  • 从目录中读取所有文件
  • 将它们中的每一个附加到ZIP文件中

using (var outStream = new FileStream("Out2.zip", FileMode.Create))
{
    using (var zipStream = new ZipOutputStream(outStream))
    {
        foreach (string pathname in pathnames)
        {
            byte[] buffer = File.ReadAllBytes(pathname);

            ZipEntry entry = new ZipEntry(Path.GetFileName(pathname));
            entry.DateTime = now;

            zipStream.PutNextEntry(entry);
            zipStream.Write(buffer, 0, buffer.Length);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都在Windows下运行良好,当我打开文件,例如使用WinRAR,文件被提取.但是当我尝试在Mac OS X上解压缩我的存档时,它只会创建一个.cpgz文件.相当无用.

.zip在Windows和Mac OS X上提取在Windows上使用相同文件手动创建的普通文件,没有任何问题.

我在互联网上找到了上面的代码,所以我不确定整件事情是否正确.我想知道是否需要使用zipStream.Write()才能直接写入流?

c# macos zip

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

使用C#访问Salesforce Webservice API

我之前没有使用过Salesforce API,所以我对如何连接到salesforce服务感到困惑.

到目前为止,我知道我必须为我的帐户生成一个wsdl文件,或者更确切地说是我客户的帐户(步骤1).到现在为止还挺好.

但是现在Quickstart(http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_quickstart_steps.htm)说了一些关于"将WSDL文件导入您的开发平台"的内容(步骤2).

如何将wsdl文件导入Visual Studio 2008?我找不到快速入门中提到的"添加Web引用"选项.

如果我只需要使用WSDL,可以从salesforce网站(http://wiki.developerforce.com/index.php/Salesforce_Dotnet_API)下载Salesforce Dotnet API包吗?

在开发使用salesforce API的应用程序时,是否有任何问题需要注意?

c# salesforce

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

使用httrack镜像单页

我正在尝试使用httrack(http://www.httrack.com/)来下载单个页面,而不是整个站点.因此,例如,当使用httrack下载www.google.com时,它应该只下载www.google.com下的html以及所有样式表,图片和javascript,而不是关注images.google.com的任何链接, labs.google.com或www.google.com/subdir/等

我尝试了这个-w选项,但没有任何区别.

什么是正确的命令?

编辑

我试过用httrack "http://www.google.com/" -O "./www.google.com" "http://www.google.com/" -v -s0 --depth=1但不会复制任何图像.

我基本上想要的只是下载该域的索引文件以及所有资产,而不是任何外部或内部链接的内容.

command-line http httrack

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

Facebook的自定义皮肤,如按钮

是否有(简单)方式来自定义通过fbml实现的facebook按钮的外观?

我很确定我在某个地方看到了这个,但我不记得在哪里,我无法找到任何关于此的文档.

facebook skinning fbml

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

如何将DateTime对象转换为YYMMDD格式?

嗯,可能是一个非常简单的问题,但我只是注意到我不知道如何将DateTime.Now转换为YYMMDD格式,所以例如今天(2009年11月5日)将是"091105".

我知道DateTime.Now.ToString()有重载你可以传入一个格式字符串,但我没有找到正确的格式,例如短年格式(09而不是2009).

c#

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

始终在冲突时使用合并分支的版本

目前我正在一个功能分支工作,很快将合并回主人.我最近尝试过这个并且有一些合并冲突,我必须手动修复.

那么,是否有可能告诉git始终使用合并分支中的版本以避免事先合并冲突?在这种情况下,我手动修复了冲突,但总是选择合并分支中的版本,这样可以省去一些繁琐的工作.

git merge-conflict-resolution

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

动态css的缓存头(通过PHP生成)

我的CSS文件实际上是一个PHP文件,它与内容类型一起提供,text/css以便我可以在该文件中使用PHP变量.style.php看起来像这样:

<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>

body { background:<?php print $bgColor; ?>; }
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但如果浏览器缓存动态创建的css文件,我有点担心.

在查看firebug中的请求时,我觉得style.php每次重新加载页面时浏览器都会重新加载.

我已经尝试添加这些缓存标头:

header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
Run Code Online (Sandbox Code Playgroud)

但没有运气.每次加载页面时仍会加载该文件.为了强制浏览器在一定时间内缓存文件,有哪些适当的标题?

css php caching header dynamic

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