我无法找到使用Docker和Boot2Docker在OS X上设置开发环境的好方法.我遇到的问题是如何管理源代码,以便:
理论上,通过将我的源代码作为卷安装,这应该很容易做到:
docker run -it -v /path/to/my/source/code:/src some-docker-image
Run Code Online (Sandbox Code Playgroud)
不幸的是,这有两个主要问题使它在OS X上完全无法使用:
例如,如果源代码是Docker镜像的一部分,这里是Jekyll编译我的主页需要多长时间:
> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash
root@7aaea30d98a1:/src# time bundle exec jekyll build
[...]
real 0m7.879s
user 0m7.360s
sys 0m0.600s
Run Code Online (Sandbox Code Playgroud)
这是完全相同的Docker镜像,除了这次,我从OS X挂载源代码:
> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash
root@1521b0b4ce6a:/src# time bundle exec jekyll build
[...]
real 1m14.701s
user 0m9.450s
sys 0m3.410s
Run Code Online (Sandbox Code Playgroud)
SBT,Jekyll和grunt中的默认监视机制使用诸如inotify之类的技术,如果它们在Docker容器中运行并且在OS X中对安装的文件夹进行了更改,则它们不起作用.
我搜索了解决方案(包括SO上的所有解决方案)并尝试了其中一些,但没有找到成功的解决方案:
是否有任何类似于Markdown的简单语言或其中一个转换为HTML表单元素的Wiki标记?
例如:
name* = ___________
sex = (x) Male () Female
phones = [] Android [x] iPhone [] Blackberry
city = {BOS, (SFO), NYC}
Run Code Online (Sandbox Code Playgroud)
会转换为:
<label>Name (required):</label><input type="text" name="name" id="name"/>
<label>Sex:</label><input type="radio" name="sex" value="Male" checked="checked"/> <input type="radio" name="sex" value="Female"/>
<label>Phones:</label><input type="check" name="phones" value="Android"/> <input type="check" name="phones" value="iPhone" checked="checked"/> <input type="check" name="phones" value="Blackberry"/>
<label>City:</label>
<select name="city">
<option value="BOS">BOS</option>
<option value="SFO" selected="selected">SFO</option>
<option value="NYC">NYC</option>
</select>
Run Code Online (Sandbox Code Playgroud)
自己创建一个很简单,但如果现有的库/语言已经支持它,它将节省我一些实施,文档和维护时间.如果库在Java中工作(因此我们可以在服务器端运行)或JavaScript(因此我们可以在客户端运行它),这将是更好的选择.
我正在调查JavaScript模板,以此来呈现我们的观点.目标是能够为已启用JavaScript的用户呈现客户端,以便为那些没有启用JavaScript的用户(和爬虫)呈现相同的模板/数据服务器端.
要求
到目前为止找不到令人满意的解决方案
我们有一个包含17个项目的SBT 0.13.0多项目构建:1个叶子项目,15个依赖于叶子(但不是彼此)的模块,以及1个依赖于15个模块的聚合器.
这是对Build.scala文件外观的一个非常粗略的想法:
val deps: Seq[Setting[_]] = Seq(libraryDependencies ++= Seq(
"com.foo" % "foo" % "1.0.0",
"com.bar" % "bar" % "1.0.0"
))
val leaf = Project("leaf").settings(deps:_*)
val module1 = Project("module1").dependsOn(leaf).settings(deps:_*)
val module2 = Project("module2").dependsOn(leaf).settings(deps:_*)
...
val module15 = Project("module15").dependsOn(leaf).settings(deps:_*)
val aggregator = Project("aggregator)".dependsOn(
module1,
module2,
...
module15
).settings(deps:_*)
Run Code Online (Sandbox Code Playgroud)
所有这些项目都列出了完全相同的外部依赖项集libraryDependencies.出于某种原因,当我们update在聚合器中运行命令时,每个项目大约需要一分钟(总共大约15分钟!),即使没有单一的新依赖项可以解析或下载.
更糟糕的是,我们最近添加了一个依赖项,现在update命令导致SBT膨胀到~5GB内存,有时在解析期间完全挂起.我们如何调试这个?
我们尝试过YourKit来描述它,它可能是一个阅读鲱鱼,但到目前为止,我们唯一看到的是一些sbt.MultiLogger班级在BufferedOutputStream.flush通话中花费了大量时间.
假设我们有一个SBT项目bar依赖于某些工件foo:
val bar = Project('bar', file('.')).settings(
libraryDependencies += "com.foo" % "foo" % "1.0.0"
)
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,我想检查源代码foo并让SBT从我的文件系统而不是已发布的工件加载源代码; 这样,我可以对其进行局部更改foo并立即对其进行测试,bar而无需发布任何内容.
val foo = Project('foo', file('foo'))
val bar = Project('bar', file('.')).dependsOn(foo)
Run Code Online (Sandbox Code Playgroud)
我们spec.json在根文件夹中有一个文件bar已经指定是foo应该从源使用还是作为工件使用.有没有办法设置我的构建来读取此文件并添加dependsOn或libraryDependencies基于值spec.json?"
这样做很容易libraryDependencies:
val bar = Project('bar', file('.')).settings(
libraryDependencies ++=
if (containsFoo(baseDirectory.value / "spec.json")) {
Seq()
} else {
Seq("com.foo" % "foo" % "1.0.0")
}
)
Run Code Online (Sandbox Code Playgroud)
但是,我们找不到任何方法来设置做任何"动态" dependsOn,比如阅读baseDirectory SettingKey …
在网页上,是否可以在将文件上传到服务器之前将大文件拆分为块?例如,将10MB文件拆分为1MB块,并在显示进度条的同时一次上传一个块?
听起来JavaScript没有任何文件操作功能,但是Flash和Java applets呢?
这需要在IE6 +,Firefox和Chrome中运行.更新:忘了提及(a)我们正在使用Grails和(b)这需要在https上运行.
我正在考虑在Github上为我的实时网站开源代码.到目前为止,我一直在将代码存储在私人仓库中,我唯一担心的是有一些与我的生产环境(数据库密码,API密钥等)相关的配置文件,我不想这样做公开可见.
在不暴露私人数据的情况下开放此类项目的典型方法是什么?你只是维护两个回购,一个公共的和一个相同的私人数据,添加私人数据,偶尔合并两者之间?
我正在尝试重新初始化Oracle数据库,并且看到以下错误:
[sql] Failed to execute: drop user conns cascade
[sql] java.sql.SQLException: ORA-01940: cannot drop a user that is currently connected
[sql] Failed to execute: create user conns identified by conns default tablespace tbs_conns temporary tablespace temp1
[sql] java.sql.SQLException: ORA-01920: user name 'CONNS' conflicts with another user or role name
Run Code Online (Sandbox Code Playgroud)
问题是NO ONE已连接:这是我本地计算机上的一个实例,没有外部连接,我只是重新启动并且没有运行任何其他操作.我唯一能想到的是Oracle可能有一些背景(清理?)任务正在运行导致这个问题,但我不知道如何找到/管理它.有任何想法吗?
更新:这个脚本实际上丢弃并重新初始化了一堆表,并且在尝试重新运行它几次之后,我得到了相同的错误消息但是在另一个表上:Failed to execute: drop user csmy cascade.经过几次尝试后,它转移到了另一个用户身上:Failed to execute: drop user deb cascade.似乎有些东西按字母顺序锁定这些表,一次一个!
更新2 …
我的应用程序使用TreeMap来保持数据排序并具有log(n)查找和插入.这在应用程序运行时的一般情况下效果很好,但是当应用程序首次启动时,我需要初始化具有数百万个long的TreeMap,我按排序顺序(升序).
由于这些初始化值已经排序,有没有办法将它们插入TreeMap而不支付树插入和重新平衡的log(n)成本?
我有一个看起来像这样的Java接口:
public interface Foo {
public <T> T bar();
}
Run Code Online (Sandbox Code Playgroud)
我想在Scala中实现这个接口,我的所有代码都使用它Option.但是,由于Java用户将使用该接口,我想返回null而不是None.我尝试了以下方法:
class FooImpl extends Foo {
def bar[T](): T = {
val barOpt: Option[T] = getBar()
barOpt.orNull
}
}
Run Code Online (Sandbox Code Playgroud)
这导致以下编译错误:
Expression of type Null does not conform to expected type T
Run Code Online (Sandbox Code Playgroud)
这是有道理的,类型T是不受限制的,它可能是一种Int或其他类型的不可能null.没问题,只需添加即可T >: Null完成,对吧?
class FooImpl extends Foo {
def bar[T >: Null](): T = {
val barOpt: Option[T] = getBar()
barOpt.orNull
}
}
Run Code Online (Sandbox Code Playgroud)
不,还是没有骰子.现在你得到一个新的编译错误:
[error] …Run Code Online (Sandbox Code Playgroud) 请考虑以下TypeScript接口:
interface Foo {
list: string[];
obj: { [index: string]: string; };
}
Run Code Online (Sandbox Code Playgroud)
有没有办法指定类型,以便键入obj必须是其中一个值list?
例如,以下内容有效:
class Bar implements Foo {
list = ["key1", "key2"]
obj = {"key1": "value1"}
}
Run Code Online (Sandbox Code Playgroud)
但是,以下是编译错误:
class Bar implements Foo {
list = ["key1", "key2"]
// COMPILE ERROR
// "some-other-key" is not in list
obj = {"some-other-key": "value1"}
}
Run Code Online (Sandbox Code Playgroud)
我试图限制obj使用keyof和查找类型的类型,但没有成功.
java ×2
javascript ×2
sbt ×2
scala ×2
applet ×1
boot2docker ×1
build ×1
client-side ×1
docker ×1
file-upload ×1
flash ×1
forms ×1
github ×1
html ×1
insertion ×1
macos ×1
markdown ×1
open-source ×1
oracle ×1
oracle11g ×1
security ×1
server-side ×1
sortedmap ×1
templates ×1
treemap ×1
typescript ×1
wiki ×1