ruby评价以及备用笔记
ruby是一门写起来让人感觉舒适的脚本语言,但是因为它语法过于灵活而且误导人写太多的函数,内存管理不算好,容易把人带进沟里去,我已经换用perl了
OpenURI:http下载库,注意设置header;io = URI.open(link, hash),这里的hash约等于http发送get/post请求时的header,如果在hash里指定 :encoding = 'utf-8',则open-uri会以utf8编码读取下载的流,否则默认按ascii编码来读取。
socket (windows运行)的读写,TCPServer和TCPSocket。Socket < BasicSocket < IO,而close_write和read(Int)都是socket继承自IO的函数。
Set[] 集合: require 'set'; a = Set[3,4,5]; a.to_a # => [3,4,5]; [5,6,7].to_set #=> #<Set: {5, 6, 7}>; a.include?(5) #=> true; a << 2; #=> #<Set: {3, 4, 5, 2}>; a.delete(5) #=> #<Set: {3, 4, 2}>
JSON库基本用法(Psych yaml库的用法类似);
Thread.new {}; 多线程; Mutex和Queue的用法参见“runoob菜鸟教程”。
类似于Python的if __name__ == "main" 的如本文件为启动脚本则执行的 if ($0 == __FILE__)用法,和ARGV:启动参数数组
简单的正则表达式用法:注意是否开启多行模式,和替换换行符
text0 = text0.gsub("\r", '').gsub("\n", '') h = '<div class="el">' b = '</div>' re = /#{h}.*?#{b}/ elems = text0.scan(re) puts elems.size, elems[0] a = /(\d+)(abc)de/.match('12abcdef') # => #<MatchData "12abcde" 1:"12" 2:"abc"> a.to_a #=> ['12', 'abc']
Nokogiri:xml解析库;
SQLite3: sqlite3数据库的用法,
.results_as_hash: 把结果以哈希形式输出;
sql.query('begin'); sql.query('commit'):SQL事务;
sqlite的转义用法:sql.query('update table set a = ? where b = ?', [a_value, b_value]);
ERB:ruby的类似于php的模板引擎的用法,ERB.new(string).result(binding);ERB的模板用法见官方文档。
String:index(pos, startpos)用法;
.encode('utf-8', 'gbk', {:invalid => :replace, :undef => :replace, :replace => '?'})用法(见代码)
ruby元编程的基本用法:Kernel/Object.send(:method, args); require和load的用法;
获取脚本自身完整路径的方法:File.expand_path(File.dirname(__FILE__))
Nokogiri的部分用法见以下,注意Nokogiri::XML用来解析常规的xml,Nokogiri::HTML支持html里的<image>、<input>等没有结束标记的标签;Nokogiri的参数'utf-8'在windows上最好强制指定,要不然Nokogiri会以windows终端的GBK编码来解析。
Nokogiri有xpath('./node')的用法,识别<a href="link">text</a>是用xpath('./a/@href').text。
Nokogiri还有.to_html;.to_s;.text;.value用法,代码暂时找不到了,建议结合实际使用。
用Nokogiri的时候最好逐步调试,如果nokogiri找不到元素,有时候会抛出异常,有时候会返回nil。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话