我有一个可变长度NSStatusItem,我希望尽可能保持可见,即使这意味着只显示一些内容,但当我的项目足够大以进入应用程序的菜单栏时,它完全隐藏.有没有办法告诉何时发生这种情况,以便我可以缩小视图以适应可用空间?
我已经尝试了自定义视图,覆盖了所有viewWill*方法,框架设置器和显示方法,并定期检查包含窗口是否已移动或隐藏.当我的物品太长时,我找不到任何方法来判断.
-[NSMutableAttributedString initWithHTML:documentAttributes:] 似乎破坏了特殊字符:
NSString *html = @"“Hello” World"; // notice the smart quotes
NSData *htmlData = [html dataUsingEncoding:NSUTF8StringEncoding];
NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithHTML:htmlData documentAttributes:nil];
NSLog(@"%@", as);
Run Code Online (Sandbox Code Playgroud)
打印“Hello†World后跟一些RTF命令.在我的应用程序中,我将属性字符串转换为RTF并将其显示在一个NSTextView,但字符也在那里被破坏.
根据文档,默认编码是UTF-8,但我尝试显式,结果是相同的:
NSDictionary *attributes = @{NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]};
NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithHTML:htmlData documentAttributes:&attributes];
Run Code Online (Sandbox Code Playgroud) 将 lineBreakMode 设置为 byWordWrapping 并将 numberOfLines 设置为 0 似乎还不够:
struct MyTextView: UIViewRepresentable {
func makeUIView(context: Context) -> UILabel {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.text = "Here's a lot of text for you to display. It won't fit on the screen."
return label
}
func updateUIView(_ view: UILabel, context: Context) {
}
}
struct MyTextView_Previews: PreviewProvider {
static var previews: some View {
MyTextView()
.previewLayout(.fixed(width: 300, height: 200))
}
}
Run Code Online (Sandbox Code Playgroud)
无论我对 lineBreakMode 使用哪种设置,文本都不会换行。画布预览和实时预览都如下所示:
我得到的最接近的是设置 preferredMaxLayoutWidth,这确实会导致文本换行,但似乎没有一个值表示“无论视图大小如何”。
我正在寻找我的Haskell程序中的优化机会,通过编译-prof,但我不知道如何解释包含省略号的成本中心.什么是filter.(...)和jankRoulette.select.(...)?
COST CENTRE MODULE %time %alloc
filter.(...) Forest 46.5 22.3
set-union Forest 22.5 4.1
cache-lookup Forest 16.0 0.1
removeMany MultiMapSet 3.7 1.9
insertMany MultiMapSet 3.3 1.8
jankRoulette.select.(...) Forest 1.4 15.2
Run Code Online (Sandbox Code Playgroud)
我通过以下方式生成: $ ghc --make -rtsopts -prof -auto-all main.hs && ./main +RTS -p && cat main.prof
该函数filter在where子句中有一些定义,如下所示:
filter a b = blahblah where
foo = bar
bar = baz
baz = bing
Run Code Online (Sandbox Code Playgroud)
但是,这些都显示为filter.foo,filter.bar等等.
我以为它们可能是嵌套的表达式,但jankRoulette.select没有任何表达式.我在其中大多数前面添加了SCC指令,而没有任何成本中心升至顶峰.
由于大部分时间都花在了 …
我应该能够使用相同AudioBufferSourceNode的声音多次播放声音吗?出于某种原因,noteGrainOn即使进行干预,第二次呼叫也不会播放音频noteOff.
此代码仅播放一次声音:
var node = audioContext.createBufferSource()
node.buffer = audioBuffer
node.connect(audioContext.destination)
var now = audioContext.currentTime
node.noteGrainOn(now, 0, 2)
node.noteOff(now + 2)
node.noteGrainOn(now + 3, 0, 2)
node.noteOff(now + 5)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用Postgres数据库的Node.js Web服务器.我曾经连接过每个新请求,如下所示:
app.get('/', function (req, res) {
pg.connect(pgconnstring, function (err, client) {
// ...
});
});
Run Code Online (Sandbox Code Playgroud)
但在几次请求之后,我注意到Heroku在尝试连接时出现"内存不足"错误.我的数据库只有10行,所以我看不出这是怎么回事.我的所有数据库访问都是这种形式:
client.query('SELECT * FROM table', function (err, result) {
if (err) {
res.send(500, 'database error');
return;
}
res.set('Content-Type', 'application/json');
res.send(JSON.stringify({ data: result.rows.map(makeJSON) }));
});
Run Code Online (Sandbox Code Playgroud)
假设内存错误是由于与数据库有多个持久连接,我切换到我在几个node-postgres连接文件顶部只连接一次的例子中看到的样式:
var client = new pg.Client(pgconnstring);
client.connect();
app.get('/', function (req, res) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在连接中断后执行查询时,我的请求会挂起(无限期?).(我通过杀死一个Postgres服务器并将其恢复来模拟它.)
那么我该怎么做呢?
我正在使用NSTask和NSTextView编写一个简单的终端.如何和应该实施?openptyCtrlCCtrlD
我开始像这样的shell:
int amaster = 0, aslave = 0;
if (openpty(&amaster, &aslave, NULL, NULL, NULL) == -1) {
NSLog(@"openpty failed");
return;
}
masterHandle = [[NSFileHandle alloc] initWithFileDescriptor:amaster closeOnDealloc:YES];
NSFileHandle *slaveHandle = [[NSFileHandle alloc] initWithFileDescriptor:aslave closeOnDealloc:YES];
NSTask *task = [NSTask new];
task.launchPath = @"/bin/bash";
task.arguments = @[@"-i", @"-l"];
task.standardInput = slaveHandle;
task.standardOutput = slaveHandle;
task.standardError = errorOutputPipe = [NSPipe pipe];
[task launch];
Run Code Online (Sandbox Code Playgroud)
然后我拦截CtrlC并发-[interrupt]送到NSTask这样的:
- (void)keyDown:(NSEvent …Run Code Online (Sandbox Code Playgroud) 我正在尝试在iOS和OS X上共享我的Scene Kit代码,但是接受颜色(和图像)的API调用可以采用UIColor/UIImage或NSColor/NSImage,具体取决于平台.如何在不重复代码的情况下在Swift中创建正确的类?
我有两个数组喜欢[1, 2, 3]和["a", "b", "c"]我想的压缩值映射过(1, "a"),(2, "b")和(3, "c")使用ZIP2.
如果我这样做:
let foo = map(Zip2([1, 2, 3], ["a", "b", "c"]).generate()) { $0.0 }
Run Code Online (Sandbox Code Playgroud)
foo有类型ZipGenerator2<IndexingGenerator<Array<Int>>, IndexingGenerator<Array<String>>>?.
有没有办法让这个数组?
我正在使用Reflex.Dom库,它定义了一组用于创建HTML DOM元素的函数
el 创造一个元素el' 创建并返回一个元素elAttr 创建具有给定属性的元素elAttr' 创建并返回具有给定属性的元素我正在创建自己的小部件库,我不想为每个小部件定义所有这些变体.所以我编写了一个使用相同名称的类型类,但是根据彼此的方式定义了所有函数,只留下其中一个在每个实例中定义:
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
module ElMaker where
import Data.Map (Map)
import qualified Data.Map as Map
import qualified Reflex.Dom as D
-- el: type of element to create
-- input: input parameter
-- output: return value
class (D.MonadWidget t m) => ElMaker t m el input output where
el :: el -> input -> m output
el e = …Run Code Online (Sandbox Code Playgroud) 我有一个分支,里面有一些修改.我想尝试进行一些代码更改,需要重新排序并使用histedit修补这些提交,但我想保留原始分支,以防它不顺利.我怎样才能做到这一点?
之前:
master -> change 1 -> change 2 (branch A)
Run Code Online (Sandbox Code Playgroud)
后:
master -> change 1 -> change 2 (branch A)
-> change 1 -> change 2 (branch B)
Run Code Online (Sandbox Code Playgroud) 有没有更短的方式来写这个?
if (someBool) {
$dom.show();
} else {
$dom.hide();
}
Run Code Online (Sandbox Code Playgroud)
可以调用jQuery的toggleClass函数toggleClass('class', someBool),根据someBool的值添加或删除类.我正在寻找一个像jQuery中的函数来显示/隐藏元素.