本集简介
双语字幕
仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。
Ripsters点
Ripsters ponto
科技
tech.
科技点
Ponto tech.
科技播客及其他小圈子
O podcast de tecnologia e outras rodinhas.
嗨,hippicias点科技的听众们,你们最爱的播客又上线新一期啦!我是安德烈·达维,本期主持人,我们将聊聊无处不在的科技话题。最近我们录制了关于N8N的节目,你们猜幕后是谁在支撑?
Salve ouvintes do hippicias ponto tech está no ar mais episódio do seu podcast favorito eu sou o André Davi sou seu nesse episódio e vamos falar de tecnologia e de tecnologia que parece que está por todas as partes Recentemente a gente gravou episódio sobre n 8 n e quem está lá por trás?
Node
O Node.
当我们审视Node网络时,幕后又是谁?
E a gente olha pro Node rede quem está lá atrás?
Node
O Node.
而且这种现象似乎越来越普遍了。
E parece que isso se espalha cada vez mais.
无论你是粉丝还是批评者,了解这个世界正在发生什么对我们来说都非常重要,所以让我们看看今天谁来和我们聊天,今天和我一起的是Vini Neves,你还好吗?
Seja você é fã ou seja você é raiter é muito importante a gente se atualizar do que que tá acontecendo nesse mundo por isso vamos ver quem é a galera que tá aqui para bater esse papo e quem está aqui comigo hoje é ele Vini Neves tudo bem com você
Vini?
Vini?
我很好André,有一次我做过一个题为PHP vs Node的演讲。
Tudo bem André e 1 vez eu dei 1 palestra cujo título era php versus node.
我猜PHP赢了?不不,我不想讨论这个,因为今天和我们在一起的还有Mônica Caveiro,你好吗?
O php ganhou imagino não não vou entrar não vou entrar nesse mérito porque quem está aqui com a gente também é ela mônica caveiro tudo bem
大家好,我是Mone,非常感谢再次来到hippicias,说到PHP和Node我可是有私心的。
mone olá pessoal pô brigadas mais 1 vez está aqui no hippicias e eu sou suspeita para falar do PHP e Node então.
让我们看看这次谈话能走多远,因为我们今天的第四位成员是Ju Amoazey,Ju你还好吗?
Vamos ver até onde essa conversa vai, porque a nossa quarta componente hoje é ela, Ju Amoazey, tudo bem com você Ju?
我很好Dé,我不能说太多Node的坏话,因为我非常感激它,Node把我从前端工作中拯救出来,让我不用永远做前端。我最初是前端开发,当我发现可以逃离前端,不用再整天对齐方框和圆圈时,多亏了Node让我非常开心。
Tudo bem Dé, eu não posso falar muito do Node porque eu sou eu sou muito grata a ele, porque o node me salvou de ter que ser front end pra sempre, então eu comecei como front end né, quando eu descobri que eu podia sair da da frente, eu podia me livrar da vida de alinhar quadradinhos e bolinhas, eu fui muito feliz graças ao node.
杰克逊,这件事我可不能批评
Eu não posso eu não posso criticar 1 coisa dessa Jackson
有什么新鲜事就分享下吧
alguma curiosidade manda aí de noite com a
Ju你看这多棒啊,那我们就开始聊聊Node的成功之道吧,我觉得已经很清楚了。虽然我喜欢开玩笑说哪种语言更好,但我们都知道那纯属玩笑,因为最终目的是解决问题。今天这期我真正感兴趣的是Node现在有什么新东西,最新更新有哪些亮点,它发展到了什么程度——这个领域我不太熟悉,毕竟不是每天使用的语言。Vini既然你提出来了,我就把这个问题抛给你:Node世界最近有什么酷炫的新动态?
Ju olha aí beleza que legal pô então espera aí vamos começar a entender desse negócio que o nojo é sucesso acho que tá bem claro né Eu sempre gosto de brincar fazer essas graças aí tal linguagem é melhor que tá linguagem mas aí a gente sabe que é pura bobeira que é pura brincadeira porque no fim das contas você precisa resolver problema o que eu realmente estou interessado em saber nesse Episódio de hoje é o que tem de legal no node agora o que tem de fresquinho nas últimas atualizações para onde ele foi é universo que eu não estou muito imerso não é a linguagem que o piloto todo dia então Vini já que você deu a ideia eu vou jogar essa bomba no teu colo cara que que tem de legal acontecendo no mundo do node
首先我要说一个梦想成真的事——对TypeScript的支持,虽然还比较基础,它不会帮我们做类型检查,但已经能处理.ts文件了,这很棒。Node团队听取了社区声音...(快速插句TypeScript)我对它真是又爱又恨。新手学习时往往很抗拒,因为从JavaScript转过来会觉得类型系统很烦人。但实际开发中,尤其接手新项目时,类型系统帮助巨大。所以首推TypeScript支持这个亮点。
olha eu vou começar falando que eu todo tendo sonho sendo realizado que é o suporte é Type script né ainda rudimentar porque ele não está fazendo Type check in pra gente mas ele já consegue lidar com o arquivo ponto t s então assim eu acho isso muito legal porque a galera do node ouvindo a comunidade né porque assim abrindo parênteses muito rápido sobre o TypeScript eu posso dizer que ele é 1 relação de amor e ódio né normalmente a galera começa aprender e odeia e quer fazer n em qualquer lugar porque tá vendo do JavaScript JavaScript não tem Type né não tem Type checking não tem força não tem nada e aí o pessoal meio que fica brigando ali com Type script porque a pessoa tende a querer escrever JavaScript no arquivo ponto TS e vem ali pouco de briga então fechou parênteses mas na prática isso ajuda muito a gente que está desenvolvendo Principalmente quando a gente chega num projeto novo ou projeto que a gente não tem muito conhecimento então ter essa tipo aí ajuda demais então acho que de cara eu vou jogar isso daí suporte a TypeScript.
Moni和Ju也是TypeScript粉丝吧?你们觉得这个新特性怎么样?还是说你们根本无所谓,继续开心用JavaScript?
Moni e Ju são fãs de TypeScript também gostaram dessa chegada como que foi pra vocês ou nem mudou o olhar e falaram pô não estou nem aí, eu vou no meu JavaScript mesmo que eu estou feliz.
不不,后端开发根本离不开TypeScript。我和它的爱恨情仇在于——它实在太有用了。
Não não só para o backend, o backend não sobrevive sem o Typescript e a minha relação de amor e ódio com Typescript é que, ele é muito útil.
Vini说的情况确实存在:刚开始你会抱怨'天啊这些红色错误提示,为什么这个方法要接收这个那个参数'
Realmente isso que o Vini falou acontece, na hora que você começa você fala, gente, ah eu não quero isso, tudo aparece vermelho embaixo das coisas, eu não entendo o porquê que ele diz que esse método precisa receber não sei o que lá.
但等你理解后就会发现太棒了,尤其当项目有很多集成接口、模块化代码时——你再也不用记住每个参数类型了,帮助真的很大。
Depois que você entende fica ótimo, especialmente pra trabalhar com, ah você tem muita integração, muita api, seu código está muito modularizado, você tem que, você não tem que ficar lembrando o que que recebe de lado pro outro, ajuda muito.
不过我个人认为,这原本应该是JavaScript需要内置的解决方案,TypeScript虽非最佳实现,但已是现有选择。
Porém, eu pessoalmente acho que era 1 solução que precisava ter no JavaScript mais que o Type script ele não é a melhor implementação mas é o que temos.
所以,我很高兴。
Então, fico feliz.
原生支持TypeScript曾是那些推崇新运行时的开发者(特别是node urban用户)的主要论点——他们说node urban已原生支持TypeScript无需编译更方便。但node毕竟是node,它已在市场站稳脚跟,拥有完整生态库。对于大型系统而言,不可能突然切换新技术,因此我认为这个改进非常棒。
Era, o suporte nativo ao TypeScript era 1 das coisas que a galera que defende alguns runtimes mais novos, especialmente o node urbano, eles defendiam pô node urbano, eles já têm TypeScript nativo, você não precisa compilar, é muito mais fácil, mas o node é o node né, ele já está consolidado no mercado, ele já tem bibliotecas, todas as bibliotecas e se você tem sistema muito grande você não vai trocar pra de repente pegar que apareceu agora, então eu achei ótimo, achei tops.
对我来说,虽然日常用TypeScript,但还得维护遗留的老旧系统不能抛弃。不过正如Ju所说,现在没这玩意儿真不行了。
Cara, no meu caso, o que eu acho legal assim, eu uso TypeScript no dia a dia, tem jeito apesar que também trabalho num aí da da massa, no legadão, não posso deixar ele de lado, mas cara, TypeScript é o que a Ju falou, não tem como, a gente não tem como viver mais no sem sem isso.
新版带来了很多实用功能,Vini提到的部分确实惊艳。虽然日常工作中补充内容不多,但特别是Netflix相关部分我认为是最重要的更新之一。
Cara, as novas versões trouxeram muitas coisas legais cara, essa parte que o Vini citou, foi incrível assim então, no meu dia a dia assim não tem muito mais de complementar e já acho que eles já falavam bastante coisa, mas essas coisas que vieram assim principalmente essa parte da Netflix eu acho que é 1 das partes mais importantes.
说到新特性,显然我准备了清单——首先是v8引擎更新。对于不熟悉node底层的人,node本质基于Chrome的V8引擎运行JavaScript。现在node同步更新V8后,我们能获得V8所有新功能。
E falando ainda das novidades tem mais coisas legais né óbvio que eu trouxe 1 listinha aqui que eu venho preparado né, então assim a primeira coisa que eu vou trazer aqui é o update da v 8, pra quem não sabe e nunca pôs a mão no node né o node basicamente ele rola em cima da V8 que é o motor né do Chrome para lidar com JavaScript então o node agora atualizou a V8 e aí a gente consegue ganhar tudo que tudo que foi implementado lá na v 8 vem pro Node.
Vini稍等,你提到开始兼容V8等特性——在本次更新前,问题是通过X方案解决的,现在实际获得了哪些收益?
Vini, pausa pouquinho que você falou de ele começar a aceitar v 8 e tudo mais, e que roda em cima dela, a minha pergunta é a seguinte, antes de essa implementação acontecer se resolvia os problemas de 1 forma x, o que que você ganhou?
你说能利用V8的优势,具体是哪些优势?
Você falou a gente consegue usar as vantagens da v 8, que vantagens são essas?
给Node带来了什么新东西?
Que que trouxe de novo pro node?
好问题,我觉得第一点是没有V8就没有Node,对吧?
Boa, assim, acho que o primeiro ponto é sem sem v 8 não tem node, né?
Node一直是运行在V8之上的。
O node roda em cima da v 8 sempre foi assim.
而V8就是Chrome的JavaScript引擎。
E o que que é v 8 é a engine de JavaScript do Chrome.
不过Node的版本更新频率没有Chrome那么快,所以总是稍微落后于当前运行环境。当Node升级时,它会引入V8中已实现的JavaScript特性,比如WebAssembly(愿上帝保佑我们)、正则表达式改进、16位性能优化等。虽然讨论WebAssembly和16位让我们看起来很专业,但核心在于:每当Node更新V8引擎时,Chrome的V8中所有JavaScript运行时相关功能很可能也会同步到Node。不仅如此,现在Node还原生支持WebSocket了——要我说这个功能早该有了。我们后端开发者终于不用再依赖第三方库来实现WebSocket,不用再`npm install socket.io`之类的了。我猜这波更新可能和AI热潮有关,毕竟现在很多人喜欢用WebSocket保持长连接,比如聊天机器人场景。
Só que o node não lança tantas versões quanto o Chrome lança o update de né então assim o node ele tá pouco sempre pouco para trás em relação ao que tá rodando hoje então quando o node faz o upgrade ele traz as fichas do JavaScript foram implementadas lá então por exemplo tem coisa lá de web assembli que Deus nos proteja tem umas melhorias lá de regex tem melhorias de performance com com a rei de 16 bits se eu não me engano então assim pensa que aqui está óbvio a gente está aqui escovando o bicho quando a gente começa a falar aqui de web assembly e 16 bits né então parece que a gente é muito inteligente mas a ideia que principal é quando o nude faz o update da V8 O que que a gente precisa saber tudo que o a V8 lá do Chrome trouxe em relação a Java script a runtime provavelmente vai vir para o nude também e não nesse e não para por aí né 1 outra parada também que veio agora para o node e é 1 coisa até que eu acho que ainda demorou muito que é o web socket nativo né a gente que trabalha no backend a gente sempre dependia de alguma livre para fazer o web socket então a gente fazer npm install alguma coisa socket IO enfim cada tem sua preferida e agora a gente tem o WebSocket nativo muito provavelmente meio que assim aí é que sou eu dando palpite baseado em vozes da minha cabeça mas muito provavelmente por conta dessa onda de IA porque tem gente que prefere usar o WebSocket pra abrir e deixar canal aberto ali por exemplo se você quebra chat com 1 LN tem gente que prefere o WebSocket pra fazer isso por n motivos então eu acho que isso pode ter sido meio que infforce pra não ficar pra trás nessa direção aí.
说真的,光是不再依赖第三方库这一点就已经是巨大优势了,你们同意吧?
Pô, e vamos combinar que acho que a mani agiu concordam você parar de depender de outras bibliotecas e outras ferramentas por si só já é 1 baita vantagem né?
有些语言确实以海量库闻名,但原生支持永远更香对吧?
Porque a gente tem linguagens que são poderosas e conhecidas por terem monte de biblioteca disponível sim, mas o nativo sempre vale mais a pena né?
没错。
Exato.
如果我们要考虑依赖库的问题,我觉得今年Axios就爆出了一个离谱的安全漏洞,它可是JavaScript中最常用的请求处理库之一。
Se a gente for pensar em depender de bibliotecas eu acho que não sei, foi esse ano talvez teve 1 falha de segurança bizarra no Axios, que era 1 das bibliotecas de manejar requisição né, mais usados no JavaScript.
我早就说过,大家其实没必要再用Axios了。正如Vini提到的原生库问题,Node曾经很长时间都没有原生库来做这件事,几乎所有人都在用Axios。
E eu falava faz tempo, gente não precisa mais usar o Axios, você já não precisa porque o Node, o Node ele não tinha, ele isso que o Vini falou de você ter 1 biblioteca nativa, o Node passou muito tempo sem ter 1 biblioteca nativa pra fazer isso, quase todo mundo usava o Access.
但其实它早就支持原生功能了。每次看到新代码还在用Axios,我都会说:'伙计们,咱们把这库去掉吧,既然Node已经自带了——除非是特别特殊的需求,说实话我都想不起来还有什么场景必须用它——直接用JavaScript的fetch API不好吗?'
Mas já faz bastante tempo que ele tem, eu sempre falo quando eu via código novo usando o Access eu falava, gente, vamos tirar 1 biblioteca aqui olha, já tendo o Node, a não ser que seja 1 coisa muito específica aqui, sei lá, nem lembro mais que seria os casos, usa o fetch, usa a fetch API do JavaScript mesmo, tá?
这就是每当我看到别人代码里用Axios时,我个人的'圣战'。
Era essa minha cruzada pessoal quando eu via o Access na na nos códigos das outras pessoas.
说到底,那些'但这库用的人多'、'但这库维护得好'之类的理由都站不住脚。
E aí ele, enfim, não tem muito isso, ah mas isso é muito usado, ah mas a biblioteca é muito mantida, não tem muito isso.
如果你项目里用了外部库,你就得对它负责。
Se você está com 1 biblioteca externa no seu projeto você tem que ser responsável por ela.
这时候问题就开始变得棘手了,没得商量。
E aí aí a coisa começa a pegar, não tem jeito.
Ju我查了下,你说'早就支持'——好像是22版本开始支持Fetch API的?从那之后大家就可以逐步弃用了。话说现在Node是25版本了吧?
Eu vim buscar aqui Ju, que você falou que faz tempo, parece que foi na versão 22 que começou a ter esse suporte a Fat API, e a partir disso a galera já pode começar a deixar de lado, a gente está o que na versão 25 agora do do do node?
这么说吧,已经有一段时间了,对吧?
Então assim, já tem tempo né que está andando.
是的,稳定版本总是...我想最新的稳定版是24,但实际最新的是25对吧。
É, as as versões estáveis elas são sempre para então acho que a última estável é a 24, mas a a última mesmo é a 25 né.
所以如果你需要长期支持,那就选择偶数版本。
Então se você quiser longo termo de suporte aí são as versões pares.
有件事你们没提到,我觉得很棒的是,我们已经有内置测试工具了,就是node test对吧。
Tem 1 coisa que vocês não citaram que eu acho que é bem legal tipo, também já tem tempo que a gente tem o teste huner interno né, tem o node teste né.
其中有些部分也经历了改动,subtest模块目前...如果我没记错的话还在等待整合,这会大大改变和改善单元测试以及集成测试的部分。
E teve algumas coisas que teve de mudança neles também a parte subteste está está, se eu não me engano está aguardando dentro dele então tipo, isso vai mudar muito, e melhorar essa parte de fazer os testes unitários né os testes de integração.
所以我觉得这个功能也是在24版本引入的,如果我没记错的话。
Então eu acho que isso isso é 1 coisa que veio na 24 também se não me engano.
卧槽。
Caralho.
所以说测试这块真的有很多很棒的改进。
Então assim tem muita coisa legal assim principalmente com essa parte teste.
就是Ju刚才说的那个。
É o que a Ju estava falando.
伙计,我们一直在尝试减少外部依赖,增加很多内部功能,这让语言本身进步很大,而且主要带来了很多性能提升。
Cara a gente vai ter tentando tirar a dependência de externas e colocando muita coisa interna, então isso está melhorando bastante a linguagem, e está trazendo muita performance também principalmente.
我们聊了很多有趣的话题,再次声明各位,我不是Node领域的,所以可能听众会觉得'安德烈,这问题太基础了吧,你怎么问这个?'
A gente está falando bastante diversão e de novo gente, eu não sou do mundo node, então talvez seja 1 pergunta que os ouvintes falem pô André, que pergunta óbvia, o que que você foi perguntar isso?
但你们Node圈的人会有这种版本更新的竞赛吗?还是说会担心'先别更新,万一全崩了'——能看出来我是Java出身的吧,我们总得担心这个,现在还有人用Java 6呢。
Mas vocês que estão no mundo node tem essa corrida pela atualização da versão ou tem aquela preocupação em não vai atualizar ainda porque vai quebrar tudo dá para perceber que eu vim do Java que a gente tinha essa preocupação sempre, tem cara rodando no Java 6 até hoje aí.
我现在就是做Java的,目前工作中有BFF层是用TypeScript写的,但服务层还是Java,所以深有体会。
Eu sou 1 pessoa que trabalha com Java hoje em dia e com, então hoje eu tenho os BF, onde eu trabalho hoje tem os BFFs tal, que em TypeScript, mas os serviços são em Java, então sei bem como é.
我不确定这是不是竞赛,但最近我们确实特别强调要关注更新,主要是出于安全补丁的考虑。
Eu não sei muito bem se é 1 corrida, mas a gente, especialmente nos últimos tempos, eu tenho sempre ficado e pedido para as pessoas ficarem de olho nas atualizações, mas por causa de atualizações de segurança.
这话我甚至对那些不更新手机的人也说。
Então eu falo isso inclusive para as pessoas que não atualizam seus celulares.
请各位及时更新手机系统。
Atualizem seus celulares, por favor.
安全更新
Atualizações de segurança.
这没什么办法,必须时刻关注重大变更
E não tem muito jeito, tem que olhar sempre Breaking changes.
JavaScript在这方面非常容错,这是由语言特性决定的
O JavaScript ele é muito tolerante à falha nesse sentido, por causa da natureza da linguagem.
据我所知,Node也是如此。如果你们遇到过Node的重大问题,比如Python那种情况,可以提醒我
E que eu me lembre, o Node ele também segue isso, se vocês tiverem algum caso de grave no Node exemplo do, por exemplo, o que aconteceu com o com o Python, aí vocês podem me lembrar.
但通常不会出问题,除非你使用层层嵌套的依赖,陷入依赖地狱,或者依赖库本身有更新问题。如果用维护良好的库,一般不会出问题,通常建议尽可能使用最新推荐版本
Mas não costuma, a não ser que você esteja usando dependências de dependências de dependências naquele inferno que vai juntando 1 coisa dentro da outra, e tenha problemas de atualização nas dependências ou dependências dependências, se você tiver usando bibliotecas mais bem mantidas tal, não costuma ter problema em, costuma ser realmente o que é mais atualizado na, é atualizado não, o que é mais indicado na medida do possível né?
你不必急着从24版升级到25版,但也不能一直停留在6版
Você não precisa sair correndo porque você está na 24 mudou pra 25, mas, sei lá, você também não pode ficar na 6.
值得一提的是,它总是支持当前版本到n-2版本
É e e vale vale a gente falar que o ele dá sempre suporte à versão n até a n menos 2.
我这么说是什么意思呢?
O que que eu quero dizer com isso?
现在LTS版本(长期支持版本)——对于不了解的人来说,这不是Node特有的概念,而是通用的技术方向。LTS意味着如果有人发现问题,会有专门的团队负责更新修复。所以如果今天出现安全漏洞,而你正在运行20版本(当前最旧的LTS版本),你仍会获得支持。
Hoje a a LTS né que né que a LTS para quem não sabe isso não é coisa do node aí direcionamento no geral a LTS de long term suporte o que que isso quer dizer que se alguém achar algum problema vai lá ter algum time disponível para atualizar e corrigir então saiu alguma possível falha de segurança você está rodando hoje o na versão, na data do lançamento, o último, mais o LTS é o mais antigo é o 20, então se você está rodando a versão 20, hoje você vai ter suporte.
当26版本发布时,20版本就会淘汰,保留22、24、26版本;28版本发布时则保留24、26、28版本——始终遵循'当前版本减二'的策略。关于更新策略,这因企业而异:有些公司默认采用次新LTS版本,因为它比最新版更稳定成熟,经历了更多错误修复,同时仍受支持。
Quando sair a 26, aí a 20 k e fica 22 24 26 quando saía 28 24 26 28 então tenha sempre esse menos 2 e a estratégia né de você se manter atualizado eu acho que isso Varia muito de empresa para empresa de com crítico é o projeto porque por exemplo eu já trabalhei em empresas que AA0 padrão era a lts menos porque ela tá mais tempo estável do que a pessoa mais recente né então ela já está mais conhecida, mais estável, já já passou por por monte de bugfixes e tudo mais, e ainda mantém suporte.
而选择最新版本时,可能会有人发现零日漏洞,或者版本本身发布时就携带漏洞,这时你就会暴露在风险中。
Quando você vem pra mais recente, pode ser que alguém descubra 1 vulnerabilidade ou ela sai com 1 vulnerabilidade lá no dia 0 e aí você vai estar exposto.
因此策略选择取决于项目关键性。显然这是个'视情况而定'的问题——我认为每种情况都有对应的策略。
Então tem estratégias de estratégia depende muito se o seu daqui de transporte pra internet, então assim, é óbvio, vou dar a cartada do depende aqui, eu acho que tem estratégia pra pra todo tipo.
当Ju提到时,我确实不记得Node最近发生过什么严重漏洞。前端和后端都遇到过依赖地狱——有时你用的库更新了,但嵌套依赖无法在新版Node运行。想象你四年前用当时最新Node做的项目:
Agora quando a Ju falou eu não me lembro de verdade qual foi a última violenta que teve no node eu não sei se foi porque eu não passei o que o que eu já vi eu já sofri muito com node e é isso tanto no como no front o que a Gi falou dependência de dependência às vezes tem lá e você está usando 1 biblioteca a biblioteca até recebe algum update ali é mas a dependência da dependência não funciona nas versões mais recentes do node você quer ver 1 parada que acontece Pensa que você tem projeto que você fez há 4 anos atrás, aí você estava usando o node mais recente da época.
现在用新版Node运行就可能失败,因为依赖库不兼容。这时只能降级处理。代码层面的升级倒不复杂,但依赖问题确实让人头疼——就像Access数据库迁移,每个依赖选择都是妥协。特别是当依赖没做好封装时,后期移除简直要命。
Pode acontecer de você querer rodar ele hoje com o node de hoje e não vai funcionar porque as bibliotecas não não suporta e tudo mais, aí você vai ter que fazer ali downgrade ver o que você vai querer fazer mas assim é nível de de do tipo de ser caótico para fazer o update no no questão de código eu não me lembro de ter passado por nada que tenha sido muito complicado de já passei por perrengue sim com as dependências, porque aí aquela parada né, ajuda trouxe aqui do Access né, mas cada cada escolha que você faz 1 renúncia, quando você coloca 1 dependência no seu projeto, ainda mais se se você se aquilo não está bem encapsulado e tudo mais, pra tirar depois meu amigo é é só filho.
我突然想起OpenSSL有次更新导致安全问题——密钥长度缩短引发连锁故障。还有从22到24版本时移除二进制文件,也让很多人中招。
1 coisa que eu lembrei de não sei se foi tipo de mas eu lembro que teve lance de 1 atualização do Open SSL que quebrou que tipo elevou algumas coisas de segurança e quebrou monte de coisa monte de lugar porque ele as chaves ficaram menores aí quebrou alguma coisa eu lembro que teve 1 coisa dessa, e também teve 1 parte de binário se eu não me engano foi do 22 pro 24, que que também foi removido e também teve muita gente que teve problema com isso.
具体细节记不清了,但确实发生过这类事件。
Eu não estou lembrando detalhes assim agora mas eu lembro que teve alguma coisa desse tipo.
但你曾经担任过混乱骑士的角色,Moitê已经向我们介绍过,我要坦白告诉你们,我在这里查阅了一份变更列表,其中有一项让我非常好奇,就是web storage默认被启用,它具体是做什么的?之前是怎样的?为什么这是个好改动?
Mas você já serviu como o cavaleiro do caos já, a Moitê já trouxe pra gente, eu eu vou confessar pra vocês que eu tinha pesquisado aqui 1 lista de mudanças e eu fiquei muito curioso com 1 que está aqui que é o web storage ser habilitado por padrão, o que que ele faz como era antes e por que que é bom isso?
node中的这个web storage到底是什么?
O que que é esse web storage dentro do node?
当这个功能出现时,为什么有人应该对这个新特性感兴趣?
Por que que alguém deveria se interessar por essa novidade quando passou a existir dentro de 1 função?
你说的是App Studioge的Locas Tools封面下的Session Storage对吧?
O que você está falando da do do App Studioge é do da capa de Locas Tools do Sessão Storage, não é isso?
它改变了一些部分,现在可以说是在一个更...你知道的环境中运行
Que ele mudou algumas partes que ele estava fazendo mais, digamos assim num ambiente mais sabe?
所以它在这方面做了一些改动
Então ele teve algumas mudanças nesse ponto.
是的,000这个概念正是为那些...现在正握着我的手的人准备的,我们在浏览器里有0E0
É, 000 é a ideia justamente pra quem vem do e está aqui segurando a minha mão, a gente tem lá 0E0 no navegador.
简而言之,node中的web历史就是这样的。想象一下如果我们需要做持久化或会话管理,我认为有非常特定的使用场景。比如在rochip架构中,如果我们遵循所有约束条件就没有例外,因为它是无状态的,每个请求应该是独立的,我不想保留前一个请求的任何信息对吧?
A grosso modo web história de no node é exatamente isso então imagina que era se a gente precisa fazer 1 persistência fazer 1 sessão assim eu acho que tem casos de uso muito específico porque se a gente fala numa rochip aí por exemplo e E aí se a gente tá seguindo todas as constrentes dela não existe exceção né porque é 1 resh Up statimess então cada requisição deveria ser independente e eu não quero guardar alguma coisa da requisição anterior para né?
所以如果我遵循Rash Apia标准,想给我的后端颁发Rash Apia认证徽章,我们目前还做不到这一点。
Então se eu estou seguindo 1 Rash Apia e eu quero dar o crachá de Rash Apia pro meu backend a gente não tem isso.
因此这在某些场景下可能有用,但Node的理念不仅是教学工具,其URL标准原本与前端不同,现在则更趋一致——他们想实现前后端JavaScript代码的统一,让人们能更平滑地跨领域迁移,而不是产生剧烈断层,大致就是这个方向。
Então isso às vezes é útil em outros cenários, mas a ideia do node não só com com a Locaustoly de ensino, com histórias em si, tem padrão de URL que era diferente agora tá mais parecido com defronte também a ideia o que eles estão querendo fazer é deixar homogêneo o JavaScript que a gente escreve no frontend para o backend pra justamente as pessoas poderem aqui ficar migrando de lado pro outro sem ser 1 coisa tipo muito abrupta, né então é é é bem por aí.
这个趋势...Node是在2009年诞生的吧?
É esse movimento, o node a ele surgiu em 2009?
记不太清了,第一版应该是2009年。
Não me lembro, acho que é 2009 a primeira versão.
嗯,2015年是React,2009年是Node。
É, 2015 acho que é react, 2009 node.
当时Node实现的许多功能与浏览器端差异很大,包括同步处理机制(Sync/Sinq这些)的工作方式。
Foram implementadas as várias funcionalidades no Node que eram muito diferentes na época, da forma como elas, como funcionava no Browser, inclusive a forma de se trabalhar a Sinq, Sinq e a Sinq né?
说实话这简直是搬石头砸自己脚,后来Node不得不持续改进优化,逐步消除差异,不断向浏览器标准靠拢。
E, putz, isso foi tiro no pé eu acho, porque depois o Node teve que ficar implementando melhoria, implementando melhoria pra ir tirando e deixando mais próximo, deixando mais próximo, deixando mais próximo.
因为这曾是大量bug和头疼问题的根源——浏览器有既定标准,Node却另搞一套,真是要命。
Porque era fonte de de muito bug e fonte de muita dor de cabeça, você tem padrão, quero padrão que era usado no navegador, aí veio o node, ah o node faz diferente, putz.
所以从浏览器转过来的你,想用这套东西却用不了,必须按Node的方式学,因为Node没有浏览器那些功能,有些东西确实没意义,比如窗口事件在Node里就没意义。
E aí você que vem do navegador, você quer usar o negócio, você não pode, tem que aprender a usar do jeito do Node, porque o Node não tem isso, o navegador, algumas coisas realmente não faz sentido então por exemplo eventos de janela e Browser não faz sentido tendo Node.
反过来也一样适用。
É e o contrário também se aplica.
但使用方式上,我觉得Node维护团队还在修复很多差异较大的地方,不过出于一些或许显而易见的原因和社区抱怨,他们正让两者越来越相似。
Mas a forma como as coisas são usadas, ele acho que ainda o pessoal do de manutenção do Node ainda tá arrumando muita coisa que era mais diferente mas por motivos talvez meio óbvios e reclamação da comunidade estão deixando cada vez mais iguais.
因为JavaScript有趣的一点是ECMA这个机构——虽然它并不真正掌控JavaScript,毕竟是个联盟对吧?
Porque 1 coisa que é interessante do JavaScript que o ECMA né, que é a instituição lá que manda no já, não manda no JavaScript porque é consórcio né?
它只规定必须包含什么功能。
Só especifica o que tem que ter.
所以必须包含某些功能比如某个特定函数,必须按某种方式实现,但具体怎么实现它不管。
Então tem que ter sorte, tem que ter 1 função não sei o que lá, o tem que ser desse jeito, mas não implementa nada.
等标准发布后,所有厂商——我们说的厂商比如Firefox等等——都得争先恐后按自己的方式实现。
Quem implementa, então quando solta a versão, todos os vendedores no caso sei lá que a gente chama de venda né, é é é venda, é Firefox, etcétera etcétera, todo mundo tem que atacar vácuo pra implementar do seu jeito.
Node也是,Ban也是,Danon也是,都这样。
E o Node também, o Ban também e o Danon também, né também.
这就是JavaScript的一个特点,它没有一个中央权威机构来规定功能的具体实现方式。
Então esse é 1 particularidade do JavaScript, a forma como ele ele não tem 1 autoridade central que diz de que forma as coisas estão implementadas.
每个地方都使用自己的引擎来实现,对吧?
Cada lugar implementa como que é usando o seu próprio motor, né?
比如Chrome和Node用的是V8引擎,对吧?
O sua própria, no caso do Chrome e do Note é a V 8, né?
这个Vini之前提到过。
Que aí o Vini comentou mais cedo.
我想提的另一点是,Node有个很酷的功能虽然还处于实验阶段,但从22版本开始就稳定了——权限模型。以前处理权限很麻烦,我说的不是用户访问权限,而是脚本执行权限:比如这个脚本能否访问磁盘、能否使用WebAssembly、能否访问子进程等等。
1 outra parada que eu quero puxar aqui que assim a galera que fica tem tem 1 1 mística né né e 1 1 forma do nude que a galera me já às vezes torce o nariz e tal fala já me escrito no backend e tal mas tem 1 ficha muito legal que que tá vindo ela ainda tá como experimentar Mas ela já tá estável eu acho que é desde a 22 que tem que é o modelo de permissões porque por exemplo tinha 1 parada que era difícil você cuidar das permissões e quando eu digo permissão na permissão de acesso do usuário do tipo será que esse usuário pode fazer essa ação não disse eu tô falando mas eu tô falando de esse script que eu estou executando pode ter acesso ao disco ele pode ter acesso a web assembly ele pode ter acesso aos processos da filhos né, o Charlie lá.
这个权限系统虽然还是实验性的,但非常有意思。现在你可以在package.json里通过node scripts指定某个脚本运行时只有读取磁盘权限而没有写入权限。
Então assim, esse permissionamento ainda tem 1 de experimental, mas é muito interessante porque agora pensa lá no package JSON e no node script, você coloca, você consegue dizer mais lá e dizer que aquele processo, aquele script quando executar, ele não vai ter por exemplo permissão de escrever no disco, ele pode ler mas ele não pode descrever.
对吧?
Né?
显然这能延伸出很多应用,但最重要的是它让开发者越来越意识到编写安全软件的重要性——要小心别留后门,否则可能会遭遇勒索软件之类的攻击。
E aí e óbvio que tem muitas isso desdobra muito, mas é 1 parada muito legal porque eu acho que mais e mais né as pessoas estão ficando conscientes da importância de se escrever software seguro né no sentido de tomar cuidado pra não deixar 1 parada aberta e aí vem ransomware 1 parada da vida aí né e e enfim.
所以这类功能能帮助我们预防这类问题,比如这个脚本将没有磁盘写入权限,如果它因某种原因被感染或含有恶意代码,尝试写入磁盘时会抛出异常,因为我们没给它权限,这样我们就能进行更精细的安全控制,对吧?毕竟Node的范式本就不同,我们说的是事件驱动的后端,基于事件循环机制,而有些人可能还在考虑线程之类的问题。
Então esse tipo de coisa ajuda a gente se prevenir disso do tipo beleza esse script aqui ele não vai ter acesso de escrita no disco e isso se algum por algum motivo ele for infectado ou alguma coisa maliciosa ele vai tentar escrever no disco lá vai tomar 1 exceção porque ele não tem permissão então a gente começa a ter ajuste fino muito mais interessante né porque assim o paradigma do node já é diferente porque a gente está falando de de backend orientado ao evento né porque é 20 loop que fim né a galera tá a galera de às vezes está pensando em trade e tudo mais.
Node的运行方式确实有些不同,但它正从其他语言中借鉴许多特性,这很常见,并融入自身体系。
E aí o node ele funciona numa bocadinho diferente, mas ele está pegando as coisas de de outras linguagens, acho que isso é muito comum e trazendo pra ele.
所以也值得聊聊Node的权限模式。
Então vale também falar do do permishow modo do do node.
除了权限控制,还有那个Allownet用来管理网络访问权限,对吧?
Além desse permission também tem aquele do Allownet que que pra controlar, pra ter o controle de rede, né?
这个新增的权限功能确实很实用。
Então tem também essa permissão que veio também que é muito legal.
Helena,Allownet是用来指定可通信的后端白名单。比如我们的支付网关,你可以明确只允许访问特定支付网关。你可以灵活配置——开放全部互联网访问,或按域名/IP限制。核心是精确控制后端服务的通信对象,万一有恶意软件窃取令牌外传,你能通过白名单机制拦截, literally 限定后端只能与指定对象通信。
A Helena o Allownet é pra você dizer quais são os outros backendings que você pode fazer requisição então por exemplo é às vezes a gente tem o nosso backend a gente tem jeito de pagamento então a gente quer dizer que olha para esse jeito de o diretor de pagamento aqui você pode permitir acesso e aí você consegue brincar com isso do tipo permitir acesso inteiro pode fazer qualquer requisição para qualquer lugar na internet ou você fazer por domínio se consegue fazer por IP enfim tem várias restrições que você consegue colocar mas no sentido de o que com qual o outro end o seu backend pode falar e aí se entrar alguma coisa ali maliciosa alguma coisa ali então do tipo imagina que vai entrar aí software malicioso que está só a genifando pegando token e mandando para outro lugar por exemplo E aí você consegue controlar você tem ali a literalmente a lista de com quem o seu backend pode falar.
哇,你们引入的这些安全变更真是够细粒度啊,把软件安全的责任直接交给开发人员,而不只是运维层面。至少从你们展示的来看,这似乎是个持续强化的方向。
Pô, mas vocês estão trazendo várias mudanças bem granulares assim de segurança mesmo né, de deixar essa responsabilidade do software ser seguro na mão da pessoa que está ali desenvolvendo e não só na mão da infra e tudo mais, é pelo menos o que vocês trouxeram parece ser 1 constante isso.
确实,安全向来关键,但随着技术进步——我不想说‘技术进步’这个词太模糊——更准确说是算力提升客观上助推了入侵能力,现在安全变得极端重要。社区需求往往围绕安全展开,比如Node的改进,甚至TypeScript的兴起,在我看来部分源于从其他语言转来的开发者更愿举牌抗议,而非适应JavaScript本身的范式差异。
É, segurança, bom, sempre foi crítico, mas com o avanço eu não vou falar avanços as tecnologias de ar primeiro porque isso é muito difuso e às vezes a palavra o termo perde pouco sentido mas avanço da capacidade de processamento de 1 empurrada na digamos assim na capacidade de invasão né de quebrar a segurança de computadores então segurança sempre foi crítico mas agora tá bizarramente importante E as coisas que a comunidade pede, muitas vezes, são relacionadas à segurança, no caso do Node, muita coisa aconteceu no JavaScript, inclusive acho que a chegada do TypeScript também, por, na minha opinião, gente que veio pro Typescript vindo de outras linguagens, vinda de outros paradigmas, e que preferiu levantar plaquinha do que se acostumar aos paradigmas do próprio JavaScript, que eles são pouco diferentes.
特别是那些Java开发者,他们把TypeScript变成了Java和JavaScript的混合体,结果什么都不明确,什么都只实现了一半。
Especialmente aí a galera do Java né, que aí transformou o TypeScript em 1 espécie de Java misturado com com JavaScript onde nada é muito definido e tudo funciona pela metade.
好了,我说完了,但这就是现状。
Pronto, falei, mas é o que a gente tem.
不过说到底,安全问题是无法回避的,必须解决。
Mas, enfim, segurança não tem jeito, tem jeito.
我认为安全已经成为当今最重要的事项之一,而且未来在任何地方、任何产品、任何工作环境中都将是关键问题。
Saber que é acho que é 1 das coisas hoje, há tempinho já e daqui pra frente eu acho que vai ser 1 das coisas mais críticas em qualquer, qualquer lugar, qualquer produto que você tenha, qualquer lugar que você trabalhe.
所以如果你要运行后端JavaScript代码,同时还要控制我们前端使用的库。
Então se você tem que roda, cara, praticamente tudo que é JavaScript no backend e que também controla as bibliotecas que a gente usa no front né.
比如你需要用它来运行React,把你的React代码编译成JavaScript等等,这就变得更加关键了。
Então por exemplo, você precisa dele pra você rodar o react, compilar os seus reacts pra eles transformarem em JavaScript blábláblá, você, assim, isso fica mais crítico ainda.
因为00000的问题虽然是个外部库的问题,但这也不能保证Node内部不会出现漏洞,导致未来出现问题。
Porque o o lance do 00000 é 1 biblioteca externa, mas isso não garante também que 1 falha interna do Node não possa dar problema, 1 problema lá pra frente.
没错,这种共同承担的责任很重要。你需要掌握的不仅是手头工作的知识,还要了解相关领域的情况,这样才能真正理解可能被利用的漏洞点。我想轻松地问一下:你们最近用Node做过什么让自己感到骄傲的项目吗?就是那种让开发者感到自豪的成果,因为说到底我们是通过解决问题来让人开心的,但有些代码或策略确实会让我们自己感到骄傲。
Não, com certeza, e essa responsabilidade que a gente sempre traz compartilhada é importante você adquirir esses conhecimentos não só daquilo que está fazendo, não só como deve, mas também das outras áreas que tem a ver, que estão em volta ali pra você saber exatamente o que que vão explorar o que que é 1 vulnerabilidade o que que estão olhando agora eu queria brevemente momento meio lúdico porque eu estava conversando com aluno que eu encontrei no Next recentemente e eu falei pô cara eu tô mal feliz estou criativo estou usando muita coisa de n 8 n tal tô felizão aquela paixão o que que vocês já fizeram com o node não precisa dessas últimas versões que dá aquele orgulhinho assim sabe aquele orgulho dev aquele orgulho nerd aquele orgulho que você olha caraca, o ficou legal isso aqui, o que bacana esse projeto ficou bonitinho porque no final das contas a gente trabalha resolvendo o problema de alguém a pessoa vai ficar feliz que o problema dela foi resolvido mas tem códigos ou tem estratégias que a gente segue que deixam a gente orgulhoso.
Vini,你有什么让你特别心潮澎湃的项目吗?
Vini, você tem alguma aí que te deixa que deixou seu coração mais mais em festa?
除了安装了一个判断数字奇偶的库,
Olha, além de ter instalado 1 biblioteca que valira se número é par ou ímpar,
这就是我
Isso é que eu
正要说的,如果你觉得我在开玩笑,确实有epar和Stevem这些库,难以置信但确实存在。我记得有个教育管理项目,需要处理教师排课功能,确保早上班级的课程不会时间冲突。
ia falar, se você está achando que eu estou zoando existe epar e Stevem e tem também então assim exige biblioteca que faz isso por incrível que pareça mas assim tem 1 parada que aí quando eu puxo de memória eu trabalhei num projeto que ele era de gestão educacional e ele tinha 1 parada para que era do professor montando a grade estou pensando no começo do turma ele ela está numa turma de manhã a outra né não fica 1 aula marcada em cima da outra e tal.
我们当时用Socket IO做了个功能(那时还不支持Websocket),就像现在Trello和Miro那样能实时看到其他人的操作。
E aí a gente fez 1 parada, usando o Socket IO porque na época não tinha suporte a Websocket, que é 1 parada tipo que a gente tem hoje em tipo no Trello, no Miro, que você consegue ver o que outras pessoas estão fazendo ali.
当有人拖动小方块时,你能看到自己和其他人的操作,这个功能特别酷
E aí conforme alguém começava a arrastar quadradinho você via o que você estava fazendo você via das outras pessoas fazendo e tal então foi 1 parada muito legal
哇,这确实让人开心
oi isso aí dá 1 alegria
还有个抗压测试的项目:简单说我们发送消息时用户量很大,一旦发出所有人都会点击导致系统冲击
foi isso assim eu acho que esse é 1 das que eu me lembro bastante e teve 1 outra também que aí tinha a ver com aguentar pancada do tipo assim a gente teve que fazer que sem entrar muito detalhe imagina que a gente mandava e eram muitos usuários e aí quando esse era enviado todo mundo clicava nele e batia alguma coisa no.
所以我们不得不应对,要处理这么多需求并实现扩展,而且是季节性的——这里的季节性指的是某些特定时段会出现使用高峰,但这种高峰完全没有规律,可能早上也可能下午,因为是由那边的人发送通知触发的。然后所有人就都涌向应用查看,我们不得不设计缓存层等等来研究如何扩展。我记得在这个项目里我真正深入理解了note的生命周期,以便我能看清自己能做什么。因为我们讨论的流程中,我们有I 20 Lupe对吧?那些耳机底层的工作方式非常独特。于是我深入研究了在哪些环节可以操作、具体能做什么等等,这过程也很有意思。
Então a gente tinha que responder, dar conta de responder esse tanto de de tinha que escalar e era sazonal, num num num só sazonal no sentido assim em determinados momentos tinha esse pico de consumo mas isso não tinha padrão nenhum podia ser de manhã podia ser de tarde porque era orientado ali a pessoa lá mandar notificação E aí era todo mundo correndo pro aplicativo pra ver e aí a gente teve que trabalharia com camada de cast e tal e como que escalava entender aí eu me lembro que nesse projeto que eu fui a fundo mesmo entender o ciclo de vida do note para eu conseguir ver o que que eu dava para fazer porque a gente tá falando né que é processo só a gente tem o I 20 Lupe né as coisas ali por debaixo dos fones funcionam de 1 forma ali muito peculiar, e aí eu fui lá entender, ver aonde que dava pra fazer, o que que dava pra fazer e tal, também foi bem legal.
只是出于好奇,我查了下这个库——Iseven本周下载量就达179000次,而Ised有530000次。
Só 1 curiosidade, eu procurei aqui a biblioteca, a Iseven tem 179000 downloads só essa semana, e a Ised 530000.
天啊,我简直...
Gente, eu estou.
但回到问题本身,我不得不去查因为...
Mas voltando à pergunta, eu tive que procurar porque assim
不,这数据太惊人了,这数据简直让我疯狂。
Não, é dado maravilhoso, o dado pô, eu estou maluco com isso.
但为什么一个比另一个下载量多呢?
Mas por que que 1 tem mais download que a outra né?
得看看哪个是偶数哪个是奇数对吧?
Tem que ver qual que é a pá e qual que é a ímpar né?
不,因为大家就直接否定对吧?
Não, porque aí o pessoal só nega né?
然后比如下载一个并拒绝,看看是不是另一个。
Aí então tipo baixa 1 e nega pra saber se é o outro.
就是为了确认是不是这样,对吧?
Pra ver que é isso né?
Ju,你有没有什么让你印象深刻、值得铭记的项目?
Ju, você tem algum que marcou o coração aí que ficou pra história ou não?
有一个是很久以前我尝试学习Shell脚本时做的,当时我为了60个GitHub仓库抓狂,需要下载、安装、运行测试并查看测试结果。
Tem que eu fiz há muito tempo atrás quando eu tentei aprender Shell script e fiquei batendo cabeça com porque eu tinha 60 repositórios do GitHub, que eu precisava baixar, instalar, rodar os testes e ver os resultados dos testes.
于是我想干脆写个脚本帮我处理这些,比如自动访问GitHub之类的。
E aí eu pensei vou fazer script pra fazer isso pra mim né, bate lá no GitHub, não sei o quê.
就是那个老生常谈的故事:花更多时间写程序,而不是手动操作,对吧?
Aquela velha história de fazer, demorar mais fazendo o programa do Fazendo na Mão né?
没错。
Exato.
当时我说不行,我要坚持写完这个脚本,趁机好好学习——这才是正确做法,虽然那时候什么都不懂。
Aí eu falei não, vou fazer encher o script aproveitar pra aprender aprender encher o script aqui que é o mais indicado, não sei o que não sei o que lá, aí na época.
但当时我一直在那里绞尽脑汁,然后就想,你知道吗?
Só que aí eu fiquei lá batendo cabeça com o e pensei, quer saber?
我干脆用JavaScript来做这件事,毕竟这是我会的。
Eu vou fazer isso aqui em JavaScript mesmo que é o que eu sei fazer.
然后我就把项目跑起来了,用Node写的,它能自动扫描文件夹,安装项目,访问仓库,安装依赖,运行测试,全部通过命令行完成。这个小脚本是我当时独立完成的,天啊,真是——
E aí botei lá, o meu projetinho pra funcionar, fiz em Node lá ele já batia na pasta, já instalava os os projetos, batia nos repositórios, instalava, rodava o teste, tudo tudo via comando, scriptzinho que fazia e eu fiz sozinha na época eu fiz aqui assim, nossa, cara, que
兄弟,这太酷了。
Cara, isso é muito legal.
是啊,那时候...我这辈子从没写过脚本,这是第一个。
Era é, era era na época, não nunca tinha feito nenhum script na minha vida, foi o primeiro perfil.
我们正好抓住这个点聊聊,Ju。这很有趣,你在自我介绍里提到Node让你有机会从...(被打断)而且你们全程都在说Node最近的更新正朝着减少怪异感的方向发展,让功能差异变小。现在从技术现状来看,前端和后端在架构和实现方式上差异还很大吗?还是已经趋于统一了?
Vamos até pegar esse ponto Ju, porque é legal, você comentou na sua apresentação que o Node te deu a oportunidade de sair de pra, e vocês estão dizendo pra mim no papo todo, que o Node nas últimas atualizações ele tem encaminhado pra ficar menos esquisito assim, pra pessoa encontrar 1 coisa menos diferente de lado pro outro, Hoje em dia, analisando aqui como está agora o estado da arte, ainda é muito diferente o que a pessoa vai ver em termos de estruturas, em termos de como fazer no front e no back, ou já deu 1 equalizada legal?
我认为在统一模块系统方面解决了很多问题——就是模块的导入导出机制。Node原本的处理方式...(纠正自己)我想说的不是这个意思。Node的模块导入导出机制和浏览器环境不同,你学了一套完美的导入导出语法,但在Node里...呃,是另一套。
Eu acho que já resolveu muita coisa quando equiparou a o sistema de módulos, e de importe e esporte de módulos que no node era de jeito, eu eu falei assim que não não era assim que eu queria dizer, importação e exportação de módulos, que no node era diferente do de como trabalhar no navegador, então você vai lá aprende, impor esporte funcionava super bem, aí no node, hum, era diferente.
这不仅仅是写法差异,更关系到Node处理文件的方式本质不同。
E não era não é só diferença do jeito de escrever, isso difere da na forma como o node usa os arquivos.
这就是它存储导入导出引用的地方,而且Node访问模块的方式也不同,不仅仅是语法问题。
Então é o lugar onde ele guarda essas referências de importação e exportação, e também na forma como ele acessa os módulos do node era diferente, não era só sintaxe.
这带来了非常多非常多的问题。
E isso dava muito muito muito problema.
当Node决定停止这种做法时,保留了旧方式,但开始接受浏览器原生支持的方式——理论上这才是正确的(带引号的说法),问题依然存在,因为库也需要全面更新,至今仍有库因此出现问题。
Quando o node resolveu aqui parar, né, manteve né, o antigo, mas resolveu começar a aceitar o que era nativo do do navegador, que é teoricamente é o primeiro, é o certo entre muitas aspas, continuou dando problema, continua dando problema porque as bibliotecas precisavam atualizar tudo também, tem biblioteca dando problema até hoje por causa disso.
包括一个非常著名的库。
Inclusive 1 bem famosa.
但对我来说这个改变已经让情况改善了500%,还有实现了Fetch功能后确实大有改善,不过应该还有其他案例大家能想起来。
Mas pra mim depois que mudou isso aí já melhorou 500 por 100, isso e, implementando o o Fetch, nossa, já deu 1 bela melhorada, mas deve ter outros casos aí que o pessoal lembra.
总的来说Node正试图牵着开发者的手走,我们之前讨论过ESM的导入导出和CommonJS的区别。现在它变得非常'妈妈式',你可以在项目里混合使用两者,进行渐进式迁移。还能通过命令批量转换模块格式。另外现在原生支持watch标志实现热重载——以前我们依赖第三方库做这个,现在不用了。URL模块也统一了标准。整体来看Node已经非常稳定,而且它现在想和前端如此相似,以至于现在流行用前端框架写后端。
É, eu acho eu acho que o no geral ele está tentando pegar 00A pessoa desenvolvedora aí pela mão né é a gente já falou ali do do SM né que é o fazer o importe esporte e o Record que é o comum de s eu acho que se agora não agora o negócio tá tão sendo mãezona que você consegue hoje misturar os 2 no projeto assim né você consegue trabalhar com híbrido e fazer 1 migração gradual mas é o tipo de coisa também você consegue colocar lá no e rodar comando e ele troca para você tudo de para SMS ou viceversa ali tem 1 outra parada também que tá agora que tem suporte nativo é o a flag de watch né para assistir tipo você fazer o Hot Wheeload do que você tá codando antes de novo se depender de ter 1 libity a gente que usava no de monte a gente que usava não sei o quê para você ficar fazendo esse Hot Wheeload do tipo alterei a controle era ali agora ela vai dar que o baileta para trás no meio para frente e aí eu não quero ficar restartando o processo toda vez que isso acontece então a gente se dependia de 1 de 1 lib para isso agora também tem suporte lá nativo Então acho que assim no geral tem o URL pago também já falei que era como que se traduzir a o esquema de URL também tá igual então acho que assim acho que tá muito tá bem estável e eu acho que o nude tá querendo ficar tão parecido com com front end que agora que tá na moda agora fazer Framework the backend né
因为
porque
以前是Express,后来变成Express和Nash,接着是Fastify,然后又是什么什么框架。
antes era Express aí virou Express e Nash aí veio Fastify e aí veio e aí veio não sei o que.
所以我觉得现在想在后台创建一些框架的多样性,这样才能真正实现平等。
Então acho que agora estou querendo criar 1 pluralidade aí de framework no backend pra poder falar que está igual mesmo de verdade.
是啊,JavaScript的老故事就是每周都有新框架出现,但说来奇怪,我这辈子只用过3个。
É, a velha história do JavaScript é que sai framework a cada semana, mas por incrível que pareça eu na minha vida só usei 3.
不是
Não
因为他们出现得太快,而且都很优秀对吧我
é porque eles saem muito que eles são bons né Eu
我正想说这个,我正
ia falar isso, eu ia
想说这个,不过说实话有很多东西并不怎么样,但确实层出不穷,这点很常见。
falar isso, mas assim tem muita coisa aí que não é muito legal mas tipo sai muito, isso aí é bastante.
正是在这种流行趋势下,我觉得编程语言吸引了很多人,但我们需要更关注所选工具的质量。
E é nessa popularidade que acho que as linguagens elas ganham muita gente, mas onde a gente precisa ficar mais atento com qualidade daquilo que está sendo escolhido.
那么说到最后一点,现在的编程时代非常有趣,因为我们有越来越多借助LLM开发的代码,无论是Copilot还是直接生成请求。
E aí pra gente entrar nesse último ponto, momento de código hoje é momento muito interessante porque a gente tem cada vez mais código desenvolvido com auxílio de LLM, não importa se é copiloto, não importa se está pedindo pra gerar.
Node可能也会遇到其他语言面临的问题,如果你直接让LLM生成代码,那些版本间的细微差异就会显现出来,因为LLM是在另一个版本上训练的,你现在怎么看待这个问题?
O node talvez sofra com que outras linguagens sofrem que é, se você for só e pedir pra 1 LLM e me gera o código, essas pequenas diferenças de versão, elas acabam aparecendo porque a LLM foi treinada numa outra versão, e aí você não consegue, como hoje isso está?
LLM现在吐出的代码越来越混乱,维护起来真是费劲,还不如手动编写,最好只把它当作辅助工具,你们觉得Node和LN生成的代码配合起来怎么样?
As LLMs estão cuspindo mais código bagunçado e que trabalhão ter que dar manutenção nisso, era melhor ter feito na mão, é melhor usar só como piloto, como que vocês estão sentindo node ao lado dos códigos gerados aí por LN?
我最近经常使用Cursor,主要是因为我正在处理很多Java项目,它能帮我理解发生了什么。
Eu tenho usado bastante o cursor mas no momento porque eu estou mexendo em muito projeto Java, ele me ajuda a entender o que acontece.
我要说件事,不是发生在我身上,而是我在帮别人时阻止他犯傻,因为LLM有时由于训练版本不同,它其实不知道自己说的是什么,只是把东西拼凑起来。
Eu vou falar 1 coisa que aconteceu não comigo mas não quer que eu estava ajudando 1 outra pessoa e eu impedia a pessoa de fazer 1 bobagem, que é, a LLM por causa da justamente de às vezes ser treinado em 1 outra versão e a LLM não sabe o que ela está falando, ela vai juntando as coisas.
问题在于我们使用的Node库和包仓库,主要是NPM。
E problema é que a gente tem nos repositórios de bibliotecas e pacotes que o Node usa, o principal é o NPM.
NPM上会发生什么?
E o que acontece no NPM?
你有个很好用的库叫banana。
Você tem 1 biblioteca muito boa que você usa e ela chama banana.
然后有人在NPM上发布了个叫Banana(两个N)的库。
Aí alguém coloca no NPM 1 biblioteca chamada Banana com 2 N's.
这个库确实存在,但它不是你想要的库。
E essa biblioteca está lá, só que ela não é a biblioteca que você quer.
老兄,你只知道名字而已。
Pô meu, você só sabe o nome.
那么在我跟进的过程中发生了什么?
Então o que que aconteceu nesse nesse pé que eu estava acompanhando?
那个人当时在向Teo indy求助,不对,是向Windsurf求助,Windsurf正在帮忙阅读,哦好的明白了。
A pessoa estava lá pedindo pro Teo indy não, pro Windsurf, o Windsurf estava lá ajudando eu lendo, ah tá beleza.
有次Windsurf说:听着,把这个命令复制到终端执行来安装这个库。
E teve 1 hora que o Windsurf falou assim, olha, pega esse comando aqui e joga no seu terminal e executa pra ele instalar essa biblioteca.
当那人要复制时,我喊停了:别这么做,先去NPM官网确认你要的库是不是这个,结果发现不是。
E a pessoa foi copiar e quando eu falei para, não faz isso, vai lá no NPM, na página deles, confere se a biblioteca que você quer é essa mesma, e não era.
是另一个同名库。
Era 1 outra com o nome igual.
有时候一个带连字符另一个不带,而且这库根本没用,就是个恶作剧,但这样你就会在程序里安装随机垃圾。
Ou às vezes tem 1 tem hífen, outra não tem hífen, e cara, é 1 biblioteca que não fazia nada, era 1 bobagem, mas nessa você instala negócio aleatório no seu, na aleatório no seu, na no seu programa.
因为你只是复制粘贴,这样不行,你必须检查她给你的所有命令。
Porque aí você foi copiando e colando e não não dá pra fazer isso, você tem que olhar todos os comandos que ela te passa.
所以即使我在终端里,我也不让它自动执行任何操作,我会检查所有命令,手动运行每个命令。
Então mesmo quando eu estou no cursor, eu não deixo ele fazer nada automático automático, eu olho todos os comandos, eu rodo todos os comandos na mão.
当LLM告诉你'看,这里有这个库,不要直接安装,先去NPM确认这确实是你想要的',这种情况确实会发生。
E no, quando a LLM te fala pra você, olha, estava essa biblioteca aqui, não instala de cara, vai no NPM, confere se é realmente o que você quer, que acontece mesmo.
也经常发生代码建议的问题,比如你正在使用某个库的最新版本2.x,但它却建议你使用旧版本,而那个方法已经不存在了。
E já aconteceu muito também do do código sugerir, por exemplo, então você estava usando a versão mais nova de 1 biblioteca, 1 versão sei lá, é 2 ponto lá lá de 1 biblioteca, e ele te sugere de 1 anterior que o método já não é aquele.
你把它放进代码里,看起来没问题但运行不了,因为版本错了。
E você vai lá, coloca no seu código, parece certo mas não roda, porque a versão está errada.
这类细节你必须时刻注意,这是工作的一部分,虽然能帮助快速编写代码,但请大家务必小心你们要安装的内容,小心那些虚拟助手给你们传递的90年代俚语。
E esse tipo de detalhe você acaba tendo que ficar olhando olhando olhando toda hora, faz parte, ajuda a escrever bastante, mas gente, por favor tomem cuidado com o que vocês vão instalar, com o que o os seus assistentes virtuais pra usar 1 gíria dos anos 90, eles estão te passando.
哇吉尔,你刚才说的让Moni和Vini分享他们使用Node和LLM在代码质量方面的经验非常重要,你提到这点很关键,因为这是我们都要面对的新现实。我们做NodeJS节目讨论更新和新功能,就是为了让听众养成习惯,跟踪你使用的技术版本变化,阅读更新日志,理解变化内容,知道文档在哪里——这些将区分出那些只会去LNM要完整代码却不懂原理的人,和你这样可能需要审核代码、作为项目负责人说'大家冷静,这里我们可能失控了'的人。
Caraca Gil, mas é muito importante o que você falou antes de deixar a Moni e o Vini compartilharem aí como tem sido a experiência deles com o Node e com llm em termos de qualidade de código, é muito importante você ter tocado nesse ponto porque é 1 nova realidade com a qual todas vamos conviver, e aí a gente está fazendo programa sobre node j s falando de novidades, atualização, porque justamente pra você ouvinte ter esse hábito de se acostumar a acompanhar a tecnologia que você está usando de 1 versão pra outra, ler changelog, entender o que mudou, saber onde está a documentação, é isso que vai diferenciar a pessoa que está indo lá na LNM pedindo código inteiro pronto e não sabe o que está funcionando, de você, que às vezes vai ser justamente quem vai revisar, vai ser o líder de projeto que vai falar gente, segura a onda que aqui a gente perder a mão.
不过我在这里也用我的观点影响别人对吧?
Mas estou aqui contaminando os outros com as minhas opiniões também né?
Moni,你最近体验如何?在用Node时收到的代码质量靠谱吗?还是说总得留个心眼?
Moni, como que tem sido a sua experiência, tem recebido o código de qualidade das ali ele me sair quando o assunto é node ou também sempre com esse pé atrás?
不,课程调整后——我也在用这个课程——我们做了些配置来明确使用场景和方式,现在效果很好,基本不会出现Ju提到的那种因上下文缺失导致的错误。
Não, 1 coisa que ajustou do curso, eu também uso o curso e aqui a gente fez algumas configurações nele pra dizer o que que a gente usa, como a gente usa dando algum contexto, então cara, está muito bom, está difícil ele errar, dar alguma diferença assim como a Ju falou, por conta desse contexto que a gente colocou.
简单来说,我们预设了这套配置,用户下载项目时会自动加载,这大大提升了团队协作效率。
Então basicamente você, a gente colocou essa configuração, esse cara baixou o projeto, já baixa essa configuração junto e aí está ajudando bastante a a pelo menos aqui o pessoal do trabalho.
Ju说到的库名错误特别逗——我就遇到过,给前端团队做了个叫Audio喷气机和Spontaneous的尺寸检测工具。
É engraçado da Ju falar lá do do nome errado de biblioteca, que eu tive, eu fiz 1 para o tamanho de da da Audio Jato e Espontâneo, pra pra galera que está fazendo a postec de front end né.
这玩意儿学名叫typo平方术,本质上就是让你故意建个带拼写错误的库。
E aí essa parada tem nome que chama typo Squareding quero é literalmente você criar 1 biblioteca com typo.
想象下React的r——我今天也在用光标工具,关键靠自定义规则。你可以按项目设置规则组,工具自带最佳实践目录,社区还会分享灯光配置(注:此处'luzes'应为'regras'规则之误),虽然很酷但要注意——这不限于Node,任何依赖安装都可能出问题。有时AI会用默认配置,你必须明确说'我要用Express建商品CRUD接口'。如果没明确定义版本,npm install Express会装最新版,而实际上你可能需要特定版本——所有工具都有这概念。我说的虽然是光标工具,但原理通用:定义全局prompt虽然耗token但能减少错误,值得精细配置。最后还是那句万能答案:看情况,问得清楚AI才答得准确。
Então você imagina react que é r que eu vou fazer pouco do combo do que que as do que que as 2 falaram porque aqui eu também estou usando o cursor hoje e o que salva são as ruas né as regras que você consegue definir E aí você consegue fazer Russos por projeto tem boas práticas tem diretório do próprio cursor que você tem a galera faz as luzes e compartilha e tal isso é muito legal agora cuidado que tem que ter aí eu acho que não é específico de nojo é qualquer coisa que você instala é dependência que é qual que é o padrão que às vezes ele usa você fala assim olha você pede direitinho o que você quer ah eu quero 1 pi rest com crude de produtos usando Express por exemplo E aí às vezes se você não tem isso definido ao invés de fazer o que a gente faria que é npm install Express e aí ele vai pegar por padrão a última ele vai lá no package Jason mete 1 versão do Express específica lá e depois faz npm install né aí você tem que ficar né então se você tá usando essas luzes e aí isso vai variar de da ferramenta que você tá usando todas tem esse conceito tô falando do curso que é o que é o mais uso mas todas têm esse mesmo conceito que é basicamente é você definir prompt universal que vai estar sempre lá gastando dinheiro né porque é isso que o prompt faz né gastar dinheiro mas ele ajuda você errar menos Então vale a pena definir tudo lá direitinho e no final das contas vou usar a carta do depende porque depende de como que você pede você pedir direitinho ele tende a fazer direitinho
你们制造的恐慌让所有听众都在疯狂按↑键查安装历史了吧?特别感谢这场讨论!最后请大家分享下资源建议——有没有推荐的社区或学习材料,让听众能更深入这门因用户基数而强大的语言?每人说一个最推荐的就够。
isso não muda o medo que vocês colocaram fez todo mundo que tá na frente do computador agora ir lá no terminal começar apertar setinha para cima para ver as últimas instalações que fez para ver se não andou instalando algum pacote maluco galera eu queria agradecer demais vocês por esse papo e para gente fazer só a rodada final que acho que vale a pena vocês têm dicas, se não tiverem tudo bem, mas vocês têm dicas de materiais, comunidades, coisas legais de pra galera que está ouvindo quem sabe ficar mais perto dessa linguagem ou começar a acordar nela já que é 1 linguagem que é tão poderosa assim justamente pela quantidade de pessoas que usa que que vocês indicariam se tivesse que dar 1 única dica para os nossos ouvintes.
(发出无意识的野猪哼声)我推荐Alura的热门JavaScript课程。
Fazer aquele javali involuntário, tenho carreira de vai quente no jazz da Alura.
哦
Ó.
嗯,有,就这样吧
É, tem, tem acabou, enfim.
既然莫妮卡已经提到过,Node的文档一开始确实有点奇怪,我个人觉得它不太友好。但当你学会基础CRUD操作后,建议直接开始用TypeScript——如果能用的话会大有不同,没必要先学JavaScript再叠加TypeScript
Já que a Mônica já colocou o Jabá, a documentação do Node ela é pouco esquisita de começo, eu acho assim, na minha opinião ela é meio estranha, ela não é a mais a a 1 das mais amigáveis, mas eu acho que depois que você aprende a fazer o crude básico, já começa TypeScript se você puder porque vai fazer muita diferença, você não vai ter as 2, aprender JavaScript depois e colocar o TypeScript em cima.
掌握基础后,退一步理解Vini之前说的架构范式很重要,这确实是关键范式对吧?
Depois você faz o grupo de básico, é legal você dar passo pra trás pra entender isso que o Vini falou lá atrás, que é o paradigma que o, é paradigma né?
这是V8引擎采用的以事件驱动的特殊架构选择,理解事件循环机制很重要——随着Node项目复杂度提升,理解事件循环和异步原理会产生显著差异
É a escolha de arquitetura que a v 8 usa, que é voltada a eventos, que é pouco específica, pouco diferente e aí entender como o loop de eventos funciona porque à medida que você aumenta a complexidade dos projetos que você trabalha com o node a entender como o loop de eventos funciona e como a sincronicidade funciona no node faz bastante diferença.
所以我建议按这个路线走
Então eu iria por aí.
先做最基础的小项目,然后回头研究事件循环和底层架构原理——是'幕后'还是'台前'来着?
Pega lá os projetinhos mais básicos, depois volta pra estudar pouquinho sobre o loop de eventos e arquitetura do por trás e por baixo dos, trás dos panos, baixo dos panos?
我现在有点搞不清哪个说法正确,但这么做绝对值得
Fiquei confuso agora com qual que é o certo, mas eu acho que vale a pena fazer isso.
哎呀,Vini,这两条超有价值的建议现在让你难堪了吧?
Pô, 2 dicas valiosíssimas ficou ruim pra você agora hein Vini?
Mônica已经把我们这个又荒谬又精彩的时刻说出来了,我完全赞同,Ju已经给出了一个超棒的建议说要退一步思考,现在轮到你了伙计
A Mônica já mandou nosso momento já absurdo, maravilhoso, assino embaixo, a Ju já deu 1 dica fantástica de dar passo pra trás, meu filho agora a bomba tá com você
老兄现在我要激活我的陷阱卡了,就像游戏王那样,我有四点建议要分享,其中三个非常技术性。我们已经讨论过我们的20环bingo,如果你想了解Node的工作原理,显然语法是前提条件,必须懂JavaScript没得跑。但它的范式不同,就是那个事件循环的概念。对于不了解的人来说(这里不深入讨论),Node是单线程运行的,进程是非阻塞的,对吧?
rapaz agora eu vou ativar minha carta que estava em modo de defesa aqui né minha carta armadilha tal como YuGiOh faria então eu tenho 4 coisas aqui para trazer de dicas são 3 muito tech então é o seguinte a gente já falou do nosso bingo do e 20 loop então assim se você quer aprender como o node funciona você precisa entender como é óbvio a sintaxe é o prérequisito Então tem que saber JavaScript não tem para onde correr mas o paradigma dele é diferente a ideia do ivit loop né aí para quem para quem não não assim sem entrar muito aqui na escovação de é 1 única thread rodando o processo do node e os processos não são blocantes certo?
它不会根据当前情况阻塞进程,所以这是事件驱动的,必须理解这点。这直接链接到另一个概念就是非阻塞I/O,输入不会因为当前情况而卡住,这可能导致事情以你意想不到的方式发生,因为你不知道它是这样工作的。所以要把事件循环和非阻塞这两个概念结合起来理解,尤其是当规模扩大时。我们做的小项目越来越复杂,可能会无意中产生bug。最后还要理解Node的模块系统,必须掌握require和ES模块的组合。我的最后一条建议要呼应Mônica提到的,显然是Alura的Node职业路径。我这里要提前剧透一下,我正在做一个关于Serverless和Node的课程,这个话题值得单独做一期节目,André记得把这个记下来。
Ele não bloqueia o processo dependendo do que está acontecendo, então por isso que é 1 coisa orientada a evento e vão ter que entender isso né, e aí isso já já linka 1 1 já linkando 1 outra é justamente a ideia do nonblocking que que eu quero dizer o IO a entrar o input ele não fica travado dependendo do que tá acontecendo isso pode fazer que coisas aconteçam de 1 forma que você não estava esperando por você não saber que é assim que funciona então já comba lá com 2 que é o i20 loop e o nãoblocking aí eu tem que entender como que isso funciona ainda mais quando a coisa escala a gente vai fazendo pequenos mais complexos a gente pode gerar bug sem querer a última coisa também para fechar o nosso bico a gente já falou que é como que funciona o sistema de módulo do Node Então tem que saber como que funciona o combo de IS que é o require e o SM que é o de módulos né então é esse modus Então Então tem que saber como é que como é que isso daí funciona e a minha última dica eu vou fazer eco do que a Mônica trouxe para gente que obviamente é carreira de node da Alura né e como eu tenho 1 carreira fustta que é muito tempo vou dar mega spoiler daqui em primeira mão Eu estou trabalhando num curso agora por exemplo de surveless com o Node né, que é inclusive fica aí né, a gente tem que fazer episódio só de surveless André fica aí aí na pauta isso.
已经说完了。
Já saiu mais já.
因为关键在于我们如何在Serverless世界里使用Node,虽然这不是真正的无服务器世界,但为什么不能是呢?
É, porque assim, a ideia é como é que a gente faz, como é que a gente usa node no mundo de surveless, que não é mundo sem servidor, por que que poderia?
这个在Node职业路径里有详细说明,这个路径设计得很棒,能根据你的阶段(初级、中级、高级)来引导学习,内容很丰富学习曲线也很合理。这就是我要给你的四点建议
Mas aí, isso está lá na carreira node então, é 1 carreira que tá muito legal que ela foi pensada para te guiar pelo caminho né então ela tem os níveis de acordo com o seu momento iniciante intermediário e mais avançado então tem muito conteúdo legal lá e com 1 curva de aprendizado muito bacana também Então acho que isso aí fecha as minhas 4 dicas que eu tinha pra te
了。
dar.
这些建议太棒了,加上整个对话都非常精彩,所以我特别想感谢Vini、Money和Ju能来到这里,和我们交流这些想法,帮助我(也帮助你)对Node有了更多理解。这样吧,如果你对Node或GS有什么无论如何都解决不了的疑问,就在评论区留言,我们来做个测试,看看能否在下一期节目中解答你的问题——Marcos会把我们的回复剪辑进去。另外,记得去Spotify给Hipster节目打分,当然也推荐给可能感兴趣的朋友们。下周见啦!
Dicas muito boas além de todo o papo que foi muito bom, por isso que eu queria agradecer demais o Vini, a Money, a Ju por terem estado aqui, trocado essa ideia com a gente e me ajudado te ajudado a entender pouquinho mais sobre o node faz o seguinte tem alguma dúvida assim 1 dúvida que você tem sobre o node g s não consegue tirar de jeito nenhum deixa aqui nos comentários vamos fazer esse teste vamos ver se a gente consegue pegar sua dúvida e trazer na edição do próximo episódio o Marcos coloca a nossa resposta além disso vem cá e avalia o hipster no Spotify e também é claro recomenda para amigo 1 amiga que possam se interessar a gente se vê na próxima semana até mais.
各位,一年中最令人期待的时段到了——Alura的黑色十一月大促来啦!现在最高可享50%折扣,让你在今年就能彻底实现职业深造的规划。
Pessoal chegou aquela época do ano que muita gente espera que é a época da promoção de black november da Alura que está dando até 50 por 100 de desconto pra você tirar de vez do papel ainda nesse ano o plano de mergulhar, se aprofundar na sua carreira.
快点击节目描述区的链接查看吧。
Então passa aqui na descrição do episódio.
千万别错过这场史上最盛大的黑五促销,优惠多到屏幕都快装不下了!
Não perca a maior Black de todas, tão grande que quase não cabe na tela.
访问Alura.com.br网站你就明白我在说什么了,今天就报名,别错过,别拖延,Alura黑色星期五活动最高可享50%折扣,我们等你来。
Quem entrar no site que é Alura ponto com ponto b r vai entender do que eu estou falando, se matricula hoje mesmo, não perde, não deixa pra depois a Black November da Alura com até 50 por 100 de desconto, a gente espera por você.
本播客由Alura制作,潜入科技世界。
Este podcast foi produzido pela Alura, Mergulhe em Tecnologia.
以及FIAP大学,Let's Rocky the Future。
E Faculdade Fiap, Let's Rocky the Future.
播客编辑由Gigahertz网络提供。
Edição rede gigahertz de podcasts.
关于 Bayt 播客
Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。