我正在学习 go,我有以下代码可以正常工作:
resp, err := http.Get(url) // get the html
...
doc, err := html.Parse(resp.Body) // parse the html page
现在我想先打印出 html 然后再进行解析:
resp, err := http.Get(url)
...
b, err := ioutil.ReadAll(resp.Body) // this line is added, not working now...
doc, err := html.Parse(resp.Body)
我猜是resp.Body是reader的原因,我不能调用read twice?知道如何正确执行此操作吗?复制resp.Body?
最佳答案
因为客户端从网络流式传输响应主体,所以不可能读取主体两次。
像您已经在做的那样读取对 []byte 的响应。使用 bytes.NewReader 在 HTML 解析器的字节上创建一个 io.Reader .
resp, err := http.Get(url)
...
b, err := io.ReadAll(resp.Body)
doc, err := html.Parse(bytes.NewReader(b))
关于go - 我复制 resp.Body 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915873/
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
之前有人问过这个问题,我发现了以下clip关于如何一次设置一个类对象的所有属性,但由于批量分配保护,这在Rails中是不可能的。(例如,您不能Object.attributes={})有没有一种很好的方法可以将一个类的属性合并到另一个类中?object1.attributes=object2.attributes.inject({}){|h,(k,v)|h[k]=vifObjectModel.column_names.include?(k);h}谢谢。 最佳答案 利用assign_attributes使用:without_prote
(跟进我之前的问题,Ruby:howcanIcopyavariablewithoutpointingtothesameobject?)我正在编写一个简单的Ruby程序来在.svg文件中进行一些替换。第一步是从文件中提取信息并将其放入数组中。为了避免每次调用此函数时都从磁盘读取文件,我尝试使用memoize设计模式-在第一次调用后的每次调用中都使用缓存结果。为此,我使用了一个在函数之前定义的全局变量。但是,即使我在返回局部变量之前将该变量.dup为局部变量,调用该变量的函数仍在修改全局变量。这是我的实际代码:#memoizetokeepfromhavingtoreadoriginalfi
在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol
我有一台服务器,其中只有xls日志文件。每个文件为5-15Mb,并且在文件随时添加的意义上是动态的。现在我需要一种使用Ruby执行以下过程的方法。通过将文件名从一台只有日志文件的服务器发送到另一台服务器来复制文件。我需要将服务器密码作为参数传递。一切都在后台发生,由Ruby脚本触发。 最佳答案 查看Net::SCP和Net::SSHgem。第一个让您使用安全副本检索文件,第二个让您轻松找到可用于检索的文件的名称。在Net::SSH中,ssh.exec!将成为您的friend。来自Net::SCP文档:Net::SCPimplemen
Rails有一个.blank?如果对象为空,将返回true的方法?还是零?可以找到实际代码here.当我尝试在1.9.2上复制它时:classObjectdefblank?respond_to?(:empty?)?empty?:!selfendend调用“.blank”?返回true但调用"".blank?根据railsdocumentation返回false对于.blank,空白字符串应该eval为true?在查看我最初编写的代码之前:classObjectdefblank?!!self.empty?||!!self.nil?endend结果相同。我错过了什么?
在Rails中,我可以在action返回之前访问response.body吗?假设我想在它返回之前做一些最终的字符串替换,我可以访问response.body,即View返回的响应吗? 最佳答案 在你的Controller中尝试after_filter。您应该可以从那里编辑您的response.body。对我来说,我需要删除xml中的一些ASCII字符,因此我这样做了。after_filter:sanitize_xmldefsanitize_xml#cleantheresponsebodybyaccessingresponse.bo
当我尝试预编译我的Assets时,出现以下错误。这是具有完整输出的跟踪:RAILS_ENV=productionbundleexecrakeassets:precompile--trace**Invokeassets:precompile(first_time)**Invokeassets:environment(first_time)**Executeassets:environment**Invokeenvironment(first_time)**Executeenvironmentrakeaborted!TypeError:can'tdupNilClass/var/lib/ge
我遇到一个奇怪的问题,我正在使用的Rails引擎中的某些模型在对象空间中被复制。(rdb:1)ObjectSpace.each_object(::Class).each{|klass|putsklass.to_s+":"+klass.object_id.to_sifklass.to_s.eql?("DynamicFieldsets::Field")}DynamicFieldsets::Field:66866100DynamicFieldsets::Field:718363802479发生这种情况时,我不能使用is_a?或相等性检查以测试对象是否是Field类的实例。这个问题只发生在开发
自97年以来我一直在使用vi/vim进行各种快速编辑和管理任务,但最近才考虑使用它来替换Netbeans作为我选择的ruby编辑器。我发现一件事在Netbeans和Eclipse中非常有用的是Ctrl+Click“转到定义”功能,您可以在其中按住Ctrl键并单击一个类或方法,然后它将带您了解定义。现在,我玩过丰富的ctags和rails.vim,而且很接近,但没有雪茄。这就是我想要的:默认情况下在Netbeans和Eclipse中,您可以在本地rails中按住ctrl并单击本地方法或类项目,但你也可以ctrl+click定义在gems或用Ruby编写的系统库。以Netbeans为例