如何管理Perl模块的依赖性?
我目前正在一个项目中,该项目使用另一个部门作为基地开发的框架开发.我们目前正在我们的部门引入质量标准(最终,是的!),但目前不可能将其介绍给其他部门.结果,我们正在反对一个没有API稳定性或稳定发行的恒定移动目标,至少压力很大. 由于我们首先要在结束时修复问题,因此我们希望确保自己对"上游"又称框架代码的更改的更改.我们设想了硬模块依赖性: 仅使用代码中定义的框架模块的某些版本范围. 使用单位测试检查来确保所有必要的版本仍然可用. 每个版本范围扩展名需要框架代码的同行评审. 这就是到目前为止的计划.现在问题: 这是明智的吗?如果没有,还有其他想法吗? 一个人如何在Perl中实现?使用use Module我们只能定义最低版本代码应该使用. 解决方案 这是一个非常明智的计划,我通过我一直称为" DPAN"的私人CPAN式存储库来实现它.您可以从真正的CPAN(或Backpan)中选择所需的发行版和版本,然后从中创建自己的存储库.您的CPAN客户仅指向此存
0 2023-05-24
编程技术问答社区
通过在数据库中添加索引来提高应用程序性能
我有一个旧的Web应用程序,其中包含大量旧版代码,我需要提高某些报告的性能.我想避免重写报告,因为它是很难维护,测试和开发的标准旧应用程序.因此,我试图通过在MSSQL(2008)中添加报告查询的索引来加快这些报告.报告执行大约3-4k查询. 以下是我的改进计划: 1.通过运行 清洁MSSQL缓冲区 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS 2.运行MSSQL Profiler,然后执行报告. 3.收集所有报告的查询,然后将其导出到MSSQL. 4.计算持续时间总和. 5. textdata组查询,然后通过sum(duration) desc订购. 6.从Profiler的导出器执行查询,并添加MSSQL Management Studio推荐的索引. 7.重复步骤从1到6,并比较结果. 我有有趣的结果.当我提高报告#1绩效时,报告#2绩效将降低.有时,在添加索引后
6 2023-05-23
编程技术问答社区
你会在一个有传统数据库的项目中使用NHibernate吗,这部分是你无法控制的。
对我而言,答案是当前的:不,我会使用ibatis,因为当数据库模型和对象模型不同步时,NHIBERNATE是一种痛苦.如果我对数据库没有完全的控制权,我最终会做很多工作. 我为什么要问? 好吧,首先:我从未使用过Nhibernate.我只是从表面上知道.我已经阅读了有关遗产数据库的Ibatis的优势. 第二:最近,我与与Hibernate一起工作的人进行了讨论(JEP,Hibernate之前没有" N").他告诉我,ORM框架现在非常先进,并提倡冬眠.由于我对Nhibernate不感兴趣,因此我没有跟踪最近的发展. 也许是时候重新考虑我的答案了? 解决方案 ibatis当然很容易将对象映射到旧数据库系统. 最近NHibernate 1.2和2.0具有一个功能集,可以使您重新考虑Ibatis. nhibrenate与复合键合作,在较旧的数据库中经常发生,它们并不总是很愉快,但对此有支持. nhibernate可以利用存储过程用于实体的CRU
0 2023-05-14
编程技术问答社区
如何在SQL*Plus中打开一个存储过程并编辑它?
我需要对旧的Oracle存储的过程进行一些更改,该过程正在保留在旧的旧遗产过程中.我可以使用SQL plus连接到DB的唯一工具.如何将存储的PROC加载到存储器中以在SQL Plus中编辑? 我在网上发现的教程并不能解决这是如何完成的. : - ( 解决方案 盒子是HPUX,没有tns侦听器正在运行,这几乎可以擦掉整个开发工具的机队.但是,DBA能够使用称为OEM的管理工具进行连接并进行必要变化.谢谢大家的建议. 其他解决方案 下载要容易得多 蟾蜍的试用版 刮擦以前的建议,我只是尝试了建议的Oracle SQL开发人员链接,并且对编辑Procs的peachy fest. 对于 sqlplus 您几乎需要显示存储的proc的内容,然后将其插入文件(如dcookie :--)): sqlplus> spool myprocname.sql; sqlplus> select text from all_source where name = 'MY
2 2023-05-13
编程技术问答社区
如何(单元)测试数据密集型PL/SQL应用程序
我们的团队愿意单位测试在运行项目下编写的新代码,该代码扩展了现有的巨大甲骨文系统. 该系统仅在PL/SQL中编写,由数千个表,数百个存储过程包组成,主要是从表中获取数据和/或插入/更新其他数据. 我们的扩展名不例外.大多数函数从许多相互界表(在返回逻辑之前添加了一点逻辑)或从一个复杂的数据结构转换为另一种(以另一种方式复杂)的转换. > 这样的单位测试的最佳方法是什么? 没有现有代码库的单元测试.更糟糕的是,只有包装,触发器和视图是源控制的,表结构(包括" Alter Table"内容和必要的数据转换是通过频道除外的版本控制部署的).在我们的项目范围内无法更改此问题. 维护测试数据集似乎是不可能的 我很高兴为我们提供任何建议或参考.一些团队成员往往会弄清楚如何甚至如何开始我们的单位测试经验,都不涵盖PL/SQL数据密集型遗产系统(只有那些"从书本"的Greenfield Java Projects). 解决方案 有几种不同的测试工具用于PL/SQL.
2 2023-05-13
编程技术问答社区
bash: $[<算术表达式>] vs. $((<算术表达式>))
我只是偶然发现了bash语法: foo=42 bar=$[foo+1] # evaluates an arithmetic expression 当我为此谷歌搜索时,我发现 3.4.6.算术扩展 算术扩张允许评估算术表达和结果的取代.算术扩展的格式为: $(( EXPRESSION )) ... 在可能的情况下,Bash用户应该尝试使用Square Brackets的语法: $[ EXPRESSION ] 但是,这只会计算表达的结果,并且没有测试... 在我的Bash Man页面中,我只能找到$(( EXPRESSION ))表格,例如: foo=42 bar=$((foo+1)) # evaluates an arithmetic expression 那么,与$((...))有$[...]的$[...] $[...]只是$((...))的旧版本? 解决方案 bash v3.2.48的manpage说: [...
0 2023-05-12
编程技术问答社区
如何创建一个用于测试的传统(v1或v2)X.509证书
我必须针对新代码编写测试案例,以确保X.509证书是版本3,但是我需要一些遗产(V1/V2)证书才能在测试过程中使用以验证代码是否有效. 我正在尝试使用Mac上的OpenSSL生成证书.我得到的只是V3证书. 我已经阅读了OpenSSL manpage,对创建V1或V2证书一无所知. 除了在旧硬件上设置旧操作系统并安装了旧版本的OpenSSL外,是否有任何想法生成旧证书或将V3证书转换为V1/V2? 解决方案 版本1和版本3证书之间的关键区别是版本3中的证书扩展名. 看一下OpenSSL ca >. -extensions section选项的文档说明: 发行证书时包含要添加证书扩展名的配置文件的部分(默认为x509_extensions,除非使用 - extfile选项).如果没有扩展部分,则创建V1证书.如果存在扩展部分(即使是空的),则创建V3证书.请参阅:w 要创建版本1证书,请指向您的OpenSSL命令一个不扩展部分的配置文件.删除本节的一种
4 2023-05-11
编程技术问答社区
是否还有充分的理由支持JDK 1.4?
我正在考虑在Java组建一个OpenSource项目,并在不支持JDKS 1.4及以上的辩论中进行辩论.该框架绝对可以使用较旧的Java模式和成语编写,但实际上将从更成熟的1.5+版本(例如通用和注释)的功能中受益. 所以我想知道的是,如果选择框架时对较旧的JDK的支持是一个主要的决定因素? 可以理解的是,有一些旧系统陷入了较旧的JDK,但是后面的人,外面的人是否有令人信服的技术原因支持1.4 JDK? 谢谢, 史蒂夫 解决方案 我想不出任何技术原因来坚持主流Java的1.4兼容性,但可能是特定的移动设备或嵌入式设备(请参阅乔恩答案的讨论).传统支持必须具有限制,而1.5已近5年.在我看来,让人们继续前进的理由更具令人信服的理由. 更新(我无法入睡):要考虑的一个很好的先例是结束sep '09 ),而java 1.4本身就是自10月10日以来就不支持. 其他解决方案 是否可能有人想在黑莓或类似的移动设备上使用它?我不相信他们通常支持1.5.
8 2023-05-11
编程技术问答社区
为什么VFP .NET OLEdb供应商不能在64位Windows中工作?
我使用VB编写了Windows服务,该服务读取了Visual FoxPro数据库中的一些遗留数据64位,现在服务无法正常工作.我收到的消息找不到VFP .NET OLEDB提供商.我研究了,一切似乎都指出没有解决方案.任何帮助,请... 解决方案 您是否尝试过将目标CPU更改为x86而不是"Any CPU"在高级编译器选项中?我知道这通过强制使用32位版本来解决其他OLEDB提供商的问题. 其他解决方案 您需要使用目标CPU设置为x86进行编译,以强制代码使用VFP OLE Db provider的32 bit版本. Microsoft已表示 C7> Visual Foxpro Ole DB提供商的版本.对于价值,Microsoft具有也表示 VFP 9是最终版本Visual FoxPro的支持和支持将以2015结束.如果您需要VFP 9的OLE DB提供商,则可以得到在这里. 其他解决方案 Sybase Anywhere具有VFP表的OLEDB provi
0 2023-05-08
编程技术问答社区
陷入困境:如何序列化遗留对象以提交给Python多处理池
我写了一个不错的并行工作处理器,它接受工作(功能,他们的论点,超时信息等),然后提交给Python job.resultGetter = self.pool.apply_async( func = job.workFunction, kwds = job.workFunctionKeywordArguments ) 我正在尝试将此并行的作业处理器与大量的遗产代码一起使用,也许自然而然地遇到了腌制问题: PicklingError: Can’t pickle : attribute lookup builtin .instancemethod failed 当我尝试提交有问题的对象作为工作功能的参数时,可以观察到这种类型的问题.真正的问题是,这是旧版代码,我建议我只能对其进行非常小的更改.所以...我可以在某个地方进行一些巧妙的技巧或简单的修改,可以允许我的并行工作处理器代码应对这些传统上不可贴的对象?我完全控制了并行的作业处理
0 2023-05-03
编程技术问答社区
在PHP网站中整合Facebook
我正在尝试将现有的PHP网站与Facebook登录功能集成在一起.我目前有一个简单的登录注册用户名,密码和电子邮件以进行激活,其详细信息存储在MySQL数据库中.我想为Facebook用户添加其他登录访问.我担心如何将当前的登录访问与新的Facebook访问集成在一起.我脑海中的主要内容是,我所有的页面都要求登录用户,并且我使用cookie来存储会话变量,例如我用来在页面上构建内容的昵称. 我对网络上研究的许多方法感到困惑,现在有些方法已经过时了,而另一些方法似乎是一半的解决方案.这三个保持重新出现. a)login.php,register.php和fbreg.php 使用FB登录/寄存器创建会话并将身份验证传递给fbreg.php时,登录和register.php出现在登录时出现. (register.php的摘要) FB.init({appId: '
2 2023-05-02
编程技术问答社区
没有字段的私有设置器--单元测试遗留代码
用于测试myClass- 我有: MyClass{ private MyThing usedThing = new MyThing(); public String funcToTest(){ return usedThing.Fields.something.ToString(); } } 问题: 这只是该方法的一部分,但是我的问题没有设置器,也没有更改产品代码,我如何注入模拟的 mything 对象进入测试? 谢谢 解决方案 您可以为此使用反射.这是不好的,因为它允许您使用拥有类外部的私人方法或字段,从而破坏封装.但是测试是一种有意义的用例. 您可以通过以下方式从测试类访问您的私有字段: MyClass myClass = new MyClass(); Field field = MyClass.class.getDeclaredField("use
2 2023-04-20
编程技术问答社区
通过ES6模块导入加载和消费传统的JS模块(如IIFEs)。
我有 iife iife 在某些库代码中功能需要用于IE10+的旧应用程序(无ES6模块加载等). 但是,我开始开发一个将使用ES6和Typescript的React应用程序,我想重复使用我已经拥有的代码而不复制文件.经过一番研究,我发现我想使用UMD模式来允许这些库文件作为导入,并允许React App通过ES6模块加载导入它们. 我提出了以下转换: var Utils = (function(){ var self = { MyFunction: function(){ console.log("MyFunction"); } }; return self; })(); to (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exp
0 2023-04-19
编程技术问答社区
命名空间/解决方案结构
我为提出这样一个广泛的问题而表示歉意,但这对我来说可能具有挑战性.我的团队即将开始一个大型项目,希望多年来演变的所有随机的一次性代码库.鉴于该项目将涵盖整个公司的标准化逻辑实体("客户","员工"),小任务,控制小任务的大型任务以及公用事业服务,我正在努力找出结构的最佳方法名称空间和代码结构. 尽管我想我没有给您足够的细节,您是否有有关如何在逻辑上划分域的资源或建议?如果有帮助的话,大多数此功能将通过Web服务揭示,并且我们是Microsoft 使用所有最新的Gizmos和小工具购物. 我正在辩论一个大规模的解决方案,以使参考文献变得更容易,但是这会变得太笨拙吗? 我应该总结旧的应用程序功能,还是在名称空间中放置完全不可知论(例如,OurCRMProduct.Customer类而不是通用Customer类)? 每个服务/项目是否应该拥有自己的BAL和DAL,还是应该是所有内容所引用的完全独立的组件? 我没有组织此类深远的项目的经验,只有一次性,所以我正在寻找可以得到
0 2023-04-19
编程技术问答社区
在不使用javascript和不破坏CSRF保护的情况下安全地更新一个会话
我正在努力在旧的Web应用程序上进行一些安全性硬化,并遇到了一些冲突. 因此,我以CSRF令牌作为形式的隐藏输入添加了CSRF保护.很正常. 然后,我大大降低了会话超时(上一个值为8小时,从安全的角度来看,这显然是不可接受的).但是,为了防止用户在会议时间出版时失去工作,我还实施了一个模式登录对话框,并在完成表单提交之前,使用一些JavaScript进行了续订会话.此JavaScript还会在成功登录时更新来自服务器的新值的CSRF令牌输入,因为显然,旧的CSRF令牌与他们以前的现在预期的会话相关联.对于此应用程序而言,丢失工作是一件很大的交易. 但是,我们在机器上的用户群中的一部分并不重要,其中一些非常严厉的政策完全禁止JavaScript.因此,这些人也需要次要解决方法.如果我从头开始构建应用程序,我觉得这些用户的最佳解决方案是简单地重新填充它们所在的页面上的所有输入(在超时之前)使用帖子数据的值(用户日志之后早在).但是,实施这将是这种旧代码中的巨大事业,可能是不
12 2023-04-12
编程技术问答社区
在遗留的应用程序中,将静态类转换为普通类的简单方法,以实现嘲弄
传统应用程序中的静态类在单位测试中很难使用,因为您无法模拟它们. 在整个应用程序中将它们转换为使用Interafce的常规类的简单方法是什么? 解决方案 以两个步骤执行此操作是最简单且风险较小的. 第一步是重复的且不创意的,可以分配给初级工程师,甚至可以使用小程序来完成. 对于每个班级,请按照以下步骤: 从所需的方法和属性中删除静态关键字. 添加一个称为Instance的静态成员,其中包含类的实例.是的,我们正在制作 singleton . //Old class static class MyHelpers { public static string Foo(string x) { /* Implementation */ } } //New class class MyHelpers { public static MyHelpers Instance { get; } = new MyHelpers
0 2023-04-01
编程技术问答社区
将一个大面值的字节集合放入一个结构中,以便提取出数值
有一个关于阅读c c c c/c ++数据结构在字节数组中中,但我无法使代码用于收集大型(网络字节订单)字节的代码. (编辑:请注意,我的真实结构不仅有一个字段.)是否有一种方法可以将字节合并到结构的大型版本中,然后在框架的endianness中拔出值,哪个通常是小的)? (注意,反转字节的数组将不是工作 - 每个值的字节必须逆转,这与您相同的集合与反向所有字节相同.) ) 这应该总结我要寻找的东西(le = littleendian,be = bigendian): void Main() { var leBytes = new byte[] {1, 0, 2, 0}; var beBytes = new byte[] {0, 1, 0, 2}; Foo fooLe = ByteArrayToStructure(leBytes); Foo fooBe = ByteArrayToStructureBigEndian(
2 2023-04-01
编程技术问答社区
打破本地依赖,对一个无效方法进行单元测试
我正在使用Mockito进行练习,但是我对如何测试一个取决于本地对象中方法调用的方法有些困扰. 请参阅以下示例: public class Worker { public void work() { Vodka vodka = new Vodka(); vodka.drink(); } } 这个工人,而不是做他的工作,而是喜欢喝酒.但是我想添加一个测试,以证明他在工作时喝酒.但是没有办法这样做,因为我必须验证方法饮料()在调用方法时被调用.我认为您同意我的观点,这是不可能测试的,因此我需要在开始测试之前打破依赖性. 这是我的首先怀疑,您认为打破这种依赖性的最佳方法是什么? 如果我只是将伏特加对象的范围更改为Global,我认为不会是好的(我不想将其暴露于班级的其他部分).我考虑过创建工厂,类似的东西: public class Worker {
18 2023-03-29
编程技术问答社区
在Ruby中解析CArchive(MFC类)文件
我有一个旧应用,它似乎正在用Carchive(Legacy MFC应用程序)导出/保存文件. 我们目前正在重构网络工具.我可以在Ruby中查看库以解析和加载这些旧文件吗? 我可以看什么库? 根据 xml serialization,对于MFC 包括: 非稳定性 - 如果您阅读了另一个程序的另一个版本制作的档案,您的程序可能会崩溃.复杂且笨拙的版本管理可以避免这种情况.通过使用XML,可以在很大程度上避免. - 您的程序对象模型与存档数据之间的重度依赖性.更改程序模型,几乎不可能从上一个版本中读取数据. - 无法编辑存档的数据,除了关联的应用程序外,都可以理解和更改. . 另外 - 存在旧软件的4个版本,我如何能够克服此对象模型的,对不同版本的存档数据问题? 需要总落后(导入)功能. 解决方案 Carchive没有可以解析的格式.这只是一个二进制文件.您必须知道其中的内容才能知道如何阅读它.库可以更容易阅读一些数据类型(CString,CArray等),但我
2 2023-03-27
编程技术问答社区
是否可以在Visual Studio 2012中使用VC++ 6编译器?
我正在使用Visual Studio 2012来开发项目,并且我还安装了Visual Studio 2010-这使我可以选择在Visual Studio 2012中使用VC ++ 10编译器(Project Properties),但我也安装了Visual C ++ 6和以某种方式使用VC ++ 6编译器的选项不存在Visual Studio 2012中,我该如何添加此选项(手动)? ? 解决方案 答案肯定是.似乎很可能,但是我无法获得VC 6的副本,因此我无法验证它.我能够做的是让VS 2012使用VC 7(VS 2002)编译项目. 更新:答案绝对是. OP在评论中指示他能够通过使用此解决方案使VC 6工作. 配置 我这样做的方式是安装以下内容(按安装顺序): Windows 7,Sp1,32位 i选择Windows 7,因为它是最早支持VS 2012的Windows版本.我使用了32位版本,因为VS 2002(VC7)不会在X64机器上安装.
36 2023-03-22
编程技术问答社区