小编Ser*_*pth的帖子

在Windows上处理Node.js中的CTRL + C事件

我正在进行一个节点项目,我想在退出时写一些内存到文件.我认为这很简单:

process.on('exit', function () {
 //handle your on exit code
 console.log("Exiting, have a nice day");
});
Run Code Online (Sandbox Code Playgroud)

但是,当收到CTRL + C时,此代码不会执行(在Windows上).鉴于这是退出Node的实际方法,这似乎有点问题.

此时我尝试处理信号(on.('SIGINT',...)),这导致错误:

node.js:218 throw e; // process.nextTick错误,或第一次勾选时出现'error'事件^错误:在EventEmitter中没有这样的模块.(node.js:403:27)在Object.(C:\ Users\Mike\workspace\NodeDev\src\server.js:5:9)在Module._compile(module.js:434:26)的Object..js(module.js:452:10)at at Module.load(module.js:353:32)位于Array.(load.js:310:12)的Array.0(module.js:472:10),位于EventEmitter._tickCallback(node.js:209:41) )

关闭一个快速的谷歌,似乎 Node根本不处理Windows上的信号,CTRL + C实际上不会触发"退出"事件.上述错误不应在*Nix系统上退出.

但是,关闭Windows平台对我来说不是一个有效的选项,所以我需要一个解决方法.有没有办法处理Node中的On Exit事件,这是由用户按CTRL + C终止脚本引起的?

javascript signals node.js

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

如何在邮件客户端的mailto链接中处理&符号?

我有一个ASP.NET/C#应用程序,其中一部分将WWW链接转换为HTML电子邮件中的mailto链接.

例如,如果我有一个链接,例如:

www.site.com

它被重写为:

邮寄地址:my@address.com主题= www.site.com

这非常有效,直到我遇到带有&符号的URL,然后导致主题被截断.

例如链接:

www.site.com?val1=a&val2=b

显示为:

邮寄地址:??my@address.com主题= www.site.com VAL1 = A值2 = B

这正是我想要的,但是当点击它时,它会创建一条消息:

受试者= www.site.com?VAL1 =一

哪个已经删除了&val2,这对于mailto命令中的分隔符是有道理的.
所以,我尝试了其他各种方法来解决这个问题,但没有成功.
我曾尝试隐含地引用该subject=''部分而没有做任何事情.

我(在C#中)替换&Live &Thunderbird转回的'&' :

www.site.com?val1=a&val2=b

我将'&'替换为'%26',结果是:

?的mailto:my@address.com主题= www.site.com VAL1 =一%26安培; VAL2 = B

在主题邮件中:

www.site.com?val1=a&val2=b


编辑:

为了响应URL的构建方式,这是一个很大的缩减,但它是它的要点.代替att.Value.Replace,我尝试过System.Web.HtmlUtility.URLEncode调用,这也会导致失败

HtmlAgilityPack.HtmlNodeCollection nodes =doc.DocumentNode.SelectNodes("//a[@href]");
foreach (HtmlAgilityPack.HtmlNode link in nodes)
{
  HtmlAgilityPack.HtmlAttribute att = link.Attributes["href"];
  att.Value = att.Value.Replace("&", "%26");
}
Run Code Online (Sandbox Code Playgroud)

c# email

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

在未处理的异常上阻止"[YourProgramName]已停止工作"对话框

我有一个WinForm应用程序,对外部库有一些依赖,有时会在正在运行的线程上下文之外导致异常.现在看来,这是完全正常的行为(当然除了例外)我们连接了AppDomain.CurrentDomain.UnhandledException来简单地重启程序.

唯一的问题是,[你的程序]已经停止工作,如下所示: alt text http://telcontar.net/store/archive/CrashGallery/images/crash/vista/2007-05-30%20Microsoft% 20Register%20Server.png

有没有办法阻止此对话框出现,无论是在AppDomain未处理的异常处理程序中还是在配置设置中,因为没有最终用户将会读取它并且它只会保留资源直到被单击.

dialog exception winforms

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

WebRequest"HEAD"轻量级替代品

我最近发现以下内容不适用于某些网站,例如IMDB.com.

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                System.Net.WebRequest wc = System.Net.WebRequest.Create("http://www.imdb.com"); //args[0]);

                ((HttpWebRequest)wc).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19";
                wc.Timeout = 1000;
                wc.Method = "HEAD";
                WebResponse res = wc.GetResponse();
                var streamReader = new System.IO.StreamReader(res.GetResponseStream());

                Console.WriteLine(streamReader.ReadToEnd());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它返回HTTP 405(Method Not Allowed).我的问题是,我使用与上面非常相似的代码来检查链接是否有效以及绝大多数时候它是否正常工作.我可以将它切换到等于GET的方法并且它可以工作(增加超时),但这会使事情减慢一个数量级.我假设405响应是IMDB服务器端的服务器配置.

有没有办法让我在.NET中以轻量级的方式做同样的事情?或者,有没有办法修复上面的代码,所以它作为一个与imdb一起使用的GET请求?

.net c# webrequest http-status-code-405

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

完全合格的命名与using指令只是一个见解吗?

现在,我发现我在一个非常单人的环境中工作,实际上我键入的完全合格方法调用越来越多,而不是使用using指令。以前,我只是与团队中最杰出的编码实践保持一致。

就个人而言,我发现一目了然地阅读冗长的代码,尤其是在自动完成时,输入速度很快,而且我发现自己经常使用Google作为我的文档来源,而全限定名返回的结果集要窄得多。这些显然是非常随意的原因,而不是使用using指令,它们更倾向于完全合格。

在当今的重构工具时代,是否有具体的原因为什么使用using指令要优于完全合格的指令,反之亦然?或者这纯粹是由个人决定的问题,例如注释间距?最后,您更喜欢哪个,为什么?

coding-style namespaces fully-qualified-naming

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

需要ASP.Net兼容的HTML-> PDF库的建议

我正在寻找一个将HTML转换为PDF的库,包括样式.我希望它能够接受一个URL作为选项,但如果需要,HTML可以作为流/字节数组传入,所有样式都在一个文件/缓冲区中.我正在使用C#/ ASP.Net 3.5.我完全控制了服务器机器(我可以作为服务运行等等)但是,我不能要求用户登录,所以请不要使用应用程序级别或打印驱动程序类型的解决方案.

我知道存在像PDFSharp这样的免费解决方案,但这些仍需要您正确格式化输出.我希望库生成几乎相同的输出到源输入,这个库没有提供(或者至少,我相信它没有,如果我错了,请纠正我).

我也知道有很多商业产品可供选择.其中一些是几千美元,这超出了我目前的预算.有一个图书馆ABCPDF,似乎完全按照我想要的价格去做,我付出的代价.也就是说,他们网站缺乏专业性/润色让我有点担心.

如果您有ABCpdf的经验,或者可以推荐类似的库(价格特征明智),我将非常感激.

编辑:谢谢大家的答案.听起来像是abcPDF或aspPDF,两者都在预算之内.

html pdf asp.net

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

如何在Twitter更新中处理ISO-2022-JP(和其他字符集)?

我的部分应用程序接受任意文本并将其作为Twitter更新发布.一切正常,直到发布外国(非ASCII/UTF7/8)字符集,然后事情不再有效.

例如,如果有人发布:
に投稿できる

它(在我的Visual Studio调试器中的代码中)变为:
=?ISO-2022-JP?B?GyRCJEtFajlGJEckLSRrGyhC?=

谷歌搜索告诉我,这表示(减去?作为分隔符)

=?ISO-2022-JP是文本编码
?B表示它是base64编码的
?GyRCJEtFajlGJEckLSRrGyhC?是编码的字符串

对于我的生活,我无法弄清楚如何将这个字符串作为Twitter的原始日文字符的更新发布.现在,将'=?ISO-2022-JP?B?GyRCJEtFajlGJEckLSRrGyhC?='发送到Twitter将导致发布.我也尝试将字符串分成几部分,使用System.Text.Encoding从ISO-2022-JP转换为UTF8,反之亦然,base64解码而不是.此外,香港专业教育学院使用状态更新的URL编码,如下所示:


string[] bits = tweetText.Split(new char[] { '?' });
if (bits.Length >= 4)
{
textEncoding = System.Text.Encoding.GetEncoding(bits[1]);
xml = oAuth.oAuthWebRequest(TwitterLibrary.oAuthTwitter.Method.POST, url, "status=" +   System.Web.HttpUtility.UrlEncode(decodedText, textEncoding)); 
}
Run Code Online (Sandbox Code Playgroud)

无论我做什么,结果都不会恢复正常.

编辑:最后得到它.对于那些在家里跟随的人来说,它非常接近下面列出的答案.只是Visual Studios调试器指导我错误的方式和我正在使用的Twitter库中的一个错误.最终结果如下:


decodedText = textEncoding.GetString(System.Convert.FromBase64String(bits[3]));
byte[] originalBytes = textEncoding.GetBytes(decodedText);
byte[] utfBytes = System.Text.Encoding.Convert(textEncoding, System.Text.Encoding.UTF8, originalBytes);
// now, back to string form
decodedText = System.Text.Encoding.UTF8.GetString(utfBytes);

谢谢大家.

c# twitter encoding

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