martes, 31 de octubre de 2017

Desarrollar Aplicaciones IOS sin emulador de MAC con XAMARIN LIVE PLAYER

Desde los inicios de XAMARIN siempre ha sido una limitante el poder desarrollar aplicaciones IOS por el uso de una MAC para poder utilizar el emulador, la solución viene ahora con Xamarin Live Player incluida VS2017 en versiones posteriores a la 15.4.1

Pasos para activar Xamarin Live Player

Verificar versión de Visual Studio 2017.


Dentro de Visual Studio Ayuda  > Acerca de Visual Studio

















En caso de no tener la versión mínima requerida sera necesario actualizar VS ejecutando el Visual Studio Installer.

Habilitar Xamarin Live Player 

Dentro de VS menu Herramientas > Opciones... >Xamarin > Otro
Activamos Habilitar Xamarin Live Player




















 Instalacion de Xamarin Live Player en nuestro dispositivo IOS

Entramos a AppStore, en mi caso utilizare mi dispositivo iphone 6s con ios 11.0.3, buscamos Xamarin Live Player























Conectar Dispositivo con VS 

Regresamos a VS en la opción del Menú Herramientas  > Xamarin Live Player > Administrar Dispositivos...














Aparecerá un código QR con el que podremos emparejar nuestro dispositivo siempre y cuando estén en red.

Abrimos la app en nuestro dispositivo, seleccionamos Pair to Visual Studio 
leemos el código QR






















Después de emparejar el dispositivo los aparecerá la opción de correr aplicación en dispositivo, aparecerá nuestro dispositivo para seleccionar, nuestra aplicación correrá en nuestro dispositivo.


lunes, 30 de octubre de 2017

Convertir código de Adsense y Google analytics para blogger

Para agregar scripts a tu blog ya sea de Adsense o de google analytics se deben seguir los siguientes pasos.
Ingresar a blogger, seleccionar Tema y dar click en Editar HTML.





Si pegamos tal cual nos da el código  Adsense o de google analytics y guardamos nos mandara un error, para evitar esto accesamos a esta página para convertir el código https://www.bloggertipstricks.com/html-encoder-tool










Pegamos nuestro código y copiamos el texto convertido.



Posteriormente regresamos a blogger en editar html de código, buscamos la etiqueta <head> y pegamos el código copiado, para finalizar guardamos el tema y listo


miércoles, 25 de octubre de 2017

Función para Limpiar caracteres especiales SQL SERVER



CREATE FUNCTION [dbo].[LimpiarCaracteresEspeciales](@cadena varchar(max))
       RETURNS varchar(max)
BEGIN
       DECLARE @pos int,
                    @patron varchar(max);

       Set @patron = '%['+'!''"'+Char(150)+Char(10)+char(13)+Char(9)+Char(34)+char(38)+char(60)+char(62)+char(160)
                                  +char(161)+char(162)+char(163)+char(164)+char(165)+char(166)+char(167)+char(168)+char(169)
                                  +char(170)+char(171)+char(172)+char(173)+char(174)+char(175)+char(176)+char(177)+char(178)
                                  +char(179)+char(180)+char(181)+char(182)+char(183)+char(184)+char(185)+char(186)+char(187)
                                  +char(188)+char(189)+char(190)+char(191)+char(192)+char(193)+char(194)+char(195)+char(196)
                                  +char(197)+char(198)+char(199)+char(200)+char(201)+char(202)+char(203)+char(204)+char(205)
                                  +char(206)+char(207)+char(208)+char(209)+char(210)+char(211)+char(212)+char(213)+char(214)
                                  +char(215)+char(216)+char(217)+char(218)+char(219)+char(220)+char(221)+char(222)+char(223)
                                  +char(224)+char(225)+char(226)+char(227)+char(228)+char(229)+char(230)+char(231)+char(232)
                                  +char(233)+char(234)+char(235)+char(236)+char(237)+char(238)+char(239)+char(240)+char(241)
                                  +char(242)+char(243)+char(244)+char(245)+char(246)+char(247)+char(248)+char(249)+char(250)
                                  +char(251)+char(252)+char(253)+char(254)+char(255)+'.]%';

       SET @Pos = PATINDEX(@patron,@cadena)

       WHILE @Pos > 0 BEGIN
             SET @cadena = STUFF(@cadena, @pos,1,'')
             SET @Pos = PATINDEX(@patron, @cadena)
       END


       RETURN @cadena
END;


lunes, 23 de octubre de 2017

Connection to service socket failed GlobalProtected

Error al conectarse a VPN por GlobalProtected, error “Connection to service socket failed”
















Presionar botón de Windows y escribir Servicios: Y seleccionar servicios

Buscamos en la lista el servicio que se llama PanGPS,


Damos click secundario y seleccionamos Iniciar











Regresar a global protected e intentar de nuevo conectar.
En teoría ya debería poder conectarse.


viernes, 20 de octubre de 2017

Convertir Numero a Letra SQL SERVER Numero a letra

La siguiente función sql server convierte un numero a letra soporta hasta 12 dígitos es decir hasta 999,999,999,999.99

Con este tutorial puedes convertir cualquier numero en letra de forma fácil y rápida con la ayuda de este SP.








CREATE FUNCTION [dbo].[CantidadConLetra]
(
    @Numero             Decimal(18,2)
)
RETURNS Varchar(180)
AS
BEGIN
    DECLARE @ImpLetra Varchar(180)
        DECLARE @lnEntero bigint,
                        @lcRetorno VARCHAR(512),
                        @lnTerna bigint,
                        @lcMiles VARCHAR(512),
                        @lcCadena VARCHAR(512),
                        @lnUnidades bigint,
                        @lnDecenas bigint,
                        @lnCentenas bigint,
                        @lnFraccion bigint
        SELECT  @lnEntero = CAST(@Numero AS bigint),
                        @lnFraccion = (@Numero - @lnEntero) * 100,
                        @lcRetorno = '',
                        @lnTerna = 1
  WHILE @lnEntero > 0
  BEGIN /* WHILE */
            -- Recorro terna por terna
            SELECT @lcCadena = ''
            SELECT @lnUnidades = @lnEntero % 10
            SELECT @lnEntero = CAST(@lnEntero/10 AS bigint)
            SELECT @lnDecenas = @lnEntero % 10
            SELECT @lnEntero = CAST(@lnEntero/10 AS bigint)
            SELECT @lnCentenas = @lnEntero % 10
            SELECT @lnEntero = CAST(@lnEntero/10 AS bigint)
            -- Analizo las unidades
            SELECT @lcCadena =
            CASE /* UNIDADES */
              WHEN @lnUnidades = 1 THEN 'UN ' + @lcCadena
              WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
              WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
              WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
              WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
              WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
              WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
              WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
              WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
              ELSE @lcCadena
            END /* UNIDADES */
            -- Analizo las decenas
            SELECT @lcCadena =
            CASE /* DECENAS */
              WHEN @lnDecenas = 1 THEN
                CASE @lnUnidades
                  WHEN 0 THEN 'DIEZ '
                  WHEN 1 THEN 'ONCE '
                  WHEN 2 THEN 'DOCE '
                  WHEN 3 THEN 'TRECE '
                  WHEN 4 THEN 'CATORCE '
                  WHEN 5 THEN 'QUINCE '
                  WHEN 6 THEN 'DIECISEIS '
                  WHEN 7 THEN 'DIECISIETE '
                  WHEN 8 THEN 'DIECIOCHO '
                  WHEN 9 THEN 'DIECINUEVE '
                END
              WHEN @lnDecenas = 2 THEN
              CASE @lnUnidades
                WHEN 0 THEN 'VEINTE '
                ELSE 'VEINTI' + @lcCadena
              END
              WHEN @lnDecenas = 3 THEN
              CASE @lnUnidades
                WHEN 0 THEN 'TREINTA '
                ELSE 'TREINTA Y ' + @lcCadena
              END
              WHEN @lnDecenas = 4 THEN
                CASE @lnUnidades
                    WHEN 0 THEN 'CUARENTA'
                    ELSE 'CUARENTA Y ' + @lcCadena
                END
              WHEN @lnDecenas = 5 THEN
                CASE @lnUnidades
                    WHEN 0 THEN 'CINCUENTA '
                    ELSE 'CINCUENTA Y ' + @lcCadena
                END
              WHEN @lnDecenas = 6 THEN
                CASE @lnUnidades
                    WHEN 0 THEN 'SESENTA '
                    ELSE 'SESENTA Y ' + @lcCadena
                END
              WHEN @lnDecenas = 7 THEN
                 CASE @lnUnidades
                    WHEN 0 THEN 'SETENTA '
                    ELSE 'SETENTA Y ' + @lcCadena
                 END
              WHEN @lnDecenas = 8 THEN
                CASE @lnUnidades
                    WHEN 0 THEN 'OCHENTA '
                    ELSE  'OCHENTA Y ' + @lcCadena
                END
              WHEN @lnDecenas = 9 THEN
                CASE @lnUnidades
                    WHEN 0 THEN 'NOVENTA '
                    ELSE 'NOVENTA Y ' + @lcCadena
                END
              ELSE @lcCadena
            END /* DECENAS */
            -- Analizo las centenas
            SELECT @lcCadena =
            CASE /* CENTENAS */
              WHEN @lnCentenas = 1 THEN 'CIENTO ' + @lcCadena
              WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
              WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
              WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
              WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
              WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
              WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
              WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
              WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
              ELSE @lcCadena
            END /* CENTENAS */
            -- Analizo la terna
            SELECT @lcCadena =
            CASE /* TERNA */
              WHEN @lnTerna = 1 THEN @lcCadena
              WHEN @lnTerna = 2 THEN @lcCadena + 'MIL '
              WHEN @lnTerna = 3 THEN @lcCadena + 'MILLONES '
              WHEN @lnTerna = 4 THEN @lcCadena + 'MIL '
              ELSE ''
            END /* TERNA */
            -- Armo el retorno terna a terna
            SELECT @lcRetorno = @lcCadena  + @lcRetorno
            SELECT @lnTerna = @lnTerna + 1
   END /* WHILE */
   IF @lnTerna = 1
       SELECT @lcRetorno = 'CERO'
   DECLARE @sFraccion VARCHAR(15)
   SET @sFraccion = '00' + LTRIM(CAST(@lnFraccion AS varchar))
   SELECT @ImpLetra = RTRIM(@lcRetorno) + ' PESOS ' + SUBSTRING(@sFraccion,LEN(@sFraccion)-1,2) + '/100 M.N.'
   RETURN @ImpLetra
END;


miércoles, 18 de octubre de 2017

FORMATOS DE FECHA EN SQL SERVER

Convierte fecha a una cadena en diferentes formatos:
Formatos de fecha en sql server, con los siguientes convert puede convertir a diferentes formatos

SELECT  CONVERT(CHAR(10),GETDATE(), 23) --AAAA-MM-DD
SELECT  CONVERT(CHAR(10),GETDATE(), 101) --MM/DD/AAAA
SELECT  CONVERT(CHAR(10),GETDATE(), 102) --AAAA.MM.DD
SELECT  CONVERT(CHAR(10),GETDATE(), 103) --DD/MM/AAAA
SELECT  CONVERT(CHAR(10),GETDATE(), 104) --DD.MM.AAAA
SELECT  CONVERT(CHAR(10),GETDATE(), 105) --DD-MM-AAAA
SELECT  CONVERT(CHAR(10),GETDATE(), 110) --MM-DD-AAAA
SELECT  CONVERT(CHAR(10),GETDATE(), 111) --AAAA/MM/DD
SELECT  CONVERT(CHAR(8),GETDATE(), 112) --AAAAMMDD
SELECT  CONVERT(CHAR(19),GETDATE(), 20) --AAAA-MM-DD HH:MM:SS (H 1-24)
SELECT  CONVERT(CHAR(23),GETDATE(), 21) --AAAA-MM-DD HH:MM:SS.MSS (H 1-24)
SELECT  CONVERT(CHAR(23),GETDATE(), 25) --AAAA-MM-DD HH:MM:SS.MSS (H 1-24)
SELECT  CONVERT(CHAR(19),GETDATE(), 120) --AAAA-MM-DD HH:MM:SS (H 1-24)
SELECT  CONVERT(CHAR(23),GETDATE(), 121) --AAAA-MM-DD HH:MM:SS.MSS (H 1-24)
SELECT  CONVERT(CHAR(23),GETDATE(), 126) --AAAA-MM-DD?HH:MM:SS.MSS (H 1-24)
SELECT  CONVERT(CHAR(8),GETDATE(), 1) --MM/DD/AA
SELECT  CONVERT(CHAR(8),GETDATE(), 2) --AA.MM.DD
SELECT  CONVERT(CHAR(8),GETDATE(), 3) --DD/MM/AA
SELECT  CONVERT(CHAR(8),GETDATE(), 4) --DD.MM.AA
SELECT  CONVERT(CHAR(8),GETDATE(), 5) --DD-MM-AA
SELECT  CONVERT(CHAR(8),GETDATE(), 10) --MM-DD-AA
SELECT  CONVERT(CHAR(8),GETDATE(), 11) --AA/MM/DD
SELECT  CONVERT(CHAR(6),GETDATE(), 12) --AAMMDD
SELECT  CONVERT(CHAR(20),GETDATE(), 22) --MM/DD/AA H:MM:SS (H 1-12)
SELECT  CONVERT(CHAR(19),GETDATE(), 0)  --Mes DD AAAA h:mmPM (H 1-12)
SELECT  CONVERT(CHAR(9),GETDATE(), 6) --DD mes AA
SELECT  CONVERT(CHAR(10),GETDATE(), 7) --mes DD, AA
SELECT  CONVERT(CHAR(26),GETDATE(), 9) --Mes DD AAAA H:MM:SS:MSS (H 1-12)
SELECT  CONVERT(CHAR(24),GETDATE(), 13) --DD MES AAAA HH:MM:SS:MSS (H 1-24)
SELECT  CONVERT(CHAR(26),GETDATE(), 109) --MES DD AAAA H:MM:SS:MSS (H 1-12)
SELECT  CONVERT(CHAR(19),GETDATE(), 100) --MES DD AAAA H:MM (H 1-12)
SELECT  CONVERT(CHAR(11),GETDATE(), 106) --DD MES AAAA
SELECT  CONVERT(CHAR(12),GETDATE(), 107) --MES DD,AAAA
SELECT  CONVERT(CHAR(24),GETDATE(), 113) --DD MES AAAA HH:MM:SS:MSS (H 1-24)
SELECT  CONVERT(CHAR(8),GETDATE(), 8 ) --HH:MM:SS (H 1-24)
SELECT  CONVERT(CHAR(12),GETDATE(), 14) --HH:MM:SS:MSS (H 1-24)
SELECT  CONVERT(CHAR(8),GETDATE(), 24) --HH:MM:SS (H 1-24)
SELECT  CONVERT(CHAR(8),GETDATE(), 108) --HH:MM:SS (H 1-24)

SELECT  CONVERT(CHAR(12),GETDATE(), 114) --HH:MM:SS:MSS (H 1-24)

martes, 17 de octubre de 2017

Respaldo de tabla SQL SERVER

Respaldo de tabla SQL SERVER

Para respaldar una tabla completa o parcial se utiliza el siguiente qry.

SELECT * INTO [NombreTablaRespaldo] FROM [Nombre TablaaRespaldar] –TABLA COMPLETA
  
SELECT * INTO [NombreTablaRespaldo] FROM [Nombre TablaaRespaldar] where <condiciones> –TABLA PARCIAL


Estos  qrys crean una tabla con el nombre que definas y con la misma estructura de la tabla a respaldar.

domingo, 15 de octubre de 2017

Script para conocer indices perdidos en SQL SERVER TUNNING

INDICES PERDIDOS


El siguiente qry da como resultado los indices que están perdidos o hacen falta a determinada base de datos, te tienes que posicionar en la base de datos a la que deseas ver los indices faltantes, generas una nueva consulta, pegas la consulta y ejecutas, te dara una lista de los indices que faltan y la sentencia para crearlos.


SELECT
  mig.index_group_handle, mid.index_handle,
  CONVERT (DECIMAL (28,1),
    migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)
  ) AS improvement_measure,
  'CREATE INDEX IDX_' + REPLACE(REPLACE(mid.statement, '[', ''), ']', '')+ CONVERT (VARCHAR, mig.index_group_handle) + '_' + CONVERT (VARCHAR, mid.index_handle)
  + ' ON ' + mid.statement
  + ' (' + ISNULL (mid.equality_columns,'')
    + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
    + ISNULL (mid.inequality_columns, '')
  + ')'
  + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
  migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE CONVERT (DECIMAL (28,1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC

INDICES NO OCUPADOS



DECLARE @db VARCHAR(25)
SET @db = 'congadb'
SELECT object_name(i.object_id), i.name
FROM sys.indexes i, sys.objects o
WHERE  i.index_id NOT IN (SELECT s.index_id
       FROM sys.dm_db_index_usage_stats s
    WHERE s.object_id=i.object_id AND
    i.index_id=s.index_id AND
  database_id = db_id(@db) )
AND o.TYPE = 'U'
AND o.object_id = i.object_id
ORDER BY object_name(i.object_id) ASC

viernes, 13 de octubre de 2017

Como ligar Blogger, GoDaddy y Adsense para poner anuncios en tu blog.


Muchos de nosotros nos hemos preguntado cómo poner anuncios en nuestro blog para así poder generar un pequeño ingreso extra, de esta manera fue como lo logre.
Requisitos.
  • ·         Tener un blog con al menos 6 meses de creación, si no tiene los 6 meses no aparecerá la opción para agregar a Adsense.
  • ·         Tener una cuenta de Adsense, puede ser la misma que la de tu blog (Gmail)
  • ·         Comprar un dominio, en este caso adquirí mi dominio con GoDaddy.

Paso 1 Registrar y comprar el dominio.

Una vez comprado el dominio con GoDaddy nos llegara un correo en el cual nos dicen que nuestro dominio está listo:

Paso 2 Damos clik en el botón Manage My Domain

Iniciamos sesión con el usuario y contraseña con el que se registraron para comprar el dominio.

Paso 3. Agregar nueva configuración de nuevo dominio en Blogger

Entramos a nuestra cuenta de Blogger, damos click en Configuración y luego en Básico

Damos click en Configuración de dominios de terceros.
Pegamos el nombre de nuestro sitio comprado, nos mandara un error y se soluciona haciendo lo que comenta:
  En el sitio web del registrador de tu dominio, busca la configuración del Sistema de nombres de dominio (DNS) e ingresa los dos CNAME siguientes:
Campo Nombre, Etiqueta o Host
Campo Destino, Objetivo o Para
www
ghs.google.com
zpxxxxxmdg
gv-xxxxxxxxx.googlehosted.com

Paso 4 Registrar los CNAME en el administrador de nuestro sitio.

Regresamos a nuestro administrador de dominio godaddy.










Damos click en los 3 puntos y seleccionamos Administrar DNS









Nos aparecer una lista de registros, en la parte inferior damos click en agregar.



Damos click en agregar y seleccionamos en tipo CNAME


Ingresamos los dos registros que nos dice en blogger, damos click en guardar.

Paso 5 Configurar nuevo sitio en Blogger

Regresamos a Blogger  y volvemos a dar click en guardar  de la sección de Configuracion de dominios de terceros.


En esta ocasión ya nos dejara guardar el dominio.

 Paso 6 Agregar sitio a Adsense

 Ingresamos a Google Adsense, Damos click en Mis anuncios ->  Otros productos.
Nos pedirá poner la url del sitio a agregar





Damos click en guardar y continuar, nos dará un código para copiar a tu sitio.


Paso 7 Agregar código a Blogger

Para esta alturas tu blog ya se puede ver desde tu nuevo sitio.
Entramos a blogger en la opción Diseño y le damos Agregar un gadget.


Seleccionamos HTML/JavaScript


Se abrirá una ventana, Ponemos un titulo  y en contenido pegamos el código que copiamos de Adsense.
Damos click en guardar.

Paso 8 Confirmar en Adsense que ya pegaste el código en tu sitio.

Regresamos a Adsense damos click al check confirmando que ya pegaste el código en tu sitio.
Te aparecerá la siguiente ventana:



Me quede hasta este punto en teoría solo espero la revisión.
Los mantendré informado, espero les sirva a alguien.

Saludos.