标签: versioning

平台强制版本控制机制是java最急需的功能吗?

作为开发人员,我经常对可以让您的生活更轻松的新语言功能感兴趣.例如,java 5为该语言带来了泛型和注释,这些功能绝对可以提高您的工作效率.

然而,当我回顾近十年来在java平台上工作时,我发现与版本相关的问题是非生产性和不必要的努力的最大罪魁祸首.寻找正确版本的jar的小时和小时,试图协调一些版本冲突,升级依赖库等.当我开始使用java时,事情并不那么困难,你有几个第三方库,就是这样.今天,您可以轻松使用典型的Web应用程序:Spring Framework,Hibernate,Struts,您可以使用它.所有这些都带有许多依赖的第三方库.今天,我的耳档将通常包括大约40个或更多第三方库.一个真正的罐子地狱!

使用注释,我不必管理Hibernate的配置文件.一个很好的功能,但我没有看到由于我将描述符保存在单独的文件中而引起的许多问题.使用泛型,我不会编写演员语句,但在我的整个编程载体中,我记不起一个可以通过使用类型安全容器来防止的错误.版本问题的解决方案不是更有价值吗?

所有这些问题导致了许多工具,如Maven,Ivy,One Jar,Jar Jar Links(不是开玩笑!),甚至恰当地命名为Jar Hell等.即使你使用其中一些工具,你也远远不能免疫问题.我使用Maven 2,这是一个很好的帮助.不过,它本身就是一个世界.新手程序员可能需要一段时间来学习它.将您的遗留项目迁移到Maven结构也很痛苦.

似乎在.Net中他们已经学会了dll地狱的教训,并且.Net程序集的管理要简单得多.

似乎有计划为java平台和OSGI等替代方案解决这个问题.我认为非常需要一些基本的和平台强制的版本控制机制

java versioning dependencies jar

8
推荐指数
2
解决办法
590
查看次数

从Visual C++资源文件获取FILEVERSION

是否有一些预处理器关键字用于在编译时访问我的.rc文件中定义的FILEVERSION?

我真的不想添加额外的代码来从编译产品本身读取文件信息.

c++ versioning visual-c++

8
推荐指数
1
解决办法
6333
查看次数

如何在Appengine中保留数据存储区实体的版本历史记录

我将实体A存储在我的数据存储区中的appengine上.A的ID为Long.我想保留A字段所做的所有更改的历史记录.在实体上进行此类版本的最佳做法是什么?我更喜欢一种适用于A的子类并且尽可能自动化的解决方案.

谢谢!

database versioning google-app-engine datastore

8
推荐指数
1
解决办法
2131
查看次数

msbuild任务读取DLL的AssemblyFileVersion

我需要阅读AssemblyFileVersiondll而不仅仅是Version.我试过了:

<Target Name="RetrieveIdentities">
    <GetAssemblyIdentity AssemblyFiles="some.dll">
        <Output
            TaskParameter="Assemblies"
            ItemName="MyAssemblyIdentities"/>
    </GetAssemblyIdentity>
    <Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

该脚本运行但不输出任何内容.如果我改变FileVersionVersion它正确输出AssemblyVersion.我如何AssemblyFileVersion使用我的脚本?

versioning msbuild

8
推荐指数
2
解决办法
3495
查看次数

XmlSerializer:如何反序列化不再存在的枚举值

我正在使用XMLSerializer将此类保存到文件中.该类有一个字符串和一个枚举,如下所示:

public class IOPoint
{
     string Name {get; set;}
     TypeEnum {get; set;}
}


public enum TypeEnum
{
    Temperature,
    Pressure,
    Humidity,
}
Run Code Online (Sandbox Code Playgroud)

序列化时,它看起来像这样.

<IOPoint>
  <Name>Relative Humidity</Name>
  <TypeEnum>Humidity</TypeEnum>
</IOPoint>
Run Code Online (Sandbox Code Playgroud)

我一直在序列化和反序列化这个对象,几个版本都没有问题.我不再想支持湿度,所以我将它从枚举中删除了.但是,这会在从XML反序列化时导致异常,因为TypeEnum字段中的值Humidity不是TypeEnum的有效值.这是有道理的,但如何处理呢?

我想做的就是忽略这个错误.并将值保留为null.我已经尝试实现OnUnknownElement XmlDeserilizationEvent类.不幸的是,这并没有发现这个错误.

关于如何捕获和忽略此错误的任何想法(我可以在反序列化完成后清理).

米奇

c# xml versioning serialization deserialization

8
推荐指数
1
解决办法
5927
查看次数

如何创建自我更新的Node.js应用程序?

我想创建一个Node.js应用程序,它定期检查更新并安装它们(如果有的话).

基本组件对我来说很清楚:

  • 包含更新包的Web服务器(或FTP服务器,文件系统......)
  • 版本系统(例如SemVer),以便您可以分辨哪个包更新
  • 用于签署更新包的公钥算法

然后,可能有不同的策略来检查更新和安装更新:

  • 在申请开始
  • 在申请结束时
  • 闲着时

应用程序甚至可以很难关闭并自动重启.

但是还有一些问题:

  • 是否有可用的npm模块已经提供了这样的系统?
  • 如何在文件系统中组织不同的版本?基本上你有一个主机和多个(版本化)核心.它们应该有一个data文件夹吗?
  • 如何应对npm install&co.对于新下载的包?
  • 如何处理破碎的更新?
  • 你怎么能实现这样的东西,以便它与Heroku&co兼容.你没有永久驱动器,你可以开车到哪里?

一般来说:你会如何尝试实现这样的系统?

versioning auto-update self-updating node.js

8
推荐指数
1
解决办法
5475
查看次数

NoSQL数据库(类别)支持哪些版本控制?

我认为无论NoSQL聚合存储是键值,列族还是文档数据库,它都支持值的版本控制.经过一段谷歌搜索,我得出的结论是这个假设是错误的,它只取决于DBMS的实现.这是真的?

我知道Cassandra和BigTable支持它(两个列家族商店).它看起来是Hbase(列族)和Riak(键值),但Redis和Hadoop(键值)却没有.Mongo DB(文档)确实做了 Couchbase,但是MongoDB没有(文档存储).我在这里看不到任何模式.有经验法则吗?(例如,"键值存储通常没有版本控制,而列族和文档数据库执行")

我正在尝试做什么:我想创建一个从URL到PNG图像的网站截图数据库.我宁愿使用键值存储,因为除了版本控制之外,它是满足问题的最简单的解决方案.但是当网站发生变化或被淘汰时我更新了我的数据库,我不想丢失旧图像.即使我选择了具有版本控制的键值数据库,我也希望能够切换到不同的键值数据库,而不受许多键值DB不支持版本控制的限制.因此,我试图了解聚合NoSQL数据库连续体中的复杂程度,版本控制成为数据模型隐含的功能.

versioning nosql column-family

8
推荐指数
2
解决办法
4839
查看次数

是否有意义不重置版本号中的最后一位数字

我们正在改变我们的中间件(MW)软件的版本控制和依赖系统,我们在这里考虑这样的事情:

a.b.c.d

a - 主要版本

b - 向后兼容性中断

c - 新功能

d - 错误修复

但由于软件的大小和网络速度慢,我们必须将发送给客户端的软件包数量保持在最低限度.

因此,我们的想法是仅在向后兼容性更改时重置错误修复号.使用此逻辑,我们可以创建一个自动系统,如果客户端已经安装的版本有任何错误更改,并且它符合新的FrontEnd(FE)要求,则只生成新包.

为了更好地显示这一切,这里有几个例子:

递增逻辑

递增逻辑

需要包决策逻辑

需要包裹

虽然这是一个非标准的版本控制逻辑,你们看到这个逻辑有什么问题吗?

java versioning product version

8
推荐指数
1
解决办法
174
查看次数

使用Spring Cloud Config进行属性版本控制

我可能在这里遗漏了一些东西,但是什么是属性版本控制的好方法?

例如,在具有属性值更改的蓝绿色部署方案中(旧应用程序版本消耗旧值,新版本需要新值),如何确保应用程序的两个版本可以成功共存(考虑可能的重新启动和回滚)?

一种选择是为需要应用新值的属性创建新的属性名称.当然,这不是一个好的选择,因为我们需要在代码库中跟踪该属性的所有用法并相应地更新其引用.从概念的角度来看,它也不是很好.

另一种选择是为每个版本分配一个分支.虽然这对于这种情况可以很好地工作,但我设想一个分支/标记地狱,因为我们扩展到配置仓库到多个应用程序,它们各自的分支演变成不同的方向.

分支机构的解决方案是为每个应用程序分配一个配置存储库.但是,我认为这在某种意义上会破坏配置服务器的目的,因为它增加了开销.

还有其他方法吗?

versioning spring-boot spring-cloud spring-cloud-config

8
推荐指数
1
解决办法
1727
查看次数

Perl6如何决定加载哪个版本的模块?

当我这样做时use Foo:ver<1.0>;,将加载模块的1.0版本Foo。但是,当我这样做时会发生什么use Foo;呢?

versioning module package perl6 api-versioning

8
推荐指数
1
解决办法
143
查看次数