我刚刚在我的Windows 8.1机器上安装了Github for Windows,它似乎运行正常,只是我的机器性能急剧下降.
看看任务管理器,我看到ssh-agent.exe
使用的是25%的CPU(毫无疑问是我的一个内核的100%),磁盘使用率为100%.
我在互联网上看过,但找不到任何可能导致这种情况的参考.
可能导致此问题以及如何解决问题的任何想法?
更新:
我可以杀死进程并且GitHub for Windows似乎继续工作但是ssh-agent.exe
只要我关闭并重新启动Github for Windows,该进程就会再次启动.
在应用程序首次启动时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
但是它们看起来很适合运行多个任务,而不是特别是命令.
我有一个通过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的其他命令将返回文件. …
我正在寻找一种算法来按流行度对网站结果进行排序..就像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)
虽然这种解决方案的确起作用并不理想.在过去的几个小时内,一个新的和受欢迎的帖子在流行和即将到来时往往排名很高,这不是我想要的.
任何人都可以提出另一种算法,我可以修改指数成分来调整衰减吗?
我现在有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应该关闭文件句柄,将任何未写入的内容刷新到磁盘:
但正如Alberto在评论中指出的那样:
System.IO.File.WriteAllText完成后,将所有文本刷新到文件系统缓存,然后,它将被懒惰地写入驱动器.
所以我认为这里发生的事情是文件被清除并用0x00初始化,但是当系统崩溃时数据还没有被写入.
我想可能使用某种临时文件,所以过程将是这样的:
我认为这不会解决问题,因为我认为即使IO仍处于待决状态,Windows也只会移动文件.
有什么方法可以强制机器将数据转储到磁盘而不是决定何时进行,或者更新文件更好的方法?
更新:
基于@usr,@ mikez和@llya luzyanin的建议,我创建了一个新的WriteAllText函数,它使用以下逻辑执行写入:
有了这个逻辑,如果最终文件加载失败,我的代码会检查备份文件并加载它
这是代码:
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) 大多数时候我可以完美地调试Node v4.2.1
项目,vscode
但有时候我无法理解Node变得非常慢响应,我得到的信息如下:
node did not respond to request to 'continue' in a reasonable amount of time
有没有人知道是什么原因造成这种情况以及如何解决?
我有一个系统显示按三个字段之一排序的条目,最受欢迎的今天,本周和本月.每次查看条目时,分数增加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?
非常感谢!
我感觉自己的方式虽然功能编程与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)
但我相信一定有更好的方法吗?
我知道有很多这些问题,但我看不出任何符合我具体情况的东西.
我在Ubuntu上通过Mono运行.NET控制台应用程序.该应用程序作为服务器运行,并通过TcpListener(TcpListener.AcceptTcpClient())接受连接.我遇到的问题是,一段时间后程序开始抛出"太多打开文件"异常.
我已经在我知道的两个地方增加了Ubuntu中的最大文件限制:
root soft nofile 240000
root hard nofile 320000
(有问题的过程以root身份运行)
fs.file-max = 2000000
两者都设置为~200000.
如果检查系统上的打开文件描述的数量,它只有996,即使它正在抛出错误.
我有相同的程序在几个Windows服务器上运行,有更多的连接,他们从来没有这个问题.
知道什么可能导致这个错误?
我喜欢在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)