小编Ing*_*her的帖子

JavaEE6 DAO:应该是@Stateless还是@ApplicationScoped?

我目前正在创建一个EJB3数据访问类来处理我的Java EE 6应用程序中的所有数据库操作.现在,由于Java EE 6提供了新的ApplicationScoped注释,我想知道我的EJB应该具有什么状态,或者它应该是无状态的.

让DAO成为@Stateless会话Bean或@ApplicationScopedBean 会更好吗?怎么样@Singleton?这些与DAO相关的选项有何不同?

编辑: 我正在使用Glassfish 3.0.1与完整的Java EE 6平台

java ejb java-ee java-ee-6 ejb-3.1

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

完整的代码示例演示了所有PEP-8规则

我希望我的代码符合PEP-8标准.
但是,每次忘记任何规则时阅读PEP8页面都非常耗时.如果我有一个代码示例,它会更快地演示所有 PEP-8规则.

是否有任何代码示例正是这样做的?

python pep8

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

如何计算Python中除了注释和文档字符串之外的代码行?

我想尽可能准确地计算多文件Python项目中的代码行,但不要在总计中包含注释,文档字符串或空行.

我首先尝试使用cloc,它可以作为Debian软件包使用.但是cloc将大多数文档字符串视为代码 - 即使它们是注释.(更新:不再 - 最近版本的cloc现在将Python文档字符串视为注释.)

我注意到下面的一些注释说文档字符串应该包含在总数中,因为它们可能被代码用来影响运行时的行为,因此算作程序代码/ data/config的一部分.一个突出的例子是'ply',它要求你用docstrings编写函数,我记得这些函数包含语法和正则表达式,这些都是程序操作的核心.然而,在我看来这是一个非常罕见的例外.大多数时候,文档字符串就像评论一样.具体来说,我知道对于我想要测量的所有代码都是如此.所以我想从我的行数中排除它们.

python lines-of-code

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

多级Bash完成

我目前有一个Bash完成文件,它从一个允许的脚本命令列表(称为"pbt")中完成一个参数.这是工作Bash完成文件:

_pbt_complete()
{
  local cur goals

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  goals='asadmin clean deploy'
  cur=`echo $cur`
  COMPREPLY=($(compgen -W "${goals}" ${cur}))
}

complete -F _pbt_complete pbt
Run Code Online (Sandbox Code Playgroud)

所以,如果我打电话

pbt <tab>
Run Code Online (Sandbox Code Playgroud)

Bash完成所有允许的命令(asadmin,clean,deploy),这没关系.

现在我想在完成时添加"第二"级别.所以例如,如果我输入

pbt asadmin <tab>
Run Code Online (Sandbox Code Playgroud)

它应该完成所有只在asadmin-"环境"中可用的选项(我也将在bash完成文件中定义),例如,pbt asadmin [start-domain|stop-domain]但是如果我输入

pbt deploy <tab>
Run Code Online (Sandbox Code Playgroud)

例如,它应该完成另一组选项pbt deploy [all|current].因此第二个命令的选项应始终取决于第一个命令.我怎么能在完成文件中这样做?

bash bash-completion

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

在没有xrandr的情况下获取Python中每个显示的显示计数和分辨率

我正在运行Ubuntu,我想获得附加显示器的数量,它们当前的分辨率,如果可能的话,我们想要相互之间的位置.因为我不喜欢解析xrandr的控制台输出 - 至少不是我不需要 - 我想用Python-XLib或类似的Pythonic方法来做.

这是我的显示配置的xrandr输出:

$ xrandr
Screen 0: minimum 320 x 200, current 2960 x 1050, maximum 8192 x 8192
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
   1680x1050      60.0*+
   1400x1050      60.0  
   1280x1024      75.0     60.0  
   1440x900       59.9  
   1280x960       75.0     60.0  
   1152x864       75.0  
   1280x720       75.0  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  
VGA-0 connected 1280x1024+1680+26 (normal left inverted …
Run Code Online (Sandbox Code Playgroud)

python xlib

14
推荐指数
2
解决办法
9381
查看次数

Django - 覆盖保存方法时检查旧值和新值之间的差异

谢谢你的时间.

我在Django 1.4上,我有以下代码:它是我的Quest模型的重写保存方法.

@commit_on_success
def save(self, *args, **kwargs):
    from ib.quest.models.quest_status_update import QuestStatusUpdate
    created = not self.pk

    if not created:
        quest = Quest.objects.get(pk=self)
        # CHECK FOR SOME OLD VALUE
    super(Quest, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我找不到这样做的聪明方法.对于我正在更新的对象进行新查询以找出旧的实例值,对我来说似乎非常愚蠢.

有一个更好的方法吗?

谢谢你们.

弗朗西斯科

django orm django-signals django-models

13
推荐指数
2
解决办法
7823
查看次数

使用Python脚本包装在Bash-Shell中输入的所有命令

我想要的是一种机制,我在Bash-Terminal上输入的所有命令都由Python脚本包装.Python脚本执行输入的命令,但它增加了一些额外的魔法(例如设置"动态"环境变量).这有可能吗?

我正在运行Ubuntu和Debian Squeezy.

补充说明:

我有一个动态更改的属性文件(某些脚本会随时更改它).我需要该文件中的属性作为所有shell脚本中的环境变量.当然我可以从shell以某种方式解析属性文件,但我更喜欢使用面向对象的样式(尤其是写入),因为它可以用Python(和ConfigObject)完成.

因此,我想用Python脚本包装所有脚本(无需自己修改脚本),这些脚本处理这些属性到所有Shell脚本.这是我目前的用例,但我可以想象,我会发现其他情况,我可以在以后扩展我的包装.

python linux bash

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

Django Rest Framework - 基于模型的API视图中的每个方法单独的序列化程序类

假设我有一个简单的Django REST Framework视图,它扩展了多个模型类,并为一个URL端点中的所有方法提供服务:

class UserAPIView(RetrieveAPIView, DestroyAPIView, BaseObjectAPIView):
    permission_classes = (IsAuthenticated, )
    serializer_class = UserSerializer

    def get_serializer_class(self, *args, **kwargs):
        # return different serializer depending on method??            
        # return UserUpdateSerializer
        return UserViewSerializer

    def get(self, request, *args, **kwargs):
        """
        Retrieve user details
        """
        # ...
        return Response(data={'result': "OK"}, status=200)

    def delete(self, request, pk):
        """
        Delete user
        """
        # ...
        return Response(data={'result': "OK"}, status=200)

    def put(self, request, pk):
        """
        Change user
        """
        # ...        
        return Response(data={'result': "OK"}, status=200)
Run Code Online (Sandbox Code Playgroud)

现在我需要为每个方法使用不同的序列化器,因为我的get-method将使用与put-method不同的字段,例如序列化器:

class UserViewSerializer(serializers.ModelSerializer):
    firstname = serializers.Field(source='firstname') …
Run Code Online (Sandbox Code Playgroud)

django-rest-framework

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

如何在Gunicorn上制作Django

我的内存泄漏很难在测试环境中重现.因此,我想在一段有限的时间内剖析我的生产服务器,以便了解哪些对象占用了大部分内存.由于使用了greenlets,似乎并不容易描述Gunicorn.

我在跑:

  • Python 2.7.3
  • Gunicorn 18.0
  • Django 1.6

这是我的Gunicorn配置:

CONFIG = {
    'environment': {
        'DJANGO_SETTINGS_MODULE': 'myapp.settings',
    },
    'user': 'myapp',
    'group': 'myapp',
    'args': (
        '--bind=127.0.0.1:8088',
        '--workers=8',
        '--worker-class=socketio.sgunicorn.GeventSocketIOWorker',
        '--timeout=300',
        '--error-logfile=/var/log/gunicorn/myapp-error.log',
        '--max-requests=100',
        '--log-level=debug',
        'myapp.wsgi:application',
    ),
}
Run Code Online (Sandbox Code Playgroud)

什么是与Gunicorn一起运行Django时进行内存分析的最佳方法?

django profiling gevent gunicorn

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

无需使用部署描述符即可动态添加Java EE安全角色

我正在使用Glassfish 3.1,B06开发Java EE 6应用程序.为了保护我的应用程序,我正在使用JDBCRealm和编程安全性.这可以很好地检查用户名和密码.但是当谈到声明安全角色时,我遇到了一个问题:

要在Java EE 6中使用安全角色,我必须在EJB部署描述符和Glassfish特定的部署描述符中声明这些角色以链接这些角色(如Java EE 6教程中所述)仅我可以使用方法isCallerInRole(String roleRef)在EJB内部检查权限.

这对我的应用程序来说是不可取的,因为我希望能够动态地和以编程方式添加安全角色,而不必编写XML文件(例如,可以在数据库中定义角色名称).

我刚刚通过GF3源代码进行了调试,并在com.sun.ejb.containers.EjbContextImpl中看到了isCallerInRole的实现.容器从EJB描述符中获取角色:

public boolean isCallerInRole(String roleRef) {
  (...)
  EjbDescriptor ejbd = container.getEjbDescriptor();
  RoleReference rr = ejbd.getRoleReferenceByName(roleRef);
  (...)
}
Run Code Online (Sandbox Code Playgroud)

我环顾四周,发现如果我能以某种方式在我的应用程序中获取EJB描述符,我可以添加这样的角色:

EjbDescriptor ejbd = //??? Can i use that descriptor inside my app, or is that "forbidden"?
RoleReference rr = new RoleReference("admin", "Admins are allowed to do everything");
ejbd.addRoleReference(rr);
Run Code Online (Sandbox Code Playgroud)

有人做过这样的事情,还是对此有所了解?是否可以在我的应用程序中使用Ejb部署描述符?还是有更好的方法?

PS或我应该使用MBeans添加角色?在这里找到一个相关的帖子.

ejb glassfish java-ee ejb-3.1 glassfish-3

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