如果我使用Firebase作为后端制作100%客户端应用程序,我将如何阻止某人获取所有静态文件,将Firebase引用更改为指向他们自己的Firebase,以及发布竞争产品?
我想用自定义语言模式扩展ace.据我所知,一般过程是:
但我想在他们的网站上使用现有的ACE发行版,并结合我的独立新模式.我不想在构建我的新模式时重建ACE作为构建过程的一部分.我接近做了:
ace.config.setModuleUrl("foo-mode", "./foo.js");
session.setMode("foo-mode");
Run Code Online (Sandbox Code Playgroud)
但我很快遇到了requirejs/dependency问题.例如,我无法require("ace/mode/matching_brace_outdent")在我的模式中完成.我通过第一次调用setMode('ace/mode/c_cpp')(作为副产品定义了matching_brace_outdent模块)暂时破解了它.但是我试图让自定义WorkerClient工作时遇到更糟糕的问题.
作为ACE的一部分,我唯一的选择是建立我的模式吗?或者我错过了什么?
我有一个包装类,可以存储Long,Double或Boolean原始值(以及为简单起见我已删除的其他一些东西).我原来的天真实现只是将包装的值存储在Any类型的字段中,这导致值被装箱.
为了删除装箱并减少内存使用量,我尝试使用泛型,但了解到由于类型擦除,这不会保存任何东西.所以我尝试使用@specialized,但得到了惊人的结果.
下面的代码是使用scalac 2.9.3构建的,并在JDK7上运行.MemoryMeasurer来自这里,我相信它是准确的."填充"字段不重要; 我只是用它来填充基础对象(没有包装的值)到16个字节,所以我的各种尝试的效果更清楚.
import objectexplorer.MemoryMeasurer
class GenericNonSpecialized[A] (wrapped: A, val padding: Int) {
def getWrapped: Any = wrapped
}
class GenericSpecialized[@specialized(Long, Double, Boolean) A] (wrapped: A, val padding: Int) {
def getWrapped: A = wrapped
}
class GenericSpecializedVal[@specialized(Long, Double, Boolean) A] (val wrapped: A, val padding: Int) {
def getWrapped: A = wrapped
}
class NonGeneric(val wrapped: Long, padding: Int) {
}
object App {
def main(args: Array[String]) {
println(MemoryMeasurer.measureBytes(new GenericNonSpecialized(4L, 0)))
// Expect: 48: NonSpecialized …Run Code Online (Sandbox Code Playgroud) 当我从Firebase删除数据时,我的.validate规则似乎没有被执行.这是一个错误还是故意行为?
我知道Firebase实时数据库Web SDK可以使用WebSockets或长轮询与后端服务器通信.有没有办法强制它只使用WebSockets?
我的Firestore网络应用有时在iOS上遇到以下错误:
@ firebase / firestore:Firestore(5.5.0):内部未处理的错误:索引数据库服务器中遇到内部错误
是什么原因引起的,该如何解决?