生态系统中有无数的开发工具和术语,例如语言服务器、构建服务器、Metals、BSP、LSP、Bloop、Zinc、Coursier、增量编译器、演示编译器等。
我想知道是否有人可以演示它们如何组合在一起并简要解释关系和差异。具体来说,我希望按照“理解 Scala FP 库”的思路给出图表和答案。例如,这是我的尝试
(Concept) (Example implementation)
--------------------------------------------------------------------
IDE Visual Studio Code
| |
Scala IDE plugin Metals Visual Studio Extension
| |
Language Server Protocol Microsoft LSP
| |
Scala language server Metals
| |
Build Server Protocol BSP from JetBrains and Scala Center
| |
Scala build server Bloop
| |
Build tool sbt
| |
Dependency resolution Coursier
| |
Incremental compiler Zinc
| |
Presentation compiler parser and typer phases of scalac
| …Run Code Online (Sandbox Code Playgroud) development-environment scala build-tools incremental-build scala-metals
我已经获得了一个早期的圣诞礼物:
允许走出开发周期来重新组织和记录我们的应用程序.
我完全可以自由地重组,重构和设置我认为合适的任何数量的基础设施.
如果你有全权委托,那么你的"完美".NET开发环境是什么?
关于应用程序:
VB.NET客户端 - 服务器应用程序.(Windows Forms前端,ASPX Webservices后端)
目前正在使用Visual Studio和SQL Server 2003以及... Visual SourceSafe.
我希望有一些组合:
*更好的版本控制.(倾向于Subversion)
*Wiki或其他系统进行错误跟踪和文档编制.(倾向于使用Subversion Trac)
*简化构建过程和每日构建(Visual Build?CruiseControl.NET?)
*SQL Server数据库的版本控制
*升级到Visual Studio 2005(或2008)?
...对于一个由5个左右的开发人员组成的小团队
在O/S选择方面,我认为自己相当通用.我两年前一直使用DOS/Windows PC,两年前将我的主笔记本电脑换成了Mac,并且在为我的Comp.Sci学习时使用了多种版本的Unix/Linux/BSD.学位.
然而,当我正在努力改善我的开发环境时,我开始怀疑我是否会更好地为具有不同O / S风格的PC废弃Macbook(以支持不同的工具和IDE) .
你更喜欢(网络)开发的O/S,为什么?(更喜欢在多个平台上拥有实际编码经验的人的答案)
(注意:我知道这个问题讨论客户端与服务器O/S - 我感兴趣的是整个开发环境,而不仅限于'Windows人群')
对于我正在学习的当前课程,我们使用远程计算机来运行我们的代码.
我在MacBook上本地编码,我正在寻找一种在群集上保持本地代码最新的好方法.
我这样做的方法是打开一个终端来运行SCP来复制目录,另一个终端通过SSH进入集群来制作和运行我的代码.
这对我来说似乎不太理想.有没有办法在修改文件时自动将文件发送到集群?
还是我坚持使用单行命令移动一切?
多监视器编程的乐趣是无数的,我认为关于这个主题的Coding Horror上有大约5篇博客文章!我经常在我的主机上使用Windows编写代码,并将我的Mac笔记本电脑设置在一边.我使用Mac来编译Mac版本,但也作为我的"参考Web浏览器".没有KVM或任何东西.
然而,在会议上随意的谈话引发了我的疑问,我可以使用两台独立的机器来共享窗户吗?直接将一些窗口从一台机器移动到另一台机器,因此我可以将一台PC的显示器用作另一台机器的"溢出".
一些谷歌搜索突然显示在某些情况下这是可能的肯定:
我的问题是,是否有程序员尝试过这样的设置.我们有独特的需求,特别是有多个文本窗口和编辑器,这种工具可能是一个巨大的胜利或巨大的麻烦.
这个解决方案感觉就像简单的KVM切换和多个监视器的组合......这听起来像编程梦想!因此,在投资相当复杂的设置之前,建议或特别是编程环境中的实际经验报告将非常有用.
跟进:听起来我要求的东西不存在!它是软件KVM 和 VNC 的组合.但是VNC需要打破应用程序窗口并允许单独操作(就像那个maxivista商业工具,只有Vista).
感谢所有的反馈.看起来有需要一个很酷的应用程序,如果有人有驱动器成为这个新的nich!
在我的非编程生活中,我总是尝试使用适当的工具来完成这项工作,我觉得我在编程生活中也是如此,但我发现我几乎所有选择C#和.NET.我发现很难提出.NET和C#无法满足的(实际业务)需求.
显然嵌入式系统可能需要比.NET Micro Framework更少膨胀的东西,但我真的在寻找.NET不是最好的工具的业务类型.
我最初是一个C#和.NET家伙,因为它是我最舒服的,但我知道相当数量的C++,php,VB,PowerShell,批处理文件和Java,以及精通网络技术(JavaScript,HTML和CSS).但我对我的技能有着开放的态度,我正在寻找C#和.NET 不适合这项工作的案例.
我选择.NET和C#因为我对它感到满意,但我正在寻找不适合的情况.
我正在尝试生成iOS开发证书..certSigningRequest从桌面选择文件并单击后Generate,出现以下错误:
Processing of multipart/form-data request failed. Disc quota exceeded
为什么会发生这种情况?如何生成证书?
我目前正在将应用程序迁移到Google App Engine,该应用程序依赖于各种外部连接的环境变量.看起来app.yaml文件是我应该设置这些配置的地方但是如何管理这些变量可能不同的不同环境(开发,测试,登台,生产)?
最简单的解决方案是仅使用不同的app.yaml文件为每个环境创建分支吗?
google-app-engine development-environment environment-variables
我想从命令行刷新eclipse.我怎样才能做到这一点?
通常我运行这样的构建:
$ myCompaniesSpecialBuildScript.sh
Run Code Online (Sandbox Code Playgroud)
这样做了一些项目设置,Eclipse需要它来显示没有编译错误的项目.
这意味着每当我运行构建时,我的步骤是:
$ myCompaniesSpecialBuildScript.sh里面的日食:
Refresh,或 Project -> Clean... -> Clean all理想情况下,我宁愿从命令行运行它,而不是这样做:
$ myCompaniesSpecialBuildScript.sh && myScriptToRefreshEclipse.sh
Run Code Online (Sandbox Code Playgroud)
我正在研究如何制作myScriptToRefreshEclipse.sh.
这是我到目前为止所发现的:
看起来这两件事都需要在Eclipse的JVM中运行.有没有办法从命令行获取此信息?
我将Android Studio Canary从2更新为3(当前版本),现在我在构建项目时遇到错误:
2017-06-15 16:32:00,831 [ thread 12] INFO - e.project.sync.GradleSyncState - Gradle sync failed: Cause: java.lang.NullPointerException
at com.android.build.gradle.internal.ide.AndroidArtifactOutputImpl.getGeneratedManifest(AndroidArtifactOutputImpl.java:110)
at sun.reflect.GeneratedMethodAccessor283.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$ReflectionMethodInvoker.invoke(ProtocolToModelAdapter.java:592)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$AdaptingMethodInvoker.invoke(ProtocolToModelAdapter.java:397)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$PropertyCachingMethodInvoker.invoke(ProtocolToModelAdapter.java:625)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SafeMethodInvoker.invoke(ProtocolToModelAdapter.java:647)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SupportedPropertyInvoker.invoke(ProtocolToModelAdapter.java:670)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$InvocationHandlerImpl.invoke(ProtocolToModelAdapter.java:356)
at com.sun.proxy.$Proxy198.getGeneratedManifest(Unknown Source)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidArtifactOutput.<init>(IdeAndroidArtifactOutput.java:49)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidArtifactImpl.lambda$new$0(IdeAndroidArtifactImpl.java:48)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.lambda$computeIfAbsent$0(ModelCache.java:31)
at java.util.HashMap.computeIfAbsent(HashMap.java:1126)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.computeIfAbsent(ModelCache.java:31)
at com.android.tools.idea.gradle.project.model.ide.android.IdeModel.copy(IdeModel.java:71)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidArtifactImpl.<init>(IdeAndroidArtifactImpl.java:48)
at com.android.tools.idea.gradle.project.model.ide.android.IdeVariantImpl.lambda$new$0(IdeVariantImpl.java:51)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.lambda$computeIfAbsent$0(ModelCache.java:31)
at java.util.HashMap.computeIfAbsent(HashMap.java:1126)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.computeIfAbsent(ModelCache.java:31)
at com.android.tools.idea.gradle.project.model.ide.android.IdeVariantImpl.<init>(IdeVariantImpl.java:50)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidProjectImpl.lambda$new$4(IdeAndroidProjectImpl.java:80)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.lambda$computeIfAbsent$0(ModelCache.java:31)
at java.util.HashMap.computeIfAbsent(HashMap.java:1126)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.computeIfAbsent(ModelCache.java:31)
at com.android.tools.idea.gradle.project.model.ide.android.IdeModel.copy(IdeModel.java:71)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidProjectImpl.<init>(IdeAndroidProjectImpl.java:80)
at …Run Code Online (Sandbox Code Playgroud) development-environment android-studio android-gradle-plugin android-studio-3.0
.net ×2
bash ×1
build ×1
build-tools ×1
c# ×1
certificate ×1
eclipse ×1
ios ×1
kvm ×1
macos ×1
scala ×1
scala-metals ×1
vnc ×1