Questions tagged «software-updates»

7
您如何回答:客户提出的“自更新以来……”问题?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 自从更新以来,人们一直在喊着说:“自从更新X,Y和Z变慢,变差并崩溃后” 自从更新开始以来就发生了这种情况。 人们期望什么?伽玛版是beta版本之后的版本,伽玛测试始终使我们的用户成为“不可思议的绿巨人” ... 也许您从未听说过来自客户的消息,也许您是在大学或FLOSS开发人员中,可以将责任推卸到5个或6个以上的家伙上,也许您要对代码进行单元测试,也许您并没有遇到这种有趣的情况客户实际上打电话给您,要求您提供一天中的确切时间(今天我想向M​​icrosoft发布),或者您是像我这样对不起的饼干儿子,他刚发布了新补丁更新并回家,令人恐惧的是明天要恢复工作。 无论如何,你们比我还要聪明。您如何对“您必须是一个糟糕的程序员,因为您会使软件变得更糟”提出批评?


1
继续更新Web应用程序中使用的Bootstrap版本是否有意义?
对于可能不知道的人来说,Bootstrap是HTML,CSS和JS框架,可以用作构建网站或Web应用程序的基础或起点。 现在,我处于生产中的应用程序中,该应用程序是使用框架的版本3设计的,但具有与该公司投资组合中的其他网站一致的其他样式。 但是,我们将对该Web应用程序进行大量扩展,我想知道-我是否应该更新该应用程序正在使用的引导程序的版本? 我问这个有几个原因。首先是bootstrap的版本4与版本3并不完全向后兼容-许多辅助类已被更改,替换或完全删除,因此更新工作量不小(不是多余,但不是只需更新package.json中的版本号,然后重新构建即可)。 现在,我对引导程序的理解是,它最初是关于使您的网站/ Web应用程序起步的-可以这么说(因此得名)。但是考虑到应用程序已经超出了引导点,我是否应该考虑花费时间来更新引导框架? 我知道从表面上看这似乎是一个带有明显答案的问题-当然,您可以使自己的东西保持最新状态!!!但是,如果您将Bootstrap视为入门的一种方式,那么在启动并运行后,为什么还要继续更新框架本身?您已经为应用程序的需求定制了零件-您是否应该允许自己朝不同的方向发展? 如果Bootstrap作为框架真的是关于入门的(不同于像Rails或Django这样的框架在整个应用程序的生命周期中都在不断提高生产力),那么在某个时候,您是否应该与入门框架分离? (例如,如果您克隆了一个Angular入门仓库来开始构建您的应用程序,那么您会在4或5个月后回来并尝试将对该入门仓库的更新合并到您现在处于活动状态的应用程序中吗?) PS。这是我第一次在这里提出问题-如果这不是该论坛的适当类型的问题,我事先表示歉意。

2
如何防止我的可执行文件被AV视为恶意软件或病毒?
我正在创建一个软件,该软件将在Windows上运行,并像游戏的启动器一样,充当客户端PC中的自动更新程序和文件验证程序。 我不明白的一件事是,为什么我的防病毒软件(Avast)认为我的exe文件很危险,并且在不要求将其放入沙箱中以安全使用的情况下不会启动它。 我的软件有没有应遵守的规则,被视为良好的规则,还是应该为某些数字签名和其他东西支付数百美元? 我在MS Visual Studio 2010中使用C#。 VirusTotal报告。使用WebClient()类,不进行DLL注入,可用作远程文件下载器。 并不是像它警告病毒一样,而是“建议”将其沙箱化。看截图:

4
补丁对客户不利吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在办公室,我们只是度过了漫长的一段时间,在那儿我们太频繁地发布补丁了。在此期间快要结束时,我们平均每周要进行大约三个补丁。 除了这对于开发人员来说非常不利之外,我想知道客户对此会有什么想法。我自己问了一个问题,得出的结论是,我不知道经常更新的软件。但是,对于最接近的情况,我并不在乎,因为补丁很快就可以应用。 收到这些补丁的客户彼此之间有很大不同。有些人确实在等待其他人并不真正关心的补丁,但是他们都得到了相同的补丁。更新客户软件的时间少于30秒,因此我认为与时间无关的任何问题。他们确实需要注销。 因此,我的问题更加详细:获取更新是否经常向接收方发出“负面”消息? 当然,我可以问顾客,但是我不在那个位置,也不想“唤醒熟睡的狗”。 PS:如果有什么我可以改善的问题,请发表评论。

1
在生产环境中运行哪个Java版本的注意事项
有些人掌握了技术的最前沿-更新某些事物的日期。在生产中,这不合适。 研究当前版本(Java 7)是否准备好投入生产会产生大量旧材料,这些旧材料可能不再正确(在撰写本文时,Java 7已经使用了一年半的时间,这似乎已经很长了) 。 为了确定将生产环境升级到更高版本的Java是否合适,我需要考虑哪些因素?


1
软件/固件自动更新策略
我现在有一个中型项目,该项目已经接近“为客户演示提供草率咖啡因的原型”阶段的结尾,并过渡到“思考未来”阶段。该项目由具有软件和固件的基于Linux的设备以及中央管理Web服务器组成。目前存在10个原型,预计产量将低至1000左右。 我不熟悉自动更新技术,而且时间紧迫,所以我迅速制定了自己的软件部署/自动更新策略,坦率地说,它很糟糕。当前由以下各项组成: 带有生产发行分支的托管git repo(GitLab)(请注意,Web服务器源也位于此相同的repo中,还有其他一些东西)。 Web界面上的“部署更新”按钮,该按钮: 从生产发行分支将最新版本拉到本地回购区域,并将其复制到临时软件包准备登台区域。 在登台区域中运行清理脚本(存储在仓库中)以删除不相关的源文件(例如服务器源,固件源等)和.git文件。 将当前git哈希写入更新包中的文件(目的将在下面变得清楚)。 如果一切顺利,它将用gzip压缩并准备好使用,方法是使用同名文件覆盖以前的gzip压缩包,然后删除暂存区。 请注意,服务器上现在有两个当前设备软件的副本,它们有望同步:最新生产分支上的完整本地git repo和一个现成的gzip压缩包,现在假定该软件包代表了以下内容:相同的版本。 设备上的软件独立包含在名为的目录中/opt/example/current,该目录是该软件当前版本的符号链接。 引导时设备上的自动更新功能: 检查do_not_update文件是否存在,如果文件存在,则不采取进一步措施(有关开发设备,请参见下文)。 从上述文本文件中读取当前提交哈希。 使用该哈希作为查询参数向服务器发出HTTP请求。服务器将以304(哈希为当前版本)响应,或者将提供压缩后的更新程序包。 如果收到更新包,则/opt/example通过以下方式安装: 提取更新的软件信息,将其命名为stage。 从更新包运行安装后脚本,该脚本执行诸如对该更新进行必要的本地更改等操作。 将当前软件的根文件夹复制到previous(previous如果存在,则首先删除现有文件夹)。 将stage文件夹复制到latest(latest如果存在,则首先删除现有文件夹)。 确保current符号链接指向latest。 重新引导设备(固件更新(如果存在)在重新引导时应用)。 在新建设备上也存在初始部署的问题。这些设备当前基于SD卡(存在其自身的问题集,不在本文范围内),因此此过程包括: 存在一个SD映像,上面带有该软件的某些稳定早期版本。 从该映像创建SD卡。 首次启动时,会进行各种首次特定于设备的(基于序列号)初始化,然后自动更新程序将照常获取并安装该软件的最新生产版本。 另外,我需要开发设备的支持。对于开发设备: 完整的本地git repo会保留在设备上。 该current符号链接指向开发目录。 do_not_update存在一个本地文件,该文件可防止自动更新程序随生产更新一起删除开发代码。 现在,从理论上讲,部署过程应为: 一旦准备好部署代码,就将其推送到发布分支。 按下服务器上的“部署更新”按钮。 该更新现已生效,设备在下次检查时将自动更新。 但是,实践中存在大量问题: Web服务器代码与设备代码位于相同的存储库中,并且服务器具有我要执行的本地git存储库。最新的Web服务器代码与最新的设备代码不在同一分支上。目录结构有问题。当“部署更新”按钮从生产分支中提取最新版本时,会将其提取到服务器代码的子目录中。这意味着当我从头开始部署到服务器时,我必须通过将设备生产分支捕获到该子目录中来手动“播种”该子目录,因为如果我不进行部署,则可能是由于git user错误造成的。从父目录的Web服务器分支中提取设备代码。我认为这可以解决,方法是使暂存区不是服务器本地git repo的子目录。 Web服务器当前不永久维护设备软件的git哈希。在服务器启动时,它会git rev-parse HEAD在其本地设备软件仓库中执行,以检索当前哈希。由于某些原因,我无法全神贯注,这还会导致大量逻辑错误,在此不再赘述,足以说明有时重新启动服务器会使事情搞砸,特别是如果服务器是全新的并且没有生产分支仓库已被撤消。如果需要的话,我很乐意分享该逻辑的源代码,但是这篇文章越来越长。 如果清理脚本(服务器端)由于某种原因而失败,则服务器将拥有最新的存储库,但同步/丢失更新包不完整,因此git rev-parse HEAD将返回与实际不匹配的哈希服务于设备,并且必须在服务器命令行上手动更正此处的问题。即服务器不知道更新程序包是不正确的,它只是始终以纯属为前提。结合以上几点,使服务器在实践中极为脆弱。 最大的问题之一是:设备上当前没有运行单独的updater守护程序。由于等待wifi上网的复杂性和最后一刻的黑客行为,它是检查和更新设备的主要设备控制软件。这意味着,如果某种程度上未经测试的版本将其投入生产,并且控制软件无法启动,则实际上存在的所有设备都是砖砌的,因为它不再能够自我更新。这将是生产中的绝对噩梦。如果单个设备在不幸的时间断电,则同样的处理方法。 另一个主要问题是:不支持增量更新。举例来说,如果设备一段时间没有打开,那么下次对其进行更新时,它会跳过一系列发行版本,因此它必须能够进行直接的版本跳过更新。更新部署的结果是确保任何给定更新都可以应用在任何给定过去版本之上的噩梦。此外,由于使用git散列来标识版本而不是版本号,因此目前尚无法对版本进行字典式比较以促进增量更新。 我当前不支持的一个新要求是,将存在一些必须在管理服务器端配置的每设备配置选项(键/值对)。我不介意以某种方式将这些每设备选项以与软件更新相同的HTTP请求提供给设备(也许我可以将其封装在HTTP标头/ Cookie中),尽管我不太担心,因为我可以始终使其成为单独的HTTP请求。 …

7
使用Apt资料库进行付费软件更新
我正在尝试确定一种分发可能具有每周和/或每月更新的托管/站点Web应用程序软件更新的方法。我不希望使用现场产品的客户不必担心手动更新,而只希望它可以自动下载并安装Google Chrome。我打算提供一个包含Ubuntu和安装和配置的软件的OVF文件。 我关于如何分发软件的第一个想法是创建六个Apt存储库/通道(目前不确定哪个会更好),可以使用密钥通过SSH访问它,因此,如果客户不续订,我们可以禁用其帐户: Beta-在测试数据内部使用,以检查包装是否存在重大缺陷。 内部-内部用于实时数据以检查包装是否有缺陷(狗食阶段)。 外部1-部署到我们用户群的1%(随机选择)以检查缺陷。 外部9-部署到我们用户群的9%(随机选择)以检查缺陷。 外部90-部署到其余90%的用户。 托管-部署到托管环境。 如果报告了问题,则将在每个阶段进行签名以移入下一个存储库。 我对社区的问题是: 有人曾尝试过类似的方法吗? 谁能看到这种程序的弊端? 有没有更好的办法?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.