小编Phi*_*oin的帖子

如何同步服务器端和客户端代码?

我在软件工程中一直在学习(和教学)的东西是代码重复是所有邪恶的根源.另一方面,我发现很难解释这个概念应该如何应用于Web应用程序的开发.

请允许我澄清一下......输入和数据验证可以是Web应用程序的重要组成部分.有时这种验证可能非常复杂.例如,我在拼图编辑器上工作,验证包括检查操作或移动是否有效.然后必须检查非平凡的规则.

当然,验证必须在服务器端完成,以确保存储数据的一致性和质量.但是,必须对客户端进行验证以确保顺畅的用户体验.

在大多数情况下,客户端和服务器端代码是用不同的语言编写的(即javascript/Python),因此验证代码必须编写两次.但是,根据我对GWT/Java(双方都是Java)的唯一体验,我发现可以重用大部分验证代码.这似乎使一切变得更容易:维护,重构,调试......

所以我的问题是:在客户端和服务器端语言不同的项目中,如何管理与代码重复相关的问题?

javascript gwt client-server

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

如何在python中增加堆栈大小

我有一个使用自定义DLL的python程序.由于堆栈溢出,此DLL崩溃.这种溢出不是由于递归函数变坏,而是由于使用alloca()在堆栈上进行大量分配.

我想增加堆栈大小以摆脱这个错误.有没有办法做到这一点?

python dll stack

8
推荐指数
3
解决办法
8211
查看次数

使GWT应用程序可被搜索引擎抓取

我想使用#!令牌使我的GWT应用程序可以抓取,如下所述:http: //code.google.com/web/ajaxcrawling/

有一个可在线使用的GWT示例应用程序,例如:http: //gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton

将以下静态网页提供给googlebot:http://gwt.google.com/samples/Showcase/Showcase.html?_ escaped_fragment_ = CWRadioButton

我希望我的GWT应用程序能够做类似的事情.简而言之,只要_escaped_fragment_在URL中找到参数,我就会提供不同的页面风格.

我应该修改什么才能让服务器提供其他东西(静态页面,或通过像HTML单元这样的无头浏览器动态生成的页面)?我猜它可能是web.xml文件,但我不确定.

(注意:我考虑过检查随GWT SDK提供的Showcase应用程序,但遗憾的是它似乎不支持提供静态文件,_escaped_fragment_并且它不使用#!令牌..)

gwt servlets

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

如何声明具有多个具有非平凡关系的泛型类型的成员?

以下是我想在我的java代码中编写的内容:

private <A extends Action<R>, R extends Result> MyType<A,R> member;
Run Code Online (Sandbox Code Playgroud)

然而,这是无效的语法.所以我最终写作:

private MyType<? extends Action<? extends Result>, ? extends Result> member;
Run Code Online (Sandbox Code Playgroud)

但是这忽略了两个派生的类Result都相同的事实.我的类方法都强制执行这种关系,因此我可以确定MyType强制执行它,但member在某些情况下我仍然需要进行不安全的类型转换.

更多细节

这是我想要做的精确版本,虽然它更加危险:

我希望我能做到:

private <A extends Action<R>, R extends Result> 
    Map< Class<A>, ActionHandler<A,R> > handlers;
Run Code Online (Sandbox Code Playgroud)

相反,我必须这样做:

private Map< Class< ? extends Action<? extends Result> >, 
             ActionHandler<? extends Action<? extends Result>, 
                           ? extends Result> > handlers;
Run Code Online (Sandbox Code Playgroud)

我的方法强制执行所需的关系,看起来像这样:

public <A extends Action<R>, R extends Result> void addHandler( 
    ActionHandler<A, R> handler ) {
  handlers.put( handler.getActionType(), handler ); …
Run Code Online (Sandbox Code Playgroud)

java generics

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

在Python中,成语"来自Module import ClassName"是典型的吗?

由于我更喜欢​​小文件,我通常会为每个Python模块放置一个"公共"类.我将模块命名为与其包含的类相同的名称.因此,例如,ToolSet将在中定义类ToolSet.py.

在一个包中,如果另一个模块需要实例化ToolSet类的对象,我使用:

from ToolSet import ToolSet
...
toolSet = ToolSet()
Run Code Online (Sandbox Code Playgroud)

代替:

import ToolSet
...
toolSet = ToolSet.ToolSet()
Run Code Online (Sandbox Code Playgroud)

我这样做是为了减少"口吃"(我更喜欢在文件顶部比在我的代码中口吃.)

这是一个正确的习语吗?

这是一个相关的问题.在一个软件包中,我经常会有一些我希望向外界展示的课程.这些我在__init__.pyfor package中导入.例如,如果ToolSet在包中UI并且我想要公开它,我会将以下内容放入UI/__init__.py:

from ToolSet import ToolSet
Run Code Online (Sandbox Code Playgroud)

所以,从外部模块我可以写

import UI
...
toolSet = UI.ToolSet()
Run Code Online (Sandbox Code Playgroud)

再次,这是pythonic?

python import

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

标签 统计

gwt ×2

python ×2

client-server ×1

dll ×1

generics ×1

import ×1

java ×1

javascript ×1

servlets ×1

stack ×1