在许多网站上,我经常看到代码不是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?
我有一个控制器,我希望每个会话都是唯一的.根据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.gz以megafileupload.
XML的一个好处是能够针对XSD验证文档.YAML没有此功能,那么如何验证我打开的YAML文档是否符合我的应用程序所需的格式?
材料设计文档中有一个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) 我们使用Visual Studio 2008开发C++应用程序,并使用Boost.Test进行单元测试.目前,我们有一个单独的解决方案,其中包含我们的单元测试.
我们在核心解决方案中的许多项目都会产生DLL.我们的测试覆盖范围有限,因为我们无法测试非导出类.
我有两个关于如何测试它们的想法:
我不完全确定会有什么缺点.上面的数字1打破了模块级封装,数字2可能导致更大的DLL,除非可能只在某些配置中包含测试代码.
那么,上述方法有任何严重的缺点,还是你能想到其他解决方案?
我目前正在维护自己的两个应用程序.它们共享一些共同的方面,因此,共享一些代码.到目前为止,我刚刚将模块从一个项目复制到另一个项目,但现在它已成为一个维护问题.我宁愿在两个项目之外的一个地方使用公共代码,它们都可以导入.然后,对公共代码的任何更改都将反映在两个项目中.
我的问题是:我该怎么做?我是否使用此代码创建了一个库?如果是这样,依赖项目如何使用库?我想一两件事,我在这里奋斗的是,通用的代码不给任何人真正有用的,或者至少,我不想让它支持的模块,其他人可以使用.
如果我的问题不明确,请告诉我.
我有一个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) 我创建了一个python应用程序,它使用elixir/sqlalchemy来存储数据.软件的第二个版本要求更新在先前版本中创建的任何文件,以便添加/删除表和列.
我的问题是:我怎样才能做到这一点?我知道sqlalchemy-migrate,但我必须说我发现它令人困惑.它没有提到现有数据会发生什么.此外,sqlite 减少了ALTER TABLE支持,因此如果我尝试删除列,将会迁移什么?有没有其他方法可以使用迁移?
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自定义用户模型,但它没有帮助.
更新 …
我正在尝试在桌面应用程序中使用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) python ×4
android ×1
boost-test ×1
c++ ×1
cors ×1
database ×1
django ×1
django-1.5 ×1
electron ×1
ember.js ×1
module ×1
node.js ×1
rest ×1
sequelize.js ×1
spring ×1
sqlalchemy ×1
unit-testing ×1
validation ×1
wicket ×1
yaml ×1