看起来Java数据结构从JRuby访问它们时会有一些神奇的转换; 它们似乎像纯红宝石地图和数组一样工作.但是,Scala数据结构没有.当我在Google上搜索JRuby/Scala互操作时,我发现很少见.例如,你将如何迭代Scala Map和List类型?
我很好奇如何以某些需要的方式为jQuery插件指定选项,有些是可选的重写,有些是无法触及的.
我开始平常:
jQuery.fn.plugin = function (options){
var defaults = { username: "", posts:10, api: "http://myapi.com" }
var settings = jQuery.extend({}, defaults, options);
}
Run Code Online (Sandbox Code Playgroud)
假设我想要username是必需的,posts是可选的(默认为10),你(你是插件的用户)不能改变api,即使他们尝试.理想情况下,它们仍然处于相同的数据结构中,而不是分成单独的对象.想法?
有没有人想出一个共享模板的好解决方案?我不想在客户端和服务器之间复制HTML.Mustache会很好,除了缺乏i18n支持(Twitter的贡献只是js).如果它的语法与ERB直接兼容,EJS将是完美的,但并不完全相同.
理想情况下,模板可以存在app/views/controller/action.html.erb(或任何模板文件),templates.js.erb清单可以捆绑这些模板.为服务器端渲染和客户端渲染提供兼容的语法是避免重复的关键.
templates ruby-on-rails internationalization ruby-on-rails-3.1
我有一个非常简单的rails 3.2.6应用程序.我已经使用Heroku多年来主持原型,总是在免费层.我终于在我的最新应用程序中添加了付费dyno,并添加了New Relic以监控性能.
我在流量接近于零的非常简单的页面上看到了4500 + ms的请求时间(我们尚未启动).New Relic表示99%的时间用于渲染模板.这是一个在100行布局中的75行完全静态 haml模板.应用程序模板具有标准- if current_user.nil?分支.
我还没有添加页面缓存.我当然会这样做,但是在我掩盖它之前,我想确定这种非常差的性能的根本原因.有小费吗?我应该从Heroku那里得到什么样的响应时间?在我在开发环境中的本地方框中,相同的页面响应时间是26ms(资产在1.5s之前进入).New Relic报告我在Heroku上的动态页面的平均响应时间为2000ms到6000ms.
编辑:我打开了静态/页面缓存,现在看到的平均值为173毫秒.但是我仍然担心我在动态页面上的糟糕平均值.
我刚刚将我的MacVim更新为7.3,现在它将目录更改为我正在编辑的任何文件.我使用PeepOpen,因此每次想要编辑新文件时都回到我的项目目录是非常烦人的.
我正在编写一个clojure函数来将各种数据类型格式化为字符串.
我天真的解决方案:
(defn p [d]
(cond
(vector? d) (str "vector: " d)
(list? d) (str "list: " d)))
#'user/p
user> (p [1 2 3])
"vector: [1 2 3]"
user> (p '(1 2 3))
"list: (1 2 3)"
Run Code Online (Sandbox Code Playgroud)
我之前没有使用过多种方法.我这很好用,还是有另一种方法来避免使用cond的臭味?
我是Ruby的新手,主要来自C#和ActionScript 3(以及其他语言).我很好奇抽象功能.具体来说,包装和抽象Ruby的FTP和SFTP库.
我在四处寻找并发现了一个名为Backup的宝石.它确实引起了我的注意,因为它支持通过S3,SCP,SFTP和FTP备份内容.所以我想,"哇,这是一个完美的例子!" 我开始浏览源代码,但后来遇到的代码如下:
case backup.procedure.storage_name.to_sym
when :s3 then records = Backup::Record::S3.all :conditions => {:trigger => trigger}
when :scp then records = Backup::Record::SCP.all :conditions => {:trigger => trigger}
when :ftp then records = Backup::Record::FTP.all :conditions => {:trigger => trigger}
when :sftp then records = Backup::Record::SFTP.all :conditions => {:trigger => trigger}
end
Run Code Online (Sandbox Code Playgroud)
它充斥着case/when语句!如果我在C#中攻击它,我会写一个Protocol接口(或抽象类),让FTP和SFTP实现它.然后我的客户端类只会传递一个Protocol实例而不关心实现.零开关/箱.
在Ruby中编码时,我会对这种情况下的最佳实践提供一些指导.
我有一个src/templates/充满胡子模板的目录.我如何组合和缩小这些内容,以便它们可以在我的CoffeeScript应用程序中使用?
我已经在之后的方向https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的组合和涅槃我CoffeeScript的SRC到JS.
我对Haskell很陌生并且对如何改进我对问题的解决方案感兴趣"给定一定数量的金钱(以分为单位),确定在给定面额列表的情况下进行变更的所有方法".
change :: Int -> [Int] -> [[Int]]
change amt [] = [[]]
change amt [d] = [replicate (quot amt d) d]
change amt (d:denoms) =
if d <= amt then
reverse [0..(quot amt d)] >>= \x ->
[(replicate x d) ++ c | c <- (change (amt - (x*d)) denoms)]
else
change amt denoms
changeUS amt = change amt [25, 10, 5, 1]
-- *Main> changeUS 29
-- [[25,1,1,1,1],[10,10,5,1,1,1,1],[10,10,1,1,1,1,1,1,1,1,1],[10,5,5,5,1,1,1,1],[10,5,5,1,1,1,1,1,1,1,1,1],[10,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[5,5,5,5,5,1,1,1,1],[5,5,5,5,1,1,1,1,1,1,1,1,1],[5,5,5,1,1,1,1,1,1,1,1,1,11,1,1,1],[5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
Run Code Online (Sandbox Code Playgroud)
该解决方案的一个问题是它假设最低的denom将为1.否则,该change amt [d]情况将是不正确的.我可以添加一个if/then以确保在这种情况下amt可以被整除d …
vim ×2
abstraction ×1
clojure ×1
coffeescript ×1
ftp ×1
haskell ×1
heroku ×1
interop ×1
javascript ×1
jquery ×1
jruby ×1
macvim ×1
minify ×1
newrelic ×1
oop ×1
performance ×1
ruby ×1
scala ×1
sftp ×1
templates ×1