小编Syl*_*rag的帖子

用更好的浏览器替换.NET WebBrowser控件,比如Chrome?

有没有相对简单的方法将现代浏览器插入.NET应用程序?

据我了解,该WebBrowser控制是一个包装IE,这不会是一个问题,但它看起来是一个很老版本的IE浏览器,以及所有在CSS螺丝起坐方面需要,潜在的安全风险(如果渲染引擎没有打补丁,我真的可以期待修复多个缓冲区溢出问题吗?)和其他问题.

我正在使用Visual Studio C#(快速版 - 它在这里有什么不同吗?)

我想在我的应用程序中集成一个好的Web浏览器.在某些情况下,我只是使用它来处理用户注册过程,与我的网站的一些功能和该订单的其他东西的接口,但我有另一个应用程序,需要更多错误...控制.

我需要:

  • 可以集成到我的应用程序窗口内的浏览器(不是单独的窗口)
  • 对CSS,js和其他Web技术的良好支持,与任何现代浏览器相同
  • 基本浏览器功能,如"导航","返回","重新加载"......
  • 自由访问页面代码和输出.

我正在考虑Chrome,因为它属于BSD许可证,但我会对最新版本的IE感到满意.

尽可能地,我想保持简单.最好的情况是,如果一个人可以修补现有的WebBrowser控制,这已经占我所需要的约70%,但我不认为这是可能的.

我找到了一个用于Mozilla的activeX控件(http://www.iol.ie/~locka/mozilla/control.htm),但看起来它是一个旧版本,所以它不一定是一个改进.

我愿意接受建议

.net c# webbrowser-control winforms

419
推荐指数
11
解决办法
41万
查看次数

单用户的Git工作流程

我是一家开发少数桌面应用程序和网站的单人商店.几个月前我开始使用GIT进行版本控制,我对此感到非常满意,但我的使用非常笨拙,我想知道单个用户的工作流程应该是什么.

现在,我的每个项目文件夹中都有一个.git文件夹.我每隔一段时间就会进行一次更改,我只是继续处理工作副本.

我从来没有从Git存储库中提取任何东西(工作副本仍然存在,它会被Git覆盖吗?),我不太确定如果我创建了一个分支会发生什么(分支创建在哪里?相同的文件夹?)

换句话说,我使用Git主要是为了在需要时看到与旧版本的差异,同时仍然以相同的旧方式工作.

这很好,甚至像这样的基本设置都有优势,但我觉得我错过了这一点.

单人商店的工作流程应该是什么样的?

git version-control workflow

17
推荐指数
1
解决办法
7498
查看次数

使用XPATH访问XML元素(是:学习xpath的好教程)

我正在努力学习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教程,它们看起来很好.

c# xml xpath

10
推荐指数
3
解决办法
2万
查看次数

提高本地服务器上的PHP性能

我有一个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)

php xampp performance

9
推荐指数
2
解决办法
1347
查看次数

如何出于兼容性目的反向工程二进制文件格式

我正在使用文件准备软件,使翻译人员能够轻松高效地处理各种文件格式.

就基于文本的格式(xml,php,资源文件......)而言,我的小型准备实用程序工作正常,但对于大多数翻译来说,一个主要问题是处理各种专有二进制格式(Framemaker,Publisher,夸克......).

这些文件很少被要求,需要在昂贵的应用程序中打开(很少有自由职业者可以购买价值2万美元的软件,只是为了每年处理一些项目),即使这样,直接在这些应用程序中工作也不方便.

我希望能够读取这些文件并以这样的方式提取文本,使其可以翻译,然后以最小的努力,甚至更好的方式在原始应用程序中重新导入,以重新创建有效的本机二进制文件.

听起来有用吗?

我在哪里可以找到有关处理二进制文件格式的更多信息,是否有适用于这类工作的有用工具(除了常规的十六进制编辑器)?

提前致谢.

reverse-engineering binaryfiles

7
推荐指数
1
解决办法
2874
查看次数

C#:循环编码

我正在阅读各种格式和语言的文件,我目前正在使用一个小编码库来尝试检测正确的编码(http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).

这很不错,但偶尔也会错过.(多语言文件)

我的大多数潜在用户对编码的理解很少(我希望最好的是"它与字符有关")并且不太可能在列表中选择正确的编码,所以我想让他们循环通过不同的编码,直到找到正确的编码只需点击一个按钮.

显示问题?点击这里尝试不同的编码!(那就是这个概念)

实现类似的东西最好的方法是什么?


编辑:看起来我没有表达得足够清楚.通过"循环编码",我不是指"如何循环编码?"

我的意思是"如何让用户按顺序尝试不同的编码而不重新加载文件?"

这个想法更像是这样的:假设文件加载了错误的编码.显示一些奇怪的字符.用户将单击"下一编码"或"先前编码"按钮,并且将以不同的编码转换该字符串.用户只需要一直点击,直到找到正确的编码.(无论哪种编码看起来对用户有用都会很好).只要用户可以点击"下一步",他就有合理的机会解决他的问题.

我到目前为止所发现的涉及使用当前编码将字符串转换为字节,然后将字节转换为下一个编码,将这些字节转换为字符,然后将字符串转换为字符串......可行,但我想知道是否存在这是一种更简单的方法.

例如,如果有一个方法可以读取字符串并使用不同的编码返回它,例如"render(string,encoding)".


非常感谢您的回答!

c# utf-8 character-encoding

6
推荐指数
1
解决办法
4136
查看次数

将 Excel 图表导出到 SVG 创建一个空文件

我正在尝试使用 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”下失败(所以这不是与激活或可见性相关的问题)。推荐的修复也不起作用。

excel charts vba export

6
推荐指数
1
解决办法
762
查看次数

使用PHP邮件程序发送2封电子邮件失败

我对这个感到很困惑.

//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)

php email phpmailer

5
推荐指数
3
解决办法
1万
查看次数

在C#中存储/检索字典的最有效方法?

我有一个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)

c# performance file-access

5
推荐指数
1
解决办法
1251
查看次数

如何使用这种“组合”数据类型:(int, int)[]

我正在 codewars.com 上做套路,其中一个涉及一系列间隔:

(int, int)[] intervals
Run Code Online (Sandbox Code Playgroud)

我认为这等效于 KeyValuePair 数组,但是如何访问任一整数?

.net c#

3
推荐指数
1
解决办法
283
查看次数

从巨大的文本文件中读取特定行(c#4.0)

编辑:@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.

行是可变的,未知的长度,所以我不能计算字节数.

是否有一个选项不涉及逐行读取或以块的形式拆分文件?此操作必须非常快.

c# io large-files

1
推荐指数
1
解决办法
762
查看次数