您可以在 php 中开始上传文件之前运行一些脚本吗?例如,我发布到upload.php,在那个文件中,我想先检查他们的$_SESSION,然后再开始浪费带宽并将文件统计信息上传到我的服务器。我在 nginx 上使用 php 5.2.11。
<?php
if ($_SESSION['admin'] == 'YES') {
// do upload here
} else {
exit;
}
?>
Run Code Online (Sandbox Code Playgroud) 我可以通过几种不同的方式初始化复杂对象(注入依赖项和注入成员所需的设置),看起来都很合理,但各有利弊.我举一个具体的例子:
final class MyClass {
private final Dependency dependency;
@Inject public MyClass(Dependency dependency) {
this.dependency = dependency;
dependency.addHandler(new Handler() {
@Override void handle(int foo) { MyClass.this.doSomething(foo); }
});
doSomething(0);
}
private void doSomething(int foo) { dependency.doSomethingElse(foo+1); }
}
Run Code Online (Sandbox Code Playgroud)
如您所见,构造函数执行了3项操作,包括调用实例方法.我被告知从构造函数中调用实例方法是不安全的,因为它绕过了编译器对未初始化成员的检查.即我可以doSomething(0)在设置之前调用this.dependency,这将编译但不起作用.重构这个的最佳方法是什么?
make doSomethingstatic并明确传入依赖项?在我的实际情况中,我有三个实例方法和三个成员字段都相互依赖,所以这似乎是很多额外的样板,使所有这三个静态.
移动addHandler并doSomething进入@Inject public void init()方法.虽然使用Guice是透明的,但它需要任何手动构造才能确保调用init(),否则如果有人忘记,对象将无法完全发挥作用.此外,这暴露了更多的API,这两者似乎都是坏主意.
包装嵌套类以保持依赖关系以确保其行为正常而不暴露其他API:
class DependencyManager {
private final Dependency dependency;
public DependecyManager(Dependency dependency) { ... }
public doSomething(int foo) { ... }
}
@Inject …我正在尝试加速C++中的目录枚举,我正在递归到子目录.我目前有一个应用程序花费95%的时间在FindFirst/FindNextFile API中,并且需要几分钟来枚举给定卷上的所有文件.我知道有可能更快地做到这一点,因为有一个应用程序可以做到:一切.它可以在几秒钟内枚举我的整个驱动器.
我怎么能做到这样的事情?
如何访问受以下因素影响的行数:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'")
Run Code Online (Sandbox Code Playgroud) WPF ComboBox在开始遭受严重性能降级之前可以放入的最大项目数是多少?(假设是简单的XP商务级计算机.)
在典型用户开始抱怨之前,您可以在WPF ComboBox中放入的最大项目数是多少?
这是我将代码中的文件从源复制到目标的代码.使用下面的代码我只能复制文件而不能复制文件夹.关于如何复制文件夹和这些文件夹中的文件的任何想法?
using (SPSite objSite = new SPSite(URL))
{
using (SPWeb objWeb = objSite.OpenWeb())
{
SPList objSourceList = null;
SPList objDestinationList = null;
try
{
objSourceList = objWeb.Lists["Source"];
}
catch(Exception ex)
{
Console.WriteLine("Error opening source list");
Console.WriteLine(ex.Message);
}
try
{
objDestinationList = objWeb.Lists["Destination"];
}
catch (Exception ex)
{
Console.WriteLine("Error opening destination list");
Console.WriteLine(ex.Message);
}
string ItemURL = string.Empty;
if (objSourceList != null && objDestinationList != null)
{
foreach (SPListItem objSourceItem in objSourceList.Items)
{
ItemURL = string.Format(@"{0}/Destination/{1}", objDestinationList.ParentWeb.Url, objSourceItem.Name);
objSourceItem.CopyTo(ItemURL);
objSourceItem.UnlinkFromCopySource();
} …Run Code Online (Sandbox Code Playgroud) 我有一个紧急的错误,我明天要跟踪.我知道之前的hg版本很好,所以我正在考虑使用hg bisect.
但是,我在Windows上并不想进入DOS脚本.
理想情况下,我可以编写Python单元测试并使用hg bisect.这是我的第一次尝试.
bisector.py
#!/usr/bin/env python
import sys
import unittest
class TestCase(unittest.TestCase):
def test(self):
#raise Exception('Exception for testing.')
#self.fail("Failure for testing.")
pass
def main():
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestCase)
result = unittest.TestResult()
suite.run(result)
if result.errors:
# Skip the revision
return 125
if result.wasSuccessful():
return 0
else:
return 1
if '__main__' == __name__:
sys.exit(main())
Run Code Online (Sandbox Code Playgroud)
也许我可以跑:
hg bisect --reset
hg bisect --bad
hg bisect --good -r 1
hg bisect --command=bisector.py
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?谢谢你的建议.
我很好奇在版本化文件提交注释中应该是什么类型的内容.它应该通常描述更改的内容(例如"窗口小部件屏幕已更改为仅显示活动窗口小部件")或者应该更具体(例如"在fetchWidget查询的where子句中添加了一个新条件,以便仅默认检索活动窗口小部件")
一次提交的原子性如何?只是在单个提交中包含更新的查询的文件(例如"更新小部件屏幕以默认仅显示活动小部件"),或者应该和屏幕上的其他几个更改+界面更改共享相同的提交以及更一般的描述喜欢("更新小部件屏幕:A")默认情况下仅显示活动小部件B)添加按钮以切换显示非活动小部件")
我看到subversion提交注释的使用方式非常不同,并且想知道其他人的成功与否.有些评论与"更新文件"一样简短,而其他评论的篇幅很长,其他评论的格式可以查询,并与某些外部系统(如JIRA)相关联.
我曾经非常描述变化的原因以及具体的技术变化.最近我一直在缩减,只是给了一个概括"这是我在这个页面上改变了"的评论.
我有一个ListBox我想要的WPF
ListBox和中启用多项选择这两个要求似乎不相容.我的视图模型有一个ObservableCollection<T>绑定到此ListBox 的属性; 我在XAML中设置了从属性到ListBox.SelectedItems属性的绑定.当我编译时,我得到一个错误,说该SelectedItems属性是只读的,无法从XAML设置.
我绑定到错误的控制属性?有没有办法将XAML中的多选ListBox绑定到视图模型集合属性?谢谢你的帮助.
为什么运行此代码会出现语法错误?如果我删除突出显示的部分(返回卡[i]),我会收到错误,突出显示函数调用.
请帮忙 :)
def dealcards():
for i in range(len(cards)):
cards[i] = ''
for j in range(8):
cards[i] = cards[i].append(random.randint(0,9)
return cards[i]
print (dealcards())
Run Code Online (Sandbox Code Playgroud)