有没有相对简单的方法将现代浏览器插入.NET应用程序?
据我了解,该WebBrowser
控制是一个包装IE,这不会是一个问题,但它看起来是一个很老版本的IE浏览器,以及所有在CSS螺丝起坐方面需要,潜在的安全风险(如果渲染引擎没有打补丁,我真的可以期待修复多个缓冲区溢出问题吗?)和其他问题.
我正在使用Visual Studio C#(快速版 - 它在这里有什么不同吗?)
我想在我的应用程序中集成一个好的Web浏览器.在某些情况下,我只是使用它来处理用户注册过程,与我的网站的一些功能和该订单的其他东西的接口,但我有另一个应用程序,需要更多错误...控制.
我需要:
我正在考虑Chrome,因为它属于BSD许可证,但我会对最新版本的IE感到满意.
尽可能地,我想保持简单.最好的情况是,如果一个人可以修补现有的WebBrowser
控制,这已经占我所需要的约70%,但我不认为这是可能的.
我找到了一个用于Mozilla的activeX控件(http://www.iol.ie/~locka/mozilla/control.htm),但看起来它是一个旧版本,所以它不一定是一个改进.
我愿意接受建议
我是一家开发少数桌面应用程序和网站的单人商店.几个月前我开始使用GIT进行版本控制,我对此感到非常满意,但我的使用非常笨拙,我想知道单个用户的工作流程应该是什么.
现在,我的每个项目文件夹中都有一个.git文件夹.我每隔一段时间就会进行一次更改,我只是继续处理工作副本.
我从来没有从Git存储库中提取任何东西(工作副本仍然存在,它会被Git覆盖吗?),我不太确定如果我创建了一个分支会发生什么(分支创建在哪里?相同的文件夹?)
换句话说,我使用Git主要是为了在需要时看到与旧版本的差异,同时仍然以相同的旧方式工作.
这很好,甚至像这样的基本设置都有优势,但我觉得我错过了这一点.
单人商店的工作流程应该是什么样的?
我正在努力学习XPath.该理论似乎非常简单,除了它不起作用的事实.
我试图获得每个目标元素的内容
XPathDocument doc = new XPathDocument(sPath);
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr;
expr = nav.Compile("/doc/file/body/trans-unit/target");
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
sbDoc.Append(nav2.InnerXml);
}
Run Code Online (Sandbox Code Playgroud)
XML文档如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<doc version="1.2">
<file original="affiliate.php" source-language="EN-US" target-language="FR-FR" datatype="php">
<header>
<skl>
<external-file href="affiliate.php"/>
</skl>
</header>
<body>
<trans-unit id="tu1">
<source xml:lang="EN-US">Your Program Details</source>
<target xml:lang="FR-FR">Your Program Details</target>
</trans-unit>
<trans-unit id="tu2">
<source xml:lang="EN-US">Status</source>
<target xml:lang="FR-FR">Status</target>
</trans-unit>
Run Code Online (Sandbox Code Playgroud)
这几乎是从一个教程中逐字逐句,但我无法让它工作.创建迭代器时,在调试模式下,我可以看到文档已加载,但迭代器没有找到结果并跳过While循环.
我可能做了一些非常愚蠢的事情,但是什么呢?
谁知道我在哪里可以找到一个好的,可靠的XPATH教程?
谢谢大家.事实证明我忽略了这样一个事实:有一个名称空间(我在删除它的同时简化了XML代码,因为我没有意识到它很重要),并且通过添加名称空间管理器,代码运行正常.
我现在正在研究提出的XPATH教程,它们看起来很好.
我有一个XAMPP安装,几乎是默认配置.
一般来说,性能并不是什么大问题,因为我主要使用PHP来运行网页和小型网络应用程序.等待几秒钟的页面并不罕见.
但是,我最近从Project Euler中解决了问题,并决定用PHP来完成它们.
尽我所能,我不能让我的代码在不到1分钟的时间内运行(从差不多3分钟开始优化)并且我变得非常尴尬,特别是考虑到Pjt Euler上的大多数海报都报告了1-3秒的时间.(#7,找到第10001个素数)
我将我的代码移植到C#,同一个任务眨眼完成.0.4秒 相同的算法,代码中唯一值得注意的差异是我在C#中使用List来替换我在PHP中使用的数组.
虽然我确实期望C#优于php,但这种差异让我怀疑总体配置问题,但我不知道在哪里看.
造成这种糟糕表现的原因是什么?
编辑:这是代码:
在PHP中:
/*
* Project Euler #7:
* By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
* What is the 10001st prime number?
*/
ini_set('max_execution_time', 300);
echo "start time:" . date("i:s:u") . "<br />";
function isPrime($number, $prevPrimes)
{
foreach ($prevPrimes as $key =>$prime)
{
if ($prime == 1)
{
continue;
}
elseif ($number % $prime …
Run Code Online (Sandbox Code Playgroud) 我正在使用文件准备软件,使翻译人员能够轻松高效地处理各种文件格式.
就基于文本的格式(xml,php,资源文件......)而言,我的小型准备实用程序工作正常,但对于大多数翻译来说,一个主要问题是处理各种专有二进制格式(Framemaker,Publisher,夸克......).
这些文件很少被要求,需要在昂贵的应用程序中打开(很少有自由职业者可以购买价值2万美元的软件,只是为了每年处理一些项目),即使这样,直接在这些应用程序中工作也不方便.
我希望能够读取这些文件并以这样的方式提取文本,使其可以翻译,然后以最小的努力,甚至更好的方式在原始应用程序中重新导入,以重新创建有效的本机二进制文件.
听起来有用吗?
我在哪里可以找到有关处理二进制文件格式的更多信息,是否有适用于这类工作的有用工具(除了常规的十六进制编辑器)?
提前致谢.
我正在阅读各种格式和语言的文件,我目前正在使用一个小编码库来尝试检测正确的编码(http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).
这很不错,但偶尔也会错过.(多语言文件)
我的大多数潜在用户对编码的理解很少(我希望最好的是"它与字符有关")并且不太可能在列表中选择正确的编码,所以我想让他们循环通过不同的编码,直到找到正确的编码只需点击一个按钮.
显示问题?点击这里尝试不同的编码!(那就是这个概念)
实现类似的东西最好的方法是什么?
编辑:看起来我没有表达得足够清楚.通过"循环编码",我不是指"如何循环编码?"
我的意思是"如何让用户按顺序尝试不同的编码而不重新加载文件?"
这个想法更像是这样的:假设文件加载了错误的编码.显示一些奇怪的字符.用户将单击"下一编码"或"先前编码"按钮,并且将以不同的编码转换该字符串.用户只需要一直点击,直到找到正确的编码.(无论哪种编码看起来对用户有用都会很好).只要用户可以点击"下一步",他就有合理的机会解决他的问题.
我到目前为止所发现的涉及使用当前编码将字符串转换为字节,然后将字节转换为下一个编码,将这些字节转换为字符,然后将字符串转换为字符串......可行,但我想知道是否存在这是一种更简单的方法.
例如,如果有一个方法可以读取字符串并使用不同的编码返回它,例如"render(string,encoding)".
非常感谢您的回答!
我正在尝试使用 VBA 以 SVG 格式导出 Excel 图表。
Set objChrt = ActiveChart.Parent
objChrt.Activate
Set curChart = objChrt.Chart
curChart.Export fileName:=fileName, FilterName:="SVG"
Run Code Online (Sandbox Code Playgroud)
如果我用“PNG”替换“SVG”,则导出完全按预期工作并生成有效的 PNG 文件。但是,“SVG”会生成一个空文件。(手动,有一个选项可以在 Excel 365 中另存为 SVG,因此存在导出过滤器)。
根据文档,Filtername 是“图形过滤器在注册表中出现的与语言无关的名称。”,但我在注册表中找不到类似的东西,无论哪种方式,都很难想象 SVG 过滤器名称被命名为“SVG”以外的任何名称。
有没有办法使用 VBA 以 SVG 格式导出图表?
注意:还有一个关于 Chart.export 生成空文件的问题,修复是ChartObject.Activate
在导出之前使用。这个问题是不同的,因为代码在“PNG”下正常工作,但在“SVG”下失败(所以这不是与激活或可见性相关的问题)。推荐的修复也不起作用。
我对这个感到很困惑.
//SMTP servers details
$mail->IsSMTP();
$mail->Host = "mail.hostserver.com";
$mail->SMTPAuth = false;
$mail->Username = $myEmail; // SMTP usr
$mail->Password = "****"; // SMTP pass
$mail->SMTPKeepAlive = true;
$mail->From = $patrickEmail;
$mail->FromName = "***";
$mail->AddAddress($email, $firstName . " " . $lastName);
$mail->WordWrap = 50;
$mail->IsHTML(true);
$mail->Subject = $client_subject;
$mail->Body = $client_msg;
if($mail->Send())
{
$mail->ClearAllRecipients();
$mail->ClearReplyTos();
$mail->ClearCustomHeaders();
...
$mail->From = "DO_NOT_REPLY@...";
$mail->FromName = "****";
$mail->AddAddress($ToEmail1, "***"); //To: (recipients).
$mail->AddAddress($ToEmail2, "***"); //To: (recipients).
$mail->WordWrap = 50;
$mail->IsHTML(true);
$mail->Subject = $notification_subject;
$mail->Body = $notification_msg;
if($mail->Send()) …
Run Code Online (Sandbox Code Playgroud) 我有一个dictionary<string, int[]>
我需要从磁盘尽可能有效地存储和检索.
密钥长度(字符串)通常在1到60个字符(unicode)之间变化,但可能超过该长度(但这是边缘的,可以丢弃这些值).数组中的整数将在1到1亿之间.(通常为1至5M)
我的第一个想法是使用分隔格式:
key [tab] int,int,int,int,...
key2 [tab] int,int,int,int,...
...
Run Code Online (Sandbox Code Playgroud)
并加载字典如下:
string[] Lines = File.ReadAllLines(sIndexName).ToArray();
string[] keyValues = new string[2];
List<string> lstInts = new List<string>();
// Skip the header line of the index file.
for (int i = 1; i < Lines.Length; i++)
{
lstInts.Clear();
keyValues = Lines[i].Split('\t');
if (keyValues[1].Contains(','))
{
lstInts.AddRange(keyValues[1].Split(','));
}
else
{
lstInts.Add(keyValues[1]);
}
int[] iInts = lstInts.Select(x => int.Parse(x)).ToArray();
Array.Sort(iInts);
dic.Add(keyValues[0], iInts);
}
Run Code Online (Sandbox Code Playgroud)
它有效,但超出了潜在的尺寸要求,显然这种方法永远不会很好地扩展.
是否有针对此问题的现成解决方案,还是需要完全重写算法?
编辑:我有点尴尬承认它,但我不知道字典可以只是序列化为二进制.我给了它一个测试运行,这几乎是我需要的.
这是代码(建议欢迎)
public static void saveToFile(Dictionary<string, List<int>> …
Run Code Online (Sandbox Code Playgroud) 我正在 codewars.com 上做套路,其中一个涉及一系列间隔:
(int, int)[] intervals
Run Code Online (Sandbox Code Playgroud)
我认为这等效于 KeyValuePair 数组,但是如何访问任一整数?
编辑:@Everyone抱歉,我觉得与int32的大小混淆.问题可能已经结束,但由于已有几个答案,我选择了第一个答案.原始问题在下面供参考
我正在寻找一种从非常大的文本文件加载特定行的方法,我正在计划使用File.ReadLines和Skip()方法:
File.ReadLines(fileName).Skip(nbLines).Take(1).ToArray();
Run Code Online (Sandbox Code Playgroud)
问题是,Skip()
需要一个int
值,和INT的值被限制为200万左右.对于大多数文件应该没问题,但是如果文件中包含20万行呢?我尝试使用很长但没有超载的Skip()接受longs.
行是可变的,未知的长度,所以我不能计算字节数.
是否有一个选项不涉及逐行读取或以块的形式拆分文件?此操作必须非常快.