问题列表 - 第7766页

处理例外的设计 - 谷歌应用引擎

我正在谷歌应用引擎(webapp框架)上开发一个项目.我需要你的人来评估我如何处理异常.

我正在处理4种类型的例外:

  1. 编程异常
  2. 用户输入不好
  3. 网址不正确
  4. 查询字符串不正确

以下是我处理它们的方法:

  1. 我已经将webapp.requesthandler类子类化,并覆盖了handle_exceptions方法.每当发生异常时,我都会将用户带到友好的"我们很抱歉"页面,同时向管理员发送带有回溯的消息.

  2. 在客户端,我(将)使用js并在服务器端验证.除了根据编程逻辑验证输入(检查:现金输入是浮动类型?)和业务规则(检查:用户是否有足够的点来采取该行动?),我在这里(作为具有非网络经验的编码器) ,我还要检查恶意意图.我应该采取什么措施来对付恶意行为?

  3. 我有一个处理错误URL的catch-all URL.也就是说,我将用户带到一个自定义的"页面不存在"页面.我想在这里我没有任何问题.

  4. 错误的查询字符串可能会引发异常,如果留给他们自己.如果ID不存在,则该方法返回None(异常即将发生).如果参数不方便,代码会引发异常.在这里,我认为我必须提出404并将用户带到自定义"页面不存在"页面.我该怎么办?

你有什么看法?提前致谢..

python google-app-engine exception-handling web-applications

6
推荐指数
1
解决办法
1595
查看次数

Python Iterator帮助+ lxml

我有这个脚本 -

import lxml
from lxml.cssselect import CSSSelector
from lxml.etree import fromstring
from lxml.html import parse



website = parse('http://example.com').getroot()


selector = website.cssselect('.name')


for i in range(0,18): 
    print selector[i].text_content() 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,for循环在我预先设置的次数之后停止.我希望for循环只有在打印完所有内容后才会停止.

python lxml iterator for-loop

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

打印将从链接列表中删除该值

作为作业的一部分,我需要编写两个函数:

  1. 一个函数,它汇总了两个表示为链表的自然数
  2. 打印以相同方式表示的数字的函数.

由于某种原因,两个函数分别完美地工作,但是当我尝试在sum函数的结果上使用print函数时,它会在print函数的开头改变sum的值,并输出错误的值.当我使用printf在main中打印相同的值时,没有问题.我的代码详述如下.有任何想法吗?

void main() 
{
  int a[1] = { 1 },
    b[1] = { 2 };
  int * *pa, **pb;
  List lst1, lst2;
  List sum;

  pa = (int * *) malloc(sizeof(int * )); * pa = &a[0];
  pb = (int * *) malloc(sizeof(int * )); * pb = &b[0];
  lst1 = arrToList(pa, 1);
  lst2 = arrToList(pb, 1);
  addNumbers(lst1, lst2, &sum);
  //printf("%d\n",*(sum.head->dataPtr));
  printNumber(sum);
}

//a function that recieves a number represented ad a list and prints it
void printNumber(List …
Run Code Online (Sandbox Code Playgroud)

c traversal linked-list

0
推荐指数
1
解决办法
1585
查看次数

什么是|| 操作员呢?

Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
Run Code Online (Sandbox Code Playgroud)

什么是|| 在这种情况下呢?
将_4添加到Attacklab.wmd_env.buttons的数组中?

javascript operators

7
推荐指数
3
解决办法
2166
查看次数

在某个列的vim中更改背景颜色

我想通过改变背景颜色(或者只是一条线?)来突出显示vim中的包边/文本宽度.很多IDE都有这个.我嘲笑我在说什么:

有人知道这可以在macvim或gvim中完成吗?

vim macvim

21
推荐指数
2
解决办法
8439
查看次数

Eclipse:是否可以通过源代码"附件"编辑已知的Java源代码

我正在使用Eclipse 3.4.2来开发我的代码.作为我的项目定义的一部分,我引用了一个我附加了源代码的实用程序库.到目前为止,非常好 - 当我从库中调出类并且在调试时,我可以看到该源代码.

现在,我想对其中一个类进行更改,同时仍保留Eclipse Java编辑器的所有功能(特别是工具提示和快速修复等功能).当我查看源代码时,这些功能似乎有效(例如,我可以按CTRL + LClick方法名称),但它是只读的.另一方面,我可以显式打开源文件,这将允许我编辑它,但我失去了所有"智能"编辑功能.

我最近从IntelliJ切换到Eclipse,这是可能的,所以我希望它也在Eclipse中.请注意,虽然我可以简单地将代码作为项目包含在我的工作区中,但我真的不愿意.工作区已经很大了,我不想通过添加我很少会碰到的项目来进一步降低Eclipse的速度.

java eclipse jar

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

你是如何使用IronPython的?

我很想喝一些现代动态语言koolaid,所以我相信Michael Foord的博客和播客上的所有内容,我已经买了他的书(并阅读了一些内容),并且我添加了一个嵌入式IPy运行时大概现有的应用程序大约一年前(虽然这是为其他人,我自己并没有真正使用它).

现在我需要做一些相当简单的代码生成工作,我将在一些.net对象(自定义,C#-authored对象)上调用几个方法,创建一些字符串,编写一些文件等.

尝试这种经历让我觉得这个小男孩觉得他是唯一能看到皇帝没穿衣服的人.如果你正在使用IronPython,我真的很感激你知道如何处理它的以下几个方面:

  • 代码编辑 - 您是否在没有 Intellisense的情况下使用.NET框架?
  • 重构 - 我知道'重构'是关于解决与语言相关的繁忙工作,所以如果Python足够轻量级,那么我们就不需要了,但重命名这样的东西在我看来对迭代开发质量代码至关重要,无论语言.
  • 瘫痪的启动时间 - 解释语言应该是好的事情之一是缺乏编译时间导致快速交互式开发.不幸的是,我可以编译一个C#应用程序并启动它比IPy启动更快.
  • 交互式黑客攻击 - IPy控制台/ repl应该对此有好处,但是我还没有找到一种很好的方法来获取交互式到达的代码并将其保存到文件中 - 从控制台剪切和粘贴是公平的悲惨.并且控制台似乎保留了对您导入的.NET程序集的引用,因此如果您正在处理C#内容,则必须退出并重新启动它.在像LinqPad这样的东西上攻击C#似乎是一种更快更容易尝试的方法(并且具有适当的Intellisense).你使用控制台吗?
  • 调试 - 这里的故事是什么?我知道IPy团队中的某个人正在开发一个命令行业余爱好项目,但我只想说我不会立即被命令行调试器所吸引.我真的不需要来自小Python脚本的调试器,但是如果我将IPy用于脚本单元测试,我会这样做.
  • 单元测试 - 我可以看到动态语言对此很有用,但是有任何IDE测试运行器集成(如Resharper等).Foord书中有一章关于这一点,我承认我还没有正确阅读,但它确实似乎涉及从命令提示符驱动一个控制台模式测试运行器,这感觉是使用后的一大步像TestDriven.net或Resharper这样的集成测试运行器.

我真的很想相信这些东西,所以我仍然在假设我错过了一些东西.我真的想知道其他人是如何处理IPy的,特别是如果他们这样做的方式并不像我们只是失去了15年的工具开发价值.

更新:(2010年7月)这个问题看起来很陈旧,现在有两个官方的IronPython工具用于VSPyCharm,这两个工具都显示了许多承诺,当我写这个时它们都没有.感谢所有回答的人.对于那些没有使用自动重构工具而感到高兴的人,我是否可以建议您永远不要使用具有良好自动重构功能的IDE.在你拥有之后,你会想知道为什么你认为你对find-replace感到高兴,而你再也不想没有它了.如果不出意外,立即重命名标识符而不必担心替换错误的文本位的能力会改变您命名内容的整个方法.

ironpython

28
推荐指数
4
解决办法
8373
查看次数

具有所有类属性的构造函数或带有setter的默认构造函数?

以下是两种方法:

  • 具有所有类属性的构造函数

优点:我必须输入确切数量的参数类型,所以如果我发出错误,编译器会警告我(顺便说一下,有没有办法防止错误地在参数列表上切换两个Integer的问题?)

缺点:如果我有很多属性,那么实例化行可以变得非常长并且可以跨越两行或更多行

  • setter和默认的空构造函数

优点:我可以清楚地看到我正在设置的内容,所以如果我做错了什么我可以在输入时立即查明它(我不能在切换两个相同类型的变量时出现前一个错误)

缺点:具有大量属性的对象的实例化可能需要多行(不知道这是否真的是一个con),如果我忘记设置属性,编译器就不会说任何内容.

你会做什么以及为什么?你知道任何光模式(考虑到应该在每次实例化7个以上的属性时使用它)吗?我问这个是因为我倾向于不喜欢大型构造函数,我无法快速找出我正在寻找的变量的位置,另一方面我发现"set all properties"容易遗漏一些属性.

请随意在优缺点中论证我的假设,因为它们只是我的想法:)

更新 - 我发现的一个与此相关的问题:构建大的不可变对象,而不使用具有长参数列表的构造函数

java setter constructor

24
推荐指数
3
解决办法
5798
查看次数

C++/CLI终结器和操作符

在以下示例中,我得到:

error C2300: 'UnmanagedClass' : class does not have a finalizer called '!SmartPointer'
Run Code Online (Sandbox Code Playgroud)

如果我删除operator->,则此错误消失.有人可以解释为什么会这样吗?

// Unmanaged class.
class UnmanagedClass { };

public ref class SmartPointer {
public:
    SmartPointer(UnmanagedClass* u) : m_ptr(u) { }
    ~SmartPointer() { this->!SmartPointer(); }
    !SmartPointer() { delete m_ptr; }

    // This line triggers C2300.
    UnmanagedClass* operator->() { return m_ptr; }
};

int main() {
    SmartPointer^ s = gcnew SmartPointer(new UnmanagedClass);
}
Run Code Online (Sandbox Code Playgroud)

.net managed-c++ c++-cli

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

从NSDictionary实例化自定义类

我觉得这是一个愚蠢的问题,但无论如何我都会问...

我有一组NSDictionary对象,其键/值对对应于我创建的自定义类,调用它MyClass.有一种简单或"最佳实践"的方法让我基本上做MyClass * instance = [地图NSDictionary属性的事情MyClass ];吗?我有一种感觉,我需要做一些事情,NSCoding或者NSKeyedUnarchiver,而不是自己偶然发现,我认为那里的人可能能指出我正确的方向.

iphone collections objective-c nsdictionary

19
推荐指数
2
解决办法
9967
查看次数