Python的约定是变量是通过第一次赋值创建的,并且在分配一个变量之前尝试读取它们的值会引发异常.相比之下,PHP在读取时会隐式创建一个变量,并带有空值.这意味着在PHP中很容易做到这一点:
function mymodule_important_calculation() {
$result = /* ... long and complex calculation ... */;
return $resukt;
}
Run Code Online (Sandbox Code Playgroud)
此函数始终返回null,如果null是functuion的有效值,则bug可能会在一段时间内未被检测到.Python等价物会抱怨变量resukt
在分配之前被使用.
那么......有没有办法将PHP配置为更严格的变量赋值?
我有一个带有DIV
s的网页,其中包含一个mouseover
用于显示弹出信息泡泡的处理程序.我不希望一次看到多个信息泡泡.但是当用户将鼠标快速移动到两个项目上时,我有时会得到两个气泡.这不应该发生,因为显示弹出窗口的代码会取消之前的弹出窗口.
如果这是一个多线程系统,那么问题就很明显了:有两个线程试图显示一个弹出窗口,它们都会取消现有的弹出窗口,然后弹出自己的弹出窗口.但我认为JavaScript总是运行单线程,这会阻止这一点.我错了吗?事件处理程序是异步运行的,在这种情况下我需要同步访问共享数据,还是应该在库代码中查找用于取消弹出窗口的错误?
编辑添加:
SimileAjax.DOM.cancelEvent(domEvt)
,我假设根据名称取消事件的冒泡;moustout
显示弹出窗口取消,这是为了防止弹出窗口烦人地闪烁但是烦人地产生相反的效果.我还有另一个戳,看看我是否可以解决我出错的地方.:-)
我有一个数据阅读器.我想价值在它与值42进行比较,我知道这是一个完整的类型(例如,什么MySQL调用INT
,TINYINT
,SMALLINT
,MEDIUMINT
,BIGINT
,JUMBODELUXEINT
,等).我不想将实际类型硬连接到C#代码.我想出的最好的是
object x = reader.GetValue(i);
uint k = x is byte ? (byte) x
: x is short ? (uint) (short) x
: x is ushort ? (ushort) x
: x is int ? (int) (int) x
: (uint) x;
if (k == 42) { ... }
Run Code Online (Sandbox Code Playgroud)
这似乎令人难以置信的啰嗦.我尝试使用Equals
但具有相同值的不同整数类型似乎不会测试相等.
有没有更好的办法?
我的Django项目使用django_compressor通过doto-storages包通过boto将JavaScript和CSS文件存储在S3存储桶中.
与django-storages相关的配置包括
if 'AWS_STORAGE_BUCKET_NAME' in os.environ:
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
AWS_HEADERS = {
'Cache-Control': 'max-age=100000',
'x-amz-acl': 'public-read',
}
AWS_QUERYSTRING_AUTH = False
# This causes images to be stored in Amazon S3
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
# This causes CSS and other static files to be served from S3 as well.
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_ROOT = ''
STATIC_URL = 'https://{0}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME)
# This causes conpressed CSS and JavaScript to also go in S3
COMPRESS_STORAGE = STATICFILES_STORAGE
COMPRESS_URL = STATIC_URL
Run Code Online (Sandbox Code Playgroud)
这样做除了当我访问S3管理控制台中的对象时,我看到Cache-Control
标题中的等号已更改为%3D
,如此 …