
﻿WEBVTT
Kind: captions
Language: es

00:00:00.000 --> 00:00:08.680
Cuonda, la comunidad de podcast independientes en español.

00:00:08.680 --> 00:00:33.440
Bienvenidos a CAFÉ SWIFT, el podcast donde hablamos del lenguaje de programación SWIFT

00:00:33.440 --> 00:00:39.840
de Apple, solo no.

00:00:39.840 --> 00:00:45.240
Hablamos de programación, de herramientas para desarrolladores y de distintas experiencias,

00:00:45.240 --> 00:00:51.000
pero siempre desde el punto de vista de desarrolladores en entornos Apple y del lenguaje SWIFT.

00:00:51.000 --> 00:00:55.880
Y esos desarrolladores somos Arturo Rivas y Julio César Fernández.

00:00:55.880 --> 00:01:13.240
¡Comenzamos!

00:01:13.240 --> 00:01:18.440
Hola y bienvenidos a una nueva entrega de CAFÉ SWIFT.

00:01:18.440 --> 00:01:23.720
Un café, digamos, de verano, sobre todo en el hemisferio norte, por favor con hielo,

00:01:23.720 --> 00:01:29.520
porque aquí en Madrid, donde estoy yo y donde también está mi compañero Julio, hace mucho

00:01:29.520 --> 00:01:34.920
calor, pero bueno, nosotros estamos dentro de nuestras casas lo más frescos que podemos

00:01:34.920 --> 00:01:40.720
y aunque sea verano, hay una gente que no para porque la verdad que como estamos en

00:01:40.720 --> 00:01:48.800
periodo de ventas, pues cada 15 días más o menos hay una novedad que la gente empieza

00:01:48.800 --> 00:01:49.800
a comentar.

00:01:49.800 --> 00:01:55.040
Así que, Julio, ¿qué es que no nos dejan descansar esta gente?

00:01:55.040 --> 00:02:03.200
Básicamente, 35 grados ahora mismo en Madrid, temperatura máxima, pero efectivamente desde

00:02:03.200 --> 00:02:11.040
Cupertino no nos dejan descansar, bueno, llevan un montón de veranos sin dejarnos descansar

00:02:11.040 --> 00:02:14.280
y teniendo novedades de manera casi continua.

00:02:14.280 --> 00:02:20.360
De hecho, la verdad que bien, porque por lo menos tenemos la ocasión de poder reunirnos

00:02:20.360 --> 00:02:27.840
y de poder grabar estos programas y después de ver el éxito que tuvimos en el anterior

00:02:27.840 --> 00:02:33.120
programa que hicimos ese repaso de todo lo que había dado, o lo más importante de lo

00:02:33.120 --> 00:02:40.800
que había dado la WWDC, pues ahora ya vamos a volver a nuestro formato habitual, que la

00:02:40.800 --> 00:02:59.200
verdad que como ya sabéis tiene varios bloques y ¿cuál es el primero de los bloques?

00:02:59.200 --> 00:03:04.840
Pues el primero es que hemos estado haciendo, Julio, y sabemos que ayer has estado en la

00:03:04.840 --> 00:03:11.920
King League, pero antes, antes de ayer, ¿qué has estado haciendo? ¿Qué hemos estado haciendo?

00:03:11.920 --> 00:03:21.440
Pues buena pregunta. A ver, yo ahora mismo estoy todavía dando clase, de hecho por aquí

00:03:21.440 --> 00:03:27.720
está Dani Def que es alumno, que está todavía, de hecho creo que termino con ellos el miércoles

00:03:27.720 --> 00:03:33.640
si no recuerdo mal, terminando de ver SwiftUI, la gente de Talento Mobile, a los que saludo

00:03:33.640 --> 00:03:39.300
a todos los desde aquí, que han estado viendo pues una formación de SwiftUI muy interesante

00:03:39.300 --> 00:03:44.880
donde han aprendido pues las bases y el funcionamiento y un montón de truquitos y un montón de

00:03:44.880 --> 00:03:48.760
cosas y entonces bueno pues es una de las cosas con las que estoy. Luego otra estoy

00:03:48.760 --> 00:03:53.760
poniendo al día una aplicación de la que ya he hablado por aquí en algunas ocasiones,

00:03:53.760 --> 00:04:00.440
¿te acuerdas? La app esta que he comentado de gestión inmobiliaria que está desde un

00:04:00.440 --> 00:04:05.640
cliente, cliente barra amigo de Portugal, que bueno pues que me encargó esta aplicación

00:04:05.640 --> 00:04:11.440
hace ya un tiempo y la hemos ido transformando, haciendo y tal, pues ahora hay una serie de

00:04:11.440 --> 00:04:16.120
bugs, pequeñas cositas que hay que ir arreglando y además estoy aprovechando para ponerla

00:04:16.120 --> 00:04:22.320
un poco al día y bueno pues me sirve también de práctica para todo esto y luego por otro

00:04:22.320 --> 00:04:33.440
lado he estado súper divertido peleándome con Linux, ¿vale? Para echar a andar, para

00:04:33.440 --> 00:04:40.400
digamos volver a arrancar, ¿vale? Porque se había perdido lo que es el servidor de

00:04:40.400 --> 00:04:48.240
la plataforma de educación que estamos en pleno desarrollo, que está ya en fases finales

00:04:48.240 --> 00:04:53.920
y que bueno pues estábamos, el servidor había tenido un problema con una forma de conexión

00:04:53.920 --> 00:04:57.700
con la base de datos, luego había problemas con el firewall porque había cambiado la

00:04:57.700 --> 00:05:03.080
red aquí de casa y entonces pues no lo había adaptado, en fin, varios arreglos que he tenido

00:05:03.080 --> 00:05:08.760
que ir haciendo, el Jenkins también he tenido que actualizarlo, etcétera, pero bueno ya

00:05:08.760 --> 00:05:15.200
está funcionando sin ningún problema. Para que os hagáis una idea, este servidor, bueno

00:05:15.200 --> 00:05:24.560
el servidor pedazos, el servidor es una Raspberry Pi 4B con 4 gigas de memoria RAM que ocupa

00:05:24.560 --> 00:05:32.400
básicamente esto, es una placa chiquitísima y ahí tengo montado Ubuntu 22.04, la versión

00:05:32.400 --> 00:05:38.400
Long-Term Service y bueno pues ahí tengo montado Swift, ¿vale? Tengo montado Swift

00:05:38.400 --> 00:05:45.720
en este caso actualizado a la 5.8.1 que es la última oficial que tenemos y bueno pues

00:05:45.720 --> 00:05:54.920
ahí tengo montado aparte una base de datos PostgreSQL versión 14, tengo montado Redis

00:05:54.920 --> 00:06:00.200
que es uno de los complementos, lo que es la base de datos instantánea, que es un complemento

00:06:00.200 --> 00:06:07.080
que necesita la aplicación de Swift para programar crons, para programar works, para programar

00:06:07.080 --> 00:06:13.080
jobs que se lancen en determinado momento del tiempo y así pues yo puedo programar

00:06:13.080 --> 00:06:20.880
pues por ejemplo que cada 2-3 minutos pues vaya a los feeds de Cuonda y recoja si hay

00:06:20.880 --> 00:06:25.120
algún nuevo podcast publicado. Entonces en el momento en el que hay un nuevo podcast

00:06:25.120 --> 00:06:31.400
publicado pues manda una notificación a todos los dispositivos que están registrados para

00:06:31.400 --> 00:06:37.080
recibir estas notificaciones de que hay un nuevo episodio pues en el podcast de aquí

00:06:37.080 --> 00:06:41.960
de Café Swift o en el de Apple Coding, Apple Coding Daily, Nevekanazer, etcétera, ¿vale?

00:06:41.960 --> 00:06:49.120
Eso Julio, añades Redis, o sea tú añades Redis digamos como servicio en el servidor

00:06:49.120 --> 00:06:53.320
pero luego es Vapor el que llama a ese Redis, ¿no?

00:06:53.320 --> 00:06:58.240
Exacto, Vapor es el que llama y usa a ese Redis para montar una función de scheduler,

00:06:58.240 --> 00:07:02.840
¿vale? Entonces lo que haces que a través del programador tú lo que haces es generar

00:07:02.840 --> 00:07:10.800
jobs que lo que hacen es programarse, ¿vale? Tú digamos que programas una función, ¿vale?

00:07:10.800 --> 00:07:20.520
que está dentro del de lo que sería el protocolo Job no sé qué, no recuerdo ahora mismo el

00:07:20.520 --> 00:07:31.280
nombre exacto y esa digamos esa clase, ¿vale? que está conformada con ese método tiene

00:07:31.280 --> 00:07:36.680
un método de arranque, ¿vale? Tiene un método main que es el que va a ejecutarse cuando

00:07:36.680 --> 00:07:43.120
esa clase que está conformada con JobScheduler creo que era el protocolo en el momento en

00:07:43.120 --> 00:07:50.560
el que esta clase se ejecuta porque hay un trabajo que la va a ejecutar, ejecuta esta

00:07:50.560 --> 00:07:54.440
función principal y esa función principal pues luego ya hace lo que tenga que hacer

00:07:54.440 --> 00:07:59.000
esa función principal también tiene acceso a todos los recursos de la app, tiene acceso

00:07:59.000 --> 00:08:04.560
a la base de datos, tiene acceso al sistema de archivos, tiene acceso a cliente web, etcétera,

00:08:04.560 --> 00:08:11.800
etcétera. Entonces tú desde la configuración del servidor le dices que coja y le diga bueno

00:08:11.800 --> 00:08:19.480
pues quiero coger y decir que cuando pase por ejemplo pues le dices cada hora en el

00:08:19.480 --> 00:08:27.280
minuto tal de esa hora quiero que se lance este proceso o cada pues en este caso pues

00:08:27.280 --> 00:08:32.800
yo le he puesto por ejemplo cada periódicamente cada cinco minutos me parece o cada tres minutos

00:08:32.800 --> 00:08:37.640
una cosa así pero le puedes poner diariamente a una hora concreta le puedes poner que cada

00:08:37.640 --> 00:08:42.880
hora se vaya lanzando insisto a un minuto concreto que se lance cada x minutos en fin

00:08:42.880 --> 00:08:48.320
puedes tienes varias opciones muy fáciles de programar y entonces cuando expira ese

00:08:48.320 --> 00:08:54.960
temporizador que lo va llevando a través de Redis pues hace una instancia de ese protocolo

00:08:54.960 --> 00:09:01.160
JobScheduler y lanza la función por la cual hace los cambios que tiene que hacer y la

00:09:01.160 --> 00:09:08.240
verdad pues que está bastante bien y luego pues al final pues está ahí montado con también con

00:09:08.240 --> 00:09:14.960
Jenkins vale de forma que en el momento en el que yo subo una nueva versión a GitHub él

00:09:14.960 --> 00:09:21.720
automáticamente detecta que hay una nueva versión se descarga el nuevo código lo compila con el

00:09:21.720 --> 00:09:29.600
compilador de Swift y reinicia el Supervisor CTL para que el proceso pues cargue la nueva

00:09:29.600 --> 00:09:34.120
versión que ha tenido de manera instantánea entonces de esa manera pues tengo un servidor

00:09:34.120 --> 00:09:39.640
de desarrollo que me permite trabajar de una manera interesante luego eso pues tendré que

00:09:39.640 --> 00:09:47.360
replicarlo probablemente en las próximas semanas en algún servicio que tenga a través de internet

00:09:47.360 --> 00:09:53.840
vale que en principio iba a probar un servicio que hay aquí que es español que se llama Cloudyn

00:09:53.840 --> 00:09:59.960
si no me equivoco que bueno pues que se ve interesante vale entonces bueno pues ahí puedo

00:09:59.960 --> 00:10:05.480
montarme una máquina Linux y bueno pues lo puedo meter ahí y bueno pues a ver qué tal qué tal

00:10:05.480 --> 00:10:13.200
funciona. Todo un mundo esto de las DevOps. Madre mía. La cosa es que hay muchas maneras de hecho

00:10:13.200 --> 00:10:21.560
yo lo comparo y si acabaste ya Julio justo tengo yo también una historieta de este tipo que a ver

00:10:21.560 --> 00:10:27.440
porque nosotros o la gente que en principio hace aplicaciones para iPhone vale pues digamos que ya

00:10:27.440 --> 00:10:32.880
tiene su herramienta su SCOE desde SCOE subes tienes una Store vale pero toda la parte está

00:10:32.880 --> 00:10:42.200
de tener tu servidor lo puedes montar de mil maneras que si virtualizando que si Docker que

00:10:42.200 --> 00:10:49.120
si por ejemplo ahora incluso para la plataforma de Apple tenemos SCOE Cloud vale para la integración

00:10:49.120 --> 00:10:54.200
continua que es el Jenkins que has estado comentando pero claro en el lado servidor

00:10:54.200 --> 00:11:00.080
pues anchas castilla puedes utilizar Jenkins pero hay otras 50 soluciones seguramente luego

00:11:00.080 --> 00:11:06.720
cada plataforma de cloud también puede tener la suya en Amazon tienes la suya puede replicar

00:11:06.720 --> 00:11:13.960
las máquinas bueno ahí ahí puedes hacer un poco un poco lo que te dé la gana y a mí es que Jenkins

00:11:13.960 --> 00:11:20.680
es simplemente un orquestador vale o sea Jenkins lo que hace es detectar que hay una un nuevo un

00:11:20.680 --> 00:11:29.160
nuevo push en el branch que está supervisado y en cuanto lo detecta descarga todo él hace un pull

00:11:29.160 --> 00:11:35.600
del repositorio y automáticamente hace una compilación de Swift pero es básicamente lo

00:11:35.600 --> 00:11:40.720
que hace es ejecutar un shell que yo le he dado vale o sea que al final Jenkins ni entiende de

00:11:40.720 --> 00:11:48.440
Swift ni sabe nada. Tiene algunos plugins o tiene ya cosas automatizadas digamos como hablar con

00:11:48.440 --> 00:11:53.280
git vale con github y tal pero al final te tienes que hacer y una vez me lo hice incluso es que le

00:11:53.280 --> 00:11:59.720
metí cogía cuando detectaba el push ejecutaba lo que yo le decía que eran comandos de SCOE

00:11:59.720 --> 00:12:06.480
SCOE build o XC build ya no me acuerdo cuáles son los comandos como si ejecutases lo que hace

00:12:06.480 --> 00:12:11.560
SCOE por detrás cuando le das al botón de ejecutar pues SCOE build lo hacía yo eligiendo el target

00:12:11.560 --> 00:12:17.560
del esquema y todo eso y es que luego ejecutaba un pequeño script que me hice nunca lo adivinarías

00:12:17.560 --> 00:12:28.200
en Swift vale que preguntaba a la API del App Store si ya estaba procesado el binario vale para

00:12:28.200 --> 00:12:33.600
luego no sé eso ya no me acuerdo cómo lo hacía creo que con un plugin en el slack de la empresa

00:12:33.600 --> 00:12:39.000
le notificaba en un canal vale que ya estaba disponible disponible la build pero al final

00:12:39.000 --> 00:12:43.400
es eso te lo tienes que guisarte un poquito pues eso Jenkins te ayuda porque tiene plugins y como

00:12:43.400 --> 00:12:48.760
workflows un poco establecidos pero al final tienes tienes que saber no es no es inmediato

00:12:48.760 --> 00:12:56.800
si además con Jenkins haciendo SCOE build puedes hacer informes que queden así bonitos con un

00:12:56.800 --> 00:13:01.920
plugin que hay que lo que hace es reformatear de las salidas de XCODE build para que tengan

00:13:01.920 --> 00:13:08.680
colorines y luego te saca los informes y tal todo eso lo enseño en la en la academia lo que pasa que

00:13:08.680 --> 00:13:15.400
es algo que es tan mecánico vale porque al final es conocerse las instrucciones de memoria y

00:13:15.400 --> 00:13:19.280
obviamente no te las vas a saber por lo que al final lo que estás haciendo es un guiaburros

00:13:19.280 --> 00:13:24.800
es pegarte una vez con ello hacerte algo y cada vez que te toque hacerlo repetir normalmente me

00:13:24.800 --> 00:13:29.200
pasa con eso que cada vez que me toca hacerlo voy otra vez a lo que tenía hecho antes y a veces le

00:13:29.200 --> 00:13:34.880
meto una cosilla más lo voy mejorando poco a poco en el nuevo proyecto bueno pues yo me he metido en

00:13:34.880 --> 00:13:38.760
un fregado vale pues me llegó una aplicación que bueno al final por los no era una aplicación

00:13:38.760 --> 00:13:46.200
era una aplicación de ellos una aplicación de android y una y un servidor vale pues nada pues

00:13:46.200 --> 00:13:52.400
la idea era que estaba hecho por una empresa externa y era pues traerlo aquí y ponerme yo

00:13:52.400 --> 00:13:58.480
al día de eso y bueno pues después de pegarme con cosas como arrancar node.js y dejarlo arrancado

00:13:58.480 --> 00:14:04.320
luego de repente amazon decidió que la máquina de producción se paraba porque patata vale y claro

00:14:04.320 --> 00:14:10.960
como yo todavía no tenía controlada la cuenta de amazon osea de AWS pues eso ni me enteré bueno

00:14:10.960 --> 00:14:17.360
y nada pues me estuve me estuve poniendo a punto un poco estaba todo un poco desastre pero bueno

00:14:17.360 --> 00:14:22.680
más o menos ya ya me hice con ello pedí ayuda a un amiguete para la parte del servidor que es la

00:14:22.680 --> 00:14:28.880
que más me cogea y nada pues ahí está la tecnología digamos en mi poder y hemos hecho dos

00:14:28.880 --> 00:14:34.400
o tres cambios en la aplicación uno de ellos que puede parecer muy sencillo pero lo que les pasa

00:14:34.400 --> 00:14:41.560
muchas aplicaciones es que la gente tiene muchas descargas y sobre todo se hacen campañas en redes

00:14:41.560 --> 00:14:47.200
vale con google adwords o con con algo parecido pues la gente entra se la descarga pero no sé

00:14:47.200 --> 00:14:54.080
cuando ven un registro ahí ya hay un poco de fricción y mucha gente la desecha y una cosa

00:14:54.080 --> 00:15:02.880
tan tonta como es añadirle el login social que en EOS le hemos puesto el login con apple y en

00:15:02.880 --> 00:15:10.640
android el login con google pues ha aumentado pero un montón no tengo las cifras pero un montonazo

00:15:10.640 --> 00:15:17.360
de gente que ya se registra pero un montón que también es verdad yo es que yo lo me ha pasado

00:15:17.360 --> 00:15:21.440
alguna vez de entrar y si me tengo que registrar me da pereza pero mejor si le doy al login con

00:15:21.440 --> 00:15:26.480
apple que le dé un botón y aparte luego si no quiero que me dé más la brasa cojo y desactivo

00:15:26.480 --> 00:15:33.720
login con apple y esa aplicación ya no me va a dar más la brasa pues la verdad es que entro más

00:15:33.720 --> 00:15:39.680
fácil no sé si te pasa lo mismo julio la verdad es que sí la verdad que cuando yo veo que hay

00:15:39.680 --> 00:15:47.520
opción de usar sending with apple es que ni me lo pienso la verdad que es una cosa que principalmente

00:15:47.520 --> 00:15:54.880
porque por un lado sé que van a proteger mi identidad porque yo no le doy el nombre y ni

00:15:54.880 --> 00:16:02.080
tampoco le doy el email por otro lado también es algo que me parece muy interesante el hecho

00:16:02.080 --> 00:16:10.720
de que con sending with apple tienes ese email falso de acuerdo y claro que sucede con ese email

00:16:10.720 --> 00:16:18.200
falso pues bien sucede que yo estoy o sea para que tengas una idea yo todos los días puedo recibir

00:16:18.200 --> 00:16:28.240
del orden de 50 a 60 emails más o menos y eso que estamos en verano de esos 50 o 60 emails hay

00:16:28.240 --> 00:16:37.360
aproximadamente un 50 a 60 por ciento que son boletines a los que yo no me he suscrito ni he

00:16:37.360 --> 00:16:45.240
pedido ni quiero que me cuenten ni absolutamente nada qué es lo que sucede que teniendo una cuenta

00:16:45.240 --> 00:16:50.480
de sending with apple y habiéndote logado con la cuenta de sending with apple simplemente entras

00:16:50.480 --> 00:16:59.160
en el listado que tienes en apple y dice este fuera este fuera este fuera y a partir de ahí por

00:16:59.160 --> 00:17:07.120
mucho que te manden boletines que tú nunca has pedido porque de hecho yo me cuido muy mucho de

00:17:07.120 --> 00:17:15.960
no marcar la casilla de enviar noticias o anuncios que puedan tener es que no me interesa vale a

00:17:15.960 --> 00:17:20.640
pesar de todo te lo siguen enviando entonces yo en el momento en el que veo sending with apple

00:17:20.640 --> 00:17:27.840
me siento mucho más cómodo y le doy y no me lo pienso desde luego pero ya parte y ya voy un paso

00:17:27.840 --> 00:17:33.860
más allá con nightcloud tienes la cloud plus este que que llaman que te permite generar alias de

00:17:33.860 --> 00:17:40.640
correo allá donde vayas más allá del sending with apple si a lo mejor tengo 300 a todo lo que me

00:17:40.640 --> 00:17:46.080
suscribo me suscribo con uno de estos alias porque porque luego a ver tiene un punto bueno y otro

00:17:46.080 --> 00:17:50.840
malo vale un punto bueno es que coges cortas el alias y ya está y aunque tú le hayas dicho porque

00:17:50.840 --> 00:17:55.920
hay empresas que aunque tú le digas que no ellos siguen y siguen o que venden tu dirección a terceros

00:17:55.920 --> 00:18:04.200
vale que es el problema y luego sigue recibiendo eso bueno yo a mí mi favorito es el el de te das

00:18:04.200 --> 00:18:10.920
de alta y te mando te empiezo a enviar ya spam a como locos pero cuando pides darte de baja y

00:18:10.920 --> 00:18:19.880
tienes que esperarte 72 horas que se dé de baja y lo único que es también por otro lado julio que

00:18:19.880 --> 00:18:25.800
es la parte mala es que te ata a este proveedor de correo vale porque yo mientras quiera tener

00:18:25.800 --> 00:18:30.040
todas esas suscripciones o todo eso con esos alias tengo que seguir utilizando mi correo de

00:18:30.040 --> 00:18:35.440
apple si mi otro correo pues tendría que redirigirlo hacer algún hechizo vale pero no

00:18:35.440 --> 00:18:46.240
lo vas a hacer porque como yo somos prisioneros del ecosistema el ecosistema te cuida el ecosistema

00:18:46.240 --> 00:18:52.200
te protege no te vayas del ecosistema el jardín vallado de apple es que las vallas son muy altas

00:18:52.200 --> 00:19:00.320
no hay dios que salga de aquí absolutamente y hace mucho frío fuera totalmente pero apple lo hace

00:19:00.320 --> 00:19:09.720
por tu bien lo hace por ti para cuidarte para que te sientas más seguro y si por el camino por lo

00:19:09.720 --> 00:19:17.560
que sea se hace la compañía más valorada del mundo pues mejor porque lo hacen muy bien es un

00:19:17.560 --> 00:19:25.240
efecto efecto secundario no sí sí absolutamente como dice nuestro amigo bilio esclavos del

00:19:25.240 --> 00:19:34.840
ecosistema absolutamente en fin y luego también ya lo último estado con tema bueno un tema que

00:19:34.840 --> 00:19:41.280
es una chapa meter analítica en una aplicación sobre todo es una chapa porque hay que definirlo

00:19:41.280 --> 00:19:46.680
muy bien vale y tiene mucha parte de entender bien lo que quieren es decir porque un evento

00:19:46.680 --> 00:19:52.240
no es lo mismo que una imagínate una acción es un evento es quiero mandar a x plataforma google

00:19:52.240 --> 00:19:58.160
analytics que envío un mensaje en un chat pero cuando lo mando cuando dé al botón para enviar

00:19:58.160 --> 00:20:06.080
el mensaje cuando lo mando al servidor cuando el servidor me responde ok hay muchas partes y claro

00:20:06.080 --> 00:20:11.200
muchas veces hablas con la gente analítica y se te quedan mirando con cara de póker de yo te voy a

00:20:11.200 --> 00:20:17.960
definir un evento no me líes o por ejemplo en la navegación de pantalla dile a la librería de

00:20:17.960 --> 00:20:24.960
google que lo mande y ya está y tú no me gustan las librerías y que no es lo mismo ponerlo en

00:20:24.960 --> 00:20:30.800
el view did low con los eventos de pantallas que en el view did appear porque depende si estás

00:20:30.800 --> 00:20:37.360
utilizando push navegación en push imagínate tienes un listado y vas al detalle y depende

00:20:37.360 --> 00:20:42.440
de lo pongas cuando vuelvas otra vez de un detalle al listado otra vez lo mandas o no vale que eso

00:20:42.440 --> 00:20:48.840
también también es bastante importante y pues nada pues eso al final mucho mucho hablar de eso

00:20:48.840 --> 00:20:53.920
de hecho te lo definen no está en este documento ya bueno pero tengo un montón de preguntas señoría

00:20:53.920 --> 00:21:02.040
sobre sobre ese documento yo tengo hecho una una especie como de para todas estas aplicaciones

00:21:02.040 --> 00:21:11.560
tengo hecho como una especie de cola de eventos vale en el que yo le mando cosas a esa cola vale

00:21:11.560 --> 00:21:18.000
y esa cola las acumula y las va mandando cuando le apetece al muchacho es como una especie de

00:21:18.000 --> 00:21:24.880
aleatoriedad o algo así que en el momento en el que a él le apetece a través de temas pues los va

00:21:24.880 --> 00:21:30.240
enviando y los que pueda ir enviando mientras la app está encendida estupendo y los que no pues

00:21:30.240 --> 00:21:36.000
los enviará los tienen colados y los irá enviando cuando sea y si alguno de ellos por lo que sea

00:21:36.000 --> 00:21:41.600
diera error pues se queda y almacenado hasta que lo puede enviar y lo envía de esta manera entonces

00:21:41.600 --> 00:21:47.760
bueno pues en ese sentido la verdad que se lo recomiendo julio hacer algo así cuando me piden

00:21:47.760 --> 00:21:53.760
meter algo de analítica no vamos a mandar eventos a google analisis digo pero vamos a enviarlos

00:21:53.760 --> 00:21:58.160
también a nuestro servidor aunque estén en una tabla y de momento no los utilicemos para nada

00:21:58.160 --> 00:22:04.360
pero ese mismo evento lo vamos a mandar a nuestro servidor yo es que directamente a ver si el cliente

00:22:04.360 --> 00:22:10.320
te viene y te dice no hay que ponerlo en tal no sé qué no le vas a decir que no yo lo de toda

00:22:10.320 --> 00:22:17.680
manera yo lo intento convencer si no se deja o no eso o automáticamente es que forma parte de su

00:22:17.680 --> 00:22:25.760
forma de trabajo etcétera bueno pues hay que aceptarlo vale pero pero en el caso de mis proyectos

00:22:25.760 --> 00:22:34.360
yo jamás utilizo google analytics ni ningún tipo de analytics de nada entonces diréis es que no

00:22:34.360 --> 00:22:41.400
recoge esa analítica sí por supuesto pero las recojo yo en mi sistema para mi aplicación y

00:22:41.400 --> 00:22:52.240
curiosamente si haces eso no hay que poner el diálogo de privacidad el diálogo de permitir

00:22:52.240 --> 00:22:59.520
a la app que te rastre el diálogo de transparencia de privacidad no hay que ponerlo si los datos te

00:22:59.520 --> 00:23:07.000
los vas a quedar tú y tienes declarada en tu política de privacidad que estás recopilando

00:23:07.000 --> 00:23:13.880
estos datos entonces pues no tienes ningún problema porque el problema de la transparencia

00:23:13.880 --> 00:23:21.040
de privacidad el tener que poner ese diálogo que ese diálogo estadísticamente hablando el 98% de

00:23:21.040 --> 00:23:28.680
la gente pulsa que no te rastrea la app vale cosa que nos alegra enorme a mí me da fe en la humanidad

00:23:28.680 --> 00:23:34.600
sí sí básicamente yo creo que puede haber salida sobre todo ahora que parece ser que no van a invadir

00:23:34.600 --> 00:23:43.160
los ovnis o que en fin este tipo de cosas entonces aparte de bueno pues que ese diálogo vale de

00:23:43.160 --> 00:23:50.760
transparencia de privacidad hay que ponerlo cuando los datos analíticos sean cedidos como dice apple

00:23:50.760 --> 00:24:00.280
a terceras partes vale hacer parties si tú cedes tus datos a google a facebook a app no sé qué

00:24:00.280 --> 00:24:06.800
guapan y igual como se llame el servicio que sea ahí tienes que poner el diálogo de transparencia

00:24:06.800 --> 00:24:12.200
de privacidad porque en realidad estás cediendo los datos de tu app a un servicio de terceros

00:24:12.200 --> 00:24:19.280
pero claro si tú los montas para ti para ti mismo en tu propia o en tu propio servidor que es lo que

00:24:19.280 --> 00:24:26.680
yo hago yo no tengo que pedir eso y puedo quedarme y puedo incluso identificar a los usuarios yo

00:24:26.680 --> 00:24:35.080
genero un ID único un UUID que generó en un momento determinado cuando la app se arranca la

00:24:35.080 --> 00:24:43.800
guardo en la cartera de certificados y lo uso como identificador único de esa instalación sin tener

00:24:43.800 --> 00:24:53.160
que utilizar el ID de publicidad el ID for advertising el IDFA porque lógicamente yo

00:24:53.160 --> 00:24:59.000
los datos son sólo para mí o sea el problema no son esos datos el problema es que los quieras

00:24:59.000 --> 00:25:06.180
compartir con terceros y que esos terceros hagan match de ese ID entre distintas apps para que si

00:25:06.180 --> 00:25:16.640
tú entras en amazon y buscas yo que sé pues buscas cualquier cosa vale un disco duro pues luego no

00:25:16.640 --> 00:25:22.680
entras en instagram y te diga oferta de disco duro vale esas cosas vale porque al final pues

00:25:22.680 --> 00:25:29.320
es un poco donde si aceptamos estos estos cambios si efectivamente al final el identificador de

00:25:29.320 --> 00:25:34.320
publicidad que es con el lo que hubo todo ese ese problema es eso para identificarte en distintas

00:25:34.320 --> 00:25:39.200
aplicaciones si tú estás haciendo analítica sólo para tu aplicación pero claro el problema es que

00:25:39.200 --> 00:25:45.560
si tú estás utilizando una plataforma estas de terceros te obligan o te dicen no si quieres datos

00:25:45.560 --> 00:25:53.800
buenos pon ese diálogo para ver si me dicen que si me dicen que ok y luego claro te ponen un montón

00:25:53.800 --> 00:25:58.960
de excusas y luego los datos no no cuadran mucho y le dices algo decir ah es que claro la gente no

00:25:58.960 --> 00:26:04.960
no está aceptando esto si no de hecho ahí yo he visto a pesar de que creo que está prohibido por

00:26:04.960 --> 00:26:11.280
apple poner algún tipo de de a ver lo que creo está prohibido por apple si efectivamente está

00:26:11.280 --> 00:26:17.520
prohibido por apple el que obligues vale es decir que si quieres tener tal funcionalidad dale al

00:26:17.520 --> 00:26:23.680
botón de que sí vale eso está prohibido por apple pero que no está prohibido es el ipad yo miraba y

00:26:23.680 --> 00:26:30.080
por favor para mis niños que tienen que comer tal noche que el pedirle no que el entonces eso sí se

00:26:30.080 --> 00:26:38.200
puede hacer vale el llorarle al usuario eso sí se puede hacer pero porque al final volvemos a

00:26:38.200 --> 00:26:46.800
repetir lo mismo no no son datos para ti que sí que tú vas a recibir un beneficio porque las

00:26:46.800 --> 00:26:53.320
analíticas de una aplicación son algo imprescindible porque no hay nada más útil para ningún

00:26:53.320 --> 00:26:59.680
desarrollador a nivel de usabilidad de sus apps que saber quién como cuándo y de qué manera se

00:26:59.680 --> 00:27:07.160
está usando una app si tú tienes 20 opciones distintas es importante saber cuánto tiempo pasa

00:27:07.160 --> 00:27:12.640
tu usuario en cada una de esas opciones o cuáles son las que más usa o cuánto tiempo está usando

00:27:12.640 --> 00:27:20.520
tu aplicación etcétera etcétera entonces eso es muy importante a todos los niveles como desarrollador

00:27:20.520 --> 00:27:26.080
para saber qué partes de tu app pueden ser mejorables qué partes no qué partes tienen

00:27:26.080 --> 00:27:32.320
más éxito qué partes no si hay algún tipo de problema de usabilidad o de experiencia de usuario

00:27:32.320 --> 00:27:37.640
que impida que el usuario llegue a alguna parte determinada en fin todo eso es desde luego muy

00:27:37.640 --> 00:27:44.760
muy importante pero todo eso lo puedes hacer con tu propio servidor gestionando tus propios datos

00:27:44.760 --> 00:27:55.440
y sin darle de comer a los monstruos de meta de google de microsoft o cualquier otro que va pues

00:27:55.440 --> 00:28:00.800
es que apple lo define perfectamente en el vídeo de transparencia de privacidad de apps porque son

00:28:00.800 --> 00:28:09.640
brokers de datos es que es eso entonces no perdona yo broker de datos para que si busco algo en algún

00:28:09.640 --> 00:28:16.120
lado o si he buscado para irme de viaje a yo que sé adónde y de pronto te empiezan a aparecer viajes

00:28:16.120 --> 00:28:22.920
por todos lados o te empiecen lo siento pero yo no quiero porque además está totalmente direccionado

00:28:22.920 --> 00:28:31.400
mira yo todo el mundo sabe y no cuento ninguna cosa que nadie conozca que yo a nivel no político

00:28:31.400 --> 00:28:37.480
pero sí económico soy liberal vale yo tiendo a una figura de economía liberal vale y de hecho

00:28:37.480 --> 00:28:45.320
sigo al gran profesor juan rayo vale entonces con amor rayo qué pasa que yo pues cuando estoy

00:28:45.320 --> 00:28:52.520
en tiktok pues obviamente me quedo viendo vídeos que hablan de economía liberal de teorías del

00:28:52.520 --> 00:28:57.760
liberalismo de tal de no sé qué porque bueno me interesa me parece interesante vale qué es lo que

00:28:57.760 --> 00:29:07.600
sucede pues que al final el sesgo que estas redes tienen de lo que nos gusta es brutal porque al

00:29:07.600 --> 00:29:15.600
final yo cuando enciendo tiktok tengo tres temas que se repiten de manera recurrente que son humor

00:29:15.600 --> 00:29:22.480
vale me pone monólogos del club de la comedia y tal y cual porque yo cada vez que sale goyo cada

00:29:22.480 --> 00:29:30.560
vez que sale algún monólogo de estos del club de la comedia o incluso también al en fin varios

00:29:30.560 --> 00:29:37.560
humoristas vale que tal luego tengo la parte de economía liberal vale que me sale marvidal me

00:29:37.560 --> 00:29:42.480
sale cuando monrayo me salen pues todas esta gente vale y luego tengo la tercera parte que

00:29:42.480 --> 00:29:48.440
es los animes entonces me sale gente reaccionando episodios de anime noticias de anime tal y cual

00:29:48.440 --> 00:30:00.360
dices hostia y claro eso al final ellos lo pueden vender y si tú sabes que una persona está viendo

00:30:00.360 --> 00:30:07.520
por ejemplo contenido de anime viendo noticias viendo reacciones a episodios se está quedando

00:30:07.520 --> 00:30:15.280
en las reacciones por ejemplo a los episodios de demon slayer de kimetsu no ya iba pues entonces

00:30:15.280 --> 00:30:21.400
es que le gusta esa serie o sea pues ya tienes ahí un dato muy importante para ir a venderle

00:30:21.400 --> 00:30:28.160
a esa persona exactamente eso y a lo mejor pues te puede conseguir vender pues eso yo que sé pues

00:30:28.160 --> 00:30:34.320
qué me están saliendo ahora pues ahora me están saliendo gente que vende cuadros de kimetsu no

00:30:34.320 --> 00:30:41.480
ya iba o gente que está haciendo fondos de pantalla premium descarga de los cosas así

00:30:41.480 --> 00:30:47.080
pues claro es que hostia a lo tonto a lo tonto y luego pues de economía liberal tres cuartas de

00:30:47.080 --> 00:30:54.480
lo mismo a mí no me va a saber o sea por poner insisto no es cuestión de posicionamiento vale

00:30:54.480 --> 00:30:59.920
pero en el momento en el que como tú tienes un sesgo muy concreto político de pronto te sale

00:30:59.920 --> 00:31:09.800
otro totalmente distinto pues sólo te sale de ese otro cuando se meten con él pero no te sale

00:31:09.800 --> 00:31:15.360
la información del otro y si a lo mejor a ti te interesa saber algo de la información del otro

00:31:15.360 --> 00:31:23.640
no te la ponen sólo te ponen al que critica el otro lado por lo tanto claro yo uso el cerebro

00:31:23.640 --> 00:31:30.080
en ocasiones vale y por lo tanto filtro y me doy cuenta de esa manipulación pero hostia es que

00:31:30.080 --> 00:31:37.600
puede haber gente que realmente quede cegada por su propio sesgo y piense que el mundo es

00:31:37.600 --> 00:31:42.760
como él lo está viendo en redes sociales y no señores ni de coña las redes sociales están

00:31:42.760 --> 00:31:50.360
enfocadas en lo que tú ves y están creando un mundo que es sólo para ti y eso es de un peligro

00:31:50.360 --> 00:31:58.720
brutal porque no te deja ver todo el mundo en realidad si a ver apple está poniendo algunas

00:31:58.720 --> 00:32:04.240
medidas para ello pero y otra cosa que a mí me ha hecho gracia yo me encontré con gente de

00:32:04.240 --> 00:32:10.760
marketing o todos afortunadamente que cuando le entras en el app store conect y les enseña la

00:32:10.760 --> 00:32:16.600
parte analítica que hay alucinan dices ah yo no sabía ni que esto existía vale pero yo animaría

00:32:16.600 --> 00:32:22.280
a apple a que si realmente quiere te pongo el ejemplo de alguien que tiene una aplicación que

00:32:22.280 --> 00:32:28.200
sólo es de iphone que tiene muy poquito dinero que no que la aplicación no tiene servidor vale

00:32:28.200 --> 00:32:34.640
lo hace todo la aplicación con iCloud o con lo que con lo que sea joder necesita recurrir a una

00:32:34.640 --> 00:32:41.320
de estas plataformas de terceros joder ponme un framework para mandar eventos que luego pueda

00:32:41.320 --> 00:32:49.240
haber en app store conect o ponme un framework que me registre las visualizaciones de las pantallas

00:32:49.240 --> 00:32:56.880
algo sencillito y sobre todo en el paraguas de que no sé si de hecho no sé si sale con cada versión

00:32:56.880 --> 00:33:01.200
mayor del sistema pero hay un sitio en el que tú puedes o no compartir con los desarrolladores

00:33:01.200 --> 00:33:05.440
vale porque una de las cosas que me dice esta gente de marketing es que me dice ya claro pero

00:33:05.440 --> 00:33:10.880
aquí si cuando configuras el teléfono le das a no compartir información con los desarrolladores no

00:33:10.880 --> 00:33:16.920
te salen esos datos vale pero te sale el porcentaje de gente que ha aceptado con lo cual puedes más o

00:33:16.920 --> 00:33:23.040
menos extra si tienes una aplicación de cierta de cierto calado puedes ver más o menos si puedes

00:33:23.040 --> 00:33:28.720
extrapolar en números grandes lo que lo que tienes pues yo creo que le está haciendo cosas a ese

00:33:28.720 --> 00:33:34.880
respecto pero a mí me gustaría que siempre fuese un paso más allá sobre todo para estos casos de

00:33:34.880 --> 00:33:41.440
gente que recurre a google analytics por poner un sitio porque no tiene más remedio y porque hay

00:33:41.440 --> 00:33:46.200
gente que tú le hablas con él tiene una aplicación y sólo sabe que existe eso no sabe que existe

00:33:46.200 --> 00:33:51.040
otras maneras o no sabe que se lo puede que jorge si tienes un backend pues mándatelo al servidor tú

00:33:51.040 --> 00:33:55.520
no necesitas esto porque además lo de tu servidor lo puedes cruzar con los datos de usuarios que

00:33:55.520 --> 00:34:00.200
tienes y demás que es lo más fiable o sea yo cuando voy a sacar cuando me piden sacar un

00:34:00.200 --> 00:34:03.640
numerito lo primero que digo vamos a la base de datos y vamos a ver si en la base de datos lo

00:34:03.640 --> 00:34:11.720
tenemos luego ya empezamos a vamos a google analytics y miramos a ver si coincide que un

00:34:11.720 --> 00:34:16.920
millón seiscientas mil aplicaciones dicen lo contrario a lo que tú estás diciendo que son

00:34:16.920 --> 00:34:22.960
las apps que estadísticamente en el último conteo que vi hace unos meses están usando a día de hoy

00:34:22.960 --> 00:34:31.320
firebase a bueno espera que hay otra es que juegue me tiras de la lengua julio hay gente

00:34:31.320 --> 00:34:37.840
te provoco te provoco o sea hay gente de backend que no sabe que tú puedes mandar directo las

00:34:37.840 --> 00:34:44.360
push de apple las puedes mandar a apple lleva cinco años en la que ha hecho tres o cuatro ha

00:34:44.360 --> 00:34:48.280
trabajado en tres o cuatro vacantes que siempre utilizaban firebase y firebase digamos que te

00:34:48.280 --> 00:34:52.720
te dice mira yo te doy aquí un sitio al que mando notificaciones y ya me ocupo yo de mandárselas

00:34:52.720 --> 00:34:58.400
ahí o sea android como corresponda a que sí sí que piensan que sólo funcionan las push con

00:34:58.400 --> 00:35:03.920
firebase claro que dice ah pero no utilizáis pero para mandar notificaciones no utilizas firebase

00:35:06.080 --> 00:35:10.520
y cómo lo haces entonces pues nativamente gritando por la ventana

00:35:10.520 --> 00:35:18.160
y nos abrimos la ventana tinku tinku me envió un punto de ficción

00:35:21.720 --> 00:35:25.800
madre mía bueno pero es que como esa también sabes que hay muchísima gente

00:35:25.800 --> 00:35:30.800
que no conoce el crash analytics de scope

00:35:33.480 --> 00:35:39.320
yo he tenido muchos alumnos a los que claro cuando me dicen bueno y entonces cómo capturas

00:35:39.320 --> 00:35:48.120
los crash de la aplicación y los tal y le digo mira pim pum te salen por versión y cuando lo

00:35:48.120 --> 00:35:53.080
ven ven que te sale efectivamente por versión que te sale como si el error te hubiera dado

00:35:53.080 --> 00:35:58.040
el local en scope que le pincha y puede reproducir el volcado de memoria tal se

00:35:58.040 --> 00:36:06.320
quedan flipando diciendo pero y esto es creo que ahora desde cuando está esto en en scope 15 creo

00:36:06.320 --> 00:36:14.120
que te graba incluso un vídeo un vídeo y tiene no me acuerdo me vio el vídeo y hace un mes y

00:36:14.120 --> 00:36:18.960
tiene más la verdad es que ha mejorado en ese punto bueno y los log ya ni te cuento de hecho

00:36:18.960 --> 00:36:24.760
he tenido hemos tenido que meter logs en una en una aplicación y claro cuando he dicho yo no

00:36:24.760 --> 00:36:34.440
dado con crashlytics o no no no no el logger de ios pero es que ya y cómo los ves el logger de

00:36:34.440 --> 00:36:42.280
ios tiene una API para que el usuario le digas descargar los de bluetooth porque los puedes

00:36:42.280 --> 00:36:47.680
poner por categorías y te genera un fichero que te manda al usuario con privacidad porque además

00:36:47.680 --> 00:36:52.880
puedes decir que los ids se ofusquen cuando los mandes que los puedas ver en el dispositivo o en

00:36:52.880 --> 00:36:59.360
la consola de scope pero que cuando los mandes en ese log luego aparte que ciertos logs te los

00:36:59.360 --> 00:37:05.360
persiste en disco ciertos logs sólo en memoria te libera él o sea que te lo da todo hecho vale pues

00:37:05.360 --> 00:37:13.840
eso pues la gente no sabe que no sabe que eso existe y como te digo sea podéis vale por si

00:37:13.840 --> 00:37:23.000
alguno no lo conoce con scope podéis en scope crashes replicar el error que le ha dado a un

00:37:23.000 --> 00:37:32.320
usuario en zimbabue como si te hubiera dado a ti en local es que le das y te lleva la línea de

00:37:32.320 --> 00:37:37.280
código es que efectivamente es que le das y te da y te va a la línea de código y ves el volcado

00:37:37.280 --> 00:37:43.760
de memoria incluso es compartir con los desarrolladores cuando tú le das a compartir

00:37:43.760 --> 00:37:49.800
con los desarrolladores los informes de errores es eso lo que está aceptando el usuario y en test

00:37:49.800 --> 00:37:54.680
fly es automático vale siempre tú cuando estás probando lo de test fly aceptas con test fly que

00:37:54.680 --> 00:37:59.400
eso siempre es exacto aunque tú lo tengas aunque tú lo tengas activado tu teléfono y le puedes

00:37:59.400 --> 00:38:03.680
mandar feedback puedes mandarle una captura diciéndole pues me ha pasado esto en este momento

00:38:03.680 --> 00:38:09.400
claro si tú si tú desde una aplicación que estás probando en test fly como usuario haces una captura

00:38:09.400 --> 00:38:16.200
de pantalla automáticamente el sistema detecta la captura de pantalla y lo añade como un informe de

00:38:16.200 --> 00:38:24.640
incidencia que se envía al desarrollador tal cual y como ha comentado antes arturo si la app se cuelga

00:38:25.720 --> 00:38:31.160
te envía un vídeo de los últimos 10 segundos de lo que ha hecho el usuario antes de que el app se

00:38:31.160 --> 00:38:38.560
cuelgue o sea cosa que los que no se desarrolladores es fundamental porque es lo de siempre te llega

00:38:38.560 --> 00:38:46.520
una incidencia que has tocado yo estaba aquí pero hiciste esto y esto esto antes no no no yo no le

00:38:46.520 --> 00:38:54.400
he dado así tengo un virus de un virus de un virus no sé por qué me va el teléfono debo tener un

00:38:54.400 --> 00:39:00.240
virus debo tener un virus yo creo que entré en una página en una página que se llama x

00:39:00.240 --> 00:39:10.560
y que tú ríete pero pronto va a haber que entrar por x.com que tiene comprado el dominio y ahora

00:39:10.560 --> 00:39:16.320
mismo lo tiene aparcado pero en twitter dentro de poco en vez de entrar en twitter.com vamos a

00:39:16.320 --> 00:39:25.200
entrar en x.com y eso va a ser unas risas no el historial claro si no no cariño está mirando

00:39:25.200 --> 00:39:31.960
redes sociales ya ya redes sociales redes sociales de que de que demasiado sociales esas demasiado

00:39:35.960 --> 00:39:46.240
en fin cosas curiosas vale pues pasamos a las noticias entonces si te parece perfecto

00:39:46.240 --> 00:40:07.480
y porque bueno pasamos a las noticias pasamos a la noticia y la noticia básicamente pues es

00:40:07.480 --> 00:40:17.280
lo que hemos comentado antes el listado de las apis que requieren permisos a partir de la próxima

00:40:17.280 --> 00:40:26.280
versión es decir a partir de otoño dicho esto es directamente de la página web de apple desde

00:40:26.280 --> 00:40:34.400
otoño de 2023 recibirás una email por parte de apple si subes una app al app store connect que

00:40:34.400 --> 00:40:42.320
use cualquiera de las apis que están listadas en lo que vamos a comentar ahora sin una descripción

00:40:42.320 --> 00:40:50.040
de la razón dentro del manifiesto de privacidad de la propia aplicación qué significa esto arturo

00:40:50.040 --> 00:40:58.440
explícaselo a la gente qué significa esto de los mensajes de privacidad vale ahora tienes que hacer

00:40:58.440 --> 00:41:04.520
el manifiesto que ha dicho julio tienes que rellenar el manifiesto que es un poco coñazo no

00:41:04.520 --> 00:41:09.240
nos vamos a quitar a la venda de los ojos vamos a quitar la venda de los ojos y vamos a hablar de

00:41:09.240 --> 00:41:14.280
las cosas también un poco entre comillas malas porque yo creo que se puede no es malo el que

00:41:14.280 --> 00:41:19.960
lo haya sino creo que podrían agilizarlo un poco podrían automatizarlo un poquito más porque sí

00:41:19.960 --> 00:41:27.040
que es un poquito la encuesta de privacidad es un poquito tal y pero bueno como entendemos su

00:41:27.040 --> 00:41:34.720
función pues aceptamos barco pues debido a que y fundamentalmente para luchar contra lo que llaman

00:41:34.720 --> 00:41:41.080
el finger printing vale que es como a lo mejor tenemos el id este del que hablamos que mira

00:41:41.080 --> 00:41:46.400
viene una corrección el id este nos identifica entre aplicaciones es decir si dos aplicaciones

00:41:46.400 --> 00:41:52.160
utilizan un la librería de google o de facebook vale pues ellos pueden saber que tú tienes esas

00:41:52.160 --> 00:41:56.640
dos aplicaciones y que tú eres tú en esas dos aplicaciones vale porque tienen el mismo id que

00:41:56.640 --> 00:42:03.000
es el mismo para las dos aplicaciones porque está de alguna manera repartido a todo el sistema

00:42:03.000 --> 00:42:10.680
efectivamente entonces como la gente le da que no el 98% de la gente le da que no pues se hace

00:42:10.680 --> 00:42:19.400
el finger print que no es otra cosa que solicitar cosas de tu sistema especiales de tu sistema que

00:42:19.400 --> 00:42:25.440
te identifican vale es como tu huella vale buscar una huella en tu dispositivo que no es un id único

00:42:25.440 --> 00:42:31.240
sino una serie de parámetros que tiene tu dispositivo y que no es el tiempo sea no tiene

00:42:31.240 --> 00:42:38.320
un 100% de efectividad pero la mayoría de las veces acierta y qué parámetros son estos o yo

00:42:38.320 --> 00:42:43.080
que se puede ser el lenguaje de tu dispositivo la localización por supuesto en la zona donde estás

00:42:44.520 --> 00:42:51.480
también se suele utilizar el navegador que utilizas un montón de parámetros que solo ellos solos

00:42:51.480 --> 00:42:56.520
todos utilizamos safari o sea mucha gente utiliza safari pero que utilice safari y que tenga un

00:42:56.520 --> 00:43:04.680
iphone 14 en la versión x de ios y demás no todo el mundo lo tiene vale entonces para evitar esto

00:43:04.680 --> 00:43:10.480
lo que ha hecho apple es incluir una serie de apis que acceden a esos datos entre las que si

00:43:10.480 --> 00:43:16.520
detecta que tú las te está utilizando te pide que las declares en este manifiesto pero no sólo tú

00:43:16.520 --> 00:43:21.600
que eso también lo hemos dicho antes si algún framework de terceros que estés ejecutando que

00:43:21.600 --> 00:43:25.720
al final es código ejecutado vale tú importa la librería pero esos códigos que hay dentro de esa

00:43:25.720 --> 00:43:30.920
librería que está ejecutando y apple detecta que ahí también se está utilizando también te va a

00:43:30.920 --> 00:43:37.800
pedir rellenar el manifiesto y esto julio aquí voy a hacer un inciso porque hay un vídeo que

00:43:37.800 --> 00:43:44.880
tengo pendiente de ver de la wdc que dice que cuando distribuyes una librería está la opción

00:43:44.880 --> 00:43:50.800
de añadir ya este manifiesto para que los usuarios de esa librería o las aplicaciones que hagan usar

00:43:50.800 --> 00:43:58.000
esa librería ya tengan este manifiesto digamos en claro vale que no tengan que hacerlo ellos sino

00:43:58.000 --> 00:44:03.200
que ya les dices pues utilizo este permiso este permiso y este permiso vale que eso yo creo que

00:44:03.200 --> 00:44:07.400
viene bien y es uno de los mecanismos que apple puede hacer para aligerar es decir yo utilizo x

00:44:07.400 --> 00:44:12.560
librería y claro yo a lo mejor no me doy cuenta relleno ese manifiesto mal pero porque no me estoy

00:44:12.560 --> 00:44:17.200
dando cuenta que esa librería coge x datos vale pero si esa librería ya me la dan con su manifiesto

00:44:17.200 --> 00:44:27.680
al lado diciéndome recojo esto y esto pues mira pues algo que me quito pues sí y de hecho según

00:44:27.680 --> 00:44:34.600
los dice apple ya no solo es que desde otoño nos van a enviar una notificación de lo que tenemos

00:44:34.600 --> 00:44:44.840
que modificar sino que desde primavera de 2024 las apps que no describan el uso de las apis a

00:44:44.840 --> 00:44:53.800
través de este fichero de razones en el manifiesto de privacidad de la aplicación no serán aceptadas

00:44:53.800 --> 00:45:04.360
en el app store conect así tal cual así si pánina sin pánina efectivamente porque a partir de

00:45:04.360 --> 00:45:13.320
primavera del año 2024 pues bien para el que no lo sepa apple obliga todos los años a que en

00:45:13.320 --> 00:45:22.960
primavera de ese año sea de obligado uso para subir aplicaciones a el app store la última versión

00:45:22.960 --> 00:45:30.760
de scope que lanzó en otoño del año anterior a dicha primavera quiere decir que desde el 30 de

00:45:30.760 --> 00:45:37.920
abril que fue la fecha elegida por apple porque cada año va cambiando este año ha tocado el 30

00:45:37.920 --> 00:45:45.680
de abril desde el 30 de abril todo el que quiere subir una app o una actualización de su app al

00:45:45.680 --> 00:45:55.240
app store tiene que hacerlo usando xcode 14 no puede usar otra versión distinta y tiene que

00:45:55.240 --> 00:46:05.840
incluir el kit de desarrollo de como mínimo ios 16.1 quiere eso decir que todas las aplicaciones

00:46:05.840 --> 00:46:15.680
van a funcionar solo desde ios 16.1 no obviamente no pero en la sdk si tiene que estar incluida

00:46:15.680 --> 00:46:23.520
explicado de una forma muy rápida una cosa es la versión de la sdk que este tipo de obligaciones

00:46:23.520 --> 00:46:29.040
también están en android google llegado a una determinada fecha obliga a que todo el mundo

00:46:29.040 --> 00:46:37.920
tenga el lo que es el kit de desarrollo base en una versión concreta android 10 android 11 android

00:46:37.920 --> 00:46:44.640
12 quiere eso decir que hay que soportar estas versiones repito no quiere decir que cuando yo

00:46:44.640 --> 00:46:53.160
voy a usar el kit de desarrollo de ios 16.1 yo puedo fijar el target de mi aplicación para que

00:46:53.160 --> 00:47:00.520
funcione por ejemplo desde ios 15 o desde ios 13 o desde ios 12 lo que yo quiera en xcode 14 la

00:47:00.520 --> 00:47:07.320
versión mínima que puede elegirse es ios 11 por lo que a partir de abril del año a partir de abril

00:47:07.320 --> 00:47:14.800
de este año ya no se podrán ya no se pueden subir aplicaciones que soporten ios 10 que ya era hora

00:47:14.800 --> 00:47:22.680
entonces estoy convencido que la sabía de hecho tengo alumnos que me han contado que debido a esto

00:47:22.680 --> 00:47:32.640
han tenido la ocasión de pedir la subida de versión a la versión 11 que era como ya me he flipado

00:47:32.640 --> 00:47:40.240
o sea ese es el nivel entonces qué sucede que si yo le pongo como versión mínima a un sistema la

00:47:40.240 --> 00:47:47.080
versión 12 por ejemplo porque quiero soportar los iphone 6 plus etcétera es bastante simple sólo

00:47:47.080 --> 00:47:52.920
tengo que poner el target quiere eso decir que voy a compilar con esa versión del sistema no

00:47:52.920 --> 00:48:01.960
quiere decir que el kit de desarrollo de ios 16.1 está preparado para usar las instrucciones que

00:48:01.960 --> 00:48:09.840
sólo funcionan vale es decir el kit de desarrollo sabe perfectamente qué instrucciones que comandos

00:48:09.840 --> 00:48:17.240
qué variables qué constantes qué elementos del propio kit funcionan en cada versión entonces si

00:48:17.240 --> 00:48:22.880
tú le dices que quieres hacer una aplicación a partir de la 12 pero usas algo que está a partir

00:48:22.880 --> 00:48:27.040
de la 13 el sistema te va a dar un error de compilación y te va a decir no no no chaval esto

00:48:27.040 --> 00:48:32.040
no funciona en la 12 esto funciona a partir de la 13 por lo que tienes que poner una serie de

00:48:32.040 --> 00:48:38.760
comandos de arroba valuable o de if available o en fin varias formas que tenemos para decirle que

00:48:38.760 --> 00:48:46.160
esta parte del código sólo la incluyas cuando la versión del usuario esté a partir de la versión

00:48:46.160 --> 00:48:54.760
13 por ejemplo vale entonces de esta manera lo que hace el sistema es usar la librería de desarrollo

00:48:54.760 --> 00:49:01.920
de la última versión para así tener todos los parches de seguridad mejoras mejoras de memoria

00:49:01.920 --> 00:49:11.160
de usabilidad de rendimiento etcétera etcétera pero esa propia sdk se restringe para no permitir

00:49:11.160 --> 00:49:17.560
usar ciertas instrucciones que en el kit de desarrollo que tienen en este caso por ejemplo

00:49:17.560 --> 00:49:26.520
un iphone 6 con ios 12 esas instrucciones no están en esa versión de esa sdk que está incluido dentro

00:49:26.520 --> 00:49:30.960
del sistema operativo y que forma parte de los componentes del propio sistema operativo entonces

00:49:30.960 --> 00:49:36.560
como esa versión no tiene esa llamada o no tiene esa función o no tiene esa clase si la llamaras

00:49:36.560 --> 00:49:44.520
dinámicamente como el binario no encontraría match la app reventaría entonces el sistema cuando tú

00:49:44.520 --> 00:49:51.440
desarrollas te ayuda a que no cometas este error vale pero tienes que poner esta última versión

00:49:51.440 --> 00:49:58.960
entonces en primavera de 2024 apple obligará a todo el mundo a que tenga que subir la aplicación

00:49:58.960 --> 00:50:05.200
que tenga que subir las aplicaciones con scope 15 entonces es code 15 es el que va a tener esta

00:50:05.200 --> 00:50:12.640
obligación del manifiesto de privacidad y que haya que pedir permiso al usuario cuando vayas a usar

00:50:12.640 --> 00:50:19.640
por ejemplo user defaults y ahí es donde ha saltado la polémica porque lo vamos a dejar para

00:50:19.640 --> 00:50:26.840
el final porque bueno primero hay algunas APIs pues del manejo de ficheros casi digamos a bajo

00:50:26.840 --> 00:50:34.880
nivel vale casi funciones de hecho algunas en c que va a detectar que estamos llamando luego

00:50:34.880 --> 00:50:44.680
también por ejemplo a la hora que se ha encendido el equipo el espacio disponible en disco vale

00:50:44.680 --> 00:50:50.720
cosas que miran en el sistema de ficheros que pueden hacer que saquen parámetros que te

00:50:50.720 --> 00:50:57.760
que te identifiquen luego también algo de a de los que de los teclados que tenéis activados

00:50:57.760 --> 00:51:03.040
vales en los teclados que tengas instalados y ya llegamos a la última parte que es la que

00:51:03.040 --> 00:51:10.000
comenta julio que es yo creo donde ha saltado la chispa exacto porque son no son otros que

00:51:10.000 --> 00:51:18.280
nuestros queridos y bueno es que no me atrevo a decir una cifra que el 99 99 por ciento utilizan

00:51:18.280 --> 00:51:23.800
esta API y no es otra cosa que el user defaults que para los no iniciados pues digamos que es

00:51:23.800 --> 00:51:32.600
una manera de guardar permanentemente pequeñas configuraciones aunque luego hay gente que lo

00:51:32.600 --> 00:51:38.720
hace o sea de hecho yo lo he visto utilizar hasta para para cachear respuestas de servicios enteras

00:51:38.720 --> 00:51:45.880
o sea para mostrar primero primero esto mientras estoy cambio que se tengo un listado de la compra

00:51:45.880 --> 00:51:52.200
vale pues cuando abro la aplicación pido al servidor que me dé el listado actual pero como

00:51:52.200 --> 00:51:59.160
primera opción le muestro lo que tenía vale y guardado en user default vale pero bueno es otro

00:51:59.160 --> 00:52:06.480
tema pero claro aquí se guardan un montón de cosas y el 99,9% lo guarda aquí incluso keys

00:52:06.480 --> 00:52:15.320
incluso password la gente guarda que habría que darles de que darles de collejas y pues cuando

00:52:15.320 --> 00:52:22.960
ha saltado esto esta noticia pues la gente no sé hay gente que decía que por un lado que que le

00:52:22.960 --> 00:52:27.040
parecía un poco complicado que es que al final todas las aplicaciones van a tener que incluir

00:52:27.040 --> 00:52:33.120
esto y por otro la gente decía que el problema es que no sea malas las user defaults sino que

00:52:33.120 --> 00:52:38.720
se utilizan mal y qué significa esto que tú aunque las utilices bien vas a tener que declararlas y

00:52:38.720 --> 00:52:46.320
pues no sé porque como va a ser en mi opinión ya estoy dando mi opinión como va a ser el 99% de

00:52:46.320 --> 00:52:52.480
las aplicaciones creo que los usuarios van a pasar o sea van a ver esto a lo mejor se informan pero

00:52:52.480 --> 00:52:57.560
como todas las aplicaciones lo van a tener tu aplicación por pedirles este permiso o bueno

00:52:57.560 --> 00:53:03.280
o por tener esto en el manifiesto que también os digo que no se lo leen y dios vale se lo leía

00:53:03.280 --> 00:53:09.240
cuando salió la noticia la gente geek pero no lo debe leer ni de los manifiestos pero claro esto

00:53:09.240 --> 00:53:13.280
te puede hacer estar en desventaja con una aplicación que no lo use vale y si tú lo estás

00:53:13.280 --> 00:53:18.840
utilizando bien qué necesidad tengo yo de declarar que estoy utilizando esta API si la estoy declarando

00:53:18.840 --> 00:53:25.720
bien no sé qué opinión tienes tú julio a ver es que aquí el problema es como tú bien dices el

00:53:25.720 --> 00:53:34.760
objetivo el objetivo de user defaults es eso son opciones por defecto para el usuario lo único

00:53:34.760 --> 00:53:43.800
que se tiene que grabar ahí es tener eso que son datos que definan la experiencia del usuario pero

00:53:43.800 --> 00:53:50.800
que sean datos totalmente inocuos por ejemplo la selección de que quiero un modo oscuro un modo

00:53:50.800 --> 00:53:57.320
claro independiente de la selección del sistema en la tipografía tengo varias para elegir y elijo

00:53:57.320 --> 00:54:04.240
una el idioma en el que está la app si puedes cambiarlo sin usar el idioma en el que tienes

00:54:04.240 --> 00:54:13.560
la propia el propio sistema cositas que son tontas cositas que bueno pues pequeñas por ejemplo yo en

00:54:13.560 --> 00:54:18.960
el caso de la aplicación está de gestión inmobiliaria pues en user defaults grabo las

00:54:18.960 --> 00:54:27.880
opciones que ha elegido un usuario dentro de las preferencias del usuario si quiere o no las fichas

00:54:27.880 --> 00:54:35.240
de los de las casas o de lo que tenga de los assets inmobiliarios y las quiere las fichas

00:54:35.240 --> 00:54:40.440
en formato pequeño o grande si quiere ver el resumen de los datos económicos en la pantalla

00:54:40.440 --> 00:54:47.880
principal o no todo ese tipo de cosas si quiere ver una foto del asset o quiere ver simplemente

00:54:47.880 --> 00:54:56.640
colores planos eso son opciones de user defaults ahí es donde hay que grabarlos pero en el momento

00:54:56.640 --> 00:55:04.000
en el que tú te dedicas a grabarlo todo y entonces alguno preguntará y por qué no se usa el keychain

00:55:04.000 --> 00:55:12.680
pues muy simple porque o no saben que existe o no saben usarlo o todo junto yo te iba a decir

00:55:12.680 --> 00:55:18.320
que habrá algún garrulo que guarde esta información en la información de que le sirve para hacer este

00:55:18.320 --> 00:55:25.240
fingerprint esta huella en el keychain claro por eso yo creo que yo creo que ese es el motivo por

00:55:25.240 --> 00:55:32.440
el que apple ha metido esto aquí vale porque más de un garrulo habrá grabado la información de

00:55:32.440 --> 00:55:38.880
este fingerprinting en user defaults entonces han dicho no no no pues ahora te impedimos que

00:55:38.880 --> 00:55:46.040
grabes ahí nada o que el usuario elija o que lo tengas que poner vale eso es decir es como una

00:55:46.040 --> 00:55:52.400
forma de forzarte para que no uses esto es que además el user default otra cosa que tiene es

00:55:52.400 --> 00:56:00.480
que puedes crear un grupo de apps vale y compartir este este es user default leerlos tanto por

00:56:00.480 --> 00:56:05.480
ejemplo de otros targets si tienes un widget vale pues un user default es una forma de comunicar

00:56:05.480 --> 00:56:11.840
datos siempre que sean cosas como dice julio de configuración y cosas no se datos no sensibles

00:56:11.840 --> 00:56:18.040
es una manera de comunicar un widget con la aplicación principal vale o si una empresa

00:56:18.040 --> 00:56:23.920
tiene tres aplicaciones vale pues puede hacer este app group y saber que en una que en una

00:56:23.920 --> 00:56:29.880
aplicación y digamos leer los datos de la otra pero seguramente que también hay algunas aplicaciones

00:56:29.880 --> 00:56:37.560
que hacen un uso un mal uso de ello y se pasan información que no deberían entre distintas

00:56:37.560 --> 00:56:46.120
aplicaciones o distintos targets a través de este mecanismo de esta api y alguno dirá y hombre pero

00:56:46.120 --> 00:56:52.520
quién va a hacer eso nombre no esto la gente no lo hace la gente cómo va a usar esto de esta manera

00:56:52.520 --> 00:57:02.680
vale uno de los primeros grandes escándalos de seguridad que hubo en españa recién salida a la

00:57:02.680 --> 00:57:10.800
app store pocos años poco tiempo después fue la app de un gran banco uno de los más grandes bancos

00:57:10.800 --> 00:57:19.960
que hay en españa que guardaba el token de entrada a su servicio de banca en internet en user default

00:57:19.960 --> 00:57:30.800
es que te voy a decir el 80% de las aplicaciones que me he encontrado lo hacen es que es lo triste

00:57:31.800 --> 00:57:42.720
ese es el problema entonces pues en fin aunque yo sinceramente le agradecería a apel que hiciera

00:57:42.720 --> 00:57:58.120
algún tipo de de api sencillita para el tema del kitchen que si es que ha hecho la culpa 50 y diría

00:57:58.120 --> 00:58:05.000
50 50 a los desarrolladores garrulos pero es que otros 50 es de apel de que es algo que viene de

00:58:05.000 --> 00:58:11.840
dicho de objetice que tiene una horrible pero horrible que bueno pues es lo de siempre pues

00:58:11.840 --> 00:58:16.160
yo ya me he hecho un grapher que reutilizo y cada vez que lo reutilizo el método una cosilla nueva

00:58:16.160 --> 00:58:22.080
y me lo voy compartiendo pero siempre mejor a mí mismo que voy a hacer en un paquete de en un

00:58:22.080 --> 00:58:26.920
paquete de switch pero siempre me da pereza y cojo el fichero y lo copio cada proyecto pero

00:58:26.920 --> 00:58:34.000
bueno eso es otro otro tema pero para que la gente se haga una idea la api del kitchen es

00:58:34.000 --> 00:58:42.560
una api en c que usa tipos de c que usa diccionarios de c vale cf diccionario que es un c

00:58:42.560 --> 00:58:49.600
foundation diccionario y que funciona en base a crear queries en un diccionario enviarlas a una

00:58:49.600 --> 00:58:55.760
api y que esa api devuelva lo que sea sin un control de errores buenos y no es algo del

00:58:55.760 --> 00:59:04.520
cretácico inferior pues ya se podían haber currado algo aunque sea con macros digo yo aunque sea un

00:59:04.520 --> 00:59:09.960
grapher como el que nos hacemos todos exacto pero un poco que lo puedes hacer más chulo o menos

00:59:09.960 --> 00:59:16.560
chulo no sé pero desde luego si es cierto que yo culpo en parte a apel de esto vale porque es que

00:59:16.560 --> 00:59:23.920
no se entran los sudores vale y de hecho cuando veo a alguien usar una librería de terceros de

00:59:23.920 --> 00:59:31.000
el kitchen puedo llegar a comprender que lo haga luego lógicamente le voy a enseñar cómo funciona

00:59:31.000 --> 00:59:36.680
o le voy a ayudar a que él lo construya para que no dependa de otros vale pero independientemente

00:59:36.680 --> 00:59:43.600
puedo llegar a entenderlo entonces bueno pues esto sería un poco la la noticia no que queríamos

00:59:43.600 --> 00:59:51.480
dar hoy de bueno pues lo curioso no que ha sido este este evento no está esta cosita esta noticia

00:59:51.480 --> 01:00:01.520
no de alguna manera así que bueno pues pasamos un poco no a un poco repaso o digamos conjunto

01:00:01.520 --> 01:00:10.560
general vale de lo que sería nuestro bloque principal del podcast que básicamente lo que

01:00:10.560 --> 01:00:16.240
vamos a hablar un poco es de pues como una continuación no de lo que ha pasado con la

01:00:16.240 --> 01:00:23.720
wwdc en cuanto a novedades no que han aparecido en estos días y también pues una pregunta

01:00:23.720 --> 01:00:30.280
interesante que nos surge siempre que hay una nueva versión de su UI no que es la que nos

01:00:30.280 --> 01:00:37.120
hemos planteado aquí de si realmente es o no necesario conocer UIKit para empezar a desarrollar

01:00:37.120 --> 01:00:43.920
así que entremos con ello. ¿Alguna vez has soñado con convertirte en un desarrollador

01:00:43.920 --> 01:00:49.880
IOS creando aplicaciones que millones de personas podrían usar todos los días? ¿Te has sentido

01:00:49.880 --> 01:00:55.440
abrumado por la complejidad y la exigencia del mundo del desarrollo Apple? En Apple Coding

01:00:55.440 --> 01:01:01.560
Academy entendemos tus inquietudes y tenemos la solución para ti. Sabemos que convertirse en un

01:01:01.560 --> 01:01:07.120
desarrollador de IOS no es un camino fácil ni rápido, requiere dedicación, esfuerzo y una

01:01:07.120 --> 01:01:13.320
formación de calidad pero no te preocupes estamos aquí para ayudarte a recorrer ese camino hacia

01:01:13.320 --> 01:01:20.520
la excelencia. Presentamos el Swift Developer Program 2023, un programa de formación que te

01:01:20.520 --> 01:01:26.120
enseñará a crear código nativo de calidad para entornos Apple abriendo las puertas del App Store

01:01:26.120 --> 01:01:31.560
para tus proyectos. Aprenderás desde lo más básico hasta lo más complejo con una formación

01:01:31.560 --> 01:01:38.040
basada en trabajo y experiencia real. Te guiaremos paso a paso con prácticas y ejercicios de todos

01:01:38.040 --> 01:01:43.880
los niveles para asentar tus conocimientos y no solo eso también tendrás la oportunidad de crear

01:01:43.880 --> 01:01:49.680
un proyecto real como el que publicarías en el App Store con el seguimiento de nuestros expertos

01:01:49.680 --> 01:01:56.920
formadores con años de experiencia en el mercado. Este programa incluye formación en Swift, SwiftUI

01:01:56.920 --> 01:02:03.680
y una introducción a Vision OS, el sistema operativo del nuevo Apple Vision Pro. Así

01:02:03.680 --> 01:02:09.600
estarás preparado para enfrentarte a los desafíos actuales y futuros del desarrollo de aplicaciones.

01:02:09.600 --> 01:02:16.960
¿Estás listo para iniciar tu camino como developer? El Swift Developer Program 2023 comienza el 2 de

01:02:16.960 --> 01:02:23.520
octubre y se extiende hasta el 30 de noviembre. Tendrás clases de lunes a jueves de 7 de la tarde

01:02:23.520 --> 01:02:29.520
a 11 de la noche hora española, un horario perfecto tanto para gente de Europa como de

01:02:29.520 --> 01:02:36.480
Latinoamérica. Y recuerda que tienes hasta el 31 de enero de 2024 para entregar tu proyecto final,

01:02:36.480 --> 01:02:43.360
así que si te apuntas, ponte las pilas. Tenemos solo 40 plazas exclusivas para garantizar la

01:02:43.360 --> 01:02:52.640
calidad de la formación. Visita nuestra web a coding.academy barra sdp23 y ahí tendrás toda

01:02:52.640 --> 01:02:57.960
la información y contacto con nosotros para resolver cualquier duda. Reserva tu plaza hoy

01:02:57.960 --> 01:03:04.760
y da el primer paso para convertirte en un exitoso desarrollador de entornos Apple,

01:03:04.760 --> 01:03:33.120
con Apple Coding Academy. Y recuerda, be native. Pues Julio, la verdad es que tenemos así varias

01:03:33.120 --> 01:03:37.800
cosas no sé cuál te produce más curiosidad o cuál es más importante porque yo no lo

01:03:37.800 --> 01:03:45.440
pues yo creo que podemos comentar el tema de tip kit que yo creo que puede ser una cosa

01:03:47.160 --> 01:03:53.600
que define bastante nosotros al final el anterior programa si lo habéis escuchado si no pues ya

01:03:53.600 --> 01:03:58.760
sabéis que podéis escuchar lo que es un repaso de todo lo que Apple dio en la WWDC. Una de las

01:03:58.760 --> 01:04:05.040
cosas que dijimos es que estaba todo un poquito verde y uno de los motivos para que estuviera

01:04:05.040 --> 01:04:12.480
verde era precisamente tip kit. Cuéntanos qué es tip kit y qué ha pasado con él. Pues tip kit

01:04:12.480 --> 01:04:20.320
fue anunciado yo creo que incluso no en la principal sino en el State Platform de Junior

01:04:20.320 --> 01:04:35.240
y no es otra cosa que un framework una librería que nos permite de hecho compatible tanto con

01:04:35.240 --> 01:04:44.080
UIKit como con SwiftUI que nos permite dar tips o consejos de uso en nuestra aplicación. Pongo

01:04:44.080 --> 01:04:49.480
un ejemplo donde Apple lo ha utilizado y yo creo que esto estaba entre bambalinas ya desde hace

01:04:49.480 --> 01:04:54.440
dos o tres sistemas operativos porque la interfaz es muy parecida a lo que tenía. Lo que hacen es

01:04:54.440 --> 01:05:03.040
presentar distintos tooltips saliendo de un botón diciéndote pues en este botón puedes marcar como

01:05:03.040 --> 01:05:10.960
favorito algo luego también hay otra opción de ponerlo como una vista normal pero te aparece

01:05:10.960 --> 01:05:16.640
como una vista pues con el borde redondeado te permite un título que es más destacado te permite

01:05:16.640 --> 01:05:22.920
cambiar la fuente vale es súper súper personalizable además basado en protocolos vale digamos que cada

01:05:22.920 --> 01:05:30.040
tip es un protocolo en el que tú tienes que rellenar el título el cuerpo el icono y las

01:05:30.040 --> 01:05:36.240
acciones vale porque también puedes hacer llamadas a la acción que te lleven a algún sitio en concreto

01:05:36.240 --> 01:05:41.560
como digo es muchas veces os lo encontráis o yo creo que también hay algo parecido en las

01:05:41.560 --> 01:05:47.280
aplicaciones de numbers y demás no es la pantallita esta que ojalá saquen algo porque me gusta mogollón

01:05:47.280 --> 01:05:50.840
de las novedades que cuando entras en alguna aplicación te aparecen como un listado de

01:05:50.840 --> 01:05:56.720
novedades vale sino que es cuando ya estás en la propia aplicación digamos que salen de botones

01:05:56.720 --> 01:06:03.000
pues acciones con novedades vale que puedes que puedes hacer a mí me gustó mucho porque he

01:06:03.000 --> 01:06:07.440
sufrido y me he pegado muchas veces haciendo estas cosas por mí mismo y bueno sobre todo

01:06:07.440 --> 01:06:14.600
la interfaz está de la flechita no es muy sencilla de hacer vale y sobre bueno iba a decir sobre todo

01:06:14.600 --> 01:06:20.960
yo aquí pero es que en su UI tampoco es que sea mucho más fácil de hacer montar un shape y hacer

01:06:20.960 --> 01:06:26.760
claro tienes que ir como calculando la fecha dibujar aquí pero bueno pero no es efectivamente

01:06:26.760 --> 01:06:32.800
no es algo sencillo y salió y yo lo primero que cuando salieron las vetas y fui corriendo a ver

01:06:32.800 --> 01:06:40.880
este tip kit y qué pasó y qué pasó en un pozo que no está como como decía el meme qué pasó no

01:06:40.880 --> 01:06:49.440
dime qué pasó pues lo mismo y no ha sido hasta esta versión la cuarta beta creo que ha aparecido

01:06:49.440 --> 01:06:54.560
vale no ha aparecido al 100 bueno ha aparecido al 100% pero hay cosas que no funciona vale porque

01:06:54.560 --> 01:07:01.600
ya han salido algunos artículos de gente que es que también es que tienen que pulir estas cosas

01:07:01.600 --> 01:07:06.960
en verano julio la gente que recogerse vacaciones también es que no tengo yo muy claro que en verano

01:07:06.960 --> 01:07:14.560
apel deje a mucha gente de vacaciones es que es raro la manera en la que tiene o sea las fechas

01:07:14.560 --> 01:07:19.360
en la que tiene presentación deja el verano un poco complicado para marcharse porque es donde

01:07:19.360 --> 01:07:26.800
más porque están precisamente están puliendo las vetas pero bueno ha aparecido esta vez toolkit o

01:07:26.800 --> 01:07:34.960
sea tool tip ya tengo que todo el mundo ha empezado a hablar de ello o sea de hecho ha sido como la

01:07:34.960 --> 01:07:39.800
esto y la noticia que hemos dado ha sido como la conversación de esta de esta última beta porque

01:07:39.800 --> 01:07:46.560
siempre cada vez que sale una beta a la gente corriendo a hablar de un tema y muy buena pinta

01:07:46.560 --> 01:07:52.360
yo aparte me vi el vídeo en su día pero ya me he puesto a no tengo tiempo de cacharrearlo pero

01:07:52.360 --> 01:07:57.800
ya he visto me he leído ya me he leído tres o cuatro artículos sobre sobre el tema y muy buena

01:07:57.800 --> 01:08:03.560
pinta la parte visual me parece muy clara ya digo es como hacer un protocolo una vista que se conforme

01:08:03.560 --> 01:08:09.920
o un view un view controller creo que es que se conforma un protocolo y eso le das el aspecto la

01:08:09.920 --> 01:08:16.320
fuente le puedes cambiar y todo y las acciones y la subiera y luego tiene la parte de cuando lo

01:08:16.320 --> 01:08:24.640
muestro vale que ahí ya no sé me lo tengo que mirar con tranquilidad porque la lógica creo que

01:08:24.640 --> 01:08:32.120
tiene muchas opciones de incluso se sincroniza con iCloud vale para que si el usuario tiene

01:08:32.120 --> 01:08:37.000
la aplicación la misma aplicación en dos dispositivos si le has enseñado con que hace un botón en una

01:08:37.000 --> 01:08:42.160
no se lo enseñes en la otra vale luego también tiene para reducir y que sólo se enseñe una vez

01:08:42.160 --> 01:08:48.040
al día la verdad es que es bastante flexible pero a mí la API me ha parecido un poco confusa pero

01:08:48.040 --> 01:08:55.160
seguramente sea sea cuestión de revisarlo y no sé para mí es una muy buena o sea una de esas

01:08:55.160 --> 01:09:02.560
cosas que Apple hace hace bien y parece que contenta a todo el mundo sí sobre todo si

01:09:02.560 --> 01:09:13.680
esta API estuviera disponible de forma retrocompatible ya es que a ver y esto sí que

01:09:13.680 --> 01:09:19.360
es la puñetera verdad esto es un framework que podría haber existido hace tres versiones no creo

01:09:19.360 --> 01:09:27.240
que tenga ninguna llamada de bajo nivel ni de nada que haya sea obligatorio a esto entonces no sé

01:09:27.240 --> 01:09:33.200
qué hacen que no utilizan ese maravilloso modificador de hacer retrocompatible vale porque

01:09:33.200 --> 01:09:40.880
es ya de aparte yo creo que es un framework aparte es un framework aparte si quiero decir no es que

01:09:40.880 --> 01:09:47.560
vale es que no lo tengo yo importó UIKit o sea UIKit o SwiftUI y claro importó la versión de

01:09:47.560 --> 01:09:53.320
SwiftUI y si importas una de un sistema anterior que no lo tiene no no no es que es un framework

01:09:53.320 --> 01:09:58.400
aparte pero es que es igual que charts SwiftCharts es un framework aparte que tienes que importar

01:09:58.400 --> 01:10:06.960
entonces yo ahí no lo veo vale a ver yo entiendo que Apple no quiera

01:10:09.120 --> 01:10:16.840
poner frameworks nuevos en los ejecutables y que quiera que todo se ejecute directamente

01:10:16.840 --> 01:10:24.160
desde frameworks que existan en el sistema lo entiendo perfectamente pero también es cierto

01:10:24.160 --> 01:10:35.840
que hay casos y casos y que dado el porcentaje de el porcentaje de gente que se va instalando

01:10:35.840 --> 01:10:42.040
las nuevas versiones que al final cuando llega primavera del año siguiente ya estamos en un

01:10:42.040 --> 01:10:50.880
80% del total de usuarios con la última versión de IOS no como en Android pues hombre yo creo

01:10:50.880 --> 01:10:57.480
que podrían plantearse que realmente las apps para aquellos que no se actualicen pesen más

01:10:57.480 --> 01:11:08.120
y si pesan más te aguantas sino decir lo siento vale tienes que pagar el precio de no actualizarte

01:11:08.120 --> 01:11:15.280
porque no puedas o porque no quieras pero por lo menos no tienes a yo creo no lo sé corrígeme si

01:11:15.280 --> 01:11:20.240
me equivoco yo creo que los usuarios preferirían pagar el precio de tener unas apps que ocupen

01:11:20.240 --> 01:11:29.720
más espacio pero poder usar apps que usen cosas más modernas a ver también los que no se actualizan

01:11:29.720 --> 01:11:35.000
precisamente eso porque por algo una razón muy muy puntual y eso es muy poca gente o porque es

01:11:35.000 --> 01:11:39.560
gente que no le interesa tampoco tener su moderno pero sabes cuál es el problema aquí julio que

01:11:39.560 --> 01:11:51.240
apple saca IOS 17 y la aplicación de mensajes y de fotos de IOS 16 se la pela porque ellos ya

01:11:51.240 --> 01:11:58.560
están trabajando en las de IOS 17.1 17.2 entonces ese problema que tienes tú que tienes una

01:11:58.560 --> 01:12:05.800
aplicación que tiene que soportar IOS 15 y le quieres meter algo de IOS 17 nuevo lo tienes

01:12:05.800 --> 01:12:12.240
tú apple no tiene ese problema porque las aplicaciones del sistema de apple vienen bueno

01:12:12.240 --> 01:12:17.760
creo que hay algunas que no las del app store y demás pero las principales si vienen con el

01:12:17.760 --> 01:12:23.200
sistema vienen con el sistema y cuando sale un nuevo sistema en la anterior a apple se lava

01:12:23.200 --> 01:12:29.440
las manos completamente y le puede meter todas las últimas apis le puede meter suite data le

01:12:29.440 --> 01:12:36.320
puede meter tipkit y las diez de últimas que le da igual entonces yo creo que como cuando decíamos

01:12:36.320 --> 01:12:42.000
que los desarrolladores de apple han empezado a utilizar los scope las versiones de scope que

01:12:42.000 --> 01:12:49.000
estaban sacando vale pues esto es igual apple ya es que no tiene ese problema de retrocompatibilidad

01:12:49.000 --> 01:12:54.880
de sus apps pero si tiene el problema de la retrocompatibilidad en cuanto a lo que es que

01:12:54.880 --> 01:13:06.640
la gente utilice o no SwiftUI y aquí hilamos vale porque claro tú al final dices puedes empezar a

01:13:06.640 --> 01:13:20.840
trabajar solo con SwiftUI puedes empezar a trabajar solo con SwiftUI pero ahora puedes trabajar con

01:13:20.840 --> 01:13:29.640
UIKit de una forma más cómoda cómoda en cuanto a retrocompatibilidad que con SwiftUI desde luego

01:13:29.640 --> 01:13:41.720
porque pues porque UIKit dio su último gran salto en iOS 13 y desde entonces ha tenido pequeñas

01:13:41.720 --> 01:13:50.080
cositas que se le han ido incluyendo pero no grandes cositas a muy grandes rasgos todo lo

01:13:50.080 --> 01:13:58.720
que tú hagas en UIKit en iOS 13 o en adelante va a funcionar sin ningún problema es decir va a ser

01:13:58.720 --> 01:14:11.920
muy raro que usando UIKit para iOS 17 tengas algo que no puedas incluir desde iOS 13 incluso si eres

01:14:11.920 --> 01:14:18.280
porque esto es otra cosa que ya va en contra esto ya es algo que a mí me parece mal vale porque hay

01:14:18.280 --> 01:14:27.680
mucha gente que sigue bueno lo hemos comentado alguna vez te sorprenderías la enorme cantidad

01:14:27.680 --> 01:14:36.320
de alumnos que no conocen y lo hemos comentado alguna vez las fuentes de datos difusas no tienen

01:14:36.320 --> 01:14:42.920
ni idea o sea yo he tenido alumnos que al enseñarle esto han dicho pero qué magia es esta pero esto

01:14:42.920 --> 01:14:48.040
desde cuando se utiliza y cuando les dices cuál es la versión mínima en la que está te dicen pero

01:14:48.040 --> 01:14:55.240
visto porque no lo usa nadie pero si esto es mucho claro qué sucede que aquí seguimos trabajando

01:14:55.240 --> 01:15:02.320
esto es como el que dice no no yo soy desarrollador de java ya pero de que java vale

01:15:04.440 --> 01:15:12.320
porque es como el chiste no quería ligar con una programadora pero no se dejaba no se dejaba

01:15:12.320 --> 01:15:24.520
es que ahora de hecho cada vez me está pasando más y sobre todo cuando necesitas gente para

01:15:24.520 --> 01:15:33.600
un proyecto experta vale que claro hay gente que lleva muchos años trabajando el desarrollo de

01:15:33.600 --> 01:15:40.240
aplicaciones pero no ha utilizado cordata en su vida porque el 80% de las aplicaciones cogen datos

01:15:40.240 --> 01:15:46.400
de una base de datos por ser una pi rest y ya está no guarda nada local salvo cuatro en cuatro

01:15:46.400 --> 01:15:52.640
opciones el user default y lo demás le da exactamente igual y programa claro es gente

01:15:52.640 --> 01:16:01.560
que programa en 2015 o en 2016 porque no ha hecho nada de eso luego también que haya usado

01:16:01.560 --> 01:16:11.720
suscripciones de esto aquí es totalmente o sea es un arcano encontrar gente gente que lo que lo

01:16:11.720 --> 01:16:17.400
sepa manejar bien y es o sea me refiero creo que lo han cambiado este año que tenemos una

01:16:17.400 --> 01:16:24.720
nueva api de store kit hemos entrado en tal complejidad que es que ya no sólo es que seas

01:16:24.720 --> 01:16:29.760
desarrollador de ellos sino que hayas trabajado con x frango ok bueno pues ya lleves 10 años y

01:16:29.760 --> 01:16:35.200
te da igual la re que soy te pongan lo que te pongan vale tienes suficiente conocimiento para

01:16:35.200 --> 01:16:41.280
para abarcarlo pero es que si nos estamos convirtiendo un poco en esto de ejemplo que

01:16:41.280 --> 01:16:46.320
pones dejaba o yo que sé o de no de no hasta así soy programador de no de js pero has trabajado

01:16:46.320 --> 01:16:50.560
con no sé qué frango a no pues ya pues entonces no vales para el puesto da igual que sepas no

01:16:50.560 --> 01:16:58.320
de que seas el crack de hacer tú las cosas no veo que sepas javascript porque javascript solo así

01:16:58.320 --> 01:17:05.720
como javascript o java así que sólo como java al final utilizas utilizas framework y aquí no sé

01:17:05.720 --> 01:17:11.200
si ya es que aquí ya no sé quién puede tener la culpa porque bueno la propia apel te ha puesto

01:17:11.200 --> 01:17:16.080
las fuentes de datos difusas pero claro que no lo actualices pero yo me he encontrado en muchos

01:17:16.080 --> 01:17:21.840
sitios que el problema es que no tienes gente que pueda utilizar eso de hecho a mí pasa en algún

01:17:21.840 --> 01:17:29.240
proyecto que hemos ya hace años ahora ya menos pero es no quiero empezar en su yubai ya pero

01:17:29.240 --> 01:17:34.800
si empezas en su yubai cuando vayamos a contratar un programador necesitamos que sepa su yubai

01:17:34.800 --> 01:17:44.480
entonces nos estamos ciñendo a o sea nos estamos quitando objetivos gente que pueda entrar en el

01:17:44.480 --> 01:17:52.600
perfil es igual que lo de que aprendo yo o sea necesito yubai kit o voy directamente a su yubai

01:17:52.600 --> 01:18:03.480
pues depende depende si quieres currar una empresa yo diría que ahora mismo el 80 por ciento 85 me

01:18:03.480 --> 01:18:10.640
apura te van a pedir aquí aunque ya esté migrando a su yubai pero vas a tener que arreglar bugs de

01:18:10.640 --> 01:18:16.240
yubai kit a mí me de hecho me pasó en una empresa que estaba cuando me fui vino un chico que además

01:18:16.240 --> 01:18:24.360
pues se cabrearon porque me iba no contaron conmigo para buscar a alguien vale y bueno de android ya

01:18:24.360 --> 01:18:29.400
había contratado yo a alguien pero claro de ellos no había nadie cuando me fui yo y claro contrataron

01:18:29.400 --> 01:18:36.000
a un chico que sólo sabía objetiv C no había visto swift en su vida y teníamos tres aplicaciones

01:18:36.000 --> 01:18:39.560
y otras dos de clientes también que mantenía o sea estábamos desarrollando como dos o tres

01:18:39.560 --> 01:18:42.720
aplicaciones y tenemos otras dos o tres de clientes ya hechas que nos pedían de vez en

01:18:42.720 --> 01:18:49.760
cuando cosas y estaba todo en su y claro luego a la semana cuando me fui me llamaron oye que

01:18:49.760 --> 01:18:55.800
es que este chico digo a mí que me cuentas y porque habéis contratado a alguien que no le

01:18:55.800 --> 01:19:02.800
contrataste tú y no me no me preguntaste pero a ver es que esto de las migraciones es que es

01:19:02.800 --> 01:19:10.280
súper difícil y ahí tenemos julio que pues anda que no habrá por ahí código de fortran

01:19:12.160 --> 01:19:17.920
y desde y servidores y programas en c puro que es que están ahí de que no es porque se hayan hecho

01:19:17.920 --> 01:19:22.480
ahora en c porque sea mejor hacerlo en c no están hechos en c porque se hizo hace 25 años y era la

01:19:22.480 --> 01:19:26.880
mejor manera de hacerlo claro en ese momento es que lo que estábamos comentando todo al final

01:19:26.880 --> 01:19:31.720
dice no yo soy un programador de java ya pero resulta que eres de java que la última vez que

01:19:31.720 --> 01:19:39.000
te actualizaste estaba la versión 1.2 1.3 o sea ni siquiera te has enterado que ahora vamos por

01:19:39.000 --> 01:19:49.680
java 8 update 453 coma 24 y dice qué es eso no ni te has enterado que java tiene programación

01:19:49.680 --> 01:19:57.840
funcional o que le han metido mil cosas no incluso la parte de yo que sé en el mismo

01:19:57.840 --> 01:20:03.040
java script vale no no yo soy programador de java script ya pero sabes que java script soporta

01:20:03.040 --> 01:20:09.040
también programación funcional sabes que hay librerías que le permiten tener tipado estricto

01:20:09.040 --> 01:20:14.560
como una que hay de facebook te dice no yo soy programador de python ya pero python qué versión

01:20:14.560 --> 01:20:23.120
porque python hasta la versión 3.5 en 2015 no tenía notaciones y entonces volvemos a pues

01:20:23.120 --> 01:20:30.400
todavía hay a día de hoy ocho años después del lanzamiento de las de los de las anotaciones de

01:20:30.400 --> 01:20:40.640
tipo de python código en python que no usa eso incluso hecho con versiones posteriores porque

01:20:40.640 --> 01:20:46.760
hay mucha gente que no conoce ese cambio que hubo que desde luego pues es bastante más práctico a

01:20:46.760 --> 01:20:53.480
la hora de entonces qué pasa que somos funcionarios del desarrollo de verdad que vamos a querer

01:20:53.480 --> 01:21:00.320
trabajar toda la vida exactamente igual porque si yo que sé pues el visual basic pues yo es que

01:21:00.320 --> 01:21:05.280
sabía visual basic y ahora y sigo usando visual basic y a mí que no me cambien el visual basic

01:21:06.800 --> 01:21:12.960
entonces la gran pregunta es es realmente bueno que todo vaya evolucionando tanto y

01:21:12.960 --> 01:21:18.560
tan rápido y que como nos pasa a nosotros tengamos que estar actualizándonos año a año con las

01:21:18.560 --> 01:21:24.480
novedades y que hasta el año pasado CoreData y ahora SwiftData y ahora no sé qué y sobre todo

01:21:24.480 --> 01:21:32.640
el gran problema que es un poco a donde vamos aquí al final irónicamente un tío que sabe Objective-C

01:21:32.640 --> 01:21:39.400
porque seamos sinceros vale yo no estoy de acuerdo con eso pero ahí está la realidad y no puedo no

01:21:39.400 --> 01:21:47.160
verla y es que un tío que sabe Objective-C a día de hoy es el puto sheriff del mundo porque va a

01:21:47.160 --> 01:21:54.080
conseguir trabajar con cualquier proyecto hecho en UIKit que no use ninguna API nueva de los últimos

01:21:54.080 --> 01:22:00.640
años y va a ser capaz de mantenerlo sin problemas va a ser capaz de trabajar con él y lleva 20

01:22:00.640 --> 01:22:09.280
puede llevar fácil 12 13 años pues prácticamente sin mover o sin usar nada a lo mejor incluso

01:22:09.280 --> 01:22:17.160
hasta se le da también que sigue trabajando en MRC y no usa Objective-C 2.0 y sigue haciendo los

01:22:17.160 --> 01:22:23.920
release de los objetos y es feliz y lo tiene todo controlado yo tuve un alumno lo he contado aquí

01:22:23.920 --> 01:22:30.840
tuve un alumno que es la única persona de todas las que han estudiado SwiftUI conmigo que me

01:22:30.840 --> 01:22:38.080
dijo SwiftUI está muy chulo SwiftUI está guay pero yo prefiero seguir trabajando como yo trabajo y

01:22:38.080 --> 01:22:45.880
cómo trabaja él pues trabajaba haciendo todas las apps de UIKit directamente a pelo a mano

01:22:45.880 --> 01:22:52.800
programado las interfaces las constraints todo tenía una serie de librerías que ya las tenía

01:22:52.800 --> 01:22:58.040
más que machacadas unas plantillas de apps que ya las tenía totalmente machacadas y era capaz de

01:22:58.040 --> 01:23:04.840
hacer una app pues en el mismo tiempo que yo podría tardar en hacerla en SwiftUI vale entonces

01:23:04.840 --> 01:23:12.840
qué es mejor es que ese es el kit de la cuestión entonces obviamente es mejor lo más nuevo porque

01:23:12.840 --> 01:23:19.640
es mejor es más eficiente es más práctico es más pero resulta que empiezas con SwiftUI y yo ahora

01:23:19.640 --> 01:23:25.920
tengo que estar enseñando a los alumnos el si estáis en IOS 15 se puede usar esto si está en

01:23:25.920 --> 01:23:37.280
16 esto si está en 17 esto si yo enseño a la gente a usar SwiftUI y quieren porque por decisión propia

01:23:37.280 --> 01:23:43.480
o porque están en una empresa tienen que soportar hasta la versión 15 pues no van a poder usar el

01:23:43.480 --> 01:23:50.080
navigation stack ni van a poder usar la navegación programática ni van a poder navegar de una forma

01:23:50.080 --> 01:23:57.640
fácil a un lugar con a través de una notificación por ejemplo una push notification que entra a la

01:23:57.640 --> 01:24:02.840
que yo le pulso y quiero que me vaya a un sitio que esté derivado de dicha push notification como

01:24:02.840 --> 01:24:10.560
un whatsapp pues para que eso lo pueden hacer lo tienen que montar de una manera pues en fin tienen

01:24:10.560 --> 01:24:16.640
que fight the framework tienen que pelearse con el framework para hacerlo porque el framework tiene

01:24:16.640 --> 01:24:22.320
una manera de hacerlo pero no lo puedes usar porque sólo funciona a partir de IOS 16 vale

01:24:22.320 --> 01:24:28.040
entonces eso es lo que no me parece correcto y encima te pone warnings cuando utilizas navigation

01:24:28.040 --> 01:24:33.960
view y encima cuando exactamente te dice que navigation view está deprecado y que uses el

01:24:33.960 --> 01:24:43.000
otro entonces no puedo claro entonces a mí es lo que me molesta de apple que apple no está teniendo

01:24:43.000 --> 01:24:50.560
en cuenta no está cuidando o yo creo que ni siquiera está viendo que las empresas no pueden

01:24:50.560 --> 01:24:57.680
soportar sólo la última versión igual que hacen ellos que las empresas no pueden coger las apps

01:24:57.680 --> 01:25:04.600
que están usando en versiones anteriores y mandar a la mierda a miles de usuarios o literalmente

01:25:04.600 --> 01:25:12.280
millones de usuarios que todavía no que o no pueden o no quieren si no quieren ya lo dije la

01:25:12.280 --> 01:25:22.080
otra vez pues allá ellos pero si no pueden porque tiene un iphone 7 y no tiene por qué comprarse un

01:25:22.080 --> 01:25:30.800
iphone nuevo hostia o un iphone 8 si alguien sigue teniendo un iphone 8 un iphone 10 pues adiós IOS

01:25:30.800 --> 01:25:38.480
17 no está soportado por lo tanto pues ya no tienes tipkit no tienes las nuevas gráficas de

01:25:38.480 --> 01:25:49.120
switch arts no tienes swift data no me parece lógico a ver yo creo que la excusa quedará en

01:25:49.120 --> 01:25:56.640
ellos nunca de hecho mira que me estoy en el slack este que montan para la wdc y de vez en cuando me

01:25:56.640 --> 01:26:05.080
leo por la charla es que tengo bolitas de esta o sea de canales sin leer un montón pero o sea

01:26:05.080 --> 01:26:10.880
nunca he visto en los foros de apple cuando a veces una vez cada año dan alguna explicación

01:26:10.880 --> 01:26:17.920
los de los de apple supongo porque ya te digo que no las he visto que dirían algo como vale pues si

01:26:17.920 --> 01:26:24.680
soportas ios 14 pues utilizas sólo las apis de ios 14 haz lo que puedas con ios 14 y lo que no pues

01:26:24.680 --> 01:26:33.720
montátelo tú solo o como quieras supongo que te darán ese porque a ver a mí también es que un

01:26:33.720 --> 01:26:41.880
poco de rabia porque quieres montar algo y tienes una versión baja y vas a hacer algo y que hago un

01:26:41.880 --> 01:26:48.640
if available pero no porque es que al final lo terminas montando de la manera en la que la api

01:26:48.640 --> 01:26:54.760
soportada más baja obviamente porque si es que si no no vas a hacer el mismo desarrollo dos veces

01:26:54.760 --> 01:27:01.920
vale pero luego hay otras veces que eso me molesta más que depende de la versión que estés no se

01:27:01.920 --> 01:27:07.000
muestran las cosas bien de hecho el otro día creo que fue para ios 15 de hecho lo estuve hablando

01:27:07.000 --> 01:27:13.320
con un compañero y no nos acordábamos cambiaron algo en los estilos por defecto de los botones

01:27:13.320 --> 01:27:21.800
en el storyboard entonces si tú no le ponías si ponías estilo plain no te dejaba cambiarle

01:27:21.800 --> 01:27:26.360
la fuente o a partir de no sé qué versión de la 15 no se veía la fuente cambiada pero en la 13 sí

01:27:26.360 --> 01:27:33.240
vale y si casi cambiabas de estilo de botón te aparecía lo del deprecado bueno una mierda

01:27:33.240 --> 01:27:40.520
o sea hay cosas de esas que a veces cambian algo y ahí sí que te obligan porque ya no está no es

01:27:40.520 --> 01:27:48.040
que esté deprecado es que ya está allá no se puede usar no es una recomendación me refiero sino

01:27:48.040 --> 01:27:53.760
que ya no está en la siguiente api ya no está con lo cual sí o sí si quieres soportar ellos 16

01:27:53.760 --> 01:27:58.680
ellos 14 para ellos 16 tienes que poner un if available para hacerlo de esa manera porque

01:27:58.680 --> 01:28:04.400
si no no lo vas a conseguir eso sí que es una mierda porque aparte aparte de eso también obliga

01:28:04.400 --> 01:28:08.520
a una empresa que tiene una aplicación que ha hecho un esfuerzo económico para la aplicación

01:28:08.520 --> 01:28:17.920
y qué tal a que todos los años oye mírame la aplicación que a ver si es compatible que de hecho

01:28:17.920 --> 01:28:26.120
afortunadamente pasa menos pero yo me acuerdo y os 10 y 11 por ahí que sacaban una o sea cuando

01:28:26.120 --> 01:28:35.760
salía la nueva versión en agosto había que revisarlo porque llegaba a septiembre y actualizaba

01:28:35.760 --> 01:28:39.600
niños y no funcionaba aplicación pero no funcionar de no funcionar nada

01:28:39.600 --> 01:28:51.400
es que no saber yo por ejemplo intento solventar esto cuando doy mis formaciones obviamente vale

01:28:51.400 --> 01:28:56.200
yo cuando doy mis formaciones ahora que vamos a empezar el suite del upper program suite del

01:28:56.200 --> 01:29:04.440
upper program es solo en su if you hay quieres o decir que nos centramos en la última versión y

01:29:04.440 --> 01:29:12.760
al resto no obviamente no a ver el programa formativo que tenemos en swift en el suite del

01:29:12.760 --> 01:29:18.560
upper program que está centrado en su if you hay está estructurado de manera en el que dividimos

01:29:18.560 --> 01:29:31.640
ios 15 ios 16 y ios 17 entonces en ios 15 16 y 17 yo te digo qué puedes hacer y cómo hasta ios 15

01:29:31.640 --> 01:29:39.600
para que puedas hacer todo lo que puedes hacer en las versiones más nuevas pero usando versiones más

01:29:39.600 --> 01:29:44.880
antiguas entonces al final es la solución que yo he encontrado pero es una solución que yo

01:29:44.880 --> 01:29:53.560
encuentro a nivel académico que hasta ios 15 porque vamos a ser totalmente vale esa hasta

01:29:53.560 --> 01:30:00.560
ios 15 todo el mundo menos los dispositivos que se quedaron en la 12 que esos no soportan su

01:30:00.560 --> 01:30:05.680
if you hay por lo tanto si tienes que soportar dispositivos que vayan en la 12 o anterior pues

01:30:05.680 --> 01:30:10.560
mira no haga su if you hay porque no te va a servir para nada vale porque su if you hay sólo

01:30:10.560 --> 01:30:20.240
funciona a partir de la 13 ahora su if you hay tienes 13 14 y 15 todos absolutamente todos señores

01:30:20.240 --> 01:30:28.200
project managers project owners project product owner viking fronker handle porquer very handle

01:30:28.200 --> 01:30:37.640
don del nada donde handle del mundo todos absolutamente todos los dispositivos que

01:30:37.640 --> 01:30:51.880
soportan a ios 13 soportan 14 y 15 es absurdo es estúpido es innecesario es decisiones tomadas

01:30:51.880 --> 01:30:57.480
por gente que no tiene ni puñetera idea de nada que quieran soportar versiones 13 y 14

01:30:57.480 --> 01:31:03.960
porque todos los dispositivos que funcionan en la 13 y la 14 soportan la 15 ya en julio

01:31:03.960 --> 01:31:08.760
pero hay dispositivos que están todavía en la 13 y la 14 porque hay gente muy idiota que no

01:31:08.760 --> 01:31:17.240
quiere actualizar pero no porque no pueda porque no quiere y si no quiere yo no lo respeto

01:31:19.480 --> 01:31:24.560
a ver si tú quieres una aplicación tú quieres una aplicación es un dispositivo y para actualizar

01:31:24.560 --> 01:31:29.160
y puedes actualizarlo para que soporte esa aplicación que si no los si no actualizas

01:31:29.160 --> 01:31:36.120
es que es tu puñetera culpa es que es exacto por lo tanto eso es culpa del usuario vale por eso

01:31:36.120 --> 01:31:43.720
nosotros desde el suyo del over program empezamos a hablar de su if you hay en ios 15 y en ios 15

01:31:43.720 --> 01:31:49.160
ya se puede hacer una app completa se puede hacer una app completa que tenga un montón de

01:31:49.160 --> 01:31:54.680
funcionalidades que permite hacer un montón de cosas etcétera que las cosas chupi chupi chupi

01:31:54.680 --> 01:32:02.080
chupi hay algunas que no están soportadas en la 15 efectivamente por eso yo te enseño a cómo

01:32:02.080 --> 01:32:13.320
por detrás replicarlas aunque no tengas la versión más nueva y eso julio cubre el ahora mismo el 94

01:32:13.320 --> 01:32:19.920
por ciento de todos los dispositivos y el 98 por ciento los dispositivos introducidos en los

01:32:19.920 --> 01:32:28.240
últimos cuatro años o sea ojito vale el 98 por ciento del total de dispositivos que se han

01:32:28.240 --> 01:32:35.120
presentado en los últimos cuatro años ya soportan a ios 15 y el 94 del total de todos o sea por

01:32:35.120 --> 01:32:43.840
favor vale entonces en fin insisto si sé que hay usuarios que aún siguen la versión 13 o 14 pero no

01:32:43.840 --> 01:32:50.400
actualizan porque no quieren así que respeto a ellos cero vale porque la diferencia para tus

01:32:50.400 --> 01:32:59.320
desarrolladores va a ser enorme vale ahora saltamos a ios 16 ahí ya no lo siento pero ahí se quedaron

01:32:59.320 --> 01:33:09.280
fuera los iphone 6s los iphone 7 los 7 plus varios que no pues ya ahí ya no es ahí ya es gente que

01:33:09.280 --> 01:33:17.720
no puede actualizar de acuerdo poca pero bueno poca es que si yo tengo una aplicación de 100.000

01:33:17.720 --> 01:33:26.880
usuarios y tengo un 0.1 por ciento bueno pues a ver ese 0.1 por ciento de 100.000 pues hombre

01:33:26.880 --> 01:33:35.520
son unos cuantos hay gente que tiene pues empresas que van muy ajustadas y que ese porcentaje pues

01:33:35.520 --> 01:33:40.800
oye si son miles vale no voy a hacer la operación porque ya me equivoqué en el pasado programa creo

01:33:40.800 --> 01:33:47.320
en uno de estos que hizo un cálculo de fatal vale pero ya son miles de usuarios los que te vas a

01:33:47.320 --> 01:33:55.000
dejar fuera entonces yo te enseño a cómo usar a ios 16 qué opciones tienes qué opciones nuevas

01:33:55.000 --> 01:34:02.480
tienes cómo puedes insisto replicar lo que puedes hacer la 16 en la 15 de distintas maneras porque

01:34:02.480 --> 01:34:12.360
los navigation stack los puedes replicar si haces navegación basada en estados vale con ios 15

01:34:12.360 --> 01:34:18.560
etcétera vale incluso puedes replicar el efecto del push y el pop vale que tienen la navegación

01:34:18.560 --> 01:34:24.840
estupendo yo te enseño cómo se hace eso pero ahora este año me han complicado más todavía

01:34:24.840 --> 01:34:31.840
la vida porque este año yo voy a tener que dar con ios 17 las dos arquitecturas

01:34:33.240 --> 01:34:39.520
por lo que voy a tener que enseñar cómo funcionan los observed objects, los stayed objects, los

01:34:39.520 --> 01:34:47.040
observables objects, los no sé qué, los tal tal tal ping ping ping en virón menoye y su padre lo que

01:34:47.040 --> 01:34:54.080
es todo lo que teníamos de arquitectura de SwiftUI hasta la versión 16 y luego enseñarte la nueva

01:34:54.080 --> 01:35:04.120
de ios 17 con Swift Data entonces tú ya sabes lo que hay tienes la información para soportar

01:35:04.120 --> 01:35:15.680
ios 17 ios 16 y ios 15 eso te va a permitir hacer y prescindir por completo de todo UIKit depende

01:35:15.680 --> 01:35:25.760
de hasta dónde quieras llegar con tu app pero en un muy alto porcentaje sí y las cosas que tengas

01:35:25.760 --> 01:35:31.280
que usar de UIKit yo te voy a enseñar cómo usarlas de una forma que no sea excesivamente

01:35:31.280 --> 01:35:37.040
complicada y que además sea reutilizable. En vez de ver un vídeo por ejemplo en vez de ver una web

01:35:37.040 --> 01:35:43.760
por ejemplo o poner un selector de fotos porque en ios 16 hay un picker pero no está en la 15

01:35:43.760 --> 01:35:51.440
o el diálogo de mostrar de compartir que en muchas ocasiones son dos instrucciones es que

01:35:51.440 --> 01:35:57.600
hay integraciones de UIKit que son dos instrucciones son dos líneas de código para hacer un sheet de

01:35:57.600 --> 01:36:04.240
acción de compartir algo vale entonces bueno pues todo eso te lo enseño. ¿Se puede prescindir de

01:36:04.240 --> 01:36:15.680
UIKit? Insisto sí pero ahora está también la realidad del mercado con lo que es lo que ha

01:36:15.680 --> 01:36:21.280
dicho Arturo que la gran mayoría de las empresas a día de hoy aunque ya estén trabajando con SwiftUI

01:36:21.280 --> 01:36:33.760
seguro que tienen proyectos en UIKit. Entonces ese es el problema y además yo que lo veo día a día

01:36:33.760 --> 01:36:41.040
esa escasez de talento que dicen cuando buscas algo muy pues eso por lo que decía no es que

01:36:41.040 --> 01:36:46.360
necesito para este proyecto pues utilizamos mucho core data utilizamos encriptación utilizamos

01:36:46.360 --> 01:36:52.480
suscripciones claro y te encuentras a gente que a lo mejor pues por su perfil te encaja porque

01:36:52.480 --> 01:37:00.680
lleva muchos años pero nunca nunca ha dado con esos fringos que probablemente si el tío es listo

01:37:00.680 --> 01:37:07.800
y lleva muchos años programando se lanzará ello y no habrá y no habrá ningún problema pero también

01:37:07.800 --> 01:37:12.880
yo he visto mucho código con unas burradas sobre todo en este tipo de framework porque además te

01:37:12.880 --> 01:37:18.680
encuentras burradas con cosas muy específicas en los códigos porque hay cosas que como todo el mundo

01:37:18.680 --> 01:37:26.240
se las sabe pero luego hay otras que claro porque y dominar y tú lo sabrás más que nadie Julio

01:37:26.240 --> 01:37:34.880
dominar core data cuesta o sea saber todos los entresijos no hacer burradas y hacer las cosas

01:37:34.880 --> 01:37:41.320
bien cuando te sacan de sota caballo y rey tiene su complejidad porque digamos que hay como dos

01:37:41.320 --> 01:37:48.000
niveles pues yo que sé también dominar la parte de los hilos vale la parte de los hilos no es saber

01:37:48.000 --> 01:37:53.480
no es que cuando te ponen un error en morado es code tienes que poner dispatch q punto main punto

01:37:53.480 --> 01:38:00.760
sink en los que pongas vale eso no es saber cómo funciona gran central dispatch vale de hecho el

01:38:00.760 --> 01:38:07.600
otro día le paso a julio una burrada de de un código bastante seria y de hecho y me he encontrado

01:38:07.600 --> 01:38:14.800
proyectos en la vez me hace mucha gracia el meme este de que este típico que sale un tanque echando

01:38:14.800 --> 01:38:20.680
un chorro de agua y coge alguien y le pone una pegatina para para que deje de echar agua pues

01:38:20.680 --> 01:38:24.720
eso es lo mismo cuando tengo un error de sincronización de que de repente algo pasa

01:38:24.720 --> 01:38:30.920
cuando no tiene que pasar o tengo el error este morado de scout de algo de hilos te pongo eso

01:38:30.920 --> 01:38:36.600
ah bueno y otra cosa que descubierto hablando de esto ya me pasó en su día con el sdk de facebook

01:38:36.600 --> 01:38:42.960
pero me ha vuelto a pasar con otro sdk y le voy a decir de se llama intercom vale que también es

01:38:42.960 --> 01:38:53.160
de analítica que tiene una inversión de prioridad en el código o sea en serio estás distribuyendo

01:38:53.160 --> 01:38:59.040
un puñetero sdk que estar utilizando pues el intercom no sé pero el de facebook ahora

01:38:59.040 --> 01:39:06.520
hay un millón de aplicaciones que tienes de facebook y tienes ese problema porque no sabrá

01:39:06.520 --> 01:39:16.000
ni lo que es no sabrán ni lo que es a mí es que eso es una cosa que me ha dejado bastante flipado

01:39:16.000 --> 01:39:20.480
la verdad porque yo lo veía y digo algo tengo que estar haciendo yo malo yo que sé tengo que

01:39:20.480 --> 01:39:27.520
estar llamando yo mal digo no puede ser que el este lo tenga y efectivamente lo tiene madre

01:39:27.520 --> 01:39:35.040
mía para que no lo sepa rápidamente una inversión de prioridad es un efecto colateral de intentar

01:39:35.040 --> 01:39:42.880
evitar un data race un data race es cuando dos hilos van a usar el mismo dato al mismo tiempo

01:39:42.880 --> 01:39:48.920
y por lo tanto se crea una desincronía principalmente porque aunque tú pienses que los dos datos se van

01:39:48.920 --> 01:39:54.920
a usar al mismo tiempo en realidad no es así sino porque siempre hay una cola de procesos en el que

01:39:54.920 --> 01:40:03.680
o bien en el caso de ARM los procesos van uno a uno porque ARM no ejecuta ocho precha ARM no

01:40:03.680 --> 01:40:11.360
ejecuta y los a la vez aunque tú creas que sí pero en realidad el momento de proceso lo hace

01:40:11.360 --> 01:40:17.600
uno a uno es como una autopista que sólo tiene una entrada pero pasan los coches muy rápido vale

01:40:17.600 --> 01:40:25.160
intel si intel si es capaz de tener varias filas de coches que pasan todas a la vez vale pero

01:40:25.160 --> 01:40:32.040
independientemente de si pasas todo a la vez o si pasa uno a uno se generan desincronías en

01:40:32.040 --> 01:40:38.880
los procesos a través de los mnemónicos el lenguaje binario funciona como la película de

01:40:38.880 --> 01:40:44.160
johnny de keanu reeves a través de mnemónicos un mnemónico es una instrucción de lenguaje

01:40:44.160 --> 01:40:50.680
ensamblador vale un mnemónico es mover un dato de una dirección a otra de memoria es hacer una

01:40:50.680 --> 01:40:58.200
operación de suma básica es hacer cosas pues eso instrucciones de lenguaje ensamblador si yo tengo

01:40:58.200 --> 01:41:04.520
una función que lo que hace es a igual a más uno lo que sucede es que a igual a más uno no es una

01:41:04.520 --> 01:41:10.800
operación a igual a más uno es ir a la memoria leer el dato guardarlo en una zona intermedia

01:41:10.800 --> 01:41:16.320
hacer la operación meterlo en el registro de la cpu me encargar la operación que la operación

01:41:16.320 --> 01:41:21.200
salga que se lea la operación que se vuelva a poner en memoria si entre todos esos pasos

01:41:21.200 --> 01:41:32.360
dos procesos distintos leen la memoria a la vez o en procesos uno al lado del otro y no terminan

01:41:32.360 --> 01:41:38.520
valesa imaginaros que yo tengo dos operaciones de aigual y de a igual a más uno y las dos están

01:41:38.520 --> 01:41:48.360
concurrentemente se ejecutan a la vez si yo voy a leer la memoria cuando a es igual a uno y vuelvo

01:41:48.360 --> 01:41:53.840
a leer la memoria para el otro proceso antes de que el anterior termine y grave que ahora es dos

01:41:53.840 --> 01:41:59.400
porque ya lo ha sumado uno tengo dos sumas que han leído los dos a la vez a es igual a uno

01:42:00.920 --> 01:42:05.800
eso es un data race porque estoy haciendo dos operaciones y en realidad se ha ejecutado solo

01:42:05.800 --> 01:42:11.480
una porque hay una desincronía y además como es algo totalmente aleatorio pues es un lío para

01:42:11.480 --> 01:42:18.320
solucionar eso que se hace bloquear el recurso si yo voy a sumar a bloqueo a de forma que cuando

01:42:18.320 --> 01:42:23.360
un proceso va a usar a queda bloqueado y si un segundo proceso llega a usar a tiene que esperar

01:42:23.360 --> 01:42:30.920
a que el anterior haya terminado pero si la prioridad de los procesos que van a leer a es

01:42:30.920 --> 01:42:38.320
distinta y este proceso segundo que va a hacer lo que sea tiene más prioridad que el anterior no

01:42:38.320 --> 01:42:44.360
puede ser que este no se pueda ejecutar porque el anterior tiene un recurso bloqueado y por lo

01:42:44.360 --> 01:42:49.240
tanto este que tiene menos prioridad acabaría antes porque éste no puede iniciarse hasta que

01:42:49.240 --> 01:42:54.840
éste no haya terminado eso es una inversión de prioridad que un proceso que tiene menos prioridad

01:42:54.840 --> 01:43:01.120
que otro termine antes cómo se soluciona pues que cuando un elemento bloquea un recurso lo que se

01:43:01.120 --> 01:43:06.720
hace es elevar la prioridad del mismo para que nunca ningún proceso anterior porque si no se

01:43:06.720 --> 01:43:14.080
generaría una desincronía de cpu que puede llegar a colgar tu aplicación vale o sea es un error de

01:43:14.080 --> 01:43:25.240
primero de concurrencia pero claro y de mirar la consola aparte es algo que estoy programando no

01:43:25.240 --> 01:43:30.280
tengo cuidado y se me pasa pero es que en cuanto ejecute el programa me va a salir un error bien

01:43:30.280 --> 01:43:36.600
gordo bueno pero tú tendrás activado el 3 sanitizer puede ser no no no sale igual sale

01:43:36.600 --> 01:43:44.560
en el main checker sí pues entonces ni te cuento sale sale directamente bueno de hecho a ver cuántas

01:43:44.560 --> 01:43:50.760
veces nos encontrado el de facebook me pasó solo con el 3 sanitizer y me pasó una vez que me puse

01:43:50.760 --> 01:43:55.320
pues eso pues de vez en cuando en las aplicaciones ahora no es tan lento depende el ordenador que

01:43:55.320 --> 01:43:59.400
tengas pero ahora no es tan lento pero hace años era bastante bastante lento cuando lo activabas

01:43:59.400 --> 01:44:05.160
pero siempre viene bien como consejo yo que sé una vez cada tres o cuatro días cuando añades

01:44:05.160 --> 01:44:10.520
bastante código ponerle 3 sanitizer porque a veces pues todos somos humanos vale y para estas las

01:44:10.520 --> 01:44:15.880
máquinas para que la máquina no se equivoca y para decirte pues en algún sitio que hayas podido

01:44:15.880 --> 01:44:24.680
liarla un poco con con la parte de hilos de facebook tenías que activarlo pero en él en este no en este

01:44:24.680 --> 01:44:34.040
con él este desactivado sale ahí bien gordo madre mía ese es el problema por eso yo por eso a mí no

01:44:34.040 --> 01:44:40.000
me gusta la librería de terceros vale ni los fringos de terceros porque no sabes a quién le

01:44:40.000 --> 01:44:48.400
estás entregando la confiabilidad de tus usuarios y de hecho yo hay una cosa que no soporto o sea

01:44:48.400 --> 01:44:57.080
yo no puedo a nivel toc tener ni un puñetero warning en mi aplicación no puedo o sea no

01:44:57.080 --> 01:45:05.800
o sea empiezo a convulsionar no lo soporto ya a veces me toca convivir con ellos en proyectos

01:45:05.800 --> 01:45:11.920
grandes y madre mía toca taparme los ojos de vez en cuando yo la cosa es que el otro día me

01:45:11.920 --> 01:45:22.520
preguntaron que querían añadir otro es otra librería vale no sé y de hecho me costó explicarlo

01:45:22.520 --> 01:45:30.520
porque me dijeron no eso va a impactar o sea en el rendimiento tener unos cuantos sdks por ahí

01:45:30.520 --> 01:45:36.960
detrás porque claro estamos en la analítica google analytics vale tú mandas eventos es decir tú le

01:45:36.960 --> 01:45:42.880
llamas pero eso aunque tú no le llames por detrás está haciendo un montón de cosas bueno está

01:45:42.880 --> 01:45:50.240
ejecutando código todo el rato me parece súper divertido que para usar google analytics tengas

01:45:50.240 --> 01:45:58.480
que montar firebase por narices pues eso es algo un proceso en segundo plano en hilos en background

01:45:58.480 --> 01:46:04.720
pero claro eso tienen ejecuciones ahí todo el rato y claro me preguntaban oye qué impacto es

01:46:04.720 --> 01:46:11.640
en el rendimiento y yo le dije a ver impacto a día de hoy digo y a lo mejor en android te encuentras

01:46:11.640 --> 01:46:19.080
con dispositivos de bajo coste antiguos y demás y a lo mejor ahí tienes problemas pero a día de hoy

01:46:19.080 --> 01:46:26.160
en niños normalmente digamos que suele para una aplicación normal vale la aplicación medianamente

01:46:26.160 --> 01:46:32.440
normal no vas a tener problema por tener cosas ahí en background vale sobre todo porque como

01:46:32.440 --> 01:46:37.480
están separados los hilos de ejecución no se te va a colgar la aplicación o no vas a tener por

01:46:37.480 --> 01:46:42.040
a lo mejor yo que sé pues algún proceso que hagas gracias tampoco hacemos procesos si estás en un

01:46:42.040 --> 01:46:47.280
proceso grande de comprimiendo un archivo yo que sé cosas de esas y tienes otras ocho cosas corriendo

01:46:47.280 --> 01:46:52.720
background pues en vez de tardar un minuto te va a tardar un minuto y 10 segundos vale pero en

01:46:52.720 --> 01:46:57.920
principio no pero también le dije yo cada vez que metes algo algo nuevo que se está ejecutando por

01:46:57.920 --> 01:47:03.600
detrás puedes llegar a un problema de rendimiento pero aunque no tengas problemas de rendimiento te

01:47:03.600 --> 01:47:09.840
puede provocar un casque de hecho hace dos años creo que fue una librería de google maps creo que

01:47:09.840 --> 01:47:14.800
fue hacer una actualización del servidor además no tienes ni que actualizar la app, no necesitas nada de

01:47:14.800 --> 01:47:20.160
código y hace una actualización del servidor de google y crasheaba pero a modo yo no sé si ya

01:47:20.160 --> 01:47:25.200
estaba creo que sí que estaba café suite ya en funcionamiento pero petaron las aplicaciones de

01:47:25.200 --> 01:47:31.280
uber de un montón de un montón de aplicaciones porque habían metido un crash esas librerías

01:47:31.280 --> 01:47:35.720
de terceros y claro y tú tampoco puedes hacer nada tú tienes tu aplicación en producción que depende

01:47:35.720 --> 01:47:41.080
de esa librería sí o sí y no la puedes apagar de un día para otro así que hasta que no lo

01:47:41.080 --> 01:47:51.200
actualizaron pues estabas estabas un poco vendido así que las librerías de terceros hay que vivir

01:47:51.200 --> 01:47:59.440
con ellas pero si se pueden evitar pero si pueden evitar eso y coco a pods no por favor no no mentes

01:47:59.440 --> 01:48:10.160
a la bicha es el favor mira que yo ahora ya estoy empezando a usar bien librerías de primeros

01:48:10.160 --> 01:48:20.200
vale librerías mías que monto pues eso de trabajo en red de cifrado de componentes de su joy y tal

01:48:20.200 --> 01:48:26.440
cosas así pues que bueno que la verdad que me ayudan a que los proyectos sean más eficientes

01:48:26.440 --> 01:48:34.240
y a tener una parte de código compartido y la verdad que con su paquete manager va a decir

01:48:34.240 --> 01:48:40.560
sabes lo que he hecho me vas a matar julio a ver hecho un framework aparte pues precisamente para

01:48:40.560 --> 01:48:44.680
nos lo comentaba para un log vale tenía que hacer un log y digo pues mira aprovechamos

01:48:44.680 --> 01:48:50.320
por un franco aparte además como tenemos varios talles widget como se llama extensiones de

01:48:51.600 --> 01:49:00.280
bluetooth y varias componentes digo pues mira mejor hago un framework y cojo y cometí el

01:49:00.280 --> 01:49:05.040
error además que es un framework de log que sólo el log que tampoco tiene mayor complejidad no

01:49:05.040 --> 01:49:11.080
tiene recursos de que a lo mejor dan un poco más de guerra en su package manager recursos de ficheros

01:49:11.080 --> 01:49:20.320
y cosas así vale pues voy y hago un xc framework en lugar de un paquete de spm julio y cuando mando

01:49:20.320 --> 01:49:26.960
la pull request para revisión me lo dicen oye por qué no has metido esto en un paquete y digo

01:49:26.960 --> 01:49:32.600
porque soy tonto o sea no tengo otra explicación porque andaba me lo pidieron como con mucha

01:49:32.600 --> 01:49:36.920
premura y claro el problema es que ya tenía todo el código y a lo mejor hacer él moverlo de un

01:49:36.920 --> 01:49:44.600
lado para otro me llevaba dos o tres horas sabes y tenía que entregarlo ya digo si eso más adelante

01:49:44.600 --> 01:49:49.960
nos lo planteamos pero dije madre mía qué oportunidad perdida lo de apple muy educados

01:49:49.960 --> 01:49:59.560
ellos y bueno y por qué tal no sé qué arturo because i'm stupid todos hemos sido muy estúpidos

01:49:59.560 --> 01:50:04.360
en muchas ocasiones así que no te preocupes que la verdad es que lo recomiendo ahora julio y

01:50:04.360 --> 01:50:09.840
hablando esto de justicia que es muy bueno separar aunque sea tu propia aplicación y sólo vayas a

01:50:09.840 --> 01:50:15.200
utilizar ahí ya sea preferentemente ahora porque yo creo que apple está tirando siempre ahí hacer

01:50:15.200 --> 01:50:21.200
un paquete de swift y si no un framework vale para separar cosas porque luego te encuentras

01:50:21.200 --> 01:50:26.320
que es uno de los problemas que tenemos otros por lo que estamos separando y nos está costando un

01:50:26.320 --> 01:50:32.440
montón que tenemos que hacer una extensión de compartir vale claro necesitamos utilizar muchas

01:50:32.440 --> 01:50:38.560
características de la aplicación pero claro o lo haces a lo burro cogiendo todos los ficheros de

01:50:38.560 --> 01:50:43.560
tu aplicación y metiéndolos como ficheros de la extensión vale o no te haces un franco por

01:50:43.560 --> 01:50:49.120
partido con la red y con determinadas cosas vale que con lo mínimo que necesites o varios imagínate

01:50:49.120 --> 01:50:55.240
que tienes uno para la red otro para empezar que tienes muy organizadas las dependencias evitas

01:50:55.240 --> 01:51:02.040
dependencias circulares que también aquí hay un montón vale y cosas raras y por otro porque lo

01:51:02.040 --> 01:51:05.160
tienes más organizado y cuando quieras hacer otro tarde cuando quieras hacer un widget porque

01:51:05.160 --> 01:51:09.960
mucha gente no voy a hacer un widget y de repente se ve que tiene que trasladar parte de su lógica

01:51:09.960 --> 01:51:18.320
pero claro su red tiene la dependencia de los users defaults y de los no sé qué y entonces se vuelve

01:51:18.320 --> 01:51:24.120
eso y luego de otro controlador que se ha hecho para la caché y claro portar eso al widget también

01:51:24.120 --> 01:51:29.240
al final tienes que portar todo y el widget el target del widget ocupa más que el target normal

01:51:29.240 --> 01:51:34.640
vale porque eso se vuelve a compilar todo te quiero decir no no es como un framework por partido que

01:51:34.640 --> 01:51:43.000
sólo se compila una vez para tu aplicación pues esa es esa es mi pena has probado tú el tema de

01:51:43.000 --> 01:51:54.920
la firma de los de lo de las librerías no pero eso funciona con él con él con la librería de

01:51:54.920 --> 01:52:02.120
sus paquis manager o funciona yo creo que no que son los xc framework cuando los distribuyes que

01:52:02.120 --> 01:52:09.440
puedes distribuir los firmados ya que yo entiendo que ahora pues firebase y tal que ahora ya funciona

01:52:09.440 --> 01:52:15.040
a 100% en sus paquis manager lo terminará por incorporar supongo no lo que pasa es que no sé

01:52:15.040 --> 01:52:21.040
porque creo que ahora mismo firebase y estos tienen por dentro luego un binario pero no es

01:52:21.040 --> 01:52:26.520
un xc framework o es un binario de los de toda la vida es un vídeo bueno la verdad es que no

01:52:26.520 --> 01:52:35.160
lo sé con seguridad yo sé que en su momento usaban un no el xc framework sino el otro que

01:52:35.160 --> 01:52:41.920
se genera que es que es un binario ya compilado ahora no recuerdo cómo es que por ejemplo la

01:52:41.920 --> 01:52:46.720
cosa es que el suy paquis manager el paquete de suy no puede firmado porque al final tú

01:52:46.720 --> 01:52:51.360
distribuyes código salvo que hagas esto que sea un binario vale que el binario puede ser

01:52:51.360 --> 01:52:57.440
si es un xc framework si lo podría afirmar de esta manera pero si es un binario normal no me

01:52:57.440 --> 01:53:03.960
pierdo un poco pero claro un paquete de suy no puede firmado porque al final es código tú estás

01:53:03.960 --> 01:53:09.720
descargando código o recursos porque en este caso digamos que el truco es que el binario compilado

01:53:09.720 --> 01:53:17.280
para que no veas lo que hay ahí dentro lo hacen como un recurso vale en el paquete como un recurso

01:53:17.280 --> 01:53:26.200
y no como código entonces no sé la verdad que que no sé cómo cómo resolverán esa esa parte es una

01:53:26.200 --> 01:53:31.720
de las cosas que tengo pendiente de mirar pero desde luego yo desde aquí os recomiendo que le

01:53:31.720 --> 01:53:38.920
echéis un ojo al tema de los de los frameworks propios vale de las librerías lo único tenéis

01:53:38.920 --> 01:53:49.000
que hacer es modularizar aquellas clases, struts, enumeraciones, tipos, etcétera que más utilicéis

01:53:49.000 --> 01:53:57.520
y crearos en scode un package vale entonces os creáis en scode ese package ponéis todos esos

01:53:57.520 --> 01:54:07.000
componentes y lo único que tenéis que hacer es dar un commit de lo que sea y luego poner un tag

01:54:07.000 --> 01:54:15.120
a ese commit con lo que es la versión vale por ejemplo normalmente se empieza con la 001 por

01:54:15.120 --> 01:54:22.640
ejemplo pues empiezas a poner la 001 o la 0.1 como tú quieras llamar a ese versionado, taggeas ese

01:54:22.640 --> 01:54:34.560
commit con ese 0.1 o 0.01 o lo que sea y haces un push al servidor incluyendo los tags entonces

01:54:34.560 --> 01:54:40.760
en ese momento ya tienes la librería en github y cualquier nuevo proyecto que vayas a usar sólo

01:54:40.760 --> 01:54:50.200
tienes que decirle importar librería en lo que son las parte de las capacidades y lo que es la

01:54:50.200 --> 01:54:58.120
parte de package que tiene el proyecto de scode le das la url de tu github y automáticamente la

01:54:58.120 --> 01:55:05.560
importa y la importa conociendo cuál es la versión de forma que luego cuando tú hagas alguna

01:55:05.560 --> 01:55:14.040
modificación en la librería el commit que tiene esa versión lo taggeas como 002 lo subes a github

01:55:14.040 --> 01:55:20.400
y en tu aplicación le das a fichero paquetes de swift actualizar a la última versión y entonces

01:55:20.400 --> 01:55:28.720
irá el solo a git recuperará la última 002 y la pondrá y la tendrás funcionando es muy simple

01:55:28.720 --> 01:55:36.640
la verdad y es muy práctico para tener tu código mejor mejor repartido de bueno pues sería un poco

01:55:36.640 --> 01:55:51.440
el tema por lo tanto bueno pues en conclusión ¿se puede usar SwiftUI solo sin nada de UIKit? yo

01:55:51.440 --> 01:56:01.560
creo que sí creo que sí a partir de iOS 15 porque tiene los suficientes componentes y porque la y

01:56:01.560 --> 01:56:08.440
aquí es un kit muy importante vale es decir no es cuestión de decir yo voy a hacer una app en UIKit

01:56:08.440 --> 01:56:18.120
o voy a hacer una app en SwiftUI es que la forma de pensar la app es totalmente distinta y aquí es

01:56:18.120 --> 01:56:26.680
donde tiene que ser la diferencia que tenéis que tener presente porque la forma de pensar desarrollar

01:56:26.680 --> 01:56:33.240
y usar porque hay muchísima gente yo conozco mucha gente que dice que SwiftUI no le gusta que es una

01:56:33.240 --> 01:56:39.520
mierda que no sé qué que para arriba y que te lo razona y dices pues pues tienes razón desde tu

01:56:39.520 --> 01:56:48.400
punto de vista SwiftUI no sirve para una puñeta vale por ejemplo nuestro amigo este que además no

01:56:48.400 --> 01:56:56.400
está en twitter el Stephen Thoreau Smith que está solo en mastodon no ha querido volver a x hay que

01:56:56.400 --> 01:57:01.800
ver de verdad es de los pocos desarrolladores que no han vuelto a twitter desde que se fue desde que

01:57:01.800 --> 01:57:06.880
lo compró Elon Musk bueno pues este hombre ha estado trabajando durante mucho tiempo con SwiftUI

01:57:06.880 --> 01:57:16.680
pero ya se ha dicho que no va a seguir usándolo hasta que Apple muy importante no homogeneice

01:57:16.680 --> 01:57:23.800
todas las versiones es decir que no haya cambios de que de pronto en una versión algo funciona y en

01:57:23.800 --> 01:57:28.960
la siguiente no o que haya no sé qué o que no sé cuánta en fin porque principalmente él está

01:57:28.960 --> 01:57:37.160
trabajando con el Mac que es cierto que el Mac hasta la versión 16 no ha tenido la suficiente

01:57:37.160 --> 01:57:43.240
estabilidad como para permitirle o como para tener las garantías de que todo te va a funcionar sin

01:57:43.240 --> 01:57:49.160
ningún tipo de problema vale es que ahí julio es una de las ventajas yo por ejemplo hice una

01:57:49.160 --> 01:57:56.000
aplicación en SwiftUI que era muy sencilla y además digamos que hice la de usuario bueno

01:57:56.000 --> 01:58:00.120
era como usuarios internos vale y eso está en el store que era para iphone pero luego es una

01:58:00.120 --> 01:58:06.280
versión de Mac que distribuía a nivel de la empresa para los administradores que tenía esas

01:58:06.280 --> 01:58:12.120
capacidades y más y precisamente hacer un SwiftUI me permitió hacer en muy poquito tiempo con y

01:58:12.120 --> 01:58:16.920
mantener además las dos al tiempo es decir yo cambiaba algo ni siquiera había vistas que eran

01:58:16.920 --> 01:58:22.600
distintas pero joder tenían un montón de lógica compartida entre las dos pero sí que es verdad

01:58:22.600 --> 01:58:29.080
que con Mac había algunas cosas que funcionaban muy raro pero muy raro y muchas veces que terminaba

01:58:29.080 --> 01:58:36.000
haciendo una vista nueva más que poner y estoy una plataforma en otra porque es que era imposible

01:58:36.000 --> 01:58:43.000
y a ver y yo te estoy hablando de una aplicación interna pequeñita si esto es otros drones mid

01:58:43.000 --> 01:58:48.880
tienen aplicaciones que utilizan miles de personas claro tenerlo que de repente de una versión para

01:58:48.880 --> 01:58:54.520
otra que a mí también me ha pasado con alguna vez en su UI para versiones de 13 y 14 de ellos

01:58:54.520 --> 01:59:04.120
que de repente sale la 14.5 o 4 no recuerdo y se va a la mierda la aplicación empieza a

01:59:04.120 --> 01:59:11.320
funcionar todo mal y me tiro tres días a fuego para hacerlo funcionar con una versión intermedia

01:59:11.320 --> 01:59:17.480
porque con una versión en mayores te lo esperas o sea si es así y cada vez que yo lo comentaba

01:59:17.480 --> 01:59:23.000
antes cada vez que hay una versión nueva pues si hay que coger la aplicación correrla si queréis

01:59:23.000 --> 01:59:30.200
apurar y esperar a que bueno de hecho mejor esperar a que salga la la res la de la release

01:59:30.200 --> 01:59:37.960
candidate vale y por favor ejecutarla en un dispositivo vuestra aplicación porque es que

01:59:37.960 --> 01:59:43.040
muchas veces te encuentras con una sorpresa que hay veces que es una línea de código un cheque

01:59:43.040 --> 01:59:50.960
en scope lo que sea pero hay que hacerlo es un tener una lista de las aplicaciones que tenéis

01:59:50.960 --> 01:59:55.920
si estás trabajando sólo para la empresa ya está pero si tienes aplicaciones tener una lista y

01:59:55.920 --> 02:00:02.320
poneros de deberes a cuando vas de vacaciones a principios de septiembre y revisar todas las

02:00:02.320 --> 02:00:10.200
aplicaciones que se ejecuten en la versión release candidate es algo que va a ser muy importante para

02:00:10.200 --> 02:00:17.400
vuestro para vuestro desarrollo el que comprobéis que todo funciona bien en las nuevas versiones

02:00:17.400 --> 02:00:22.120
vale incluso como dice arturo las versiones intermedias y eso es una de las cosas que a él

02:00:22.120 --> 02:00:27.480
le han hartado no el hecho de que bueno pues de pronto una versión intermedia sin venir a cuento

02:00:27.480 --> 02:00:34.560
cambia algo incluso por un error y de pronto deja de funcionar vale entonces eso es lo que a él le

02:00:34.560 --> 02:00:40.960
ha quitado las ganas de seguir el motivo principal y ha dicho que hasta que no haya una API que tenga

02:00:40.960 --> 02:00:47.080
la suficiente estabilidad como tiene UIKit pues no va a entrar de acuerdo no va a volver a SwiftUI

02:00:47.080 --> 02:00:54.040
pero también es cierto vale porque yo he sido he mirado su código y he visto las explicaciones

02:00:54.040 --> 02:01:01.760
que da a nivel técnico y tiene razón en un 50% que si insisto es la parte de la estabilidad de

02:01:01.760 --> 02:01:08.280
la librería que no cambie que tal la madurez de la propia librería etcétera eso se lo compro lo que

02:01:08.280 --> 02:01:14.200
no le compro es que cuando tú ves el código que él hace está haciendo un código que tiende a

02:01:14.200 --> 02:01:22.920
imperativo eso ya es un problema es decir cuando tú quieres desarrollar una aplicación en SwiftUI

02:01:22.920 --> 02:01:33.760
igual que la desarrollaba si diseñabas con UIKit ya te lo adelanto vas a fracasar vas a fracasar

02:01:33.760 --> 02:01:39.040
vas a cogerle odio SwiftUI y vas a pensar que aquello es una mierda pincha en un palo y punto

02:01:39.040 --> 02:01:47.400
y no vas a querer volver a verlo en tu vida porque has intentado usar SwiftUI como si fuera UIKit y

02:01:47.400 --> 02:01:56.040
no son iguales no tienen nada que ver es como si intentas programar en Swift igual que programabas

02:01:56.040 --> 02:02:02.680
en Objective-C lo siento no porque en Swift tienes Struts que no están en Objective-C porque en

02:02:02.680 --> 02:02:07.600
Swift tienes Enums que no están en Objective-C porque en Swift tienes un montón de cosas que

02:02:07.600 --> 02:02:13.320
no están en Objective-C y por lo tanto no puedes programar en Swift como si programaras en Objective-C

02:02:13.320 --> 02:02:20.680
porque tu código va a ser malo deficiente y mal estructurado. Eso no te pasaba a ti Julio al

02:02:20.680 --> 02:02:26.400
principio de utilizar SwiftUI cada vez estabas con una vista y no dabas y esto cómo coño lo

02:02:26.400 --> 02:02:34.440
hago y luego te das cuenta es que claro es que estoy intentando hacerlo como lo haría en UIKit

02:02:34.440 --> 02:02:40.560
a mí me pasó un montón de veces me decían vale y cuando pase esto cómo hago que luego cambie esto

02:02:40.560 --> 02:02:48.480
y claro y esperaba algo imperativo no reactivo porque estaba pensando en el cambio de estado

02:02:48.480 --> 02:02:58.080
más que en el mantener el estado. De hecho el otro día leí un artículo que decía que en SwiftUI

02:02:58.080 --> 02:03:07.440
no construyes vistas sino que tienen un body en el que describes una vista. Digamos que tienen

02:03:07.440 --> 02:03:13.560
que estar todas las opciones y todos los estados manejados no es como en UIKit que tú empiezas a

02:03:13.560 --> 02:03:19.160
cambiar cosas a cambiar cosas sino tú aquí tienes que decir voy a tener estos tres estados y va a

02:03:19.160 --> 02:03:24.000
haber estas transiciones y en cada estado pasa esto no no en UIKit tú le decías cambia este

02:03:24.000 --> 02:03:30.360
estado y añado esto y quito esto. De hecho yo luego a raíz de esto muchas veces en UIKit he

02:03:30.360 --> 02:03:36.640
aplicado un poco esa lógica y lo primero que hacía es hacerme un enum con un estado y luego

02:03:36.640 --> 02:03:42.800
en algún sitio me hacía una función que cuando cambiase de alguna manera ese estado me añadiese

02:03:42.800 --> 02:03:47.440
y quitase cosas a la vista según el estado y así en vistas complicadas la verdad es que

02:03:47.440 --> 02:03:53.080
funcionaba bastante bien y seguramente que hay alguna arquitectura por ahí que se base en eso.

02:03:53.080 --> 02:04:06.560
De hecho todos conocemos el maravilloso, la maravillosa arquitectura

02:04:09.120 --> 02:04:11.880
de Composable Architecture

02:04:11.880 --> 02:04:24.360
¿y de Composable Architecture qué es? pues no es más que convertir SwiftUI en React Native

02:04:25.480 --> 02:04:30.360
a partir del patrón Redux ni más ni menos

02:04:32.840 --> 02:04:40.320
que de hecho ya os adelanto si habéis programado en Decomposable Architecture que sepáis que el

02:04:40.320 --> 02:04:47.720
código que ya tenéis hecho no va a compilar en IOS 17 porque el agente responsable de TCA ha

02:04:47.720 --> 02:04:55.440
cambiado por completo toda la arquitectura porque como la arquitectura de IOS 17 cambia pues la han

02:04:55.440 --> 02:05:05.160
cambiado por completo aprovechando las ventajas que aporta IOS 17 con el añadido de que no vas

02:05:05.160 --> 02:05:14.960
a poder actualizar a la última versión tu librería, o sea tu aplicación no vas a poder actualizarla

02:05:14.960 --> 02:05:18.160
la última versión de TCA si no soportas IOS 17.

02:05:23.560 --> 02:05:31.960
Pero oye que esto no pasa solo en todos los sistemas es que pues eso tú haces una app en

02:05:31.960 --> 02:05:37.960
React Native vale y la app de React Native cada vez que se actualiza React Native pues ríete

02:05:37.960 --> 02:05:43.720
de las actualizaciones que tienes que hacer y de lo que deja de funcionar because potato

02:05:46.880 --> 02:05:53.040
Yo he tenido suerte la verdad de hecho es que cada uno ve su realidad yo cuando empecé

02:05:53.040 --> 02:06:01.800
digamos en el mundo de las aplicaciones móviles tenía trabajaba muchos proyectos con este tipo de

02:06:01.800 --> 02:06:12.240
o sea con React con Córdoba mucho híbrido no sé si es porque... Córdoba con V por el que no lo

02:06:12.240 --> 02:06:23.720
conozca que es muy bonita pero hace mucho calor y yo no sé si es que se ha cambiado o bueno a lo

02:06:23.720 --> 02:06:30.360
mejor me he metido yo más pero ahí sí que había verdaderos problemones cuando salía una nueva

02:06:30.360 --> 02:06:36.800
una nueva versión o bueno lo que hay ahora son arquitecturas un poco digamos mixtas que a lo

02:06:36.800 --> 02:06:42.320
mejor lo que hacen es pues tengo mi web pero le añado una parte nativa vale pero eso es menos

02:06:42.320 --> 02:06:49.200
punible en mi manera de ver es tengo la web que hice que se adapta bien a mobile vale pues hazme

02:06:49.200 --> 02:06:59.880
cuatro cosas nativas pues para que en el móvil sea más presentable como aplicación pero no sé

02:06:59.880 --> 02:07:06.920
yo hace mucho que no que no veo eso y ya te digo es que pero de verdad de un cliente llamar y decir

02:07:06.920 --> 02:07:11.440
qué pasa con la aplicación que es que no nada pero has actualizado sí sí me salió aquí una

02:07:11.440 --> 02:07:21.840
actualización y tal estoy en iOS 11 y yo amigo de viejo luego le decía lo que le iba a costar y

02:07:21.840 --> 02:07:27.080
ya empezaba porque es que sois unos ladrones porque es que ya pero no nuestra culpa pero

02:07:27.080 --> 02:07:34.920
le has dado a actualizar llama a facebook o llama apache o llama a quien sea lo que

02:07:34.920 --> 02:07:40.840
serán los responsables de esas librerías exacto y a veces era fácil porque era eso

02:07:40.840 --> 02:07:48.120
actualizar el proyecto a abrir el proyecto de actualizar y ya está pero otras sí pero nos

02:07:48.120 --> 02:07:53.320
guste o no pues hay que ir actualizando hay que ir mejorando hay que ir actualizando nuestro

02:07:53.320 --> 02:08:02.000
código manteniéndolo en fin si queremos que todo funcione de la mejor manera pues no queda otra

02:08:02.880 --> 02:08:11.280
pues yo creo que nos ha quedado un café interesante no cargadito e intenso con matices frutales

02:08:13.760 --> 02:08:18.400
hemos hablado de los temas que nos gustan las librerías terceros las aplicaciones

02:08:18.400 --> 02:08:27.240
y ese tipo de cosas pero bueno prepararemos yo creo que podría ser interesante lo pasa que

02:08:27.240 --> 02:08:35.600
requiere una preparación un poco más grande pero estaría bien hacer ya aproximándonos a bueno

02:08:37.360 --> 02:08:45.280
yo no sé si has oído y a mí mi bola de cristal que anda por aquí me dice que hay una alta

02:08:45.280 --> 02:08:52.520
probabilidad de que esto pase que no va a haber presentación de iphones en septiembre

02:08:56.880 --> 02:09:03.840
que se va a octubre porque apple no llega y eso me cuadra con que no llega también en el software

02:09:06.840 --> 02:09:10.800
no se va al final manda ya sabes que manda el hardware en cuanto a este dispositivo los

02:09:10.800 --> 02:09:17.360
iphone coge cierran versión de ellos y ya si eso julio en la punto 1.2 corregiremos

02:09:17.360 --> 02:09:22.960
toda la mierda que no nos ha dado tiempo pero es que acuérdate el desastre de ayos 14 o el

02:09:22.960 --> 02:09:29.480
desastre de ayos 16 que nos salió en ipad solo salió en iphone yo creo que no se pueden permitir

02:09:29.480 --> 02:09:37.080
eso otra vez de verdad ya a ver yo y no lo hagáis estoy en las betas salvo en mac por

02:09:37.080 --> 02:09:42.360
razones obvias de compatibilidad con el code y yo no he puesto ninguna beta y de que me da el

02:09:42.360 --> 02:09:48.760
salvo escudo pero no he puesto ninguna beta de nada bueno si tengo un mac aquí que no es mío

02:09:48.760 --> 02:09:55.280
que es un mac m2 pro de catwin que me cedieron para una para una colaboración que todavía lo

02:09:55.280 --> 02:10:01.040
tengo aquí y en ese si tengo sonoma porque no es un equipo de trabajo por lo tanto pues puedo

02:10:01.040 --> 02:10:07.400
probar ahí sonoma pero si no en el resto ni en el ipad ni en el iphone nada no tengo versión beta pues

02:10:07.400 --> 02:10:15.840
yo la verdad que bueno diría que en el ipad a mi ipad os no sé si porque no tengo un m1 de un ipad

02:10:15.840 --> 02:10:21.960
pro pero de con una 12 z y yo creo que desde que salió la arquitectura m ipad os a mí nunca me

02:10:21.960 --> 02:10:28.520
ha ido bien pero cuelgues y demás pero ya se sigue en su línea el watch muy bien salvo algunas

02:10:28.520 --> 02:10:32.640
transiciones se nota que han cambiado muchas transiciones a veces cuando me llaman sale muy

02:10:32.640 --> 02:10:37.840
chulo porque ahora sale como sobre la pantalla que estabas y tal pero claro no no se oscurece

02:10:37.840 --> 02:10:46.320
el fondo ni nada con lo cual parece un bug y bien un guacho ese salvo por algún bajas y pero el que

02:10:46.320 --> 02:10:52.160
va un poco patata es el iphone hace cosas raras todas las noches se me reinicia lo sé porque

02:10:52.160 --> 02:10:58.840
tengo el modo standby y siempre selecciono uno de tiene como tres preset vale pues siempre seleccionó

02:10:58.840 --> 02:11:04.440
uno y cuando me despierto está el por defecto que eso me hace pensar que a medianoche se reinicia

02:11:04.440 --> 02:11:12.920
el móvil y no sé si es por el calor pero arde o sea mi iphone siempre que lo toco está muy caliente

02:11:12.920 --> 02:11:23.600
no sé si es desde cada y no es desde que han puesto porque es porque es muy jota de más pero

02:11:23.600 --> 02:11:30.320
a ver también te digo que no es algo que no me pasase en niños 16 no sé qué hago mal julio

02:11:31.600 --> 02:11:36.800
pero el iphone estaba más caliente que el palo en churrero que el cenicero un bingo si es una

02:11:36.800 --> 02:11:44.480
cosa que y de hecho si quieres para rematar cuéntanos porque ahí tú has indagado mucho

02:11:44.480 --> 02:11:51.240
en su vida tata yo no me da tiempo a hacer nada o sea indagar demasiado y yo a ti te oigo decir

02:11:51.240 --> 02:11:55.920
que está bastante bien pero la gente no está muy de acuerdo eso es porque no están cogiendo

02:11:55.920 --> 02:12:08.800
lo con la mano propia yo es que no estoy teniendo ningún problema con su data a ver si tengo un

02:12:08.800 --> 02:12:14.200
problema con su data que es el que está declarado en la documentación de apple que en un contexto

02:12:14.200 --> 02:12:25.280
en segundo plano no se actualizan las queries a ver y esto tiene un porque a ver se deberían

02:12:25.280 --> 02:12:31.560
actualizar vale porque las para que la gente salió en los face requests no no se actualiza

02:12:31.560 --> 02:12:37.000
o sea los que son queries ahora claro es que ya no se encuentra pues no he dicho para el que haya

02:12:37.000 --> 02:12:45.640
trabajado con core data vale core data en swift y ui tiene el arroba fetch request que es la

02:12:45.640 --> 02:12:51.640
consulta a la base de datos que además es reactiva y que cuando la el contexto de la base de datos

02:12:51.640 --> 02:13:00.600
cambia la consulta cambia los datos que tiene ese fetch request y por lo tanto pues puedes ver esos

02:13:00.600 --> 02:13:09.960
cambios vale y eso pues es algo que funciona excelentemente bien en en core data vale pero

02:13:09.960 --> 02:13:17.800
en swift data ya no es así en swift data vamos a usar una cosa que se llama arroba query ese

02:13:17.800 --> 02:13:24.960
arroba query es esa consulta que nosotros vamos a usar en lo que es nuestra aplicación entonces

02:13:24.960 --> 02:13:34.520
qué es lo que sucede sucede lo siguiente vale si yo creo vale cuando yo estoy en el comienzo de la

02:13:34.520 --> 02:13:44.320
aplicación al window group de swift ui le tengo que anexar un constructor punto model container

02:13:44.320 --> 02:13:54.280
que es el conjunto de los elementos de digamos de los elementos de tipo arroba model que yo

02:13:54.280 --> 02:14:03.360
quiero utilizar entonces punto 1 si yo tengo una estructura de cuatro tablas pero hay una

02:14:03.360 --> 02:14:11.280
tabla principal y las otras tres son tablas hijas que funcionan por relaciones y esto es algo que

02:14:11.280 --> 02:14:20.480
casi nadie hace y de hecho yo aprendí gracias a uno de los seguidores que tenemos aquí en el chat

02:14:20.480 --> 02:14:26.960
gracias a mister vallejo id que le mandamos un saludo desde aquí pues él fue el que me dijo no

02:14:26.960 --> 02:14:35.240
no oye que basta poner la tabla padre y las hijas ya se incluyen por defecto en la definición del

02:14:35.240 --> 02:14:39.920
model container esto no se lo he visto hacer a nadie bueno de hecho yo no lo hacía hasta que

02:14:39.920 --> 02:14:47.720
él me lo dijo lo verifique desde entonces lo hago así y funciona perfectamente pero cuando yo pongo

02:14:47.720 --> 02:14:53.480
este constructor model container puedo ponerlo de varias formas porque este modificador de swift

02:14:53.480 --> 02:15:03.800
ui tiene varios constructores y uno de ellos es muy chulo porque uno de ellos tiene una cosa que

02:15:03.800 --> 02:15:16.960
se llama on first no sé qué es un constructor vale que permite elegir vale cuando yo creo el

02:15:16.960 --> 02:15:22.720
model container aquí on set up vale es que lo estoy viendo en la documentación vale cuando yo

02:15:22.720 --> 02:15:29.360
creo el model container le puedo pasar un contenedor que es una instancia de model container que yo

02:15:29.360 --> 02:15:39.240
haya creado aparte o le puedo pasar el array de las distintas tablas que voy a usar que son los

02:15:39.240 --> 02:15:45.640
arroba models le puedo indicar si es un modelo que va a ir o no en memoria para el tema de las

02:15:45.640 --> 02:15:52.920
previews le puedo indicar si quiero que active o no el autosave por lo que tendría la opción de

02:15:52.920 --> 02:15:58.440
poder hacer un punto save o no al contexto si está el autosave que está puesto por defecto

02:15:58.440 --> 02:16:04.440
entonces basta hacer un punto insert y ya se hace el entre comillas comic de manera directa

02:16:04.440 --> 02:16:09.920
pero también le puedo activar el undo vale que por defecto está desactivado pero se puede activar

02:16:09.920 --> 02:16:16.360
un undo que sea capaz de deshacer el último cambio que hayas hecho en la base de datos pero hay un

02:16:16.360 --> 02:16:25.520
closure que le puedes pasar que es el on set up y ese closure te permite ejecutar un proceso de

02:16:25.520 --> 02:16:32.120
inicio o de inicialización de la base de datos en el que el closure recibe un tipo de resultado que

02:16:32.120 --> 02:16:38.440
tiene dentro el model container ya instanciado y un posible error en caso de que no se haya

02:16:38.440 --> 02:16:44.240
podido instanciar ese model container te devuelve un tipo de resultado un result type entonces si

02:16:44.240 --> 02:16:50.400
tú recoges ese model container ya instanciado que es el que se crea por el propio model container a

02:16:50.400 --> 02:16:56.600
través de el método de instancia modificador que tiene el window group pues directamente puedes

02:16:56.600 --> 02:17:02.920
hacer ese callback para que cuando se cree la base de datos se haga un proceso de carga vale si en

02:17:02.920 --> 02:17:12.120
ese sitio haces el proceso de carga el query funciona perfecto vale porque detecta el contexto

02:17:12.120 --> 02:17:21.080
y es capaz de hacer la actualización donde no funciona es cuando tú le pasas un model container

02:17:21.080 --> 02:17:29.440
ya creado desde otro lugar que no esté creado a partir de este modificador en este caso se lo

02:17:29.440 --> 02:17:38.840
pasas a partir de una instancia de model container vale pero la instancia de model container es una

02:17:38.840 --> 02:17:47.360
instancia que no es concurrente que es lo último que yo resolví que lo estuvimos haciendo tú y yo

02:17:47.360 --> 02:17:52.840
a través de messenger que me estuviste mandando documentación yo estuve mirando tal y cual y

02:17:52.840 --> 02:18:03.400
al final lo resolvimos para que puedas tener un contexto asíncrono con protección contra

02:18:03.400 --> 02:18:09.280
data race es decir con protección para que dos procesos no lean o escriban de la base de datos

02:18:09.280 --> 02:18:21.040
a la vez hay que construir un actor conformado con el protocolo model actor y ahí ya empiezan

02:18:21.040 --> 02:18:32.160
las cosas muy bonitas y simpáticas porque eso requiere una propiedad no aislada llamada

02:18:32.160 --> 02:18:40.040
executor de tipo model executor requiere el model container requiere el model context es decir

02:18:40.040 --> 02:18:46.440
un lío bastante con una fiesta buena una fiesta buena vale de hecho compartí el código en la

02:18:46.440 --> 02:18:52.640
semana pasada en linkedin la esa declaración vale para que cualquiera puede pueda utilizarlo

02:18:52.640 --> 02:19:06.000
compartí como un snippet vale cuál es el problema que cuando tú haces la carga a partir de este

02:19:06.000 --> 02:19:10.360
model container que está creado a partir de una instancia distinta

02:19:10.360 --> 02:19:27.880
el arroba query no se actualiza tú le das funciona la app no muestra nada paras la app la vuelves a

02:19:27.880 --> 02:19:34.160
arrancar y te aparecen los datos por lo que la primera vez funcionó pero el arroba query no

02:19:34.160 --> 02:19:40.120
recibe la señal de que ha habido un cambio en el contexto cuando estamos trabajando en segundo plano

02:19:40.120 --> 02:19:50.760
ese es el único error que yo he encontrado con swift data por lo demás grabo inserto trabajo

02:19:50.760 --> 02:19:59.160
sin ningún problema pongo datos relacionados relaciones grabaciones de datos todo funciona

02:19:59.160 --> 02:20:05.320
sin ningún problema ahora qué es lo que yo veo por ahí mucha gente que no está entendiendo cómo

02:20:05.320 --> 02:20:11.520
funciona que no se ha visto los vídeos de apple y que lo está haciendo pues según sopla el viento

02:20:11.520 --> 02:20:17.200
entonces claro si no sigues esto es como core data porque de hecho swift data al final en gran

02:20:17.200 --> 02:20:23.760
parte son macros que tienen por detrás a core data si tú no sigues las reglas y el orden establecido

02:20:23.760 --> 02:20:31.720
swift data no va a funcionar bien vale ese es el key de la cuestión por ejemplo una de las

02:20:31.720 --> 02:20:39.040
cosas que te dicen que tienes que hacer es que tú creas y eso sí lo vi en su momento si tú

02:20:39.040 --> 02:20:45.440
tienes un empleado y ese empleado es de un departamento y ese departamento vale es una

02:20:45.440 --> 02:20:53.480
tabla relacionada aparte cuando tú crees el departamento no tienes que insertarlo tienes

02:20:53.480 --> 02:20:59.880
que crear el departamento asociarlo a la tabla principal y cuando hagas la inserción del registro

02:20:59.880 --> 02:21:06.320
de la tabla principal con la asociación del dato hijo él sólo va a crear el dato hijo en el mismo

02:21:06.320 --> 02:21:14.160
insert pero si haces un insert de ese dato secundario y luego haces otro insert del dato

02:21:14.160 --> 02:21:20.440
principal te va a decir que estás haciendo inserts en contextos distintos y te va a dar un pete que

02:21:20.440 --> 02:21:29.640
no va a funcionar yo creo que le falta documentación porque yo en los vídeos documentación y ser un

02:21:29.640 --> 02:21:36.480
poquito más intuitivo ya a ver también te digo que por ejemplo había hay cosas como había no hay

02:21:36.480 --> 02:21:44.040
cosas en core data que de hecho me pasó una vez que cuando haces una inserción en batch tienes

02:21:44.040 --> 02:21:48.600
que avisar al contexto eso no funciona si me refiero si tienes un contexto el main context y

02:21:48.600 --> 02:21:53.760
luego te creas otro en background para hacer otra operación si lo haces normal bien pero si en ese

02:21:53.760 --> 02:22:01.720
background las haces las cosas en en batch vale pues digamos para que hace las cosas directamente

02:22:01.720 --> 02:22:07.440
en lugar de hacerlo sobre memoria y luego sobre sobre el sobre el disco lo hace directamente

02:22:07.440 --> 02:22:13.320
sobre el disco tienes que avisar al contexto padre de oye bueno de hecho al avisas al contexto

02:22:13.320 --> 02:22:18.480
aunque sea el tuyo para que ambos contextos se sincronice que eso a mí me llevo un par de días

02:22:18.480 --> 02:22:24.000
de dar vueltas y vueltas y vueltas hasta que encontré en lo más profundo de la de la web de

02:22:24.000 --> 02:22:30.040
esta cover no de hecho no era ni esta cosa encontré cómo hacerlo pero pero me dio un quebradero de

02:22:30.040 --> 02:22:35.320
cabeza que luego son cosas que te encuentras que yo además decía esto la gente lo ha tenido que

02:22:35.320 --> 02:22:40.360
hacer no creo que sea el primero que le pasa pero yo creo que la gente lo ha tenido que hacer algún

02:22:40.360 --> 02:22:44.800
día y cuando ha dado con ello estaba tan frustrado que no se pone a compartirlo pero yo creo que

02:22:44.800 --> 02:22:52.320
son cosas que apple debería de hacer y a lo mejor además de lo que dice esto de hacerlo más sencillo

02:22:53.520 --> 02:22:59.280
por muchos ejemplos porque a veces ponen una aplicación de ejemplo con el ejemplo más simple

02:22:59.280 --> 02:23:05.800
del mundo sin ninguna complicación y que te vale de muy poco eso cuando te pones a exprimirlo al

02:23:05.800 --> 02:23:11.760
final es la comunidad la que tiene que hacer ejemplos y ejemplos y ejemplos no sé a mí he hecho

02:23:11.760 --> 02:23:21.000
de menos más más documentación siempre de apple pero más ejemplos de mira así se hace esto vale

02:23:21.000 --> 02:23:28.160
te pongo 4 o 5 casos de uso y te digo cómo se hacen esos 4 o 5 casos de uso pero ya te digo

02:23:28.160 --> 02:23:36.080
de suite data es que de suite data la documentación brilla por su esencia una página de overview que

02:23:36.080 --> 02:23:42.680
te pone cuatro cosas pero hay mucho mucho por detrás y sobre todo en un framework nuevo que

02:23:42.680 --> 02:23:47.560
la gente pues tiene que conocerlo y tiene que ir poco a poco pero a ver también es lo de siempre

02:23:47.560 --> 02:23:53.960
dentro de dos años es cuando su data ya ya estará bien empaquetado y ya tendrá todo lo que necesitemos

02:23:53.960 --> 02:24:00.160
y de forma sencilla pero vamos a lo de siempre lo presentan ahora y es dentro de dos años cuando ya

02:24:00.160 --> 02:24:09.120
es accesible para todo el público y no sé porque los foros de apple la gente preguntaba y en slack

02:24:09.120 --> 02:24:16.680
también y varias veces le decían los ingenieros de apple no para esto usa acordata en plan no

02:24:16.680 --> 02:24:23.960
tienes razón esto no se puede hacer en su data o es muy complicado de hacer en su data o adlon

02:24:23.960 --> 02:24:31.800
acordata yo es que no pero fíjate a mí me preocupa mucho más el tema y mientras estoy

02:24:31.800 --> 02:24:38.600
hablando contigo lo estoy comprobando el tema del a ver yo creo que se les ha ido de las manos

02:24:38.600 --> 02:24:46.520
el tema de los de las macros yo creo que vieron lo de las macros y dijeron esto es la leche vamos

02:24:46.520 --> 02:24:55.360
aquí a hacer vamos a reinventar su y por completo y las propias restricciones de las macros les han

02:24:55.360 --> 02:25:01.560
atado de pies y manos en un montón de cosas yo estoy probando ahora mismo la beta 5 y la beta 5

02:25:01.560 --> 02:25:08.280
sigue teniendo el problema de los observables que es imposible hacerlos conformar con equitable

02:25:08.280 --> 02:25:18.960
no se puede vale es algo que yo no soy capaz de entender vale pero claro si tú quieres que

02:25:18.960 --> 02:25:24.960
un observable pueda ser usado en un navigation stack lo que necesitas es que esté conformado

02:25:24.960 --> 02:25:32.200
con con hashable y para estar conformado con hashable tiene que ser equitable pues no hay

02:25:32.200 --> 02:25:41.680
manera no hay manera o sea no funciona o sea tú pones el arroba observable pones la clase final

02:25:41.680 --> 02:25:48.080
le dices que se conforme con estos protocolos y te dice no no está conformado con los protocolos

02:25:48.080 --> 02:25:58.880
porque no tiene los steps le pones tú la función igual igual y le pones tú la función has into

02:25:58.880 --> 02:26:04.480
hasher y automáticamente te da un error de compilación y te dice no el tipo score no

02:26:04.480 --> 02:26:12.360
se conforma con equitable ya está porque porque patata ya está no no hay explicación es porque

02:26:12.360 --> 02:26:18.600
si las macros son muy potentes pero sí que son un poco y lo que dices tú creo que tienen muchas

02:26:18.600 --> 02:26:24.880
restricciones bueno de hecho otra de las restricciones que yo veo que se cargan por

02:26:24.880 --> 02:26:30.840
completo lo observable y que tiene todo el mundo reportado y que no sé cómo lo van a arreglar es

02:26:30.840 --> 02:26:39.760
el hecho de que tienes que darle un valor inicial a todas las propiedades cosa que en los vídeos de

02:26:39.760 --> 02:26:49.360
apple no lo dicen y en los ejemplos de apple no no ponen valores iniciales tú te ves el vídeo

02:26:49.360 --> 02:26:54.280
desde la introducción a swift o te ven los vídeos de observable y ahí no te dice en ningún momento

02:26:54.280 --> 02:27:01.320
que tengas que inicializar los valores alguien ya se ha quejado ahí no me acuerdo si fue vincent

02:27:01.320 --> 02:27:09.040
se llama el chico este que se quejaba a no odori walls no sé algún algún chico de estos que que

02:27:09.040 --> 02:27:14.560
publica contenido y que tiene un blog que decía que joder que este año que otros años pasaba pero

02:27:14.560 --> 02:27:21.360
que este año sí que es brutal la de cambios que ha habido y que hay muchos vídeos de la w desde

02:27:21.360 --> 02:27:28.120
este año que podían irse a la mierda porque luego el funcionamiento ha evolucionado un montón o

02:27:28.120 --> 02:27:32.800
realmente no funciona han tenido que hacer muchos cambios de hecho él pedía yo creo que le contesté

02:27:32.800 --> 02:27:38.200
y dije bueno por lo digo si lo suplen con documentación me vale ok veo el vídeo me

02:27:38.200 --> 02:27:42.720
hago una idea y luego voy a la documentación donde está todo actualizado porque entiendo

02:27:42.720 --> 02:27:51.720
que cambiar el vídeo pues es un poco un poco más de rollo pero a ver si que es verdad que que pone

02:27:51.720 --> 02:27:59.120
todo este material al alcance de los desarrolladores cuando hay muchas cosas muy verdes y cambios muy

02:27:59.120 --> 02:28:08.240
grandes no sé además y hay otra cosa julio que me estoy saliendo un poco el tema pero

02:28:08.240 --> 02:28:16.040
hay porque apple presenta un nuevo sistema ligado a nuevas apis para los desarrolladores no pero

02:28:16.040 --> 02:28:21.440
también presenta cosas el nuevo sistema que no tiene nada que ver con los desarrolladores pero

02:28:21.440 --> 02:28:26.420
los programadores o los empleados de apple que están trabajando en ambas características son

02:28:26.420 --> 02:28:33.480
los mismos y se presentan a la vez no tiene sentido o sea yo entiendo que es una wdc pongas

02:28:33.480 --> 02:28:41.600
betas y demás para que los desarrolladores se pongan manos a la obra pero hay cosas metemelas

02:28:41.600 --> 02:28:50.160
en una punto 1 o punto 2 porque creo que esto precisamente está bien el periodo de betas y

02:28:50.160 --> 02:28:54.360
presentarlo y demás y el evento para que los desarrolladores podamos porque al final de la

02:28:54.360 --> 02:28:57.680
conferencia de desarrolladores se presenta un nuevo sistema para los usuarios pero la

02:28:57.680 --> 02:29:02.880
conferencia de desarrolladores pero es que mezclan todo mezclan cosas que no tienen api o que son

02:29:02.880 --> 02:29:08.960
cosas del sistema que a los desarrolladores ni nos van ni nos viene y claro en septiembre el

02:29:08.960 --> 02:29:17.360
20 de septiembre que salga ios 17 tiene que estar tanto la parte de desarrolladores como la parte

02:29:17.360 --> 02:29:25.200
digamos de usuario bien entonces claro te encuentras con que hay un montón de trabajo

02:29:25.200 --> 02:29:34.080
luego claro sacar seguramente a mediados de agosto se cargarán alguna saldrá una beta que se cargará

02:29:34.080 --> 02:29:40.760
dos o tres cosas y que dirán que para la siguiente versión calculo que su idata no será una de ellas

02:29:40.760 --> 02:29:45.520
porque imagino que alguna aplicación de apple ya la usará y tenga que estar para ese día

02:29:45.520 --> 02:29:57.520
yo es que no sé mira por ejemplo mientras estabas hablando he comprobado que en la última beta justo

02:29:57.520 --> 02:30:05.840
esto que estamos comentando de la inicialización de los de las propiedades en una roba observable

02:30:05.840 --> 02:30:14.800
ya lo han corregido que tampoco por lo tanto si tú ahora haces una roba observable creas la clase

02:30:14.800 --> 02:30:21.280
final dejas las propiedades sin inicializar y por lo tanto le tienes que poner un init

02:30:21.280 --> 02:30:30.720
vale para darle valor a cada una de las propiedades compila sin problema eso sí haciendo que sea sólo

02:30:30.720 --> 02:30:39.800
identifiable porque en el momento en el que lo pones hashable o equatable ya se va todo se va

02:30:39.800 --> 02:30:48.080
toda la mierda por lo que un arroba observable no lo puedes usar en un navigation link data

02:30:48.080 --> 02:30:55.160
sean un navigation link value dentro de un navigation stack que es como se supone que

02:30:55.160 --> 02:31:05.280
tienes que hacer eso entonces qué pasa que tengo que crearme los datos como arroba observable

02:31:05.280 --> 02:31:11.920
pero luego no lo puedo usar para que no tiene sentido pero bueno ahí está el bug y estamos en

02:31:11.920 --> 02:31:22.240
la beta 5 oye que chapó que ahora ya no hay que ponerle valores de inicio a los temas a los

02:31:22.240 --> 02:31:28.320
observables a ver lo de siempre julio si el día que salga todo esto funciona nos damos con un

02:31:28.320 --> 02:31:32.600
canto en los dientes pero entonces como tú has dicho nos genera dudas claro pero como tú has

02:31:32.600 --> 02:31:41.680
dicho entonces para qué me sirven tantas betas porque como tú bien has dicho al principio dada

02:31:41.680 --> 02:31:51.080
está este movimiento no me des las betas de dame la rc tres semanas antes de lanzar para hacer las

02:31:51.080 --> 02:31:57.080
pruebas que tenga que hacer pero si tú pretendes que con estas betas yo vaya adaptando mi código

02:31:57.080 --> 02:32:03.280
vas de culo porque el problema es que voy a lo que fue lo que pongo hoy no funciona mañana y no

02:32:03.280 --> 02:32:08.840
funciona pasado y el otro lo han cambiado y el otro no sé qué entonces no voy a estar cambiando cada

02:32:08.840 --> 02:32:14.760
vez que sacas una beta nueva es que no tiene ningún sentido entonces cuál es el sentido de esas betas

02:32:14.760 --> 02:32:21.000
es que yo a ver y julio por ejemplo suite suite data es un candidato a lo que pasó con su yui

02:32:21.000 --> 02:32:27.560
en ios 13 que el año que viene van a cambiar ocho cosas ahora lo van a dejar medio apañado para que

02:32:27.560 --> 02:32:36.520
medio funcione y el año que viene van a cambiar 80 cosas es que yo eso es que ya me pasó y yo lo

02:32:36.520 --> 02:32:41.880
sufrí en mis carnes y eso que yo empecé con ios 14 en su yui con una aplicación en producción

02:32:42.920 --> 02:32:48.960
y ya te digo para mí fue un dolor de cabeza que no volvería a repetir y ahora mismo si me hago

02:32:48.960 --> 02:32:55.040
mis pinitos y mis cosas y si hago una aplicación mía a chorras pues luego en su data y para pos

02:32:55.040 --> 02:33:01.880
y pero por curiosidad más que nada pero yo si me encargan un proyecto no sé me aunque me dejen

02:33:01.880 --> 02:33:11.040
poner el target en ios 17 no se me ocurre decir su data y lo siento porque siempre creo que siempre

02:33:11.040 --> 02:33:16.560
he querido coger eso pero con la experiencia que tuve con su yui me echo o la edad no sé qué

02:33:16.560 --> 02:33:24.720
habrá sido la paternidad me echo más cobarde y un proyecto cobarde y un proyecto grande y vamos

02:33:24.720 --> 02:33:32.120
aún y que tenga que usar mucho mucha base de datos y me cordata es bienvenido en ese caso

02:33:33.720 --> 02:33:39.240
pues sí y es una cosa pues que realmente a mí me da mucha pena porque considero que

02:33:39.240 --> 02:33:47.560
es una funcionalidad excelente igual que lo de la observable pero no me sirve de

02:33:47.560 --> 02:33:52.000
nada que me lo den verde entonces aquí volvemos a lo de siempre las fechas

02:33:54.920 --> 02:34:01.400
apple no tenía que haber lanzado todo esto yo hubiera preferido que me hicieran un tip kit

02:34:01.400 --> 02:34:09.960
y lanzarlo en la beta 5 o en la 6 cuando funcione no no mira poniendo el caso de

02:34:09.960 --> 02:34:16.400
ticket ticket o sea los recursos que han destinado a la librería de tip kit o mel en la punto 1

02:34:19.920 --> 02:34:24.600
no es una librería core de una aplicación te quiero decir si la tienes mucho mejor pero no

02:34:24.600 --> 02:34:29.960
no es algo que no es como su data por los tres tíos que tienes trabajando en eso haberles dejado

02:34:29.960 --> 02:34:38.800
en su data sabes y no haberme no sé porque ahora mira el ejemplo tip kit hay cosas que todavía no

02:34:38.800 --> 02:34:43.000
funcionan bien pues va a haber gente trabajando por lo menos hasta la siguiente beta en eso

02:34:43.000 --> 02:34:48.240
porque todavía no funciona bien y si esa gente no va a estar en su data que tiene algunas cosillas

02:34:50.960 --> 02:34:57.160
no sé es que el empeño ese de no sé de para ese día y eso que esta vez que han retrasado yo creo

02:34:57.160 --> 02:35:02.880
que la app está de journal y no se han retrasado algo y algo también de airdrop había alguna de

02:35:02.880 --> 02:35:08.680
las cosas de airdrop que también habían habían retrasado pero no sé qué qué manía hay

02:35:13.360 --> 02:35:14.200
pues eso

02:35:16.040 --> 02:35:24.520
ya es que no no sé pero bueno que vamos a hacer nada es perfecto y desde luego hasta que no salga

02:35:24.520 --> 02:35:32.960
todo en septiembre u octubre no podemos decir nada al respecto a ver julio yo tengo una mala

02:35:32.960 --> 02:35:40.320
noticia creo que ellos aunque saque una castaña pilonga va a salir antes porque a lo mejor sale

02:35:40.320 --> 02:35:46.920
un ipad pro nuevo en septiembre o si sacan el apple watch un nuevo apple watch probablemente

02:35:46.920 --> 02:35:54.360
tengan que sacar guachos 10 creo que era y también tendrán que sacar la versión equivalente pero es

02:35:54.360 --> 02:36:01.160
que no funciona nada es que no van a poder sacar apple watch porque el apple watch necesita que

02:36:01.160 --> 02:36:06.840
observable funcione y qué pasa si observable no funciona es que lo estoy viendo ahora el

02:36:06.840 --> 02:36:12.640
problema de hashable por lo que estoy viendo es que al poner arroba observable en una clase

02:36:12.640 --> 02:36:19.160
todas sus propiedades se convierten en arroba observation tract que es otra macro más que lo

02:36:19.160 --> 02:36:24.880
convierte en una especie de propiedad calculada bueno pues parece ser por lo que estoy viendo

02:36:24.880 --> 02:36:34.320
que arroba observation tract no es hashable pero como la no conformación al protocolo proviene

02:36:34.320 --> 02:36:42.680
de la macro pues a ti te casca el error y tú ahí que te jodas entonces claro cómo sacas 8 es 10

02:36:42.680 --> 02:36:49.120
cómo sacas todo lo demás si todo depende de que esta arquitectura funcione pues si apple no llega

02:36:49.120 --> 02:36:54.560
a septiembre no van a poder sacar nada se van a tener que esperar a octubre porque han puesto

02:36:54.560 --> 02:37:03.920
demasiados recursos en visión o ese a ver y probablemente esté esto esté pasando por eso

02:37:03.920 --> 02:37:11.000
por decir que estaba todos los recursos en visión o ese que hemos flipado todos colores y yo sigo

02:37:11.000 --> 02:37:19.560
flipando cada vez que vengo más cosas pero bueno sabes lo que he visto de vision creo que lo puso

02:37:19.560 --> 02:37:29.000
también este es otro en smith que si pones la hay decoration se llama de las vistas estas que van

02:37:29.000 --> 02:37:35.560
fuera de la ventana que son como tap bar pero que va fuera de la ventana sí sí sí de corey

02:37:35.560 --> 02:37:44.080
si o algo así pues esas no respetan el scroll no tienen los si miras los seis el 6 área llega hasta

02:37:44.080 --> 02:37:52.440
abajo un día de hecho no es que no sé si fue lo fue un hilo que vi con cinco o seis errores de

02:37:52.440 --> 02:37:59.920
visión no es que a ver que está muy bien pero tenía errores muy de pero por eso a ver yo lo

02:37:59.920 --> 02:38:06.680
que haría si fuera apple o lo que hubiera hecho no sé si lo han hecho o no es una vez has lanzado

02:38:06.680 --> 02:38:13.000
visión o ese quita a todo el mundo de visión o ese ponlo a terminar a ellos ipad etcétera etcétera

02:38:13.000 --> 02:38:20.640
y cuando ya hayas terminado eso entonces sigue con visión o ese porque visión o ese no tiene

02:38:20.640 --> 02:38:28.280
tanta prisa entre comillas ya yo lo que espero es que no lo hayan hecho ya o sea que no pase

02:38:28.280 --> 02:38:34.960
como en su día con con iphone o ese vale que era vale por debajo era mac pero luego cambiaba

02:38:34.960 --> 02:38:40.720
bastante y ahora se han vuelto a juntar yo creo que ya que esto ya está visto visión o ese un poco

02:38:40.720 --> 02:38:47.880
que es coges ipad o ese y lo y lo transformas un poco pero tiene tiene mucho compartido pero

02:38:47.880 --> 02:38:52.560
es que a mí la interfaz me ha flipado y ojalá empiecen a meter todas esas transparencias porque

02:38:52.560 --> 02:38:59.480
hay cosas de ahora mismo hay cosas de ellos como los alets o sea los alert view o los actions y

02:38:59.480 --> 02:39:06.200
textos que tienen opciones tipo hay dos tipos de sí los que suben enteros y los que son como

02:39:06.200 --> 02:39:16.240
un menú de opciones pues me parecen interfaces de iphone o ese 2 así que espero espero copiar

02:39:16.240 --> 02:39:24.640
varias cosas de la interfaz pues a ver veremos a ver bueno pues yo creo que podemos ir yendo

02:39:24.640 --> 02:39:33.840
al bloque final y eso pues al final ha quedado ahí una cosa interesante y que pues es esto espero que

02:39:35.080 --> 02:39:43.160
pues esto se vaya solucionando poco a poco y que al final pues todo esto no sea más que una etapa

02:39:43.160 --> 02:39:50.200
dura de que nos ponga la cara colorada porque estamos diciendo que nos digan si tanto te

02:39:50.200 --> 02:39:55.600
quejabas pues mira aquí lo tiene los tontos estos de café pues eso mira a la que haya la boca

02:39:55.600 --> 02:40:17.240
pues eso sería el tema ok así que nada pues vamos al bloque final entonces y dónde puede

02:40:17.240 --> 02:40:23.160
encontrarte la gente fuera del podcast arturo pues a mí en el otro podcast en el que estoy

02:40:23.160 --> 02:40:28.960
que se llama videos digitales que cada día vamos nos reímos más haciéndolo pero hablamos menos

02:40:28.960 --> 02:40:37.240
de tecnología y más de la vida en general luego en twitter como bueno en x como arroba

02:40:37.240 --> 02:40:43.680
arturo rivas a en más todo como arroba arturo rivas a arroba más todo un punto cloud que además

02:40:43.680 --> 02:40:48.560
debo ser de los pocos que ha cogido el punto cloud no sé por qué o si no tenéis toda la

02:40:48.560 --> 02:40:54.960
información sobre mí en tres subes dobles punto arturo rivas punto com y yo pues ya sabéis que

02:40:54.960 --> 02:41:04.280
podéis encontrarme como jcf munoz en todas las redes incluso en threads aunque no se puede usar

02:41:04.280 --> 02:41:12.040
porque y lo bajito que no se entere la unión europea no no es que no se puede usar desde la

02:41:12.040 --> 02:41:22.720
unión europea la propia facebook ha bloqueado de manera de manera geolocalizada para que desde la

02:41:22.720 --> 02:41:33.160
web no puedas ni postear ni ver las respuestas ni nada sólo puedes ver el muro ya está de cuento

02:41:33.160 --> 02:41:41.480
lo que hice yo yo me lo bajé de test fly y cuando me lo he desinstalado hace poco pero cuando dijeron

02:41:41.480 --> 02:41:45.000
que habían hecho eso a mí me seguía funcionando la versión de test flight calculo que sea una

02:41:45.000 --> 02:41:50.680
versión distinta a la que mandaron para sí claro porque hicieron actualizaciones sí sí claro yo

02:41:50.680 --> 02:41:56.040
tenía la de test flight sin actualizar y en esa podía seguir viéndolo yo llegué a publicar y

02:41:56.040 --> 02:42:01.720
llegué a contestar y tal pero ahora ya no puedo lo único que puedo hacer es ver el muro que me pone

02:42:01.720 --> 02:42:06.000
cosas que no me interesan una puñeta vale o sea el algoritmo de threads en este caso es horrible

02:42:06.000 --> 02:42:13.520
pero bueno el caso es que estoy ahí pues en x como arroba jcf munoz si x es twitter vale por

02:42:13.520 --> 02:42:20.760
si alguno algún despistado todavía vale en x como arroba jcf munoz también en linkedin como jcf

02:42:20.760 --> 02:42:27.320
munoz barraín barra jcf munoz que sabemos que el linkedin funciona distinto también pues en

02:42:27.320 --> 02:42:34.840
mastodon como jcf munoz arroba mastodon punto social en fin pues ahí estamos en en todos

02:42:34.840 --> 02:42:41.320
lados en instagram también como jcf munoz en facebook todo vale estamos en todos lados menos

02:42:41.320 --> 02:42:49.360
en onlyfans por ahora ahí estamos así que pues eso sería un poco el tema y desde luego pues ya

02:42:49.360 --> 02:42:57.240
sabéis que aquí tenéis podéis seguirnos en café swift arroba café swift con dos fs en x porque

02:42:57.240 --> 02:43:02.680
ahí pues tendréis las noticias de todo lo que vamos publicando las noticias de pues cositas

02:43:02.680 --> 02:43:08.280
de swift que compartimos en redes de noticias etcétera que pueden ser muy interesantes y

02:43:08.280 --> 02:43:17.280
nada y poco más y nos oímos pronto si jobs quiere y hasta ese momento recordad como decimos

02:43:17.280 --> 02:43:35.080
siempre jugar con el código hasta pronto

02:43:47.280 --> 02:44:02.560
puedes escuchar más episodios en cuando punto com la comunidad de podcast independientes en español