La #importancia de la #Replicación (o #Sincronización) de #Base de #Datos con #SymmetricDS
Aprenderás
una sola herramienta para sincronizar cualquier base de datos sobre
cualquier sistema operativo. De esa forma, sólo inviertes en aprender
una vez y aplicar muchas veces.
Manejarás una herramienta estable y muy ligera, así como muy flexible en su configuración.
No importa si usas #SQLServer , #MySQL , #MariaDB , #PostgreSQL , #Oracle, #DB2 , #FireBase, #SQLite, etc el proceso es el mismo, incluso puedes combinar diferentes bases de datos.
Además de los beneficios implícitos que ofrece la sincronización (Replicación) de Bases de Datos.
Mira
el enlace que te dejo acá y crece en conocimiento y dale mayor peso a
tu hoja de vida. Ofrécele a tus clientes la posibilidad de portabilizar
su #Data
Héchale un vistazo al siguiente enlace, con un precio super bajo, que ya quedan pocos días, luego volverá a su precio original.
Invierte en tu capacitación y verás mejores frutos en un corto tiempo.
Esta vez les dejo una nueva clase extra del curso de programación en Capas con Ado Net, en el cual veremos cómo poblar un dropdownlist o combobox utilizando las capas que ya tenemos listas en el curso.
Si quieres estar enterado de nuevas clases, puedes registrarte en la ventana emergente o a continuación. (Not: revisa tu carpeta spam para la verificación).
En esta nueva entrada, voy a explicar cómo agregar un atributo llamado creadopor en el modelo, que luego se convertirá en el campo creadopor de la tabla (modelo) Categoria.
Te he marcado los cambios que se debe hacer en el modelo.
Luego de eso debes crear una migración manage.py makemigrations Si ya tienes registros en la base de datos, el orm de Django te pedirá que des valor del nuevo campo para los registros existentes.
Yo le di el valor de 1, ya que el campo es de tipo numérico, porque ahí se graba el id del usuario y el usuario 1 (en mi caso) es el admin
Y finaliza el comando makmigrations
Para ver el estado de la migración, lo haces con manage.py showmigrations
Puedes ver que está una migración sin aplicar, llamada 006_categoria_creadopor en la aplicación catalogos Para ver la instrucción que ejecutará django sobre postgresql, se hace con el comando manage.py sqlmigrate [nombreapp] [id de migracion] en nuestro caso sería manage.py sqlmigrate catalogos 0006_categoria_creadopor
Ya en esta etapa, puedes realizar la migración con el comando manage.py migrate
Si consultas el registro de las categorías en la base de datos, podrás ver ya el nuevo campo con el valor escogido para los registros ya existentes.
Ahora sólo faltaría decirle a Django que cuando se cree una nueva categoría, se tome el id del usuario activo. Para esto hay que sobreescribir el evento form_valid de la vista create de categoría.
Y con eso ya está listo, puedes hacer las pruebas insertando registros y ve cómo se van agregando. En mi caso, entré al sistema con otro usuario y creé una nueva categoría, teniendo como salida desde la base de datos lo siguiente:
Y puedes ver cómo le asignó el id de ese otro usuario.
Si tienes dudas, favor contactarme por medio de este blog o los enlaces de mis redes sociales.
Para generar pdf con Django, debemos instalar el paquete ReportLab
pip install reportlab
ReportLab sólo tiene una dependencia llamada Pillow. Si tienes problemas con la instalación de ReportLab, trata primero de instalar el Pillow.
En la siguiente imange puedes ver cómo instalo reportlab y pillow de manera offline.
Una vez instalado, ya podemos trabajar en nuestro proyecto, para esto crearemos una vista de tipo función de la siguiente forma:
def categoria_print(self, pk=None):
import io
from reportlab.platypus import SimpleDocTemplate, Paragraph, TableStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import Table
response = HttpResponse(content_type='application/pdf')
buff = io.BytesIO()
doc = SimpleDocTemplate(buff,
pagesize=letter,
rightMargin=40,
leftMargin=40,
topMargin=60,
bottomMargin=18,
)
categorias = []
styles = getSampleStyleSheet()
header = Paragraph("Listado de Categorías", styles['Heading1'])
categorias.append(header)
headings = ('Id', 'Descrición', 'Activo', 'Creación')
if not pk:
todascategorias = [(p.id, p.descripcion, p.activo, p.creado)
for p in Categoria.objects.all().order_by('pk')]
else:
todascategorias = [(p.id, p.descripcion, p.activo, p.creado)
for p in Categoria.objects.filter(id=pk)]
t = Table([headings] + todascategorias)
t.setStyle(TableStyle(
[
('GRID', (0, 0), (3, -1), 1, colors.dodgerblue),
('LINEBELOW', (0, 0), (-1, 0), 2, colors.darkblue),
('BACKGROUND', (0, 0), (-1, 0), colors.dodgerblue)
]
))
categorias.append(t)
doc.build(categorias)
response.write(buff.getvalue())
buff.close()
return response
En este caso, las importaciones de las dependencias las hice dentro de la función ya que no requeriré en otro lado de dichas importaciones, pero en tu caso, puedes hacerlo de manera global para todas las funciones.
Esta vista imprime las categorías de un determinado producto (parte de lo que imparte en el curso de Desarrollo Web con Python usando Django 2.1) puede recibir el id de la categoría o no. Si lo recibe imprime ese único registro, sino lo recibe imprime todos los registros.
En este caso:
Se genera documento de tamaño carta (verticual o portrait)
Se crea variable vacía
Se agrega título "Listado de Categorías"
Se agrega el título
Se agregan encabezado para la tabla a mostrar (Id, Descripción, Activo y Creación).
Si a la vista no se le pasa el Id, filtra de las categorías todos los registros, si se pasa el Id, únicamente filtra el registro que cumpla con el Id dado.
Se genera una tabla con encabezado y el resultado del filtro anterior.
Se le d formato a la tabla
Se agrega tabla
Se construye el documento
Impresión a la salida
Cerrar buffer
Devolver response
Luego se debe agregar la ruta que responda a la vista. Una vez importada la vista anterior, se procede a agregar una ruta para que imprima todos los registros (no se le envía id) y la otra que imprima un único registro (se envía Id):
Ya sólo falta poner la url en un botón para que se imprima, en este caso (basándonos en el curso), el botón imprimir (todos los registros), se puso en la parte superior y el botón imprimr un registro, se agregó en una columna donde están los botones, según se muestra en la siguiente imagen.
Generando la salida, respectivamente imprimir todo y un registro:
Para imprimir en forma horizontal (LandScape), sólo se debe hacer los siguientes cambios.
Básicamente es importar el tamaño landscape y luego al armar el
documento, indicarle que el tamaño es carta pero con orientación
horizontal (landscape)
Espero que te sea de utilidad este artículo. Si deseas estar pendiente de las demás actualizaciones, ya sea de artículos y/o descuento de los cursos, puedes registrarte en el siguiente formulario:
Syncronizar (o Replicar) tus datos es muy importante para garantizar tener actualizado tus registros en todo momento. En esta ocasión vamos a ver cómo descargar SymmetricDS y copiarlo a un Servidor Linux con #Ubuntu Server.
Cualquier duda, estoy para responder sus preguntas.
Elabora solución de replicación multiplataforma, multi BBDD, eficiente, estable, escalable y fácil de configurar
Lo que aprenderás
Implementar
solución de replicación robusta, escalable, flexible y de fácil
configuración sin invertir absolutamente nada en software.
Implementar
solución de replicación robusta, escalable, flexible y de fácil
configuración sin invertir absolutamente nada en software.
Descripción
¿Te gustaría implementar una solución de replicación
robusta, eficiente, escalable sin invertir un solo centavo? ¿Eres DBA o
quieres serlo? ¿Eres desarrollador y requieres hacer pruebas en
diferentes bases de datos? Entonces debes tomar este curso.
#SymmetricDS
es un software de código abierto para replicación de datos asíncrona
que permite subscriptores múltiples y sincronización bidireccional.
Utiliza tecnologías web y de bases de datos para replicar tablas entre
bases de datos relacionales, casi en tiempo real. El software fue
diseñado para escalar a un gran número de bases de datos, trabajar con
conexiones de bajo ancho de banda, y resistir a periodos de
inoperatividad de la red.
Una replicación de base de datos
es una técnica mediante la cual copiamos de forma exacta en otra
ubicación una instancia (o cluster) de la base de datos. Se utiliza en
entornos distribuidos de Sistemas de Gestión de Bases de Datos donde
una sola base de datos tiene que ser utilizada y actualizada en varios
lugares de forma simultánea.
Desde este blog lo puedes tener con precio de lanzamiento, con 87% descuento de su precio original.
#Revertir #Migration #Django #Python #PostgreSQL En este artículo, veremos un tema muy importante cuando se está desarrollando una aplicación web con Django, las reversiones de migraciones. El sistema de migraciones de Django fue elaborado y optimizado para trabajar con una gran cantidad de migraciones. Generalmente, todo debe fluir con normalidad, pero en determinadas ocasiones, se requiere de hacer una limpieza de todo lo aplicado.
Para tener una lista de las migraciones, se debe ejecutar el comando manage.py showmigrations
La más sencilla de todas es borrar todo, incluyendo la base de datos, el procedimiento sería el siguiente (siempre respaldar antes de ejecutar un comando por lotes):
Borrar todos archivos de migración a excepción del __init__.py, los comando a aplicar tanto en linux como en windows serían algo así:
En Linux: find . -path "*migrations/*.py" -not -name __init__.py -delete
En Windows: for /r %i in (migrations\*.py) do if not "%i"=="%~dpi__init__.py" del %i
Borrar Base de Datos
Crear Base de Datos
Crear migraciones nuevamente
manage.py makemigrations
Ejecutar migración
manage.py migrate
La otra opción es reiniciar las migraciones para una aplicación (por ejemplo catalogos) manage.py migrate --fake catalogos zero
Si después de reiniciarlas volvemos a consultar las migraciones, el resultado para la aplicación catálogos debería ser algo parecido a:
Como podrás ver la aplicación catálogo no tiene marcada las migraciones.
Bueno, hay otras opciones, ¿cuál otra conoces y puedes contribuir?
Lo que si te pido es que me dejes una buena reseña en este curso. Si llegas tarde, aún te puedo ofrecer una fantástica promoción del 90%, precio rebajado de USD 99.99 a sólo USD 10.99. Para acceder al descuento especial, sólo debes dar click en el enlace siguiente:
http://debsconsultores.blogspot.com/2018/10/descuento-en-cursos-de-hasta-94.html
Puedes suscribirte a la lista de correo para estar atento a futuras promociones y/o descuentos.
En esta ocasión, iniciaré con una serie de tutoriales sobre Bash.
Bash la abreviación de GNU Bourne Again Shell. Es un lenguaje de programación, específicamente un lenguaje de scripting shell, con un intérprete llamado bash.
El programa bash es usado como un shell, tanto para escribir comandos como una consola interactiva de línea de comandos, apilando comandos desde un script o como un comando único.
¿Qué es y qué no es BASH?
Hay mucha confusión sobre lo que es o no es Bash. Acá dejo algunos conceptos erróneoss:
Bash no es (necesariamente) parte de linux. Hay piezas separadas de software. GNU Bash existe desde hace muchos años antes que el kernel de Linux fuese creado y corre en otros sistemas operativos también.
Bash no es lo mismo que SSH. SSH es un servicio y protocolo de red para ejecutar comandos sobre un equipo (computadora) remota. Bash puede ser uno de esos comandos.
Bash tampoco es tu terminal TTY. Tu terminal es un dispositivo para enviar/recibir información desde/hasta una computadora. Las terminales solían ser dispositivos de hardware con un monitor y teclado. Hoy en día, para la mayoría de los usuarios, son emuladores de terminal o dispositivos de software.Bash es un programa que se ejecuta utilizando su terminal para su entrada y salida.
Igualmente, Bash no es la misma cosa que PuTTY, iTerm, o xterm. Éstas son emuladores de terminal, no shells. Tu emulador de terminal es un programa que entiende e interpreta programas basados en texto. Bash es un uno de esos programas.
Bash no es la línea de comando, en el sentido estricto. Bash tiene un modo interactivo, el cual es un ejemplo de una línea de comando, pero muchas otras herramientas tienen línea de comandos y no por eso son systemas Shells. La herramienta calculadora bc, es un ejemplo de otra herramienta con línea de comando.
Ahora que sabes esto, si alguien alguna vez te pregunta por una cuenta PuTTY de tu servidor, asegúrate de ubicarlos (jejejeje). En los siguientes días continuaré con estos pequeños escritos sobre bash. Si quieres estar enterado, puedes registrarte en la lista de correo.
Algunas reseñas de usuarios :
-Tengo comprados como 10 cursos de python, django y varias yerbas. Sin duda, este curso de Django es Excelente, todo es muy práctico, hay teoría sí, pero lo basico y necesario para entender. Lo que más me gusta es que desarrolla una aplicación completa. La mayoría de los otros autores utilizan el "django admin" pero él se da el trabajo de hacer el app de 0 y te muestra como. Hay cosas que aprendí que no sabía de django sobretodo con el tema de templates. Buen trabajo señor... muy buen trabajo.
-El cursos esta explicado con un lenguaje sencillo, con todas las concreciones necesarias para la adquisición del conocimiento. Si tienes alguna cuestión que se te escapa, el profesor te contesta en poco tiempo, lo cual hace más fácil seguir el contenido. Totalmente recomendado.
-Uno de los mejores cursos de Django que vi en esta plataforma Udemy el instructor es de los mejor.
En esta ocasión, les dejo una super oferta, compra uno de los cursos (cualquiera de los tres listado abajo) y te llevas los otros dos cursos de manera gratuita.
¿Cómo funciona? Haces la compra siguiendo alguno de los tres enlaces siguientes, luego de realizada la compra, escríbeme a este blog o a la página de FB (click aquí), yo verifico la compra y te envío los otros dos cursos.
Lo importante acá es aplicar el cupón (░░░ PROMODJ3PACK_112018 ░░░) en cualquiera de los tres cursos. Si no deseas la promoción, aún puedes optar por los cursos individuales haciendo click aquí o sobre cada una de las imágenes siguientes, con un super precio.
OFERTA VÁLIDA ÚNICAMENTE PARA LAS PRIMERAS 10 PERSONAS (SÓLO HAY 10 CUPONES, CUANDO NO PUEDAS COMPRAR INDICARÍA QUE SE HA TERMINADO LA PROMOCIÓN). En cualquier momento puedes estar en contacto conmigo, por los medios dichos la inicio.
En algunas ocasiones requerimos crear más de un proyecto dentro de la solución, especialmente si estamos siguiendo el curso de Programación Por Capas.
El primer inconveniente que podemos tener es la configuración del Visual Studio (cualquier versión que tengamos), que creamos que no podemos crear más de un proyecto, ya que éste se muestra según la imagen siguiente:
Y como hemos visto en el curso, para poder crear un nuevo proyecto dentro de la solución, debemos, en el explorador de soluciones, dar click derecho y seleccionar cre
Pero como pudimos ver en la primer imágen, no tenemos (o no se muestra) la solución. Para arreglarlo, es simplemente indicarle al IDE de Visual Studio que muestre dicha opción, iremos al menú Herramientas (Tools), luego Opciones (Options) y en la opción Proyectos y Soluciones (Projects and Solutions), marcar la opción Mostrar Solución Siempre.
Ya con esto, la ventana del Proyecto se verá (o debería de verse) algo parecido a la siguiente imágen.
Y ya con esto, podemos retomar el proyecto justo donde nos detuvimos. Cualquier duda, favor abordarla por cualquiera de las siguientes vías
Templatesyard is a blogger resources site is a provider of high quality blogger template with premium looking layout and robust design. The main mission of templatesyard is to provide the best quality blogger templates which are professionally designed and perfectlly seo optimized to deliver best result for your blog.