小编koj*_*iro的帖子

我应该如何处理Google Analytics中的跟踪片段页面视图?

我一直在搜索Google Analytics文档,但我仍然不明白如何跟踪使用ajax显示不同视图的单个"页面"网站的网页浏览量.我使用shebang URL和_escaped_fragment_来帮助搜索引擎了解网站布局,但我们的分析人员告诉我#!在跟踪时删除URL 的一部分,所以当你访问时mysite.com/#!/fish/bonker我们会运行:

_gaq.push(["_trackPageview", "/fish/bonker"]);
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎不对.我们不希望我们跟踪的网址与Google实际蜘蛛的内容一致吗?跟踪有什么问题_gaq.push(["_trackPageview", "#!/fish/bonker"]);吗?

javascript ajax google-analytics

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

Magento中不同的*get helper*方法有什么区别?

我已经看到了几种不同的方法来获得特定的helper,我希望有人可以解释每种方法的优缺点.例如,template/checkout/cart/sidebar/default.phtml你会看到两者$this->helper('checkout')Mage::helper('checkout').这两种方法在同一模板中有充分的理由吗?

以下是我在Magento找到帮手的所有不同方式:

abstract class Mage_Core_Block_Abstract extends Varien_Object
{
…
    /**
     * Return block helper
     *
     * @param string $type
     * @return Mage_Core_Block_Abstract
     */
    public function getHelper($type)
    {
        return $this->getLayout()->getBlockSingleton($type);
    }

    /**
     * Returns helper object
     *
     * @param string $name
     * @return Mage_Core_Block_Abstract
     */
    public function helper($name)
    {
        if ($this->getLayout()) {
            return $this->getLayout()->helper($name);
        }
        return Mage::helper($name);
    }
…
}

class Mage_Core_Model_Layout extends Varien_Simplexml_Config
{
…
    /**
     * Enter description here...
     *
     * …
Run Code Online (Sandbox Code Playgroud)

magento

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

自定义Magento管理员配置密码加密

我需要sftp服务器的密码作为我正在处理的Magento模块的配置字段.添加字段非常简单,但Magento实际上并没有因为它有一个frontend_type而加密该值password.

<sftp_password translate="label">
    <label>SFTP Password</label>
    <frontend_type>password</frontend_type>
    <sort_order>170</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</sftp_password>
Run Code Online (Sandbox Code Playgroud)

我无法找到有关如何正确加密此值的文档.如何在密码存储在数据库中时确保密码加密?

magento password-encryption

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

在 phpunit 中测试构造函数参数

我们用来Varien_Http_Client从 Magento 扩展发出 http 请求,如下所示:

public function callApi(…)
{
    <SNIP>

    // Set default factory adapter to socket in case curl isn't installed.
    $client = new Varien_Http_Client($apiUri, array(
        'adapter' => 'Zend_Http_Client_Adapter_Socket',
        'timeout' => $timeout, 
    ));
    $client->setRawData($xmlDoc->saveXML())->setEncType('text/xml');
    $response = $client->request($method);
    $results = '';
    if ($response->isSuccessful()) {
        $results = $response->getBody();
    }
    return $results;
}
Run Code Online (Sandbox Code Playgroud)

我知道我应该避免测试Varien_Http_Client;的内部结构。相反,我应该测试我们是否向它发送了正确的输入,并正确处理了它的输出。我可以Varien_Http_Client很容易地模拟,但即使我重构这段代码让我Varien_Http_Client用它的模拟替换,我也不明白如何一般*测试构造函数是用预期的参数调用的,因为构造函数是由PHPUnit::getMock.

我不需要模拟对象;我需要一个模拟。如何测试构造函数是否使用预期参数调用?

*(在这种情况下,我知道解决特定于 的这个问题的方法Varien_Http_Client,但是我可以用更不透明的第三方代码做什么?)

php phpunit mocking magento

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

抽象基类与鸭子类型

Python 具有针对容器类型的特定ABC。它说它们是,“……用于测试一个类是否提供了特定的接口。” (而且它们对某些 mixin 也很有用,但我们暂时先忽略它。)

我很难弄清楚为什么这些 ABC 中的一些真的很有用。也许我的问题只是文档中的例子太学术了,但使用这些例子:

# Verbatim
size = None
if isinstance(myvar, collections.abc.Sized):
    size = len(myvar)

# Is that so much better than
size = None
if hasattr(myvar, '__len__'):
    size = len(myvar)
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,您避免导入并且代码对我来说似乎更明确。你可以从它的名字中推断出 collections.abc.Sized 的含义,或者查找它,但它并不像“如果它有长度,就得到它的长度”那样明确。

集合类型测试的 abc 方法真的比显式hasattr测试更符合 Python 习惯吗?如果是,为什么?(不单纯比复杂好王牌明确优于隐含在这种情况下?)

python idioms duck-typing

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

如何将Python字符串中每个单词的第一个和最后一个字母大写?

我想编写一个python函数,以便将字符串中单词的第一个和最后一个字母大写。该字符串包含小写字母和空格。我正在考虑做类似的事情:

def capitalize(s):
     s.title()
     s[len(s) - 1].upper()
     return s
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。有什么建议么?

例如,字符串“i like cats”应变为“I LikeE CatS”

python

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

全局变量值未在 shell 脚本中的函数内部设置

我有两个 shell 脚本,如下所示:

tes=2
testfunction(){
    tes=3
    echo 5
}
testfunction
echo $tes 
Run Code Online (Sandbox Code Playgroud)

b.sh

tes=2
testfunction(){
    tes=3
    echo 5
}
val=$(testfunction)
echo $tes
echo $val
Run Code Online (Sandbox Code Playgroud)

在第一个脚本中,tes值是“3”,如预期,但在第二个脚本中,它是 2?

为什么它会这样?

$(funcall)创建一个新的子shell并执行该函数吗?如果是,如何解决这个问题?

bash shell

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

PHP在exec()bash脚本时挂起

我有一些看起来像这样的代码行...

exec($this->path.' start > /dev/null 2>&1 &');
return ['status' => 'Command executed'];
Run Code Online (Sandbox Code Playgroud)

$this->path是一个Shell脚本,start是该Shell脚本的一个参数,我相信该行的其余部分应该转储任何响应,以便php脚本可以继续运行。它无法正常运行,php成功启动了shell脚本(将启动游戏服务器),但是php一直挂起,直到我使用shell关闭服务器为止。当我使用外壳关闭服务器时,它完成了执行,并且收到了“命令已执行”响应。我还禁用了SELinux的执行,以确保它不会造成干扰。

运行Linux-Fedora 21和内置的PHP开发服务器。

php linux bash shell

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

如何将extras_require放入setup.cfg

setuptools 30.3.0引入了声明性包配置,使我们可以将以前直接传递给文件的大多数选项setuptools.setup放入setup.cfg文件中。例如,给出以下setup.cfg:

[metadata]
name = hello-world
description = Example of hello world

[options]
zip_safe = False
packages =
  hello_world
install_requires =
  examples
  example1
Run Code Online (Sandbox Code Playgroud)

仅包含一个setup.py

import setuptools
setuptools.setup()
Run Code Online (Sandbox Code Playgroud)

会做所有正确的事情。

但是,我无法找出的正确语法extras_require。在setupargs中,它是一个字典,例如

setup(extras_require={'test': ['faker', 'pytest']})
Run Code Online (Sandbox Code Playgroud)

但是我找不到在setup.cfg中使用的正确语法。我尝试阅读文档,但是找不到那里的setuptools期望的正确语法。我也尝试了一些猜测

[options]
extras_require =
  test=faker,pytest
Run Code Online (Sandbox Code Playgroud)

它失败。

Traceback (most recent call last):
  File "./setup.py", line 15, in <module>
    'pylint',
  File "/lib/site-packages/setuptools/__init__.py", line 128, in setup
    _install_setup_requires(attrs)
  File "/lib/site-packages/setuptools/__init__.py", line 121, in _install_setup_requires
    dist.parse_config_files(ignore_option_errors=True)
  File "/lib/python3.6/site-packages/setuptools/dist.py", line 495, in parse_config_files
    self._finalize_requires() …
Run Code Online (Sandbox Code Playgroud)

python declarative setuptools

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

如何使用环境变量建立 psycopg2 连接?

我对psycopg2 文档感到困惑,它说:

另请注意,可以使用环境变量将相同的参数传递给客户端库。

我希望如果我导出了环境变量以便我可以使用 进行连接psql,那么我应该能够使用 psycopg2 以相同的方式建立连接。但情况似乎并非如此。

例如,在容器中运行一个全新的 postgresql:

$ docker port frosty_lichterman 5432
0.0.0.0:32768
$ export PGHOST=localhost PGUSER=postgres PGPORT=32768
Run Code Online (Sandbox Code Playgroud)

我现在可以使用 psql 进行连接,而无需提供任何显式连接字符串:

$ psql -c 'select 1;'
 ?column?
----------
        1
(1 row)
Run Code Online (Sandbox Code Playgroud)

但在 python 中,我不能:

>>> import psycopg2 as p
>>> c = p.connect()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/michaels/.local/share/virtualenvs/Apps-XhIvHnVr/lib/python2.7/site-packages/psycopg2/__init__.py", line 127, in connect
    raise TypeError('missing dsn and no parameters')
TypeError: missing dsn and no parameters
Run Code Online (Sandbox Code Playgroud)

即使我可以使用 Python …

python postgresql psycopg2 libpq

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