GVKun编程网logo

除了动态类型,是什么让Ruby“比Java更灵活”?

11

这篇文章主要围绕除了动态类型,是什么让Ruby“比Java更灵活”?展开,旨在为您提供一份详细的参考资料。我们将全面介绍除了动态类型,是什么让Ruby“比Java更灵活”?,同时也会为您带来javas

这篇文章主要围绕除了动态类型,是什么让Ruby“比Java更灵活”?展开,旨在为您提供一份详细的参考资料。我们将全面介绍除了动态类型,是什么让Ruby“比Java更灵活”?,同时也会为您带来javascript – 是什么让不安全的脚本“不安全”?、javascript – 究竟是什么让ReactJS像它声称的一样快?、JRuby 1.6.5 发布,Java 版的 Ruby 解释器、JRuby 1.7.14 发布, Java 版的 Ruby 解释器的实用方法。

本文目录一览:

除了动态类型,是什么让Ruby“比Java更灵活”?

除了动态类型,是什么让Ruby“比Java更灵活”?

我几乎一直在使用Java,因为它刚出现,但在过去的五年中已经被烧毁了,即使做最简单的事情也变得多么复杂.我开始在我的精神科医生的推荐下学习Ruby,呃,我的意思是我的同事(年轻,冷静的同事 – 他们使用Macs!).无论如何,他们不断重复的一件事是,Ruby是一种“灵活”的语言,而不是像Java那样的老式,更加拙劣的语言,但我真的不知道这意味着什么.有人能解释是什么让一种语言比另一种语言“更灵活”?请.我对动态类型有所了解,可以看出这对简洁有什么好处. Ruby语法很漂亮.还有什么?动态打字是主要原因吗?

解决方法:

动态类型并没有接近它.举一个很好的例子,Ruby在许多情况下使元编程变得容易.在Java中,元编程要么是痛苦的要么是不可能的.

例如,采用Ruby通常的方式声明属性:

class SoftDrink
  attr_accessor :name, :sugar_content
end
# Now we can do...
can = SoftDrink.new
can.name = 'Coke' # Not a direct ivar access — calls can.name=('Coke')
can.sugar_content = 9001 # Ditto

这不是一些特殊的语言语法 – 它是Module类的一个方法,并且易于实现.这是attr_accessor的示例实现:

class Module
  def attr_accessor(*symbols)
    symbols.each do |symbol|
      define_method(symbol) {instance_variable_get "@#{symbol}"}
      define_method("#{symbol}=") {|val| instance_varible_set("@#{symbol}", val)}
    end
  end
end

这种功能可以让您在表达程序方面获得很多灵活性.

很多看起来像语言特性(以及大多数语言中的语言特性)都只是Ruby中的常用方法.再举一个例子,这里我们动态加载其名称存储在数组中的依赖项:

dependencies = %w(yaml haml hpricot sinatra couchfoo)
block_list %w(couchfoo) # Wait, we don't really want CouchDB!
dependencies.each {|mod| require mod unless block_list.include? mod}

javascript – 是什么让不安全的脚本“不安全”?

javascript – 是什么让不安全的脚本“不安全”?

我是Chrome扩展程序的新手.我正在编写一个小插件,当用户按下按钮(非常新)时放大页面.但是,它不会运行,除非我允许不安全的脚本,并且它不会转移到新页面,表面上是因为不安全的脚本.我正在做的就是缩放.

我真正想知道的是,如果不是要求提供信息或直接访问他们的计算机,是什么让脚本不安全?

解决方法

使Google脚本扩展的脚本不安全有三件事:

内联JavaScript

这是一个常见的错误(我已经做到了).您不能放入内联JavaScript语句.例如,您无法以这种方式处理事件:

<img src="myImage.jpg" onclick="doSomething()">

执行此操作的正确方法是为DOM元素定义Id,在我的示例中定义图像,并在单独的JavaScript文件中设置事件处理程序:

page.html中:

<img src="myImage.jpg" id="myImage">
<script src="script.js"></script>

的script.js:

//In vanilla Javascript :
document.getElementById("myImage").onClick(doSomething);

//In JQuery
$("#myImage").on("click",doSomething);

评估和相关功能

所有可以在飞行中将String评估为JavaScript的函数都是不安全的.
所以不允许使用eval函数,例如new Function(“return something.value”);

远程脚本

只有本地脚本才是安全的.如果您使用的是jQuery,则必须在扩展中包含该库.通过CDN链接加载外部库被认为是不安全的.

这是一个快速概述,您可以阅读更多相关信息,并对Google Chrome扩展程序Content Security Policy进行此限制的解释

javascript – 究竟是什么让ReactJS像它声称的一样快?

javascript – 究竟是什么让ReactJS像它声称的一样快?

我正在学习ReactJS并试图理解它真正使它“更快”,并且比其他框架和库提供的解决方案更加特殊.

我知道以下内容:

>虚拟DOM以及React如何运行差异来采取最少的步骤以确定“更改”并相应地响应/重新呈现,而不是传统的“脏检查”操作在其他框架/库中.
>通过“可观察”模式进行更多的声明性编程,而不是命令性地实现.

所以,上面的陈述在概念上对我来说听起来都很好,但是,当我考虑现实生活用例和实践时,我没有想到好处:

>考虑使用jQuery:

$( “#箱”)removeClass( ‘红’)addClass( ‘蓝’).

它比React方式做同样的事情“慢”怎么样?我理解它的方式,jQuery将直接从DOM中获取1个匹配id值为“Box”的元素,并按照指示删除并添加类 – 所有特定于DOM中的元素. (它在这里实现“脏检查”以找到#Box吗?)

使用ReactJS,它将首先在其Virtual DOM中进行相同的更改(在执行diff以查找具有最少步骤数的#Box之后)并将元素重新呈现为实际DOM.因此,如果有的话,似乎是在增加一个与VDOM进行比较的额外步骤.

>可观察的模式一直存在.为什么它是第一次应用于事件处理操作?…做类似的事情:

“嘿,这里发生了一些变化(事件被触发)……所以让我们看看我们应该做些什么(运行与事件有关的所有事情)并且做到这一点”

任何见解,指针和例子将不胜感激!

解决方法

你可能是对的,在这种情况下jQuery可能会更快(我还没有测试过).但考虑一下,你为什么要使用jQuery – 如果你这样做,它会更快

document.getElementById("MyID").className = document.getElementById("MyID").className.replace(/\bred\b/,'');
document.getElementById("MyID").className = document.getElementById("MyID").className + ' blue';

实际上,我们并没有尝试在这里竞争原始速度,否则你只需要用纯粹的javascript编写,我知道这样做的公司纯粹是为了在移动设备上更快.

框架的好处是维护和开发速度.纯javascript编程比jQuery更难扩展和维护,类似的jQuery编程比React更难扩展和维护.虽然反过来也是如此,但使用jQuery获得具有最小功能的应用程序要快得多(但是在构建mvp之后,维护变得更加困难)

在小代码库中,jQuery可能比React更快,但是当你使用更大的代码库时,你会在jQuery中找到大量的重复和冗余代码,它本身就变得更慢了.然而,反应是不同的 – 首先是React,将所有内容分离到组件中以便更容易重用,第二个React有一个很酷的内部引擎,可以防止无用的渲染减慢你的应用程序.

所以是的,你是对的,jQuery可以比React更快,但这确实错过了React的观点.正如纯javascript可能比jQuery更快,但是缺少jQuery的观点.

JRuby 1.6.5 发布,Java 版的 Ruby 解释器

JRuby 1.6.5 发布,Java 版的 Ruby 解释器

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

JRuby 1.6.5 发布了,该版本主要是修复与 Ruby 1.9 不兼容的问题,并建议所有低版本用户升级。

详细信息参阅:http://jruby.org/2011/10/25/jruby-1-6-5.html

JRuby 1.7.14 发布, Java 版的 Ruby 解释器

JRuby 1.7.14 发布, Java 版的 Ruby 解释器

JRuby 1.7.14 发布,此版本现已提供下载:

  •  http://www.jruby.org/download

JRuby 1.7 主要是为了兼容 Ruby 1.9.3 版本,改进记录如下:

  • 解决了 30 个 issues

  • 修复了 Jar 文件源潜在的内存泄漏问题

  • 因为在 Rails 应用启动比较慢,所以默认禁用 invokedynamic

  • load/require 内部重构和简化

  • 解决了一些兼容性问题

1.7.14 修复的 bug:

  • #1923 - String#start_with? returns false when using an empty string

  • #1905 - Tempfile and deleteOnExit

  • #1899 - Can''t call static method on Java 8 interface

  • #1898 - Fix the memory leak and actually close the resources.

  • #1889 - NPE from org.jruby.java.proxies.ArrayJavaProxy.to_a

  • #1888 - native memory leak when reading files from inside a .jar

  • #1859 - JMX tries to double-bind a port when using bundle exec

  • #1858 - JRuby with Java 8 4 to 10 times slower than Java 7

  • #1852 - JRubyClassloader seems to have a problem with file urls pointing to jar ...

  • #1850 - embedded jars do not get loaded

  • #1846 - Fix $LOAD_FEATURES paths for 1.8

  • #1818 - fix ArrayJavaProxy#to_a failure on arrays containing null

  • #1813 - can not load resources from jar anymore with jar uri

  • #1809 - apply minor enebo''s comments

  • #1808 - Fix BigDecimal#round behavior with NAN and INFINITY

  • #1805 - Zlib crc improvements

  • #1803 - Fix minor bug in `setNativeEnabled`, and expose it in ScriptingContainer

  • #1802 - Fix Encoding::Converter#inspect output

  • #1799 - mvn -Pall fails at the documentation step

  • #1790 - Make Time#to_r consistent with MRI

  • #1777 - ServerSocket#accept_nonblock returns the server''s port, not the client''s

  • #1772 - avoid sub-classing ThreadLocal since it will leak in envs such as .wars

  • #1765 - added a java_field method for use in the jrubyc command.

  • #1762 - enhanced the java_class compiler so it can handle multiple constructors

  • #1750 - Refactor LoadService to make use of resources

  • #1729 - no valid struct layout for Ethon::Curl::Slist

  • #1676 - Empty hash optimization

  • #1580 - IO.select raises CancelledKeyException on shutdown

  • #1520 - Date comparison as java objects

  • #1435 - bouncy-castle-java JARs missing when warbling with JRuby 1.7.10

JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与 Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端企业级功能方面。另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器应用的领先平台。不过如果Java平台不与Ruby等新兴语言联系在一 起,就有可能落后于流行趋势。

示例代码:

require "java"
 
include_class "java.util.TreeSet"
include_class "com.example.CallMe"
include_class "com.example.ISpeaker"
 
puts "Hello from ruby"
set = TreeSet.new
set.add "foo"
 
set.add "Bar"
set.add "baz"
set.each { |v| puts "value: #{v}" }
 
cm = CallMe.new
cm.hello
$globalCM.hello
 
class CallJava
include ISpeaker
def initialize
  super
  @count = 0
end
 
def say(msg)
  puts "Ruby saying #{msg}"
end
 
def addOne(from)
#    m.synchronize {
    @count += 1
    puts "Now got #@count from #{from}"
 
#    }
end
end


关于除了动态类型,是什么让Ruby“比Java更灵活”?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于javascript – 是什么让不安全的脚本“不安全”?、javascript – 究竟是什么让ReactJS像它声称的一样快?、JRuby 1.6.5 发布,Java 版的 Ruby 解释器、JRuby 1.7.14 发布, Java 版的 Ruby 解释器的相关知识,请在本站寻找。

本文标签: