我在这里使用F#为我们的服务器上的任务自动执行一些脚本.我真的很想拥有一个轻便的环境,我可以安装在服务器上,给我FSI和自动完成
谢谢
只是为了澄清我正在寻找像PowerShell ISE但VS自动完成的东西
我需要帮助,我有一些数据来自xml,我想制作一个对象,用它做一些事情,序列化它并发送它...但它必须是某种自定义序列化.
xml喜欢:
<Animals Ver="12" class="1" something="2">
<Dog Ver="12" class="2" something="17">
<Name> a </Name>
<Sound> oof </Sound>
<SomeOtherProp>12</SomeOtherProp>
</Dog>
<Cat Ver="12" class="3" something="4">
<Name> b </Name>
<Sound> meow </Sound>
</Cat>
</Animals>
Run Code Online (Sandbox Code Playgroud)
需要表现为:
abstract class Animal :XmlMagic
{
public string Name{get;set;}
public string Sound{get;set;}
public void SomeMagicalXMLSerializationMethod()
{}
public void SomeMagicalXMLDeSerializationMethod()
{}
}
class Dog: Animal, XmlMagic
{
public int SomeOtherProp{get;set;}
public void SomeMagicalXMLSerializationMethod()
{}
public void SomeMagicalXMLDeSerializationMethod()
{}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用.Net 3.5上的Reactive Extensions库的任务部分
它大部分工作顺利,但在一个地方它调用相同的任务两次.
电话看起来像这样:
Task.Factory.StartNew(
() => Processor.ProcessMessage(incomingMessage),
TaskCreationOptions.PreferFairness );
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?这是一个错误吗?
----更新
我认为问题在于c#在lambdas中关闭的方式.问题不在TPL中,与普通旧线程池一起返回同样的问题.
这解决了它:
foreach (var Processor in processors)
{
object[] crap = new object[2];
crap[0] = Processor;
crap[1] = incomingMessage;
Task.Factory.StartNew(Magic, crap, TaskCreationOptions.PreferFairness);
}
public void Magic(object obj)
{
object[] crap =(object[]) obj;
((IIncomingMessageProcessor)crap[0]).ProcessMessage((IncomingMessageBase)crap[1]);
}
Run Code Online (Sandbox Code Playgroud)
原始来源是:
foreach (var Processor in processors)
{
Task.Factory.StartNew(
() => Processor.ProcessMessage(incomingMessage),
TaskCreationOptions.PreferFairness );
}
Run Code Online (Sandbox Code Playgroud)
所以我在处理器周围关闭,我想问题是它为lambda回收相同的对象并交换处理器.
----更新2
我确信这是问题所在.我在创建任务时重构和调试了System.Threading.dll,它是使用相同的委托(Same ObjectID)创建的,并且处理器在迭代之间的Target属性中发生了变化.谁知道一个好的工作?
----更新3这也有效(感谢Judah Himango):
foreach (var processor in processors)
{
var crap = processor;
Task.Factory.StartNew(() => crap.ProcessMessage(incomingMessage), …Run Code Online (Sandbox Code Playgroud) 使用.Net,我想通过HttpWebRequest传递一些二进制数据(一些序列化对象).
我可以将它放在请求流上,还是需要将其编码为base64字符串?
我的意思是如果我有:
byte[] data = new byte[1000];
GetSomeStrangeData(data);
Run Code Online (Sandbox Code Playgroud)
我是否需要使用Convert.ToBase64String或者我可以将它从HttpWebRequest.GetRequestStream写入流中吗?
后人:
http://tools.ietf.org/html/rfc2616
在C#的精彩世界里,我可以创建一个内存流而不指定它的大小,写入它然后只需要获取底层缓冲区.
我怎样才能在c ++中做同样的事情?基本上我需要这样做:
memory_stream ms(GROW_AS_MUCH_AS_YOU_LIKE);
ms << someLargeObjects << someSmallObjects << someObjectsWhosSizeIDontKnow;
unsigned char* buffer = ms.GetBuffer();
int bufferSize = ms.GetBufferSize();
rawNetworkSocket.Send(buffer, bufferSize);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,虽然我并不熟悉它,但我的项目却有所提升.
谢谢.
如何从缓冲区unsigned char*或vector创建一个istream.
基本上我想要:
void Func(vector<unsigned char> data)
{
someSortOfIstream x (data);
x >> something;
}
Run Code Online (Sandbox Code Playgroud)
也使用提升....
USE master
GO
DECLARE @DbName nvarchar(MAX)
SET @DbName = N'DataBase'
ALTER DATABASE @DbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE @DbName SET OFFLINE WITH NO_WAIT
GO
ALTER DATABASE @DbName SET ONLINE
GO
ALTER DATABASE @DbName
SET MULTI_USER
GO
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 EXEC,但它有点难看......
我有一个奇怪的错误,我不明白,并改变LINQ的IEnumerable列表中途固定它,我不明白为什么
不是真正的代码,但非常相似下面的代码不起作用:
// an IEnumerable of some object (Clasess) internally an array
var ansestors = GetAnsestors();
var current = GetCurrentServerNode();
var result = from serverNode in ansestors
select new PolicyResult
{
//Some irrelevant stuff
OnNotAvailableNode = NodeProcessingActionEnum.ContinueExecution,
};
var thisNode = new PolicyResult
{
//Some irrelevant stuff
OnNotAvailableNode = NodeProcessingActionEnum.ThrowException,
};
result = result.Reverse();
result = result.Concat(new List<PolicyResult> { thisNode });
result.First().OnNotAvailableNode = NodeProcessingActionEnum.ThrowException;
// When looking in the debugger, and in logs, the first element of the
// result …Run Code Online (Sandbox Code Playgroud) 我喜欢F#,我想通过编写一些脚本来实现一些烦人任务的自动化.
我如何以与CMD或PowerShell相同的方式与其他程序交互,例如RoboCopy或iisreset或net?
我知道我可以自己做,System.Diagnostics.Process但很难做到正确(返回代码,标准流等).
必须有一个图书馆,任何建议?
我在C++中有一个char数组,它像{'a','b','c',0,0,0,0}
现在我把它改成一个流,我希望它看起来像"abc",其中有四个空格,我主要使用std :: stiring,我也有提升.我怎么能用C++做到这一点
基本上我认为我正在寻找类似的东西
char hellishCString[7] = {'a','b','c',0,0,0,0}; // comes from some wired struct actually...
std::string newString(hellishCString, sizeof(hellishCString));
newString.Replace(0,' '); // not real C++
ar << newString;
Run Code Online (Sandbox Code Playgroud) .net ×6
c# ×5
c++ ×3
boost ×2
f# ×2
stl ×2
buffer ×1
cmd ×1
dml ×1
f#-scripting ×1
http ×1
linq ×1
networking ×1
powershell ×1
sql ×1
sql-server ×1
stdstring ×1
stream ×1
xml ×1