查看: 1647|回复: 1

[随意闲聊] 这么神通广大的代码我第一次见到

[复制链接]
梦石
0
星屑
1944
在线时间
404 小时
注册时间
2015-8-30
回帖
322
发表于 2017-4-23 17:58:09 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 有丘直方 于 2017-4-23 18:07 编辑

[pre lang="ruby"]define_method(:url_data) { |url| return (open((buf = "\0" * 1024).sub(/\0+$/, ""), 'rb') { |f| f.read }).to_s if Win32API.new('Urlmon', 'URLDownloadToCacheFile', 'ippiii', 'i').call(0, "#{url}?#{rand(10)}", buf, 1024, 0, 0) == 0 } if require('win32api')
puts(url_data("http://www.baidu.com/"))[/pre]
一共就两行的代码(而且可读性很低),输出了一长串东西……
Ruby中的运行结果
C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/win32api.rb:33: [BUG] Segmentation fault
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

-- Control frame information -----------------------------------------------
c:0005 p:---- s:0024 e:000023 CFUNC  :call
c:0004 p:0035 s:0015 e:000014 METHOD C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/win32api.
rb:33
c:0003 p:0046 s:0009 e:000008 LAMBDA Test.rb:1 [FINISH]
c:0002 p:0027 s:0005 E:0010e0 EVAL   Test.rb:2 [FINISH]
c:0001 p:0000 s:0002 E:002488 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
Test.rb:2:in `<main>'
Test.rb:1:in `block in <main>'
C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/win32api.rb:33:in `call'
C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/win32api.rb:33:in `call'

-- C level backtrace information -------------------------------------------
C:\Windows\SYSTEM32\ntdll.dll(KiFastSystemCallRet+0x0) [0x77AE6C74]
C:\Windows\system32\kernel32.dll(WaitForSingleObjectEx+0x43) [0x76AFC4D3]
C:\Windows\system32\kernel32.dll(WaitForSingleObject+0x12) [0x76AFC482]
C:\Rails\Ruby2.3.0\bin\msvcrt-ruby230.dll(rb_vm_bugreport+0xaa) [0x6305F9EA]
C:\Rails\Ruby2.3.0\bin\msvcrt-ruby230.dll(rb_bug_context+0x49) [0x62F06209]
C:\Rails\Ruby2.3.0\bin\msvcrt-ruby230.dll(rb_check_safe_obj+0x394) [0x62FD0794]
[0x00401866]
C:\Windows\SYSTEM32\ntdll.dll(EtwReplyNotification+0x366) [0x77B1793A]

-- Other runtime information -----------------------------------------------

* Loaded script: Test.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/enc/encdb.so
    5 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/enc/trans/transdb.so
    6 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/enc/gbk.so
    7 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/unicode_normalize.rb
    8 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/rbconfig.rb
    9 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/compatibility.rb
   10 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/defaults.rb
   11 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/deprecate.rb
   12 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/errors.rb
   13 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/version.rb
   14 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/requirement.rb
   15 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/platform.rb
   16 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/basic_specification.rb
   17 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/stub_specification.rb
   18 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/util/list.rb
   19 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/stringio.so
   20 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/specification.rb
   21 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/exceptions.rb
   22 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/defaults/operating_system.rb
   23 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/dependency.rb
   24 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb
   25 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/monitor.rb
   26 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb
   27 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems.rb
   28 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/rubygems/path_support.rb
   29 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/version.rb
   30 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/core_ext/name_error.rb
   31 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/levenshtein.rb
   32 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/jaro_winkler.rb
   33 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkable.rb
   34 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/delegate.rb
   35 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   36 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   37 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkers/name_error_checkers.rb
   38 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkers/method_name_checker.rb
   39 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/spell_checkers/null_checker.rb
   40 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean/formatter.rb
   41 C:/Rails/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib/did_you
_mean.rb
   42 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/i386-mingw32/fiddle.so
   43 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/function.rb
   44 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/closure.rb
   45 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle.rb
   46 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/value.rb
   47 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/pack.rb
   48 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/struct.rb
   49 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/cparser.rb
   50 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/fiddle/import.rb
   51 C:/Rails/Ruby2.3.0/lib/ruby/2.3.0/win32api.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

JRuby中的运行结果
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7628c885, pid=12824, tid=0x00
003790
#
# JRE version: Java(TM) SE Runtime Environment (8.0_121-b13) (build 1.8.0_121-b1
3)
# Java VM: Java HotSpot(TM) Client VM (25.121-b13 mixed mode windows-x86 )
# Problematic frame:
# C  [Urlmon.dll+0xbc885]
#
# Failed to write core dump. Minidumps are not enabled by default on client vers
ions of Windows
#
# An error report file with more information is saved as:
# D:\01.User\zyq\Ruby\hs_err_pid12824.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

我是不是发现了这个程序语言的BUG……
[pre lang="ruby"]RUBY_VERSION # => "2.3.3"[/pre]

点评

写崩了而已……  发表于 2017-4-25 09:04
小仙女一枚~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部