Buscando artículos sobre " Programación"
2-octubre-2019
admin

Git – Manejo de ramas con rebase

1/ Creamos un repositorio de trabajo local vacío, llamado prueba.

git init prueba

2/ Ahora dentro del directorio prueba que se nos ha creado podemos ir añadiendo nuestros ficheros de código.

3/ Creamos una rama prueba_rama y realiza el checkout dicha rama.

git checkout -b prueba_rama < commit_id >

4/ añadimos commits a esa rama.

5/ Ahora podemos realizar el merge entre las dos ramas. Por ejemplo, situados en la rama prueba_rama le integramos con el rebase la master:

git checkout prueba_rama
//Realiza el rebase 
git rebase master
//si  hay conflictos debemos resolverlos y luego dar a continuar el rebase.
git rebase --continue

6/ Por último vamos a añadir un commit a la master con lo que tenemos en la rama. Para ello, situados en la rama master ejecutamos el merge:

git checkout master
//Realiza el rebase 
git rebase prueba_rama
25-septiembre-2019
admin

Git – Problema acceso denegado.

Suele pasar cuando se tienen varias cuentas distintas.

Si al intentar acceder a una cuenta remota de Git (ya sea en github u otro sitio) nos da error de acceso denegado podemos solucionarlo así:

git config --global --edit

Y añadir estas líneas de configuración al final de fichero.

[credential]
helper = osxkeychain
useHttpPath = true
18-septiembre-2019
admin

Git – Manejo de ramas con merge

1/ Creamos un repositorio de trabajo local vacío, llamado prueba.

git init prueba

2/ Ahora dentro del directorio prueba que se nos ha creado podemos ir añadiendo nuestros ficheros de código. Tenemos un par de comandos interesantes que podemos utilizar:

//Conocer el estado de los ficheros
git status
//Ver el histórico de commits
git log --oneline
//Muestra las diferencias con el commit anterior
git diff  < commit_id1 >   < commit_id2 >

3/ Creamos una rama prueba_rama y realiza el checkout dicha rama.

git checkout -b prueba_rama < commit_id >
//subir la rama al repositorio remoto
git push --set-upstream origin prueba_rama
//Podemos ver la ramas existentes
git branch -v
//Muestra el histórico de todas las ramas.
git log --oneline --all

4/ añadimos commits a esa rama.

5/ Ahora podemos realizar el merge entre las dos ramas. Por ejemplo, situados en la rama prueba_rama le integramos con el merge la master:

git checkout prueba_rama
//Realiza el merge
git merge master
//si  hay conflictos debemos resolverlos y luego dar a continuar el merge.
git merge --continue
//Deshace el merge en curso, útil si hay conflictos.
git merge --abort
//Muestra la historia de integraciones de todas las ramas.
git log --oneline --graph --all

6/ Por último vamos a añadir un commit a la master con lo que tenemos en la rama. Para ello, situados en la rama master ejecutamos el merge:

git checkout master
//Realiza el merge
git merge prueba_rama
4-septiembre-2019
admin

Reflexión en Java

La reflexión en java consiste en recuperar y modificar las propiedades de una clase en tiempo de ejecución. Para ello java provee el paquete java.lang.reflect que nos proporciona las funcionalidades necesarias para ello.

Ejemplo sencillo de uso:

//Este método asigna value como valor al campo de la clase, cuyo nombre es key.
public void setKeyValue(String key, String value) throws IllegalArgumentException, IllegalAccessException{
	for(Field i : this.getClass().getDeclaredFields()){
		if( key.equals(  i.getName() )){
		// encontrado el campo que se llama key
			if( i.getGenericType().getTypeName().equals("java.lang.String")){
				//modificación cuando es de tipo String
				i.set(this, (value!=null && !value.equals("")&& !value.equals("null"))?value:null);

			}else if( i.getGenericType().getTypeName().equals("java.lang.Long")){
				//modificación cuando es de tipo Long
				i.setLong(this, (value!=null && !value.equals("")&& !value.equals("null"))?Long.parseLong(value):null);

			}
			//etc...

			return;
		}
	}
}

Algunos enlaces con ejemplos de uso:
https://www.geeksforgeeks.org/reflection-in-java/
https://guru99.es/java-reflection-api/

2-agosto-2018
admin

Parámetros externos en Python

Ejemplo de configuración en el eclipse de parámetros externos para una aplicación realizada en python.




Como se puede ver para leerlos es simplemente:

import sys
....
variable = sys.argv[1]
16-julio-2018
admin

Uso de wait en Selenium

En los test de selenium podemos esperar a que se ejecuten determinadas acciones para facilitar el testeo de las web.

Ejemplo 1: Este ejemplo espera hasta 10 segundos antes de lanzar una excepción TimeoutException a menos que encuentre el elemento myDynamicElement para regresar dentro de 10 segundos.
Es interesante combinarlo con las ExpectedConditions aunque también se puede hacer consulta estática.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()



Ejemplo 2: En este se establece 10 segundos como el tiempo de espera máxima para buscar cualquier elemento.

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")



Fuente

9-junio-2018
admin

Spring-Boot y variables de entorno

Formas de pasar información a una aplicación java realizada con spring-boot:

Variable de entorno
Podemos crear una variable de entorno añadiendola directamente desde la consola o bien en el propio entorno de desarrollo (la imagen es con un eclipse.)

set MI_VARIABLE=Hola!!

Podemos acceder a ellas desde la apliación así:

String myVar = System.getenv().get("MI_VARIABLE");



Línea de comandos
Podemos pasar propiedades por línea de comandos, por ejemplo:

java -jar -DmiVariable=Hola programa.jar

Para su lectura bastaria con

@Autowired 
private Environment env;
.....
String value = env.getProperty( "miVariable" );
.....



application.properties y application-xxx.properties
En el fichero application.properties puedes añadir también variables:

var.prueba.1=valor1
var.prueba.2=valor2
....

Adicionalmente en Spring-Boot podriamos crear otros ficheros application-xxx.properties. XXX hace referencia al profile que quieras usar, podemos definir que profile se va a utilizar mediante la propiedad spring.profiles.active. Es decir, si queremos que los valores de las variables se obtengan prioritariamente del fichero application-local.properties deberíamos asignar el valor local a la propiedad spring.profiles.active.

spring.profiles.active=local


Documentación profile

27-diciembre-2017
admin

Primera aplicación con IONIC

Ionic es una herramienta, gratuita y open source, para el desarrollo de aplicaciones híbridas basadas en HTML5, CSS y JS. Está construido con Sass y optimizado con AngularJS.
Se trata de una tecnología muy valida siempre que se impongan al cliente ciertas restricciones en las versiones de los dispositivos soportados. Es decir: Android 4.4+, IOS 8+ y Windows 10+ (Phone y Desktop).

Requisitos previos
– Tener instalado jdk 1.8
– Para android, tener instalado la sdk android (puedes usar el Android Studio)
– Tener instalado Gradle (descargar, descomprimirlo y luego meterlo al path)

Instalamos el framework

	npm install -g ionic@beta
	npm install -g ionic
	npm install -g cordova


Creamos la primera aplicación de ejemplo, podemos elegir uno de estos tipos:
– tabs : a simple 3 tab layout
– sidemenu: a layout with a swipable menu on the side
– blank: a bare starter with a single page
– super: starter project with over 14 ready to use page designs
– tutorial: a guided starter project

	ionic start AppExampleIonic sidemenu  --typescript


Comandos a conocer:

        //Lanza la aplicación en el emulador
	ionic serve

        //Lanza la aplicación en varios tipos de plataformas en el navegador
	ionic serve --lab

        //añade las plataformas a utilizar
	ionic cordova platform add ios android windows

        //Lanza la aplicación android
	ionic cordova run android

        //cosntruye la apliación android
	ionic cordova build android

        //Generar una version de android para producción
	ionic cordova build android --release

        //Generar una version de android para producción
	ionic cordova build ios --prod

Fuente

20-diciembre-2017
admin

Transiciones CSS. Mejorando el diseño.

A continuación se muestran dos links con información sobre transiciones.

https://www.bootply.com/tagged/transition
Se trata de una web que contiene diferentes ejemplos de transiciones realizadas con Bootstrap.


https://daneden.github.io/animate.css/
Se trata de una css que contiene un monton de animaciones muy interesantes. Se instala con npm mediante:

npm install animate.css --save

Y luego solo tienes que incluirla:

< head>
  < link rel="stylesheet" href="animate.min.css">
< /head>
15-diciembre-2017
admin

Modulo de seguridad Helmet para node.js

Se trata de una librería que provee de 12 módulos para establecer unos cabeceras de seguridad en tu servidor node.js. Concretamente:

Module Included by default?
contentSecurityPolicy for setting Content Security Policy  
expectCt for handling Certificate Transparency  
dnsPrefetchControl controls browser DNS prefetching
frameguard to prevent clickjacking
hidePoweredBy to remove the X-Powered-By header
hpkp for HTTP Public Key Pinning  
hsts for HTTP Strict Transport Security
ieNoOpen sets X-Download-Options for IE8+
noCache to disable client-side caching  
noSniff to keep clients from sniffing the MIME type
referrerPolicy to hide the Referer header  
xssFilter adds some small XSS protections

Para instalarlo sería con el comando:

npm install helmet --save 

Unos ejemplos de uso:

var express = require('express')
var helmet = require('helmet')
var app = express()

//Uso por defecto sería:
app.use(helmet())

//Activar individualmente las funciones.
app.use(helmet.noCache())
app.use(helmet.frameguard())

//Desabilitar alguna funcionalidad y usa el resto de las de por defecto.
app.use(helmet({
  frameguard: false
}))

Fuente

Páginas:1234567...13»

Categorias

Linkedin