V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  CLMan  ›  全部回复第 7 页 / 共 8 页
回复总数  153
1  2  3  4  5  6  7  8  
2023-05-23 10:40:42 +08:00
回复了 JasonLaw 创建的主题 程序员 Python 的文档竟然没有 Poe Sage 说得明白🤐
Python 的文档是我遇到过的编程语言里面最难读的。

主要是因为没有明确的类型约束,很多参数没法第一时间看懂。其次是一个方法 /函数通常是多个功能的复合,通过参数来进行区分,导致需要大量的文本来解释不同参数时的功能。
2023-05-21 21:12:34 +08:00
回复了 Poluk 创建的主题 程序员 想寻求一点初学算法的建议
《算法导论》属于学院派大部头书,正规科班拿来做教材没啥问题,行业人员拿来做参考资料也没啥问题,拿来自学就是有问题,全是伪代码,而且根本读不完。

《算法 4 》整体还行,但是缺点也很明显,个人感觉还是厚了点,而且缺失一些内容,比如动态规划。

《数据结构与算法分析》研究生看的书籍,主要是讲分析算法复杂度的,不适合拿来自学。

其它算法书也读过,没列出来,就我读过的几本算法书籍来说,没有一本是适合自学的完美书籍,但硬要推荐一本的话,《算法 4 》应该还算勉强。

软件开发工程师级别(本科级别)的需要掌握的:

- 算法常识:复杂度相关概念,基本算法:排序、优先级、查找,基本数据结构:数组、队列、堆、树、图,等等
- 实际编码能力,刷题

算法常识就是看书或者看视频或者上课,选你最容易接受的,搭建一个基本的知识框架,不要钻牛角尖。

有了知识框架就开始刷题,再根据刷题去巩固、完善你的知识框架。
别想太多,纯粹是 JS 设计太烂而已。

null 与 0 之间转换本来就不符合逻辑,各种语言都给你来这种 feature ,而且还不保持一致,你如果是个多语言用户你咋办,死记硬背这些莫名其妙的无聊规则吗?
2023-05-17 01:30:36 +08:00
回复了 miv 创建的主题 程序员 我就不信卷到这个地步了,干活还要倒贴钱的。活久见。
@ivslyyy 我从来没说反感,也从来没有恶语相向。不管你是否承认,我是认为你存在一定的心理问题。

或许偶然的一次成功让你以为“免费”能让你在 v2 积累项目经验,但是作为已经被 GFW 屏蔽的 v2 ,作为以程序员为主的论坛,发布招聘贴的人或者他朋友 /同事基本都懂点技术,用简单的逻辑想想,“免费”并不能给你带来什么优势,能力才是最核心。

从你 github 来看,确实是没有什么亮点,让人不得不怀疑你为何还坚持下去,当然你或许可以解释说你根本没维护。

你提到“树先生”,说明你是大致理解这部电影的,也让我看到了你理性的一面。树先生和孔乙己有那么相像,都是被社会抛弃的人,都因为一些事情(哥哥被父亲打死、科举落榜)而导致心理产生问题,都以自己的方式维持着自己那脆弱的尊严(`读书人不算偷`、`刚才外面人多,哥不对`)。你也明白自己的现状,只是不太愿意清醒。

因为有人发帖讨论这件事情,我才说这么多,来表达我的看法。当然我的看法中很多可能和你真实情况背离,但也有可能旁观者清,当局者迷。

如果让你感觉不快,我不会再对此事情发表任何评价。
2023-05-16 23:26:51 +08:00
回复了 miv 创建的主题 程序员 我就不信卷到这个地步了,干活还要倒贴钱的。活久见。
@hauzerlee 你如果不分析他,不看他的言论,不看他的代码,那就脱离了具体问题,虚空讨论。

这贴里面很多回复脱离了具体事实,都是些臆想。

就事论事,他这不是经验的问题,不是学习方法的问题,不是盈利模式问题,不是为了爱好倒贴钱问题,不是是否有敬畏心和同理心的问题...

而是他心理存在问题,身在底层却活在自己的世界里。他虽然编码几年,但从 github 上的代码来说,代码经验基本为 0 ,逻辑抽象能力也为 0 。因为缺乏基础教育,他不具备自学的能力,没法走技术路线。同时,他不懂或者说不愿去懂人性,也缺乏口才,没法走管理、产品经理、甚至是骗子路线。

出生农村,没有学历,没有口才,也没有野心,或许因为成长中的一些事情造成了心理创伤而活在自己的世界里,每天吃着泡面的可怜人罢了。

大概是 V2EX 的孔乙己吧,自以为自己是个读书人(编码人),在每个招聘帖子下面重复着`免费做项目吗,贴钱也行`,在 v 友们的嘲笑中,靠着麻醉自我的`读书人不算偷`(`我也是有条件的`)...,维持着那所剩无几的尊严。
2023-05-16 22:16:44 +08:00
回复了 miv 创建的主题 程序员 我就不信卷到这个地步了,干活还要倒贴钱的。活久见。
这个人的心态明显是有问题的。搜索过滤原创的仓库:

https://github.com/dreamYiZ?language=&page=2&q=&sort=&tab=repositories&type=source

没有一个是超过 200 行代码,完整的项目,全是 helloworld 项目。写的代码还不如一个大一下的计算机专业 /软件专业本科生,培训班的人也至少能复制粘贴出一个像模像样的完整项目。

新人水平差不是问题,因为新人实践经验少,但是如果一个接触了这个行业多年的人,还是写着 helloworld 级别的代码,基本的抽象、逻辑能力也没有,那确实是不适合写代码。

也存在没有将心思花在编码上的人,但你总要点亮一些天赋,就是会吹会骗也是一种生存能力。

只能说是一个活在自己世界里面的老实人,业务能力为 0 ,也不懂人性。
2023-05-14 21:15:16 +08:00
回复了 lcj2class 创建的主题 程序员 在已经存在 C++/D/Rust 的情况下,为什么还要 Zig
直接抄官方文档算洗稿吗? https://ziglang.org/zh/learn/why_zig_rust_d_cpp/
@CLMan 是我记错了,anxios 是泛型 API ,默认是 any ,而 any 是不需要`as`转换的,只有`unknown`才需要。
你服务器返回的是运行时数据,是`any`类型的,你不用`as`转换,你还能干嘛?

服务器返回的数据不是你自己创建的数据,编译器是没法检查的。
2023-05-13 10:43:07 +08:00
回复了 uncleroot 创建的主题 云计算 腾讯云公共域名"*.myqcloud.com"出国移动全局墙了
@totoro52 https://ping.chinaz.com/npmjs.com ,是运营商墙,昨天红了一大半,今天还剩 1/3 红着。
用户量没达到一定规模时,后端属于能跑就行,主要还是交互和运营。
2023-05-12 23:31:17 +08:00
回复了 uncleroot 创建的主题 云计算 腾讯云公共域名"*.myqcloud.com"出国移动全局墙了
今天发现 npmjs.com 被墙了,我是真的服了,之前一直使用 github+npm 分发个人项目,瞬间残废了。
2023-05-12 16:59:11 +08:00
回复了 zhangfa0x11 创建的主题 程序员 招聘国内混不下去的
"国内混不下去的"是啥意思,牢里混的下去吗?
感谢分享,原来这一系列头信息有更专业的术语描述。
根据我的少量的扩展开发经验,扩展提供的 API ,无论是内容脚本还是 worker ,都是受到浏览器安全策略限制的。

在 worker 进行 fetch 时,浏览器会使用 CORS 的方式来请求数据,我还没测试过设置 permissions 是否有效果。

至于内容脚本,似乎 cors 是不允许的(不太确定),只能访问同源的资源。

两者提供的 fetch/ajax api 都是受限的,并不是 local api 那样随意,要想不受限,可能要使用服务端来进行请求转发。
2023-05-11 01:45:04 +08:00
回复了 takeshima 创建的主题 JavaScript 求解一个关于闭包的 JS 代码的问题
修正:比如 Java ,会要求被捕获的**变量**必须是 final 或者等价 final 的

补充:es5 没有块作用域,只有全局作用域和函数作用域,也就是:
```
const fn1 = () => {
let i = 0;
for (; i < 10; i++) {
var j = i;// 使用 var 定义的 J 是函数作用域
setTimeout(() => console.log(j))
}
}

fn1()//9 9 9 9 ...
```
当然现在都是用`let`了,这些过时的知识没有太多了解的必要,我也忘得差不多了。
2023-05-11 01:29:00 +08:00
回复了 takeshima 创建的主题 JavaScript 求解一个关于闭包的 JS 代码的问题
第二种是任何语言中都可能会出现,都要避免的情况。闭包捕获了外部变量`i`,输出的结果取决执行时,`i`的即时值。避免的办法是创建一个块作用域的复制值,但是存在心智负担。

JavaScript 采用单线程模型,因为循环中没有中断当前执行流的逻辑,因此所有 timeout 处理逻辑只有等循环结束后才能执行,此时 i 的值为 10 ,所以输出`10`共 10 次。

严谨的语言会对这种情况进行语法限制,避免不经意间写出 bug 。比如 Java ,会要求被捕获的值必须是 final 或者等价 final 的:
```java
for (int i = 0; i < 10; i++) {
int num = i;// 这里使用一个等价 final 的块作用域变量
new Thread(() -> System.out.println(num)).start(); // 0 9 8 7 5 3 4 2 6 1
}
```

需要刻意的使用容器,比如数组,来实现第二种的效果,Java 因为是多线程语言,子线程与主线程是并发执行,输出结果不全是`10`:
```java
final int[] ref = {0};
for (int i = 0; i < 10; i++) {
new Thread(() -> System.out.println(ref[0])).start();// 3 4 4 3 8 6 10 10 10 10
ref[0]++;
}
```

JavaScript 是一门存在许多设计缺陷的语言,es6 进行了许多修补。第一种就是 es6 对第二种情况容易产生 BUG 的修补,它的思路与 Java 是不同的:`而在使用 let 声明迭代变量时,JavaScript 引擎在后台会为每个迭代循环声明一个新的迭代变量`,因此 fn1 里面的`setTimeout()`每次捕获的变量的值都是循环时的值。

JavaScript 采用单线程执行模型,`JavaScript 维护了一个任务队列。其中的任务会按照添加到队列的先后顺序执行`。`setTimeout()`省略`delay`表示立即提交到任务队列,因为顺序提交,因此顺序输出。

可以看看《 JavaScript 程序高级程序设计》《 understanding es6 》。我忘得差不多了,也是看到这个问题才去看书回忆起这些细节。

写了一个第二种存在中断循环的版本,看不懂也没啥关系:
```
const fn2 = async () => {
let i = 0;
for (; i < 10; ) {
setTimeout(() => console.log(i))
i = await plusOne(i)
}
}

function plusOne(n){
return new Promise(function(resolve, reject) {
setTimeout(() => {
resolve(n+1)
},1)
})
}

fn2() // 0 1 2 3 4 5 6 7 8 9
```
1. 应该是后者吧,`fetch`是个 Promise API ,不会阻塞 main thread 。

2. 真要完全弄清楚的话,你始终在 JavaScript 层面思考是没用的,因为计算机软件是分层的,每层向上提供封装,特别是 io 、线程之类的,并没有完全屏蔽底层并提供完备抽象的封装。你要去研究浏览器实现,去研究 OS API 实现,去研究硬件实现,但没有相关知识储备的话,这个过程效率极低,量力而行。
Scala 是 JVM 上的语言,唯一应用领域是 Spark 框架(用于大数据处理)。和其它 JVM 之上的非 Java 语言一样,因为 JVM 的限制,因为 Java 资产的影响,应用领域受到很大限制,一般只有写 Java 的才会去用这些语言,用这些语言也仅仅是为了干一件事情( Kotlin 用来写 Android,Groovy 用来写 Gradle 脚本)。
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5121 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 07:40 · PVG 15:40 · LAX 00:40 · JFK 03:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.