小编Ham*_*ish的帖子

确定最大可能的DIV高度

是否有推荐的方法来确定DIV可以设置的最大高度并保持每个浏览器可见?这似乎没有在任何地方记录,并且具有高度特定的实现.

例如,请参阅以下测试脚本:

http://jsfiddle.net/NP5Pa/2/

这是一个简单的测试,可以找到在clientHeight元素对应的元素变为0 之前可以设置DIV样式高度属性的最大值.您可以通过单击"查找最大值"然后将找到的高度增加1并单击"设置高度"来确认这一点. .

一些例子(Win7/64):

Chrome (14.0) :    134,217,726 px
Safari (5.1)  :    134,217,726 px
IE (9.0)      :     10,737,418 px
FF (7.0.1)    :     17,895,697 px
Run Code Online (Sandbox Code Playgroud)

我猜想,WebKit会产生相同的结果并不奇怪 - 更令人惊讶的是,IE和FF是如此不同.

有没有更好的办法?你在32位系统中获得了不同的结果吗?

--EDIT:更新了小提琴,停在10,000,000,000(并快速到达)Opera.这是很多像素.

javascript css browser dom cross-browser

39
推荐指数
1
解决办法
5783
查看次数

有条件地分配PHP值

对于基于表达式结果为变量赋值的常见情况,我是三元运算符的粉丝:

$foo = $bar ? $a : b;
Run Code Online (Sandbox Code Playgroud)

但是,如果$ bar是一个相对昂贵的操作,并且如果结果是真的,我想将$ bar的结果赋给$ foo,这是低效的:

$foo = SomeClass::bigQuery() ? SomeClass::bigQuery() : new EmptySet();
Run Code Online (Sandbox Code Playgroud)

一种选择是:

$foo = ($result = SomeClass::bigQuery()) ? $result : new EmptySet();
Run Code Online (Sandbox Code Playgroud)

但我宁愿没有额外$result的记忆.

我得到的最好选择是:

$foo = ($foo = SomeClass::bigQuery()) ? $foo : new EmptySet();
Run Code Online (Sandbox Code Playgroud)

或者,没有三元运算符:

if(!$foo = SomeClass::bigQuery()) $foo = new EmptySet();
Run Code Online (Sandbox Code Playgroud)

或者,如果程序流操作符不是您的风格:

($foo = SomeClass::bigQuery()) || ($foo = new EmptySet());
Run Code Online (Sandbox Code Playgroud)

这么多选择,非他们真的令人满意.你会使用哪种,我错过了一些非常明显的东西?

php ternary-operator

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

Dict/Set解析顺序一致性

采用可清洗对象(如dict键或set项目)的容器.因此,字典只能有一个带有值的键1,1.0或者True等等.(注意:有些简化 - 允许哈希冲突,但这些值被认为是相等的)

我的问题是:解析顺序是否定义良好,是否可以跨实现预测结果对象?例如,OSX Python 2.7.11和3.5.1解释dict如下:

>>> { True: 'a', 1: 'b', 1.0: 'c', (1+0j): 'd' }
{True: 'd'}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,似乎保留了第一个键和最后一个值.

类似,在以下情况下set:

>>> { True, 1, 1.0, (1+0j) }
set([(1+0j)])
Run Code Online (Sandbox Code Playgroud)

这里似乎保留了最后一项.

但(如评论中所述):

>>> set([True, 1, 1.0])
set([True])
Run Code Online (Sandbox Code Playgroud)

现在保留了iterable中的第一个.

文档指出项目的顺序(例如in dict.items)是未定义的,但我的问题是指构造 dictset对象的结果.

python dictionary set python-internals

18
推荐指数
1
解决办法
292
查看次数

在不引用Closure内部类的情况下测试PHP Closure

匿名函数PHP手册(即Closures)声明:

目前使用Closure类实现匿名函数.这是一个实现细节,不应该依赖.

(重点是我自己的)

是否可以测试一个变量,这样只有当变量是一个Closure 而且没有引用Closure类时,测试才返回true ?

换句话说,我怎样才能重写以下内容,除非$bar是匿名函数,否则会引发错误:

function foo(Closure $bar) {
    $bar();
}

编辑:根据收到的答案,这是一个示例测试.

笔记:

  1. 似乎没有办法区分Functors和Closures,并且测试可能与使用Closure类的"特定于实现"一样.
  2. (看似很明显的)ReflectionFunction::isClosure()方法似乎几乎没用:当你完成所需的检查以确保ReflectionFunction可以实际实例化(除了Closure之外不能使用Class)时,你已经全部淘汰了其他选择.
  3. 在5.3.0中你的ReflectionClass($ closure) - > hasMethod('__ invoke')返回false,所以这可以用作对Functors的测试,但是(我被告知)这已经改变了.这也凸显了解决方案的脆弱性.
  4. Gordon开始跟进- 从PHP 5.4开始,你可以依赖Closure成为一个闭包:php.net/manual/en/class.closure.php

码:

/**
 * Return true if and only if the passed argument is a Closure.
 */
function testClosure($a) {
    // Must be Callback, Labmda, Functor or Closure:
    if(!is_callable($a)) return false;

    // Elminate Callbacks & Lambdas
    if(!is_object($a)) return false;

    // Eliminate Functors …
Run Code Online (Sandbox Code Playgroud)

php closures

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

"添加新"到django模型中的外键字段

我对此很陌生,如果我不清楚,我道歉......

运行django,带有bootstrap,我一直在摆弄django-bootstrap.BootstrapModelForm非常酷,我的示例中没有包含django-bootstrap的东西,但我应该注意.

我有模特:

class spam(models.Model):
   name = models.CharField()

class Eggs(models.Model):
   spam = models.ForiegnKey('spam')
Run Code Online (Sandbox Code Playgroud)

我使用了一个模型,比如:

class EggsForm(forms.ModelForm):
   meta:
      model=Eggs
Run Code Online (Sandbox Code Playgroud)

EggsForm允许选择哪些垃圾邮件将被鸡蛋引用.我注意到管理界面有一个很酷的方式来选择或添加另一个鸡蛋.

如何在我的创建表单中获得类似的功能?

django django-forms

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

将SVN repo(svnsync)与编码错误同步

在同步存储库时,是否可以修复/绕过非UTF8编码的svn:log记录svnsync

背景

我正在接管一个开源模块的维护过程,该模块存储在一个大型(超过10,000个版本)的subversion(1.5.5)存储库中.我没有远程存储库的管理员权限来转储/过滤/加载模块.旧存储库正在停止,我正在尝试使用svnsync将原始子模块同步到我的本地(1.6+)存储库.例如:

svnsync file://home/svn/temp-repo/ http://path.to.repo/modulename/
Run Code Online (Sandbox Code Playgroud)

问题是旧的存储库没有强制执行UTF8编码,我遇到的错误如下:

svnsync: Cannot accept 'svn:log' property because it is not encoded in UTF-8
Run Code Online (Sandbox Code Playgroud)

我无法修改源存储库中的log属性,因此当编码未知/无效时,我需要以某种方式修改或忽略属性值.

有任何想法吗?

例如:

  • pre-revprop-change脚本可以修改传输中的日志属性吗?
  • 我被告知git-svn可以处理它但使用中间git repo - 这究竟是如何完成的?
  • 可以完全忽略日志属性,还是可以忽略特定的修订

svn utf-8 svnsync

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

函数使用print进行迭代但不返回

Python新手在这里,运行2.7.

我正在尝试创建一个程序,该程序使用函数生成文本,然后将函数生成的文本输出到文件.

当只在powershell中打印函数时(如:http://codepad.org/KftHaO6x),它会迭代,因为我希望它:

def writecode (q, a, b, c):
    while b < q:
        b = b + 1
        print "v%d_%d_%d = pairwise (caps[%d],sals[%d],poss[%d],poss[%d],poss[%d],pos_range)" %(a,b,c,a,a,a,b,c)
        print "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
        print "v%d_%d_%d = pairwise (caps[%d],sals[%d],poss[%d],poss[%d],poss[%d],pos_range)" %(a,c,b,a,a,a,c,b)
        print "votes%d_%d.append(v%d_%d_%d)" % (c,b,a,c,b)

writecode (5,1,0,4)
Run Code Online (Sandbox Code Playgroud)

当尝试将函数输出到文件中时(例如:http://codepad.org/8GJpp9QY),它只给出1个值,即不迭代:

def writecode (q, a, b, c):
    while b < q:
        b = b + 1
        data_to_write = "v%d_%d_%d = pairwise (caps[%d],sals[%d],poss[%d],poss[%d],poss[%d],pos_range)" %(a,b,c,a,a,a,b,c)
        data_to_write_two = "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
        data_to_write_three = "v%d_%d_%d = …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python - __eq__方法未被调用

我有一组对象,并且有兴趣从集合中获取特定对象.经过一番研究,我决定使用这里提供的解决方案:http: //code.activestate.com/recipes/499299/

问题是它似乎没有起作用.

我有两个类定义如下:

class Foo(object):
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c
    def __key(self):
        return (self.a, self.b, self.c)
    def __eq__(self, other):
        return self.__key() == other.__key()
    def __hash__(self):
        return hash(self.__key())

class Bar(Foo):
    def __init__(self, a, b, c, d, e):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
Run Code Online (Sandbox Code Playgroud)

注意:这两个类的相等性只应在属性a,b,c上定义.

该包装_CaptureEqhttp://code.activestate.com/recipes/499299/还定义了自己的__eq__方法.问题是这种方法永远不会被调用(我认为).考虑,

bar_1 = Bar(1,2,3,4,5)
bar_2 = Bar(1,2,3,10,11)
summary = set((bar_1,)) …
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
1
解决办法
2535
查看次数

调试Closure-compiler编译的Javascript

我有一个复杂的dojo应用程序,可以正常编译,但在使用Google的Closure Compiler进行编译后,我在某些行为方面会有细微差别.

实际上,它非常难以调试,而且我一直无法找到有关使用Google Closure编译和未编译的Javascript之间可能的功能差异的任何信息.

任何人都可以指出我已知的差异的方向,或分享任何类似的经验和从哪里开始寻找的一些想法?

javascript dojo google-closure-compiler

4
推荐指数
1
解决办法
844
查看次数

迭代生成器和列表之间的速度差异

在下面的简单示例中,有两个函数可以对随机数列表进行排序.第一种方法传递sorted生成器表达式,第二种方法首先创建一个列表:

import random
l = [int(1000*random.random()) for i in xrange(10*6)]

def sort_with_generator():
    return sorted(a for a in l)

def sort_with_list():
    return sorted([a for a in l])
Run Code Online (Sandbox Code Playgroud)

使用行分析器进行基准测试表明第二个选项(sort_with_list)的速度大约是生成器表达式的两倍.

任何人都可以解释发生了什么,为什么第一种方法比第二种方法慢得多?

python performance generator

4
推荐指数
1
解决办法
816
查看次数

MYSQL从5个相同的值中仅选择1个

我想从5中得到一个相同的值,让我们说5个记录在某些列中具有相同的值.

我怎么只得到一个而不是5?

php mysql duplicates

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

Python:使用代码编写代码 - 适合初学者

我现在遇到的问题是在Pygame中加载一堆声音文件作为自己的对象.您使用以下语法加载声音:

sound1 = pygame.mixer.Sound('file.wav')
Run Code Online (Sandbox Code Playgroud)

假设我有七个文件,我希望它们加载并命名为sound1 - sound7.而且我不想单独加载它们.如果我不知道它有缺陷,我会尝试这样的事情:

for i in range(1, 8):
    new = 'sound' + str(i)
    new = pygame.mixer.Sound(str(new) + 'wav')
Run Code Online (Sandbox Code Playgroud)

我将如何制作'new'它自己的变量,而不是字符串?我读过有关getattr的内容,但令人困惑.我真的想知道如何使用函数和循环来动态创建代码,但到目前为止,我找不到像我这样的初学者有用的东西.以此为例,是否有人愿意以简单的方式解释在代码中创建代码并将字符串转换为可用变量/对象的方法?

谢谢!

python pygame getattr

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

如何在javascript中读取json?

你能告诉我如何在javascript中阅读json吗?

我有一个json字符串如下

 {"person":{"First name":"Dharmalingm","Last name":"Arumugam","Address":{"door number":"123","street":"sample street","city":"sample_city"},"phone number":{"mobile":"0123","landline":"01234","skype":"01235"}}}
Run Code Online (Sandbox Code Playgroud)

我想阅读Skype电话号码

javascript php json

0
推荐指数
2
解决办法
274
查看次数