V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  msg7086  ›  全部回复第 90 页 / 共 1020 页
回复总数  20390
1 ... 86  87  88  89  90  91  92  93  94  95 ... 1020  
2022-07-16 18:02:16 +08:00
回复了 yodhcn 创建的主题 程序员 不限编程语言,你认为哪个 ORM 最好用?
@yodhcn Ruby 和 Python 的巨大区别就是 Python 环境更期待人们有较少的自由,而 Ruby 则给予人们很多的自由。Python 的理念是做一种事应该只有一种最好的做法,而 Ruby 的理念是做一种事应该有很多种做法。Python 其实已经很「死板」了,用 Python 搞 black magic 我的确也见过(我之前重写我司的一个项目就碰到了一个放飞自我的 Python 模块),但是很少很少,基本可以保证写了三五个月的新手和写了三五年的老手能写出差不太多的代码。Ruby 就没这个可能了,写三年和写五年都能差很多,甚至你拿到自己两三年前写的代码都能恨不得重写一遍,因为你现在已经可以用更 magic 的做法来重构了。(在我自己身上已经发生过很多次了,越写越花哨,越写越 magic……

Rails 现在就是通过半强迫性地促使你写测试代码来保证可维护性。内部实现可以一团糟,但是有了测试以后,重构甚至重写都不是大事,不满意的地方以后再迭代就行了。

Ruby 的 Type Hinting 是个新玩意儿,我自己都很少用,一个很大的原因是需求太少,至少我自己很少会遇到 Type Hinting 能改善代码质量或者阅读体验的场景。有很多时候如果需要有 Type Hinting 才能搞懂的话,可能是代码结构设计有问题了,我个人觉得。
手机实体卡不难买吧……
2022-07-16 16:38:54 +08:00
回复了 yodhcn 创建的主题 程序员 不限编程语言,你认为哪个 ORM 最好用?
接上面一楼,说说 Rails 的 ORM 。
我用过的 ORM 不多,十几年前还在写 PHP 的时候给公司写过一个简易的称不上 ORM 的查询工具,用来简化一些代码。这里只能简单聊一聊皮毛。

Rails 的 ORM 查询器有很多的黑科技。比如说你从表里查数据的时候写条件,在代码里可以把多个条件拆开成多个语句去写,而不是一次写完整。所以你可以这样写:
p = Post.all
p = p.where(user_id: uid) if uid != nil
p = p.where(forum_id: fid) if fid != nil
p = p.where(created_by: (7.days.ago)..) if show_recent?
p = p.order(order_by) if order_by != nil
@ posts = p.page(page)
另外,从例子里你也可以看出,不仅有 7.days.ago 这样的表达( 7.days 是 Integer 上重载的一个方法,返回一个 Duration ; 7.days.ago 是 Duration 上的一个方法,返回一个带时区的 Time ),有 x.. 这样从 x 到无穷大的 Range 类型,还有 Relation.page 这样利用 kaminari 插件实现的无痛分页组件。

对于不熟悉这套系统的人来说,只能是看得一头雾水吧。但是如果你很喜欢这种「 black magic 」式的设计,你就会觉得特别爽……

就说这些吧,说得多了会被人骂的。
2022-07-16 16:24:19 +08:00
回复了 yodhcn 创建的主题 程序员 不限编程语言,你认为哪个 ORM 最好用?
@yodhcn #113 是和 Python 类似啊,Python 也是强类型的。
Rails 的话,首先 Ruby 这门语言的表达能力强,写起来舒服,这个对我是最重要的。我现在所有的项目(除了公司的)都已经用 Ruby 写了,包括平时用的小工具,服务器上的运维脚本,等等。
其次是 Rails 本身就是追求最佳实践和约定优于配置。学习 Rails 上手做一个 hello world 级别的项目(比如一个简易的博客)基本上只要几十分钟时间,而且只要你跟着 Rails 的教程走,你的项目就会是可维护、可测试的。
比如说 Rails 的 ORM 有 database migration 机制,数据库结构的变更可以用代码来描述(增加或者删除列,修改类型,等等),然后你部署新版本的时候只要 migrate 一下数据库就会自动执行变更集,不需要手动去管理。
又比如说 Rails 很容易集成 BDD 测试驱动开发套件(比如 rspec ),你写生产代码的时候可以一并把测试用例写完。对于 Web 项目,你可以一次性把单元测试和功能测试全部搞定,还有 capybara 这种模拟浏览器点击的组件可以用,这些都可以促使程序员去写可维护可测试的代码。

Rails 好像从来就没在国内热过。
西方的初创企业会大规模用 Rails ,因为开发实在是太快了。一个点子想出来,一星期时间就可以从头到尾做完上线测试了,并且可以一直持续迭代到你拿到疯投为止,都不太会有很大的瓶颈。
至于借鉴,我只知道很多框架都或多或少借鉴了一些 Rails 的东西。(当然你也可以说 Rails 之前就有同样风格的框架了,但是我觉得当时没有任何一个框架能像当年 Rails 一样把各种精华都集中到一起去。)

当然对于陌生人我一般不会推荐学 Ruby 和 Rails ,原因你也说了,在国内太小众了,没有前途。在美国 Ruby 的工作岗位有不少,前段时间我以前从零开始带入门 Ruby 的徒弟告诉我他找到一个挺不错的工作,远程在家办公写 Rails ,一年 15 万美元。国内学 Ruby 和 Rails 的,大都是真的喜欢 Ruby 和 Rails 的人,否则为什么不学 Python Java Go 呢,哪怕 PHP 工作也比 Ruby 多啊。但是尽管如此,学一下 Rails 还是很好的,有很多最佳实践的概念会影响你一生,让你写其他语言的时候也能受益。
还有一个原因是 Ruby 和 Rails 太容易搞出 black magic 了。black magic 会让你写代码的时候大呼惊奇,但是万一出了问题踩了坑,那就只能一坑到底爬不上来了。这个我下一楼再说。

很不幸的,我现在工作用的是 Java 8 。我现在还是保持和以前一样的习惯,写项目会写单元测试和功能测试,写组件会更倾向于拆分结构,写接口会尽可能更「人性化」一些,所以学过 Rails 姑且还是有好处的。
电池越满越慢。
2022-07-16 11:38:52 +08:00
回复了 satoru 创建的主题 程序员 你最喜欢的 ORM 有哪些最讨厌的地方?
Rails 有 counters 相关的方法。

# For the Posts with id of 10 and 15, increment the comment_count by 1
Post.update_counters [10, 15], comment_count: 1
# Executes the following SQL:
# UPDATE posts SET comment_count = COALESCE(comment_count, 0) + 1 WHERE id IN (10, 15)

抄吧(
2022-07-16 11:30:42 +08:00
回复了 yodhcn 创建的主题 程序员 不限编程语言,你认为哪个 ORM 最好用?
如果你想玩 Ruby 那就看看 Rails 。如果不玩,那就找个抄得最像的凑合一下。如果没有抄得像的,那就去学 Ruby 和 Rails 然后自己抄一个。
而且 Ruby 就是强类型有类型注释的动态语言啊?
2022-07-16 03:21:30 +08:00
回复了 kyuuseiryuu 创建的主题 程序员 曾经的 PHP 空间会不会就是一种 “Serverless”
曾经?现在也有啊,dreamhost 还活着呢。人们换用 VPS 还不是因为没有服务器权限很多事情做起来不方便。
2022-07-16 03:17:16 +08:00
回复了 villivateur 创建的主题 Amazon Web Services 因为不了解 AWS 付费模式,被自己坑了,哭
@salmon5 所以公司都有专门的团队去处理云计算系统对接啊?都要用到云计算这个级别了,平时十几个机房几千几万台服务器开开关关很正常吧,几十万美金的账单算是很普通了,毕竟承载的业务比这点量级大多了。之前抖音和 GCP 签合同,3 年花了 8 亿+美金。几十万都是小钱了。

所以我还是那句话,个人用户别乱碰企业级的东西。就像你汽车要加油,你肯定家门口加油站加了,不会去期货交易所买个原油期货吧。
2022-07-15 11:29:57 +08:00
回复了 Biwood 创建的主题 Windows 感觉 Windows 平板是个很好的方向,电脑厂商们请多多投入
> 我不想同时用两个笔记本

有没有可能,这才是问题?
我觉得 Windows 平板不如带键盘的变形本。
2022-07-15 11:25:59 +08:00
回复了 Vincent103 创建的主题 问与答 咨询个法律问题,涉及到保密协议,如果违反会如何?
你可以随便和其他人签协议,但是被起诉依然是你担责,坐牢依然是你坐。
你见过和别人签合同让别人帮你坐牢的吗?

承担经济赔偿本质上就是钱的问题,你可以和对方公司签合同给你钱。
(当然如果对方翻脸,法庭上法官认不认是另一个问题。)
2022-07-15 11:11:10 +08:00
回复了 jackge0323 创建的主题 程序员 被 bandizip 官方和代理商恶心到了
@zhongjun96 我搜索 bandizip mac 搜到了这个: https://cn.bandisoft.com/bandizip.mac/
2022-07-15 08:26:13 +08:00
回复了 pppguest3962 创建的主题 问与答 Chrome 浏览器的配置从 A 机移植到 B 机,扩展丢失的问题
扩展和 Cookie 不能转移。
2022-07-15 07:30:31 +08:00
回复了 atan 创建的主题 问与答 100w 的充电器能输出 90w 吗?
20V5A 就是 20V 最大能跑到 5A 。
5V3A 就是 5V 最大能跑到 3A 。
你总不能让产品规格从 0.01A 0.02A 0.03A 一直写到 4.97A 4.98A 4.99A 5.00A 吧……
trunk based development 这个比较适合传统开发模式。
敏捷开发一般保证 dev/master 是随时可用,feature 上做功能。
传统开发一般保证 release/*是随时可用,dev/master 上做功能。(当然还是要配合 personal branch+MR 。)
你如果要用 AVX512 指令集就得用牙膏厂。普通的计算当然买 AMD 了,同样算力下成本低很多,为什么不用。
你现在用的 64 位指令集还是 AMD 搞出来的呢→_→
2022-07-15 01:58:06 +08:00
回复了 villivateur 创建的主题 Amazon Web Services 因为不了解 AWS 付费模式,被自己坑了,哭
而且反过来说,因为 AWS 本来就是面向大企业的服务,你个人不小心失误用了几十刀人家根本不在意的,你只要跟客服说一下就会给你退回来。这也是企业级服务的好处,很多地方都有非常大的弹性,不会计较你一些失误或者一些小钱。你要去一些 VPS 小厂,不小心开了个 VM 花掉几十刀,你要问他要退款,下辈子吧。
2022-07-15 01:53:12 +08:00
回复了 villivateur 创建的主题 Amazon Web Services 因为不了解 AWS 付费模式,被自己坑了,哭
@cxtrinityy @zhangshine @joynvda
企业级服务不就是这样的吗?你一个月付几十万美金,对方出一个客服专员专门服务你们公司,用得多还给打折,需要什么没提供的服务还给你安排开发人员帮你实现出来。

啥?你说你是个人用户,一个月只付几块钱?
那为什么要用面向大企业的服务。隔壁面向个人用户的服务不香吗。
2022-07-15 01:35:14 +08:00
回复了 jackge0323 创建的主题 程序员 被 bandizip 官方和代理商恶心到了
嗯?我打开了 bandizip for mac 的官网看了,下载链接直接就指向了 mac app store 啊?甚至都没看到代理商。
2022-07-15 00:35:25 +08:00
回复了 coala 创建的主题 Java [ Java ] 代码质量糟糕, 是常态吗?
@soupu626 还行吧,那些都是无效代码量,可以脑内屏蔽的。你都当成 var 就行了。
就像没 lambda 的时候大段大段的匿名类,脑内转换成 lambda 就行了……
只要接口清晰易用,测试覆盖好,我觉得问题不是很大。函数式又不是什么高深的科技。
1 ... 86  87  88  89  90  91  92  93  94  95 ... 1020  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5359 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 85ms · UTC 09:26 · PVG 17:26 · LAX 02:26 · JFK 05:26
Developed with CodeLauncher
♥ Do have faith in what you're doing.