在为.Net提供体面的Chromium Embedded Framework(CEF)实现方面,两个主要选项似乎是CefSharp和CefGlue.它们的方法不同(CefGlue使用P/Invoke调用CEF非托管代码,CefSharp使用围绕CEF库的混合模式C++/CLI包装器).
是否有某种原因混合模式汇编比P/Invoke调用更好?在所有其他条件相同的情况下,似乎CefGlue(P/Invoke lib)为CEF项目提供了一个"更薄"的包装器,这意味着响应上游库中的更新可能会更快.
那里有没有经验的两个图书馆谁可以分享差异化因素?
再次编辑,因为我最初并不清楚我是否正在尝试在编译时初始化数组,而不是在运行时...
我有以下简化的测试用例:
typedef struct TestStruct
{
int length;
int values[];
};
TestStruct t = {3, {0, 1, 2}};
TestStruct t2 = {4, {0, 1, 2, 3}};
int main()
{
return(0);
}
Run Code Online (Sandbox Code Playgroud)
这适用于Visual C++,但不能在linux下用g ++编译.任何人都可以帮助我使这种特定的初始化器可移植吗?
其他细节:我正在使用的实际结构有几个其他int值,并且数组的长度范围可以从单个条目到超过1800个条目.
编辑:我认为(但不确定)这不是VLA问题.为了澄清,我正在尝试让编译器在编译时为我完成工作.运行时数组的长度是不变的.如果我错了,请道歉; 我主要是ac#/ Perl/Ruby程序员,他们坚持维护这个遗留应用程序......
任何帮助非常感谢.谢谢!
我正在调试一个明显的并发问题,这是一个我在工作中遇到的大应用程序.有问题的错误仅在运行了许多(12+)小时后出现在某些性能较低的机器上,我从未在调试器中重现它.因此,我的调试工具基本上只限于分析日志文件.
C#可以很容易地获得抛出异常的线程的堆栈跟踪,但是我还想在抛出异常时另外获取当前在我的AppDomain中执行的每个其他线程的堆栈跟踪.
这可能吗?
大约15年前,我曾经自娱自乐,并通过编写直接修改显示器上文本的错误代码来惹恼我的CS老师.这可以通过在配备VGA的PC兼容机上访问0xB8000的视频内存来轻松完成.
快进到今天,我决定通过调试端口尝试我的旧技巧,让我可以访问读取物理内存.令我满意的是,它仍然在我尝试过的第一个平台上工作.然后,令人沮丧的是,我发现它不适用于许多其他系统.它似乎不适用于所有系统都有UMA(共享内存)图形.
因此,对于所有BIOS编写者,低级操作系统人员和视频驱动程序专家的问题 - 如果我在具有共享图形内存的PC兼容系统上的常规80x25颜色文本模式,在实模式下,以及0xb8000 - 0xB8FFF都是0xFF,而不是给我屏幕上的内容,屏幕缓冲区在哪里?
我们通常在Excel中将一些数据(10-50列,数十万行)可视化为折线图或堆积条形图.
用户希望能够放大和缩小图表以获得单个样本,但这些操作确实让Excel瘫痪.
我正在考虑将数据嵌入到HTML页面中,使用内联JavaScript来处理浏览器中的可视化.像flotr JS charting lib这样的东西可以用于图表.
这个问题不止一次被问过,但我在任何讨论中都没有找到满意的答案.
我正在启动一个命令行过程,它可以对STDOUT进行实时测量,大约每秒产生一个新结果.使用System.Diagnostics.Process.StandardOutput导致完全不可接受的延迟(超过20秒),因为STDOUT数据通过Process.StandardOutput StreamReader中的4k缓冲区工作,并且似乎没有任何方法可以解决这个问题.
调用Process.StandardOutput.BaseStream.Flush()不起作用.
我试过对Process.StandardOutput进行逐字节同步读取,但是我仍然比实际输出落后4k.
任何人都可以至少验证我有可能以某种方式克服我重定向STDOUT时遇到的所有缓冲问题,并且一旦它出现在shell窗口中就会立即收到我的应用程序中的数据吗?我可以继承Process类并更改StandardOutput流读取器的行为吗?我是否需要查看原始的WINAPI呼叫?
不知何故,这必须要完成,即使我最终编写非托管C++来启动任务并使用输出,并将其连接起来.任何帮助都非常感谢; 我的智慧结束了......
编辑:看来我需要的是可用于C/C++,Perl,Python和Java的"期望"库的.Net实现(这是迄今为止我发现的唯一库).有谁知道这样的野兽是否存在?
我有一个使用分布式Redis后端的集群应用程序,动态生成的Lua脚本被分派到redis实例.Lua组件脚本可能变得相当复杂并且具有显着的运行时间,并且我希望能够对它们进行分析以找到热点.
SLOWLOG 对于告诉我脚本很慢,以及它们的速度有多慢很有用,但这不是我的问题.我知道它们有多慢,我想弄清楚它们哪些部分很慢.
redis EVAL文档很清楚redis不会将任何计时功能导出到lua,这使得它看起来可能是一个失败的原因.
那么,简短一个Redis的自定义分支,有没有办法告诉我的Lua脚本哪些部分比其他部分慢?
编辑 我接受了Doug的建议并使用了debug.sethook - 这是我在脚本顶部插入的钩子例程:
redis.call('del', 'line_sample_count')
local function profile()
local line = debug.getinfo(2)['currentline']
redis.call('zincrby', 'line_sample_count', 1, line)
end
debug.sethook(profile, '', 100)
Run Code Online (Sandbox Code Playgroud)
然后,看看我脚本中最热门的10行:
ZREVRANGE line_sample_count 0 9 WITHSCORES
Run Code Online (Sandbox Code Playgroud) 当我将整个表写入excel工作表时,我知道一次使用整个Range,而不是写入单个单元格.但是,有没有办法指定格式,因为我正在填充我要导出到Excel的数组?
这就是我现在所做的:
object MissingValue = System.Reflection.Missing.Value;
Excel.Application excel = new Excel.Application();
int rows = 5;
int cols = 5;
int someVal;
Excel.Worksheet sheet = (Excel.Worksheet)excel.Workbooks.Add(MissingValue).Sheets[1];
Excel.Range range = sheet.Range("A1", sheet.Cells(rows,cols));
object[,] rangeData = new object[rows,cols];
for(int r = 0; r < rows; r++)
{
for(int c = 0; c < cols; c++)
{
someVal = r + c;
rangeData[r,c] = someVal.ToString();
}
}
range.set_Value(MissingValue, rangeData);
Run Code Online (Sandbox Code Playgroud)
现在假设我希望将这些数字中的一些格式化为百分比.我知道我可以逐个单元地返回并更改格式,但这似乎打败了使用单个Range.set_Value()调用的整个目的.我可以使我的rangeData [,]结构包含格式化信息,这样当我调用set_Value()时,单元格的格式是我想要的吗?
为了澄清,我知道我可以设置整个Excel.Range对象的格式.我想要的是为内部循环中指定的每个单元格指定不同的格式.
我喜欢ThreadPool.它让我的生活更美好.然而,我的爱情可能已经悄然变成了一种我需要逃避的虐待关系,所以我需要一些来自我的兄弟们的建议(大概是姐妹们,虽然我还没有看到任何实际的证据).
我的基本问题是我有几个不同的库都以不协调的方式使用线程池,并且可能会耗尽线程.我希望有一些方法可以将ThreadPool分区,所以我可以给出一个特定的1类线程,另外20个线程,另外5个线程,等等.
我知道我可以编写自己的ThreadPool实现.我不想这样做,因为我很懒.那么,那里有一个简单的解决方案吗?
目前我受限于使用3.5 CLR.我知道很多这样的东西在4.0中变得更容易了.
我试图理解:在Android上,TestFlight如何确定它处于beta测试环境中,并且应该将活动上传到TestFlight服务器?在iOS上 有一些类似的 问题询问TestFlight,但没有一个与Android有关.
我已将TestFlight SDK集成到我公司的Android应用程序中,因为它看起来像是beta测试和远程日志记录的一个很好的解决方案(我们已经将它用于iOS),但我无法让它实际发送会话信息到TestFlight服务器.一旦我通过TestFlight应用程序安装我的应用程序,我立即看到它是通过TestFlight Web控制台安装的,然后是... nada.我没有得到会话数据或远程日志,即使我显然应该得到一些东西.
到目前为止我做了什么:
TestFlight.takeOff()
已被调用TestFlight.isActive()
报告true
我目前的猜测是TestFlight lib认为它在生产环境中,因此它不应该上传日志和会话信息.
该SDK文档无关提供回答这个问题,但我觉得,如果我的理解是找什么条件,我可以钉下来很快.
我闯入TestFlightLib.jar,发现它TestFlight.isActive()
实际上只是报告你是否已经调用过TestFlight.takeOff()
,所以这并不是一个好的指标,表明整个系统是否正常工作.
我试图让Toopher使用SSH,我遇到了这个错误:
Not a valid OAuth signed request. See http://oauth.net to learn more.
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:这是一个虚拟机计时错误.谢谢!
c# ×4
.net ×2
android ×1
api ×1
browser ×1
buffering ×1
c++ ×1
c++-cli ×1
chromium ×1
concurrency ×1
debugging ×1
dom ×1
dos ×1
excel ×1
expect ×1
flot ×1
graphics ×1
interop ×1
javascript ×1
lua ×1
oauth ×1
pinvoke ×1
portability ×1
process ×1
profiling ×1
redis ×1
stack-trace ×1
struct ×1
testflight ×1
threadpool ×1
toopher ×1
vga ×1
webkit ×1
winapi ×1