什么是(最快/最干净/直接)的方式将哈希中的所有键从字符串转换为符号?
解析YAML时这很方便.
my_hash = YAML.load_file('yml')
Run Code Online (Sandbox Code Playgroud)
我希望能够使用:
my_hash[:key]
Run Code Online (Sandbox Code Playgroud)
而不是:
my_hash['key']
Run Code Online (Sandbox Code Playgroud) 我有一个在$(document).ready()上执行的脚本,它应该在我的布局中垂直对齐块元素.90%的时间,它没有问题.然而,对于额外的10%,两件事之一发生:
进行定心所需的时间明显滞后,并且块元素跳入位置.这可能只是性能相关 - 因为页面大小通常很大,并且有大量的javascript一次执行.
中心将完全搞乱,并且块元素将向下推得太远或不够远.似乎它试图计算高度,但是测量结果不合适.
有没有理由为什么在DOM-ready上执行脚本会没有将所有正确的CSS值注入到DOM中?(所有CSS都在<head>via a中<link>).
此外,这是导致问题的脚本(是的,它是从这里直接采取的):
(function ($) {
// VERTICALLY ALIGN FUNCTION
$.fn.vAlign = function() {
return this.each(function(i) {
var ah = $(this).height();
var ph = $(this).parent().height();
var mh = (ph - ah) / 2;
$(this).css('margin-top', mh);
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在使用远程调试时xdebug没有在断点处停止时遇到问题(通过命令行运行脚本时一切正常).它将在程序的第一行中断,然后退出,而不是捕获任何断点.
它曾经工作正常,直到我切换到使用MacPorts for Apache和PHP.我已经尝试过多次重新编译(有几个版本),但没有骰子.
我正在使用PHP 5.3.1和Xdebug 2.1.0-beta3
我还尝试过至少3种不同的调试程序(MacGDBp,Netbeans和JetBrains Web IDE).
我的php.ini设置如下:
[xdebug]
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.idekey=webide
Run Code Online (Sandbox Code Playgroud)
当我记录调试器输出时,设置断点看起来像这样/;
<- breakpoint_set -i 895 -t line -f file:///Users/WM_imac/Sites/wm/debug_test.php -n 13 -s enabled
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="895" state="enabled" id="890660002"></response>
运行时,调试器将获取应用程序第一行的上下文,然后发送分离和停止消息.
但是,启动调试器时会输出此行.
<- feature_get -i 885 -n breakpoint_types
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="885" feature_name="breakpoint_types" supported="1"><![CDATA[line conditional call return exception]]></response>
"行条件调用返回异常"是否意味着什么?
有时在我的代码中,我会检查一个特定的对象是否实现了一个接口:
if ($instance instanceof Interface) {};
Run Code Online (Sandbox Code Playgroud)
但是,在PHPUnit中创建所述接口的模拟,我似乎无法通过该测试.
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
Run Code Online (Sandbox Code Playgroud)
我知道有一个名为Interface的类与实现Interface的类不同,但我不知道如何处理它.
我是否被迫模拟实现Interface的具体类?难道这不会破坏使用接口进行移植的目的吗?
谢谢
聘请前端开发人员时,您应该测试哪些具体技能和实践?什么是评估他们的HTML,CSS和Javascript技能的好指标?
显然,无表格语义HTML和纯CSS布局可能是关键技能.但具体技术呢?他/她是否应该毫不费力地模拟多列布局?CSS sprites?等高(或人造)柱?HTML标签选择是否重要(即过分依赖<div>)?他们应该能够解释(用语言)浮标是如何工作的吗?
那javascript技能怎么样?框架体验(jQuery,Prototype等)有多重要.今天?
显然,他们将要处理的职位和网站的详细信息是所需技能的最佳指示.但我想知道在为候选人创建测试时,人们可能会考虑哪些特定技能成为交易破坏者(或制造者).
我肯定错过了什么.我正在尝试在PHPUnit中的类上存根方法,但是当我在模拟对象上调用该方法时,它告诉我该方法是未定义的.
存根示例类:
namespace MyApp;
class MyStubClass
{
public function mrMethod()
{
// doing stuff
}
}
Run Code Online (Sandbox Code Playgroud)
为了存根,我写道:
// specifying all getMock() args to disable calling of class __construct()
$stub = $this->getMock('MyStubClass', array(), array(), 'MockMyStubClass', false, false, false);
$stub->expects($this->any())
->method('mrMethod')
->will($this->returnValue('doing stuff'));
Run Code Online (Sandbox Code Playgroud)
但是在调用stubbed方法时,我得到一个异常:
$stub->mrMethod();
//PHP Fatal error: Call to undefined method MockMyStubClass::mrMethod()
Run Code Online (Sandbox Code Playgroud)
我在PHP 5.3.0中使用PHPUnit 3.4.3.
我注意到的另一个小问题是,如果在getMock()方法中指定名称空间会导致类加载异常,因为双重名称空间:
$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error: Class 'MyApp\MyApp\MyStubClass' not found
Run Code Online (Sandbox Code Playgroud)
这让我觉得很奇怪(并且getmock()不会接受带有反斜杠的命名空间).我能想到的唯一原因可能是因为这个类是在自动加载器中注册的吗?
有什么想法吗?
我正在开发一个可以访问Web服务的应用程序.我想开发一个代理类,它返回来自服务的虚假响应,所以在我开发/测试应用程序的其他部分时,我不必经常遇到请求.
我的应用程序期望通过Net :: HTTP生成响应.
response = Net::HTTP.get(URI.parse('http://foo.com'))
case response
when Net::HTTPOK
# do something fun
when Net::HTTPUnauthorized
# you get the idea
Run Code Online (Sandbox Code Playgroud)
我怎样才能制作一个响应对象,给它所有正确的标题,返回一个正文字符串等?
response = ProxyClass.response_object
case response
when Net::HTTPOk
# my app doesn't know it's being lied to
Run Code Online (Sandbox Code Playgroud)
谢谢.
我目前正在开发一个适用于Twitter的应用程序,但在开发/测试时(特别是那些不太依赖真实Twitter数据的部分),我想避免经常访问API或发布垃圾推文.
人们使用一般策略来简化API(缓存除外)吗?我正在考虑滚动我自己的库,基本上拦截传出请求并返回模拟响应,但我想确保我没有遗漏任何明显的第一个.
如您所知,当Magic Quotes为ON时,单引号会在值和键中转义.大多数在运行时删除Magic Quotes的解决方案只能取消值,而不是键.我正在寻找一种能够解决关键和价值观的解决方案......
我在PHP.net上发现了这段代码:
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process))
{
foreach ($val as $k => $v)
{
unset($process[$key][$k]);
if (is_array($v))
{
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
}
else
{
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
Run Code Online (Sandbox Code Playgroud)
但是我不喜欢"&"引用和数组,因为我在过去遇到了像这样的 bug ...
有没有一种"更好"的方式在运行时使用魔术引号(键和值)而不是上面的方法?
jQuery选择器很精彩,但有时我会发现自己一遍又一遍地输入它们,这有点烦人.
$('#mybutton').click(function() {
$('#message-box').doSomething();
$('#message-box').doSomethingElse();
$('#message-box').attr('something', 'something');
});
Run Code Online (Sandbox Code Playgroud)
所以我经常喜欢在变量中缓存我的对象:
$('#mybutton').click(function() {
var msg = $('#message-box');
msg.doSomething();
msg.doSomethingElse();
// you get the idea
});
Run Code Online (Sandbox Code Playgroud)
这两种模式之间有任何利弊吗?有时感觉创建变量是额外的工作,但有时它会节省我的手指很多打字.是否有任何记忆问题需要注意?选择器在使用后是否可以很好地清理,而我糟糕的编码习惯往往会使存储器中的变量更长?
这不会让我夜不能寐,但我很好奇.谢谢.
编辑:请看这个问题.它基本上要求相同的东西,但我更喜欢答案.
php ×4
javascript ×3
css ×2
jquery ×2
mocking ×2
phpunit ×2
ruby ×2
unit-testing ×2
web-services ×2
debugging ×1
frontend ×1
hashmap ×1
html ×1
http ×1
magic-quotes ×1
performance ×1
twitter ×1
xdebug ×1