小编dev*_*vth的帖子

访问JRuby中的Scala数据结构

看起来Java数据结构从JRuby访问它们时会有一些神奇的转换; 它们似乎像纯红宝石地图和数组一样工作.但是,Scala数据结构没有.当我在Google上搜索JRuby/Scala互操作时,我发现很少见.例如,你将如何迭代Scala MapList类型?

interop scala jruby

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

jQuery插件选项:必需,可选,不可访问

我很好奇如何以某些需要的方式为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,即使他们尝试.理想情况下,它们仍然处于相同的数据结构中,而不是分成单独的对象.想法?

javascript jquery jquery-plugins data-structures

5
推荐指数
2
解决办法
3310
查看次数

Rails 3.1共享客户端/服务器模板,支持i18n

有没有人想出一个共享模板的好解决方案?我不想在客户端和服务器之间复制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

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

在heroku上简单的rails应用程序性能

我有一个非常简单的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毫秒.但是我仍然担心我在动态页面上的糟糕平均值.

performance ruby-on-rails heroku newrelic

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

打开文件时阻止vim更改目录

我刚刚将我的MacVim更新为7.3,现在它将目录更改为我正在编辑的任何文件.我使用PeepOpen,因此每次想要编辑新文件时都回到我的项目目录是非常烦人的.

vim macvim

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

MacVim在发布时打开垂直分割

如何使mvim在启动时自动垂直分割窗口?

vim

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

格式化输出字符串取决于数据类型

我正在编写一个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的臭味?

clojure

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

Ruby抽象

我是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)

查看GitHub上的完整源代码

它充斥着case/when语句!如果我在C#中攻击它,我会写一个Protocol接口(或抽象类),让FTP和SFTP实现它.然后我的客户端类只会传递一个Protocol实例而不关心实现.零开关/箱.

在Ruby中编码时,我会对这种情况下的最佳实践提供一些指导.

ruby oop ftp sftp abstraction

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

使用CoffeeScript/Cake组合和缩小模板

我有一个src/templates/充满胡子模板的目录.我如何组合和缩小这些内容,以便它们可以在我的CoffeeScript应用程序中使用?

我已经在之后的方向https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的组合和涅槃我CoffeeScript的SRC到JS.

minify coffeescript

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

确定分裂变化的方式

我对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 …

haskell

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