小编Fra*_* Yu的帖子

如何让ruby打印完整的回溯而不是截断的?

当我得到异常时,它通常来自调用堆栈中的深层.当发生这种情况时,通常会对我隐藏实际有问题的代码行:

tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError)
        from tmp.rb:10:in `s'
        from tmp.rb:13:in `r'
        from tmp.rb:16:in `q'
        from tmp.rb:19:in `p'
        from tmp.rb:22:in `o'
        from tmp.rb:25:in `n'
        from tmp.rb:28:in `m'
        from tmp.rb:31:in `l'
         ... 8 levels...
        from tmp.rb:58:in `c'
        from tmp.rb:61:in `b'
        from tmp.rb:64:in `a'
        from tmp.rb:67
Run Code Online (Sandbox Code Playgroud)

那个"... 8级......"截断给我带来了很多麻烦.我在这方面没有太大的成功:我怎么告诉ruby我想要转储包含完整的堆栈?

ruby exception stack-trace

151
推荐指数
7
解决办法
13万
查看次数

为什么HTTP代理能够支持IRC和FTP等协议?

据我所知,SOCKS代理只在TCP级别建立连接,而HTTP代理在HTTP级别解释流量.因此,SOCKS代理可以用于任何类型的协议,而HTTP代理只能处理HTTP流量.但是为什么像Squid这样的HTTP代理可以支持IRC,FTP等协议?当我们使用HTTP代理进行IRC或FTP连接时,具体会发生什么?通过HTTP协议将包发送到代理时,是否有任何元数据添加到包中?

proxy protocols http socks

32
推荐指数
2
解决办法
3万
查看次数

用户脚本中@include和@match有什么区别?

元数据块上GreaseSpot页面说两者非常相似,但@match"对*字符的含义设置了更严格的规则".然后GreaseSpot继续教授使用@include,但像这样的 Chrome示例通常似乎使用@match并表明@include仅支持兼容性目的; @match是优选的.

显然,@include google.*可以在google.evil.com上运行而@match google.*不能.
这个例子不足以真正看出通配符在这两者之间的表现如何不同,并且在这里的答案中寻求更好的解释.

@include默认情况下使用新的GreaseMonkey脚本(Firefox),而默认使用新的TamperMonkey脚本(例如Chrome)@match.

这两者之间到底有什么区别?

例如,每个人如何处理通配符?
跨浏览器兼容性有差异吗?
有人选择使用一个而不是另一个的原因是什么?

javascript greasemonkey userscripts tampermonkey

30
推荐指数
2
解决办法
7467
查看次数

GCC在Alpine Linux中找不到stdio.h

在一个新的Alpine Linux中我安装了GCC

apk add --update-cache gcc
Run Code Online (Sandbox Code Playgroud)

但仍然是一个简单的程序

#include <stdio.h>

int main(int argc, char *argv[]) {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用消息编译

fatal error: stdio.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

gcc alpine-linux

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

错误:停止ADB服务器失败(代码-1){安装API - Android SDK}

我正在最近安装的Android SDK上下载并安装最新的Android API和系统映像.

在下载API时,我在安装过程中很快就遇到了错误.

Parse XML:    https://dl-ssl.google.com/android/repository/sys-img.xml
  Found Intel x86 Atom System Image, Android API 15, revision 1
Done loading packages.
Preparing to install archives
Downloading Android SDK Platform-tools, revision 13
Installing Android SDK Platform-tools, revision 13
Stopping ADB server failed (code -1).
Installed Android SDK Platform-tools, revision 13
Run Code Online (Sandbox Code Playgroud)

错误就是这个:

停止ADB服务器失败(代码-1).

我很好奇,这会影响安装的结果吗?它说它安装了,它继续下一个API,所以这样做了吗?

我认为这是因为我现在通过Tethered Android移动设备下载API,这确实依赖于ADB来连接到计算机.因此,如果要停止,它将取消下载,无论如何都无法安装.

实际上,主要的问题是这是否会影响安装,而无法在安装和下载API时停止ADB.

如果这会影响安装,我不能只是按照手动下载每个API列出的链接并手动安装吗?考虑到我在移动设备上,我把每一点都视为黄金.尽管事实上我有一个无限制的数据计划,但我更倾向于不是那些因为在我的旧AT&T计划中遇到前5%的人而受到限制的人之一.

因此,任何能够做到这一点的方法,并且在不停止亚行的情况下做到这一点都会很棒.只需要你的思想伙伴.

谢谢你的时间,我很感激.

sdk android

14
推荐指数
2
解决办法
3万
查看次数

以UTF-16或UTF-32编码JSON

JSON RFC,第2.5节,说部分:

要转义不在基本多语言平面中的扩展字符,该字符表示为十二个字符的序列,编码UTF-16代理项对.因此,例如,仅包含G谱号字符(U + 1D11E)的字符串可以表示为"\ uD834\uDD1E".

假设我有正当理由将JSON编码为UTF-16BE(允许).这样做时,是否仍然需要转义不在基本多语言平面中的字符?例如,而不是这个:

00 5C 00 75 00 44 00 38 00 33 00 34 00 5C 00 75 00 44 00 44 00 31 00 45
  \     u     D     8     3     4     \     u     D     D     1     E
Run Code Online (Sandbox Code Playgroud)

这是24字节的UTF-16BE字节序列\uD834\uDD1E,这样做是合法的:

D8 34 DD 1E
Run Code Online (Sandbox Code Playgroud)

即,直接使用4字节UTF-16BE值?

同样,如果我要编码与UTF-32BE相同的JSON字符串,我可以直接使用代码点值:

00 01 D1 1E
Run Code Online (Sandbox Code Playgroud)

unicode json character-encoding

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

如何在 JavaScript 中解析没有基本 URL 的相对 URL

对于绝对 URL,我们可以使用new URL(str);进行解析 对于带有基本 URL 的相对 URL,我们可以得到new URL(path, base). 如何解析没有基本 URL 的相对 URL?例如,folder/file.ext?a=1&b=2#hash应该解析为

{
    pathname: "folder/file.ext",
    search: "?a=1&b=2",
    hash: "#hash"
}
Run Code Online (Sandbox Code Playgroud)

第三方库很好,但我更喜欢内置的库和函数。更喜欢跨平台(浏览器/Node.js)解决方案。不需要IE。

javascript

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

For Apple in Apple Swift

Apple最新发布的语言Swift在官方文档中有一个例子.例子是这样的;

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
largest
Run Code Online (Sandbox Code Playgroud)

这很简单,但作为额外的练习,它需要添加另一个变量以返回最大数字的类型(即Square就是这里的情况)

但是,我似乎无法弄清楚这里的"(种类,数字)"是什么,我应该如何使我的for循环遍历所有Dictionary(interestingNumbers)键并找到哪个键具有最大数字.

谢谢大家的帮助

dictionary for-loop swift

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

随机生成测试数据是不好的做法?

自从我开始使用rspec以来,我遇到了固定装置概念的问题.我主要担心的是:

  1. 我使用测试来揭示令人惊讶的行为.对于我正在测试的示例,我并不总是能够枚举每个可能的边缘情况.使用硬编码灯具似乎有限,因为它只用我想象的非常具体的情况来测试我的代码.(不可否认,我的想象力也限制了我测试的情况.)

  2. 我使用测试作为代码的文档形式.如果我有硬编码的夹具值,很难揭示特定测试试图演示的内容.例如:

    describe Item do
      describe '#most_expensive' do
        it 'should return the most expensive item' do
          Item.most_expensive.price.should == 100
          # OR
          #Item.most_expensive.price.should == Item.find(:expensive).price
          # OR
          #Item.most_expensive.id.should == Item.find(:expensive).id
        end
      end
    end
    
    Run Code Online (Sandbox Code Playgroud)

    使用第一种方法给读者没有指示最昂贵的物品是什么,只是它的价格是100.所有三种方法都要求读者认为夹具:expensive是最昂贵的物品fixtures/items.yml.粗心的程序员可以通过创建Itemin before(:all)或通过插入另一个fixture 来中断测试fixtures/items.yml.如果这是一个大文件,可能需要很长时间才能弄清问题是什么.

我开始做的一件事是#generate_random为我的所有模型添加一个方法.此方法仅在我运行规范时可用.例如:

class Item
  def self.generate_random(params={})
    Item.create(
      :name => params[:name] || String.generate_random,
      :price => params[:price] || rand(100)
    )
  end
end
Run Code Online (Sandbox Code Playgroud)

(我这样做的具体细节实际上有点清晰.我有一个类来处理所有模型的生成和清理,但是这个代码对于我的例子来说足够清楚了.)所以在上面的例子中,我可能会测试为如下.佯装的警告:我的代码在很大程度上依赖于before(:all):

describe Item do
  describe '#most_expensive' do
    before(:all) do
      @items = [] …
Run Code Online (Sandbox Code Playgroud)

ruby testing rspec fixtures

6
推荐指数
3
解决办法
2475
查看次数

SIGABRT如何获取coredump文件?

我写了一个示例程序kill(pid, SIGABRT),但接收的进程SIGABRT不会创建任何核心转储.如何通过发送SIGABRT信号获取核心转储文件?

linux

6
推荐指数
2
解决办法
8337
查看次数