小编Bre*_*ham的帖子

核心动画CALayer面具动画表现

我们想在我们的iPhone应用程序中使用UITabBar,但有一个例外:我们有一个"同步"按钮,我想在同步操作发生时旋转.

替代文字

不幸的是,这意味着必须创建一个自定义标签栏,但这既不在这里也不在那里:我使用Core Animation实现的动画看起来很棒.问题是,在制作动画时,它会对屏幕上使用动画的其他所有内容产生不利影响:UITableView滚动,MKMapView平移和引脚丢弃等.我的测试设备是iPhone 4.

问题似乎是我如何实现标签栏 - 我想要实现与UITabBar非常相似的东西,你只需要为图标提供PNG,它使用alpha通道通过屏蔽背景来创建正常和突出显示的状态图片.我用CALayer的mask财产完成了这个:

// Inside a UIView subclass' init method...

// Create the mask layer by settings its contents as our PNG icon.
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = CGRectMake(0, 0, 31, 31);
maskLayer.contentsGravity = kCAGravityCenter;
maskLayer.contentsScale = [[UIScreen mainScreen] scale];
maskLayer.rasterizationScale = [[UIScreen mainScreen] scale];
maskLayer.contents = (id)symbolImage.CGImage;
maskLayer.shouldRasterize = YES;
maskLayer.opaque = YES;

fgLayer = [[CALayer layer] retain];
fgLayer.frame = self.layer.frame;
fgLayer.backgroundColor = [UIColor colorWithImageNamed:@"tabbar-normal-bg.png"].CGColor;
fgLayer.mask = maskLayer; // Apply the …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation objective-c calayer ios

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

生成像SpatialKey这样的密度/热图

SpatialKey会生成一些非常好看的热图,我们正在研究为内部项目执行此操作所涉及的内容,以便可视化大量的点.我正在寻找关于从何处入手的一些想法的反馈(这只是一个非常有趣的问题).

SpatialKey热图http://img697.imageshack.us/img697/7964/resolutiondays508x17550.jpg

我们知道他们正在使用Flash,从我们可以看出,热图是交互式的,而不是从平铺服务器渲染.我们对如何实现这一点的第一个猜测是服务器为他们的Flash客户端提供一个网格 - 每个单元格都有一个由服务器计算的计数.然后,Flash客户端根据网格中的单元格值进行一些插值,以生成您在上面看到的漂亮输出.

在这个阶段,我只对如何有效地在服务器端生成网格感兴趣(如果我们对它们的实现的假设是正确的).它似乎涉及:

  1. 执行查询当前在地图边界中的内容
  2. 为这些边界内的每个单元格执行聚合子查询(执行上面示例中的计数,求和或平均值).

以理智的网格分辨率在多个缩放级别执行此操作,看起来您需要自定义空间索引才能提高效率.

任何接受解释替代路线的人?如果它很重要,我们习惯于将我们的数据存储在PostgreSQL中,并使用PostGIS进行空间索引,但我愿意尝试任何东西.

maps postgis spatial geospatial heatmap

7
推荐指数
1
解决办法
4198
查看次数

使用jQuery封装UI组件

我正在构建一个涉及创建几个独特的UI"小部件"的应用程序,我很难找到一个很好的做法,用jQuery封装这些UI组件背后的逻辑.这些主要是一次性组件,不会在应用程序的多个位置重复使用.

我一直在尝试使用lowpro插件,虽然它确实允许我想要的更多或更少,但我觉得我正在使用它来反对"jQuery方式".

为了提供一些上下文,这里是我使用lowpro编写的缩写的缩写.这是一个可排序的列表,其他元素可以成为药物.当它初始化为空时,它会显示一个占位符.

FieldList = $.klass({
  initialize: function() {
    this.placeholder = $('#get-started-placeholder');
    if (this.items().length == 0) {
      this.deactivateList();
    } else {
      this.activateList();
    }
  },

  items: function() {
    return this.element.children('li:visible');
  },

  deactivateList: function() {
    this.element.hide();
    this.element.sortable('destroy');
    this.placeholder.show();
    var instance = this;
    this.placeholder.droppable({
      hoverClass: 'hovered',
      drop: function(e, ui) { instance.receiveFirstField(ui.helper); }
    });
  },

  activateList: function() {
    this.placeholder.hide();
    this.placeholder.droppable('destroy');
    this.element.show();
    var instance = this;
    this.element.sortable({
      placeholder: 'placeholder',
      forcePlaceholderSize: false,
      tolerance: 'pointer',
      handle: 'h4',
      opacity: 0.9,
      zIndex: 90,
      stop: function(e, …
Run Code Online (Sandbox Code Playgroud)

jquery

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

Unescape带有转义换行符和回车符的字符串

我正在尝试编写一个混淆/审查/编辑文本的PLPGSQL函数.

-- Obfuscate a body of text by replacing lowercase letters and numbers with # symbols.
CREATE OR REPLACE FUNCTION obfuscate(str text) RETURNS text AS $$
BEGIN
  str := replace(str, '\r', E'\r');
  str := replace(str, '\n', E'\n');
  str := translate(str, 'abcdefghijklmnopqrstuvwxyz0123456789', rpad('#',36,'#'));
  str := replace(str, E'\r', '\r');
  str := replace(str, E'\n', '\n');
  RETURN str;
END
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

这有效,但请注意舞蹈将转义的换行符和回车转换为各自的字节,然后再返回.这是因为我的数据集包含已被转义的字符串(已被序列化为JSON/YAML的数据),我不想破坏这些值.

还有另一种更方便的方法来取消字符串吗?处理其他转义值也很棒,比如unicode转义序列.

sql database postgresql plpgsql special-characters

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

我可以用鸭子打字改进这个方法吗?

希望我没有误解"鸭子打字"的含义,但从我所读到的,它意味着我应该根据对象如何响应方法而不是它的类型/类来编写代码.

这是代码:

def convert_hash(hash)
  if hash.keys.all? { |k| k.is_a?(Integer) }
    return hash
  elsif hash.keys.all? { |k| k.is_a?(Property) }
    new_hash = {}
    hash.each_pair {|k,v| new_hash[k.id] = v}
    return new_hash
  else
    raise "Custom attribute keys should be ID's or Property objects"
  end
end
Run Code Online (Sandbox Code Playgroud)

我想要的是确保我最终得到一个散列,其中键是一个表示ActiveRecord对象的ID的整数.我并不特别喜欢两次迭代哈希键all?以确定是否需要获取ID.

当然,我也会接受任何其他改进此代码的建议:)

ruby refactoring duck-typing ruby-on-rails

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

Ruby中shell命令的颜色输出

这是一个简单的Ruby脚本:

puts `ls -laG`
Run Code Online (Sandbox Code Playgroud)

在OS X的ls中,-G用于颜色.

在bash下运行时,我得到颜色输出.当从Ruby脚本运行上述内容时,我在结果输出中看不到颜色或ANSI转义序列.

从我读过的,我的猜测是因为脚本没有像tty一样运行.有没有办法运行命令,好像它是在真正的tty会话下运行 - 或类似的东西?

ruby unix scripting

3
推荐指数
1
解决办法
1935
查看次数

如果我希望我的班级有代表,我是否必须指定协议?

我是Objective-C的新手,也是Apple平台上的开发人员,但希望我能以一种可以理解的方式构建这个问题,无论如何:)

我想解析我的iPhone应用程序的XML提要,我决定不将所有委托方法从NSXMLParser的实例推送到我的视图控制器中,我将其包装在FeedParser类中.在阅读了一些文档和示例代码之后,这就是我想出的:

@protocol FeedParserDelegate <NSObject>

- (void)parserDidLoadEpisodes:(NSArray *)episodes;

@end


@interface FeedParser : NSObject {
    id <FeedParserDelegate> delegate;
}

@property (nonatomic, assign) id <FeedParserDelegate> delegate;

- (id)initWithURL:(NSURL *)url delegate:(id<FeedParserDelegate>)theDelegate;

@end
Run Code Online (Sandbox Code Playgroud)

简单.我的FeedParser对象的代表只需要实现parserDidLoadEpisodes.

但是,当我开始实际FeedParser使用我的类时NSXMLParser,我意识到我没有必须指定FeedParser实现协议NSXMLParser- 我可以实现我想要做的事情的委托方法.我想我已经注意到了跟随委托模式的其他类,但不是全部.

那么为什么我也不愿意为我的FeedParser课程指定一个正式的协议呢?它会削减一些可能不必要的代码.我想问题是:为什么我创建一个正式的协议而不只是做一些事情,只需检查是否在委托上实现该方法 respondsToSelector?是否只有这样,如果没有实现所需的委托方法,编译器将发出很好的警告?

iphone objective-c

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

在事务中使用 ANALYZE 会做什么?

假设我要批量插入/更新/删除大量行(最少 100k,最多 20M),并且必须是原子的。

由于该事务所做的更改尚未提交,因此暂停大约 10-100k 操作以ANALYZE在同一事务中运行实际上是否会通知查询规划器任何信息?

从逻辑上讲,想象一个客户正在做这样的事情:

BEGIN;

(for i, record in records)
  INSERT ...
  DELETE ...
  UPDATE ...

  (if i % 10000 == 0)
    ANALYZE;
  (end)
(end loop)

COMMIT;
Run Code Online (Sandbox Code Playgroud)

对正在运行的事务的查询计划程序有ANALYZE什么好处,或者它只会收集已提交行的统计信息吗?

sql postgresql mvcc

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