我经常发现自己在Ruby中构建查找表,通常是为了缓存一些昂贵的计算或构建我传递给视图的东西.我认为必须有一个简短的,可读的成语,但我们想不到一个.例如,假设我想开始
[65, 66, 67, ...]
Run Code Online (Sandbox Code Playgroud)
并最终得到
{65 => "A", 66 => "B", 67 => "C", ...}
Run Code Online (Sandbox Code Playgroud)
我们能想到的不太合适的习语包括:
array = (65..90).to_a
array.inject({}) {|hash, key| hash[key]=key.chr; hash}
{}.tap {|hash| array.each {|key| hash[key] = key.chr}}
Hash[array.zip(array.map{|key| key.chr})]
Run Code Online (Sandbox Code Playgroud)
但所有这些都有点痛苦:难以阅读,容易搞砸,意图不明确.当然Ruby(或者一些Rails助手)对此有一些很好的魔力?
有没有一种方法可以让我告诉我资源是否已经存在于浏览器缓存中?
我们正在检测客户端页面视图的一小部分,以便我们可以获得有关为用户加载页面的速度的更好数据.用户第一次到达我们的网站时,浏览器会缓存许多资源(JS,CSS,图像),因此他们的初始网页浏览速度会慢于后续浏览器.
现在,这些数据混合在一起,因此很难说后续网页浏览的初始页面加载由于某些其他原因而变慢.我喜欢一种跨浏览器的方式来检查缓存是否已经准备就绪,以便我可以分离两种类型的页面浏览并分别对它们进行分析.
现代Unix shell环境有很多好东西,我需要的东西几乎总是安装在我的机器上或者快速下载; 麻烦就是找到它.在这种情况下,我试图找到基本的统计操作.
例如,现在我正在为基于爬虫的应用程序进行原型设计.感谢wget加上其他一些好东西,我现在有几十万个文件.所以我可以用数十亿个文件估算这样做的成本,我想得到文件大小超过一定限度的平均值和中位数.例如:
% ls -l | perl -ne '@a=split(/\s+/); next if $a[4] <100; print $a[4], "\n"' > sizes
% median sizes
% mean sizes
Run Code Online (Sandbox Code Playgroud)
当然,我可以用perl或awk编写自己的中位数和平均值.但是,不是已经有一些noob友好的包,除此之外还有更多吗?
经过多年的Java开发,我刚刚进入iPhone开发阶段.我正在寻找与Java的BlockingQueue相当的Objective-C .有类似的东西吗?
如果我以错误的方式处理事情,这就是我想要实现的目标:
我想一次一个地显示从网络服务器中提取的数据块.为了防止用户注意网络延迟,我希望总是预先获取一些数据块.在Java-land中,我在我的提取线程和显示线程之间使用了一个线程安全的队列.
#include <Windows.h>
#include <stdio.h>
int count = 0;
FILE* pFile = 0;
long Size = 0;
void *memfrob(void * s, size_t n)
{
char *p = (char *) s;
while (n-- > 0)
*p++ ^= 42;
return s;
}
int main()
{
fopen_s(&pFile, "***", "r+");
fseek(pFile, 0, SEEK_END);
Size = ftell(pFile);
char *buffer = (char*)malloc(Size);
memset(buffer, 0, Size);
fread(buffer, Size, 1, pFile);
fclose(pFile);
memfrob(buffer, Size);
fopen_s(&pFile, "***", "w+");
fwrite(buffer, Size, 1, pFile);
fclose(pFile);
}
Run Code Online (Sandbox Code Playgroud)
嗨,fread没有读取从文件到缓冲区的任何内容,我无法弄清楚原因.有人能给我一个暗示或推动正确的方向吗?
browser ×1
c ×1
caching ×1
fread ×1
iphone ×1
javascript ×1
objective-c ×1
r ×1
ruby ×1
shell ×1
statistics ×1
unix ×1
windows ×1