小编Tom*_*man的帖子


来自rake任务的render_to_string

我想使用Rake任务来缓存我的站点地图,以便请求sitemap.xml不会永远.这是我到目前为止所拥有的:

  @posts = Post.all

  sitemap = render_to_string :template => 'sitemap/sitemap', :locals => {:posts => @posts}, :layout => false
  Rails.cache.write('sitemap', sitemap)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我收到一个错误:

undefined local variable or method `headers' for #<Object:0x100177298>
Run Code Online (Sandbox Code Playgroud)

如何从Rake中将模板渲染为字符串?

rake ruby-on-rails

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

编程语言设计的良好资源?

Javascript:好零件是一本好书.我经常发现自己从语言设计师的角度阅读以下段落:

undefinedNaN不是常数.它们是全局变量,您可以更改它们的值.这应该是不可能的,但事实确实如此.不要这样做.

小贴士:

  1. 不要更改undefined我的Javascript代码中的值.
  2. 在设计语言时,使其等效于undefined不可变.

另一个更微妙的例子是" for in不应该枚举原型属性".

我想要一本关于特定语言背景下的语言设计问题的书.

如果您正在尝试设计"完美"的OO语言,您会阅读哪些书籍作为指导?

language-agnostic

9
推荐指数
2
解决办法
2009
查看次数

动态脚本标记的安全问题

这篇flickr博客文章讨论了他们对人物选择器自动完成的最新改进背后的想法.

他们必须克服的一个问题是如何解析和处理客户端这么多数据(即所有联系人).他们尝试通过AJAX获取XML和JSON,但发现它太慢了.然后他们说这是通过动态生成的脚本标记(带回调函数)加载数据:

JSON和动态脚本标记:快速但不安全

使用大字符串操作是最后一种方法的问题的理论,我们从使用Ajax转而使用动态生成的脚本标记来获取数据.这意味着联系人数据从未被视为字符串,而是在下载后立即执行,就像任何其他JavaScript文件一样.性能差异令人震惊:解决10,000个联系人的时间为89毫秒(减少了3个数量级),而172个联系人的最小情况只需要6毫秒.每个联系人的解析时间实际上减少了,列表变得越大.这种方法看起来很完美,除了一件事:为了执行这个JSON,我们必须将它包装在一个回调方法中.由于它是可执行代码,世界上任何网站都可以使用相同的方法下载Flickr成员的联系人列表.这是一个交易破坏者.(强调我的)

有人可以在这里考虑确切的安全风险(可能有样本利用)?如何通过脚本标记中的"src"属性加载给定文件,而不是通过AJAX调用加载该文件?

javascript security json

9
推荐指数
2
解决办法
2159
查看次数

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

用于输入地址的自动填充文本框是个好主意吗?

通过传统形式输入我的地址让我发疯:

  • 当我的邮政编码可以推断出我的城市和州时,为什么我必须输入我的城市,州邮政编码?
  • 从下拉列表中选择你的状态是一个痛苦的屁股 - 通常你不能插入它,你必须使用鼠标等.

替代文字http://img10.imageshack.us/img10/7404/traditionaladdressform.png

因为我发现这个过程如此令人厌恶,当我设计我的在线商店(bombsheets.com)时,我决定为地址构建一个自动完成的小部件.在您输入时,我们会尝试对您的地址进行地理编码(通过Google地图):

alt text http://img403.imageshack.us/img403/9333/addressautocomplete.png

在最好的情况下,这非常有效.如果您的地址是"120 W 45th St,New York,NY 10036,USA",您可以输入短至"120 w 45th st,nyc"的内容输入.

但是,据我所知,我们是唯一使用此界面的在线商店.我很好奇它是否缺乏使用意味着这个想法在某种程度上是有缺陷的.一些潜在的问题:

  1. 太外国/不熟悉.客户习惯于旧形式,并且在它们上面切换是令人困惑的.
  2. 你必须在不同的领域输入你的公寓/楼层号/任何东西.这令人困惑.
  3. 当我们的商店爆炸时(好问题),我们将向谷歌提出太多的Geocode请求,以便进行扩展.
  4. 编辑:这对于禁用了javascript的(约5%)用户不起作用.
  5. 这里没有重大问题,这个界面就是未来.(这不是那么古怪,因为,例如,许多在线商店强迫您输入您的信用卡号和您的信用卡类型,当后者可以从前者推断时).

无论如何,基本上我很好奇这是否是我应该尝试创新的领域,或者我是否应该使用传统方法.(关于改进这种新方法的可用性的想法当然也受到赞赏).

javascript autocomplete ruby-on-rails e-commerce street-address

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

config.gem(在environment.rb中)做什么?

我被告知这样做:

config.gem 'tzinfo'
Run Code Online (Sandbox Code Playgroud)

不排除需要require 'tzinfo'.所有宝石都是如此吗?如果是的话,添加到底是config.gem WHATEVER做什么的?

ruby-on-rails

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

Firebug-esque CSS编辑器

这是我目前编辑CSS的工作流程:

  1. 我:"嘿伙计们,看看这个页面!"
  2. 伙计们:"试着让帖子更大"
  3. 右键单击帖子标题,选择"检查"(在firebug中检查)
  4. 在Firebug(h2.post_title或其他东西)中找到合适的CSS语句
  5. 修改Firebug中的CSS,询问朋友的外观
  6. 如果看起来不错,请在Textmate中再次进行更改

我想避免第6步.也就是说,我希望能够通过类似Firebug的UI编辑CSS,并能够立即将更改提交到相关文件(而不是像Firebug那样手工复制它们)

编辑:在Mac上运行的东西是理想的

css firebug editor

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

实现Stackoverflow风格声誉的最佳方式

我正在我的说唱歌词解释网站Rap Genius上实现类似Stackoverflow的声誉系统:

  • 好的解释:+10
  • 不好的解释:-1
  • 对一首歌有最多的解释:+30

我的问题是如何实现这一点.具体来说,我正在尝试决定是否应该创建一个表reputation_events来帮助重新计算声誉,或者我是否应该在需要时从头开始重新计算.

该表reputation_events将包含以下列:

  • 名称(例如,"good_explanation","bad_explanation")
  • awarded_to_id
  • awarded_by_id
  • awarded_at

每当发生影响声誉的事情时,我都会插入相应的行reputation_events.这使得重新计算声誉和生成人类可读的事件序列变得容易,这些事件产生了给定人的声誉.

另一方面,任何给定的操作都可能影响多个用户的声誉.例如,假设用户A在给定歌曲上超过用户B; 基于"对歌曲有最多解释"的目标,我必须记住删除B的原始"has_the_most_explanations"事件(或者我可能会为B添加一个新事件?)

database-design ruby-on-rails

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

获取表示用户CanCan能力的字符串

我想缓存一个Post视图,但视图取决于当前用户的权限(例如,我只显示"编辑"链接current_user.can?(:edit, @post))

所以我希望我的缓存键包含当前用户的CanCan功能的表示,这样当用户的能力改变时我可以使缓存无效

那么:我怎样才能得到一个表示当前用户能力的字符串,以便2个具有相同能力的不同用户生成相同的"能力字符串"?

我已经尝试过user.ability.inspect,但是对于具有相同能力的不同用户,这不会产生相同的字符串

caching authorization cache-invalidation cancan

9
推荐指数
2
解决办法
2299
查看次数