我一直在搜索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"]);
吗?
我已经看到了几种不同的方法来获得特定的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) 我需要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)
我无法找到有关如何正确加密此值的文档.如何在密码存储在数据库中时确保密码加密?
我们用来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
,但是我可以用更不透明的第三方代码做什么?)
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函数,以便将字符串中单词的第一个和最后一个字母大写。该字符串包含小写字母和空格。我正在考虑做类似的事情:
def capitalize(s):
s.title()
s[len(s) - 1].upper()
return s
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。有什么建议么?
例如,字符串“i like cats”应变为“I LikeE CatS”
我有两个 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并执行该函数吗?如果是,如何解决这个问题?
我有一些看起来像这样的代码行...
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开发服务器。
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
。在setup
args中,它是一个字典,例如
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) 我对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 ×4
magento ×3
bash ×2
php ×2
shell ×2
ajax ×1
declarative ×1
duck-typing ×1
idioms ×1
javascript ×1
libpq ×1
linux ×1
mocking ×1
phpunit ×1
postgresql ×1
psycopg2 ×1
setuptools ×1