我暴露了我的背景:
我有两个在独特的Weblogic Server上运行的Java程序:程序A和程序B.这些程序由两个ksh启动:
programA.ksh和programB.ksh
两者都需要C.jar但是在不同的版本中(但具有完全相同的包和类):
我确切地说两个程序共享相同的weblogic类路径.
所以,我的classpath按顺序包含:
.....
C-1.0.jar
C-2.0.jar
.....
我怎么能这样做,每个程序找到它的好库?
例如,根据我的实际配置,程序B将始终使用C-1.0.jar而不是C-2.0.jar,因为类路径上的优先级位置.
我使用Spring配置的Hibernate(通过JPA),当我启动我的应用程序(在Tomcat 6上部署war)时,我收到此错误:
org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为我将hibernate方言设置如下:
p:databasePlatform="org.hibernate.dialect.MySQL5Dialect
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅我的完整applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost/room_management" p:username="root" p:password=""/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource" p:persistenceUnitName="RoomManagement">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:database="MYSQL"
p:databasePlatform="org.hibernate.dialect.MySQL5Dialect"
p:showSql="true"/>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
<context:annotation-config/>
<context:component-scan base-package="com.parisdescartes.roommanagement.*"/>
<tx:annotation-driven/>
</beans>
Run Code Online (Sandbox Code Playgroud)
所以,我决定在META-INF/persistence.xml文件中精确地使用Hibernate Dialect,这次是有效的.在这里我如何精确它:
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
Run Code Online (Sandbox Code Playgroud)
你知道为什么没有使用Spring配置设置Hibernate Dialect吗?
必须翻译泛型类型或方法(使用任何语言,而不仅仅是Java)的编译器原则上有两种选择:
代码专业化.编译器为泛型类型或方法的每个实例化生成新表示.例如,编译器将生成整数列表的代码以及字符串列表的附加,不同代码,日期列表,缓冲区列表等.
代码共享.编译器仅为泛型类型或方法的一个表示生成代码,并将泛型类型或方法的所有实例映射到唯一表示,执行类型检查并在需要时键入转换.
Java使用代码共享方法.我相信C#遵循代码专门化方法,所以下面的所有代码都是根据我使用C#的逻辑.
假设这个Java代码片段:
public class Test {
public static void main(String[] args) {
Test t = new Test();
String[] newArray = t.toArray(new String[4]);
}
@SuppressWarnings("unchecked")
public <T> T[] toArray(T[] a) {
//5 as static size for the sample...
return (T[]) Arrays.copyOf(a, 5, a.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
代码共享方法将在类型擦除发生后导致此代码:
public class Test {
public static void main(String[] args) {
Test t = new Test();
//Notice the cast added by the compiler here
String[] newArray = …Run Code Online (Sandbox Code Playgroud) 我拥有一个Play 2.1应用程序.
最初,我使用了Play 2.1中的默认模板机制,直到我...学习了AngularJS.
现在,我显然希望我的客户端成为AngularJS应用程序.
然而,在网上冲浪时,我发现没有明确的方法来实现它:
让Play表现为一个简单的RESTful应用程序(删除view文件夹)并创建一个完全不同的项目来构建视图(由grunt.js初始化的AngularJS应用程序).
优势:可能不那么混乱,前端和后端团队可以轻松地分开工作.缺点:AngularJS应用需要另一个HTTP服务器.
尝试将AngularJS应用程序与传统的Play工作流程完全集成.
缺点:使用像AngularJS这样非常复杂的框架,会导致模板管理混淆,例如:scala.html(适用于Play)/ tpl.html(适用于Angular)... =>凌乱.
在播放项目中创建自定义文件夹,但与Play脚手架创建的初始文件夹不同.我们称之为myangularview传统view,而不是传统.然后,将grunt.js生成的静态内容发布到Play的public文件夹中,以便通过Play的路由从浏览器访问.
优点:组件之间的SRP仍然得到了相当的尊重,并且不需要像1中那样为客户端使用另一个轻型HTTP服务器.
我指出了自己对优势和劣势的看法.
什么是实现Play与Angular结合的好方法?
architecture rest playframework-2.0 angularjs playframework-2.1
我拥有一个混合应用程序,其主要语言是Javascript(AngularJs)等。
基本上,我有一个旨在通过我的 REST api (在不同的服务器上)创建对象的表单。
我的save函数在概念上是这样的:
$scope.save = function () {
var promise = CRUDService.post($scope.myElementToPost);
promise.then(function (response) {
//when 20X status
}, function () {
//when 40X - 50X status
});
};
Run Code Online (Sandbox Code Playgroud)
让我们假设触发该save函数,并且在POST请求之后,移动设备立即失去互联网连接,导致客户端出现错误,因此涉及错误回调。
在这种“例外”情况下,该元素将在服务器的数据库上很好地创建,但不会触发 javascript 成功回调,因为互联网连接丢失会导致“错误”。
此案如何处理?
如何避免用户重新提交表单(他会不知道服务器端第一次创建元素)?
Bob克隆了该项目,并A从创建一个本地分支master。
鲍勃(Bob)添加了一些有用的帮助程序类,其中包括清理/重构单元测试设置,并清理所有现有测试。
Bob提交,推送到远程服务器,然后创建拉取请求,以便从John获得有关此重构的代码审查。
负责该项目的John忙了一个星期,因此无法立即进行审查。
在要求进行代码审查之后,Bob希望编写一些全新的测试文件和一组类,并以另一个单独的请求请求结束,因为它被视为正在使用一项新功能。
显然,鲍勃想使用他的新助手来处理这些测试文件。
采用哪种策略:
对于那些新的单元测试,鲍勃应该创建一个B来源于分支master,而不是A因为A还没有任何评价。缺点是他还不能使用单元测试助手,因为它不存在B。
Bob应该等待第一个请求的代码审查,合并到master,然后B从派生master。在这段时间里,他应该专注于其他不依赖于先前的拉取请求的作品。
鲍勃应该B从A这些帮助者那里派生并使用这些帮助者,冒着A在审核后不被接受的风险。显然导致拒绝B。
约翰应该摇摇晃晃的屁股,并作为一个好的领导者,应该在短时间内审查第一个拉动请求,以便鲍勃可以串连。
处理一系列多个请求之间的依赖关系的良好做法是什么?
git version-control github branching-and-merging pull-request
在Martin Odersky的"Scala编程"一书中,它解释了为什么scalac看起来很慢的原因(第114页):
原因是每次编译器启动时,它都会花时间扫描jar文件的内容并进行其他初始工作,甚至在查看您提交给它的新源文件之前.
每次编译开始时扫描jar文件的编译好处是什么?实际上,如果大多数开发人员使用FSC(快速Scala编译器)来避免这种默认行为,为什么scala的作者没有删除这些扫描?
为什么javac表现不一样?
我在Heroku上的app slug大小表示222 MB.相当巨大,超过200MB允许.
因此,我检查过这些事情:
检查我的源代码大小:89,9知道80,2M来自玩app的目标文件夹.
检查我的.gitignore文件,以确保排除播放应用程序的目标文件夹.这是我的.gitignore文件:
Run Code Online (Sandbox Code Playgroud).DS_Store logs project/project project/target target // target well precised here tmp .history dist /.idea / *.iml //space here otherwise appears as a comment here /out /.idea_modules /.classpath /.project /RUNNING_PID /.settings
检查我的SBT常春藤缓存大小:100,9 Mo
这里详细介绍了每个文件夹的大小(左侧):
MikaPc:缓存Mika $ du -xak.| sort -n | tail -50
1664 ./org.neo4j/neo4j/docs 1664 ./org.neo4j/neo4j/docs/neo4j-1.9.M05-javadoc.jar
1668 ./ org.neo4j/neo4j-kernel/docs
1668 ./org.neo4j/neo4j-kernel/docs/neo4j-kernel-1.9.M05-javadoc.jar
1680 ./org.springframework/spring-test 1748 ./org.neo4j/ neo4j
1752 ./org.aspectj/aspectjweaver/jars
1752 ./org.aspectj/aspectjweaver/jars/aspectjweaver-1.7.1.jar
1860 ./org.springframework/spring-jdbc
1888 ./org.springframework.data/spring-数据公地
1980年./org.scala-sbt/main/jars
1980年./org.scala-sbt/main/jars/main-0.12.2.jar
1992年./org.scala-sbt/main …
我使用Bootstrap 3.0 的Modal功能.
我有这个代码:
<a data-toggle="modal" href="/myNestedContent" data-target="#myModal">
Open the modal containing the content
</a>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
//nested content will be inserted here
</div>
Run Code Online (Sandbox Code Playgroud)
当我点击锚点(链接)时,整个工作=>我看到带有内容的模态.
但是,当我使用Javascript方式(而不是链接)来显示这样的模态:
$('#myModal').modal('show');
Run Code Online (Sandbox Code Playgroud)
我只看到淡化效果而没有显示模态...
当我开始点击链接,那么调用javascript,它的工作原理.(副作用?)
当我以javascript方式开始时,即使链接仅显示没有模态的淡入淡出效果.
可能是..来自modalJavascript方法的错误?
有关信息,我使用的脚本的声明顺序正确:
<script src="//code.jquery.com/jquery.js"></script>
<script src="javascripts/jquery.form.min.js"></script>
<script src="javascripts/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud) javascript jquery modal-dialog twitter-bootstrap twitter-bootstrap-3
使用Cordova/Phonegap,翻译iOS虚拟键盘上的"完成"按钮的最简单方法是什么?
例如,我的iPhone配置为使用法语.
但是,该按钮仍显示"完成"按钮,而不是经典的法语改编词:"确定".
java ×4
angularjs ×2
cordova ×2
javascript ×2
rest ×2
scala ×2
architecture ×1
c# ×1
casting ×1
classloader ×1
classpath ×1
compilation ×1
dependencies ×1
generics ×1
git ×1
github ×1
heroku ×1
hibernate ×1
http ×1
ios ×1
jpa ×1
jquery ×1
modal-dialog ×1
mysql ×1
pull-request ×1
sbt ×1
spring ×1
translation ×1