V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nbndco  ›  全部回复第 7 页 / 共 25 页
回复总数  493
1 ... 3  4  5  6  7  8  9  10  11  12 ... 25  
2022-03-02 21:48:37 +08:00
回复了 kekeabab 创建的主题 程序员 初中学历的 00 后程序员,未来怎么办?
本质上就是没有学历外加技术不行。有点鸡生蛋蛋生鸡的问题。因为学历不够无法找到好工作无法提升技术,因为无法提升技术找不到好工作所以也没钱去提升学历。尤其是现在又不景气,就是雪上加霜了。

我也不知道有啥好办法破局。我只能谈谈技术方面的问题。

LZ 你现在的水平呢,大概处于没入门的状态,就好比想当一个作家,会认字,会写字,其他都不太懂,这样显然也能写出点短文章来,如果别人搭好了架子往里填就更容易点,写的怎么样就难讲了。这其实也不是问题,我觉得大多数科班大学生也没入门(水平比你强,但我觉得还没你热爱技术)。我的一个朋友,学历自然是比你高到不知哪里去了,我也觉得他没入门。但是他现在在 MS ,学习提升的机会就多得多,可能过几年就入门了,对你就格外困难。还是吃了学历的大亏。

因为你没入门,所以你的 GitHub 里的东西基本都极其简单直白,或者写了一些纯 unsafe 的 rust (非常典型的你不明白为什么要创造 rust ,只是最近学了所以就写一下)。你学习时会感觉到,网上的信息极其零散,看到的代码片段都似懂非懂,如果没有几乎想要实现同样功能的代码话写代码很艰难。但是呢,基本的功能和语言的逻辑还是能看懂并且写出来的。你觉得自己不会的东西格外的多,任何新的领域都没有半点思路(比如你提到的性能问题)。这都是没入门的体现,入门不是说什么都会了,而是懂得了自己不会什么以及应该怎样去学习和解决问题了,懂得程序设计的逻辑所以可以很快地上手各种新的语言和库了,懂得如何设计和选择正确的工具和架构,甚至自己创造工具和库了。你现在的知识是点状的而不是树状的,而且点格外的少和零散(还充斥着大量的奇技淫巧),所以就很难真正的举一反三快速分析学习。

你现在这个状态,我唯一能给的建议就是,多问问为什么;如果有时间精力就自己尝试着写完整的项目。如果你只要随便玩玩,我以我玩了二十年的经验告诉你,不能说一点用没有,但是在认真钻研的提升面前,可以完全忽略。随便举个例子,你 GitHub 里的绝大多数项目(我没全看,就不说所有了),没有一个是有命令行参数的,如果你自己真的把它慢慢做成一个工具,是有很多完善空间的。这个过程中,你不仅会更了解这个语言的生态,你可能也会意识到,想要管理一个一千行的项目,一个 main 文件,或者单纯的把文件拆小是不够的,这不是一个花时间写就行的问题。等到你可以 hold 住几千行代码的时候,可能很多工作就没那么难了(怎么找工作我就不知道了)。但是你如果继续在 GitHub 上不断的把这几行代码翻译成不同语言,或者写一堆 toy/demo project ,那再写几年可能也不会有什么区别吧。

我看你 GitHub 的第一个项目是 forward ,我也写过个类似的( https://github.com/zhuhaow/Specht2/tree/main/core/specht-core/src),你可以参考。
2022-02-27 16:13:25 +08:00
回复了 miaoge520 创建的主题 问与答 本人高中毕业,想加入字节跳动,求内推
高中毕业不知道可不可以进字节,从你这个帖子的内容来看,不太行
2022-02-25 12:33:10 +08:00
回复了 sam01101 创建的主题 程序员 GitHub 无预警突然封号
@neverfall 你看,我刚回完你就看到这个,https://v2ex.com/t/836360 。LZ 会说么,不会的。
2022-02-25 12:06:05 +08:00
回复了 sam01101 创建的主题 程序员 GitHub 无预警突然封号
@neverfall 说老实话,你这种什么“因为说了中国好话,也被封了”,真的是常见的带节奏的手法。

我也不是说你有心带节奏,而是你这种说法本身模棱两可,不清不楚。就和 https://medium.com/@catamphetamine/how-github-blocked-me-and-all-my-libraries-c32c61f061d3 这种描述一样。GitHub 没回复之前:“我怎么被封了?我什么都不知道。天哪,开源精神已经被 GitHub 毁灭了!”等到 GitHub 回复了,就来:“哦,我只是跑到别人的 repo 下面去开了个小玩笑而已,不就开个 issue 说人杂种怎么能算骂人呢?”。

GitHub 本身这种处罚程度合理不合理当然有待商榷,问题是这个作者跑去别人的 repo 骂人的事他会和你说么,不会。如果进一步想,他也不是有心带这个节奏,不然如果他知道自己因为这种理由被封就算觉得处罚不合理也应该不会大张旗鼓的宣扬一番,他是压根就没觉得骂人有什么不对。

回到你的回复,什么场景,说了什么“好话”,怎么个“被封”法,怎么知道是因为说了这个被封,前因后果,一概没有。不过我想很多人就此已经记住了 GitHub 上不能说中国“好话”,不然会被封了。

回到这个帖子问题,我简单说,有没有可能是误封,有;有没有可能处罚过重或者不合理,有;有没有可能没有理由就封号,没有。这也非要扯到美国 /中国,你当美国也有宣传部驻扎在 GitHub 么。GitHub 要是真要针对中国,就 trending 里面那堆天天刷榜的中文 md 项目还不赶紧先封了?
2022-02-24 22:51:02 +08:00
回复了 sam01101 创建的主题 程序员 GitHub 无预警突然封号
@sam01101 project 也是 private 的么,用 action 了么。如果 project 也 private 而且没用 action ,那似乎没啥道理
2022-02-24 22:32:41 +08:00
回复了 sam01101 创建的主题 程序员 GitHub 无预警突然封号
@sam01101 所以不能透露的原因是?会不会就是被封的原因?
2022-02-24 22:26:31 +08:00
回复了 sam01101 创建的主题 程序员 GitHub 无预警突然封号
还是挺好奇原因的。

个人封号基本就是小号+滥用 action 。组织连坐就太危险了,不过是哪个 org 啊,我看 Xtao Labs 只有一个人啊。
2022-02-23 14:01:13 +08:00
回复了 Zhancha 创建的主题 生活 关于刚需的讨论
现在的这种“刚需”是为了炒房造出来的说辞。

真正的刚需是不在意房价涨跌的,需求刚性所以价格变化并不影响需求。如果等几个月便宜几十万就受不了,那不恰恰说明你不是刚需,所以可以等上几个月为了便宜几十万么。既然几个月可以等,那几年自然也可以等,有什么可刚的。真刚需是不能等的,你就是告诉他你是刚坐着时光机回来的几个月后便宜几十万他也不会等。

所以不要管什么是“刚需”,做好房价波动的打算还依然想买那就买。
为什么会有这么多人觉得还要提升学历?就进个厂而已,难道北大硕比北大本有啥特别优势?

唯一需要考虑的就一点,要不要出国读研。

抛开家庭条件对你的支持能力不看的话,去美国读研是对你的需求唯一完美的正解,进可攻退可守:时间短,沉没成本低,毕业也容易;可以读书期间实习体验美国公司文化;如果不适应美国的文化,可以回国;最重要的是可以在美国工作,用 opt 就业抽 h1b 。唯一的问题就是 master 不太可能有奖学金,也就意味着这笔几十万的钱必须家里出。

至于你说的“多点学习 /找机会的 buffer ,可能能得到能力的提升”,这点出国读还有点可能,国内完全没有可能性,不需要考虑。国内读研对你的需求最大的问题,就是没有解决任何问题。如果你本科毕业就工作,三年攒下的钱都够出国读 master 了。
@EIJAM 怎么还在传这个烂梗。别的不说,这个实习生自己跑出来说叠一层空白 div 就会让硬件加速失效(并且微软之后立刻就修复了,可见只是自己的代码写的烂)也不知道是丢谁的人。

至于这个空白 div 的背后逻辑,我看这篇文章解释的应该差不多。https://medium.com/@jeremy.noring/did-google-cripple-edges-youtube-performance-ce5169d3e5f4

致于 Google 为何不会做这种事,我这么说吧,公司文化先不谈,Google 内部连 Windows 都基本找不着,谁去找 IE 的 bug 来减速 YouTube 。Google 也真没这么牛去找到这些 bug 。
@sgissb1 我赞成主要是看人,这个是没有任何疑问的,所以我的前提一定是合格的程序员。不过我理解你说的问题,你说的对,确实大多数情况下,性能问题是不会由切换语言而解决的,不存在因为我是 rust 写的所以它就更快更省内存。我自己在写 rust 的过程中也知道有些东西只是理论上会快一点,但是这些东西在 rust 里面都是没有任何心智成本的(不论是维护上还是实现上)。也确实有一些场景由于 rust 本身的很多特性使得我可以大胆地进行很多优化。
@nbndco 例子没仔细想,不一定 work ,可能要改成 `fn foo(arg: impl T + Send + Sync)` 更合理一点,但是意思是一样的。
@nbndco 忘了提抽象的问题了。

这些 over defensive 和 Ergonomics 本质上都是语言抽象能力弱,导致语义总是不清晰造成的。在 rust 里我可以写类似 `fn foo(arg: impl AsMut<dyn T + Send + Sync>)`来保证 thread safety 。这就使得我们可以在函数里避免所有无意义的锁(如果我们的类型不是 Send 和 Sync 的我们可以在调用的时候自己加上锁再传入就好了)。

在 C++里我就算放弃类型安全使用模版我都不知道该怎么实现这个函数。
@sgissb1 以上所有的东西,我都没谈 Ergonomics 。

其实这个对性能影响也是根本性的。语言功能弱带来两个问题,一是代码可重用度低,从而优秀的算法不方便抽象成库广泛使用,二是正确的写法可能太麻烦,就懒得实现了。

但是理论上这不是性能损耗,因为你总是可以实现的么。只不过 rust 可能就是一两行,C 可能就要自己写几百行。
@sgissb1

继承和多态都用不好的程序员完全不合格。我既然说了水平达到一定程度,这种入门的基础自然是已经完全理解并可以自然而然的应用的。我当然知道现在有些人自称程序员但是完全没入门,但是那个并不在考虑范围之内,rust 没有解决他们不会写正确的代码的问题,只是阻止了这些人写代码而已。

以下都假设是一个合格的程序员在写代码。

越简单就性能越好基本只对几百行的程序才可能为真(如果先不提 rust 的 zero cost abstraction 可能不会让代码变慢)。一旦代码复杂了之后,人脑能够理解并且不会发生错误的可能性太低了,必须要编译器来进行帮助。如果有些时候编译器帮助不了怎么办呢,只有两条路,要么就是写错误的代码,要么就是 over defensive (性能受损)。

我随便举两个例子,你既然对 C++比较熟悉,那么问:

1. 一个传入的指针,他的生命周期是什么?答案是,不知道,全靠文档和看源代码。

C++为了在语言层面上解决这个问题,只好加入 smart pointer ,但是并没有根本上解决这个问题,很多时候只是把所有的东西包在一个 rust 的 Arc<T>里了而已。

这带来两个问题:我们显然不能把一个传入的裸指针包进 shared_ptr 里,也就意味着所有的接口必须直接使用 shared_ptr ,即便某些情况下我们调用时事实上知道我们并不需要 shared_ptr ( enable_shared_from_this 我就不说了吧,基本给 shared_ptr 的正常使用判了死刑,说白了 smart pointer 除了 unique_ptr 以外其他的都完全没用);第二,如果接口没有用 shared_ptr 怎么办呢,所有权如此的不清晰使得我们只能把传入的数据拷贝一份,这个性能损耗就是非常惊人的了。

以上这些美好的设计还是建立在调用者和被调用者都正确地根据严谨清晰地文档实现了周期管理的前提下的,毕竟写错了也只有 runtime 的时候不时的报 segment fault 或者 leak 连错都没有。这点显然 Mozilla 的程序员水平完全不行,项目规模一大就不会写代码了,gecko 的内存泄漏问题一直都很严重,只好写个 rust 出来给自己擦屁股。

2. 一个类是否 thread-safe ?答案是,不知道,全靠文档和看源代码。

看文档,如果文档说了那就可以确定(吗?);如果文档没说,那么就只好去看源代码,如果没有源码,那就只能假设不 thread-safe 然后加锁了。为什么会这样呢?因为语言层面没有提供任何的机制来帮我们确定代码是否 thread-safe 。这个过程没必要的锁可能就不止一个了。没必要的锁可能发生在两层:1.类已经是 thread-safe 的了但我不知道; 2.虽然不是 thread-safe 但其实我们并没有任何 concurrent 的访问或者 mutable 的访问。

但是,老问题,以上这些美好的设计还是建立在调用者和被调用者都正确地根据严谨清晰地文档实现了 thread safety 的前提下。就算你今天是个优秀的程序员,通过仔细阅读代码确保了没有在一个 thread safe 的类访问再加一层锁,你有如何保证之后某个同事(甚至就是你自己)在修改这个类的时候把它改成不 thread-safe 的了呢?

我这几年写了一点 rust ,lifetime ,ownership 和 synchronization 基本都是我在 api 设计时候的本能反应了,依然还是会经常有各种编译器的错误,而且我看半天才能明白究竟哪里错了。

根本问题就出在,一旦代码复杂,人脑想要在 lifetime 和 synchronization 两个问题上想清楚不出错是不可能的,且不说你不可能通读所有代码并且不会想错任何东西,就说多人合作时大家各写各的改着改着你没动的代码就崩了。为了写出正确的代码,你只能 over defensive ,性能损耗随之而来。
2022-01-09 18:10:57 +08:00
回复了 zzzain46 创建的主题 问与答 clash x pro 开启增强模式后怎么在终端 ping 到正确的 ip
通过 fakeip 可以拿到连接的域名,这样解析就可以正确地发生在代理服务器上
@sgissb1 理论上来说资源占用是水平问题,水平不行的人写 rust 也不会快。

但是如果水平到达一定程度的话,其实就涉及到一个语言特性的问题。

有的时候,项目一旦复杂,或者想要设计的很灵活,那很多问题就希望能够进行抽象,但是不同语言的抽象成本差距非常大。

像 rust 很多时候几乎是 zerocost 的抽象,使得我们几乎都不需要任何 Box 就可以实现非常灵活的功能。这在 C ,go 里面几乎无法想象,基本是原理上的不可能。在 C++里面,由于模版本身的限制,使得大规模的使用模版的开发维护难度非常高,在实际工程中几乎不可能,只能在极少数性能敏感的库中使用。

另外很多功能比如 Iterator ,使得一个自然设计的 API 在使用时就几乎不会产生不必要的性能损耗。这在其他语言中只是理论上可实现,可由于难度过大或者过于繁琐而没有任何人会去做。

这些都几乎没法通过开发者的水平来弥补。
2021-12-23 13:49:40 +08:00
回复了 cssk 创建的主题 电影 怎么没人讨论黑客帝国 4
@fishCatcher 第四部这样也是有剧情深度么……
2021-12-23 13:33:39 +08:00
回复了 cssk 创建的主题 电影 怎么没人讨论黑客帝国 4
烂的无法想象。

如果用一句话形容,就是格外接地气,坚决不耍帅。

打斗场景?随便找个地方就好。人物造型?反正衣服都穿着呢。剧情?我都不敢动脑思考。

最重要的特效?除了最后二十分钟的僵尸围城效果还算标准爆米花的及格水准之外,全片几乎没有任何有意义的特效了。虽然我还没懂为何我要在 matrix 里看僵尸围城。

为了能够让片子做到绝不耍帅,全片甚至没有一幕经典的偏绿调色!

浪费了两个多小时,甚至找不到一幕想要再看一遍。还不如回头把三部曲重看一遍。
非常严重的过度设计。



有人说这种东西需要组长决定,或者公司不是来让你学习的,反而不应该是考量因素。大家天天问怎么提升薪水,你天天就乖乖听组长分配的任务堆 CRUD ,其他不闻不问不学习,真的能加薪吗?

真正关键的是,你要解决什么问题,以及如何解决问题。

就你描述的情况本身,一个服务两个节点,看起来也不像是会有很大的增长的样子,那么就不存在 service mesh 的应用场景。也就是说,你没有解决任何问题,只是单纯的引入了一个新的(大)问题——设置管理维护 consul ,组长只是提醒你不要过度设计,也是有问题的,要是我就直接让你全撤了。你要意识到,你的实践一定是实践如何用 consul 解决问题,不是使用 consul ,你要用 consul 你自己搭个 k8s 就好了。

所以这样做就没有意义么,也不是。这就取决于你要解决什么问题。

你说你现在做的是一个微服务,那就意味着公司里有很多其他的微服务。你说你在使用 consul ,那就意味着公司现在并没有任何的 service mesh 方案,考虑到 consul 和 k8s 绑定之紧,我甚至可以猜测整个公司的服务部署都是完全独立各组自行管理的。这显然是一个错误的方案,缺乏正确微服务架构的特性。那么,要不要提升,要不要改,要不要用 consul ,我觉得是很值得考虑的。

有人肯定又要说这种事情推不动,大家都只想堆 CRUD 。那我也没啥可说的,这个时候我只能反省为何我会加入这种公司了。
1 ... 3  4  5  6  7  8  9  10  11  12 ... 25  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2964 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 14:00 · PVG 22:00 · LAX 07:00 · JFK 10:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.