小编Dav*_*ong的帖子

简化数学表达式的策略

我有一个结构良好的树,代表一个数学表达式.例如,给定字符串:"1+2-3*4/5",这将被解析为:

subtract(add(1,2),divide(multiply(3,4),5))
Run Code Online (Sandbox Code Playgroud)

这表示为这棵树:

我希望能够做的就是把这棵树尽可能地减少它.在上面的例子中,这很简单,因为所有的数字都是常量.然而,一旦我允许未知数(用a $后面跟一个标识符表示),事情开始变得棘手:

"3*$a/$a"divide(multiply(3,$a), $a)

这应该简化为3,因为这些$a术语应该相互抵消.问题是,"我如何以通用的方式认识到这一点?" 我如何认识到这min(3, sin($x))将永远存在sin($x)?我怎么认出那sqrt(pow($a, 2))abs($a)?我怎么认识到nthroot(pow(42, $a), $a)( 42 权力的根源)是42

我意识到这个问题相当广泛,但是我一直在打击这个问题一段时间并没有得到足够令人满意的东西.

algorithm math simplify

65
推荐指数
3
解决办法
2万
查看次数

所有用户和组的列表

我正在尝试获取Mac OS X 10.5+上所有用户和所有组的列表.我怎样才能做到这一点?

例如,我机器上所有用户的列表应该返回:( _amavisd, _appowner, _appserver, _ard, _atsserver, _calendar, _carddav, _clamav, _coreaudiod, _cvmsroot, _cvs, _cyrus, _devdocs, _dovecot, _eppc, _installer, _jabber, _lda, _locationd, _lp, _mailman, _mcxalr, _mdnsresponder, _mysql, _pcastagent, _pcastserver, _postfix, _qtss, _sandbox, _screensaver, _securityagent, _serialnumberd, _softwareupdate, _spotlight, _sshd, _svn, _teamsserver, _timezone, _tokend, _trustevaluationagent, _unknown, _update_sharing, _usbmuxd, _uucp, _windowserver, _www, _xgridagent, _xgridcontroller, daemon, dave, nobody, root这是手动编译的).

如何以编程方式获取该列表(以及所有组的相应列表)?我愿意接受替代(非基于c)的解决方案,例如Applescript,命令行等.


很久以后更新

TALlama的回答促使我调查了Open Directory的API,我发现这个列表可以通过编程方式轻松获取:

#import <OpenDirectory/OpenDirectory.h>
ODSession *s = [ODSession defaultSession];
ODNode *root = [ODNode nodeWithSession:s name:@"/Local/Default" error:nil];
ODQuery …
Run Code Online (Sandbox Code Playgroud)

c macos cocoa macos-carbon objective-c

53
推荐指数
3
解决办法
8万
查看次数

在Ruby中生成后台进程

我正在为学校项目编写一个ruby bootstrapping脚本,这个引导过程的一部分是启动一些后台进程(编写并正常运行).我想做的是:

`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`
Run Code Online (Sandbox Code Playgroud)

但是,第一次调用时会阻塞执行daemon1.我已经看过一个Process.spawn方法的引用,但这似乎是一个1.9+的功能,我只限于Ruby 1.8.

我也尝试从不同的线程执行这些守护进程,但我希望我的引导脚本能够退出.

那么我怎样才能启动这些后台进程,以便我的引导脚本不会阻塞并且可以退出(但仍然让守护进程在后台运行)?

ruby background-process

40
推荐指数
1
解决办法
2万
查看次数

检索正在运行的进程的名称

首先,我知道已经提出过类似的问题,但到目前为止提供的答案并不是很有用(他们都建议使用以下选项之一).

我有一个用户应用程序需要确定特定进程是否正在运行.以下是我对该过程的了解:

  • 名字
  • 用户(root)
  • 应该已经运行,因为它是LaunchDaemon,这意味着
  • 它的父进程应该是launchd(pid 1)

我已经尝试了几种方法来实现这一点,但到目前为止还没有任何方法.这是我尝试过的:

  1. 运行ps并解析输出.这有效,但速度很慢(fork/ exec很贵),我希望尽可能快.

  2. 使用此处列出GetBSDProcessList功能.这也有效,但他们说检索进程名称(从每个结构访问)的方式是有缺陷的.结果只包含进程名称的前16个字符,可以在结构的定义中看到:kp_proc.p_commkinfo_procchar*kp_proc

    #define MAXCOMLEN 16 //defined in param.h
    struct extern_proc {  //defined in proc.h
      ...snip...
      char p_comm[MAXCOMLEN+1];
      ...snip...
    };
  3. 使用libProc.h检索进程信息:

    pid_t pids[1024];
    int numberOfProcesses = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0);   
    proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids));    
    for (int i = 0; i < numberOfProcesses; ++i) {
      if (pids[i] == 0) { continue; } …

c macos process objective-c

30
推荐指数
1
解决办法
9362
查看次数

如何将NSAttributedString转换为HTML字符串?

正如标题所说,现在我可以简单地将HTML转换NSAttributedStringinitWithHTML:documentAttributes:,但我想在这里做的是反向.是否有任何第三方库来实现这一目标?

   @implementation NSAttributedString(HTML)
-(NSString *)htmlForAttributedString{
    NSArray * exclude = [NSArray arrayWithObjects:@"doctype",
                         @"html",
                         @"head",
                         @"body",
                         @"xml",
                         nil
                         ];
    NSDictionary * htmlAtt = [NSDictionary
                              dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType,
                              NSDocumentTypeDocumentAttribute,
                              exclude,
                              NSExcludedElementsDocumentAttribute,
                              nil
                              ];
    NSError * error;
    NSData * htmlData = [self dataFromRange:NSMakeRange(0, [self length])
                               documentAttributes:htmlAtt error:&error
                         ];
        //NSAttributedString * htmlString = [[NSAttributedString alloc]initWithHTML:htmlData documentAttributes:&htmlAtt];
    NSString * htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
    return htmlString;
}
@end
Run Code Online (Sandbox Code Playgroud)

html cocoa nsattributedstring

26
推荐指数
2
解决办法
1万
查看次数

在init和dealloc方法中有效使用访问器?

我现在从几个来源(stackoverflow.com,cocoa-dev,文档,博客等)中听到,在init和dealloc方法中使用访问器和设置(foo,setFoo :)是"错误的".据我所知,如果你这样做,很可能会混淆其他正在观察财产的物体.(这里给出一个简单的例子)

但是,由于以下原因,我不得不说我不同意这种做法:

新的Objective-C运行时(iPhone上的那个和10.5中的64位运行时)允许您在声明相应的ivar的情况下声明属性.例如,以下类将在10.5或iPhone(设备,而不是模拟器)上编译得很好:

@interface Foo : NSObject { }

  @property (retain) id someObject;

@end

@implementation Foo

  @synthesize someObject;

@end
Run Code Online (Sandbox Code Playgroud)

理解上面是一个完全有效的Objective-C类,假设我决定编写一个初始化程序,并且出于内存管理的目的,使用dealloc方法(因为在iPhone上没有GC).我读过有关初始化器和释放器的所有内容都会让我编写以下两种方法:

- (id) init {
  if (self = [super init]) {
    //initialize the value of someObject to nil
    [self setSomeObject:nil];
  }
  return self;
}

- (void) dealloc {
  //setting someObject to nil will release the previous value
  [self setSomeObject:nil];
  [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

但是,根据文件和流行的观点,这是"错误的".所以我的问题是这样的:

  1. 如何在不使用访问器的情况下初始化someObject?您可能会说编译器(或运行时或其他)将确保someObject已设置为nil,但我相信依赖它会是不正确的行为.在C语言中有一个不错的背景,由于没有正确初始化变量,我看到了相当数量的错误,这似乎没有什么不同.
  2. 如果我不应该在dealloc方法中使用访问器,我该如何释放someObject?

如果其中任何一个的答案是"你不能",那么在init和dealloc方法中使用访问器怎么可能不好?

initialization properties objective-c accessor dealloc

24
推荐指数
2
解决办法
5180
查看次数

按属性IN数组过滤核心数据结果

我目前有核心数据成功返回标题为特定实体的所有结果Event:

NSManagedObjectContext *context = [delegate managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event" 
                                                     inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];

NSError *error;
NSArray *fetchResults = [context executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)

Event实体的一个属性是标题为的字符串tid.我还有一个filterArray包含所有允许的tid值的数组.

如何才能使我的Core Data请求仅返回具有与其中一个值匹配的tid属性的事件filterArray?我相信答案与NSPredicate相关,但我还不熟悉它还没有达到我的意愿.

cocoa core-data objective-c nspredicate ios

24
推荐指数
1
解决办法
2万
查看次数

18
推荐指数
1
解决办法
8042
查看次数

iOS流音频从一个iOS设备到另一个

我从设备iTunes库中获取一首歌并将其推入AVAsset:

- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
    NSArray *arr = mediaItemCollection.items;

    MPMediaItem *song = [arr objectAtIndex:0];

    NSData *songData = [NSData dataWithContentsOfURL:[song valueForProperty:MPMediaItemPropertyAssetURL]];
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个Game Center方法来接收数据:

- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID
Run Code Online (Sandbox Code Playgroud)

我很难找到如何通过GameCenter发送这个AVAsset然后让它在接收设备上播放.

我读过:http: //developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioStreamReference/Reference/reference.html#//apple_ref/doc/uid/TP40006162

http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html#//apple_ref/doc/uid/TP40009767-CH2-SW5

http://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html

我迷失了.信息超载.

我已经实现了Cocoa With Love的音频流代码,但我无法弄清楚如何通过GameCenter获取我收到的NSData并将其推送到他的代码中. http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html

有人可以帮我解决这个问题吗?因此,我需要帮助的部分只是简单地将歌曲数据分解成数据包(或者它可以工作),然后迭代这些数据包并通过游戏套件发送它,然后解析它在接收设备上传入的数据作为播放它它进来了.

iphone objective-c stream ipad ios

18
推荐指数
1
解决办法
7938
查看次数

Objective-C相当于类方法中Java的匿名类

我想在Objective-C中的类方法中设置对象的委托.伪代码:

+ (ClassWithDelegate*) myStaticMethod {
    if (myObject == nil) {
        myObject = [[ClassWithDelegate alloc] init];
        // myObject.delegate = ?
    }
    return myObject;
}
Run Code Online (Sandbox Code Playgroud)

在Java中,我只需创建一个实现委托协议的匿名类.如何在Objective-C中做类似的事情?

基本上我想避免创建一个单独的类(和文件)来实现一个简单的委托协议.

java delegates objective-c anonymous-types

17
推荐指数
2
解决办法
9948
查看次数