在工作中,我们有一个专门的SEO分析师,他的工作是倾注大量数据(KeyNote/Compete等)并为高管们生成花哨的报告,以便他们可以看到我们如何在有机搜索排名中对抗竞争对手.他还通过尽可能优化的方式领导提高我们网站SEO排名的举措.
我们还有一个长期的任务,即减少我们的页面加载时间,现在在某些页面上非常粗制滥造.
搜索引擎优化的人提到语义,有效的HTML获取爬虫的点数多于混乱的凌乱的HTML.我一直在研究一种实时的HTML压缩器,它会减少我们的页面大小,这是一个非常好的块.压缩HTML会不会影响我们的网站排名?
目前,当出现脚本错误时,WScript会弹出消息框.这些脚本由其他进程调用,并在服务器上运行,因此没有人可以忽略错误框.
我想要的是将错误消息转储到STDOUT,并执行以返回调用进程.弹出作为MSGBox只是挂起了整个事情.
想法?
我正在构建一些自定义工具来对抗JIRA安装,并且暴露的SOAP API很棒,除了没有命名参数.
例如,getIssue的原型是:
RemoteIssue getIssue (string in0, string in1);
Run Code Online (Sandbox Code Playgroud)
所有SOAP RPC方法都遵循这个约定,所以没有文档我很难理解要传递的内容很多.
有谁知道最终的API文档指南?
我使用控制台应用程序编写一些测试代码:
/// <summary>
/// Returns AD information for a specified userID.
/// </summary>
/// <param name="ntID"></param>
/// <returns></returns>
public ADUser GetUser(string ntID)
{
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("(cn={0})", ntID);
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("userPrincipalName");
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
return new ADUser(result);
}
Run Code Online (Sandbox Code Playgroud)
这在控制台应用程序中运行良好.但是,当我将其移动到ASP.NET应用程序时,我收到一条错误消息,指出不知道正确的域.
在ASPNET帐户上运行时,是否存在访问AD的技巧?
编辑:只传递LDAP://域连接字符串是不够的,因为它需要一个实际的登录/密码.因为它运行在计算机上的本地帐户上,所以我不确定要使用哪个AD L/P. 我可以以某种方式将访问用户帐户委托给它吗?
编辑#2:当尝试使用身份模拟时,我得到一个DirectoryServicesCOMException:
这是周末,这意味着我可以玩我的爱好项目了.
我已经厌倦了手工创建测试级别,所以我想我会从引擎开发中休息并在级别编辑器上工作:
关卡编辑http://gfilter.net/junk/Editor.JPG
我想在编辑器中实现泛洪填充算法,它就像在绘图程序中一样工作.有没有人有任何关于哪种技术对我有用的指示?
级别只是一个2d数组,因此可以认为它与位图真的相同.
谢谢!
我有一个可执行文件,它从命令提示符立即运行,但在使用System.Diagnostics.Process生成时似乎永远不会返回:
基本上,我正在围绕Accurev CLI接口编写.NET库包装器,因此每个方法调用都会生成CLI进程以执行命令.
这适用于除一个命令以外的所有命令:
accurev.exe show depots
Run Code Online (Sandbox Code Playgroud)
但是,当从控制台运行它时,它运行正常,当我使用.net进程调用它时,它会挂起...我使用的进程生成代码是:
public static string ExecuteCommand(string command)
{
Process p = createProcess(command);
p.Start();
p.WaitForExit();
// Accurev writes to the error stream if ExitCode is non zero.
if (p.ExitCode != 0)
{
string error = p.StandardError.ReadToEnd();
Log.Write(command + " failed..." + error);
throw new AccurevException(error);
}
else
{
return p.StandardOutput.ReadToEnd();
}
}
/// Creates Accurev Process
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
private static Process createProcess(string command)
{
Log.Write("Executing Command: " + command);
ProcessStartInfo …Run Code Online (Sandbox Code Playgroud) 是否有内置的方法来限制System.Collection.Generics.Stack的深度?因此,如果您处于最大容量,推送新元素将删除堆栈的底部?
我知道我可以通过转换为数组并重建堆栈来实现它,但我认为可能已经有了一个方法.
编辑:我写了一个扩展方法:
public static void Trim<T> (this Stack<T> stack, int trimCount)
{
if (stack.Count <= trimCount)
return;
stack = new
Stack<T>
(
stack
.ToArray()
.Take(trimCount)
);
}
Run Code Online (Sandbox Code Playgroud)
因此,它在修剪时返回一个新的堆栈,但不是不可变的功能方式=)
这样做的原因是我在堆栈中存储应用程序的撤消步骤,我只想存储有限数量的步骤.
我正在对现有数据库进行一些架构更改.
我备份了数据库以获取开发副本,并进行了更改.我将创建一个单一的滚动脚本,以便在单个事务中迁移生产计算机上的更改.
是否存在创建回滚脚本的最佳实践,以解决部署问题?在我写之前,然后使用以下模式手工编写:
有更好的方法吗?
我已经看到了两种检查IDataReader中是否存在列的常用方法:
public bool HasColumn(IDataReader reader, string columnName)
{
try
{
reader.getOrdinal(columnName)
return true;
}
catch
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
public bool HasColumn(IDataReader reader, string columnName)
{
reader.GetSchemaTable()
.DefaultView.RowFilter = "ColumnName='" + columnName + "'";
return (reader.GetSchemaTable().DefaultView.Count > 0);
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我使用了第二个,因为我讨厌使用异常.
但是,在大型数据集上,我认为RowFilter可能不得不对每列执行表扫描,这可能会非常慢.
思考?
我有一个复杂的视图,用于拉出一个主键列表,指示表中已在两个时间点之间修改的行.
此视图必须查询13个相关表并查看changelog表以确定实体是否"脏".
即使完成了所有这些,也可以进行简单的查询:
select * from vwDirtyEntities;
Run Code Online (Sandbox Code Playgroud)
只需2秒.
但是,如果我将其更改为
select
e.Name
from
Entities e
inner join vwDirtyEntities de
on e.Entity_ID = de.Entity_ID
Run Code Online (Sandbox Code Playgroud)
这需要1.5分钟.
但是,如果我这样做:
declare @dirtyEntities table
(
Entity_id uniqueidentifier;
)
insert into @dirtyEntities
select * from vwDirtyEntities;
select
e.Name
from
Entities e
inner join @dirtyEntities de
on e.Entity_ID = de.Entity_ID
Run Code Online (Sandbox Code Playgroud)
我在2秒钟内得到了相同的结果.
这让我相信SQLServer在加入实体时正在评估每行的视图,而不是构建一个涉及将上面的单个内连接加到视图中的其他连接的查询计划.
请注意,我想从此视图加入完整的结果集,因为它只过滤掉我想要的内部键.
我知道我可以将它变成物化视图,但是这将涉及到视图及其依赖关系的模式绑定,我不喜欢维护索引会导致的开销(此视图仅针对导出进行查询,而有更多写入到基础表).
因此,除了使用表变量来缓存视图结果之外,还有什么方法可以告诉SQL Server在评估连接时缓存视图?我尝试更改连接顺序(从视图中选择并加入实体),但这没有任何区别.
视图本身也非常高效,并且没有优化空间.
c# ×3
automation ×2
t-sql ×2
.net ×1
accurev ×1
ado.net ×1
algorithm ×1
asp.net ×1
credentials ×1
flood-fill ×1
generics ×1
idatareader ×1
jira ×1
process ×1
rollback ×1
seo ×1
soap ×1
sql ×1
sql-server ×1
stack ×1
vbscript ×1
views ×1
wsh ×1