我正在为Mac OS X编写一个Mac OS 9"兼容层",因为我最近对这种怀旧感到震惊,并且因为所有当前的解决方案都要求你在虚拟机中运行Classic,它不支持所有应该运行的东西我想用.
为了实现这一目标,我实现了一个PEF可执行加载器,一个可以桥接到本机代码的PowerPC解释器,以及一些Mac OS 9库.整个事情都有点工作:解释器中有一些错误,但这是预期的,我正在努力.
到目前为止,我最大的问题是PowerPC程序是32位,所以指针需要是32位.为了满足这个约束,目前我只为i386编译.但是,当我试图围绕该核心进行构建时,它变得越来越受限制(例如,您不能将ARC与32位Cocoa应用程序一起使用).更不用说让PowerPC代码访问主机进程可以访问的所有东西并不是超级安全的.
我设计了"平台",最终切换到64位:解释器需要一个基地址,所有PowerPC指针都被该基地址偏移.(出于性能和设计原因,有一个将PowerPC地址转换为本地地址的地图是不可能的.)
由于64位地址空间有足够的空间容纳四十亿个独立的32位地址空间,这听起来像是一个很好的方式.
但我仍然有一个问题:我需要确保我能够在该地址范围内分配内存,因为PPC解释器不可能访问它之外的任何内容.
我现在正在考虑两种解决方案:
mmap
,但mmap
会要求页面倍数的分配,这对我来说似乎非常浪费,因为我需要为每个分配一个完整的页面,无论它多么小(尽管考虑到经典 - 这实际上可以是好的)与现代计算机相比,Mac的内存非常少;mmap
保留一个完整的0x100000000个字节PROT_NONE
,然后mprotect
在需要的页面在需要时实际分配内存,并把他们带回PROT_NONE
时,他们没有什么用处了.它在纸面上看起来不错,但这意味着我必须实施malloc
替代品.所以我该怎么做?是否有内置机制让我尝试malloc
在特定地址范围内分配内存?否则,是否有一个良好的,可读的,开源的实现,malloc
我可以自己?
对于学校项目,我们必须实施排名系统.然而,我们认为一个愚蠢的排名平均值很糟糕:一个用户排名5星的东西将有更好的平均值,188个用户排名4星,这只是愚蠢.
所以我想知道你们是否有一个"智能"排名的示例算法.它只需要考虑给出的排名和排名的数量.
谢谢!
在我拥有的页面上,我需要偶尔在DOM树中移动TinyMCE编辑器.但是,出于某种原因,编辑不喜欢它:它完全清除并变得无法使用.据我所知,这种行为在Safari 4和Firefox 3.6之间是一致的,但不是Internet Explorer 7/8.这是一个例子.
它真的让我感到沮丧的是做一些在Internet Explorer中工作的东西,但没有更好的浏览器.在文档中是否有一些关于永远不会尝试在DOM树中移动编辑器的内容?有某种解决方法吗?
我想要做的事情相当简单,但我找不到方法.我只想迭代除第一个孩子之外的节点的子节点.
例如,在这个XML片段中,我想要<bar>
除了第一个元素之外的所有元素:
<foo>
<Bar>Example</Bar>
<Bar>This is an example</Bar>
<Bar>Another example</Bar>
<Bar>Bar</Bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
我没有可以过滤的共同属性(比如id
标签或类似的东西).
有什么建议?
我决定尝试执行协同程序(我认为这就是我应该如何称呼它们)以获得乐趣和利润.我希望必须使用汇编程序,如果我想让它对任何事情都有用,可能还需要一些C.
请记住,这是出于教育目的.使用已经构建的协程库太容易了(而且真的没什么乐趣).
你们知道setjmp
和longjmp
?它们允许您将堆栈展开到预定义位置,并从那里继续执行.但是,它无法回退到堆栈上的"稍后".只是早点回来.
jmpbuf_t checkpoint;
int retval = setjmp(&checkpoint); // returns 0 the first time
/* lots of stuff, lots of calls, ... We're not even in the same frame anymore! */
longjmp(checkpoint, 0xcafebabe); // execution resumes where setjmp is, and now it returns 0xcafebabe instead of 0
Run Code Online (Sandbox Code Playgroud)
我想要的是一种在不同堆栈上运行而无需线程化的两种函数的方法.(显然,一次只能运行一次.我说没有线程.)这两个函数必须能够恢复另一个执行(并暂停自己的执行).有点像他们正在longjmp
对方.一旦它返回到另一个函数,它必须从它离开的地方恢复(即,在给另一个函数控制的调用期间或之后),有点像longjmp
返回setjmp
.
这就是我的想法:
A
创建并将并行堆栈归零(分配内存和所有内容).A
将其所有寄存器推送到当前堆栈.A
将堆栈指针和基指针设置为该新位置,并推送一个神秘的数据结构,指示要跳回的位置以及将指令指针放回的位置.A
大多数寄存器归零,并将指令指针设置为函数的开头B
.这是初始化.现在,以下情况将无限循环:
B
在该堆栈上运行,完成它需要的任何工作. …我正在尝试使用Microsoft的SQL Server 2005 JDBC驱动程序连接到我公司的SQL服务器.这就是我的连接字符串的样子:
jdbc:sqlserver://HOSTNAME;integratedSecurity=true;database=DATABASE;
Run Code Online (Sandbox Code Playgroud)
驱动程序抛出异常:
Invalid integratedSecurity property value:true
Run Code Online (Sandbox Code Playgroud)
使用"yes"代替提供不同的错误消息,指示"yes"不是布尔属性的有效选项.
如何使用集成安全性进行连接?
我会在我的室友的电脑上运行一个遗传算法整个周末,我担心它会在这么长时间内耗尽内存.但是,我的算法以这样的方式工作,这样可以很容易地减少不太有用的结果,所以如果有办法告诉我的程序什么时候用完了堆空间,我可能会腾出空间继续前进多一点时间.
在OutOfMemoryError之前,有没有办法在JVM用完堆空间时收到通知?
在Mac OS X上,对一个单词进行三指点击会弹出一个带有该单词定义的窗口.
这个成语也用在Xcode中,在符号上用三指点击显示其文档,就像它已被alt +点击一样.
我想做类似的事情并在我的应用程序的用户用三指点击某个令牌时显示定义NSTextView
.但是,我找不到如何检测用3个手指完成敲击.有人可以帮助我吗?
编辑如果这会向任何人提醒任何内容,[NSApplication sendEvent:]
当您执行此类操作时会触发三个事件(由覆盖捕获):
NSEvent: type=SysDefined loc=(270.918,250.488) time=417954.6 flags=0x100 win=0x0 winNum=28293 ctxt=0x0 subtype=6 data1=1818981744 data2=1818981744
NSEvent: type=SysDefined loc=(270.918,250.488) time=417954.6 flags=0x100 win=0x0 winNum=28293 ctxt=0x0 subtype=9 data1=1818981744 data2=1818981744
NSEvent: type=Kitdefined loc=(0,263) time=417954.8 flags=0x100 win=0x0 winNum=28306 ctxt=0x0 subtype=4 data1=1135411200 data2=1132691456
Run Code Online (Sandbox Code Playgroud) 我渐渐明白,我从来没有见过创建子类,但追赶的父类是真正有用的(除,当然,对于基本异常类,对于这一个单一的异常层次结构有处导出).
异常层次结构是否真的有用,xor是否应该从语言的基本异常类派生所有异常?
我有一个这样声明的工会:
union
{
int all[4];
struct
{
int a, b, c, d;
};
};
Run Code Online (Sandbox Code Playgroud)
该点all
阵列是单纯为了遍历所有4场简单。
为了使它更简单,我想用一个std::array<int, 4>
. 那会让我接触鼻恶魔吗?