martes, 30 de octubre de 2012

Seguidores en Facebook, Twitter, Google+ y LinkedIn

En diversas webs y sobretodo blogs habréis visto una sección de seguidores (también llamada followers / fanbox donde salen se muestran los seguidores de tu blog/web y es fácil convertirse en uno de ellos pulsando un simple botón. A continuación os detallo cómo añadir una sección seguidores según la red social de la que sean.

  • Seguidores en Facebook

    Este plugin lo facilita directamente facebook, es bastante sencillo, simplemente es añadir el siguiente código allá donde quieras añadir la sección:
    <div class="fb-like-box" data-href="http://www.facebook.com/areatic.net" data-width="300" data-height="260" data-show-faces="true" data-border-color="#eeeeee" data-stream="false" data-header="false"></div>
    
    El resultado sería el siguiente:



    En el caso anterior se muestran los seguidores de facebook de areaTIC.net; tan sólo es poner en el atributo "data-href" del tag "div" la URL de la página en facebook de tu blog/web; el botón "Me gusta" permite que se te añadan fácilmente nuevos seguidores. En la siguiente URL puedes encontrar más información para personalizar tu plugin de seguidores de facebook:

    Seguidores de facebook


  • Seguidores en Twitter

    Este plugin no es facilitado por twitter sino que son la gente de Mopz quienes lo han desarrollado. Debes añadir el siguiente código allá donde quieras añadir la sección:
    <iframe  frameborder="0" allowtransparency="true" src="http://s.moopz.com/connect.html?user=areaticnet" scrolling="no" style="width: 300px; height: 260px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial;"></iframe>
    
    El resultado sería el siguiente:


    En este caso se muestran los seguidores en twitter de areaTIC.net; tan sólo es poner en el nombre de tu usuario de twitter (areaticnet en el ejemplo anterior) en el parámetro "user" del atrituto "src" del tag "iframe"; el botón "Follow" permite que se te añadan fácilmente nuevos seguidores. Importante destacar que este plugin te muestra únicamente (independientemente de la medida) los últimos 10 seguidores que tengas de twitter.


  • Seguidores en Google+

    Plugin facilitado directamente Google, tan sólo debes añadir el siguiente código allá donde quieras añadir la sección (insignia según Google):
    <div class="g-plus" data-width="300" data-href="https://plus.google.com/108401239273540298179" data-rel="publisher"></div>
    
    El resultado sería el siguiente:


    En el caso anterior se muestra la insignia de Google+ para areaTIC.net; tan sólo es poner tu ID de usuario en la ruta del atributo "href" del tag "div" (108401239273540298179 en mi caso); el botón "Soy seguidor" permite que se te añadan fácilmente nuevos seguidores. En la siguiente URL puedes encontrar más información para personalizar tu plugin de seguidores de Google+:

    Seguidores de Google+


  • Seguidores en LinkedIn

    En este caso no disponemos de ningún plugin específico para añadir seguidores pero tenemos 2 opciones:

    1. Añadir un botón para acceder directamente a tu perfil, el código sería algo del estilo:
      <script src="//platform.linkedin.com/in.js" type="text/javascript"></script>
      <script type="IN/MemberProfile" data-id="http://www.linkedin.com/pub/david-berdi%C3%A9-escolano/9/241/3b0" data-format="inline"></script>
      
      El resultado sería el siguiente para mi perfil:



      Para saber cómo crear tu propio botón puedes acceder a esta página de LinkedIn donde puedes configurar la apariencia del plugin :

      Perfil en LinkedIn


    2. Seguramente lo que más nos interesaría es poder tener seguidores de un grupo que tengamos creado en LinkedIn pero tras buscar por los diferentes foros de desarrolladores de LinkedIn lo único que he encontrado es mucha gente interesada en este plugin y la siguiente respuesta por parte de LinkedIn: "We do not have a groups plugin at this time. The API is available, so you could build one yourself if you would like (or contract a developer to do so)", vamos que si lo quieres utiliza el API para desarrollarlo o contrata a alguien que te lo desarrolle. Así que os dejo el link del foro correspondiente por si hubiera novedades y de la API que se menciona, a ver si alguien se anima (que nos avise!!!), quizás yo lo haga algún día.

      Foro plugin grupos en LinkedIn
      API para grupos en LinkedIn


Os podéis preguntar, ¿por qué en areaTIC.net no encontamos estos plugins? Buena pregunta, la verdad que facilitan la incorporación de seguidores pero aumentan bastante el tiempo de carga de la página; en nuestro caso hemos priorizado una carga rápida a aumentar seguidores pero cada cuál que elija lo que más le convenga. Recordad también que dentro de areaTIC puedes encontrar otros artículos interesantes, no dudeis en consultar nuestro archivo.


viernes, 26 de octubre de 2012

ASP.global_asax The file 'XXX.aspx' does not exist at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)

Tenemos un site ASP.NET hospedado en IIS configurado con canalización clásica y si probamos a acceder a http://www.mydomain.com/paginaquenoexiste.aspx nos devuelve el error que más abajo detallamos :

Se podría dar el caso que recibamos el error en horas en las que sabemos que nadie está conectado. En este caso seguramente sea algún robot de google u otra compañia que intenta acceder a un recurso que tiene indexado. A parte de aplicar la solución que se explica en el artículo no estaría de más enviar un sitemap actualizado mediante las herramientas webmasters que nos proporcionan la mayoría de buscadores para que eliminen el rastro de páginas que ya no existen en sus indices de búsqueda.

ASP.global_asax The file 'XXX.aspx' does not exist at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
Origen: ASP.global_asax 
Message: The file 'XXX.aspx' does not exist. 
StackTrace: at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
Type: System.Web.HttpException 
TargetSite: Void CheckVirtualFileExists(System.Web.VirtualPath) 
Identity: SERVIDOR\IUSR_SERVIDOR
IIS si está configurado con canalización clásica no comprueba si la página existe sino que delega la petición a aspnet_isapi.dll. ASP.NET por defecto fuerza la ejecución de la página y se genera esta excepción.

La solución más rápida y sencilla es configurar el site desde IIS para que aspnet_isapi.dll compruebe si existe la página y en caso que no exista devuelva un 404 como resultado de la petición. Veamos como hacerlo:

Abrimos la consola de administración de IIS, accedemos a las propiedades del site, nos situamos en la pestaña "Directorio Particular" y pulsamos "Configuración".


En la siguiente pantalla seleccionamos la extensión correspondiente, en este caso ".aspx" y pulsamos "Modificar".


Finalmente en el siguiente formulario hemos de marcar la casilla "Comprobar si el archivo existe".


Hasta aquí el post de esta semana, os recordamos que podéis seguir areaTIC en las redes sociales o vía RSS!


martes, 23 de octubre de 2012

WCF - Problemas interoperabilidad con el nodo Wsa:Policy en WSDL

Hemos desarrollado un servicio WCF publicado en IIS que consumirán clientes de cualquier plataforma (principalmente java) y al configurar desde IIS que el servicio solo responderá a peticiones https los clientes java dejan de funcionar (asumimos que han modificado la URL http por https).

Sabemos que WCF se basa en el protocolo soap y que W3C define las reglas y estas van evolucionando. Actualmente la versión más reciente del estandar soap es la 1.2. En un mundo ideal cuando se plantea un proyecto de este tipo a nivel empresarial ambas partes responsables de cada plataforma deberían establecer el estandar por el que se regirán o si más no debería estar estipulado en algún tipo de documento. En el mundo real no siempre es así y se pueden dar situaciones de "imcompatibilidad" entre servicio y cliente. Este tipo de situaciones suele darse porque WCF se basa en el estándar soap 1.2 (W3C) pero el uso de herramientas tanto Java como Microsoft que se basan en soap 1.1 siguen estando bastante extendidas en estos momentos y depedendiendo del escenario es complicado determinar quien debería adaptarse a quien si no está especificado en la definición del proyecto. En este caso por lógica el servidor es 1 y los clientes son N por tanto es más eficiente hacer compatible WCF con soap 1.1 que no obligar a nuestros clientes a adaptarse a 1.2.

Nos alejamos del debate de quien sigue o no el estandar y nos centramos en como solucionar el problema que se plantea en el escenario inicial. Algunos clientes se quejan que hay un nodo más en el wsdl que su cliente 1.1 no entiende desde que hemos configurado el tráfico seguro en IIS, es el nodo Wsa:Policy. La versión 1.2 permite a través de este nodo definir en el documento wsdl que tipo de seguridad tiene configurada el servicio a nivel de transporte y mensaje por tanto al configurar https en IIS se añaden automáticamente los nodos correspondientes al wsdl.

Una solución es eliminar el nodo problemático, para ello es interesante saber que la clase del Framework que se encarga de generar el documento wsdl de nuestro servicio es WsdlExporter y que podemos suplantarla para manipular los nodos del documento wsdl que publicamos.

Veamos como hacerlo, en primer lugar crearemos una clase AreaTICWsdlExporter:
namespace areaTIC.WCF
{
    public class AreaTICWsdlExporter : WsdlExporter  
    {
        public override void ExportContract(ContractDescription contract)
        {
            base.ExportContract(contract);
        }

        public override void ExportEndpoint(ServiceEndpoint endpoint)
        {
            base.ExportEndpoint(endpoint);
        }

        public override MetadataSet GetGeneratedMetadata()
        {

            MetadataSet md = base.GetGeneratedMetadata();
            
            //adaptamos wsdl al formato que espera que el cliente java eliminando los nodos que están generando conflicto entre plataformas;

            System.Web.Services.Description.ServiceDescription sd = (System.Web.Services.Description.ServiceDescription)md.MetadataSections[0].Metadata;
            sd.Bindings[0].Extensions.RemoveAt(0);

            if (sd.Bindings.Count > 0)
            {
                if (sd.Bindings[0].Extensions.Count > 0)
                {
                    
                    SoapBinding ele = (SoapBinding)sd.Bindings[0].Extensions[0];
                    ele.Style = SoapBindingStyle.Document;

                    ServiceDescriptionCollection a = base.GeneratedWsdlDocuments;
                    a[0].Extensions.RemoveAt(0);
                }
            }

            return md;
        }
    }
}
El siguiente paso será suplantar WsdlExporter en el servicio conflictivo para ello necesitaremos tener control de la instancia ServiceHost de nuestro servicio. En este artículo explica como controlar la instacia de ServiceHost en IIS usando ServiceHostFactory. Una vez tengamos configurado ServiceHostFactory tendremos que añadir en el método CreateServiceHost el código para suplantar WsdlExporter por el nuestro personalizado.
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
   switch (serviceType.Name)
   {
       case "ServicioConflictivo":
            ServiceMetadataBehavior smb = customServiceHost.Description.Behaviors.Find();
                    smb.MetadataExporter = new DgestWsdlExporter();
       break;
   }
}
Hasta aquí el artículo, si tenéis alguna duda o queréis hacer algún comentario no os cortéis. También podéis seguir areaTIC en las redes sociales, esperamos os haya sido útil.


viernes, 19 de octubre de 2012

No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación...

Al realizar una consulta sobre SQL Server podemos encontrarnos con el error "No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación del valor no está resuelta a causa de un conflicto de intercalación"; esto se debe a que estamos operando con columnas con diferente intercalación. Veamos algunos ejemplos de consultas que pueden originar este mensaje, supongamos que las columnas "c1" y "c2" tienen distinta intercalación, obtendremos el mensaje "No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación..." anteriormente mencionado en consultas del estilo:
-- Uso de UNION ALL...
SELECT t1.c1 AS c 
FROM t1
UNION ALL
SELECT t2.c2 AS c 
FROM t2

-- Uso de JOINs...
SELECT t1.c1 
FROM t1 
LEFT JOIN t2 on (t1.c1 = t2.c2)

-- Operaciones con columnas, por ejemplo, concatenación...
SELECT t1.c1 + ' ' + t2.c2
FROM t1
LEFT JOIN t2 on (t1.c3 = t2.c3)

-- ...
Bien, ¿y cómo solucionamos el problema? Principalmente encontramos 2 opciones:
  1. Cambiar la intercalación a 1 de las columnas siempre y cuando sea posible: nuestro usario de SQL Server tiene los permisos adecuados y el cambio no supone una pérdida de datos (el caso, por ejemplo, de 2 columnas con diferente intercalación porque guardan información en distintos idiomas). Podemos cambiar la intercalación de una columna con la consulta:
    -- Cambiar intercalación base una columna
    ALTER TABLE t1
    ALTER COLUMN c1 tipo_columna_c1 COLLATE intercalacion_columna_c2
    GO
    
  2. Especificar la intercalación en la consulta sin modificarla en las columnas. Volviendo a uno de los ejemplos iniciales, especificando la intercalación tendríamos:
    -- Uso de UNION ALL...
    SELECT t1.c1 COLLATE intercalacion_columna_c2 AS c 
    FROM t1
    UNION ALL
    SELECT t2.c2 AS c
    FROM t2
    
Relacionado con este tema os recomiendo que consultéis la entrada Búsquedas con acentos en SQL Server ya que encontraréis información al respecto. Recordad también que dentro de areaTIC puedes encontrar otros artículos interesantes, no dudes en consultar nuestro archivo.


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

martes, 16 de octubre de 2012

Ocultar barra superior en Blogger

Cuando creas un blog en Blogger de lo primero en que piensas es en quitar la barra superior que aparece, al menos eso pensé yo y es lo que hice en este blog.


Os explicaré en dos sencillos pasos cómo quitar la barra superior en Blogger.
  1. Entramos en Blogger, vamos al apartado Plantilla y pulsamos sobre el botón "Edición de HTML".


  2. Buscamos dentro del HTML de la plantilla el código:
    ]]></b:skin>
    
  3. Justo encima del código anterior añadimos el código siguiente para quitar la barra superior en Blogger:
    #navbar-iframe { height:0px; display:none; visibility:hidden; }
    
    Básicamente, lo que estamos haciendo es poner altura 0 al estilo que se le aplica a la barra. Quedará así el código, tras los cambios guardamos la plantilla.

Listo, si recargas el blog ya no aparecerá la barra superior de Blogger. Espero que os sea útil este artículo, dentro de areaTIC puedes encontrar otros artículos interesantes, no dudes en consultar nuestro archivo.


viernes, 12 de octubre de 2012

WCF - ServiceHostFactory en IIS - ServiceHost

WCF permite hospedar los servicios en IIS y a su vez nos ofrece la alternativa de autohospedar servicios en aplicaciones de consola, windows forms o incluso hospedarlo en un servicio windows.

En caso que hayamos optado por la opción IIS, en este tipo de aplicaciones generalmente no tenemos el control de la clase ServiceHost y por tanto si queremos modificar algún comportamiento del endpoint o customizar algún aspecto del servicio nos vemos obligados a hacerlo vía web.config.

En este post veremos como usar ServiceHostFactory para tomar el control en runtime de la clase ServiceHost cuando IIS arranca el servicio, de este modo podremos controlar la instancia de ServiceHost en tiempo de ejecución.

En primer lugar crearemos una clase areaTICHostFactory la cual haremos que herede de ServiceHostFactory y suplantaremos el método CreateServiceHost:
namespace areaTIC
{
   public class areaTICHostFactory : ServiceHostFactory
   {
      protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
      {
         ServiceHost areaTICHost = base.CreateServiceHost(serviceType, baseAddresses);
      }
    }
}

Una vez tenemos el control de la instancia de ServiceHost podríamos controlar prácticamente cualquier aspecto de nuestro servicio WCF en tiempo de ejecución.

Por último hemos de añadir el siguiente atributo al marcado (markup) del archivo .svc correspondiente al servicio:
<%@ ServiceHost Language="C#" Debug="true" Service="areaTIC.ServicioEjemplo" CodeBehind="ServicioEjemplo.svc.cs" Factory="areaTIC.areaTICHostFactory" %>
Hasta aquí el artículo, más y mejor la semana que viene en areaTIC no dudéis en consultar el archivo tal vez haya algún post que os pueda interesar!


martes, 9 de octubre de 2012

Consejos para elegir dominio pensando en SEO

Al crear una página web una de las primeras decisiones que hemos de tomar es la elección del dominio correspondiente, dicha decisión adquiere mayor importancia cuando uno de los objetivos es optimizar la web para SEO. Es en ese punto donde este artículo os dará ciertos consejos para elegir adecuadamente un dominio y poder aplicar SEO sin encontrarnos ya de entrada ciertas dificultades.

Es recomendable que la/s palabra/s clave con las que deseamos posicionarnos formen parte del dominio pero antes de elegirlas es conveniente analizar la competencia. A continuación se muestran algunas recomendaciones a tener en cuenta.

  • Páginas con la/s palabra/s clave en el título y en la URL.

    Todas las páginas que tengan la/s palabra/s clave en la etiqueta title o en la URL son posibles competidoras; con los comandos de Google "allintitle:palabra" y "allinurl:palabra" podemos obtener el número, cuanto menos mejor, menor competencia.

  • Páginas con enlaces externos entrantes con la/s palabra/s clave.

    El número y calidad de los enlaces con anchor que contengan la/s palabra/s clave a posicionar es un factor importante, debemos saber el número de páginas que compiten en este aspecto con nosotros. Con el comando de Google "allinanchor:palabra" podemos obtener el número, como en el caso anterior cuanto menos mejor, menor competencia.

  • Páginas con la/s palabra/s clave en el dominio.

    Tener incluido en el dominio la/s palabra/s clave es un factor muy importante para SEO. Por tanto, es importante evaluar para la/s palabra/s clave las webs de la primera página de resultados de búsqueda, serán nuestra competencia directa por los primeros puestos.

  • En los resultados de búsqueda de la palabra clave, ¿aparece Wikipedia en el primer puesto de los resultados?

    Si es así más vale que busquemos otra/s palabra/s clave o que nos resignemos a no conseguir la primera posición en los resultados de búsqueda ya que Wikipedia está fuertemente optimizada para SEO, tiene un elevado pagerank y difícilmente la vamos a desbancar de la primera posición.

  • En los resultados de búsqueda de la/s palabra/s clave, ¿cuál es el pagerank de las primeras páginas?

    Si en la primera página de los resultados de búsqueda para nuestra/s palabra/s clave aparecen páginas con pagerank mayor que 4 es que estamos trabajando con una/s palabra/s con gran competencia y va a costar posicionarnos por encima de éstas. Si es viable mejor buscar palabra/s alternativas.

  • En los resultados de búsqueda de la/s palabra/s clave, ¿cuál es la antigüedad del dominio de las primeras páginas?

    Otro factor importante en es la antigüedad del dominio; como en los casos anteriores, si en la primera página de resultados hay páginas con mucha más antigüedad que la nuestra tendremos un trabajo importante para conseguir posicionarnos. Dominios de antigüedad igual o inferior al nuestro implican a priori menor competencia.

  • ¿Dominio nuevo o domino de "segunda mano"?

    El concepto dominio nuevo está claro, buscas un dominio disponible, lo compras y listo, tiene un bonito pagerank de 0 y toca trabajar para llevarlo a algún sitio... otra opción es comprar un dominio caducado que tenga un cierto pagerank (por supuesto cuanto más mejor) y ese trabajo que te evitas. Pero te preguntarás, ¿y eso cómo lo hago? Bueno, eso será otro artículo, si hay peticiones suficientes me dedicaré a explicarlo.

Con los puntos anteriores y las diferentes posibilidades de palabra/s clave podemos crear un cuadro y escoger aquella/s palabra/s donde sea menor la competencia, nuestro trabajo de aplicar SEO será más sencillo; el dominio haremos que incluya la/s palabra/s seleccionada/s. Espero que os sea útil este artículo, dentro de areaTIC puedes encontrar otros artículos interesantes, consulta nuestro archivo.


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

viernes, 5 de octubre de 2012

SQLite y otras técnicas de almacenamiento Javascript, HTML web Storage, Indexed Database API

Tiempo atrás cuando un desarrollador quería almacenar cierta información en cliente en ámbito HTML usaba las famosas cookies. Este sistema aún se sigue usando aunque a día de hoy han surgido alternativas como SQLite, WebStorage o Indexed Database que permiten al desarrollador trabajar con información almacenada en cliente de forma más óptima.

Si consultamos W3C veremos que trabajan en dos estándar para unificar criterios sobre almacenamiento y también existe una tercera definición que dejaron de mantener en noviembre del 2010: Conceptualmente las dos primeras son muy similares ya que se basan en el uso de colecciones indexadas (clave/valor) que permiten almacenar objetos y establecer una jerarquía sobre dichos objetos. Esta técnica mejora las cookies pero distan mucho de una base de datos relacional.

La tercera especificación (SQLite) la abandonaron en Noviembre del 2010 debido a que los fabricantes estaban de acuerdo en el uso de una librería de dominio público desarrollada en C, por tanto el trabajo de W3C dejó de tener sentido.

SQLite es la técnica de almacenamiento HTML en cliente más parecida a una base de datos relacional ya que nos permite usar código SQL estándar. De esta forma podemos crear base de datos compatibles que podríamos llegar a importar/exportar entre SQLite y otras plataformas del mercado. También soporta conexiones concurrentes y definir niveles de aislamiento (ACID) así que podría usarse en una aplicación servidor (lo descartaría en escenarios donde se manejan grandes volúmenes de información y conexiones concurrentes). SQLite nos ofrece las funcionalidades típicas a las que estamos acostumbrados (triggers, transacciones, pk, fk,…) para más información recomiendo visitar su página oficial.

A día de hoy usando Javascript podemos trabajar contra una base de datos SQLite sin necesidad de instalar ningún plugin ni librerías de terceros, la he usado estos días y funciona perfectamente sobre Windows-Chrome y Android. La contra es que Internet Explorer no soporta SQLite. Microsoft parece que apuesta por SQL Server Compact para entornos de este tipo, aun así hay quien prefiere evitar una instalación cliente y trabajar con la librería SQLite desde código .NET. También hay quien ha desarrollado librerías cliente en java para SQLite lo cual es síntoma que su uso está bastante extendido.

Opino que un buen escenario para usar SQLite son las Smart App aunque matizando un poco. Muchas aplicaciones móviles acceden a datos en servidor usando REST/JSON, esto hace que la gestión de datos la haga un Oracle, MySQL, SQLServer o lo que sea que tengamos detrás del servicio al que llamamos. Ok, pero podría darse el caso que queramos que la información esté disponible sin conexión a internet o que directamente cada dispositivo mantenga su propia base de datos local sin necesidad de implementar una parte servidor. Chrome y Mozilla incorporan SQLite, así que dispositivos móviles Android y Iphone soportan este tipo de almacenamiento por defecto.

A continuación muestro algunas alternativas para administrar las bases de datos fuera del ámbito de aplicación:
  • Chrome permite administrar las bases de datos desde linea de comando.
  • Firefox permite incorporar modo de plug-in SQLiteManager, que proporciona una interficie para administrar las bases de datos.
  • En la página oficial de SQLite, podemos descargar gestores para entornos windows y mac.
Espero te haya resultado útil la información, puedes seguir areaTIC en la redes sociales y/o RSS para recibir avisos sobre artículos que podrían interesante!