小编Jon*_*Jon的帖子

pythonic是什么意思?

在许多网站上,我经常看到代码不是pythonic的评论,或者有更多的pythonic方法来实现相同的目标.

pythonic在这种情况下意味着什么?例如,为什么

while i < someValue:
   do_something(list[i])
   i += 1
Run Code Online (Sandbox Code Playgroud)

不是pythonic而是

for x in list:
   doSomething(x)
Run Code Online (Sandbox Code Playgroud)

是pythonic?

python

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

范围'session'对于当前线程不活动; IllegalStateException:未找到线程绑定请求

我有一个控制器,我希望每个会话都是唯一的.根据spring文档,实现有两个细节:

1.初始Web配置

为了在请求,会话和全局会话级别(Web范围的bean)支持bean的范围,在定义bean之前需要一些小的初始配置.

web.xml在文档中显示了以下内容:

<listener>
  <listener-class>
    org.springframework.web.context.request.RequestContextListener
  </listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

2. Scoped bean作为依赖项

如果要将(例如)HTTP请求作用域bean注入另一个bean,则必须注入AOP代理来代替作用域bean.

@Scope提供了proxyMode如下所示的bean注释:

@Controller
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class ReportBuilder implements Serializable {
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题

尽管有上述配置,但我得到以下异常:

org.springframework.beans.factory.BeanCreationException:创建名为'scopedTarget.reportBuilder'的bean时出错:当前线程的作用域'session'不活动; 考虑为这个bean定义一个范围代理,如果你想从一个单例引用它; 嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求.

更新1

下面是我的组件扫描.我有以下内容web.xml:

<context-param>
  <param-name>contextClass</param-name>
  <param-value>
    org.springframework.web.context.support.AnnotationConfigWebApplicationContext
  </param-value>
</context-param>

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>org.example.AppConfig</param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

以下内容AppConfig.java:

@Configuration
@EnableAsync
@EnableCaching
@ComponentScan("org.example")
@ImportResource("classpath:applicationContext.xml")
public class AppConfig implements AsyncConfigurer {
  ...
  ...
}
Run Code Online (Sandbox Code Playgroud)

更新2

我创建了一个可重现的测试用例.这是一个小得多的项目,因此存在差异,但会发生同样的错误.有相当多的文件,所以我上传它作为一个tar.gzmegafileupload.

spring wicket

54
推荐指数
5
解决办法
9万
查看次数

在python中验证yaml文档

XML的一个好处是能够针对XSD验证文档.YAML没有此功能,那么如何验证我打开的YAML文档是否符合我的应用程序所需的格式?

python validation yaml

53
推荐指数
8
解决办法
4万
查看次数

两个浮动动作按钮彼此相邻

材料设计文档中有一个Google地图示例,其中显示了两个彼此相邻的浮动操作按钮(实际上,一个在另一个之上).

在此输入图像描述

这是怎么做到的?我在协调器布局中有两个FAB,但它们最终相互叠加,因此您只能看到一个按钮.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Use ThemeOverlay to make the toolbar and tablayout text
             white -->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/abl_top"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    </android.support.design.widget.AppBarLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img_photo"
            android:layout_width="match_parent"
            android:layout_height="256dp"
            android:background="#C5C5C5"/>
        <EditText
            android:id="@+id/text_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/img_baby"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:hint="Name"
            android:drawableLeft="@drawable/ic_account"
            android:drawablePadding="20dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />
        <TextView
            android:id="@+id/text_dob"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/text_name"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:hint="Date of birth"
            android:drawableLeft="@drawable/ic_cake"
            android:drawablePadding="20dp"
            style="@android:style/Widget.Holo.Spinner"/>

    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@drawable/ic_camera"
        android:clickable="true"
        app:fabSize="mini"
        app:layout_anchor="@id/img_photo"
        app:layout_anchorGravity="bottom|right|end"/>

    <android.support.design.widget.FloatingActionButton …
Run Code Online (Sandbox Code Playgroud)

android material-design floating-action-button

48
推荐指数
7
解决办法
4万
查看次数

单元测试DLL中的非导出类

我们使用Visual Studio 2008开发C++应用程序,并使用Boost.Test进行单元测试.目前,我们有一个单独的解决方案,其中包含我们的单元测试.

我们在核心解决方案中的许多项目都会产生DLL.我们的测试覆盖范围有限,因为我们无法测试非导出类.

我有两个关于如何测试它们的想法:

  1. 出口一切
  2. 将测试放在DLL(相同的项目和解决方案)中,并使用Boost.Test的外部运行器

我不完全确定会有什么缺点.上面的数字1打破了模块级封装,数字2可能导致更大的DLL,除非可能只在某些配置中包含测试代码.

那么,上述方法有任何严重的缺点,还是你能想到其他解决方案?

c++ unit-testing boost-test visual-studio

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

我怎样才能在python中使用通用代码?

我目前正在维护自己的两个应用程序.它们共享一些共同的方面,因此,共享一些代码.到目前为止,我刚刚将模块从一个项目复制到另一个项目,但现在它已成为一个维护问题.我宁愿在两个项目之外的一个地方使用公共代码,它们都可以导入.然后,对公共代码的任何更改都将反映在两个项目中.

我的问题是:我该怎么做?我是否使用此代码创建了一个库?如果是这样,依赖项目如何使用库?我想一两件事,我在这里奋斗的是,通用的代码不给任何人真正有用的,或者至少,我不想让它支持的模块,其他人可以使用.

如果我的问题不明确,请告诉我.

python module

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

如何在EmberJS应用程序中启用CORS?

我有一个EmberJS应用程序,它使用ember-data通过REST API访问数据.REST API在同一台机器上运行,但在不同的端口上运行(尽管这可能适用于从另一个域提供的REST API.

当我转到URL时,localhost:4200/items我在Firefox控制台中收到以下错误:

内容安全策略:页面的设置阻止了在http:// localhost:7654/api/items("connect-src http:// localhost:4200 ws:// localhost:35729 ws://0.0)上加载资源. 0.0:35729 http://0.0.0.0:4200 ").

我试过安装ember-cli-cors但没有改变.我也在http://discuss.emberjs.com/t/ember-data-and-cors/3690尝试了解决方案,但这也没有用.那次讨论是从2013年开始的,所以这不是一个巨大的惊喜.

REST API是使用Flask和Flask-cors在python中编写的.使用网络选项卡,我可以看到正在发送请求,并且数据被发回,但错误仍然存​​在.正如预期的那样,标头在响应中Access-Control-Allow-Origin设置http://localhost:4200为.

应用程序/ router.js

import Ember from 'ember';
import config from './config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

export default Router.map(function() {
  this.route('items');
});
Run Code Online (Sandbox Code Playgroud)

应用程序/适配器/ application.js中

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api',
  host: 'http://localhost:7654',
});
Run Code Online (Sandbox Code Playgroud)

应用程序/路由/ items.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return …
Run Code Online (Sandbox Code Playgroud)

rest cors ember.js

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

使用sqlalchemy和elixir更新sqlite数据库模式

我创建了一个python应用程序,它使用elixir/sqlalchemy来存储数据.软件的第二个版本要求更新在先前版本中创建的任何文件,以便添加/删除表和列.

我的问题是:我怎样才能做到这一点?我知道sqlalchemy-migrate,但我必须说我发现它令人困惑.它没有提到现有数据会发生什么.此外,sqlite 减少了ALTER TABLE支持,因此如果我尝试删除列,将会迁移什么?有没有其他方法可以使用迁移?

python database sqlalchemy sqlalchemy-migrate python-elixir

11
推荐指数
2
解决办法
4429
查看次数

为django 1.5自定义用户模型子类化django-registration 1.0表单

django-registration 1.0现在支持django 1.5自定义用户模型.django-registration文档只有以下FAQ项目:

我正在使用Django 1.5和自定义用户模型; 我该如何工作?

尽管随django-registration提供的两个内置后端都假设是Django的默认User模型,但基本视图类是故意与用户模型无关的.简单地将它们子类化,并为您的自定义用户模型实现逻辑.

我不确定我需要继承哪些视图以及它们应该包含哪些视图.我也注意到ProfileManager在django-registration中仍假定一个单独的用户名字段.

在我的具体情况下,我删除了'用户名'字段,添加了'display_name',并将'email'作为识别字段:

class MyUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(
        verbose_name="Email Address",
        max_length=384,
        unique=True,
        db_index=True,)
    display_name = models.CharField(max_length=128, blank=True)
    date_joined = models.DateTimeField(default=timezone.now)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    objects = MyUserManager()

    USERNAME_FIELD = 'email'

    def get_full_name(self):
        return self.email

    def get_short_name(self):
        return self.email

    def __unicode__(self):
        return self.email

    def has_perm(self, perm, obj=None):
        return True

    def has_module_perms(self, app_label):
        return True

    @property
    def is_staff(self):
        return self.is_admin
Run Code Online (Sandbox Code Playgroud)

如果不对任何django-registration类进行子类化,则注册表单的默认呈现会从而User不是从中提取字段MyUser.

我见过以下SO线程django-registration app和Django 1.5自定义用户模型,但它没有帮助.

更新 …

django django-registration django-1.5

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

电子和续集错误:不支持方言sqlite

我正在尝试在桌面应用程序中使用sequelize和sqlite与电子,但在运行应用程序时运行npm start(运行node_modules/.bin/electron .)会出现以下错误:

未捕获的错误:不支持方言sqlite.(错误:请手动安装sqlite3包)

我已经安装了sequelize和sqlite npm install --save sequelize sqlite.当我直接运行模型文件时node models.js,一切正常:

$ node models.js
Executing (default): CREATE TABLE IF NOT EXISTS `Users` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `username` VARCHAR(255), `birthday` DATETIME, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);
Executing (default): PRAGMA INDEX_LIST(`Users`)
Executing (default): INSERT INTO `Users` (`id`,`username`,`birthday`,`updatedAt`,`createdAt`) VALUES (NULL,'janedoe','1980-07-19 22:00:00.000 +00:00','2015-09-06 11:18:52.412 +00:00','2015-09-06 11:18:52.412 +00:00');
{ id: 1,
  username: 'janedoe',
  birthday: Sun Jul 20 1980 00:00:00 GMT+0200 …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js electron

9
推荐指数
2
解决办法
7313
查看次数