NubeAndo.COM

Somos Especialistas en: Soluciones Informáticas

NubeAndo.COM

Es el resultado de la integración entre la experiencia adquirida en la capacitación de recursos humanos + el conocimiento aplicado de los expertos en la materia + el uso racional de las nuevas tecnologías e Internet. Todo ello, dentro de un escenario de armonía, fácil de usar y amigable.

  • Comercial el Rey, Local B56.
  • +591-326-4587
  • +591-760-50187
  • angel@nubeando.com
  • www.nubeando.com
Me

Tecnologías Utilizadas

El respaldo de un equipo de especialistas, con probada experiencia en el uso de tecnologías siempre innovando con lo último en framework, cms y lenguajes de programación.

Marketing Digital 90%
Sistemas Web 70%
Aplicaciones Movíles 95%
CMS Portales Web 60%

Soporte Técnico

Mantenimiento preventivo y correctivo de computadoras, asi como recuperación de información de discos duros dañados.

Marketing Digital

Posiciona tu negocio en las redes sociales, utilizamos tecnologías como mail marketig y publicidad en redes sociales, posicionamos tu negocio.

Portales Web Responsive Design

Implementamos la web de tu negocio, lo posicionamos y lo adaptamos a tu requerimiento.

Capacitación Superior

Con experiencia en talleres, seminario y docencia universitaria, dale valor a tú currículum y aprende con nosotros.

Diseño Gráfico

Maquetamos tu logo y hacemos otros trabajos para publicidad a traves de imagenes.

Desarrollo de Software

Dale valor a tu emprendimiento y administra el mismo con un sistema a medida o alguna utilidad para facilitar tu trabajo.

25
Proyectos Completados
15
Clientes Marketing Digital
8
Años de Experiencia
32
Capacitaciones Dictadas
  • Generar automáticamente procedimientos almacenados a partir de una tabla

    Generar automáticamente procedimientos almacenados a partir de una tabla


    La creación de procedimientos almacenados para un CRUD puede resultar una tarea bastante repetitiva. Aquí publico un procedimiento almacenado para SQL Server (T-SQL) que sirve para generar un script para crear 4 procedimientos almacenados a partir del nombre de una tabla.

    El script creará 4 procedimientos. Todos los procedimientos que crea el script reciben como parámetros todos los campos de la tabla.

    - SELECT filtrará por los campos recibidos que no sean NULL (where condicionado)

    - INSERT insertará un registro con los parámetros recibidos

    - UPDATE tal y como se genera no tiene sentido, simplemente borra las líneas que no quieras (del SET ó del WHERE)

    - DELETE borrará registros filtrando por los campos recibidos que no sean NULL

    - EXISTS devolverá registros que coincidan con el filtro creado con los campos recibidos que no sean NULL (where condicionado)
    CREATE PROCEDURE [dbo].[sp_generate]  
      @tableName AS VARCHAR(100)  
    AS  
      
    --CAPITALIZE TABLENAME  
    SET @tableName = UPPER(LEFT(@tableName,1)) + RIGHT(@tableName, LEN(@tableName) -1)  
      
    --SALTO DE LÍNEA  
    DECLARE @nl AS CHAR  
    SET @nl = CHAR(10) + CHAR(13)   
      
    --CABECERA  
    DECLARE @spHeaders AS VARCHAR(1000)  
    SET @spHeaders = 'SET ANSI_NULLS ON' + @nl +  
    'GO' + @nl +  
    'SET QUOTED_IDENTIFIER ON' + @nl +  
    'GO' + @nl +  
    '-- =============================================' + @nl +  
    '-- Author:  TU_NOMBRE' + @nl +  
    '-- Create date: ' + CONVERT(VARCHAR, GETDATE(), 3) + @nl +  
    '-- ============================================='  
      
    DECLARE @table AS VARCHAR(MAX)  
    DECLARE @column AS VARCHAR(MAX)  
    DECLARE @data_type AS VARCHAR(MAX)  
    DECLARE @length AS INT  
    DECLARE @precision AS INT  
    DECLARE @scale AS INT  
      
    --PARÁMETROS  
    DECLARE @spParameters AS VARCHAR(MAX) SET @spParameters = ''  
      
    --LISTA DE CAMPOS  
    DECLARE @fieldList AS VARCHAR(MAX) SET @fieldList = ''  
      
    --LISTA DE CAMPOS PARA EL SET DEL UPDATE  
    DECLARE @fieldSetList AS VARCHAR(MAX) SET @fieldSetList = ''  
      
    --LISTA DE PARÁMETROS PARA EL INSERT  
    DECLARE @insertParameters AS VARCHAR(MAX) SET @insertParameters = ''  
      
    --CONDICIONES  
    DECLARE @spConditions AS VARCHAR(MAX) SET @spConditions = ''  
      
    DECLARE c CURSOR STATIC FOR  
    select table_name, column_name, data_type, character_maximum_length,numeric_precision, numeric_scale from information_schema.columns where table_name = @tableName order by ordinal_position  
    OPEN c FETCH NEXT FROM c INTO @table, @column, @data_type, @length, @precision, @scale  
    WHILE @@FETCH_STATUS = 0 BEGIN  
      
     SET @spParameters = @spParameters + (CASE WHEN LEN(@spParameters) >0 THEN @nl + ' ,' ELSE '  ' END) + '@' + @column + ' ' + UPPER(@data_type) + (CASE @data_type WHEN 'VARCHAR' THEN '('+CAST(@length AS VARCHAR)+')' WHEN 'DECIMAL' THEN '('+CAST(@precision AS VARCHAR)+', '+CAST(@scale AS VARCHAR)+')' ELSE '' END) + ' = NULL'  
     SET @fieldList = @fieldList + (CASE WHEN LEN(@fieldList) >0 THEN @nl + '    ,' ELSE '' END) + @column  
     SET @spConditions = @spConditions + (CASE WHEN LEN(@spConditions) >0 THEN @nl + '   AND ' ELSE '' END) + '(@' + @column + ' IS NULL OR @' + @column + '=' + @column + ')'  
     SET @fieldSetList = @fieldSetList + (CASE WHEN LEN(@fieldSetList) >0 THEN @nl + '     ,' ELSE '      ' END) + @column + ' = @' + @column  
     SET @insertParameters = @insertParameters + (CASE WHEN LEN(@insertParameters) >0 THEN @nl + '    ,' ELSE '' END) + '@' + @column  
      
     FETCH NEXT FROM c INTO @table, @column, @data_type, @length, @precision, @scale  
    END  
    CLOSE c DEALLOCATE c  
      
    --********************************  
    --*********** SELECT *************  
    --********************************  
    DECLARE @SELECT AS VARCHAR(MAX)  
    SET @SELECT = @spHeaders + @nl  
    SET @SELECT = @SELECT + 'CREATE PROCEDURE ' + @tableName + '_Select' + @nl  
    SET @SELECT = @SELECT + @spParameters + @nl  
    SET @SELECT = @SELECT + 'AS' + @nl + ' SET NOCOUNT OFF;' + @nl + @nl  
    SET @SELECT = @SELECT + '    SELECT ' + @fieldList + @nl  
    SET @SELECT = @SELECT + '    FROM ' + @table + @nl  
    SET @SELECT = @SELECt + '    WHERE ' + @spConditions + @nl  
      
    --********************************  
    --*********** UPDATE *************  
    --********************************  
    DECLARE @UPDATE AS VARCHAR(MAX)  
    SET @UPDATE = @spHeaders + @nl  
    SET @UPDATE = @UPDATE + 'CREATE PROCEDURE ' + @tableName + '_Update' + @nl  
    SET @UPDATE = @UPDATE + @spParameters + @nl  
    SET @UPDATE = @UPDATE + 'AS' + @nl + ' SET NOCOUNT OFF;' + @nl + @nl  
    SET @UPDATE = @UPDATE + '    UPDATE ' + @table + ' SET ' + @nl  
    SET @UPDATE = @UPDATE + @fieldSetList + @nl  
    SET @UPDATE = @UPDATE + '    WHERE ' + @spConditions + @nl  
      
    --********************************  
    --*********** DELETE *************  
    --********************************  
    DECLARE @DELETE AS VARCHAR(MAX)  
    SET @DELETE = @spHeaders + @nl  
    SET @DELETE = @DELETE + 'CREATE PROCEDURE ' + @tableName + '_Delete' + @nl  
    SET @DELETE = @DELETE + @spParameters + @nl  
    SET @DELETE = @DELETE + 'AS' + @nl + ' SET NOCOUNT OFF;' + @nl + @nl  
    SET @DELETE = @DELETE + '    DELETE FROM ' + @table + @nl  
    SET @DELETE = @DELETE + '    WHERE ' + @spConditions + @nl  
      
    --********************************  
    --*********** INSERT *************  
    --********************************  
    DECLARE @INSERT AS VARCHAR(MAX)  
    SET @INSERT = @spHeaders + @nl  
    SET @INSERT = @INSERT + 'CREATE PROCEDURE ' + @tableName + '_Insert' + @nl  
    SET @INSERT = @INSERT + @spParameters + @nl  
    SET @INSERT = @INSERT + 'AS' + @nl + ' SET NOCOUNT OFF;' + @nl + @nl  
    SET @INSERT = @INSERT + '    INSERT INTO ' + @table + '(' + @nl  
    SET @INSERT = @INSERT + '     ' + @fieldList + @nl  
    SET @INSERT = @INSERT + ' )' + @nl + ' VALUES(' + @nl + '     ' + @insertParameters + @nl  
    SET @INSERT = @INSERT + ' )' + @nl  
      
    --********************************  
    --*********** EXISTS *************  
    --********************************  
    DECLARE @EXISTS AS VARCHAR(MAX)  
    SET @EXISTS = @spHeaders + @nl  
    SET @EXISTS = @EXISTS + 'CREATE PROCEDURE ' + @tableName + '_Exists' + @nl  
    SET @EXISTS = @EXISTS + @spParameters + @nl  
    SET @EXISTS = @EXISTS + ' ,@exists BIT OUT' + @nl  
    SET @EXISTS = @EXISTS + 'AS' + @nl + ' SET NOCOUNT OFF;' + @nl + @nl  
    SET @EXISTS = @EXISTS + '    IF EXISTS (' + @nl + ' SELECT ' + LEFT(@fieldList,CHARINDEX(@nl,@fieldList))  
    SET @EXISTS = @EXISTS + '    FROM ' + @table + @nl  
    SET @EXISTS = @EXISTS + '    WHERE ' + @spConditions + @nl + ' )' + @nl  
    SET @EXISTS = @EXISTS + ' SET @exists = 1' + @nl + ' ELSE SET @exists = 0'  
      
    --MOSTRAR GENERADOS  
    PRINT + '-- =====INSERT==================================' + @nl + @INSERT  
    PRINT + '-- =====DELETE==================================' + @nl + @DELETE  
    PRINT + '-- =====UPDATE==================================' + @nl + @UPDATE  
    PRINT + '-- =====SELECT==================================' + @nl + @SELECT  
    PRINT + '-- =====EXISTS==================================' + @nl + @EXISTS
    

    Se usa así:
    sp_generate NOMBRE_DE_TABLA 
    
  • ¿Qué son las unidades de estado sólido (SSD)?

    ¿Qué son las unidades de estado sólido (SSD)?

    Seguramente más de una vez has escuchado hablar sobre las unidades de estado sólido. Si aún te quedan dudas sobre ellas o simplemente quieres saber si vale la pena comprar una, en esta entrada trataré de ayudarte a resolverlo.

    ¿Qué es una SSD?

    Las unidades de estado sólido o SSD (solid state drive) son unidades de almacenamiento no volátil, es decir, que mantendrán los datos almacenados aunque no estén conectadas a una fuente de alimentación, basadas en circuitos integrados (como las memorias flash). A diferencia de los discos duros (HDD) que basan su funcionamiento en una cabeza de lectura que se mueve a través de las caras de los discos, las unidades de estado sólido no tienen partes móviles, son un solo componente (de ahí su nombre).

    ¿Cómo funcionan las SSD?


    Una unidad de estado sólido consiste en una serie de circuitos integrados con millones de celdas en las que se almacenan datos en forma de voltajes. Dichas celdas forman matrices de las que a cada fila se le conoce como página; comúnmente cada página de datos almacena de 2,000 a 16,000 celdas. Una matriz (también llamada bloque) puede almacenar de 128 a 256 páginas. Actualmente (2017) las SSD en su mayoría están compuestos de compuertas NAND.



    Clasificación de las SSD


    Una jerarquía muy común para las SSD está basada en la variedad de datos que puede almacenar cada una de sus celdas, esto es:
    SLC: Single level cell o celda de un solo nivel. Cada celda puede contener un solo bit de información (1 o 0), como consecuencia, el espacio físico necesario para almacenar grandes cantidades de información puede llegar a ser muy grande. La ventaja de este tipo de unidad es que permite una mayor cantidad de operaciones de lectura y escritura sin que el componente presente fallos, ya que solo hace falta saber si el bit de cada celda está encendido sin ninguna otra operación extra. Son un poco caras por a la gran cantidad de bloques que se requieren para almacenar la misma cantidad de datos que las otras alternativas de SSD hacen con una menor cantidad de ellos. Suele ser una tecnología principalmente usada por empresas a las que les interesa la tolerancia a fallos y fiabilidad sin importar mucho el precio.
    MLC: Multi level cell o celda de múltiple nivel. Esta clase de unidades están formadas por celdas que permiten almacenar 2 bits cada una, es decir, 4 valores diferentes (00, 01, 10 y 11), lo cual se traduce en poder almacenar el doble de información que un SLC en el mismo espacio. La desventaja es que la cantidad de operaciones que se necesitan hacer sobre las celdas es mayor puesto que ahora es necesario aplicar un voltaje extra para detectar cuál valor se encuentra almacenado específicamente, a diferencia del SLC donde bastaba con saber si estaba encendida o apagada. Lo anterior provoca que fallen más rápido debido al uso de los componentes. Es común que esta sea una de las tecnologías disponibles para la compra al público.
    TLC: Triple level cell o celda de triple nivel. Cada celda puede contener 3 bits, es decir, hasta 8 estados diferentes. Se logra una mayor cantidad de memoria disponible en un espacio menor a un precio más bajo de fabricación y venta. El rendimiento y vida útil, a comparación de las otras dos alternativas, es menor puesto que ahora es necesario ser más preciso para determinar el voltaje de cada celda. Esta es la otra tecnología más común para la compra al público.
    El problema de borrar y sobrescribir

    A pesar de que la rapidez de lectura y escritura en una SSD es muy grande, estas presentan un par de desventajas importantes. Cuando queremos eliminar alguna página de datos es necesario borrar el bloque completo al que esta pertenece, la razón es simple: el voltaje necesario para realizar el borrado de una página es muy fuerte, por tanto, puede alterar las páginas vecinas de la que estamos borrando, en su lugar, al utilizar el voltaje para borrar un bloque completo en lugar de una página, mitigamos los efectos secundarios.

    A veces queremos borrar una página en específico de un bloque que contiene varias de ellas; en esos casos la SSDalmacena una copia del bloque sin la página que deseamos borrar en cualquier bloque que esté vacío. Puedes observar este funcionamiento a continuación:



    Tecnología de las SSD


    Siendo específicos, el tipo de memoria que utilizan las unidades de estado sólido hoy en día son las 3D TLC NAND o, dicho de otro modo, son series de compuertas NAND de triple nivel (TLC) apiladas. Se les denomina 3D porque, además de colocar las compuertas una atrás de otra, se añade una tercera dimensión al hacer pilas de ellas. Esta clase de memorias tienen varias ventajas sobre las memorias de un solo nivel (2D TLC NAND), entre las más importantes tenemos que:
    La capacidad de almacenaje aumenta sin aumentar mucho el tamaño del componente.
    El consumo de energía disminuye.
    Suelen ser más tolerantes a fallos a comparación de las 2D NAND.
    Aumento en la velocidad de escritura de datos.

    Entre las desventajas de las memoria 3D TLC NAND tenemos:
    El costo de fabricación aumenta considerablemente (hasta 5 veces más) al de una 2D NAND.
    El espacio que pueden ocupar las celdas en el chip base es hasta 25% inferior que el espacio de una 2D.
    Las operaciones sobre estas memorias (leer, borrar o escribir) son considerablemente más complejas que en otras.

    Mito de las SSD


    Una de las razones principales por las que muchas personas dudan sobre adquirir una SSD se origina del rumor de la corta vida útil que estas tienen. Ciertamente las celdas de las SSD tienen un límite de algunos cientos de miles de escrituras y lecturas antes de que puedan comenzar a fallar, sin embargo, eso no significa que fallen muy rápido. Hace algunos años el tiempo de vida de un HDD era considerablemente mayor al de cualquier SSD, pero ese problema se ha solucionado desde hace tiempo, ahora es más común que los HDD fallen mucho antes que un SSD gracias a algoritmos de escritura sofisticados que tratan de evitar que siempre se usen las mismas celdas, y nuevas tecnologías que estas unidades incorporan. Dependiendo de la marca de la SSD que compremos y de la tecnología que esta utilice, el límite de lecturas y escrituras pueden variar mucho, sin embargo, dependiendo del uso que se le de, su tiempo de vida puede ser mucho más grande que el de un HDD.

    El futuro de las SSD y HDD


    Aun es muy pronto para declarar que el futuro del almacenamiento está en manos de las SSD, su costo por gigabytesigue siendo muy caro a comparación de los HDD. Lo cierto es que los avances en la tecnología NAND y 3D NAND han ayudado a que las unidades de estado sólido formen muy buenas bases en la industria. La mayoría de los inconvenientes que estas tienen, también están presentes en los HDD pero con las SSD tenemos un rendimiento mayor y más fiabilidad a un precio más elevado. Para solucionar dicho problema, muchas personas han recurrido a unidades híbridas de SSD y HDD en las que la primera actúa como una especie de memoria caché de los datos más utilizados de la segunda, así se disminuye la latencia de la unidad sin elevar mucho su costo.

    Aún es posible que aparezca una nueva tecnología más eficiente que cualquier clase de disco o unidad de almacenamiento que conozcamos hasta ahora, por lo pronto, las SDD y los avances en la tecnología de circuitos integrados parecen ser el futuro del almacenamiento.
  • ACCEDE A CODIGO FUENTE GRATIS

    Compartiendo código a través de una plataforma gratuita, compartiendo proyectos y codigo siempre con el lema de Educar es Compartir.

    DIRECCIÓN

    Comercial el Rey, Local B56

    CORREO

    angel@nubeando.com
    soporte@nubeando.com

    TELEFONO

    +591 326 4587

    MOVILES

    +591 760 50187