Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas

jueves, 26 de noviembre de 2015

Dar formato a un DateTime en PHP

Dar formato a una fecha no puede ser mas sencillo siempre que usemos un Objeto DateTime.
Podremos tener este objeto recogiendolo directamente de una BBDD en la que el campo en cuestion sea un DateTime, o bien creandolo en PHP del siguiente modo:

$date = new DateTime('2000-01-01');

Una vez tengamos nuestro DateTime creado tan solo deberemos darlo formato del siguiente modo:

domingo, 25 de enero de 2015

PHP - Comprobar si se ha subido cualquier fichero

Hoy os traigo un truco tan sencillo como útil.
En ocasiones al validar un formulario del lado de servidor podemos tener varios input file, y pueden subir ficheros en cualquiera de ellos, si nos es necesario validar que se suban ficheros, pero nos da igual en que input nos lo suban podemos validar todos y cada uno de los input que tengamos, o bien comprobar si nos pasan algún fichero en general para ello:

miércoles, 7 de enero de 2015

PHP - Obtener el número de la semana

Buenas a todos, y Feliz año!!!
Hace tiempo que no escribía, la verdad es que entre fiestas, comilonas, y demás compromisos no he sacado mucho tiempo que se diga, pero aquí estoy de nuevo dispuesto a dar guerra.

Vamos al lío, en esta publicación quería contaros como hacer algo muy simple en PHP, aunque no suele hacerse muy a menudo y por eso precisamente viene bien recordarlo.
Obtener el numero de semana del año actual, para ello simplemente deberemos usar la función date() de PHP, pasándole como parámetro el formato de lo que necesitemos, el ejemplo mas utilizado es date("d/m/Y"); para obtener la fecha separada por "/" en formato día / mes /año

En nuestro caso para obtener solo el numero de semana necesitamos date('W')

miércoles, 14 de mayo de 2014

Acceder a recursos de un Fragment desde un Activity mediante findById - Android

Hoy os dejo algo que me ha llevado un buen rato.
Todos los que aprendimos o hicimos nuestros pinitos hace ya algun tiempo con Android aprendimos que para "linkar" un elemento de una activity a nuestro archivo java, para poder trabajar con el, ya sea un botón, un Text View o cualquier otra cosa accediamos con un codigo similar a este.
salida = (TextView)findViewById(R.id.textView1);
Esto mismo normalmente lo colocabamos en el onCreate de nuestro Activity, pero desde hace ya algun tiempo lo que se viene usando son los Fragment, un fragment viene siendo una parte de lo que se va a ver en el Activity, puede ser el 100% o una pequeña parte, asi un Activity, puede estar formado por 1 o mas Fragment, en resumidas cuentas eso es lo que es.

Pues bien el problema esta en que si desde nuestro Activity, intentamos llamar a un textView que esta en nuestro Fragment como en el ejemplo superior, nos dara un error de tiempo de ejecucion, y si lo bicheamos un poco, veremos que aunque R.id.textView1 tiene un valor hexadecimal, a nuestra variable Salida sigue con null, esto es debido a que desde nuestra Activity no podemos acceder a los elementos del Fragment, para ello deberemos ir a la clase PlaceHolderFragment que nos ha creado Eclipse, y llamarlo desde alli como en el codigo que os dejo a continuación

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        public PlaceholderFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            entrada = (EditText)rootView.findViewById(R.id.numEntrada);
            salida = (TextView)rootView.findViewById(R.id.numSalida);
            return rootView;
        }
    }
Espero os sirva de ayuda

Tambien os dejo el ejemplo completo y funcionando
https://github.com/rogama/Android---vista-boton-fragment

asi era como se hacia sin los Fragment
https://github.com/rogama/Android/tree/master/MasVistas

martes, 4 de febrero de 2014

IOS - Declaración e implementación de métodos

En nuestro ejemplo crearemos un nuevo proyecto con una SingleView para agilizar.

Una vez Creado, nos iremos a nuestro ViewController.h y copiaremos lo siguiente:
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2;

Con esta simple linea hemos declarado nuestro método; paso a explicarlo:
-(void)
Con esto decimos que es un método de objeto y que no devuelve nada, que solo ejecuta una serie de sentencias que mas adelante programaremos.
Si quisiéramos declarar un objeto de clase lo haríamos sustituyendo el - por un +

En resumen:
  • -método de objeto
  • +método de clase
(void) No devuelve nada, solo ejecuta, si le ponemos algún tipo devariable será lo que nos devuelva NSString, NSNumber …

Lo siguiente que nos encontramos es: nombreDelMetodoCon

Lo cual no es ni más ni menos que el nombre del método
Ahora nos encontramos con Parametro1:
Debe ser un texto descriptivo del parámetro que solicitamos

Y lo siguiente es: (NSString *)parametro1
Lo que nos encontramos entre () solo es el tipo de dato que vamos a pedir parametro1 es el nombre de la variable que vamos a utilizar dentro de nuestro método.

Casi acabando nos encontramos con andParametro2:(NSString *)parametro2;
En donde andParametro2: Debe ser un texto descriptivo del segundo parámetro(NSString *)parametro2; al igual que con parametro1 pedimos el tipo de dato y damos el nombre de la variable que vamos a utilizar dentro del método.

Ahora vamos a nuestro ViewController.m
Y allí copiaremos lo siguiente:
//Implementacion del metodo
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2{
    NSLog(@"%@", parametro1);
    NSLog(@"%@", parametro2);
}

que vemos es lo mismo que hemos declarado en el .h tan solo que entre llaves hemos sacado 2 NSLog, uno para cada parámetro

Dentro del - (void)viewDidLoad Copiaremos lo siguiente
[self nombreDelMetodoConParametro1:@"Texto de Ejemplo1" andParametro2:@"Texto de ejemplo para el segundo ejemplo"];


En donde hemos escrito entre paréntesis por ser un método su implementación y todo ello precedido por self que es el símil a this en otros lenguajes, y se utiliza para referirnos a todo lo que tenemos en nuestra propia clase, seguido de la descripción de los parámetros se los pasamos

Os dejo el código para descargar desde mi GiHub:https://github.com/rogama/IOS---Declaraci-n-e-implementaci-n-de-metodo.git

miércoles, 8 de enero de 2014

Constantes - IOS

para usar las constantes en IOS, crearemos una nueva clase en nuestro proyecto, llamada Constantes, lo cual con creara 2 nuevos archivos, constantes h, y constantes.m, ambos archivos los ordenaremos en un nuevo group llamado constantes (esto ultimo es opcional, solo se usa para mantener mas ordenado el código)

Las declaraciones de nuestras variables, en este caso constantes, se efectuaran en el *.h, en nuestro ejemplo en Constantes. h

es una buena practica usar: FOUNDATION_EXPORT para que nuestras constantes puedan usarse en otros lenguajes

FOUNDATION_EXPORT NSString * const kTexto;

después en el ,m les daremos el valor

NSString * const kTexto = @"Esto es un texto";

Deberemos importarlo en la clase que necesitemos usarlo con #import "Constantes.h" si el import lo hacemos en el .m de una clase estada disponible solo en el .m, si lo hacemos en el .h estada disponible en el .m y .h de la clase en concreto.

#import "Constantes.h"

Si necesitamos importarlo en todo el proyecto tenemos un archivo dentro de Supporting Files, llamado: nombre_de_nuestro_proyecto-Prefix.pch
en donde podremos hacer el import.
Para importar un framework escribiremos su nombre entre < > pero para hacerlo de una clase " "

Dejo el proyecto de ejemplo en:
github: Ejemplo de Constantes en IOS


martes, 7 de enero de 2014

Convertir a int - IOS

al igual que en otros lenguajes tenemos la funcion parseInt() para convertir un texto ,u otro tipo de dato a entero, en IOS, debemos usar:

intValue

un ejemplo de uso seria:

int entero = 0;
NSNumber *enteroClase = [[NSNumber alloc] initWithInt:21];
entero = [enteroClase intValue];

lunes, 6 de enero de 2014

Implicit conversion of 'int' to 'id' is disallowed with ARC - IOS

Este error suele darnos en un código de este tipo:

int entero = 21;
NSMutableDictionary *diccionario = [[NSMutableDictionary alloc] init];
[diccionario setObject:entero forKey:@"numero"];
Es debido a que no podemos meter un int (ni ningún dato de tipo escalar) en un Dictionary, para hacerlo deberemos usar un NSNumber, asi que cambiado:

int entero = 21;
por NSNumber *entero = [[NSNumber alloc] initWithInt:21];

Lo tenemos arreglado.

PD: lo mismo nos ocurrira en un array

miércoles, 1 de enero de 2014

Cambiar el tamaño de imagenes en VB.NET

Con estas sencillas lineas podemos cambiar el tamaño de una imagen y guardarla donde queramos

Dim imagen As New Bitmap(New Bitmap(rutaOriginal), 320, 288)
imagen.Save(rutaDestino, System.Drawing.Imaging.ImageFormat.Jpeg)

Donde sustituyendo rutaOriginal por la ruta del archivo de origen y rutaDestino por la ruta donde se guardara la nueva imagen, lograremos cambiar el tamaño en este ejemplo a 320x288 px recuerda, la primera unidad es el ancho y la segunda el alto.

Espero os sirva de ayuda ;)

martes, 31 de diciembre de 2013

Mostrar el número de linea en XCode

Para mostrar el número de linea en XCode es tan sencillo, como ir a XCOde, seleccionar Preferences.

Y en la ventana que se nos abre ir a Text Editing y allí marcar la casilla de Line numbers


lunes, 23 de diciembre de 2013

Los bucles While y do- while - IOS

Los bucles While y do- while son muy similares también a los del resto de lenguajes. Su sintaxis es:

    while (<#condition#>) {
        <#statements#>
    }
    
    do {
        <#statements#>

    } while (<#condition#>);

Un par de ejemplos son:
    BOOL condicion = YES;
    
    while (!condicion) {
        NSLog(@"Condicion falsa");
        condicion = YES;
    }
    
    do {
        condicion = NO;
        NSLog(@"Condicion verdadera");
    } while (condition);

Podeis descargarlos desde:

bucle for in - IOS

El bucle for in en IOS es muy similar al de otros lenguajes. Su sintaxis es:

    for (<#type *object#> in <#collection#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo

    NSArray *array =[[NSArray alloc] initWithObjects: @"texto1", @"texto2",@"texto3",@"texto4", nil];
    
    for (NSString *cadena in array) {
        NSLog(@"%@", cadena);
    }


Podeis descargarlo desde:
IOS-bucle-for-in

Bucle for - IOS

El bucle for en IOS es muy similar al del resto de lenguajes. Su sintaxis es:

    for (<#initialization#>; <#condition#>; <#increment#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo:

    for (int i = 0; i<5; i++) {
        NSLog(@"Entra: %i", i);
    }

Aqui os dejo un ejemplo:

conditional switch - IOS

El conditional switch también es muy similar al de otros lenguajes, su sintaxis es:

    switch (<#expression#>) {
        case <#constant#>:
            <#statements#>
            break;
            
        default:
            break;

    }

Aqui teneis un ejemplo:

    int caso = 3;
    
    switch (caso) {
        case 1:
            NSLog(@"Estoy en el caso 1");
            break;
        case 2:
            NSLog(@"Estoy en el caso 2");
            break;
        case 3:
            NSLog(@"Estoy en el caso 3");
            break;
        default:
            NSLog(@"Caso sin identificar");
            break;
    }

Os dejo un ejemplo en:

Condicional If - IOS

El conditional if es muy similar al de cualquier otro lenguaje. Su sintaxis es la siguiente:

if(condicion){
    codigo a ejecutar
}

podemos verlo en los siguientes ejemplos:
    BOOL correcto = NO;
    
    if (correcto) {
        NSLog(@"correcto");
    }else{
        NSLog(@"No es correcto");
    }
    
    int numero = 2;
    if (numero < 2) {
        NSLog(@"Numero menor que 2");
    }else if (numero>2){
        NSLog(@"Numero mayor que 2");
    }else{
        NSLog(@"Numero es igual a 2");
    }



Un ejemplo en:
IOS-condicional-if

Tipos de variables en IOS

Tipos escalares

  • int Valor entero comprendido entre +/- 2.147.483.647.
  • float Valor en coma flotante comprendido entre +/- 16.777.216.
  • double Valor en coma flotante comprendido entre +/- 2.147.483.647
  • long Valor entrero con un tamaño que varia entre 32 bits y 64 bits, dependiendo de la arquitectura
  • long long Valor entero de 64 bits.
  • char Un unico caracter. Tecnicamente se representa como un int
  • BOOL Valor booleano, que puede tener los valores SI o NO.
  • NSInteger Cuando se compila en una arquitectura de 32 bits es lo mismo que un int, y cuando se hace en 64 bits puede tener un valor comprendido entre 0 y 2^64.
  • NSUInteger Cuando se compila en una arquitectura de 32 bits es lo mismo que un unsigned int y cuando se hace en 64 bits puede tener un valor comprendido entre 0 y 2^64.
La forma de declarar e inicializar una variable es:
Tipo Nombre = valor;

ej: int numeroEntero = 2;

Podemos ver un ejemplo en:
Tipos de variables

Otros tipos de datos son:


  • NSString Cadena de caracteres
Ej: NSString *cadena = @"cadena de caracteres";
    Se declara con el * delante ya que es un objeto, y estamos apuntando a su posicion de memoria.
    Se inicializa con el @ delante ya que es una forma abreviada de hacerlo.
EJ: cadena = [NSString stringWithFormat: @"Entero: %i", entero];
Es una forma de asignar valor al string concatenando variables

  • NSArray
  • NSMutableArray Coleccion ordenada de objetos accesibles mediante un indice
en un NSArray NO podemos añadir nuevos elementos.

Ej: NSArray *array = [[NSArray alloc] initWithObjects:@"Texto 1", @"texto2", nil];
    Hay que poner un nil (nulo) al final para avisar de que el array termina ahi,
    El alloc se usa para reservar el espacio en memoria

Si solo quisieramos declararlo sin datos:
NSArray *array = [[NSArray alloc] init];

Ej: NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:@"texto 1"];

Es la forma de añadir nuevos objetos al MutableArray, al array NO se puede

  • NSDictionary
  • NSMutableDictionary Nos permite crear estructuras de datos sin necesidad de crear subclases
Con el Dictionary pasa lo mismo que con el array, si no es mutable no se puede modificar a posteriory

Ej: NSDictionary *diccionario = [[NSDictionary alloc] initWithObjectsAndKeys:cadena, @"int",nil];
NSLog(@"%@" ,[diccionario objectForKey:@"int"]);
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init];

[mutableDictionary setObject:cadena forKey:@"String"];
[mutableDictionary setObject:cadena forKey:@"String2"];
[mutableDictionary setObject:cadena forKey:@"String3"];

NSLog(@"%@",mutableDictionary); 
    Imprime el dictionary entero

Podemos ver un ejemplo en:
Otros Tipos de variables

martes, 15 de octubre de 2013

Curso programación desde 0 - Tema 8 - Programación Orientada a Objetos (POO)

Este tema tan solo sera teórico la programación orientada a objetos o sus siglas POO es un concepto el cual es importante de entender para casi cualquier lenguaje moderno. La programación orientada a objetos consiste en que, en nuestro entorno, todo es un objeto y como cual tiene unas propiedades, y unas cualidades, el típico que suele ponerse es el de un coche.

Un coche seria nuestro objeto, el cual tiene algunas propiedades como su numero de ruedas, color, peso, numero de plazas, lo cual puede variar de un coche a otro; pero también puede acelerar, ir hacia delante, hacia atrás, o girar.

A las propiedades de nuestro vehículo vamos a llamarlas precisamente propiedades o atributos, serán definidas en nuestra clase, y podremos ver o editar sus valores, dependiendo del objeto, y de la propiedad, en el ejemplo del coche, siempre va a tener 4 ruedas, con menos seria un triciclo o una moto, y con mas... seria algo extraño, por lo que si tenemos que definir la clase de nuestro coche siempre tendrá 4 ruedas, ese valor no tendría sentido que lo pudiéramos editar, seria solo visible, pero a la hora de declarar un nuevo objeto del tipo coche, si tendríamos que asignar un valor al numero de plazas, y al color, ya que cada modelo es distinto, lo normal seria asignar un valor por defecto, por ejemplo 5 plazas, que es lo más estándar pero podría tener 4, 7, 9 o quizás otro valor, esta propiedad seria fija, ya que nuestro coche no puede tener 4 plazas hoy y 9 mañana, pero se la pasaríamos nosotros al crearla, en cuanto al color, si tendría lógica que fuera editable, ya que podríamos pintarlo y cambiarle el color en cualquier momento.

Nuestro coche también tiene métodos como es el de acelerar, frenar, girar... esto no seria ni mas ni menos que las funciones que declaremos publicas de nuestro coche, es decir al apretar el pedal haz girar mas rápido el motor para ganar velocidad...

Otro concepto importante de la POO es la herencia, nuestro coche es un vehículo por lo que coche heredara todas las propiedades y métodos de la clase padre en este caso vehículo pero teniendo algunos que le caracterizan y son únicos de el, por ejemplo, cualquier vehículo puede acelerar, frenar y girar; pero no todos tienen 4 ruedas, creo que las motos tampoco tienen marcha atrás, por lo que seria un método especial para coches.

Casi todos los lenguajes también tienen otra propiedad, que es el polimorfismo esto quiere decir que la función acelerar, por poner un ejemplo puede ser declarada varias veces, pidiendo distintos parámetros

p.e: nombreFuncion(variable1);

      nombreFuncion(variable1,variable2,variable3);

      nombreFuncion(variable1, variable2);

Esto seria valido y a la hora de programar nos da mucha flexibilidad, ya que con el mismo nombre podemos llamar a varias funciones distintas, ejecutando siempre la que nos interese según el numero de parámetros PHP es el único lenguaje Orientado a Objetos que conozco que no admite polimorfismo.

Resto de temas:
Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays
Tema 3 - Pensando con variables
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?

viernes, 23 de agosto de 2013

Añadir elementos a un array php

En ocasiones nos sera necesario guardar elementos en un array, pero no siempre vamos a saber cuantos; y no podremos declarar el tamaño del array; para ello tenemos la funcion push en php
$nuestroArray= array();array_push($nuestroArray, valor1);array_push($nuestroArray, valor2);
Espero os resulte de utilidad