我正在尝试对一个看起来像这样的数组进行排序:(请忽略这些人已经过了任何生活年龄的事实!我只需要很多数字)
NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"sam",@"name",@"28.00",@"age",nil];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"cody",@"name",@"100.00",@"age",nil];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"marvin",@"name",@"299.00",@"age",nil];
NSDictionary *person4 = [NSDictionary dictionaryWithObjectsAndKeys:@"billy",@"name",@"0.0",@"age",nil];
NSDictionary *person5 = [NSDictionary dictionaryWithObjectsAndKeys:@"tammy",@"name",@"54.00",@"age",nil];
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:person1,person2,person3,person4,person5,nil];
// before sort
NSLog(@"%@",arr);
NSSortDescriptor *ageSorter = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
[arr sortUsingDescriptors:[NSArray arrayWithObject:ageSorter]];
// after sort
NSLog(@"%@",arr);
Run Code Online (Sandbox Code Playgroud)
在排序之前,输出将是:
2010-07-21 10:46:31.898 Sorting[70673:207] (
{
age = "28.00";
name = sam;
},
{
age = "100.00";
name = cody;
},
{
age = "299.00";
name = marvin;
},
{ …Run Code Online (Sandbox Code Playgroud) 我需要在perl中构建一个可变深度哈希数据结构.最终我发现了这段代码:
#!/usr/bin/perl -w
use strict;
my %hash;
my $value = "foo";
my @cats = qw(a b c d);
my $p = \%hash;
foreach my $item (@cats) {
$p->{$item} = {} unless exists($p->{$item});
$p = $p->{$item};
}
Run Code Online (Sandbox Code Playgroud)
我的问题是它的工作原理和原因.我以为我知道perl是如何工作的.在这段代码中,我没有看到\%hash值被重置,并且看起来每个循环都会重置$ p(这是一个局部变量).我甚至可以用数据转储器看到它:运行:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my %hash;
my $value = "foo";
my @cats = qw(a b c d);
my $p = \%hash;
foreach my $item (@cats) {
print "BEFORE:\n";
print Dumper(\%hash);
#print Dumper($p);
$p->{$item} = {} …Run Code Online (Sandbox Code Playgroud) 我一直在做一个相当简单的程序,将一串字符(假设输入数字)转换为整数.
我改完之后,我注意到一些非常奇特的"错误",我不能回答大多是因我有限的知识如何,scanf(),gets()和fgets()职能的工作.(尽管我读过很多文学作品.)
所以没有写太多文本,这里是程序的代码:
#include <stdio.h>
#define MAX 100
int CharToInt(const char *);
int main()
{
char str[MAX];
printf(" Enter some numbers (no spaces): ");
gets(str);
// fgets(str, sizeof(str), stdin);
// scanf("%s", str);
printf(" Entered number is: %d\n", CharToInt(str));
return 0;
}
int CharToInt(const char *s)
{
int i, result, temp;
result = 0;
i = 0;
while(*(s+i) != '\0')
{
temp = *(s+i) & 15;
result = (temp + result) * 10;
i++;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用一个登录系统来设置下面的会话变量/ cookie.Chrome非常棒,让您可以毫不费力地查看您的Cookie,显然将其标记为"当我关闭我的浏览器时"到期的PHPSESSID.果然,当我登录时,关闭浏览器,然后打开一个新的浏览器会话,我不再登录了.
我怎样才能让用户保持登录状态,无论浏览器是否关闭?我想这样做,以便用户保持登录状态(如果可能的话,永久保存),除非故意注销.
提前致谢,
约翰
$_SESSION['loginid'] = $row['loginid'];
$_SESSION['username'] = $u;
Run Code Online (Sandbox Code Playgroud) 如何从任务中获取任务的task_id值?这是我的代码:
from celery.decorators import task
from django.core.cache import cache
@task
def do_job(path):
"Performs an operation on a file"
# ... Code to perform the operation ...
cache.set(current_task_id, operation_results)
Run Code Online (Sandbox Code Playgroud)
我的想法是,当我创建任务的新实例时,我task_id从任务对象中检索它.然后我使用任务ID来确定任务是否已完成.我不想通过path值跟踪任务,因为文件在任务完成后被"清理",并且可能存在也可能不存在.
在上面的例子中,我将如何获得值current_task_id?
那么在C#.Net中创建它是否可以,或者我不会把时间浪费在它可以提供给开发人员的简单承诺上并转到C\C++?
那么在我的情况下用C#编写服务器应用程序是否合理?
Offtop - 为什么不是WCF
警告:它在这里变得主观.
当您拥有每个服务会话的数据交换量相对较小的大公司时,WCF很感激.
当你有视频,LIVE视频时,一切都变得复杂.大量数据,大量用户同时从您的服务流入和流出.
尝试通过http绑定进行实时视频流 - 而不是尝试与其他人一起比你会看到为什么我不喜欢使用WCF直播的想法 - 它很慢,因为实时流媒体信息不需要这么多,毕竟你有没有在WCF看过一个直播视频流应用?不 - 你没有 - 你可能已经看过+ - Silverlight + IIS对的实时视频我不喜欢,因为它只适用于Silverlight\WindowsMediaPlayer视频流解决方案,而我想要更多.
我喜欢拥有覆盖UI的跨平台客户.我不喜欢(这是我个人的意见 - 所以它是主观的)Silverlight + IIS + WCF组.那么我该怎么办 - 就像FLV和Flash这样古老而简单的格式作为后端客户端进入套接字,流程 - 在某些部分开发更简单,在网络上进行实时视频的保守方式比从MS获得的更加保守.今天.
我喜欢Flash FLV直播,因为您只需打开套接字并开始向其发送实时FLV视频数据(对于每个用户FLV标头和FLV"标签",逐个:视频标签,音频标签,视频标签,音频标签等)和Flash播放它!没有特殊的\异常代码.它快速,易于支持,并且不会使客户需要任何新的\异常.而你在服务器端可以采用那种"TAG"形式的视频\音频数据表示.
所以这就是为什么我只是不想使用WCF - 很难在客户端播放实时视频,对于直播视频服务器没有一般的好处.
当大多数实时数据通过套接字时,为什么要使用WCF进行服务管理.
在2009年下半年和2010年上半年,我进入了WCF,实时视频流,银光和闪存,比较了客户端/服务器创建过程,与一群谨慎有趣的开发人员阅读不同的格式.总的来说,在项目结束时,我们有许多迷你服务器流式传输实时数据,许多不同的客户端接收它.比较我们所做的一切,我们得出的结论几乎就是我在这里提出的.
这就是为什么我不想在最近的项目中使用WCF - 我不想考虑如何提供媒体数据,我想专注于它的过滤\编辑.
问题出现的原因
我们开始在C中使用FFmpeg\OpenCV,使用它们操作数据非常简单...在C ...在Linux上...
但是当我们开始使用.Net绑定(我们现在正在使用Tao.FFmpeg)时,我们发现在大多数情况下我们最终使用C#Marshal进行了很多操作,并且有两个变量用于其C模拟(指针问题)等等.我希望我们不会看到Emgu CV这样的问题,但钢铁让我有点担心......
我通过代码将文本框数据绑定到可以为空的int.如果我从文本框中删除数据,它会给我一个验证错误(它周围的红色边框).
这是我的绑定代码:
ZipBinding = new Binding("Zip");
ZipBinding.Source = Address;
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding);
public Int32? Zip { get { ... } set { ... } }
Run Code Online (Sandbox Code Playgroud)
它清楚地标记为Nullable,那么为什么当我清除文本框时WPF想给我一个验证问题?
在下面的函数中,我正在尝试创建一个动态元素(textArea).我正在尝试使用textArea.onclick = resize将函数(resize)绑定到文本区域; 哪个工作正常.
我想要做的是将参数传递给resize函数(生成的id或者,如果可能的话,还是textArea本身)
function addElement(elm, event) {
var textArea = document.createElement('textarea');
var id = Math.random();
textArea.setAttribute('id', id)
textArea.setAttribute('cols', 1);
textArea.setAttribute('rows', 3);
textArea.onclick = resize;
elm.appendChild(textArea);
}
Run Code Online (Sandbox Code Playgroud)
如果我说textArea.onclick = resize(id); 那就是调用函数.
我如何绑定函数,并将参数传递给它?
我想将数据框分成几个较小的数据框.这看起来像一个非常微不足道的问题,但我找不到网络搜索的解决方案.
最近我一直在研究将MP4流式传输到浏览器的不同方法.Flash Media Server在这里是显而易见的选择(使用Cloudfront),我见过的大多数解决方案都使用RTMP协议.
但是,我花了一些时间在YouTube上使用Firebug和Chrome调试器来确定他们的流媒体如何工作,我发现他们的一些视频和质量率之间存在一些有趣的差异.
我的两个样品视频是A和乙.A最高可达480p,B最高可达1080p.对于这两个视频,所有高达480p的速率都通过HTTP在具有H.264视频和AAC音频的FLV容器中提供.这里有趣的是,如果您还没有下载(缓存)整个视频,并且您尝试跳到视频的未缓存部分,则会发出一个新的请求,其中'begin'参数等于目标偏移量毫秒.来自480p的视频A的示例:
http://v11.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWTldQVF9FSkNNNl9PSlhJ&fexp=904806%2C902906%2C903711&algorithm=throttle-factor&itag=35&ipbits=0&burst=40&sver=3&expire=1279756800&key=yt1&signature=D2D704D63C242CF187CAA5B5D5BAFB8DFACAC5FF.39180C01559C976717B651A7EB1D0C6249231EB7&factor=1.25&id=8568eb3135971f6f&begin=111863
Response Headers:
Cache-Control:public,max-age=23472
Connection:close
Content-Length:14320637
Content-Type:video/x-flv
Date:Wed, 21 Jul 2010 17:23:48 GMT
Expires:Wed, 21 Jul 2010 23:55:00 GMT
Last-Modified:Wed, 19 May 2010 12:31:41 GMT
Server:gvs 1.0
X-Content-Type-Options:nosniff
Run Code Online (Sandbox Code Playgroud)
此URL返回的文件是完全有效的FLV,仅包含请求的偏移量之后的视频部分.
我在视频B的更高分辨率版本上进行了同样的测试.在720p和1080p,YouTube将在MP4容器中返回视频,还有H.264视频和AAC音频.令我印象深刻的是,他们的服务器为MP4视频采用相同类型的偏移(通过'begin'参数)并返回一个有效的,可流动的MP4(文件前面的moov原子具有正确的偏移),其中仅包括视频的请求部分.
那么,YouTube如何做到这一点?他们如何使用正确的标题动态生成FLV或MP4容器,并且只生成所请求视频的所需片段?我知道这可以通过使用FFMPEG来寻找所需的起点和qt-faststart脚本来重新定位moov原子到流的前面来实现,但似乎这样太慢了,无法按需处理数百万个YouTube观看者.
想法?
提前致谢!
脚注:此时我不允许包含多个链接,因此这里是视频A的URL:http:// www.youtube .com/watch?v = hWjrMTWXH28"视频可用,最高480p"