小编her*_*son的帖子

MongoDB和复合主键

我正在尝试确定在mongo db中处理复合主键的最佳方法.与该系统中的数据交互的主要密钥由2个uuids组成.uuids的组合保证是独特的,但是没有个体uuids.

我看到了几种管理方法:

  1. 使用一个对象作为由2个值组成的主键(如此处所示)

  2. 使用标准的自动生成的mongo对象id作为主键,将我的密钥存储在两个单独的字段中,然后在这两个字段上创建一个复合索引

  3. 使主键成为2个uuids的哈希值

  4. 我目前还没有意识到的其他一些很棒的解决方案

这些方法的性能影响是什么?

对于选项1,由于具有非顺序键,我担心插入性能.我知道这可以扼杀传统的RDBMS系统,我已经看到迹象表明在MongoDB中也是如此.

对于选项2,拥有一个永远不会被系统使用的主键似乎有点奇怪.此外,似乎查询性能可能不如选项1中的好.在传统的RDBMS中,聚簇索引提供最佳查询结果.MongoDB中有多相关?

对于选项3,这将创建一个单个id字段,但同样在插入时它不会是顺序的.这种方法还有其他优点/缺点吗?

对于选项4,那么......选项4是什么?

此外,还有一些讨论可能在将来的某个时候使用CouchDB而不是MongoDB.使用CouchDB会提出不同的解决方案吗?

更多信息:关于这个问题的一些背景知识可以在这里找到

primary-key-design mongodb composite-primary-key

45
推荐指数
4
解决办法
3万
查看次数

将表达式树转换为源代码字符串

我有一个具有以下签名的功能......

public string DoJunk(Expression<Func<bool>> expression)
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法将"表达式"参数转换回类似于原始源代码的东西(或者至少是原始源代码的ac#表示).所以,如果有人像这样调用这个函数......

DoJunk(() => (i + j) * 9 == Math.Round((double)j / (i - 3), 4))
Run Code Online (Sandbox Code Playgroud)

...我希望能够将表达式转换为此...

(i + j) * 9 == Math.Round((double)j / (i - 3), 4)
Run Code Online (Sandbox Code Playgroud)

有没有人这样做过?

.net lambda

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

Git - 推动一个大型项目的远程分支非常慢

我们只是转向我的工作.我们有一个相当大的项目,在版本控制下有一些相当大的资源(~500MB).

今天我们尝试将分支机构推送到远程服务器,并且惊讶于git似乎试图上传整个项目.我本来希望git只发送4-5个有变化的文本文件的增量(就像普通推送到master一样).这不是远程分支的工作原理吗?我们用过git push origin some_branch_name,在这种情况下有更好的命令吗?我们不应该在git中存储大量资源吗?如果没有,人们通常如何处理这种情况?有没有更好的方法让一个开发人员与另一个开发人员分享正在进行的工作,而无需将更改提交给主分支?就目前而言,我们正在寻找大约15分钟来推动一个远程分支,这实际上是行不通的.我们做错了什么?

git

14
推荐指数
1
解决办法
7621
查看次数

某些用户从Facebook获取"验证访问令牌错误"

尝试发布到用户流时,我从Facebook收到以下错误.

Error validating access token: The session has been invalidated because the user has changed the password or because auth.expireSession was called.

工作流程如下:

  1. 授权Facebook请求scope=offline_access,publish_stream权限(如果当前用户尚未授权)

  2. 在服务器上做一些工作(需要5-10分钟)

  3. 尝试发布到用户的Facebook流

此代码适用于许多用户,但对于某些用户,我收到Error validating access token错误.它开始在几周前经常发生,然后似乎停止了,现在又发生了很多.我当然不是在呼唤auth.expireSession我的目的,而且似乎不太可能多个用户在5-10分钟的窗口中将其密码从授权发布到发布.有谁知道这可能导致什么?

facebook facebook-graph-api facebook-oauth facebook-stream-story facebook-permissions

9
推荐指数
1
解决办法
5万
查看次数

Azure - 在阶段动态发现服务Web角色URL

我正在考虑将现有的应用程序移动到Azure.它将在一个Web角色中具有MVC应用程序,在另一个Web角色中具有一些WCF服务.在线直播时,该网站将会存在http://www.myapp.com并且服务将http://api.myapp.com与MVC应用配置为指向服务http://api.myapp.com.

问题是将应用程序推送到Azure上的"阶段"配置时.我的理解是,每次推送到舞台都会使服务生活在一个新的网址(一些随机的东西http://4aa5ae2071324585ba5a902f4242a98c.cloudapp.net/).在这种情况下,我的MVC应用程序发现服务网址的最佳方式是什么?

一种选择是设置dns条目,http://stage.api.myapp.com并在每次推送到舞台时更新我的​​DNS CNAME记录以指向新的Azure临时URL,但是......哎呀.

另一个选择是推送到阶段,获取服务的新URL,RDC到MVC角色的每个实例并手动更新配置.还好.

有一个简单的方法吗?我知道我可以用PowerShell之类的东西自动执行上面的一些步骤,但我真的希望Azure框架中有一些东西可以让它变得简单.看起来这将是一个标准的场景.

azure azure-configuration

6
推荐指数
1
解决办法
3581
查看次数

Silverlight TreeView - 扩展节点时加载数据

有没有办法只在父节点扩展时加载子节点?我遇到的问题是,如果某个节点没有任何子节点,则不会显示"展开"图标.因为我不想在点击图标之前加载孩子,所以我留下了一点点捕捉22.

silverlight silverlight-toolkit

5
推荐指数
1
解决办法
7168
查看次数

Silverlight流式传输上传

我有一个需要将大文件上传到服务器的Silverlight应用程序.我已经看过使用WebClient和HttpWebRequest上传,但是我没有看到使用任一选项流式传输上传的明显方法.做到文件大小,在上传不合理之前将整个内容加载到内存中.这在Silverlight中是否可行?

silverlight webclient httpwebrequest

5
推荐指数
1
解决办法
2453
查看次数

这会收集垃圾吗?

这是将Lambda用作EventHandler的有效方法吗?在我看来,处理程序已被正确删除,垃圾收集器应该清理它.但是,我还没有看到其他人这样做,所以我想我最好再仔细检查一下.

同样,用什么来测试这是否实际上是垃圾收集的最佳工具(最好是免费的)是什么?

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(10);

EventHandler callback = null;
callback = (s, e) =>
    {
        timer.Stop();
        timer.Tick -= callback;
    };

timer.Tick += callback;
timer.Start();
Run Code Online (Sandbox Code Playgroud)

c# lambda

5
推荐指数
1
解决办法
887
查看次数

AVFoundation - 为什么我不能正确地获得视频

AVCaptureSession用来从设备摄像头捕获视频,然后使用AVAssetWriterInputAVAssetTrack压缩/调整视频大小,然后再将其上传到服务器.最终视频将通过html5视频元素在网上观看.

我遇到了多个问题,试图让视频的方向正确.我的应用程序仅支持横向,所有捕获的视频都应横向显示.但是,我想允许用户将设备保持在横向方向(即左侧或右侧的主页按钮).

我可以使用以下代码行以正确的方向显示视频预览

_previewLayer.connection.videoOrientation = UIDevice.currentDevice.orientation;
Run Code Online (Sandbox Code Playgroud)

通过AVAssetWriterInput和朋友处理视频时问题就开始了.结果似乎并未考虑视频捕获的左右横向模式.IOW,有时视频会颠倒过来.经过一些谷歌搜索后,我发现许多人建议以下代码行可以解决这个问题

writerInput.transform = videoTrack.preferredTransform;
Run Code Online (Sandbox Code Playgroud)

......但这似乎不起作用.经过一些调试后videoTrack.preferredTransform,无论视频被捕获的方向如何,我都发现它始终是相同的值.

我试图手动跟踪什么方位的视频在拍摄和设置writerInput.transform,以CGAffineTransformMakeRotation(M_PI)根据需要.哪解决了问题!!!

...八九不离十

当我在设备上查看结果时,此解决方案按预期工作.录制时,无论左右方向如何,视频都是正面向上的.不幸的是,当我在另一个浏览器中观看完全相同的视频时(Mac书上的chrome),它们都是颠倒的!?!?!?

我究竟做错了什么?

编辑

这是一些代码,万一它有用...

-(void)compressFile:(NSURL*)inUrl;
{                
    NSString* fileName = [@"compressed." stringByAppendingString:inUrl.lastPathComponent];
    NSError* error;
    NSURL* outUrl = [PlatformHelper getFilePath:fileName error:&error];

    NSDictionary* compressionSettings = @{ AVVideoProfileLevelKey: AVVideoProfileLevelH264Main31,
                                           AVVideoAverageBitRateKey: [NSNumber numberWithInt:2500000],
                                           AVVideoMaxKeyFrameIntervalKey: [NSNumber numberWithInt: 30] };

    NSDictionary* videoSettings = @{ AVVideoCodecKey: AVVideoCodecH264,
                                     AVVideoWidthKey: [NSNumber numberWithInt:1280],
                                     AVVideoHeightKey: [NSNumber numberWithInt:720],
                                     AVVideoScalingModeKey: AVVideoScalingModeResizeAspectFill,
                                     AVVideoCompressionPropertiesKey: compressionSettings };

    NSDictionary* videoOptions = …
Run Code Online (Sandbox Code Playgroud)

objective-c avfoundation

5
推荐指数
1
解决办法
4181
查看次数

CoreAudio:使用 kAudioUnitSubType_VoiceProcessingIO 计算输入和输出之间的总延迟

我正在 iPhone/iPad 上使用 CoreAudio 开发一个应用程序。该应用程序既通过扬声器(输出)播放音频,又同时从麦克风(输入)录制音频。就本应用程序而言,能够比较输入和输出,特别是它们在时域中的“排列”程度,这一点非常重要。因此,正确计算输入和输出通道之间的总延迟至关重要。

我正在 3 种不同的设备上进行测试。一部 iPhone、一部 iPad 和模拟器。我凭经验确定 iPhone 的延迟约为 4050 个样本,iPad 接近 4125 个样本,模拟器大约为 2500 个样本。

经过大量研究(又称谷歌搜索),我在网上发现了一些关于计算 CoreAudio 延迟的讨论,但它们通常涉及在 OSX 而不是 iOS 上使用 CoreAudio。因此,它们指的是 iOS 上不存在的各种功能。然而,对于 iOS 来说,正确的解决方案似乎是使用、和AVAudioSession的某种组合。然而,这些值的组合似乎无法达到上述凭经验确定的值。此外,当我在调用之前和之后检查每个参数时,我会得到截然不同的值。更令人困惑的是,这些值非常接近调用之前的预期延迟,这与我的预期相反。inputLatencyoutputLatencyIOBufferDurationAudioUnitInitializeAudioUnitInitialize

这是我看到的价值观。

  • iPad(之前):in 0.032375,out 0.013651,buf 0.023220,总样本 3054
  • iPad(之后):in 0.000136,out 0.001633,buf 0.023220,总样本1102
  • iPhone(之前):in 0.065125,out 0.004500,buf 0.021333,总样本 4011
  • iPhone(之后):0.000354,out 0.000292,buf 0.021333,样本总数 969

模拟器总是为输入和输出返回 0.01,但我怀疑这些不是实际/正确的值,并且模拟器不支持此功能。

另一个可能有趣的注意事项是我正在使用kAudioUnitSubType_VoiceProcessingIO而不是kAudioUnitSubType_RemoteIO我期望增加一些额外的延迟。我的假设是这将包含在inputLatency值中,但也许我需要查询另一个值来包含它?

确定 iOS 中输入和输出之间的总延迟的正确方法是什么?

audio core-audio audio-recording ios

5
推荐指数
1
解决办法
948
查看次数