为了支持大量自定义用户配置文件字段(例如用户名,位置,生日等),扩展基
auth_user表/整个auth系统的"正确"方法是什么?
我从谷歌搜索引起了一些方法,但似乎没有人给出一个直接的答案.答案似乎要么完全用auth_user自定义表替换基表(并让auth系统知道),要么创建一个带有外键引用的新扩展表回到基auth_user表.第一个似乎有可重用性问题,第二个似乎有形式等问题.
有没有人有任何指针可以修改像自定义用户配置文件一样普遍的东西而不会破坏太多?
编辑:更多的阅读建议覆盖基auth_user表是要走的路,经过一些试验和错误后,我发现它就像放入一段代码一样简单:
# before define_tables()
auth.settings.table_user = db.define_table('auth_user',
Field('email', length=128,label=T('Email'), default='', unique=True),
Field('user_name', length=128, label=T('User name'), default='', unique=True,
requires=IS_NOT_IN_DB(db, 'auth_user.user_name')
),
Field('password', 'password', readable=False, label=T('Password'),
requires=CRYPT()
),
Field('first_name', length=128, label=T('First name'), default='',
requires=(IS_NOT_EMPTY(error_message=auth.messages.is_empty),
IS_NOT_IN_DB(db, 'auth_user.first_name'))
),
Field('last_name', length=128, label=T('Last name'), default='',
requires=(IS_NOT_EMPTY(error_message=auth.messages.is_empty),
IS_NOT_IN_DB(db, 'auth_user.last_name'))
),
Field('registration_key', length=128, default='', writable=False, readable=False),
Field('country', 'string', length=15, label=T('Country'),
requires=IS_NULL_OR(IS_IN_SET(('England')))
),
)
Run Code Online (Sandbox Code Playgroud)
只要在models/db.py 之后auth = Auth(db)和之前执行auth.define_tables()它,这一切似乎都没问题.这些字段显示在用户个人资料页面上,其他所有内容仍然按预期工作.
不知道如何回答我自己的问题,所以在此期间,如果有人能解释为什么 …
我有一大堆现实世界的文字,我需要把文字拉出来输入拼写检查.我想在没有太多噪音的情况下尽可能多地提取有意义的单词.我知道这里有很多正则表达式的忍者,所以希望有人可以帮助我.
目前我正在提取所有字母序列'[a-z]+'.这是一个很好的近似值,但它会拖累掉很多垃圾.
理想情况下,我想要一些正则表达式(不一定非常有效),它提取由自然单词分隔符(如[/-_,.: ]等)分隔的所有字母序列,并忽略任何带有非法边界的字母序列.
然而,我也很高兴能够获得与数字不相邻的所有字母序列.所以例如'pie21'不会提取'pie',但'http://foo.com'会提取['http', 'foo', 'com'].
我试过lookahead并lookbehind断言,但它们是按字符应用的(例如re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21'),'pi'当我希望它不返回任何内容时会返回).我尝试将alpha部分包装为术语((?:[a-z]+)),但它没有帮助.
更多细节:数据是一个电子邮件数据库,所以它主要是简单的英语与正常的数字,但偶尔有垃圾串像GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA和AC7A21C0我想完全忽略.我假设任何按字母顺序排列的数字都是垃圾.
我有一个Spring Roo + Hibernate项目,该项目从客户端应用程序获取JTS着名文本(WKT)字符串输入,将其转换为JTS Geometry对象,然后尝试将其写入PostGIS数据库.我在JDBC连接和类型方面遇到了一些问题,但这些问题似乎已经解决了:
@Column(columnDefinition = "Geometry", nullable = true)
private Geometry centerPoint;
Run Code Online (Sandbox Code Playgroud)
转换确实:
Geometry geom = new WKTReader(new GeometryFactory(new PrecisionModel(), 4326)).read(source);
Run Code Online (Sandbox Code Playgroud)
但是现在当Hibernate尝试将我的Geometry对象写入数据库时,我收到一个错误:
2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - Batch entry 0 insert into land_use (center_point, version, id) values ('<stream of 1152 bytes>', '0', '1') was aborted. Call getNextException to see the cause.
2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: Invalid endian flag value encountered.
Run Code Online (Sandbox Code Playgroud)
很明显,该错误与二进制表示有关,二进制表示可能是作为具有某种字节顺序的众所周知的二进制(WKB)生成的.然而,随着Hibernate将所有持久性隐藏起来,我无法确定事情的发展方向.
几天来我一直在与这种几何学作斗争,关于这些错误的信息很少,所以有没有人有任何好主意?我可以在某处指定字节顺序(Hibernate或PostGIS),还是以不同的格式(WKT)存储?
编辑:我还应该提到我正在使用最新的一切,通常似乎是兼容的:
与上一个问题相关.我有一个使用Hibernate的Spring Roo应用程序,使用JTS将Geometry对象写入PostGIS数据库.我相信我已经修复了我在定义Geometry对象时遇到的问题,现在Hibernate正在执行它的persist()方法,但是在它遇到数据库之前就出现了问题,我在下面得到了例外.
这是一些有趣的线条.首先来自Hibernate日志,要保留的对象,然后是SQL查询(可能是?被替换):
...
DEBUG org.hibernate.pretty.Printer - com.test.LandUse{id=1, centerPoint=POINT (5 6), version=0}
...
DEBUG org.hibernate.SQL - insert into land_use (center_point, version, id) values (?, ?, ?)
...
Run Code Online (Sandbox Code Playgroud)
然后会发生更多事情,尽管没有什么明显的坏事.但是我没有看到任何"最终"SQL,并且尝试回滚事务.然后:
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$afterReturning$org_springframework_transaction_aspectj_AbstractTransactionAspect$3$2a73e96c(AbstractTransactionAspect.aj:78)
at com.test.LandUse_Roo_Jpa_ActiveRecord.ajc$interMethod$com_test_LandUse_Roo_Jpa_ActiveRecord$com_test_LandUse$persist(LandUse_Roo_Jpa_ActiveRecord.aj:44)
at com.test.LandUse.persist(LandUse.java:1)
at com.test.LandUse_Roo_Jpa_ActiveRecord.ajc$interMethodDispatch1$com_test_LandUse_Roo_Jpa_ActiveRecord$com_test_LandUse$persist(LandUse_Roo_Jpa_ActiveRecord.aj)
at com.test.LandUseController_Roo_Controller.ajc$interMethod$com_test_LandUseController_Roo_Controller$com_test_LandUseController$create(LandUseController_Roo_Controller.aj:29)
at com.test.LandUseController.create(LandUseController.java:1)
...
Caused by: javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:93)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:512)
... 54 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我们服务器的多个(大约6个)实例上进行Flyway迁移.每个都是使用Bamboo从Git自动构建和部署的,所以我真的希望能够使用flyway:migrateMaven目标,以便每个服务器在下次部署时自行迁移.
但是我现在只是尝试Flyway,所以现有的数据库都没有init.我想知道我是否有可能以某种方式在Maven中指定Flyway应该init是否已经,然后migrate每次?
该迁移文档表明,"迁徙路线将自动创建元数据表,如果它不存在",但在实际上flyway:migrate执行的目标,我得到的错误:
无法执行目标com.googlecode.flyway:flyway-maven-plugin:2.2:在项目mutopia-server上迁移(默认):Flyway错误:com.googlecode.flyway.core.api.FlywayException:发现非空模式"public "没有元数据表!首先使用init()初始化元数据表. - > [帮助1]
我有我正在写在ES2015并用巴别6. transpiling的ES2015源代码是在NPM包/src,分成模块/src/core,/src/commands等.因为它是一个CLI工具,所以入口点在/src/bin/app.js.如果我运行babel-node src/bin/app.js它按预期工作.
理想情况下,我想全局安装此工具(如grunt-cli),因此我将整个包转换为单个有效的JS(ES5)文件babel src -o /lib/app.js.但是,如果我尝试运行该文件,则会尝试从相对路径中请求模块时出现错误,并且无法找到这些模块,因为它们都已合并到app.js.错误是:
$ node_modules/babel-cli/bin/babel-node.js lib/app
module.js:328
throw err;
^
Error: Cannot find module '../commands/index'
at Function.Module._resolveFilename (module.js:326:15)
at Function.Module._load (module.js:277:25)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/usr/local/lib/node_modules/app/lib/app.js:19:14)
at Module._compile (module.js:398:26)
at Module._extensions..js (module.js:405:10)
at Object.require.extensions.(anonymous function) [as .js] (/Users/me/dev/app/node_modules/babel-register/lib/node.js:138:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
Run Code Online (Sandbox Code Playgroud)
我.babelrc只是:
{
"presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)
这应该工作,还是我需要更多配置Babel?备份计划是简单地将整个/src文件夹转换为/lib并发布所有内容,但单个文件会更好.
我的Flex应用程序中存在一些内存泄漏问题,我的问题的简短版本是:有没有办法(在AcitonScript 3中)查找给定对象的所有实时引用?
我所拥有的是一些视图背后的演示模型(使用Swiz).感兴趣的视图是TabNavigator的子视图,因此当我关闭选项卡时,视图将从舞台中删除.从阶段中删除视图时,Swiz会将视图中的模型引用设置为null,就像它应该的那样.我也从视图中删除了AllChildren().
但是,在分析应用程序时,当我执行此操作并运行GC时,视图和表示模型都不会被释放(尽管两者都将它们的引用设置为null).视图使用的一个模型对象(虽然不是演示者)已被释放,因此它并未完全被破坏.
我今天刚刚开始进行剖析(坚信不会过早地进行优化),所以我想有某种参考浮动在某处,但我看不到哪里,以及什么是超级有用的将是调试的能力并查看引用目标对象的对象列表.这一切都是可能的,如果不是原生的话,是否有一些轻量级的方法将其编码到未来的应用程序中以进行调试?
干杯.
我正在尝试通过Hibernate将Spring Roo与支持PostGIS的PostgreSQL数据库集成,遵循Hibernate Spatial教程.所有非GIS的东西都运行正常,我从PostGIS模板创建了一个DB.
问题是,只要我向其中一个实体添加Geometry属性:
@Type(type="org.hibernate.spatial.GeometryType")
private Point centerPoint;
Run Code Online (Sandbox Code Playgroud)
...它构建正常,但尝试在服务器上运行(实际上与数据库交互)会导致以下错误:
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 3000
at org.hibernate.dialect.TypeNames.get(TypeNames.java:77)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:100)
at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:298)
at org.hibernate.mapping.Column.getSqlType(Column.java:208)
at org.hibernate.mapping.Table.sqlCreateString(Table.java:418)
at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:1099)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:106)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:372)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
... 41 more
Run Code Online (Sandbox Code Playgroud)
Hibernate Spatial的依赖关系似乎表明postgis-jdbc 1.5.3是必需的,但1.5.3在任何Maven存储库中都不存在,我无法从源代码编译它.我尝试过1.5.2和1.3.3,两者都导致相同的3000错误.HS说1.5.3应该"提供",但是将依赖性设置为1.5.3并且<scope>provided</scope>也没有帮助.
这仅仅是需要JDBC的精确版本的情况,还是其他错误?
我的POM的相关摘录如下:
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>4.0-M1</version>
</dependency>
<dependency>
<groupId>org.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>1.5.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
来自persistence.xml:
<property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/>
Run Code Online (Sandbox Code Playgroud) 我编写了一个PHP脚本,它向搜索引擎发出请求,访问服务结果,从结果中提取一些细节,然后以更有用的形式打印它们.
这一切都运行良好,但我偶然发现的一点是,在等待数据流入时调用echo或print会导致输出也被流式传输.具体来说,有多页结果,所以我访问第一页,读入并重新打印内容,然后转到下一页,在等待下一页加载时,上一页的内容变为可见浏览器.
我不明白为什么这种情况发生得如此不一致.有时在移动到下一页之前将打印一页,有时更少,有时更多.然后,当我之后基本上做同样的事情(在每个结果指向的页面中读取)时,输出几乎不流动,每分钟左右重绘一次.
我正在使用file_get_contents($url)检索内容,并使用其中的函数echo来打印到目前为止已加载的内容.这种流式打印行为是否是浏览器的一项功能,与我在PHP中编写的内容无关?如果没有,怎样才能更好地控制?
我熟悉在bash中运行它们时管道和重定向各个进程的IO的能力.但是,有没有办法重定向stdio进行整个bash会话?
理想情况下,我想透明管所有stdout和stderr通过bash的衍生到的所有过程的tee复制到文件中显示给用户的打印输出.无论在该bash会话中运行什么进程,我都可以稍后返回并查看输出.
更理想的情况是,对于从stdin获取选项的简单交互式程序应该是这种情况,但对于像vim这样的高度交互式程序则不行.
到目前为止我发现的最好的是:每当用户打开一个新终端时,运行命令:
bash --login -i > >(tee ~/bash_$$.log) 2>&1
Run Code Online (Sandbox Code Playgroud)
这将立即开始在新的shell的交互式子shell,以及tee所有stdin和stderr一个新的父shell的PID命名的日志文件(以避免覆盖).
这有效,但vim未能开始Vim: Warning: Output is not to a terminal.有没有任何已知的解决方案,包括修补shell,这样做?
hibernate ×3
javascript ×2
maven ×2
postgis ×2
spring ×2
alphabetical ×1
apache-flex ×1
babeljs ×1
bash ×1
buffered ×1
cpu-word ×1
curly-braces ×1
dependencies ×1
echo ×1
endianness ×1
flash ×1
flyway ×1
geometry ×1
jdbc ×1
jsdoc ×1
jts ×1
node.js ×1
persistence ×1
php ×1
printing ×1
profile ×1
python ×1
reference ×1
regex ×1
rollback ×1
streaming ×1
swiz ×1
syntax ×1
web2py ×1