小编Ziv*_*Ziv的帖子

有一个好的,免费的小型Python网络主机吗?

我想开发一个供我个人使用的网络应用程序,我可以通过手机和计算机访问.我以为我会在途中磨练我的Python技能并使用简单的python web框架编写它.

我可以使用哪些主机来托管我的Web应用程序

python web-hosting web-frameworks

77
推荐指数
4
解决办法
9万
查看次数

C#WPF WebBrowser替代方案

我需要在我的.NET 3.5应用程序中使用Web浏览器,我不想使用默认的webbrowser(因为它感觉越来越慢).我尝试了克里斯卡瓦纳的铬,但我无法让它起作用......有没有更容易使用的替代品?我正在寻找计算机上非常简单和轻巧的东西,如果重要的话,它将主持一个网店.

更新: 5年后,需求又出现了.当时我使用Awesomium在我的程序中显示Web浏览器,tbh,我不记得它是怎么回事,但我也不记得这是一个真正的痛苦.

今天,我想再次使用它,我看到代码已经关闭,现在已经商业化了.我们尝试了,遇到了障碍,无法改变代码以我们想要的方式工作所以我们使用CEFCefSharp进行开源路由,能够看到代码使得工作变得如此简单并且减少了伏都教(ffs,awesomium)甚至混淆了他们的代码,所以我无法理解我做错了什么.

基本上Awesomium很酷,如果你想支付2900美元并且不需要屏幕外渲染,但CEF是如此强大,能够更改代码以满足您的需求.

PS.我们给了CefGlue一个5分钟的尝试,它没有立即工作所以我们转移到CefSharp立即工作,这是两个竞争的开源框架的伟大和可怕的事情.

c# browser wpf webkit

37
推荐指数
2
解决办法
4万
查看次数

在C++函数签名中使用&运算符

我目前正在阅读Accelerated C++,我意识到我并不真正了解函数签名的工作原理.

int* ptr=#
Run Code Online (Sandbox Code Playgroud)

意味着ptr现在将地址保存为num,但这意味着什么?

void DoSomething(string& str)
Run Code Online (Sandbox Code Playgroud)

从我的理解,这是一个变量的引用传递(这意味着传递地址),但当我这样做

void DoSomething(string& str)
{
  string copy=str;
}
Run Code Online (Sandbox Code Playgroud)

它创造的是str的副本.我认为它会做的是引发错误,因为我正在尝试分配一个指向变量的指针.

这里发生了什么?在函数调用中使用*和&是什么意思?

c++ pass-by-reference

24
推荐指数
4
解决办法
5万
查看次数

如何将HTML读作XML?

我想从互联网下载的html页面中提取几个链接,我认为使用linq到XML对我的情况来说是一个很好的解决方案.
我的问题是我无法从HTML创建XmlDocument,使用Load(字符串url)不起作用所以我使用以下命令将html下载到字符串:

public static string readHTML(string url)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        StreamReader sr = new StreamReader(res.GetResponseStream());

        string html = sr.ReadToEnd();
        sr.Close();
        return html;
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用LoadXml(字符串xml)加载该字符串时,我得到了异常

'--' is an unexpected token. The expected token is '>'
Run Code Online (Sandbox Code Playgroud)

我应该采用什么方式将html文件读取为可解析的XML

html c# xml html-parsing

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

在WPF中构建数据输入表单的最佳方法?

在构建用于数据输入的WPF表单时(例如,一堆文本框和组合框旁边的一堆标签)我看到了两种方法:

  • 创建一个主网格,将其划分为两列,并Height="auto"为每个字段添加行,为页眉和页脚添加两行(和提交按钮),每个标签和文本框都有自己的行.
  • 另一种方法是创建一个主堆栈面板,并在其中为每对标签文本框创建一个水平堆栈面板.

您如何设计数据输入表格?我目前在两种方法之间徘徊,也许还有一种我不知道的替代方案?

编辑:Henk说我应该定义最好,我认为我同意,最好的意思是最容易维护,创建,对齐,添加或删除字段,因为需求变化.

到目前为止,网格更好的唯一标准是易于对齐.

forms wpf grid stackpanel

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

是否存在演员模型不适合的并发设计?

我注意到我遇到的所有设计都可以使用actor模式进行多线程 - 将每个工作模块分成不同的actor并使用消息队列(对我来说是.NET ConcurrentQueue)来传递消息.还有哪些好的多线程模型?

concurrency multithreading design-patterns

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

Windows上的Python和vim?

我几天前开始学习vim,令人惊讶的是我感觉很自然,我也想回到学习python.我想,为什么不把两者结合起来?
所以现在我正在寻找如何建立一个合适的python开发环境,所有我的搜索都出现了其他操作系统的指南(我不能"翻译"到窗口而不觉得我错过了什么)有些人觉得他们是为以前版本的vim做的(他们假设它根本没有python支持...)
那么你如何为python开发设置vim?我看它已经有语法高亮,我该如何设置编译?我如何设置调试(如果它甚至需要,我读到某个地方,它不是python中真正需要的)?如何设置错误突出显示?或者其他我可能需要的东西?我看到一些指南设置了"转到源"链接,是否需要新版本?

python windows ide vim

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

Process.GetProcessesByName(String,String)内存泄漏

我有一段代码,使用静态方法Process.GetProcessesByName(String,String)获取远程计算机上的进程列表,这可以在很多计算机上运行(几千个),我注意到它是主要的内存泄漏.

我运行了ANTS内存分析器,它告诉我大部分内存是由字符串,字符串包含诸如"%Idle Time","Processor Information"和"Cache Faults/sec"之类的存储值.我已经认识到这些字符串可能是程序中性能计数器的一部分,问题是我在程序中没有任何性能计数器.

深入挖掘发现这些字符串保存在由PerformanceCounterLib保存的哈希表中,这些哈希表由另一个哈希表保存,该哈希表存储在PerformanceCounterLib类的内部静态成员中(本身就是内部的).

深入研究兔子洞,我发现Process.GetProcesesByName使用PerformanceCounterLib来获取在远程计算机上运行的进程列表,并且对于每个远程计算机,在PerformanceCounterLib的静态内部变量中创建并引用另一个PerformanceCounterLib实例.每个实例都认为我发现的字符串散列表会堵塞我的记忆(每个都在300-700 kb之间,这意味着它会堵塞我的大对象堆).

我没有找到删除那些未使用的PerformanceCounterLib实例的方法,它们都是内部的,用户无法访问它们.

我该如何解决我的记忆问题?这真的很糟糕,我的程序在24小时内达到5GB(我的服务器限制).

编辑:添加了一段应该重现问题的代码(未经测试).为了澄清:

/// computerNames is a list of computers that you have access to
public List<string> GetProcessesOnAllComputers(List<string> computerNames)
{
    var result = new List<string>();
    foreach(string compName in computernames)
    {
        Process[] processes = Process.GetProcesses(compName); // Happens with every     method that gets processes on a remote computer
        string processString = processes.Aggregate(new StringBuilder(), (sb,s) => sb.Append(';').Append(s), sb => sb.ToString());
        result.Add(processString);
        foreach (var p in processes)
        {
            p.Close();
            p.Dispose();
        }
        processes = …
Run Code Online (Sandbox Code Playgroud)

c# memory performance profiling memory-leaks

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

Rx应该在哪里使用?

我正在考虑将Rx引入我的工作场所,但我越了解它越多,我认为它并没有真正给你带来优势.

我们有很多服务器应用程序在一端获取输入数据并在另一端输出它.这对于actor模型和"无限"线程可伸缩性来说是完美的,直到现在我已经使用ConcurrentQueues来实现消息传递,我认为Rx可能是一个更好的功能性替代方案,可以使并发性更加隐含,这有助于我移动一些从命令性代码到可观察量声明的数据流决策.

但阅读它并尝试它我没有看到使用ConcurrentQueues的常规旧线程进行消息传递的优势.Rx给我的优势是什么?人们总是说尽管.NET 4.5使Rx过时(尽管是异步和数据流),但它仍然适合处理事件流.什么情况下呈现事件流以及如何识别它们?

c# system.reactive actor

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

如何避免lambda表达式中的变量捕获?


最近我在深度阅读了C#,它教会了我关于lambda表达式的知识,我一直在使用它来将数据传递给点击事件,例如:

image.MouseDown+=(o ,e)=>MethodToDoSomething(DataNeededForAction);
Run Code Online (Sandbox Code Playgroud)

现在问题是在foreach循环中使用变量捕获(感谢Jon Skeet使这部分非常清楚:),当初始化具有我订阅的事件的几个对象时,我通常遇到变量捕获的问题.考虑以下示例:

foreach (var game in GamesCollection)
{
    Image img = new Image();
    img.Width = 100;
    img.MouseDown+=(o,e) => MyMethod(game.id);
}
Run Code Online (Sandbox Code Playgroud)

为了避免在这种情况下捕获,我必须添加一些变量来分配游戏,然后将该变量传递给方法,这会产生额外的不清楚的代码,主要是额外的混乱.有没有办法绕过这个?什么东西至少看起来更干净?

Thx,Ziv

c# lambda

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

SQL查询不起作用

我正在尝试使用查询编辑器在访问数据库中为C#数据集创建查询,但创建的方法表示存在问题但未正确创建.

SELECT Discs.*
FROM Discs
WHERE (Title=@Title OR @Title IS NULL) AND
(Type=@Type OR @Type IS NULL) AND
(ContainerID=@ContainerID OR @ContainerID IS NULL) AND
NOT (@Title IS NULL AND @Type IS NULL AND @ContainerID IS NULL)
Run Code Online (Sandbox Code Playgroud)

错误是:

Generated SELECT statement.
Error in WHERE clause near '@'.
Unable to parse query text.
Run Code Online (Sandbox Code Playgroud)

生成的select方法没有任何参数且无法使用.我在访问查询中尝试了完全相同的SQL语句,它运行得很完美,在将它转移到C#时,我应该采取哪些不同的做法?

c# sql ms-access visual-studio

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

无法使CefSharp加载同步

我有一个关闭屏幕ChromiumWebBrowser,我用来在页面上运行一些JS并获得结果.

Load方法是同步的,但是在引发FrameLoadEnd事件之前我无法运行JS代码,这意味着或者我的目的Load是一个以FrameLoadEnd事件结束的异步方法.

为了使我的代码更清晰,我尝试创建一个扩展方法,允许我等待页面加载await而不是注册到事件.但是当我在TaskCompletionSource中使用这个方法时,没有加载在页面加载后应该运行的javascript,但是当使用AutoResetEvent并等待它时代码确实有效.

此代码不起作用:

public static Task LoadPageAsync(this IWebBrowser browser, string address)
{
    TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
    browser.FrameLoadEnd += (sender, args) =>
    {
        if (args.IsMainFrame)
        {
            tcs.TrySetResult(true);
        }
    };
    browser.Load(address);
    return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)

这样做:

public static AutoResetEvent LoadPageAsync(this IWebBrowser browser, string address)
{
    AutoResetEvent are = new AutoResetEvent(false);
    browser.FrameLoadEnd += (sender, args) =>
    {
        if (args.IsMainFrame)
        {
            are.Set();
        }
    };
    browser.Load(address);
    return are;
}
Run Code Online (Sandbox Code Playgroud)

这是调用代码:

await _browser.LoadPageAsync("Some web address");
LoadScripts();

DoJsThing();
GetJsData();
Run Code Online (Sandbox Code Playgroud)

他们做同样的事情,但我觉得返回任务时函数的意图要比返回AutoResetEvent时更清楚. …

c# async-await chromium-embedded cefsharp

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