黑胶唱片Rails,能抗能打

今天在Hacker New上看到了一篇称赞Raisl的文章Why Rails Still Matters。 原文用黑胶唱片做为引子,说明以rails为代表的老旧web技术是ok的,不比 新的Next.js之类差很多,大家的应用场景不同而已. 个人顾个人的场子,井水不犯河水就好. 我的想法 我是从Rails入行的软件开发,入职了在一个很小的微型企业. 从Rails开始,我慢慢接触并且使用了Vim, Linux, Ruby, ORM, SQL, Postgresql, Python(在大学只是理论学习), Lua, Javascript, CSS, Markdown, Docker, Go, Kubernetes, Rust等等各种各样的技术. 可以说Rails是我从事IT行业的引路人. 最后从事和Ruby相关的工作是2016年的时候,负责给一个稍微大一点的 初创公司运维那些web服务器,数据库之类的. 时间过得很快,我很久没接触Rails或者Ruby了. 记不清是哪一个时间段,我非常喜欢静态强类型的编程语言. 估计是被Ruby的 method call chian链路搞烦了,也可能是被class搞烦了. 现在我也不喜欢Python的class 和所有的oop编程语言(java为代表, C++也不喜欢). web/http 整个web开发说白了基本上是面向浏览器开发,包含前后端技术. 前端不多多说,html/css/javascript三个加起来本质上就是浏览器的DSL. 最新的wasm稍微可以说自己脱离了浏览器的控制,但也没脱离多少. Node.js/deno也不敢完全说自己和浏览器没少关系 后端方面,屁股决定脑袋,也受到了浏览器不小的制约,看看Nginx和Header相关配置有多少就知道我在说什么了. HTTP协议这么多年了,也是受到浏览器的控制的,毕竟协议谁都可以写. 市场支持不支持,支持的多不多,是和协议本身的各项指标关系不大的. 浏览器本身是一个很复杂而软件,复杂程度不输操作系统. 越是靠近用户层就越复杂,因为用户/人类是变数最多的. 相反,越靠近物理硬件,软件就可以设计的越简单. 比如网络传输的物理层,网络层,传输层,是一层复杂过一层,一层包一层, 像俄罗斯套娃一样. 操作系统,管好4大件,处理好中断,调度就好了. 浏览器光是html的渲染(想象一下一个动态的window size)就够复杂了, 别提那些音/视频API、网络请求、安全策略了 Gemini 最后用gemini总结一下这篇文章,并介绍一下Rails和Next.js的背景,以及现在的web开发趋势。 我基本认同gmini的说法。 文章主要思想 这篇文章的核心观点是,虽然像Next.js这样的新兴前端框架提供了更高级的功能和更精美的界面,但Ruby on Rails仍然是一个有价值的web开发工具,尤其是在注重简单性、开发速度和可维护性的项目上。作者认为,现代JavaScript框架的复杂性实际上会增加开发难度,而Rails的抽象和对web基础的关注使其成为许多应用程序的强大选择,即使在AI和动态web体验的时代也是如此。他用黑胶唱片类比,说明了为什么旧技术在新的创新出现后仍然存在并有价值。本质上,这篇文章推崇Rails是一种实用、高效且具有成本效益的解决方案,即使它不是“最新潮”的技术。 Rails 和 Next.js 的背景 Ruby on Rails (Rails):是一个基于Ruby语言的web应用开发框架。它由David Heinemeier Hansson于2003年创建,旨在提高开发效率和简化web应用开发过程。Rails遵循“约定优于配置”的原则,提供了一系列工具和约定,帮助开发者快速构建功能丰富的web应用。它在过去二十年中一直是流行的后端框架,许多知名公司如Airbnb、Shopify、Github等都使用Rails构建。 ...

February 22, 2025 · datewu

想写个cms

updated at 2014/2/16 坑太大,挑战太多,挑战失败,放弃啦 :) 看完Ruby On Rails tutorial,感觉热血沸腾。 来吧,少年,来写个CMS吧。 model 数据库设计 generate 生成model schema数据模型: 1 2 3 4 5 6 rails g model App \ title:string icon:binary descript:text \ get_url:string hits:integer downloaded:integer score:decimal \ version:string require_os_version:string author:references rails g model Author name:string descript:text website:string populate 填充假数据,便于测试。 faker gem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #db/seed.rb 30.times do |n| ne = Faker::App.author dt = Faker::Lorem.paragraph we = Faker::Internet.url Author.create!(name: ne, descript: dt, website: we ) end users = Author.order(:created_at).take(17) 50.times do users.each do |u| te = Faker::App.name dt = Faker::Hacker.say_something_smart gu = Faker::Internet.url hs = Faker::Number.number(5) dd = Faker::Number.number(4) se = Faker::Commerce.price vn = Faker::App.version rn = "android 1.6+ | ios 6.0+" u.apps.create!(icon: nil, title: te, descript: dt, get_url: gu, hits: hs, downloaded: dd, score: se, version: vn, require_os_version: rn) end end 数据录入 手动/人工录入 form表单 机器抓取 nokogiri gem UI/static_pages_controller controller 新建controller ...

December 23, 2013 · datewu

连接数据库

跟着rails tutorial 学习rails框架时,遇到了db链接的问题 问题 1 2 3 4 5 rake db:create failed PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? Google之后发现是database.yml配置文件没有加上host:localhost配置项。 过一会,发现PATH没有包含psql命令。 1 2 3 4 5 6 7 vi ~/.bash_profile #添加下面一行内容 export PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH" exit ## or echo export PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH" >> ~/.zshrc 终于rake db:migrate 成功。 附录 附上database.yml(production环境使用heroku环境变量) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: 5 development: <<: *default host: localhost database: xxx_development test: <<: *default host: localhost database: xxx_test production: <<: *default database: xxx username: xxx password: <%= ENV['xxx_xxx_PASSWORD'] %>

November 7, 2013 · datewu