This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Matthew Prince ya se ha metido con el tema, este pedazo de este componente que es el que ha dado muchas vueltas de un server action que justamente dice mi opinión sobre esto y ahora os diré quién es esta persona.
Mi opinión sobre esto es un poco diferente a la de otros. Es realmente difícil ganar dinero como empresa de herramientas de desarrollo a menos que encuentres una manera de vender almacenamiento, computación y ancho de banda. Claramente necesitaban construir estos ganchos, estos hooks. Bueno, ¿quién es Matthew Prince? Pues Matthew Prince básicamente es el CEO de Cloudflare. Es el CEO de Cloudflare. Ojo, el CEO de Cloudflare, cofundador de Cloudflare.
Se mete en el ajo, se mete en el ajo para hablar de Vercell. Y os digo una cosa, Vercell es cliente de Cloudflare. Es cliente de Cloudflare porque muchos de los servicios que ofrece Vercell al final son como un envoltorio de Cloudflare.
Mucho, las Cloudflare workers los están utilizando seguro. Me ha sorprendido mucho. No he visto yo algo así en mucho tiempo. El hecho de que se meta. O sea, Guillermo hasta le hizo un generador del meme.
Hostia, qué bueno. Han hecho un meme de esto. Qué bueno, qué bueno.
Ojo, el SQL Injection en ese código XD.
Del SQL Injection de este código ahora vamos a hablar porque no hay SQL Injection y es que este ha sido uno de los problemas que mucha gente han opinado sobre esta imagen.
Y es no saber de lo que se habla. Que no es por... No sé. Pero en esta línea no hay SQL Injection. Lo que hay es ignorancia de cómo funciona esa línea.
Entonces, como no saben cómo funciona esa línea, lo ven con sus ojos, que no saben cómo funciona y creen que hay un SQL Injection. Pero no lo hay.
Luego lo explico porque es verdad que hay un montón de gente que dice que hay SQL Injection y no lo hay. Y luego os explico por qué.
Aunque la gente mira, pero si es evidente, si es claro, no sé qué, no sé cuánto. No lo es.
Bueno, total, que le ha contestado Guillermo. Le ha contestado Guillermo y dice, me encanta una buena teoría de la conspiración.
Toma una alternativa. Necesitamos colocar la computación cerca de la base de datos, no en el Edge, no fuera de la nube, no en el cliente, para que podamos crear sitios web rápidos.
Sinceramente, o sea, qué fuerte es esto, tío. O sea, me parece muy fuerte. O sea, creo que Guillermo en esto tiene razón.
Tiene razón, Guillermo. Porque, claro, esto lo que le está diciendo Matthew es del palo. Esto lo están haciendo para obligarte a vender storage, computación y bandwidth.
Pero este take, sinceramente, Matthew, creo que está muy equivocado. Porque al final, eso, imagínate que lo sacas a una API.
Es que sería exactamente lo mismo. En cuanto a computación, bandwidth y storage. O sea, es lo mismo. Es lo mismo.
No entiendo muy bien a qué se refieren con esto. No tiene ningún tipo de sentido lo que dice.
O sea, es exactamente lo mismo si esto lo sacas a una API que se despliega totalmente separada y tal. De hecho, podría llegar a tener un poquito más de costes que podemos estar de acuerdo que sea una mejor separación de conceptos.
Yo creo que yo lo haría, evidentemente. O sea, no me parece que este código sea algo a hacer.
Pero no tiene mucho sentido que hablar que esto sea para venderte una mejor forma de venderte storage, computación y bandwidth.
No me parece, la verdad. O sea, no tiene sentido. Pero bueno, aquí Guillermo lo ha dicho que es una buena teoría de la conspiración y que al final lo que quiere es crear páginas web más rápidas.
Y bueno, ha habido justamente con esto de las server actions, ha habido mucho, pero mucho, mucho, mucho, mucho, mucho salseo.
De hecho, vi este que me sorprendió muchísimo. No, no y no. De Daniela. Esto no está bien. No es seguro. No es seguro. Vamos a quedarnos con esa frase.
No quiero perder energía y tiempo explicando los motivos cuando están ahí en nuestras narices y algunos de ustedes ya lo notaron.
Pretender que con Front tendrán los mismos o mejores resultados que con el back es cambiar un Ferrari por un Twingo.
La verdad es que, es que me ha hecho muchas gracias el tweet y es súper respetable la opinión. Me parece que está súper bien.
Pero no, dice, amigo frontend developer, sabemos que todos los días te sale un framework nuevo y no ha terminado de salir cuando ya lo quieres implementar.
Si quieres conocer a proyectos de prueba pero nunca saques a producción una tecnología nueva o método nuevo que no ha sido probado con, bueno, esto tiene razón.
La verdad es que tiene toda la razón del mundo, con buenos resultados. Aunque también es cierto que al final, pues bueno,
esto se probará eventualmente y ya está, ¿sabes? No pasa nada. Igualmente, hay que decir una cosa que esto sí que es importante.
Esto no es algo de Next.js. Esto en realidad es algo de React, que es bastante curioso. O sea, no es de Next.js y por lo tanto no es a nivel de framework,
sino es a nivel de React. React, por si no lo sabéis, ha hecho los server actions, es una parte de React.
Por lo tanto, lo vais a ver en otros frameworks y otros frameworks ya han dicho que lo van a añadir, como por ejemplo, no me acuerdo, no sé qué,
Wood, ese ya ha puesto. Pero aunque lo veis mucho en Next.js, esto es parte de la documentación de React y los client actions también.
También son parte, no lo voy a encontrar, pero mira, React client actions. ¿Vale?
Los client actions. Ah, no encuentro. ¿Por qué no encuentro? No lo encuentro.
Pero está en la documentación, los podéis ver, ¿eh? Porque lo he visto yo. Porque lo he visto yo y lo he estado leyendo.
Y es verdad, es que es parte de React, no son parte de Next.js.
Que está bien que al final, o sea, me parece una crítica que a mucha gente está bien que le asuste,
porque la verdad, es que no os he mentido. Cajo la leche. A ver, os voy a enseñar.
Os voy a enseñar lo de los client... Ah, este no es.
Client actions. A ver si lo encuentro. Mira, client component, using server only...
¿Ves? Lo que pasa es que está en experimental y no sé qué, pero esto es parte de React.
Tanto los client actions, que no lo voy a encontrar por aquí, React labs, no sé qué,
pero veis que están aquí, o sea, están aquí, todo, todo esto está aquí.
O sea, está aquí, está aquí. No es parte de Next.js, es parte de React y por lo tanto
estaban justamente comentándolo en React. Así que no pasa nada.
Ah, mira, gracias, gracias. Mira, use server. Use server, el use client, todo esto lo tenéis en React.
Que lo que sí me parece interesante como discusión es decir, oye, pero esto ha sido influenciado por Next.js,
es no sé qué, es no sé cuánto. O sea, puede ser un poquito así, ¿no? Eso puede ser.
Bueno, el tema es, el tema este del no, no, no, esto no está bien, no es seguro y tal.
El tema, el tema es que, a ver, aquí hay diferentes cosas.
Mucha gente, y leyendo el hilo, ¿vale? Yo entiendo que hay gente que no le guste, ¿eh?
Hay gente que puede decir, no me gusta por X, pero, pero, no está bien lo que se dice aquí.
O sea, he visto muchos comentarios que dicen que esto es una, que hay SQL injection.
De hecho, lo habéis dicho en el chat también, que estos son SQL injection.
A ver, esto que se ve aquí, esto no es un template string.
El SQL, esto es una función que se utiliza, es una función que se utiliza, ¿sabes?
Y entonces lo que está haciendo esto es sanitizar el input automáticamente, ¿vale?
No existe SQL injection porque lo que está haciendo aquí justamente es pasarle un parámetro.
Aquí, por si os interesa, porque esto es un tema de JavaScript, template literas, ¿vale?
Los template literas, ¿vale?
Fijaos, ves tag function y veis cómo se utiliza directamente, que se le pasa esto aquí.
Esto es una función.
Sé que parece un template string, ¿vale?
Pero es una función.
Y lo que vas a hacer es poder conseguir que eso se pase por parámetros.
¿Ves este my tag?
Y que tienes aquí tres parámetros.
Pues fíjate aquí cómo lo utiliza el my tag.
Y ves que le está pasando directamente el template string.
Siento que la crítica va por otro lado.
No, no, no, no.
No, amigo.
A ver, la crítica va por diferentes lados, ¿vale?
Hay un tema que es el de seguridad.
Porque, a ver, a ver, lo está diciendo.
A ver, está bien.
O sea, no pasa nada, ¿eh?
Esto no está bien, no es seguro.
Entonces, tú, Kelly, puedes entender que la crítica va por otro lado.
Pero, literalmente, no es seguro.
Es que es un tema de seguridad, ¿vale?
O sea, es literalmente un tema de seguridad.
Y en el hilo hay mucha gente que habla del tema de la seguridad, de que hay un SQL Injection.
Y aquí en el chat también lo han dicho.
Ahora, yo digo que yo entiendo que sea un tema de que no le guste justamente visualmente, separación de conceptos, de responsabilidades.
Eso lo puedo entender.
Pero estoy explicando lo de la seguridad para que todo el mundo entienda y, aun así, te puedas seguir no gustando, pero al menos entiendas de que no hay un problema de seguridad.
Y aquí podemos ver que se está utilizando justamente esto, ¿vale?
Que no es un tema de seguridad.
O sea, aquí no hay una SQL Injection, sino que esto lo que se está haciendo es sanitizar, ¿vale?
Entonces, otra vez, con lo menos, no creo que iría por el tema de SQL Injection.
A ver, que lo pone aquí, amigos.
Basta ya de decirme que no va por el tema de seguridad.
Estamos hablando de este tuit y pone literalmente ahí, esto no es seguro.
Esto no es interpretable.
Lo pone ahí claramente.
O sea, que podéis decirme que no va por ahí lo que vosotros entendáis.
Pero, a ver, no es seguro, es así.
Punto.
Ya está.
Lo que queráis, ¿eh?
Joder, la leche, ¿eh?
Me cago en la leche.
Joder, es que soy la leche.
En fin, solo os quiero explicar por qué sí que es seguro el tema este.
Y hay un segundo tema, ¿vale?
Pretender confront tendrían los mismos o mejores resultados que con el bug.
Hay otra apreciación que mucha gente no entiende.
Y es el hecho de que ese método, que también mucha gente en los comentarios del tuit lo dicen, ¿vale?
Es que mucha gente se cree que ese código acaba en el frontend.
Mucha, mucha gente.
Mucha gente lo dice.
Es que este código en el frontend, como no sé qué, no sé cuánto.
Es que no sé qué, no sé cuánto.
Hay un montón de gente de que lo pone por ahí, de que tenía miedo de que esto llegase al frontend.
A ver, esto tampoco va a llegar al frontend, ¿vale?
Este método de aquí, este método user, no sé qué, ese método no va a llegar al frontend.
Eso lo que se hace es que se queda en el servidor y no llega al frontend ese SQL, ni siquiera se ve.
Lo que llega al frontend es el resultado.
O sea, se hace la operación y todo el código está en el servidor y en el cliente es donde llega el resultado, ¿vale?
O sea, entonces, todo el tema de si es seguro y tal, que es que he visto mucho hate, mucho hate sobre el SQL Injection, el no sé qué.
De que ese código acaba en el front, que ese código no debería estar en el front, que no sé qué.
Todo eso no está bien y está mal interpretado, ¿vale?
Luego, hay otro tema que mucha gente parece que no se ha dado cuenta, ¿vale?
Entonces, vamos a ver.
Hay otro tema que es bastante importante.
El tema es que esto, a mí, sinceramente, a mí este código no me gusta.
A ver si a mí me pregunta mucha gente, este código, no, no me gusta, ¿vale?
Este código a mí no me gusta.
A mí, sinceramente, ahora entonces es lo que mucha gente dice, pero no van por ahí los tiros y no sé qué.
Bueno, hay mucha gente que es verdad que lo que dice es que no le gusta visualmente cómo es esto.
Lo cierto, y a esto me parece que es muy interesante, es que esto a mí me parece que es una práctica regular.
Por no decir que es mala práctica el hecho de meterlo ahí en medio y tal.
Yo sé que hay gente, y ahora ahí os voy a decir, ¿no?
Hay como dos vertientes que están existiendo en el mundo de la programación.
Para que os hagáis un poco la idea.
Está el tema de que hay mucha gente que está más hacia muy buenas prácticas,
todo el tema de separación de conceptos y todo esto.
Y ahora hay una nueva, no nueva, no voy a decir nueva porque ha existido siempre, ¿vale?
Que viene un poquito hacia lo de Levelsio, que es este chico que hizo con PHP, jQuery,
en un solo fichero y todo esto, y está haciendo miles de dólares y todo esto, ¿vale?
Entonces, este chico dice que utiliza PHP, jQuery, que tiene un archivo de 20.000 líneas y no sé qué.
Bueno, cada vez hay también como otra, digamos que hay como dos bandos,
en el que está la gente de buenas prácticas, no sé qué, no sé cuánto,
y luego hay otra que es de desarrolla rápido, equivócate rápido y constantemente
y el código que esté lo más cerca posible de donde ocurre la acción, ¿sabes?
O sea, hay mucha gente en la que esto lo ve bien.
Yo, sinceramente, no lo veo bien.
Si me preguntan a mí, yo esto no me parece bien, no me gusta.
Entiendo el ejemplo, pero no me parece bien.
Yo esto no lo haría, ni es un ejemplo que utilizaría, ni nada, ¿vale?
Entonces, hay mucha gente que esto sí que lo ve bien porque lo que dicen es,
no, quiero desplegar rápido, quiero sacar cosas rápido y además quiero que lo que hace este botón esté cerca, ¿vale?
¿El bando de los guarros? Puede ser, si lo quieres entender así.
Bueno, lo que puede ser, ¿no?
Lo mejor es la arquitectura hexagonal, así puedes reutilizar absolutamente todo.
Bueno, pero hay gente que dice, bueno, está bien, pero no tengo ganas de hacer arquitectura
porque lo que quiero es ganar dinero, ¿no? Ya está.
Me parece bien como ejemplo, pocas líneas para ilustrar lo que quieres explicar.
Bueno, sí, pero ya ves que hay mucha gente que ni siquiera la ha entendido, ¿no?
O sea, ni siquiera la ha entendido el que es lo que quiere explicar
y se han fijado en lo que no es, que ni siquiera lo está bien, ¿no?
Si solo un team puedes hacer buenas prácticas, pero si solo es un dev, te sale más rentable, estilo PHP.
Bueno, pero cada vez lo veo más, ¿no?
O sea, yo cada vez veo más que hay como estas dos perfiles, ¿no?
De gente de, no, es que clean code y tal.
Bueno, por aquí he estado viendo un montón de gente, no sé, ¿ves?
Pero ¿qué sacrificio es este?
¿Cómo esto puede ser una novedad?
Dice, ejecución de una query directo desde el front.
¿Ves? Milagritos no lo ha entendido.
Y esto es algo que mucha gente se cree.
Que esto lo que está pasando, lo que está pasando es que hay gente que se cree
que esto lo está ejecutando el front.
Y mira que pone aquí un userver, ¿eh?
Que también es raro.
Pero, sinceramente, y esto lo digo en serio,
yo creo que si toda la comunidad, no toda la comunidad,
pero mucha gente de la comunidad tiene estas opiniones basadas en una equivocación
porque no lo entienden, porque, o sea, sinceramente,
eso es que no lo ha entendido.
Pero yo creo que sí que le da la razón a los críticos
de que es una funcionalidad que o está mal explicada,
mal presentada o que algo no está bien aquí.
¿Entendéis?
O sea, está equivocada la persona esta de decir
es que esto se ejecuta en front.
Está mal porque no es verdad.
Pero es verdad que a lo mejor hay que hacer un poco de autocrítica
de decir, ostras, si la gente lo está entendiendo mal,
si tanta gente lo está entendiendo mal,
quizás no era lo mejor.
¿Sabes?
Quizás esta UX o experiencia de desarrollo no es la mejor.
No sé, o sea, ahora yo no vengo yo aquí a deciros cuál es la mejor,
pero ¿me entendéis lo que os quiero decir?
O sea, os quiero decir que yo sí que acepto esta crítica
de que no queda claro, de que no se entiende,
de que al final este tipo de cosas,
que a lo mejor si hay tanto pushback de que la gente no entiende,
pues, ¿qué está pasando aquí?
Que, exacto, muchos lo van a confundir.
Si hay tanta confusión, yo creo que algo se tiene que hacer
para que no lo haya.
Si algo no es claro, y justamente una de las cosas buenas
que siempre al principio ha tenido siempre React,
es el hecho de que eran mucho más claros de entender,
de que, no sé, era como, pero ahora hay demasiada confusión.
Yo veo gente, gente que es muy, muy lista, ¿vale?
De que, joder, de que dices, joder, es que esta gente,
bueno, la propia Daniela, Daniela, yo le he visto un montón de tweets y tal,
y la verdad es que es súper bien, ¿no?
O sea, pero en este caso no lo ha terminado de entender
y ha dado esta opinión, ¿no?
No es seguro.
¿Y por qué?
Porque cree que tiene ese cool injection,
porque cree que se ejecuta en el front, no sé,
no sé por qué será, ¿no?
Pero este tipo de cosas.
Y al final creo que la gente de React tiene que hacer autocrítica.
No lo están haciendo bien.
Yo creo, sinceramente, que no lo está haciendo bien.
Ese es el tema, ¿sabes?
O sea, para mí eso es el punto donde hay que ver
que no está siendo claro.
Y si no está siendo claro, pues opinan rápido sin ver cómo funciona.
Sí, pero cuando hay tanta gente...
Hay que entender que primero,
el front no puede conectarse con una base de datos, amigos.
Yo lo dije de risas lo del SQL injection,
porque a mí como principalmente backend,
eso se me parece a chino y inseguro XD.
Totalmente.
La sintaxis tampoco me convence.
A mí, ya os lo he dicho,
a mí, mira, antes os lo he dicho,
a mí esta sintaxis de tener que poner esta cadena de texto
de useServer, a mí no me gusta.
O sea, me parece horrible.
Horrible.
Mira, antes he dicho lo del antivirus,
pues se me tendrían que caer las teclas, tío,
poniendo esto, sinceramente.
A mí no me gusta.
O sea, no me gusta esta cadena de texto aquí tan rara
que hay que poner a nivel de método.
No me gusta.
O sea, no me gusta.
Creo que están equivocados, sinceramente.
O sea, creo que se han equivocado.
Os lo digo con todo mi cariño.
Creo que lo que tendrían que haber hecho es
tener que importar una función o algo así
que se llamase useServer o ActionServer o algo así.
Y no esta magia.
A mí esta magia me parece, sinceramente,
una equivocación mayúscula por parte del equipo de RIA.
Así de claro.
Para que veáis que luego esto para mí está al nivel de las directivas
que he dicho antes de Angular, que no me gustan y todo esto.
Pues esto, exactamente lo mismo.
De hecho, a mí esta cadena de texto MagicString aquí,
que ahora de repente hace que esto no me parece,
no me gusta porque es posicional, que tienes que ponerlo arriba.
No me gusta de que es una cadena de texto mágica.
Mira, casi que prefiero que fuese con una directiva.
Imagínate, imagínate.
Comentó desde que salió la Server Action que no me gustan como se usan.
Desde siempre lo he dicho, que es que luego me vendrá la gente aquí.
Es que tú eres un React fan.
No me gusta, no me gusta esto.
No me gusta, no me gusta, no me gusta.
Ahí lo tenéis, ¿vale?
Esto no es JSX.
Dice, todo JSX es magia.
Esto no es JSX.
Esto no tiene nada que ver con JSX.
Esto, de hecho, puede ser JavaScript plano.
Lo que esto es magia a otro nivel.
Esa magia a otro nivel.
Yo creo que lo que deberían haber hecho es exportar una función.
De hecho, no es que esté mal.
O sea, no me parece mal que sí que den esta posibilidad.
Y de hecho, una cosa que me parece interesante
es que al final este método lo podéis sacar a un archivo totalmente aparte.
No es escalable.
Esto es exactamente igual de escalable que hacerlo con una API.
Esto de que no sea escalable, que es otra cosa que he leído,
no hay por dónde cogerlo, ¿vale?
Es igual de escalable que llamar a una API.
O sea, incluso más.
Porque esto lo que va a hacer es que se ejecuta directamente en el servidor.
Sí que es escalable.
Es igual de escalable que cualquier otra cosa, ¿sabes?
Entonces, esto es escalable.
Porque al final, si no lo haces así, lo harías de otra cosa, ¿eh?
JSX es un lenguaje, no es magia.
Estoy de acuerdo.
Astro es mucho mejor.
Es agnóstico y más rápido y ligero.
A ver, ¿es mejor?
Bueno, sí, es mejor.
Sí, para ciertas cosas.
Para otras cosas, yo no sé si es mejor o peor.
Son para cosas totalmente distintas, ¿eh?
Entre las directivas y ese código, ¿cuál odian más?
Mira, no lo sé, ¿eh?
No lo sé, pero yo creo que este, ¿eh?
Fíjate, ¿eh?
Fíjate.
Yo creo que este.
Yo creo que este.
¿Por qué?
Os lo digo claramente.
Una cadena de texto arbitraria en un sitio para que haga magia
que tienes que escribir manualmente.
Porque, fijaos la diferencia, la experiencia de desarrollo.
No es lo mismo que vosotros estéis aquí y hagáis un import server action,
por decir algo, ¿no?
From React.
Y esto, al final, pues seguramente, al final lo bueno es que podrías tener
autocomplete y aquí, pues, action.
Pues puedes poner aquí server action y aquí hacer esto.
Y entonces ya te olvidas totalmente de realmente cómo funciona.
Es que imagínate que ahora de repente para hacer un estado
tengas que poner una mierda de estas.
Use state.
Y le pones aquí let counter 0.
¿Os imagináis esto?
Esto no tiene sentido, tío.
Esto no tiene sentido.
Para mí, yo lo haría más como una función.
Es el método porque esto es algo que no se está reventando al lenguaje.
No se está reventando al lenguaje.
Al final le pasas un callback que es una cosa que funciona de toda la vida, tío.
Funciona de toda la vida.
Que aquí queréis utilizar, yo que sé, lo que sea, ¿vale?
Pues ya está.
No pasa nada.
Haces esto y ya lo tienes.
Lo cierras y tal.
Y lo bueno de esto, que además lo puedes hacer en miles de formas,
es que al final esto lo puedes separar de otra forma.
Yo que sé, send email, ¿vale?
Y lo puedes separar aquí.
Imagínate, send email y aquí haces el SQL, no con la inyección, sino esto, ¿no?
Insert, insert into, no sé qué, no sé cuánto.
Y ya está.
O action email, yo que sé.
Action email.
Qué dificultad había.
No lo entiendo, tío.
O sea, no lo entiendo.
De verdad, no lo entiendo.
Porque al final esto, lo bueno que tenías es que esto lo podías sacar a...
Bueno, lo otro también lo puedes sacar, ¿eh?
Pero bueno, para que sepáis.
Esto lo puedes sacar a otro fichero, ¿vale?
Que puedes llamarle actions.js.
Lo exportas así, ¿vale?
Esto lo tienes aquí.
Oye, que está bien, tío.
Pues tienes ahí ahora las actions.
O le puedes llamar action directamente.
Yo qué sé.
Ni siquiera le tienes que llamar server action.
Pues action, ¿vale?
Ya lo tienes aquí y ya, pues tío.
Yo creo que la gente seguramente lo habría entendido mejor, ¿sabes?
Send email action.
Igual que pasó con los hooks.
Pues es algo mucho más natural.
Actions y tal.
Send email action.
Lo dejas por aquí y ya está.
A ver.
Todo esto para dejarse atrás el use effect.
No, es para ahorrarte líneas de código.
Yo, a mí esto, una cosa sí me gusta más.
¿Sabes?
¿Por qué?
Uno, no es mágico.
Importas el action y ya está.
Te dejas de cadenas de texto raras.
Sí, la gente se podría llegar a entender.
Lo de SQL no entenderían totalmente, ¿no?
Porque, bueno, ¿qué le vamos a hacer?
Como que se han pasado por culo los conceptos de Solid.
A ver.
Concepto de Solid.
Yo creo que lo que se han pasado por el culo es un poco el lenguaje.
Directamente.
Pero, al menos con esto, puedes hacer diferentes cosas.
Por ejemplo, una cosa que puedes hacer es que esta función también la puedes probar con un test unitario.
Le puedes hacer un montón de cosas.
Incluso, podríamos pensar, yo qué sé, que al pasarle al action, aquí ya tienes los parámetros.
Es que tiene todo sentido.
Es que tiene mucho más sentido que todo lo demás.
No sé.
Yo hubiera hecho esta API.
Pero, bueno, para que veáis un poquito esto, una cosa que es interesante es que Quick está contento.
Porque, fijaos, Quick dice server actions y aquí con amor.
¿Por qué?
Porque, justamente, Quick tiene algo bastante parecido.
Que, fijaos, en este caso sí que utilizan como este método especial server dollar.
Que esto lo que indica es que esto se ejecuta solo en el servidor.
Yo creo que, en el caso de Quick, tienen mejor API que no la otra.
Con razón, hace años no autorizan RIA.
Para sacar magias oscuras como esta hay que tomarse un café eterno.
La verdad es que se les ha ido.
Yo creo que aquí se les ha ido.
Creo que se les ha ido.
¿Dónde va la conexión de la base de datos?
A ver, esto de la conexión de la base de datos, la tienes por aquí.
La tendríamos aquí.
Imagínate que SQL.
Aquí podríamos tener create connection.
¿Vale?
Y aquí esto.
Lo podrías poner aquí, host, local host.
Y esto, pues, URL, pues, yo que sé, root.
Lo que sea, ¿no?
Bueno, no es root.
Pero esto, bueno, host, local host.
Yo que sé.
User, root.
A ver, root.
Mido, ¿vale?
Entonces, esto, lo interesante de esto es que esto solo se ejecuta en el servidor.
Todo esto se ejecuta solo, solo en el servidor.
Entonces, se ve peligroso ese código.
Pero se ve peligroso porque no estamos acostumbrados.
Y es verdad que al principio puedes decir, se ve peligroso porque no sé qué.
Pero es que no es peligroso.
Uno, aquí no hay SQL injection porque se usan template literals.
¿Vale?
Para que nos hagamos una idea.
Esto es como utilizar algo parecido a esto.
¿Vale?
Email, algo así.
Como si fuese algo así.
Y aquí el email, este, values, no.
Sería como más bien esto.
Y este email se inyectaría en el values.
Algo así.
No se te va a poner root ni como ejemplo.
Grande.
No, hombre.
Porque no está bien.
Entonces, luego la gente va a venir.
¡Oh, que he utilizado root!
Entonces, esto, al final, lo que pasa es que se utiliza totalmente en el servidor.
Y no tendrías este código, no tendrías en el frontend.
Que es la idea, ¿vale?
Pero igual siempre se pudo con GetServerSideProp de NetJS.
Solo que ahora lo maquillaron con esa cosa de actions.
Efectivamente.
Es un maquillaje.
Ya está.
Ese es el tema, ¿no?
El problema es ese.
Que Twitter se tomó el SQL de manera literal.
Sí, sí.
Ha sido el problema totalmente.
He visto un comentario que me parece que está bastante bien.
Que, bueno, este de Diego.
Diego, a ver qué dice.
Server actions.
Ah, mira.
Para que la gente entienda.
Los server actions que se ejecutan en el servidor pueden devolver componentes de React.
Que esto me ha sorprendido un montón.
La verdad es que tiene muy buena pinta.
El hecho de que pueda devolver HTML directamente me parece brutal.
Y me parece muy bien el tuit que ha puesto aquí Dax que dice, vale, tiempo muerto.
Aquí está el trato, lo que hay como hay que tomar las server actions.
Si, oye, si estás súper contento de las server actions, estás equivocado.
Y si estás cabreado sobre ellos, estás equivocado.
Vamos a hacer esto.
Por desgracia, Teo tenía razón.
La llave de los haters es no entender que NetJS es un framework de backend.
Que esto también es cierto, que la gente no entiende eso.
Que me parece un punto importantísimo.
Mucha gente se cree que NetJS es un framework para hacer frontend.
A ver, si frontend ya podríamos hacer con React.
El tema de que todo lo que da NetJS, sobre todo, es la parte del backend.
Es toda la parte de cómo crear API endpoints.
Cómo hacer el fetching de datos en el servidor.
Cómo renderizar el frontend en el servidor.
Es más, es verdad.
Es que no sé por qué mucha gente se cree que justamente es como frontend.
Cuando en realidad es como todo lo contrario.
Es más, una parte de poder crear todo lo que hacemos en React en el servidor.
Y que toman las APIs y todo esto.
Claro, lo hacemos un framework full stack.
Pero porque es toda la parte de backend que le añadimos lo de React.
¿Entendéis?
Pero React es la parte.
Y mucha gente no entiende esto.
Yo creo que por desconocimiento a lo mejor de que no sabe cómo funciona NetJS.
Se creen que todo se ejecuta en el frontend, ¿sabes?
Es algo así.
Y la verdad es que no.
Es que en NetJS, todo lo que te añade NetJS, el enrutado del servidor.
Es todo para el servidor.
Que sí, que habrá ayudas para frontend y tal.
Pero que al final lo que hace es envolverlo desde el servidor, ¿sabes?
Y ese es el tema.
Y muchas veces yo creo que es lo que nos entiende.
Dice, fundamentalmente no hay nada malo con esto.
Lo has estado haciendo toda tu vida con otros lenguajes.
Solo que nunca te has centrado tanto en las partes del frontend.
Pero también lo siento por los fans de NetJS por no preocuparte por la gente de la separación de conceptos.
De separación de responsabilidades y tal.
Y en esto estoy totalmente de acuerdo.
Porque, a ver, tampoco estás obligado a utilizar el ejemplo del código.
Lo puedes separar en ficheros, en un montón de cosas, ¿no?
Me preocupa que las nuevas personas entren directo a NetJS sin conocer el fetch o la magia que hace la acción.
Es decir, crea más abstracción que pueda jugar a mal por muchas cosas.
Pues sí, estoy de acuerdo.
De hecho, es uno de los problemas, ¿no?
Que NetJS hace algunas magias que las parchea y que da un poco de miedo.
Además, las server actions se pueden escribir en otros ficheros.
Sí, sí, totalmente.
Lo he comentado antes y de hecho he puesto hasta un ejemplo de cómo lo deberíamos hacer.
Lo que hay que hacer y es entender que todos debemos trabajar de menos a más.
No irnos a instalar cosas, frameworks, si no las necesitas.
Se escala cuando se necesita.
Bueno, buen consejo también.
Frontend hasta con Java se puede hacer usando JSP.
Bueno, Frontend se puede hacer con todo en esta vida.
Entonces, el único real trabajo de un programador es la encapsulación.
Y entonces, ese trabajo lo tienes que hacer tú.
Claro, eso lo he visto mucha gente, ¿no?
Del hecho de, no, es que esto son malas prácticas y tal.
Lo he visto en el vídeo de Héctor de León que dice unas cuantas cosas que tiene razón.
Pero es verdad que en todos los lenguajes, en todos los lenguajes se pueden hacer malas prácticas.
Entonces, que veas un ejemplo porque te quieren explicar algo en concreto
y comprar ya el hecho de que entonces uno va a hacer malas prácticas ya es como, bueno,
también nosotros como creadores de contenido, como todo esto, tenemos que explicar esto, ¿no?
Ya ha pasado con ASP.NET, con Elixir, con Rubion Rails, con PHP.
O sea, es que no es tanto culpa del lenguaje al final.
Es el hecho de, bueno, hay un framework que te permite hacer esto.
No lo hagas así porque lo puedes separar, ¿sabes?
Es como si en un fichero pusieras 180 componentes de React.
Puedes hacerlo, pero cualquier persona no lo haría, ¿sabes?
O utilizar un componente de React para escribir toda la página.
Lo puedes hacer, pero seguramente no es buena idea, ¿sabes?
Entonces, es verdad que, y yo estoy de acuerdo, que el ejemplo tiene como malas prácticas
y creo que eso es el problema, ¿no?
Pero claro, mucha gente que tampoco se han puesto a pensar, bueno, pero se podrá hacer de otra forma
o realmente lo podemos...
Y ahí es donde creo que le falta seguramente el trabajo de la gente de Bersel
de hacerlo mejor para llamar la atención a esto, ¿no?
¿Estás diciendo que somos malos programadores?
No, no.
Lo que estoy diciendo es que por esta responsabilidad que no se hay malos programadores, ¿no?
Entonces, es por eso que en generaciones pasadas los frameworks tenían algunas ideas de encapsulación.
¿Son perfectos?
No.
Pero muchísimo mejor es que cualquier cosa que se te ocurra, dado que Next.js no tiene ninguna filosofía
sobre este problema.
Y eso es verdad, ¿no?
O sea, el problema es que si Next.js tuviese o te forzase algo en concreto, la gente se quejaría
de algún paradigma de, imagínate, que te obliga a hacer modelo vista controlador o alguna cosa.
La gente se quejaría también y lo entendería, porque al final se estaría metiendo en algo
que a lo mejor no es su problema.
Así que muchos de ustedes están a punto de repetir los mismos errores que vimos hace una generación
si no disminuyen la velocidad.
Bueno, la verdad es que está bastante interesante.
La verdad es que no entiendo tampoco tanto, tanto, tanto, tanto hate que ha habido por esto.
Pero sí que entiendo, sí que entiendo que hay un problema que de alguna forma la gente
de React tiene que escuchar.
Si hay tantas dudas, hay tanta confusión, hay tanto, no sé, tantas preguntas, yo creo
que, y yo lo digo, a mí la sintaxis me parece una mierda.
O sea, no me gusta, no me gusta.
Pero alguien podría pensar que esto era todo lo que ha hecho Vercell, que esto es todo
el punto de mira que teníamos, pero no.
Porque los server actions son algún patrón de diseño o es una solución nueva?
Es una solución nueva.
No sería un patrón de diseño como tal.
O sea, y al final, incluso yo creo que el problema es que esa cadena de texto mágica
es contraintuitiva, ¿no?
El ejemplo de Nex fue contraintuitivo, por eso tanta confusión.
Obvio, la gente también opina sin contexto, pero la explicación también era
el framework hace magia.
Sí, totalmente.
O sea, yo creo que totalmente.
Es que por eso digo que yo creo que alguna cosa se está haciendo mal en el ecosistema
de React y hay que hacer autocrítica justamente para mejorarlo.
Porque hay algo que no está mal.
O sea, que no está bien.
Y hay algo más todavía.
Porque amigos, a ver si no ha borrado el tuit esta vez.
Vale, ojo.
Ojo con esto.
Y quiero saber vuestra opinión, ¿vale?
Thomas Miller dice, 12 FT, han bajado 12 FT.
Vercell me ha baneado.
Sin advertencias, un viernes por la noche mientras estaba de vacaciones.
Lo que es peor todavía.
Me han tirado todos los proyectos y han confiscado todos mis dominios.
Sin respuesta de soporte.
12 FT.
¿Qué es 12 FT?
12 FT.
De hecho, veis que 12 FT ha caído hace tres horas.
¿Qué es 12 FT?
Bueno, 12 FT era, o sigue siendo que me imagino que ves, este despliegue ha sido desactivado.
Tu conexión trabaja funcionalmente.
Dice, no disponible por temas legales.
¿Cómo que legales?
¿Qué ha pasado aquí?
¿Qué ha pasado aquí?
Bueno, bueno, lo que ha pasado aquí, amigos, lo que ha pasado aquí es que 12 FT era una página web que te permitía saltarte los paywalls, ¿vale?
Los paywalls que son los murales de pago.
Cuando entrabas en una página web y por lo que sea te decían, oye, que tienes que pagar una suscripción para ver el contenido.
Pues lo que te permitía esto era saltarte ese muro de pago y ver el contenido de los portales de noticias, periódicos y en general, etcétera, ¿vale?
Entonces, bueno, total, que ha tenido un montón de likes, un montón de historias, a la gente le gusta mucho y ha contestado directamente Guillermo, que dice, a ver, hola, Tomás.
Entonces, tu sitio, que eludía los muros de pago, rompía nuestros términos de servicio y generó cientos de horas de soporte dedicadas a todo el alcance de las empresas afectadas.
Nuestro equipo de soporte se comunicó contigo el 14 de octubre para informarte que esto era insostenible y para intentar trabajar contigo.
O sea, el 14 de octubre.
O sea, que tardaron 15 días en darle de baja.
15 días, dos semanas, ¿no?
Dice, ¿cuál es la razón detrás de confescarle todos los proyectos cuando eso no tiene nada que ver con 12 FT?
No estamos confiscando.
Esto es que, como no respondía, tuvimos que tomar una acción preventiva.
Obviamente, como entonces, estamos más que felices de trabajar con el cliente para llegar a una resolución positiva, ¿vale?
Dice, vale.
Y dice Tomás, y contesta, dice, recibí cuatro emails de soporte en 2023.
No creo que esto constituya cientos de horas de trabajo.
Pero, por cierto, lo entiendo.
Si quieres ser un proveedor de alojamiento obstinado y no alojar 12 FT, no te preocupes.
Simplemente restaura mis otros proyectos, devuélveme mis dominios y nos relajaremos.
¿Vale?
Ahí.
O sea, ¿qué opináis?
¿Qué opináis de esto?
¿Creéis que está bien lo que...?
¿Sabes?
O sea, ¿creéis que Versailles ha hecho bien?
12 FT al final se estaba asaltando.
Era como piratería.
Lo podríamos entender.
Podemos...
Nos puede gustar la idea logable detrás.
Pero el tema es que era como piratería en el que se estaba asaltando los muros de pago de un montón de páginas web, ¿no?
Y, obviamente, era una...
¿Podría constituir delito?
No lo sé.
No sé si podría constituir delito, la verdad.
Lo legal es justo.
Depende de lo que le exija la ley.
A ver, yo creo, sinceramente, que más bien lo que ha pasado aquí es que más que haya sido un delito y tal...
Han podido pasar dos cosas que me vuelo yo aquí, ¿no?
Yo creo que una empresa de una de estas, de un periódico, se ha quejado.
Se ha quejado y ha dicho, oye, hay esto, pasa esto, y esto he visto que está en tu servidor, haz algo.
O directamente un abogado se lo ha dicho.
O sea, un abogado, quiero decir, alguien de una de estas empresas le ha mandado ya directamente el abogado, ¿sabes?
De decir, oye, legalmente esto, que sepas que tal, y si no, vamos a empezar a tal.
Lo único que veo como malos son los tiempos.
Muy poco tiempo entre los correos y la ejecución.
Bueno, resulta que el último correo, el último, o sea, el último correo era el 14 de octubre.
Pero resulta que le envió más, ¿eh?
O sea, cuatro e-mails en todo 2023.
Cuatro e-mails en todo 2023.
O sea, cuatro e-mails en todo 2023.
O sea, el 14 de octubre era el último aviso.
Yo la verdad es que creo que, hombre, claro, que él diga que estaba de vacaciones.
A ver, yo esto sí que creo, no fueron dos semanas.
Fueron cuatro e-mails, no sabemos en qué tiempo.
De hecho, lo que dice Guillermo, es como que le han dedicado cientos de horas en este caso, ¿eh?
Dice, correcto, además de toda la coordinación interna, nos tomamos muy en serio las cargas de trabajo de los clientes
y la evaluación de los informes requiere tiempo y recursos.
Dice, esto no tiene ningún tipo de sentido.
Dice, esto no tiene sentido.
Todos los correos que me envió, ha sido el modelo, acción requerida, quejas contra 12FT,
con exactamente el mismo contenido citando una URL.
Y este año solo ha habido cuatro.
O sea, le han enviado cuatro e-mails en todo el año.
O sea, no sé, o sea, yo creo que...
Tema a tiempos, yo...
Tema a tiempos no voy a decir.
O sea, puedes estar de acuerdo o no en la acción,
pero tiempos, joder, no se puede decir.
Los ha ignorado.
Claramente los ha ignorado.
Y ahora dice que estaba de vacaciones, pero él tenía constancia de estos correos.
Dice, si son cientos de horas, ¿por qué no más correos electrónicos, eh?
¿Por qué no más?
¿Por qué no más?
Envíame más.
Hasta que no me envíes 100, no contesto.
¿Te imaginas?
Ay.
15 días.
Y 15 días, la verdad, es que me parece bastante tiempo, eh.
Me sorprende.
Si te envían cuatro y no toman medidas, ya es cosa de él.
Bien por Bersel.
12FT tiene una práctica ilegal.
¿Cuántos clientes de Bersel fueron afectados por 12FT?
¿Cuánto dinero perdieron?
Pero podrían tumbar solo 12FT porque los demás sitios y dominios.
Los demás sitios y dominios, dice Guillermo, que fue porque no contestaba.
No contestaba a los correos.
Lo que querían era solo bajar 12FT.
Pero claro, no estaba haciendo la acción, no estaba haciendo absolutamente nada.
Entonces, claro, si no te está contestando, yo entiendo que puedes pensar, hostia, me está ignorando.
A ver si le bajo 12FT y hace otra cosa maliciosa con mis servicios y tal, ¿no?
No es ilegal, es alegal quizás.
Pero ilegal, no.
Claro, ahí es donde puede ser que esté el tema, ¿no?
Hasta que no me caiga una demanda, no contesto.
Es lógico que bajen todo lo que respeta al propietario.
Al fin y al cabo, es el responsable de un servicio que rompe los términos y condiciones.
La responsabilidad no puede caer en un proyecto sino en el propietario.
Se ha retenido...
A mí parece que Bersel fue bastante permisivo.
Google te manda un correo si no diste atención a Dios.
Bueno, Google te manda un correo una vez que lo ha hecho.
Google te manda un correo una vez que lo ha hecho.
O sea, Google es una cosa loca, ¿eh?
Dice, no me puedo imaginar como lo que se siente tener las pelotas lo suficientemente grandes
como para quejarse cuando un proveedor de hosting cancela un proyecto que existe
para literalmente eludir los muros de pago.
Demonios, no me puedo imaginar tener pelotas lo suficientemente grandes
como para siquiera enviar un imán de demandas así.
Respeto.
La verdad es que Guillermo, tío...
O sea, Guillermo...
El CEO de Bersel que te contesta personalmente, tranquilamente, porque además, tranquilamente.
Muchos al CEOs en contra de Bersel, Midu.
¿Crees que esto afecta a la reputación de Bersel?
A ver, yo creo...
Yo creo que algunas sí que han afectado a la reputación de Bersel,
pero yo creo que es normal.
Bersel ha crecido mucho en muy poco tiempo, cada vez más grande.
Han hecho muchas cosas muy bien, otras cosas las podrían haber hecho mejor.
Creo que es normal que ahora se está encontrando mucho de este tipo de cosas,
pero creo que en general, como por ejemplo este caso, podemos estar de acuerdo, ¿no?
y tal, pero creo que han actuado súper bien y creo que Guillermo...
O sea, creo que Guillermo...
Tío, Guillermo es top.
Es top, lo dice Johnny Depp, pero es top a la hora de saber tratar este tipo de cosas.
Ya hay cosas que se ha podido equivocar, Bersel en general y tal,
pero que el tema es las afronta.
Las afronta con tranquilidad, aceptándolas con deportividad y es súper importante.
Tener la cabeza tan amueblada, no tomárselo personal y fíjate,
o sea, yo esta contestación me parece top, me parece top.
O sea, es impresionante, impresionante.
Y dar la cara como CEO de una empresa tan grande, a mí me parece increíble.
O sea, que yo creo que ahí hablan muy bien.
Yo creo que lo que consigue mucho Bersel, y esa es mi opinión,
es que puede ser que afecte todos estos aseos negativamente de forma, de comunidad,
como que de forma popular, pero afecta muy positivamente a nivel...
A una parte de la comunidad y sobre todo a tema más de business.
¿Sabes? O sea, al final, esta contestación, tema business.
Entonces, yo soy una empresa y yo con esto me quedo más tranquilo.
¿Sabes? Yo tengo una empresa que digo,
¡Ostras! Soy un periódico, que estoy hospedado en Bersel,
y veo esto, y cómo lo trata, y no sé qué,
y la verdad es que a mí me quedaría más tranquilo.
En mi opinión, creo que esto le puede venir bien para este tipo de cosas.
Y te, obviamente, también se ha metido aquí en el vergeneral usuario.
¡Vaya! No puedo creer que hayas eliminado mi cuenta sin previo aviso.
Servicio. Bueno, estabas violando la ley, nuestro servicio, términos y condiciones.
Te hemos enviado un correo electrónico hace dos semanas, bueno, cuatro, en 2023, usuario.
Y esperabas que viera ese correo electrónico.
¿Has oído hablar de vacaciones alguna vez?
Que encima, la verdad, realmente, claro, son todo el año del 2023.
Sinceramente, si nosotros, yo creo que este tipo de cosas hay que verlas más
desde el punto de vista que si nosotros tuviésemos una empresa
y ocurriese esto, ¿cómo nosotros actuaríamos?
Y yo, la verdad, intentaría actuar lo más parecido a Guillermo.
Yo me quitaría esa web de encima, totalmente.
Y entiendo lo que muchos decían, que es alegal, que es solo un juez, que no sé qué.
Pero si el servicio, yo soy el CEO de Vercell y yo lo cierro.
O sea, no me lo pienso ni dos veces.
Ni dos veces. Yo no quiero problemas.
O sea, yo lo que quiero es mi servicio, sano.
Gente, además, una persona que no está pagando el servicio.
No sé.
O sea, yo lo tengo clarísimo.
Es inevitable que estos problemas surjan y se vuelvan públicos.
Especialmente una empresa que se comunica mucho via redes sociales
y que está muy cerca de la comunidad.
No creo que les impacte demasiado.
Empresas más grandes tienen peores problemas y responden horriblemente o no responden.
Sí, sí. No, totalmente.
Pero bueno, quieras o no, o sea, yo no digo que esté de acuerdo de que le afecte o no le afecte.
O sea, no que esté de acuerdo, sino que veo que sigue afecta porque veo que hay gente que responde mal a esto, ¿sabes?
Hay gente que dice, no me lo puedo creer.
Qué asco de gente. No utilizo más.
¿Ves? Dice, no quiero hablar de...
No quiero engañar a ningún proveedor de la gente más aquí,
pero me encantaría compartir uno que es Feron, no sé qué.
Una de las razones por la que construimos Feron, ¿ves?
Gente aprovechando para poner su publicidad.
Gente diciendo, pero si esto no es ilegal, porque no sé qué.
Me da miedo que en un hosting pueda hacer esto, ¿no?
O sea, que puedes ver que hay un montón de gente que sí que se lo toma mal, ¿no?
Y esto es lo que, quieras o no, pues de alguna forma le puede afectar.
Que yo esté de acuerdo, pues a ver, yo hubiera hecho exactamente lo mismo que ha hecho, ¿eh?
Yo lo único que veo cuestionable es quizá tirar los servicios que fueron legales,
pero tampoco que el contrato tenía...
Yo creo que ahí sí, pero es verdad que, claro, si no me contesta los correos,
yo es que le desactivaría la cuenta también, ¿eh?
Ya vimos los términos de uso el otro día.
Ya, Vercell se manda a las suyas, pero es una empresa que escucha mucho a la comunidad
y sabe sacar lo mejor de las críticas, hasta de las que no se merece.
Bueno, totalmente.
Para mí todo es manipulación.
Estamos hablando de grandes esferas.
Todo, todo es manipulación.
Todo, todo.
Es por poner un ejemplo, pero hace poco me robaron mi cuenta de Steam con dinero en juegos y demás cosas.
Les envío un correo y ni me contestaron.
Guillermo es el CEO y hasta le responde personalmente por Twitter.
Bueno, pero Steam, obviamente, es más grande que Vercell.
Por un momento, Javis pensaba que me ibas a decir que te contestó Guillermo, tío.
Pensaba que ibas a decir, perdí mi cuenta de Steam y me contestó Guillermo y me lo solucionó.
Porque lo he visto así en diagonal y le digo, hostia, la leche.
Ahora le diré a Netflix, Amazon, Crunchyroll que no envíen correos en vacaciones.
Le contestó Gabe.
Hostia, sería buenísimo que te conteste Gabe, ¿eh?
He visto que has perdido tu cuenta.
Seguro que al principio contestaba.
Seguro que esto pasaba al principio y luego dejó de pasar porque al final cada vez se hace más grande
y no puedes hacerlo.
Pero es verdad que a Guillermo se le nota que tiene un cariño especial a Vercell,
como que es su empresa, pero que la trata con inmenso cariño, ¿sabes?
De que está ahí encima para todos los detalles.
Y eso está muy chulo, ¿eh?