Reverse-Engineering Todo para Deshacerte de los Problemas de Confianza

Rate this content
Bookmark

Te guste o no, en estos días muchas cosas a nuestro alrededor funcionan con JavaScript. Aplicaciones web, móviles y de escritorio, televisores, refrigeradores y cohetes espaciales, ¡lo que sea! Hablaré sobre cómo aprovechar esto utilizando el arte prohibido de "desensamblar". También hablaremos sobre no saber cosas, confiar en hechos y convertirnos en mejores ingenieros.

This talk has been presented at JSNation 2024, check out the latest edition of this JavaScript Conference.

Mikhail Korolev
Mikhail Korolev
20 min
17 Jun, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

El poder y la versatilidad de JavaScript lo convierten en el lenguaje de programación elegido para aplicaciones de consumo en todo el mundo. Un ingeniero de JavaScript debe entender cómo funcionan las cosas, incluso si no lo saben todo. La charla discute la modificación de sitios web, descubrir el amaño de juegos a través de herramientas de desarrollo, analizar solicitudes y anulaciones de búsqueda, refactorizar y gestionar el estado, y modificar sitios web. El orador comparte experiencias personales y destaca la importancia de comprender y poder modificar el código en tiempo real.

1. JavaScript's Power and Versatility

Short description:

Hola a todos, JS Nation. Gracias por sintonizar. Como ingeniero de JavaScript, es posible que hayas visto esta clásica pregunta de entrevista sobre el orden de los registros en la consola. Está bien no saberlo todo, pero es bueno entender cómo funcionan las cosas. JavaScript se ha convertido en el lenguaje de programación elegido para aplicaciones de consumo en todo el mundo. Es versátil y te permite modificar y cambiar el código en tiempo de ejecución.

Muchas gracias por sintonizar, y espero que estén teniendo un día fantástico hoy. Ya sea que estén aquí solo para la sección remota o hayan tenido la oportunidad de conocerme en persona, en cuyo caso, hola de nuevo.

Correcto. Como ingeniero de JavaScript como ustedes, es posible que hayan visto una pregunta de entrevista similar a esta. Esta es una pregunta clásica, que es ¿en qué orden se mostrarán los registros de la consola? Y si eres un entrevistador, tal vez incluso hayas hecho una pregunta como esta durante la entrevista, y en ese caso, un poco de vergüenza para ti, pero quién soy yo para juzgar. Y creo que la forma correcta y buena, en mi opinión, de responder a esta pregunta es: no tengo idea, pero sé cómo averiguarlo. Mi nombre es Mikhail, y trabajo como ingeniero de experiencia de desarrollo en una empresa llamada TopTel.

¿Verdad? En estos días, estoy principalmente obsesionado con la felicidad del desarrollador y la infraestructura del frontend. Normalmente hablo de cosas tontas, pero hoy quiero decir que no tienes que saber todo. Sabes, cada dos semanas hay algo loco sucediendo en el mundo de JS, y sientes que te lo vas a perder si no te sumerges de inmediato, ¿verdad? Por ejemplo, por supuesto, si eres un desarrollador de React, obviamente has usado hooks, y espero que los uses ahora. ¿Y realmente sabes cómo funcionan los hooks bajo el capó? ¿Sabes cómo aparecen esas funciones mágicas? ¿Cómo saben cuándo deben ser llamadas, verdad? ¿O cuál es la fuente de la reactividad? ¿Cómo funciona? ¿Qué es este signo de dólar mágico? Y creo que está bien no saberlo. Con el tiempo y la experiencia, acumulas todos los, ya sabes, todos los casos especiales, cómo usarlos, cómo no usarlos. Con cualquier herramienta, aprendes cómo usarla, pero en realidad no tienes que saber, para entender cómo funciona debajo del capó para usarla de manera efectiva, ¿verdad? Pero es bueno saberlo, ¿no?

De todos modos, sin embargo, no sé cuántos últimos años que JavaScript ha tomado el control de todo el mundo como el lenguaje de programación elegido para aplicaciones de consumo. Es muy fácil encontrar desarrolladores de JavaScript para construir tu aplicación de escritorio, aplicación móvil, sitio web, aplicación web. Está en la vanguardia, en la nube, en todas partes. Incluso enviamos JavaScript al espacio y no culpo a las empresas por eso porque, ya sabes, es relativamente barato encontrar un buen desarrollador que haga muchas cosas al mismo tiempo. Eso es bueno. En su mayoría, esos casos de uso son lo suficientemente buenos para JavaScript, ¿verdad? Y no importa cómo lo cocines, al final, siempre sale JavaScript. Puede ser TypeScript, ReasonML, cualquier otro superset de JavaScript, pero lo que se ejecuta en tiempo de ejecución siempre es JavaScript. No hay forma de evitarlo. Algunos de ustedes pueden odiarlo. Podría decir que yo mismo estuve en un campamento similar, ¿verdad? Como que no necesitas esos 150 megabytes adicionales de navegador con tu Slack, ¿verdad? Y todo ese JavaScript es lento y yada yada yada. Lo sabes bien, ¿verdad? Pero en realidad creo que JavaScript, todo lo que se ejecuta en JavaScript, te brinda un poder nunca antes visto para modificar y cambiar el código en tiempo de ejecución. Puedes inspeccionar todo. Puedes sobrescribir todo. Es como, ya sabes, cambiar las llantas del coche. Vas. Tengo un muy buen ejemplo. Por ejemplo, digamos que quieres buscar qué son las cookies del navegador. Tú, ya sabes, lo usual.

2. Modifying Websites and Daily Lottery

Short description:

Vas a Google, encuentras un artículo, pero algo te impide navegar más. En una aplicación nativa, no puedes modificar el sitio web. Historia: una tienda de alimentos saludables con sede en Estados Unidos ofrece una página de promoción donde los clientes pueden participar en una lotería diaria gastando $200. Después de iniciar sesión, al voltear las cartas se revelan ofertas de descuento. Los usuarios pueden comprar barras veganas con descuento. Experimenté descuentos que iban desde el 40% hasta el 87%.

Vas a Google, encuentras un artículo interesante, comienzas a leerlo, blah, blah, blah. Algo sucede. Y eso es algo que te impide navegar más. Y sabes qué, lo que suelo hacer, espero no ser el único que lo hace, pero simplemente voy a las herramientas para desarrolladores y lo elimino, ¿verdad? Tal vez algo relacionado con mi bloqueador de anuncios o cualquier otra cosa, pero eso es lo que haces, simplemente modificas el sitio web. Imagina hacer esto en una aplicación nativa. No es posible en absoluto.

De acuerdo. Historia. Hay un sitio web llamado thegarden.com.us, que es una tienda de alimentos saludables y costosos con sede en Estados Unidos. Y hay una página de promoción en el sitio web, que se supone que facilita las ventas por cada $200 gastados. Tienes la oportunidad de participar en una lotería diaria. Así es como se ve. Inicias sesión como un cliente respetable. Inicias sesión con tu ID de lealtad, presionas el botón de inicio de sesión y comienzas el juego. Volteas algunas cartas y obtienes ofertas de descuento. Todo está bien. Luego, puedes ir y comprar tus barras veganas con un 40% de descuento en la tienda en persona. Al día siguiente, vuelves, hay un enfriamiento de 24 horas y luego vuelves a la tienda y haces todo de nuevo. ¿Verdad? Pensé, está bien, eso está bien. Parece bien. Fue interesante. Hay un 40%, hay un 35%. Eso estuvo bien. Parece que podría obtener algunos descuentos bastante buenos aquí. Un 60%. Un 87%. Imagina obtener eso. Eso está bien. Así que lo hice. Luego me fui.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
This Talk discusses various strategies to improve React performance, including lazy loading iframes, analyzing and optimizing bundles, fixing barrel exports and tree shaking, removing dead code, and caching expensive computations. The speaker shares their experience in identifying and addressing performance issues in a real-world application. They also highlight the importance of regularly auditing webpack and bundle analyzers, using tools like Knip to find unused code, and contributing improvements to open source libraries.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
WorkshopFree
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Depuración del Rendimiento de React
React Advanced Conference 2023React Advanced Conference 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
WorkshopFree
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
WorkshopFree
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.