我正在开始开发具有脱机数据库存储要求的Web应用程序.长话短说,应用程序应该可以运行:
那么问题是选择哪种技术:IndexedDB或Web SQL数据库?
关于Web SQL数据库,一方面可以在任何上述场景中使用它.另一方面,Mozilla表示Firefox永远不会实现它,根据HTML5 工作草案,规范已经陷入僵局:
这个规范已陷入僵局:所有感兴趣的实现者都使用了相同的SQL后端(Sqlite),但我们需要多个独立的实现来继续标准化路径.在另一个实现者对实现此规范感兴趣之前,SQL方言的描述仅仅是对Sqlite的引用,这对于标准是不可接受的.如果您是一个对实现独立SQL后端感兴趣的实现者,请联系编辑器,以便他可以为方言编写规范,从而允许此规范继续前进.
IndexedDB是Mozilla提倡的替代品,但它只会出现在Firefox 4中.微软很感兴趣,Chrome也会支持它.我对Apple的IndexedDB计划一无所知.
我个人倾向于选择Web SQL数据库,但仅仅因为我习惯了SQLite,我喜欢SQL的强大和表现力,而且我理解关系模型.对我来说,IndexedDB是一种不确定性.
那就是说,我害怕赌错马.假设支持Web SQL数据库将继续存在,即使IndexedDB成为标准,是否安全?
(关于CouchDB的说明:您是否也将其视为替代方案?)
如果您正在使用模块模式并具有以下内容:
(function () {
"use strict";
// this function is strict...
}());
Run Code Online (Sandbox Code Playgroud)
并使用Google Closure Compiler编译代码,该"use strict";指令不会使其进入编译文件.
那么如何防止Closure Compiler删除ES5/strict指令呢?
(注意,我不想使用强制执行ES5 /严格模式的其他模式,即简单地将"use strict";添加到编译文件的第一行.我想使用此处所述的模块模式.)
javascript google-closure google-closure-compiler ecmascript-5
我正在使用guice进行依赖注入,而不是aopalliance.我无法弄清楚什么是aopalliance所有关于谁以及谁实现了他们的sourceforge页面上的版本(日期为2004年).为什么guice使用这个版本而不是像AspectJ这样更知名的包?
另外,你知道关于aopalliance版本的任何教程吗?
谢谢
假设我想使用OO编程语言实现事件总线.我可以这样做(伪代码):
class EventBus
listeners = []
public register(listener):
listeners.add(listener)
public unregister(listener):
listeners.remove(listener)
public fireEvent(event):
for (listener in listeners):
listener.on(event)
Run Code Online (Sandbox Code Playgroud)
这实际上是观察者模式,但用于应用程序的事件驱动控制流.
您将如何使用函数式编程语言(例如lisp风格之一)实现此模式?
我问这个是因为如果一个人不使用对象,人们仍然需要某种状态来维护所有听众的集合.此外,由于听众集合随着时间的推移而变化,因此无法创建纯粹的功能解决方案,对吧?
我在设置datanucleus增强器时遇到问题,需要与谷歌应用程序引擎项目一起使用.如果我使用datanucleus eclipse插件一切顺利,但在我的maven项目中,我得到一个奇怪的冲突版本错误.
我的POM有这些数据核参考:
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>1.1.0</version>
</dependency>
...
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<mappingIncludes>**/*.class</mappingIncludes>
<verbose>true</verbose>
<enhancerName>ASM</enhancerName>
<api>JDO</api>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我尝试构建项目时,我收到以下错误:
Exception in thread "main" Plugin (Bundle) "org.datanucleus" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.0/**datanucleus-core-1.1.0.jar**" is already registered, and you are trying to register an identical plugin located at URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.3/**datanucleus-core-1.1.3.jar**." org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus" is already registered. Ensure …
所以,我认为在Redmine/Git中可以使用提交注释修复问题:
git commit -m "Fixes #123"
Run Code Online (Sandbox Code Playgroud)
Fossil有可能是这样吗?怎么样?
假设您正在使用具有多个外部库依赖项的javascript项目,并希望使用Google Closure Compiler以ADVANCED_OPTIMIZATIONS模式编译源代码.
由于在此模式下编译器会将代码调用重命名为外部库对象和函数,因此必须提供externs,以防止发生此重命名.
但是,手动生成externs需要做很多工作,那么,从给定的javascript lib自动生成适当的extern的最佳方法是什么?
除了JavaScript和Java之间的明显差异之外,使用SmartClient或SmartGWT有哪些相关区别?
javascript ×2
aop ×1
aopalliance ×1
clojure ×1
datanucleus ×1
ecmascript-5 ×1
fossil ×1
guice ×1
html5 ×1
indexeddb ×1
lisp ×1
logic ×1
maven-2 ×1
python ×1
scheme ×1
smartclient ×1
smartgwt ×1
web-sql ×1