我正在开发一个需要在服务器上快速渲染简单3D场景的应用程序,然后通过HTTP将它们作为JPEG返回.基本上,我希望能够通过执行以下操作,在HTML页面中简单地包含动态3D场景:
<img src="http://www.myserver.com/renderimage?scene=1&x=123&y=123&z=123">
Run Code Online (Sandbox Code Playgroud)
我的问题是用于渲染的技术.在桌面应用程序中,我很自然地使用DirectX,但我担心它可能不适合服务器端应用程序,它将为数十甚至数百个用户串联创建映像.有人对这个有经验么?是否有适合此应用的3D API(最好是免费提供)?从头开始编写软件渲染器会更好吗?
我对使用DirectX或OpenGL的主要担心是它是否能在虚拟化服务器环境中运行良好,以及它是否适用于典型的服务器硬件(我无法控制).
我有一个内部应用程序页面,显示使用Web服务从文档存储系统流式传输的文档图像.我遇到的问题是,当用户进行搜索时,他们可能会获得数百次点击,我必须在一个大页面上显示,这样他们就可以打印出来.这在Firefox中运行良好,但在IE中它会在一段时间后停止加载图像,所以我得到一百左右的显示,其余的只有破碎的图像符号.我可以在某个地方更改此超时吗?
我正在开发一个用ColdFusion编码的网站.我有一个CSS/HTML模板我想应用于每个页面的内容,而不需要复制任何超过必要的代码.我已经被ASP.NET的母版所破坏了,这将是我实现这个网站的首选方式.不幸的是,我无法使用该选项.这个网站必须在Coldfusion MX 7上运行.此外,领导该项目的开发人员不喜欢Fusebox,因此该选项已经完成.
每个页面上的主导航,图形页眉和页脚都是相同的.标题标签,元标记和二级导航可能因页面而异.除此之外,只有页面的"主要内容区域"会有所不同.
鉴于这些参数,我如何编码网站以获得最大的可维护性?
如果这是一个"问题",我道歉.似乎答案应该很容易谷歌,但我还没有找到它.
我正在研究一个大型Coldfusion应用程序,它在客户端作用域中存储大量会话/用户数据(即<cfset Client.UserName ="JoshuaC">).我没有写这个应用程序,我没有重大的重构它的奢侈.
我被赋予了将客户端变量设置为72小时后超时的任务.我不完全确定如何做到这一点.如果我编写了应用程序,我会将变量存储在Session范围中,然后更改CFAPPLICATION标记的sessiontimeout属性.虽然如此,我不确定该超时是否会影响客户端变量,或者它们的持久性水平是什么.应用程序现在的工作方式,客户端变量永远不会超时,只清除用户的cookie,或访问将所有客户端范围的应用程序变量设置为""的注销页面,将清除这些值.
当然,我可以创建某种时间戳变量,如Client.LastAccessDateTime,并在Application.cfm中添加一些内容,以清除客户端变量,如果该日期时间超过Now()之前的72小时.但是必须有一个更好的方法,对吧?
我的组织决定加密我们数据库中的某些数据,并且我已经完成了实施加密的任务.我需要能够加密数据,将加密版本存储在我们数据库的VARCHAR字段中,然后检索它并将其解密回其通常状态.
从表面上看,这似乎是一项简单的任务.有许多方法可以实现加密.我之前使用过的是基于StackOverflow问题中的AES加密代码.
在这种情况下更难的是,我需要编写代码来加密/解密访问我们数据库的各种应用程序中的数据,其中一些应用程序是使用不同的技术开发的.我们有使用Coldfusion 5,Classic ASP和ASP.NET 2.0编写的应用程序.我需要能够使用Coldfusion代码加密数据并将其存储在数据库中,然后在ASP.NET中读取并解密回原始形式.或者在Classic ASP中加密它并在Coldfusion中解密它.或者这些平台的任何其他组合.
事实证明这比我预期的要难.声称使用相同算法的不同类/对象/函数/库似乎产生不同的结果,即使给定相同的数据和相同的共享秘密.过去,我们使用CAPICOM在Coldfusion和Classic ASP之间提供加密互操作性.但是我试图让它在ASP.NET中工作时遇到了麻烦.我已经阅读了这篇关于如何让CAPICOM在.NET中工作的文章,但这些建议并没有对我有用.我甚至无法生成一个interop类或导入COM对象的引用而不会出现错误.此外,我们的一些生产服务器的操作系统似乎与CAPICOM不兼容,因此无论如何这可能都是死路一条.
有没有人对如何实现加密有任何建议,以至于3个平台中的任何一个都可以解密其他人加密的内容,同时仍然使用相当强大的算法?
编辑2011-12-29:
如下面的评论所述,我目前希望找到一个与我们现有的使用CAPICOM的Coldfusion/ASP Classic代码兼容的ASP.NET解决方案.这样做的原因是我们的团队负责人不希望我为我们当前的目的在我们的代码中引入新的加密方法,除非我还使用加密修改我们的旧应用程序以用于不同的目的以使用相同的方法.他想为两种目的使用相同的加密方法.由于修改我们的旧应用程序以使用新的加密方法不仅意味着更改代码,还要跟踪旧应用程序加密的所有数据,解密并使用新方法重新加密,我犹豫不决除非我必须这样做.希望我能找到一种让ASP.NET读取现有加密数据的方法.
来自我们其他Coldfusion和ASP Classic应用程序的加密数据使用CAPICOM COM对象进行编码.据我所知,这些设置一般都是AES加密,最大密钥大小(我相信在AES中是256位).
在@ Leigh的请求下,这是我们现有的CF应用程序如何使用CAPICOM的简化示例:
<cfscript>
encryptObject = CreateObject("com","CAPICOM.EncryptedData");
encryptObject.Algorithm.Name = 4; // 4 is AES
encryptObject.Algorithm.KeyLength = 0; // 0 is MAX, I believe 256-bit in the case of AES
encryptObject.SetSecret(sharedSecret);
encryptObject.Content = stringToEncrypt;
encryptedData = localScope.encryptObject.Encrypt();
</cfscript>
Run Code Online (Sandbox Code Playgroud) 似乎浮动的HTML元素不会扩展其容器的高度.例如,请考虑以下代码:
.portfoliosite {
background: #777;
padding: 10px;
width: 550px;
}
.portfoliothumbnail {
background: red;
margin: 0 10px 10px 0;
float: left;
height: 150px;
width: 150px;
}Run Code Online (Sandbox Code Playgroud)
<div class="portfoliosite">
<div class="portfoliothumbnail"><!-- Img tag goes here --></div>
<p class="portfoliotitle">AwesomeSite.Com</p>
<p class="portfoliodescription">An awesome site I did. It launched on Jan 1, 2009</p>
</div>Run Code Online (Sandbox Code Playgroud)
注意灰色背景的包含div比红色div短,红色div扩展到容器边界之外.我希望包含元素扩展到其内容的大小,包括浮动元素.
有没有一个优雅的解决方案来实现这一点,最好是一个不涉及设置固定高度或使用JavaScript?
我需要调用用.NET编写的Web服务.进行调用的应用程序是用ColdFusion编写的.Web服务期望的参数之一是DataSet对象.我无法在ColdFusion中实例化.NET DataSet对象,如何将Web服务传递给它?我在原始XML中编写SOAP请求没有问题,我只是不知道DataSet对象的XML是什么样的.
我正在创建一组ColdFusion自定义标记,旨在简化重用某些布局元素.我将以类似于以下的方式使用它们:
<cfimport prefix="layout" taglib="commonfunctions/layouttags">
<layout:fadingbox>
This text will fade in and out
</layout:fadingbox>
<layout:stockticker>
This text will scroll across the screen
</layout>
Run Code Online (Sandbox Code Playgroud)
为了使这些自定义标记生成的代码能够工作,需要将JavaScript文件链接到页面中,如下所示:
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我更喜欢在自定义标记内包含脚本,而不是让用户自己包含它.问题是JavaScript文件每页只应包含一次.在第一次使用其中一个自定义标签后,我希望在同一页面上对相同标签的后续调用,以避免重复<script>标签.我想到我可以这样做:
<cfif NOT isDefined("Caller.LayoutTagInitialized")>
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
</cfif>
<cfset Caller.LayoutTagInitialized = 1>
Run Code Online (Sandbox Code Playgroud)
......但它似乎不优雅.
我想知道,还有更好的方法吗?
你会如何实现这个?
编辑 - 澄清:
如果我上面写的内容没有意义,这里有一个更详细的例子:
如果我有这样的自定义标签:
<cfif ThisTag.ExecutionMode EQ "start">
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
<div class="mytag">
<cfelse>
</div>
</cfif>
Run Code Online (Sandbox Code Playgroud)
...我有CFML标记调用标签,如下所示:
<layout:mytag>
One
</layout:mytag>
<layout:mytag>
Two
</layout:mytag>
<layout:mytag>
Three
</layout:mytag>
Run Code Online (Sandbox Code Playgroud)
...我希望生成如下的HTML:
<!-- Script included only the first time the tag …Run Code Online (Sandbox Code Playgroud) 我正在尝试将远程 Subversion 存储库恢复到我的本地计算机上。我无法直接访问服务器来运行 shell 命令,但我对存储库本身拥有完整的 svn 权限。
由于某种问题我们尚未确定,当一次针对整个存储库运行时,svnsync、svndump 或我尝试过的任何其他方法都没有成功。有时在操作过程中,它会失败,并显示“连接超时”或“无法访问块”等消息或类似消息。我们尚未找到问题的根源,可能是服务器上的软件问题、损坏的存储库,或者可能只是不可靠的网络连接。无论出现什么问题,控制服务器的人都非常缓慢地帮助我们解决问题,因此我们正在尝试尽可能解决该问题。
我能够批量转储服务器的修订版本。我运行了一系列与这些类似的命令来获取部分转储,如下所示:
svnrdump dump -r0:499 https://server/svn/respository > 0-499.dump
svnrdump dump -r500:999 https://server/svn/respository > 500-999.dump
svnrdump dump -r1000:1499 https://server/svn/respository > 1000-1499.dump
Run Code Online (Sandbox Code Playgroud)
这使我能够解决服务器问题。当转储超时或出现其他问题时,我只是重试该部分直到它起作用,或者使用较小的增量。现在我有许多转储文件,它们一起代表整个存储库。
我的问题是:如何将这些单独的转储合并到一个本地存储库中?
我尝试使用空的本地存储库执行此操作:
svnadmin load repository < 0-499.dump
svnadmin load repository < 500-999.dump
Run Code Online (Sandbox Code Playgroud)
第一个命令有效,但第二个命令失败。该错误消息表明它正在尝试添加已存在的文件,但它放弃了。我发现我可以这样做:
svn mkdir batch1
svnadmin load --parent-dir "batch1" repository < 0-499.dump
svn mkdir batch2
svnadmin load --parent-dir "batch2" repository < 500-999.dump
Run Code Online (Sandbox Code Playgroud)
这成功地将单独的修订批次加载到存储库中的单独目录中,但我不确定如何/是否可以将它们重新组合到单个文件夹中。
我还知道在创建转储时可以使用 --incremental 开关,但我不确定这是否是一个好主意,因为我怀疑增量数据中可能存在一些损坏(我怀疑这是因为运行svnsync或git svn clone在存储库上有时会因校验和不匹配而出错)
我可以以某种方式将我拥有的非增量顺序转储合并到一个统一的新存储库中吗?svnsync如果不是,那么考虑到svnrdump同时针对所有修订运行时从未成功,我应该使用什么其他方法来执行此操作?
我在扩展MembershipProvider的类中有类似下面的代码(下面的代码已被匿名化并略微简化):
SqlConnection conn = new SqlConnection("Integrated Security=;Persist Security Info=False;User ID=WEBUSER;Password=WEBPASSWORD;Initial Catalog=DATABASENAME;Data Source=SERVERNAME");
SqlCommand cmd = new SqlCommand("SELECT Password FROM Membership " +
" WHERE Username = ?", conn);
cmd.Parameters.Add("@Username", System.Data.SqlDbType.NVarChar, 25).Value = "TestUser";
SqlDataReader reader = null;
try
{
conn.Open();
reader = cmd.ExecuteReader(); // Execution breaks here.
Run Code Online (Sandbox Code Playgroud)
代码在到达cmd.ExecuteReader()时中断; 抛出的异常是"System.Data.SqlClient.SqlException:'''附近的语法不正确."
它似乎表现得好像"?" 在命令文本中未正确解释为参数.我无法弄清楚我做错了什么.我承认我的ASP.NET是有点生疏,但我这样写几十次之前的代码,我写了上面的一切看起来像它的使用模式,我看到的教程,并在MSDN的例子相匹配.谁能告诉我我做错了什么?
目标.NET版本是4.0.ASP.NET正在Visual Web Developer Express 2010中的调试环境中的本地计算机上运行.数据库是SQL Server 2005.
我正在为listserv管理应用程序修改基于Coldfusion的界面,以显示页面上最近发布的消息的snippits.这些消息都存储在listserv的邮件服务器上的SQL Server 2005数据库中,理论上它应该很容易查询最近的消息并显示它们.但是,包含电子邮件记录的表的"消息"列似乎包含电子邮件的所有"源代码",与发送到邮件服务器完全相同.它包含控制代码,电子邮件标题和标记.例如,查询中返回的部分消息数据可能如下所示:
This is a multi-part message in MIME format.
------_=_NextPart_001_01CA9A9E.B2224293 Content-Type: text/plain;
charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
All: =20 The correct time for Tuesday's call is 3 pm ET as noted on the agenda
Run Code Online (Sandbox Code Playgroud)
(为了便于阅读,添加了换行符,实际上这一切都在一行上).
当我在网站上显示消息时,我只想让它看起来像这样:
All:
The correct time for Tuesday's call is 3 pm ET as noted on the agenda
Run Code Online (Sandbox Code Playgroud)
实际上,编码比我给出的例子复杂得多.一些消息包括base-64编码附件和类似的东西.如何删除所有电子邮件代码和标记,只显示消息文本?
我想有人必须写一些公共代码或一些自定义标签来做到这一点,但到目前为止我的Google-fu已经失败了.谢谢.
我很抱歉用如此少量的信息提出这么简单的问题,但我无法弄清楚这一点!
我有一个ASP.NET页面,我在其中添加了几个普通的HTML按钮,它们应该将用户带到不同的页面.这是一个例子:
<button onclick="location.href='Default.aspx';">Go Back</button>
Run Code Online (Sandbox Code Playgroud)
我希望在单击时,此按钮会将浏览器重定向到Default.aspx.相反,它似乎只是刷新当前页面,保持URL完整.
这些按钮位于页面范围的ASP.NET <form>标记内.按钮不提交表单.当我在浏览器中查看页面的源代码时,我看不到任何应该拦截位置更改的内容(比如onunload事件处理程序或类似的东西).没有其他框架.这个页面根本没什么了不起的.
我已经尝试使用location=,self.location=,window.location=,和location.replace().从按钮的onclick处理程序中执行时,它们都不起作用.我在Firefox 5和Chrome 10中尝试过.从浏览器的地址栏执行时,javascript 确实有效:javascript: location.href='Default.aspx'; void(0);.
我已经使用Firebug的javascript调试器来试图跟踪单击按钮时发生的情况,我没有看到任何异常.我没有看到任何事件拦截代码或其他问题.错误控制台中未记录任何错误.
在我看来,我已经像以前一样使用了脚本,它总是工作得很好.为什么现在不工作?ASP.NET创建的一些代码,我不知道?是onclick不是从内部功能<button>?这与Chrome和Firefox共享的JS安全性有些奇怪吗?
请帮忙,这让我抓狂!谢谢.
coldfusion ×6
asp.net ×5
html ×3
timeout ×2
.net ×1
3d ×1
api ×1
asp-classic ×1
browser ×1
button ×1
code-reuse ×1
cookies ×1
css ×1
css-float ×1
custom-tags ×1
email ×1
encryption ×1
formatting ×1
javascript ×1
master-pages ×1
parsing ×1
redirect ×1
render ×1
scope ×1
server-side ×1
smtp ×1
soap ×1
svn ×1
svndump ×1
svnsync ×1
web-services ×1