Cómo instalar addon 1Channel Primewire en Kodi (XBMC) desde SuperRepo

1Channel Primewire es un addon que he utilizado muchas veces el cual nos permite ver muchas de nuestras películas y series preferidas, la calidad del video es buena y para quienes gozamos de ver películas y series, es una muy buena opción para este fin.

Pre requisitos:

Los pasos para instalar este addon en nuestro Kodi ya instalado junto con SuperRepo son los siguientes:

Estando en la pantalla inicial de Kodi, vamos a ir a:

Videos -> Add-ons

jx_post_655_01

Presionamos en:

Get More…

jx_post_655_02

Presionamos sobre:

1Channel

jx_post_655_03

Se presentará la pantalla con la opción para instalar, por lo que presionamos sobre el botón:

Install

jx_post_655_04

Esto iniciará el proceso de instalación de 1Channel Primewire, así como se instalarán y habilitarán varios addons, como el de YouTube y otros más.

jx_post_655_05

jx_post_655_06

jx_post_655_07

jx_post_655_08

jx_post_655_09

Ahora podemos presionar el botón de Atrás o podemos ir al home de Kodi y dirigirnos a:

Video -> Add-ons -> 1Channel

jx_post_655_10

jx_post_655_01

Y presionamos sobre la opción:

1Channel

jx_post_655_13

Se mostrará la siguiente pantalla donde esperaremos los segundos que indican para que se cierre:

jx_post_655_11

y una vez cerrada la pantalla anterior, se presentará la siguiente, donde presionaremos sobre el tache para cerrar.

jx_post_655_12

Y listo, ya se podrán buscar películas y series de tv para poder verlas.

jx_post_655_14

 

 

 

 

Unir varias imágenes en un archivo PDF en Mac OS X

Para aquellos que como yo, les surge la necesidad de unir varios archivos con imágenes jpg, jpeg, png, etc., en un documento pdf en Mac OS X, aquí pongo una solución.

Lo primero es ir a la carpeta donde tenemos la imágenes en el finder.

 

jx_post_553_01

 

 

Seleccionamos todas las imágenes que vamos a agregar al PDF, esto puede ser seleccionar en el menú:

Edit -> Select All

o presionando la combinación de teclas:

Cmd + A

 

jx_post_553_02

 

Esto marcará todas las imágenes.

 

jx_post_553_03

 

 

Ahora con los archivo seleccionados, presionamos en el menú:

File -> Open With -> Preview (default)

 

jx_post_553_04

 

y nos abrirá la aplicación de Preview para visualizar imágenes o PDF’s.

jx_post_553_05

 

Ahora nos vamos al menú y presionamos en:

File -> Print…

 

jx_post_553_06

 

Se abrirá la pantalla para imprimir.

 

jx_post_553_07

 

 

 

Presionamos en la lista donde aparece PDF como opción seleccionada.

 

jx_post_553_08

 

Y se mostrará la siguiente lista en la cual seleccionaremos la opción Save as PDF…:

 

jx_post_553_09

 

Aparecerá otra pantalla para guardar el archivo PDF. En esta pantalla colocamos el nombre del archivo como deseamos que se llame, además de la ubicación del archivo donde lo queremos guardar y será creado el archivo con todas las imágenes agregadas.

 

jx_post_553_10

 

 

 

 

 

 

 

Tomar capturas de pantalla (screenshots) en iOS Simulator

Cuando queremos publicar una app para iOS, el iTunes Connect nos solicita una serie de screenshots para poder publicarla. Yo regularmente tomaba las capturas de pantalla desde los dispositivos, pero conforme fueron apareciendo más de éstos, me fue imposible contar con ellos, por lo que me vi con la necesidad de saber cómo tomar los screenshots de otra forma, a lo cual me llevo a tomarlos desde el iOS Simulator.

Tomar una captura de pantalla desde el simulador es muy sencilla, sólo bastará correr nuestra app en el iOS Simulator, y con éste corriendo bastará con presionar:

Cmd + S

o ir a:

File -> Save Screen Shot

jx_post_509_01

cualquiera de las 2 opciones creará una imagen en el Escritorio (Desktop).

Borrar los proyectos recientemente abiertos en Xcode

Realizando un post que próximamente publicaré, me ví con la necesidad de limpiar la lista de proyectos recientes en Xcode. Por tal motivo, para llevar esto a cabo, realizaremos lo siguiente:

Abriremos Xcode.

jx_post_426_01

Ahora iremos a:

File -> Open Recent -> Clear Menu

Cerramos Xcode y una vez que lo volvamos a abrir, veremos que se ha limpiado la lista de proyectos recientes.

jx_post_426_02

SuperRepo repositorio de addons y plugins para Kodi (XBMC)

SuperRepo es un repositorio, el cual cuenta con más de 2000 addons para poder instalar y configurar en Kodi.

 

Para instalar este repositorio, primero tendremos que agregar la fuente de dicho repositorio de la siguiente manera:

Dentro de Kodi nos vamos a:

System -> File Manager

 

jx_post_606_01

 

Ahora del lado izquierdo de la pantalla presionamos dos veces en la opción:

Add source

 

jx_post_606_02

 

En la siguiente pantalla:

 

jx_post_606_03

 

en la caja de texto donde dice:

Enter the paths or browse for the media locations

se deberá ingresar el siguiente URL y presionamos en Done:

http://srp.nu

 

jx_post_606_04

 

En la caja de texto donde dice:

Enter a name for this media Source

ingresaremos un nombre para el repositorio, en este caso yo le puse SuperRepo y presionamos en Done.

SuperRepo

 

jx_post_606_05

 

Hecho lo anterior, se verá la pantalla de la siguiente manera:

 

jx_post_606_06

 

Presionamos en Done y como podemos observar, del lado derecho se agregó la fuente para poder obtener el repositorio.

 

jx_post_606_07

 

Agregada la fuente del repositorio, vamos a instalar el repositorio, para esto, nos vamos a ir a:

Home -> System -> Add-ons -> Install from zip file

 

jx_post_606_08

 

jx_post_606_09

 

jx_post_606_10

 

Estando aquí, se dividirá la pantalla y del lado derecho nos aparecer la fuente del repositorio que agregamos, el cual se llama, SuperRepo.

 

jx_post_606_11

 

Dentro de esta fuente, encontraremos varias carpetas, en función a la versión de XBMC o Kodi que tengamos, en este caso yo tengo la versión de Helix, por tal motivo ingresaré a esa carpeta.

SuperRepo -> helix -> all

 

jx_post_606_12

 

jx_post_606_13

 

Dentro de este directorio, vamos a encontrar el archivo zip:

superrepo.kodi.helix.all-0.7.03.zip

 

jx_post_606_14

 

Presionamos sobre éste, y se instalará el repo.

 

jx_post_606_15

 

Ahora si nos vamos a:

Get-Add-ons

 

jx_post_606_16

 

Veremos el repositorio de SuperRepo habilitado:

 

jx_post_606_17

 

Si se entra al repositorio recientemente habilitado y no aparece nada, bastará con regresar y sobre el nombre de:

SuperRepo All [Helix]v7

presiona con botón derecho y elegir la opción:

Force refresh

 

jx_post_606_18

 

Con esto ya se cuenta con los addons de SuperRepo para poder ser instalados.

 

En post siguientes mostraré cómo instalar algunos addons como 1Channel, IceFilms y Películas a la Carta para ver series y películas.

 

Crear un UIScrollView con contenido en un UIView usando XIB y Objective-C en iOS

Existen muchas formas de crear un Scroll en iOS, esta es una forma sencilla de hacerlo, sobre todo cuando tenemos un contenido fijo y requerimos que se contenido tenga scroll.

Pre requisitos:

En este ejemplo la pantalla está configurada para un iPhone de 3.5 pulgadas.

jx_post_529_01

Lo que haremos será agregar un UIScrollView dentro del UIView que tenemos.

jx_post_529_02

jx_post_529_03

Ahora se creará un nuevo UIView el cual tendrá el contenido.

jx_post_529_04

Este UIView será de Size Freedom:

jx_post_529_05

y tendrá las medidas de 320 de width y 568 de height.

jx_post_529_06

En el UIView que acabamos de crear, agregaremos algún elemento visual en él en la parte de abajo, en este caso será un UILabel.


jx_post_529_07

jx_post_529_08

Ahora se deberá crear un property del UIScrollView como del UIView y conectarlos para incrustar el UIView dentro del UIScrollView.

Para hacer la conexión puede ser como se mencionó en cualquiera de estos dos post:

Aquí use el del segundo post.

jx_post_529_09

jx_post_529_10

En este ejemplo el UIScrollView se llama scrollViewContenido y el UIView se llama viewContenido.

Abriremos el archivo ViewController.h y en su método:

– (void)viewDidLoad

vamos a agregar el siguiente código para asignar el contenido del UIView dentro del UIScrollView.

[self.scrollViewContenido setContentSize:CGSizeMake(self.viewContenido.frame.size.width, self.viewContenido.frame.size.height)];

[self.scrollViewContenido addSubview:self.viewContenido];

El método quedará de la siguiente manera:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    [self.scrollViewContenido setContentSize:CGSizeMake(self.viewContenido.frame.size.width, self.viewContenido.frame.size.height)];
    [self.scrollViewContenido addSubview:self.viewContenido];
}

Si ejecutamos el ejemplo, podemos mover el scroll hacía abajo y veremos el UILabel que habíamos agregado.

jx_post_529_11

Cómo conectar automáticamente una property IBOutlet de un ViewController a un XIB o Storyboard en Objective-C

Un IBOutlet sirve para conectar un elemento visual a un elemento del controlador, en este caso, conectar un elemento de nuestro XIB o Storyboard a nuestro ViewController.

En esta ocasión, se describirá como hacerlo de forma más sencilla y casi automática, en: Cómo conectar manualmente una property IBOutlet de un ViewController a un XIB o Storyboard en Objective-C se indica cómo hacerlo de forma manual.

Pre requisitos:

  • Tener creado un proyecto.
  • Contar con un Storyboard o un archivo XIB con su respectivo ViewController.

Este ejemplo cuenta con un archivo Storyboard llamado Main.storyboard y un controlador llamado ViewController.

Lo primero que haremos es abrir el archivo de la interfaz gráfica Main.storyboard y crear un UILabel.

jx_post_516_01

jx_post_516_02

Lo siguiente será crear una conexión entre el UILabel que creamos y asignarlo a un property dentro del controlador, para esto, separaremos nuestra pantalla en dos. Aseguremonos que el archivo Main.storyboard esté seleccionado.
jx_post_516_03
y ahora selecionaremos la opción:
Show the Assistant editor
jx_post_516_04
la cuál son 2 círculos enlazados de Xcode para separar en dos la pantalla y así nos mostrará de un lado la interfaz gráfica y del otro el código fuente del controller asociado.
jx_post_516_05
Hay que asegurarse que esté seleccionado nuestro archivo .h para generar la conexión, en este caso el archivo es ViewController.h.
jx_post_516_10
Ahora crearemos la conexión y la property en el ViewController asociado, para ello, presionamos sobre el UILabel que creamos junto con la tecla Ctrl, lo cual hará que se muestre una línea azul y la dirigiremos hacia la sección con el código.
jx_post_516_06
soltaremos y nos mostrará una pantalla similar a esta:
jx_post_516_07
Ahora lo que haremos será introducir el nombre de nuestra property en en campo Name y presionaremos en Connect. En este caso se llamará labelNombre.
jx_post_516_08
Se creará una property en el controller y se generará la conexión a este con el elemento de la interfaz gráfica.
jx_post_516_09

Desactivar mensajes Deprecated en dotProject

Decidí instalar la aplicación dotProject para administrar proyectos, la instalación no tuvo problemas pero una vez instalado traté de ingresar y de entrada me mando algunos mensajes de Deprecated dado que en el PHP en el que lo estoy ejecutando se han depreciado algunas cosas.

Deprecated: Assigning the return value of new by reference is deprecated in /home/javoaxia/jx/dotproject/htdocs/lib/adodb/adodb.inc.php on line 885

Deprecated: Assigning the return value of new by reference is deprecated in /home/javoaxia/jx/dotproject/htdocs/lib/adodb/adodb.inc.php on line 1910

Deprecated: Assigning the return value of new by reference is deprecated in /home/javoaxia/jx/dotproject/htdocs/classes/ui.class.php on line 670

Deprecated: Assigning the return value of new by reference is deprecated in /home/javoaxia/jx/dotproject/htdocs/classes/ui.class.php on line 852

Una solución es cambiar el error_reporting del archivo de configuración php.ini, pero si por alguna razón no cuentan con el acceso a este archivo lo que pueden realizar es lo siguiente:

Busquen el archivo base.php de la instalación de dotProject.

Una vez que lo encontraron, descarguenlo si es necesario, edítenlo y modifiquen la línea:

error_reporting(E_ALL & ~E_NOTICE);

dejándola de la siguiente manera:

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

Guarden los cambios del archivo, transfiéranlo en dado caso que sea necesario y listo, dotProject aparecerá sin los mensajes de Deprecated.

Cargar o importar datos de una tabla en sqlite desde un archivo de texto

Así como en otros manejadores de base de datos, en SQLite a veces nos resulta indispensable importar datos de un archivo de texto (como por ejemplo archivos “.csv”) en los cuales se contiene datos para cargar a una tabla.

Un ejemplo muy común es que tengamos un catálogo de países el cuál podríamos cargar de la siguiente manera.

Supongamos que tenemos un archivo llamados paises.csv el cual cuenta con dos campos, un identificador del país y el nombre del país separados por un “|”:

1|México

2|España

3|Alemania

Lo que haremos será abrir conectarnos al archivo de base de datos:

$ sqlite3 base.sqlite

Ahora dentro de la base indicaremos cuál es el separador de campo:

sqlite> .separator ‘|’

y ahora cargaremos el archivo con los países (Este ejemplo supone que el archivo de la base de datos y el que tiene el catálogo de países se encuentran en el mismo directorio, además que se cuenta con una tabla pais con un campo id y otro campo nombre de tipos integer y varchar respectivamente):

sqlite> .import ‘separador’ archivo.csv (o cualquier extensión) tabla

sqlite> .import ‘|’ pais.csv pais

Si no manda ningún mensaje, quiere decir que se cargo la tabla.

MySQL de XAMPP no arranca en Mac OS X Yosemite 10.10

jx_post_388_01

Hace uno días intenté retomar un proyecto que estaba haciendo en PHP, por lo que comencé iniciando XAMPP para arrancar MySQL y Apache. Cuál fue mi sorpresa, que al intentar levantar MySQL, no arrancó.

Yo no le había movido nada al XAMPP 10.8.3-4, con excepción, que había actualizado mi equipo de sistema operativo de Mac OS X Mountain Lion 10.8 a Yosemite 10.10. Me puse a investigar, y resultó que el cambio de versión del sistema operativo si había afectado.

Para solucionar este problema lo que hice fue lo siguiente.

Edité el archivo xampp que se encuentra en la ruta:

/Applications/XAMPP/xamppfiles/xampp

Yo uso el editor Vi, pero puede ser editado con cualquier editor de texto. Hay que recordar que en ocasiones hay que tener permisos de administrador para poder editar este archivo.

Una vez abierto el archivo, deberemos buscar la siguiente línea:

$XAMPP_ROOT/bin/mysql.server start > /dev/null &

Encontrada la línea, deberemos agregar el siguiente código arriba de la línea anterior:

unset DYLD_LIBRARY_PATH

Para que quede de la siguiente manera:

unset DYLD_LIBRARY_PATH
$XAMPP_ROOT/bin/mysql.server start > /dev/null &

Hecho lo anterior, podemos guardar los cambios del archivo e intentar nuevamente arrancar MySQL, y deberá de iniciar.

Si se tenía abierto XAMPP cuando se modificó el archivo, es posible que sea necesario cerrar y volver abrir XAMPP.

jx_post_388_02

Crear un menú lateral usando SWRevealViewController en Objective-C

SWRevealViewController es una biblioteca que nos permite crear un menús laterales ya sea del lado derecho o izquierdo de nuestra pantalla. He usado esta herramienta en algunas aplicaciones y la verdad es que me ha sido de bastante utilidad y sencilla de usar.

Pre requisitos:

 

Para comenzar descargaremos SWRevealViewController.

Descomprimimos el archivo que descargamos.

Ahora agregaremos SWRevealViewController a nuestro proyecto, para ello, haremos lo siguiente:

Presionamos con botón derecho sobre el nombre del proyecto y seleccionamos la opción:

Add Files to “Nombre del proyecto…

En este caso:

Add Files to “ProyectoXib”…

jx_post_470_01

Nos aparecerá una pantalla donde deberemos buscar la ubicación del archivo que descomprimimos y que deseamos agregar a nuestro proyecto.

En mi caso está en la carpeta Downloads, dentro de esta carpeta se creó una sub carpeta llamada: SWRevealViewController-master y dentro de esta existe otra carpeta llamada SWRevealViewController, en la cual se encuentran los archivos necesarios.

Seleccionaremos dicha carpeta, marcamos las opción Copy ítems if needed y Create groups para posteriormente presionar Add.

jx_post_470_02

Se creara una carpeta amarilla con el nombre de:

SWRevealViewController

Ahora abriremos el archivo AppDelegate.h y abajo de los import que tengamos:

#import <UIKit/UIKit.h>

jx_post_470_03

Agregaremos la siguiente línea:

@class SWRevealViewController;

jx_post_470_04

También se agregará la siguiente propiedad:

@property (strong, nonatomic) SWRevealViewController *viewController;

jx_post_470_05

Ahora crearemos un controller que tendrá la información del menú, en mi caso lo llamaré MenuViewController.

Para esto, seleccionamos el proyecto con carpeta amarilla y presionamos el botón derecho para seleccionar la opción New File…

En este ejemplo sería:

ProyectoXib -> New File…

jx_post_470_06

Aparecerá una pantalla donde seleccionamos la opción Cocoa Touch Class:

iOS -> Source Cocoa Touch Class

Presionamos Next y se mostrará una pantalla donde nos pide los datos del ViewController a crear, en este caso le pondré el nombre MenuViewController y marcar la opción Also create XIB file.

jx_post_470_07

Presionamos Next y por último se nos preguntará donde crear los archivos, aquí sólo hay que presionar en Create.

Ahora que tenemos ya nuestro controller para el menú, abriremos el archivo MenuViewController.xib para agregar el contenido de nuestro menú. Aquí colocaré un botón, pero lo más común para este menú es utilizar un UITableViewController para realmente dar el efecto de menú, pero cada quién es libre de construir el menú como se desee.

En este ejemplo el MenuViewController.xib quedaría de la siguiente manera:

jx_post_470_08

Abriremos el archivo AppDelegate.m e importaremos los siguientes archivos:

#import “SWRevealViewController.h”
#import “MenuViewController.h”

jx_post_470_09

Agregaremos a:

@interface AppDelegate ()

lo siguiente:

<SWRevealViewControllerDelegate>

Para que quede de la siguiente manera:

@interface AppDelegate()<SWRevealViewControllerDelegate>

Ahora dentro del método:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Debido a que este post se está basando en uno anterior, ya tenemos creado un objeto llamado: ViewControllerPrincipal el cual seguiremos usando.

Crearemos un navigationController para nuestra viewControllerPrincipal, esto es de la siguiente manera:

UINavigationController *navPrincipal = [[UINavigationController alloc] initWithRootViewController:viewPrincipal];

Crearemos un objeto del controlador del menú:

MenuViewController *menuView = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];

Ahora crearemos el objeto del controlador SWRevealViewController que se encargará de dar el comportamiento del menú. Esto es de la siguiente manera:

SWRevealViewController *revealView = [[SWRevealViewController alloc] initWithRearViewController:menuView frontViewController:navPrincipal];

Al objeto revealView que creamos, le asignaremos el delegate para que pueda manejar los comportamientos.

 revealView.delegate = self;

Lo siguiente será asignarle a nuestra propiedad viewController definida en nuestro AppDelegate.h, el objeto revealView.

self.viewController = revealView;

Lo último que faltará hacer en este archivo es asignar al rootViewController de nuestro window nuestro atributo viewController, esto se hace de la siguiente manera:

[self.window setRootViewController:self.viewController];

Todo este método se verá de la siguiente manera:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    ViewControllerPrincipal *viewPrincipal = [[ViewControllerPrincipal alloc] initWithNibName:@"ViewControllerPrincipal" bundle:nil];
    MenuViewController *menuView = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
    UINavigationController *navPrincipal = [[UINavigationController alloc] initWithRootViewController:viewPrincipal];
    SWRevealViewController *revealView = [[SWRevealViewController alloc] initWithRearViewController:menuView frontViewController:viewPrincipal];
    revealView.delegate = self;
    self.viewController = revealView;
    [self.window setRootViewController:self.viewController];
    [self.window makeKeyAndVisible];
    
    return YES;
}
 jx_post_470_10

Abriremos el archivo ViewControllerPrincipal.h y haremos el siguiente import:

#import “SWRevealViewController.h”

Dentro del método:

– (void)viewDidLoad

Obtendremos el comportamiento del revealViewController de la siguiente manera:

SWRevealViewController *revealController = [self revealViewController];

Ya que tenemos creado este objeto, asignaremos los gestos para mover el menú de derecha a izquierdo o viceversa.

[revealController panGestureRecognizer];

[revealController tapGestureRecognizer];

Ahora crearemos un botón para el navigationBar que será el que se encargará de al ser presionado, mostrar u ocultar el menú.

 UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menú" style:UIBarButtonItemStylePlain target:revealController action:@selector(revealToggle:)];

por último asignamos el botón al navigationBar del lado izquierdo.

[self.navigationItem setLeftBarButtonItem:revealController];

Esto se verá así:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setTitle:@"Principal"];
    
    SWRevealViewController *revealController = [self revealViewController];
    
    [revealController panGestureRecognizer];
    [revealController tapGestureRecognizer];
    
    UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menú" style:UIBarButtonItemStylePlain target:revealController action:@selector(revealToggle:)];
    
    [self.navigationItem setLeftBarButtonItem:revealButtonItem];
}

jx_post_470_11

El menú se verá así:

jx_post_470_12


jx_post_470_13

Desactivar Auto Layout en iOS

En mi caso, a veces me gusta desactivar la opción de Auto Layout para usar la forma de diseño anterior de pantallas. Para hacer esto es muy sencillo aunque si manejan varios archivos .xib, será necesario hacerlo en cada uno de esos archivos.

Abriremos nuestro archivo xib o storyboard.

 

jx_post_576_01

 

Ahora seleccionamos la opción de:

File inspector

 

jx_post_576_02

 

Entre las secciones de File inspector encontraremos una sección llamada:

Interface Builder Document

ahí encontraremos la opción:

Use Auto Layout

la cual deberemos desmarcar y también se desmarcará la opción de:

Use Size Classes

 

jx_post_576_03

 

Se nos preguntará lo siguiente:

 

jx_post_576_04

 

Presionamos sobre:

Disable Size Classes

Y eso será todo

 

 

 

Cómo conectar manualmente una property IBOutlet de un ViewController a un XIB o Storyboard en Objective-C

Un IBOutlet sirve para conectar un elemento visual a un elemento del controlador, en este caso, conectar un elemento de nuestro XIB o Storyboard a nuestro ViewController.

En esta ocasión, se describirá como hacerlo de forma manual y después crear la conexión, en otro post se indicará cómo hacerlo de una manera más sencilla y casi automática.

Pre requisitos:

  • Tener creado un proyecto.
  • Contar con un Storyboard o un archivo XIB con su respectivo ViewController.

Este ejemplo cuenta con un archivo XIB y un controlador llamados ViewController.

Lo primero que haremos es abrir el archivo ViewController.h y crear la siguiente propiedad:

@property (strong, nonatomic) IBOutlet UILabel *labelNombre;

Ahora iremos al archivo de la interfaz gráfica ViewController.xib y crearemos un UILabel.
jx_post_476_01
Lo siguiente será crear el conexión de la propiedad labelNombre definida en el archivo ViewController.h y el elemento UILabel agregado a la interfaz gráfica.
Para ello, presionaremos sobre File’s Owner que se encuentra en:
Placeholers -> File’s Owner
junto con la tecla Ctrl, lo cual hará que se muestre una línea azul y dirigimos hacia donde está el UILabel.
jx_post_476_02
dejamos de presionar y nos aparecerá un menú:
jx_post_476_03
Nos aparecerán todos los elementos visuales que con los que se puede relacionar, en este caso como podemos observar, se muestra el nombre de la propiedad que definimos en nuestro ViewController. Bastará con presionar sobre el nombre de nuestra propiedad para que quede hecha la conexión.
jx_post_476_04
Con eso quedará realizada la relación entre nuestro elemento visual y un objeto del controlador.

ProjectLibre: JRELoadError

Para algunos proyectos he estado usando ProjectLibre como alternativa a Microsoft Project, la verdad es que dejé de usarlo durante un tiempo y cuando lo quise usar me mando mensaje:

JRELoadError

 

jx_post_382_01

Lo primero que realicé fue actualizar ProjectLibre, pero el resultado fue el mismo.

Entonces me percaté que lo que ocurrió fue que el problema ocurrió después de que actualicé la Mac a Yosemite, por consiguiente éste modificó el Java que tenía instalado.

La versión de Java que tenía era:

java version “1.8.0_05”

Java(TM) SE Runtime Environment (build 1.8.0_05-b13)

La solución por consiguiente fue descargar la última versión del JDK de Java e instalarla, la cual fue:

java version “1.8.0_45”

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Y listo, nuevamente pude utilizar ProjectLibre.

Crear un proyecto en Xcode 6 usando Xib en lugar de Storyboard con Objective-C

Para todos aquellos que como yo, les sigue gustando trabajar con archivos XIB en lugar de Storyboard en la programación de apps en iOS. Aquí presento la forma en que pueden crear un proyecto usando archivos XIB en la vista y Objective-C como lenguaje de programación, debido a que con las nuevas versiones de Xcode, sólo podemos crear proyectos con Storyboard’s por default.

Abriremos Xcode:

jx_post_421_01

 

Creamos un nuevo proyecto:

Create a new Xcode project

Ahora crearemos un Single View Application:

iOS -> Application -> Single View Application

jx_post_421_02

Presionamos en Next y en la siguiente pantalla ingresamos los datos que deseamos para nuestro proyecto, donde deberemos verificar que este seleccionado en el lenguaje de programación Objective-C.

Language: Objective-C

jx_post_421_03

Presionamos Next y la siguiente pantalla es para decidir en donde guardar el proyecto.

jx_post_421_04

Ahora sólo presionamos en Create y quedará creado nuestro proyecto.

Lo siguiente por hacer es borrar los archivos:

ViewController.h

ViewController.m

Main.storyboard

jx_post_421_05

Ahora que hemos borrado los archivos, crearemos un ViewController con su archivo XIB, para esto, seleccionamos el nombre del proyecto con la carpeta amarilla, en este ejemplo:

ProyectoXib -> ProyectoXib

jx_post_421_10

presionamos con botón derecho y en el menú presionamos en:

File -> New -> File…

jx_post_421_06

 

Aparecerá una pantalla donde seleccionamos la opción Cocoa Touch Class:

iOS -> Source Cocoa Touch Class

jx_post_421_07

Presionamos Next y se mostrará una pantalla donde nos pide los datos del ViewController a crear, en este caso le pondré el nombre ViewControllerPrincipal y hay que cerciorarse en marcar la opción Also create XIB file.

jx_post_421_08

Presionamos Next y por último se nos preguntará donde crear los archivos, aquí sólo hay que presionar en Create.

jx_post_421_09

Ya que tenemos estos archivos creados, abriremos el archivo AppDelegate.m e importamos el controlador que acabamos de crear, que en este caso es ViewControllerPrincipal, y lo colocaremos como sigue:

#import “AppDelegate.h”

#import “ViewControllerPrincipal.h”

jx_post_421_10

 

Ahora en el método:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    return YES;
}

Lo modificaremos para crear un objeto del controlador que creamos y lo asignaremos para que esta sea la pantalla que deberá de mostrarse.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

ViewControllerPrincipal *viewPrincipal = [[ViewControllerPrincipal alloc] initWithNibName:@"ViewControllerPrincipal" bundle:nil];
[self.window setRootViewController:viewPrincipal];

[self.window makeKeyAndVisible];

return YES;
}

jx_post_421_11

Por último habrá que quitar dentro de la información general del proyecto que la interfaz principal sea Main. Esto se encuentra en:

Nombre del proyecto -> TARGETS -> Nombre del proyecto -> General -> Main interface

En el ejemplo que tenemos, sería:

ProyectoXib -> TARGETS -> ProyectoXib -> General -> Main interface

En Main Interface deberemos quitar Main para así permitir que la pantalla que creamos, sea la que se vea.

 

jx_post_421_12

Bastará con borrarla y ahora si podemos ejecutar nuestro proyecto y ver la interfaz XIB que creamos.

Configurar la corrección ortográfica en español de LibreOffice en un sistema operativo con un idioma que no sea en español

Desde hace algún tiempo, los sistemas operativos en los que trabajo (GNU/Linux o Mac OS X) suelo tenerlos configurados en inglés y por ende, cuando instalo herramientas y demás software también está configurado en este idioma.

Dada esta situación antes mencionada, cuando utilizo LibreOffice, la corrección ortográfica y diccionario separación de sílabas (spellchecking, hyphenation dictionary) también se encuentra en inglés y para crear mis documentos en español solía tener el problema que no puede hacer la revisión en español. Para solventarlo, realizé lo siguiente para configurar LibreOffice.

Cabe mencionar que lo siguiente lo estoy describiendo para un Mac OS X, pero no cambia tanto para otros sistemas operativos.

Lo primero que realizé es abrir LibreOffice para realizar la siguiente configuración.

Ir a LibreOffice -> Preferences…

jx_post_347_01

 

Posteriormente ir a Language Settings -> Languages

jx_post_347_02

Ahora cambiar las opciones Language Of -> Locale setting: y Default Languages for Documents -> Western:

jx_post_347_03

Con esto en algunos casos me ha funcionado.

Si lo anterior todavía no da resultado, lo siguiente que hice descargué el diccionario para en español, se pueden descargar el español específico a nuestra región, en mi caso es_MX o si lo desean puede bajarse el que cuenta con el diccionario de todas las regiones.

Para español de México: es_MX.oxt

Para español de todas las regiones: es_ANY.oxt

Aquí también se encuentra la liga con todos los diccionarios en español: Spanish dictionaries

En mi caso descargué el archivo en español con todas las regiones.

Ahora abrimos LibreOffice y presionamos en Open.

jx_post_347_04

 

Buscamos el archivo con el diccionario en español.

jx_post_347_05

Nos aparecerá una pantalla donde nos indica que vamos de “Español (España y América Latina): Ortografía, separación y sinónimos”.

jx_post_347_06

Presionamos OK y se instalará la extensión para así poder ya usar el diccionario en español.

Con esto quedará configurado LibreOffice para poder escribir nuestros documentos en español y así revisar la ortografía, gramática, separación de sílabas y sinónimos.

 

 

Cambiar la tipografía predeterminada en LibreOffice

En mi caso cuando creo mis documentos suelo utilizar en una tipografía distinta a la que me dan los procesadores de texto, por tal motivo, lo que realmente haría es cambiar el tipo de letra en el documento, pero para no estar cambiando en cada momento de crear un documento la tipografía, prefiero cambiar la configuración de la herramienta, como en este caso es en LibreOffice.

El ejemplo sobre Mac OS X.

Para esto abrimos LibreOffice y un documento nuevo en Writer Documento para ir a LibreOffice -> Preferences…

jx_post_357_01

Nos vamos a LibreOffice Writer -> Basic Fonts (Western)

jx_post_357_02

Y bastará con elegir la tipografía y tamaño que deseamos en los diversos rubros, así como presionar OK para guardar los cambios y así al usar el procesador de texto de LibreOffice, tener el tipo de letra y tamaño que deseamos.