11 de octubre de 2017

Swift 4: Control de acceso


Como en todos los lenguajes de desarrollo que permiten el desarrollo orientado a objetos Swift tiene un sistema de control de acceso a las clases, métodos y propiedades que permite esconder o hacer público las clases o sus miembros. Se utiliza en torno al concepto de módulos y los ficheros con código fuente.

El control de acceso en Swift 4 se aplica a los siguientes tipos:
  • classes
  • structures
  • enumerations

Los niveles de acceso que podemos determinar son los siguientes:
  • Open: Permite el acceso en el fichero que se importe la clase, aunque sea en una subclase de otro módulo.
  • Public: Permite el acceso en el fichero que se importe la clase, pero no admite subclases fuera de otro módulo.
  • Internal: Permite sólo el acceso dentro de su mismo módulo.
  • File-private: Permite sólo el acceso dentro del mismo fichero de código fuente.
  • Private: Sólo permite el acceso dentro de la misma declaración. 

Open es el acceso más abierto y privado el acceso más cerrado.

El nivel de acceso por defecto es Internal.

Os pongo los ejemplos oficiales de Apple:

  • public class SomePublicClass {}
  • internal class SomeInternalClass {}
  • fileprivate class SomeFilePrivateClass {}
  • private class SomePrivateClass {}
  • public var somePublicVariable = 0
  • internal let someInternalConstant = 0
  • fileprivate func someFilePrivateFunction() {}
  • private func somePrivateFunction() {}


Espero que os sea de utilidad.

12 de agosto de 2017

PSP: Las películas en UMD

El Universal Media Disc es un tipo de disco óptico desarrollado por Sony para almacenar juegos y películas para su consola portátil PSP.

Puede contener un máximo de 1'8 gb de información (o 900 Mb si no es de doble capa). Tiene una protección de plástico externa para impedir que el soporte reciba daños al manipularlo por parte del usuario.

Las películas se codifican con H.264, códec muy avanzado para la época que permite comprimir de una manera muy eficiente películas de calidad DVD, aunque debido al poco espacio del UMD se solían suprimir la mayoría de los extras.

Cuando Sony lanzó la PSP pensaba reproducir en el sector portátil el éxito sin paliativos de sus consolas PS1 y PS2, pero fracasó, la PSP se convirtió en una consola minoritaria que solo teníamos los fanáticos de videojuegos de la época.

Debido a ese paseo triunfal que los directivos de Sony auguraban para la PSP algún lumbreras decidió que además de hacerse con el monopolio de los juegos portátiles la PSP iba a inaugurar una nueva era en el vídeo portátil, por supuesto con el sobrevalorado catálogo de Columbia Pictures (perteneciente a Sony) y cobrando un canon a todo el resto de empresas del sector que quisieran publicar sus películas en este formato.

La pantalla de PSP (la primera versión) tenía muy poco brillo, solo era utilizable en lugares oscuros por lo que no servía para jugar en exterior o en lugares con alguna iluminación, por lo que utilizarla para ver una película fuera de casa era una locura,  el sonido era estéreo (olvídate de 5.1 y esas cosas) a través de auriculares con poco volumen y por último estaba el consumo de batería, el uso de un motor físico para rotar el UMD drenaba la electricidad a una velocidad digna de la Game Gear. En conclusión, que no era una opción portátil para ver cine -ni para jugar, realmente-.

Los UMDs de películas eran además muy caros, en una época en que la piratería de internet ya estaba descontrolada pagar un dineral por un UMD que solo podías ver en la PSP en tu habitación conectado a la corriente no era una buena inversión. Decenas de UMDs de películas de Columbia se amontonaban en las estanterías de las tiendas de videojuegos sin que nadie les hiciese ni caso. Ya me imagino los maravillosos Powerpoints que mostraban en las presentaciones con esas gráficas de beneficios siempre hacia arriba :).

En conclusión, el fracaso fue absoluto, de hecho este tipo de películas no le interesan ni a los coleccionistas, ayer mismo me compré una por 50 céntimos para ilustrar este post.

Cuando Sony se pone soberbia pasan estas cosas, no es tan fácil hacer creer al consumidor que necesita algo en su vida que no le aporta nada. Como siempre, sobrevalorando el valor de su catálogo de propiedad intelectual :|

Os adjunto unas fotos de mi compra de ayer para ilustrar el post, no voy ni a usarlo, no tiene sentido:







17 de mayo de 2017

MS DOS: Los últimos vídeos de juegos que he subido a YouTube

Hace tiempo que no publico nada en el blog así que aprovechando que últimamente estoy jugando bastante a juegos antiguos de MS DOS aprovecho y os pongo aquí los vídeos de los juegos a los que estado jugando, seguro que alguno de ellos os trae buenos recuerdos.


15 de abril de 2017

ZX Spectrum: He terminado Flappy, The Ghost

Bueno, pues he terminado por fin de desarrollar el juego Flappy, The Ghost, para ZX Spectrum, y no me puedo sentir más que satisfecho, no por la calidad del juego en sí, si no por haber sido capaz por fin de terminar mi primer juego para Spectrum, después de tantos años he podido sacarme la espinita de dentro.

Flappy, The Ghost, es un juego de plataformas en el que manejamos a un simpático fantasma, Flappy, y tenemos que ayudarle a pasar todas las fases del juego, para ello hay que ir recogiendo una serie de llaves -una por escenario- para abrir la puerta de final de fase y pasar al siguiente nivel.

Tienes 3 vidas y teniendo en cuenta la dificultad de algunos enemigos y de un par de plataformas tendréis que practicar para llegar al final.

El juego puede ser jugado tanto en emulador como en un spectrum original. Lo he desarrollado utilizando la herramienta Arcade Game Designer.

Espero que os guste, este es el enlace de descarga del juego: https://www.dropbox.com/s/zg09dlvo3amutui/flappy.tzx?dl=0

Aquí van unos cuantas cuantas capturas de Flappy, The Ghost:






12 de abril de 2017

iOS: Datos accesibles desde la agenda de contactos


iOS nos da la posibilidad de poder acceder a los datos de la agenda de contactos, para ello el usuario en primer lugar de aceptar la solicitud de permisos de acceso.

Una vez el usuario ha concedido su permiso la app puede acceder a los siguientes datos:

  • CNContactEmailAddressesKey: Email 
  • CNContactPhoneNumbersKey: Número de teléfono 
  • CNContactFamilyNameKey: Apellido 
  • CNContactGivenNameKey: Nombre 
  • CNContactPostalAddressesKey: Dirección Postal 
  • CNContactUrlAddressesKey: Url 
  • CNContactNicknameKey: Apodo 
  • CNContactOrganizationNameKey: Empresa 
  • CNContactNoteKey: Nota sobre el contacto 
  • CNContactThumbnailImageDataKey: Thumbnail de la imagen de contacto 
  • CNContactImageDataAvailableKey: Imagen de contacto
  • CNContactNamePrefixKey: Prefijo del nombre 
  • CNContactMiddleNameKey: Middle Name 
  • CNContactPreviousFamilyNameKey: Apellido familiar previo 
  • CNContactNameSuffixKey: Sufijo del nombre 
  • CNContactDepartmentNameKey: Departamento de la empresa 
  • CNContactJobTitleKey: Puesto de trabajo 
  • CNContactPhoneticGivenNameKey: Nombre en fonético 
  • CNContactPhoneticMiddleNameKey: Nombre medio en fonético 
  • CNContactPhoneticFamilyNameKey: Apellido en fonético 
  • CNContactPhoneticOrganizationNameKey: Nombre de la empresa en fonético 
  • CNContactBirthdayKey: Cumpleaños 
  • CNContactNonGregorianBirthdayKey: Cumpleaños en fecha no gregoriana 
  • CNContactImageDataKey: Imagen en formato datos 
  • CNContactTypeKey: Tipo de contacto 
  • CNContactDatesKey: Fechas de contacto 
  • CNContactRelationsKey: Relaciones del contacto 
  • CNContactSocialProfilesKey: Social profiles 
  • CNContactInstantMessageAddressesKey: Mensajería instantánea del contacto
Espero que os sea de utilidad.

7 de abril de 2017

Android: Novedades en las notificaciones en Android O

Android O es la nueva versión en desarrollo de Android. En materia de notificaciones trae a día de hoy dos importantes novedades en materia de notificaciones push:

  • Notifications Snooze: Nos permite guardar las notificaciones para verlas después. En ocasiones recibimos notificaciones que querríamos leer más adelante, hasta ahora el comportamiento habitual consistía en borrarlas, con esta versión de Android podemos posponer su lectura 15, 30 o 60 minutos, volveremos a recibirlas en ese intervalo si queremos.
  • Notification Channels: Algunas apps como Twitter tienen ya creada esa posibilidad, pero como solución propia, no de Android. Con notification channels podemos crear canales para las notificaciones de tal manera que el usuario pueda activar y desactivar los tipos de notificación que quiere recibir de esa app. Por ejemplo, si estoy suscrito a las notificaciones del diario deportivo Marca igual solo quiero recibir notificaciones de noticias de motor y no de fútbol, con esta nueva funcionalidad podemos configurarlo de manera nativa.
En conclusión, novedades útiles para las notificaciones en Android, veremos a ver si iOS avanza en ese sentido también.

26 de marzo de 2017

ZX Spectrum: Tengo nueva versión de Flappy, The Ghost

Bueno, pues he seguido trabajando en Flappy, The Ghost, le he agregado un menú y una nueva fase. También he retocado los gráficos.

Os pongo aquí los nuevos pantallazos:







El enlace para descargarlo es el mismo de la versión anterior: https://www.dropbox.com/s/zg09dlvo3amutui/flappy.tzx?dl=0