divendres, 26 de setembre del 2014

Basic Git workflow





Open the Terminal, and create a directory named test wherever you  want, here we create the test directory on /tmp:


$cd /temp

/tmp $ mkdir test

/tmp $ cd test
/tmp/test$

Now we will create two files:

/tmp/test $ touch one.txt two.txt
/tmp/test $ ls
  one .txt two.txt

Right now we just have  a directory with two files.
Now we want to put our directory under version control. In order to do that we will write:

/tmp/test $ git init

Initialized empty Git repository in /private/tmp/test/.git/

What happened? Well, Git has just created a database of commits and a staging area, both void. Before the command git init we had just a directory, now we have three things: a directory, a staging area, and a database of commits.

Now let's put the two files on the staging area:

/tmp/test $ git add .

The staging area is just a virtual area when snapshots of changes are placed (using git add) before they are commited.
Now we can commit (take a snapshot or photo of the staging area):

/tmp/test $ git commit -m "First commit"

Ok, so now we have a first commit on our version control. We can see a list of commits with git log:

/tmp/test $ git log --oneline
4d6cf82 First commit

We have our commits saved on the local database.  But, what if we want to save on a public repository like GitHub?
That's easy. Go to github.com and create  a public repository: 




Once created, we go back to terminal and type:

/tmp/test $ git remote add origin https://giria@github.com/giria/test.git

That is, "add a remote repository called origin with that url"
Once added the remote repository, we can just push our local files to the servers of GitHub;

/tmp/test $ git push origin master
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 210 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://giria@github.com/giria/test.git
 * [new branch]      master -> master

And now our files, with all story of commits are stored on GitHub.

divendres, 19 de setembre del 2014

How to install XCode 6 GM (or any other XCode version) without deleting prior version

This is an English translation of  Diego Freniche original article




Theory

An OSX App is not more than a folder (a bundle) containing executable files and resources. We can see it on Finder right clicking an app file and selecting "Show package contents". It is even more evident from the Terminal:



$ cd /Applications/ 
$ ls -d Xcode*

drwxr-xr-x@ 3 dfreniche admin 102B 10 sep 09:47 Xcode.app/ 
drwxr-xr-x  3 root wheel 102B 16 abr 10:30 Xcode5.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 2 jul 02:52 Xcode6-Beta3.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 1 ago 23:17 Xcode6-Beta5.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 16 ago 00:35 Xcode6-Beta6.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 28 ago 09:01 Xcode6-Beta7.app/

we can see all versions of XCode installed. They are just UNIX directories.

On practice

During the beta stage, the XCode dmg file we download contains a directory named for example XCode6-beta6. This name is different than XCode so there is no conflict.

When the GoldMaster and ultimate version arrive, Apple releases a DMG  with an app named XCode. It is XCode 6 but it has same name that the previous XCode 5 that you have already installed in your machine. If you copy it will replace XCode 5.


Xcode5 before copying Xcode6 GM

But there is an easy solution: before copying the file to the Applications folder, rename Xcode (probably you  will need to introduce your administrator password) and set up your preferred name (it is up to you, I have one named Ye olde XCode 4.3).


Installing  Xcode 6 after renaming Xcode 5


Easy. Is it not?

dimarts, 2 de setembre del 2014

Setting up two-step verification on Apple ID





In order to protect your iCloud media it is advisable to set up two-step verification on Apple ID. You are just some steps away of protecting your data:
 
  1. Go to My Apple ID.
  2. Select Manage your Apple ID and sign in.
  3. Select Password and Security.
  4. Under Two-Step Verification, select Get Started and follow the onscreen instructions

dilluns, 21 de juliol del 2014

Hacking iTunes ( II) : Descargar la app Paper aunque no vivamos en USA







Damos las gracias  John Michael Bond de TUAW por este truco !

  1. En primer lugar vamos a la AppStore
  2. Vamos a Apple ID (Store-ViewAccount)
  3. Entramos normalmente con nuestro password.
  4. Una vez hemos entrado, vamos a settings, encontramos country, y finalmente "change country or region" y cambiamos el país a "United States".
  5. Pulsamos "none" cuando nos pide por información de pago.
  6. Buscamos Paper, lo descargamos, y finalmente cambiamos el país otra vez al original.
OK ! Ya tenemos Paper, al menos hasta que Facebook implemente un bloqueo de región.

dilluns, 30 de juny del 2014

Parse en 10 minutos



Parse en 10 minutos




Hoy vamos a ver como utilizar Parse. Con Parse podemos crear facilmente un backend para nuestra app. ¿Que significa esto? Lo vemos con un ejemplo, imaginad que estamos construyendo una app de fotografias, tipo Instagram donde los usuarios suben sus fotografias al servidor. Necesitaremos almacenar las fotos en un servidor al que puedan acceder todos los usuarios de nuestra app. Pero construir un servidor no es precisamente tarea facil, por lo que servicios como Parse, que nos permiten obtener esta funcionalidad,  son extremadamente populares entre los desarroladores de apps. Es normal refererirse a este tipo de servicios como mobile BaaS, es decir mobile Back end as a Service.  Tan popular es Parse, que Facebook compró Parse el pasado mes abril.


Podemos ver los planes de precios de Parse en la siguiente pantalla.


Screenshot 2014-06-28 17.28.03.png


Los planes de precios para los usuarios incluyen un plan gratuito para aplicaciones que no sobrepasen las 30 peticiones por segundo ni mas de 20Gb de datos almacenados. A medida que pedimos mas prestaciones el precio va subiendo, asi para 200 peticiones/segundo el precio mensual es de 1700 dolares. Esta es una de las quejas recurrentes de los usuarios: el precio del servicio aumenta mucho al aumentar nuestra demanda de prestaciones. En todo caso si nuestra aplicación tiene éxito, pagar la factura de Parse será el último de nuestros problemas ☺


Construyendo nuestro backend


Los pasos que necesitamos para guardar las imagenes de nuestro dispositivo al servidor Parse son los siguientes:


1. Creación de cuenta de usuario  en ww.parse.com.
2. Importación de librerias
3. Escribir código cliente para subir la imagen al servidor de Parse


Vamos pues a ver como implementamos cada uno de los pasos anteriores.


En primer lugar, nos damos de alta en la cuenta gratuita y sin necesidad de proporcionar datos bancarios, la plataforma nos proporciona una serie de claves.


parse-truncated-app-keys.jpg


Utilizaremos estas claves mas tarde en nuestra app.


Ahora necesitamos bajarnos el framework de Parse para incorporarlo a nuestro proyecto. Para ello marcamos:




en nuestro navegador y nos bajamos un fichero que contiene las librerias de la última versión de Parse. Una vez bajada, la descomprimimos y arrastramos el directorio Parse.framework al menu navegación de nuestro  proyecto Xcode, con lo que añadimos el framework a nuestro proyecto.
Ademas del framework de Parse que ya hemos incorporado necesitamos las siguientes librerias de sistema:


  • AudioToolbox.framework
  • CFNetwork.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • libz.1.1.3.dylib
  • MobileCoreServices.framework
  • QuartzCore.framework
  • Security.framework StoreKit.framework
  • SystemConfiguration.framework
Para incorporarlas al proyecto, señalamos el proyecto ParseTutorial y en la pestaña General añadimos al proyecto, una a una, las librerias mencionadas anteriormente.
Lo vemos en la siguiente imagen:


Screenshot 2014-06-29 13.15.22.png




Ahora necesitamos  indicar a nuestra aplicación la clave que nos ha proporcionado Parse al darnos de alta. Para ello en el fichero AppDelegate.m, escribiremos:







         

donde los valores ApplicationId y clienteKey son las claves que aparecen en el apartado Keys del menu Settings de parse.com.  A continuación escribiremos el siguiente código, donde inicializaremos la libreria de Parse:



Si todo va bien, el proyecto compilará con 0 errores.
Para probar Parse utilizaremos InterfaceBuilder para crear una pantalla en la que el usuario elegirá una photo de su Camera Roll y la subirá a Parse:




Screenshot 2014-06-29 17.29.57.png


En la subclase de UIViewController que asignaremos a la pantalla anterior añadiremos la línea:




En la acción correspondiente al boton upload escribiremos:







Notar que el método saveInBackgroundWithBlock: es un método asincrono que se ejecutará en background. Esto es importante, ya que todas las tareas de naturaleza asíncrona (como las llamadas a red) NO DEBEN realizarse en el hilo principal. De lo contrario tendriamos un interface gráfico que se bloquearia hasta que la peticion a Parse finalizara. !Y un interface gráfico bloqueado es lo último que queremos en nuestra aplicacion!


Ejecutamos la aplicación, elegiremos una foto de nuestra libreria y pulsaremos el boton Upload. Con esta acción nuestro foto se almacena en los servidores de Parse. Si ahora vamos a www.parse.com, en la pestaña DataBrowser comprobamos que se ha creado una entrada con el objeto que hemos subido desde nuestro dispositivo:




Screenshot 2014-06-29 15.18.33.png




Notar que el objeto PhotoObject se ha guardado en el servidor sin necesidad de darlo previamente de alta, como ocurria en versiones anteriores de Parse.


Así de facil es utilizar los servicios de Parse para subir nuestros objetos al servidor. Podeis acceder al proyecto en  GitHub . En proximos tutoriales y partiendo de lo visto en este tutorial veremos caracteristicas avanzadas de Parse como notificaciones.








Joan Barrull

Trabajo en www.ironhack.com como profesor asistente. Mi primer contacto con la programación fué con Smalltalk, un lenguaje dinámico y orientado a objetos que influyó en todos los lenguajes de programación posteriores. Objective-C, y su entorno de desarrollo XCode me recuerdan la sensación que tuve al descubrir Smalltalk, la sensación de poder programar cualquier cosa.

diumenge, 29 de juny del 2014

Hacking iTunes (I): Crear un Apple ID sin proporcionar datos bancarios







Imagina que te acabas de comprar un iPadAir. Si lo sé, soñar es gratis !


Para instalar apps, tanto gratis como de pago, Apple te pide un Apple ID. De momento no quieres utilizar tu Apple ID, ya que está asociado a una cuenta bancaria. ¿Como puedes crear una segunda cuenta Apple ID que no esté asociada a una cuenta bancaria? El procedimiento es el siguiente:

1) Entramos en iTunes
2) En el lateral izquierdo de la pantalla de iTunes clickamos en iTunes Store.
3) En la parte izquierda de la pantalla pulsamos sobre TopFreeApps





4) Seleccionamos una aplicación gratuita y la compramos




5) Aparece una ventana para introducir el AppleID





6) Pulsamos el boton Create Apple ID
7) Damos conformidad a los terminos del contrato
8) En la pantalla de alta rellenamos los datos personales




9) En la pantalla de medios de pago elegimos None e introducimos una dirección postal






Y ya tenemos nuestro AppleID no asociado a una cuenta bancaria. Si más adelante queremos asociarlo a una cuenta, por ejemplo porque queremos comprar una aplicación de pago, lo podemos hacer entrando en nuestro perfil de usuario.