小编ant*_*tfx的帖子

Github for windows - 使用高CPU + 100%磁盘的ssh-agent.exe?

我刚刚在我的Windows 8.1机器上安装了Github for Windows,它似乎运行正常,只是我的机器性能急剧下降.

看看任务管理器,我看到ssh-agent.exe使用的是25%的CPU(毫无疑问是我的一个内核的100%),磁盘使用率为100%.

我在互联网上看过,但找不到任何可能导致这种情况的参考.

可能导致此问题以及如何解决问题的任何想法?

更新:

我可以杀死进程并且GitHub for Windows似乎继续工作但是ssh-agent.exe只要我关闭并重新启动Github for Windows,该进程就会再次启动.

github github-for-windows

29
推荐指数
2
解决办法
6062
查看次数

在Elm中同时运行两个命令

在应用程序首次启动时Elm,特别是使用Elm Architecture,该init函数可以返回Cmd Msg执行的函数.我们可以使用它来发送http请求或通过Elm端口向本机Javascript发送消息.

我的问题是,如何发送应该执行的多个命令init

例如,我可以做类似的事情:

init : (Model, Cmd Msg)
init =
  (Model "" [], (Ports.messageToJs "Hello JS"))
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

url : String
url =
     "http://some-api-url.com"
...

fetchCmd : Cmd Msg
fetchCmd =
    Task.perform FetchError FetchSuccess fetchTask


init : (Model, Cmd Msg)
init =
  (Model "" [], fetchCmd)
Run Code Online (Sandbox Code Playgroud)

如何从同一时间返回两个命令init

我已经看过了Task.sequence,Task.parallel但是它们看起来很适合运行多个任务,而不是特别是命令.

javascript elm

28
推荐指数
2
解决办法
4806
查看次数

.NET中的HttpWebRequest NameResolutionFailure异常(在Ubuntu上使用Mono)

我有一个通过Mono 2.10在Ubuntu上运行的.NET程序

该程序每分钟左右通过HttpWebRequest下载一个网页,大部分时间都能正常工作:

        String result;
        WebResponse objResponse;
        WebRequest objRequest = System.Net.HttpWebRequest.Create(url);

        using (objResponse = objRequest.GetResponse())
        {
            using (StreamReader sr =
               new StreamReader(objResponse.GetResponseStream()))
            {
                result = sr.ReadToEnd();
                // Close and clean up the StreamReader
                sr.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

问题是几天后我开始抛出异常:

        DateTime: 01/25/2012 08:15:41
        Type: System.Net.WebException
        Error: Error: NameResolutionFailure
        Stack:
          at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
          at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0
          at socks_server.Program.readHtmlPage (System.String url) [0x00000] in <filename  unknown>:0
          at socks_server.Program.getAccessKeysProc () [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)

例如,服务器仍然可以解析DNS

 wget http://www.google.com
Run Code Online (Sandbox Code Playgroud)

将ping没有任何问题,以及解析DNS的其他命令将返回文件. …

c# ubuntu mono httpwebrequest

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

流行网站帖子的流行度衰减算法

我正在寻找一种算法来按流行度对网站结果进行排序..就像Reddit那样,帖子越老,它的投票/得分就越少.

以下是reddit使用的普遍接受的解决方案:

t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes

y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 1, otherwise x}

rank = log(z) + (y * t)/45000
Run Code Online (Sandbox Code Playgroud)

我一直在使用Reddit的算法,虽然它适合一种情况,我真正需要的是两种算法,一种用于热门帖子,另一种用于即将发布的帖子:

  • 热门帖子
  • 即将发布的帖子

流行的人会慢慢衰退,对于稍微偏旧的帖子会更加重要,其中即将发布的帖子今天将更多地关注热门帖子,在N小时/天/等之后大幅下降.

我正在使用Sphinx表达式写这个,所以我不能编写一个丑陋复杂的算法,我只能访问以下函数:

http://sphinxsearch.com/docs/current.html#numeric-functions

所以我每篇文章都有以下数据:

  • 发布年龄秒
  • 发表评分

这是我目前的解决方案:

Exponent = 0.01 (Popular), 0.5 (Upcoming)
SecondsSincePublised = abs(CurTimeInSecondsSinceDate-PubTimeInSecondsSinceDate)
Rank = (log10(PostScore)*10000) / pow(SecondsSincePublised,Exponent) 
Run Code Online (Sandbox Code Playgroud)

虽然这种解决方案的确起作用并不理想.在过去的几个小时内,一个新的和受欢迎的帖子在流行和即将到来时往往排名很高,这不是我想要的.

任何人都可以提出另一种算法,我可以修改指数成分来调整衰减吗?

c# algorithm sphinx

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

File.WriteAllText没有将数据刷新到磁盘

我现在有3个报告用户的机器在使用我的软件时崩溃..崩溃与我的程序无关,但是当他们重新启动配置文件时,我的程序写入都是损坏的.

编写文件没有什么特别之处,只需创建一个Json表示并使用File.WriteAllText()将其转储到磁盘上

// save our contents to the disk
string json = JsonConvert.SerializeObject(objectInfo, Formatting.Indented);

// write the contents
File.WriteAllText(path, json);
Run Code Online (Sandbox Code Playgroud)

我有一个用户发给我一个文件,长度看起来正确(~3kb),但内容都是0x00.

根据下面的帖子,File.WriteAllText应该关闭文件句柄,将任何未写入的内容刷新到磁盘:

在我的C#代码中,计算机是否一直等到输出完成后再继续?

但正如Alberto在评论中指出的那样:

System.IO.File.WriteAllText完成后,将所有文本刷新到文件系统缓存,然后,它将被懒惰地写入驱动器.

所以我认为这里发生的事情是文件被清除并用0x00初始化,但是当系统崩溃时数据还没有被写入.

我想可能使用某种临时文件,所以过程将是这样的:

  1. 将新内容写入临时文件
  2. 删除原始文件
  3. 将临时文件重命名为原始文件

我认为这不会解决问题,因为我认为即使IO仍处于待决状态,Windows也只会移动文件.

有什么方法可以强制机器将数据转储到磁盘而不是决定何时进行,或者更新文件更好的方法?

更新:

基于@usr,@ mikez和@llya luzyanin的建议,我创建了一个新的WriteAllText函数,它使用以下逻辑执行写入:

  1. 使用FileOptions.WriteThrough标志创建包含新内容的临时文件
  2. 将数据写入磁盘(在写入完成之前不会返回)
  3. File.Replace将新临时文件的内容复制到真实文件,进行备份

有了这个逻辑,如果最终文件加载失败,我的代码会检查备份文件并加载它

这是代码:

public static void WriteAllTextWithBackup(string path, string contents)
{
    // generate a temp filename
    var tempPath = Path.GetTempFileName();

    // create the backup name
    var backup = path + ".backup";

    // delete any existing backups
    if (File.Exists(backup))
        File.Delete(backup);

    // get the …
Run Code Online (Sandbox Code Playgroud)

c# windows io disk

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

调试时NodeJS没有响应(在VS代码中)

大多数时候我可以完美地调试Node v4.2.1项目,vscode但有时候我无法理解Node变得非常慢响应,我得到的信息如下:

node did not respond to request to 'continue' in a reasonable amount of time

有没有人知道是什么原因造成这种情况以及如何解决?

macos node.js visual-studio-code

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

今日热门,本周,本月 - 设计模式

我有一个系统显示按三个字段之一排序的条目,最受欢迎的今天,本周和本月.每次查看条目时,分数增加1,从而改变顺序.

因此,如果条目1是新的并且今天被观看10次,其分数将是:

Today: 10
Week: 10
Month: 10
Run Code Online (Sandbox Code Playgroud)

当前的解决方案

目前我只有3个与每个条目相关联的字段,一个用于今天的另一个用于本周,另一个用于本月.每次查看条目时,所有三个分数都会增加1.

在一天结束时,将日分数重置为0.在当前周结束时,将周分数设置为0,并且在当前日历月结束时,将月分数设置为0.

问题

虽然这种方法很有用并占用空间很小,但由于两个原因,它并不理想

1)在当前时段(日,周,月)结束时,该值一次性重置为0,这意味着每天00:00:00排名全部重置,所有每日分数都设置为0,在本周末和月末也是如此.在每个月1日的00:00:00,所有分数都设置为0,从而丢失所有现有的排名数据.

2)因为月末通常在一周内(周一至周日),所以每周的分数在一周内被重置,导致每周分数高于每月分数.

可能解决方案

我可以使用每小时每小时的滚动小时计数器,用于根据当前小时指数计算当前日,周,月的分数.

Array size = 31 * 24 = 744 int16 values
Run Code Online (Sandbox Code Playgroud)

所以在1日凌晨4点,视图将在几个小时内放置[4]

hours[4]++
Run Code Online (Sandbox Code Playgroud)

然后,统计计算器将使用今天作为最后24个值的总和,并且本周分数将是最后(24*7)值的总和.最后,本月将是最后(24*31)值的总和.

解决问题

解决方案1的主要问题是磁盘/内存要求.我已经从使用当前解决方案中的3个32位值变为使用744个32位值.即使我将它们更改为in16,我仍然会在每个条目中使用更多的内存

Memory per Entry = 3 * 4 bytes = 12 bytes (Existing)
Memory per Entry = 744 * 2 = 1,488 bytes (possible solution)
Run Code Online (Sandbox Code Playgroud)

有了这个解决方案,我的每个条目的内存使用率已经跃升了12400%!!

任何人都可以建议另一种解决方案,以解决当前解决方案中的问题,但不使用每个1.5k?

非常感谢!

c# algorithm design-patterns

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

将逻辑NOT应用于propEq并在ramda中过滤

我感觉自己的方式虽然功能编程与Ramda和我正在努力的事情听起来应该很容易.

我想要一个属性等于值的数组中的所有条目.

例如在纯粹的js中

const filtered = source.filter(entry => entry.name !== 'something');
Run Code Online (Sandbox Code Playgroud)

在Ramda中有一个,propEq所以我可以很容易地得到所有匹配值的元素,如

const filtered = R.filter(R.propEq('name','something'),source);
Run Code Online (Sandbox Code Playgroud)

但我不能看到如何的是相反,只返回值等于值.

我敢肯定这一定非常容易,但我很难看到内置函数来做到这一点,我能想到的最接近的是:

const others = R.filter(rate => rate.name !== name,res.rates);
Run Code Online (Sandbox Code Playgroud)

但我相信一定有更好的方法吗?

javascript functional-programming ramda.js

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

打开的文件太多(Ubuntu上的Mono .NET)

我知道有很多这些问题,但我看不出任何符合我具体情况的东西.

我在Ubuntu上通过Mono运行.NET控制台应用程序.该应用程序作为服务器运行,并通过TcpListener(TcpListener.AcceptTcpClient())接受连接.我遇到的问题是,一段时间后程序开始抛出"太多打开文件"异常.

我已经在我知道的两个地方增加了Ubuntu中的最大文件限制:

  • 在/etc/security/limits.conf

root soft nofile 240000

root hard nofile 320000

(有问题的过程以root身份运行)

  • /etc/sysctl.conf中

fs.file-max = 2000000

两者都设置为~200000.

如果检查系统上的打开文件描述的数量,它只有996,即使它正在抛出错误.

我有相同的程序在几个Windows服务器上运行,有更多的连接,他们从来没有这个问题.

知道什么可能导致这个错误?

.net c# ubuntu mono

6
推荐指数
2
解决办法
5798
查看次数

有没有重写可以使这个c#类线程安全?

我喜欢在C#中创建类的快速方法,我们可以轻松地创建成员而无需实现get和set代码,但(据我所知)它们不是线程安全的!

public class SocksEntry
{
    public int Int1 { get; set; }
    public int Int2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

C#是否提供了一种快速简单的方法来增加线程安全性而无需这样做?

public class SocksEntry
{
    protected object _lock = new object();

    // internal
    private int _int1 = 0;
    private int _int2 = 0;

    // accessors
    protected int Int1
    {
        get { lock (_lock) return _int1; }
        set { lock (_lock) _int1 = value; }
    }

    protected int Int2
    {
        get { lock (_lock) return _int2; }
        set { lock (_lock) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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