cnBeta过期评论查看器,再次更新
首先说一下做这个软件的动机和用途。平时喜欢在cnBeta网站看新闻,但是有时候太忙了,不可能每天都去看,一般两三天或者四五天去一次,快速扫一下重要的新闻,遇到特别好的文章就收藏起来。唯一不爽的就是超过一天的新闻评论不显示了,所以一边学Ruby一边做了这个软件。
上一篇博客中使用的方法是在在浏览器中使用远程的代理服务器,然后就可以看到过期的评论。但是网页打开速度比较慢,图片加载慢,视频看不了。现在又用了一个新的方法,而且效果不错,代理服务器还是在本机运行,网页文本从远程服务器获取,其他的图片、视频等则不经过远程代理,从而达到了一个较好的使用体验。
代理服务器做成了比较通用的结构,可以挂载对多个网站的处理。
1class Website 2 @@sites = {} 3 attr_accessor :domain, :encoding 4 def initialize(domain, encoding) 5 @domain = domain 6 @encoding = encoding 7 @@sites[domain] = self 8 end 9 10 def self.get_site(domain) 11 @@sites[domain] 12 end 13 14 def self.all_sites 15 @@sites.values 16 end 17end 18 19class << Websites::Cnbeta 20 def need_collect_uri?(uri) 21 false 22 end 23 24 def process_uri(uri, downloader) 25 if match = uri.match(%r{http://www.cnbeta.com/articles/\w+\.htm}) 26 if data = downloader.get("http://116.255.235.62:88/get?url=#{uri}", nil, "ASCII-8BIT") 27 return data, 'text/html', true 28 end 29 end 30 return nil 31 end 32end 33 34server = OfflineProxyServer.new(ServerName: "localhost", Port: 9999) 35server.downloader = WebClient.new 36Signal.trap(:INT){ server.shutdown } 37server.start
相关的代码已经用OCRA(One-Click Ruby Application)工具打包成了一个exe文件,可以独立运行。
运行后会在本机启动一个代理服务,在浏览器中把代理服务器设置成localhost:9999,再看新闻时就可以看到过期的评论。
最近在看《Agile Web Development with Rails, 4th Edition》,RoR真的是很强,ActiveRecord的OR Mapping设计的很好,自动生成Scaffolding代码,使用erb生成HTML,用Sass生成CSS,用CoffeeScript生成Javascript,完全让人工作在一个更高的层次上。RoR有很多的插件可用,常用的功能都有现成的实现。居然有这么多好用的工具,以前的眼界确实太窄了,有种想把自己的网站用RoR重写一次的冲动。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库