martes, 1 de septiembre de 2015

Fijar el tamaño de un vector ó matriz dinámicamente por teclado en C++

Cuando necesitamos usar un arreglo de elementos, lo que normalmente se hace es declararlo, con un número fijo de elementos, por ejemplo:
int v[ 3 ];  

Con esto hemos declarado un vector de enteros con 3 elementos, y accedemos a los respectivos valores mediante: v[0], v[1] y v[2]

Pero el inconveniente surge cuando no sabemos de antenamo, el número de elementos, pueden darse 2 casos:

1. Si declaramos por ejemplo un arreglo de 3 elementos pero usamos sólo un número menor, por ejemplo 2. La mayoría trabaja así y puede ser válido cuando trabajamos con arreglos de pocos elementos, pero si nuestro arreglo tiene unos 1000 elementos, obviamente estamos desperdiciando memoria.
2. El otro caso, es cuando el arreglo es de 3 elementos y necesitamos usar 4, otro problema.

La solución a esto es declarar un arreglo o puntero y asignar dinámicamente la memoria para los elementos adecuados, pero como hacemos esto??

Primero hacemos referencia a la librería malloc.h con la línea:

#include <malloc.h> 

Y ahora si, fíjense en el siguiente código:


int elementos = 5;int *v = NULL;
    
v = (int *)malloc(sizeof(int)*elementos); 

Dinámicamente asignamos memoria para 5 enteros, el valor de la variable elementos puede ser leída de teclado.

Ahora si tenemos una matriz nuestro código sería algo como:
int **m = NULL;int filas = 5;int columnas = 2;int i;
    
m = (int **)malloc(sizeof(int)*filas);
for(
i=0; i < filas; i++) m[ i ]=(int *)malloc(sizeof(int)*columnas); 



Ahora, que sucede si luego queremos cambiar las dimensiones del vector o la matriz, pero sin perder la informacion que ya tenemos ?

Simplemente tenemos que reasignar la memoria, usando la función realloc.

Esta funcion reasigna la memoria que tenemos, es decir cambia las dimensiones de nuestra variable, pero sin perder la información previa.

Para el caso de nuestro vector, supongamos que ahora queremos agregar 2 elementos más, es decir tenemos un total de 7 elementos, lo que haríamos es lo siguiente:
elementos = 7;
    
v = (int *)realloc(v, sizeof(int)*elementos); 

Y para la matriz, digamos que queremos tener 100 filas y 50 columnas, lo que haremos es:

filas = 100;columnas = 50;m = (int **)realloc(m, sizeof(int)*filas); 
for(
i=0; i < filas; i++) m[ i ]=(int *)realloc( m[ i ], sizeof(int)*columnas); 

Con esto conseguimos manejar de forma optima la memoria y declaramos solo lo que vamos a usar.



Ahora, si tenemos por ejemplo una estructura como la siguiente:
struct Estructura{
   
string palabra;
   
int cant_docs;
}; 


Si no sabemos de antenamo cuantos elementos necesitamos, podemos vernos tentados a declarar un numero muy grande de elementos tal como:
struct Estructura indice[2000000]; 

Es decir estamos declarando de inicio 2 millones de elementos, es probable que ni siquiera llegemos a usarlos todos, con los problema de memoria que puede traer esto.

Podemos usar la librería estándar de plantillas de C++ (STL), en concreto la llamada <vector> la cual permite tener un vector de tamaño variable, fíjense en el siguiente código:

Código:
#include <vector>
#include <string>
#include <cstdlib>
#include <iostream>

using namespace std;

struct Estructura{
   string palabra;
   int cant_docs;
};

vector<Estructura>indice;

void Insert(const Estructura& e)
{
 indice.push_back(e);
}

void Delete(int i)
{
 if(i>=0)
  indice.erase(indice.begin()+i);
}

void Resize(int iMax)
{
 indice.resize(indice.size()+iMax);
}

void Show(int i)
{
 if(i>=0){
  cout << indice[ i ].palabra.c_str() << endl;
  cout << indice[ i ].cant_docs << endl;
 }
}

int main()
{
 Estructura e;

 e.palabra="palabra1";
 e.cant_docs=1;
 Insert(e);
 
 e.palabra="palabra2";
 e.cant_docs=2;
 Insert(e);
 
 cout << "\nSize: " << indice.size() << endl;
 cout << endl;
 for(int i=0; i< indice.size(); i++)
  Show(i);

 //Incrematamos el tamaño del vector
 Resize(10);
 cout << "\nSize: " << indice.size() << endl;
 
 system("pause");
 return 0;
}

Una vez más usamos sólo la cantidad de memoria adecuada, lo que hace a nuestro programa mucho más eficiente.

También se puede utilizar las plantillas que ofrece C++, como son <stack> -> pilas, <queue> -> colas o <list> -> listas

Para esto necesitaremos un compilador que soporte la librería estándar de plantillas como el Dev-C++
 

lunes, 21 de julio de 2014

Renovar la direccion IP con un fichero batch (.bat)

1º) Abrir un Bloq de notas en la siguiente direccion:

Start > Run > notepad (Enter)
Inicio > Ejecutar > notepad (Enter)
Win + R > notepad (Enter)

2º) En el bloq de notas (Notepad) escribir lo siguiente:
echo off 
cls 
ipconfig /release 
ipconfig /renew 
ipconfig /registerdns 
exit

3º) Guardar el archivo como RenovarIP.bat o RenewIP.bat y en la extension del archivo seleccionar "todos los archivos" en vez de TXT para que el archivo se guarde con la extension .bat

Comandos SSH Shell frecuentes

A continuación facilito un listado de los comandos SSH que se usan con más frecuencia. Los comandos se encuentran organizados por tema e incluyen una descripción breve para comprender como usarlos.

Comandos de navegación



  • pwd muestra el path completo del directorio en el que se encuentra
  • cd cambia de directorio, por ejemplo cd directorio/subdirectorio
  • cd ~ lleva a su directorio home
  • cd - lleva al último directorio en el que estuvo
  • cd .. sube a un directorio superior

  • Listado de archivos



  • ls lista archivos y directorios de un directorio
  • ls -al lista archivos y directorios e información sobre los mismos
  • ls -aR lista archivos e información incluyendo todos los subdirectorios
  • ls -aR | more lista archivos e información incluyendo todos los subdirectorios por pantallas
  • ls -alR > resultado.txt lista archivos e información de subdirectorios y lo guarda en un archivo
  • cat resultado.txt mostraría en pantalla el contenido del archivo
  • ls *.html lista todos los archivos acabados en .html
  • ls -al directorio/subdirectorio/ lista archivos e información de ese subdirectorio


  • Crear, editar o eliminar archivos y directorios



  • pico /home/usuario/public_html/index.html edita el archivo index.html con el editor pico
  • touch /home/usuario/public_html/404.html crea el archivo vacio 404.html en ese directorio
  • rm archivo.txt elimina archivo.txt
  • rm -rf directorio/ ¡CUIDADO! elimina el directorio indicado, los subdirectorios y todos sus archivos
  • mkdir descargas Crea un directorio llamado descargas
  • rmdir descargas Elimina el directorio llamado descargas


  • Compresión y descompresión de archivos



  • zip archivo.zip /home/usuario/public_html/directorio Comprimir directorio
  • unzip archivo.zip Descomprimir archivo.zip
  • unzip -v archivo.zip Ver contenido de archivo.zip


  • Copiar archivos o directorios

    Copiar un archivo
    • cp -a archivo.zip archivocopia.zip
    Clonar un un directorio
    Supongamos que queremos duplicar el directorio /home/usuario/public_html/img y todo su contenido.
    • cd /home/usuario/public_html
    • cp -a img imgcopia
    Accedemos al directorio public_html y duplicamos el directorio img y todo su contenido manteniendo sus respectivos permisos en un nuevo directorio llamado imgcopia. Es importande destacar que la duplicación funcionará como esperamos si el directorio imgcopia no existe. Si estuviera creado con anterioridad, se crearía un directorio llamado img dentro del directorio imgcopia.
    Copiar todo el contenido de un directorio en otro directorio que ya existe
    • cp -a img/* imgcopia
    Partiendo del ejemplo anterior el comando copiará todo el contenido del directorio img en el directorio imgcopia. Si en el proceso de copia el directorio de origen contiene archivos que ya existen en el directorio de destino, se solicitará confirmación para sobreescribirlo. Para que el sistema no pregunte antes de sobreescribir un archivo existente añade la opción -f.
    • cp -af img/* imgcopia
    Cabe la posibilidad de que exista un alias para el comando cp para que por defecto se ejecute con la opción -i (preguntar antes de sobreescribir, alias cp='cp -i') y el comando -f no surta efecto. En ese caso puedes omitir temporalmente el alias añadiendo una contrabarra o backslash \ antes del comando.
    • \cp -af img/* imgcopia

    Otros comandos SSH

    • du -sh muestra es espacio total ocupado por el directorio en el que se encuentra
    • du -sh * muestra el espacio ocupado de cada archivo y directorio


  • lynx marca.com usar el navegador Lynx para acceder a www.marca.com
  • whoami muestra su nombre de usuario
  • viernes, 15 de febrero de 2013

    Responsive Web Design

    Hubo un tiempo en el que nuestros monitores de tubo de 14 pulgadas y nuestras todavía precarias tarjetas gráficas nos permitían disfrutar de resoluciones ahora discretas, como aquellos 800 x 600 px habituales que tardaron bastante tiempo en ser superados a medida que el hardware avanzaba y los usuarios tenían acceso a una tecnología mejor. Por aquel entonces, en plena ebullición de la red, con Flash asomando la cabeza, parecía óptimo diseñar webs teniendo en cuenta ese ancho máximo de 800 píxels, intentando que ningún usuario se encontrase con situaciones incómodas, como intentar acceder a contenidos que quedasen fuera del alcance de su pantalla o enfrentarse a sistemas de navegación prácticamente inservibles.

    Con la llegada de monitores planos y la mejora paulatina del hardware, nuevos estándares ganaron terreno y algunas compañías empezaron a arriesgarse, tomando como base unos 1024 px de ancho total que se convirtieron en el ‘nuevo límite’ del diseño web. Fruto de ello surgieron sistemas modulares basados en la reticulación de un área de 960 px, pensados para aprovechar al máximo el espacio disponible, al tiempo que fragmentábamos de forma eficiente un columnado flexible sobre el que ubicar cada elemento del diseño.
    Superada la primera década del siglo, nos encontramos en un momento en el que prácticamente cualquier usuario puede permitirse comprar un equipo de aceptable calidad a precios razonables, con pantallas que oscilan entre las 10 pulgadas de portátiles compactos y las 30 de monitores de gran calidad, con un rango de resoluciones excepcionalmente amplio. A ello, debemos añadir todo un nuevo océano de usuarios que aprenden a utilizar la red desde sus móviles mientras personas mayores sin contacto previo con la tecnología, encuentran el uso de un tablet sencillo y próximo y los niños disfrutan accediendo a contenidos desde cualquiera de las plataformas comentadas de forma indiscriminada.

    Así que es lógico preguntarse: ¿cuál es el nuevo estándar? ¿Qué resolución debemos tener en cuenta a la hora de plantear un nuevo diseño para un cliente? ¿Es posible seguir teniendo en cuenta aquellos 1024 px casi legendarios y asegurarnos de que los usuarios menos actualizados en términos de hardware/software puedan seguir accediendo a nuestros contenidos? Lo es, siempre que tengamos en cuenta que será un planteamiento poco usable en un teléfono móvil y visualmente algo anticuado para grandes monitores y altas resoluciones como las cercanas a los 3.000 px de ancho que determinados equipos pueden ofrecer a día de hoy.
    Así que la respuesta es que ya no existe un estándar acotado. Los formatos fijos y el diseño estático han pasado a mejor vida y la actualidad pasa por ofrecer una buena experiencia de uso, independientemente del dispositivo que utilicemos para acceder al contenido. En base a este punto de partida y al avance técnico en lo relativo a CSS y Html, Ethan Marcotte acuñó el término ‘Responsive Web Design’ para referirse a un diseño sensible al entorno en el que se muestra. El perfil profesional del propio Marcotte hizo que su discurso se basase en sistemas reticulares fluidos y otros recursos similares, pero la intención de este post no es profundizar en aspectos técnicos, sino explicar la idea esencial de esta necesaria realidad del diseño web actual.
    No hay forma más sencilla de explicar este concepto que probándolo de forma directa. Trata de acceder al delicioso site Food Sense. Expande la ventana de tu navegador tanto como te sea posible en tu monitor y después ve acortando el ancho de la misma paulatinamente. Comprobarás como el diseño se readapta en base a varios estados que coinciden con resoluciones concretas. En ocasiones, los cambios se limitan a reducciones en el cuerpo de letra o el ancho del columnado, mientras que en otras, la disposición de los elementos de navegación y otros módulos se reposicionan de forma calculada.
    Trata de hacer lo mismo usando tu tablet e intenta visualizar el site tanto en formato vertical como horizontal. La diferencia de resolución entre ambos anchos (1024 vs 768 px, p.e.) dará como resultado un diseño ligeramente distinto pero, y ahí radica lo importante, la experiencia seguirá siendo la apropiada y las diferencias en términos visuales, prácticamente inapreciables para usuarios poco preocupados por estos temas. Si accedes al site usando tu smartphone, verás que el contenido se reconstruye con un formato que permite que la información sea igualmente accesible pero adaptada, para una legibilidad adecuada a las escasas dimensiones de la pantalla.

    Hace dos años que Marcotte explicó de forma esclarecedora en su artículo original de A List Apart la problemática del “multi-plataformismo” derivado del acceso a la red mediante dispositivos tan diversos como los mencionados smartphones o tablets, o incluso videoconsolas, en ocasiones haciendo uso de navegadores muy diversos. Determinados clientes empezaron a solicitar versiones específicas para iPhone de sus respectivos sites, en ocasiones encontrando soluciones parciales como el destierro de dichas versiones a subdominios. Así que el diseño sensible o adaptable parece una solución adecuada que llega para quedarse, independientemente de los avances técnicos que mejoren su aplicación a futuros formatos.

    Consideraciones

    Lógicamente, desarrollar un site adaptado a las necesidades actuales requiere más tiempo que plantear uno limitado a una maqueta fija. Si bien existen recursos a nivel de desarrollo web que pueden acelerar mucho el proceso de implementación, las decisiones que se tomen en cuestión de diseño no son triviales y siguen estando en manos de personas, por lo que las variaciones que puedan existir en términos de proporciones o disposición de elementos deben ser consideradas y estudiadas de antemano.
    Esto puede generar una planificación más abultada de lo esperado para aquellos que estén acostumbrados al acelerado desarrollo web habitual, pero teniendo en cuenta las tendencias actuales en cuanto al acceso a internet a través de teléfonos y otros dispositivos portables, parece sabio invertir tiempo y dinero en un diseño que:
    1. Asegure el funcionamiento del site en cualquier situación.
    2. No implique el desarrollo paralelo de versiones adicionales que convivan entre sí.
    3. Dote a nuestra web de una vida útil considerablemente más larga.
    4. Mejore la percepción del usuario sobre nuestro trabajo.

    La posición del diseñador

    Como diseñador de formación, doy fe de que un profesional del diseño gráfico, especialmente si proviene de un ámbito más cercano a la gráfica impresa en toda su extensión, se sentirá especialmente incómodo al tener que plantear un esquema de este tipo. Ser conscientes de que es complicado controlar en cada momento la forma exacta en la que un usuario visualiza un determinado contenido incomoda sobremanera al diseñador (en este sentido, los desarrolladores tienen una visión mucho más práctica).
    A los omnipresentes problemas con las interpretaciones entre navegadores, se le suma ahora el hecho de pensar en un diseño totalmente flexible, por lo que el interés o el reto en cada proyecto recae en aspectos distintos. La importancia del elemento que se encuentra perfectamente alineado en unas coordenadas determinadas se transforma en un interés creciente por sistemas modulares avanzados, sin dejar de lado, claro está, todo su criterio tipográfico y compositivo. Los límites del papel nunca tuvieron sentido en el diseño web.

    Buenas prácticas

    A estas alturas, son muchos los ejemplos que podemos encontrar en la red y que demuestren las bondades de lo que formalmente podemos llamar Responsive Design. Bastarán algunas búsquedas en Google para encontrar acertadas recopilaciones de enlaces de interés en lo que se refiere al tema que nos ocupa. Sin embargo, nosotros también tenemos nuestros favoritos, que en esta ocasión limitaremos a tres para dejar que descubras por ti mismo muchos otros ejemplos, cada vez más presentes en la actualidad web:

    Edenspiekermann
    1. Edenspiekermann
    El último proyecto empresarial del respetado diseñador Erik Spiekermann, con presencia en Alemania y Holanda. Su propio website es un fantástico (y temprano) ejemplo de su buen hacer y de la aplicación del concepto de Responsive Design. Méritos técnicos y gráficos a parte, su web es totalmente fiel a su filosofía general e incluso la redacción de sus artículos y manifiestos denota carácter.

    Teehan/Lax
    2. Teehan/Lax
    Unos pioneros del Responsive Design y un equipo realmente respetado en los últimos años. Sus artículos dejan claro su enorme bagaje técnico y gráfico, pero además ofrecen muchos ejemplos sobre cómo poner dicho conocimiento al servicio de una estrategia sólida. Sus secciones Labs y Downloads son sumamente interesantes y demuestran su generosidad hacia la comunidad.

    Smartbox
    3. Sparkbox
    Una empresa que, precisamente, vende Responsive Design. Llaman SmartSites a este tipo de producto y toda su web es un manifiesto a favor del diseño adaptable. Como no podía ser de otra forma, su site es un gran ejemplo de lo que venden.
    —
    Para aquellos interesados en el tema, especialmente desde un punto de vista técnico, tal vez sea inteligente recurrir al excelente libro escrito por el propio Marcotte y editado por A List Apart / A Book Apart como libro impreso o electrónico: Responsive Web Design, de Ethan Marcotte.

    miércoles, 19 de diciembre de 2012

    Cómo poner publicidad con Twitter Ads

    ¿Sabes cómo poner publicidad en Twitter? Twitter Ads, la plataforma publicitaria del pajarito azul no está al alcance de todos (como veremos posteriormente por su coste). Pero además tiene otro problema añadido: no todo el mundo es capaz de sintetizar en tan sólo 140 caracteres un mensaje que además de informar sea capaz de vender... ¿Sabes hacerlo?
    En el fondo la clave del éxito en Twitter Ads es saber conectar con tu público objetivo... Por ello en este post vamos a ver cómo hacer publicidad en Twitter.
    Decisiones a la hora de hacer Publicidad en Twitter.
    Ya hemos decidido lanzarnos a la piscina y queremos hacer publicidad en Twitter. Antes de meterte en Twitter Ads tienes que tomar tres decisiones básicas:
    ·         ¿Qué formato publicitario quieres? Lo veremos a continuación pero hoy por hoy existen tres formatos publicitarios en Twitter: Tweet promocionado, cuenta promocionada o tendencia promocionada.
    ·         ¿Cuánto tenías pensado gastarte? Como comentábamos al principio de este artículo hacer publicidad en Twitter no está al alcance de todos los bolsillos. Se requiere una inversión mínima de 5000€ anuales, suficiente para alejar Twitter Ads de muchas pequeñas empresas.
    ·         ¿Has pensado ya cuándo vas a lanzar la campaña? Es necesario cierta anticipación: como mínimo pasará una semana desde tu petición de contratación hasta que realmente puedas hacer publicidad en Twitter. Deberás contar con este intervalo de tiempo.

    Primer formato de Publicidad en Twitter: Los Tweets Promocionados.
    Los tweets promocionados (o promoted tweets) únicamente promocionan un tweet concreto. ¿Para cuándo usaremos este formato? Los tweets promocionados son muy útiles para difundir mensajes específicos o para promover una oferta concreta. Podrás segmentar el público objetivo al que vas a lanzar tu tweet promocionado para optimizar los resultados. Sólo pagarás cuando el usuario haga click o cuando interactúe con el mensaje (retweet etc.).
    Segundo formato Publicitario de Twitter: Las Cuentas Promocionadas:
    Twitter "sugerirá" las cuentas promocionadas en función de los intereses de los usuarios. Por ejemplo si Twitter detecta que te interesan las motos te propondrá cuentas de empresas de motos pero si, por el contrario, piensa que estas interesado en las redes sociales te propondrá empresas dedicadas al social media.

    Tercer formato de Twitter Ads:  Las tendencias promocionadas.
    Las tendencias promocionadas (o promoted trends) son ideales para crear temas de conversación masivos. ¿El objetivo de tu publicidad en Twitter es hacer branding? ¿O quieres promocionar un evento concreto? Para estos casos tu elección debería ser lanzar una tendencia promocionada.

    Optimiza tu mensaje en Twitter.
    Hacer publicidad en Twitter tiene su dificultad. A la limitación propia del canal (140 caracteres) tenemos que añadir que los usuarios estamos ya totalmente saturados de campañas publicitarias. Entonces... ¿Cómo tiene que ser nuestra publicidad en Twitter?
    El atractivo del mensaje es clave. En Twitter no estamos para ver a cuánto sale el kilogramo de tu producto. Tendrás que trabajártelo un poco más. En tan sólo 140 caracteres tienes que lograr captar nuestra atención... ¿Cómo puedes hacerlo? Jugando con las emociones: el suspense, el humor e incluso la lástima pueden serte de gran ayuda a la hora de hacer publicidad en Twitter.
    La originalidad es otro de los pilares básicos de la publicidad en Twitter: Estamos ya saturados de publicidad así que... ¿Qué es lo único que llama nuestra atención? Ni más ni menos que aquello que rompe todos los esquemas.
    También prima la sencillez: No crees anuncios en Twitter complicados o cargados de tecnicismos. Los usuarios de Twitter no son expertos de tu sector y si no entienden lo que les quieres decir jamás harán click en tu anuncio.
    Intenta transmitir sensación de urgencia para lograr el click. Si transmites que el número de unidades está próximo a agotarse o que una oferta concreta va a caducar conseguirás un mensaje más atractivo.
    Tu publicidad en Twitter tiene que aportar valor al usuario. En otras palabras, si quieres promocionar un gimnasio en Santander en Twitter deberías centrarte en el público al que le pueda interesar. ¿Mandarías tu anuncio a un tío de Cuenca? Si lo haces estarás tirando tu tiempo y tu dinero. Gracias a Twitter puedes segmentar tu público objetivo y mandar el mensaje sólo a jóvenes santanderinos.

    ¡Incluye una llamada a la acción! Los seres humanos somos muy influenciables y por triste que resulte leerlo muchas veces el que hagamos click dependerá únicamente de que nos lo pidas... Así que guarda siempre unos cuantos caracteres para meter una llamada a la acción.

    martes, 23 de octubre de 2012

    Principales novedades de Windows 8

    Esta versión está pensada para correr sobre procesadores X86 (Intel y AMD), ordenadores convencionales y tabletas más potentes -pero también por lo general más pesadas y con peor autonomía.
    Por defecto Windows 8 se presenta con la nueva interfaz gráfica anteriormente conocida como “Metro” -Microsoft abandonó el nombre por problemas de registro hace unos meses y ahora la denomina ModernUI-. Es compatible con las aplicaciones descargadas de Windows Marketplace y puede usarse constantemente en este nuevo entorno pero permite también escapar al escritorio tradicional y pueden instalarse programas de versiones anteriores de Windows.
    Las principales novedades son:
    1. Interfaz Metro Como se comenta más arriba, Windows 8 tiene dos formas de trabajar: Uno con el escritorio de siempre y otro con la interface Metro (ahora la denomina ModernUI por problemas de registro). Esta última está sobre todo orientada a la utilización con tablets y smartphones y nos permite trabajar a través de un entorno tactil
    2. Procesadores ARM De cara al mercado de tablets y smartphones Windows 8 tiene una versión de sistema operativo basada en procesadores basados en ARM que permiten un menor consumo. Aún así también habrá una versión basada en intel para tablets que permitirá ejecutar los mismos programas que en un ordenador usando, eso si, discos SSD para un menor consumo.
    3. Windows to Go
      Esta característica de Windows 8 nos permite llevar nuestro SO con sus aplicaciones en un USB y poder ejecutar desde este dispositivo en cualquier ordenador.
    4. USB 3.0
      Esta tecnología permite velocidades 10 veces más rápidas que USB 2.0. Aunque ya es soportado por otras versiones Windows 8 tiene soporte nativo para USB 3.0.
    5. Windows App Store
      Microsoft tiene una tienda de aplicaciones para la compra de app similar a Google App store.
    6. Explorador de Windows
      Windows 8 incorpora en la parte superior del explorador de archivos la interfaz Ribbon, esta barra nos permite acceder fácilmente a las principales opciones de gestión de archivos.
    7. Transferencia de archivos
      Nueva ventana en la que se ve de forma centralizada y con información detallada todas las tareas de copias de ficheros que está teniendo lugar. Existe la posibilidad de pausar esas tareas de copia.
    8. Reset and Refresh
      Son dos funciones que nos permiten recuperar el estado del equipo ante un fallo grave o malware.
      1. Reset formatea el equipo y reinstala el SO sin guardar las aplicaciones o datos.
      2. Refresh reinstala el SO , pero antes hace copia de las aplicaciones y los datos para recuperarlos al final.

    viernes, 19 de octubre de 2012

    Lenovo supera a HP en el liderazgo mundial en PCs

    HP ha mantenido el liderazgo como primer fabricante mundial de PCs durante 6 años. Según la consultora Gartner, la china Lenovo acaba de adelantar a la norteamericana en el tercer trimestre, con 13,7 millones de ordenadores distribuidos frente a los 13,5 millones de HP. IDC le sigue dando el primer puesto a HP, pero por un escasísimo margen.
    La ascensión de Lenovo es casi tan impresionante como la caída de HP. En 2005 compró la unidad de PCs a IBM; tres años después ya producía unos cinco millones de ordenadores por trimestre; cuatro años más tarde ha logrado casi triplicar esa cifra a base de constantes lanzamientos de productos y precios imbatibles.
    HP, por su parte, ha hecho todo lo contrario, desinflarse poco a poco gracias a una desastrosa gestión y a su lentitud para innovar y reaccionar a la explosión de los móviles y las tabletas.
    Frente a los 350 millones de PCs que se fabricarán este año (desktops y todo tipo de portátiles), veremos 119 millones de tabletas y 630 millones de smartphones. En apenas cuatro años el mercado ha girado completamente hacia los teléfonos inteligentes, las tabletas y, ahora, los híbridos tableta-portátil, y no hay marcha atrás. La transición ha pillado de lleno a dinosaurios como HP, Microsoft, Dell, RIM o Nokia.
    Gráfico_Final
    HP se enfrenta ahora a una dolorosa y lenta transformación que, según su consejera delegada, Meg Whitman, podría durar cuatro años como mínimo. El problema es que el PC se ha convertido en un negocio sin apenas margen, en una guerrilla de precios en la que solo los fabricantes asiáticos como Lenovo, Acer o Asus pueden sobrevivir.
    Windows 8, que se presenta oficialmente el 25 de octubre, supondrá un balón de oxígeno para el PC, empujará algo las ventas, pero no más allá del 2013. La gran incógnita para HP es qué hacer en los smartphones, qué hacer con su sistema operativo webOS (ahora en código abierto), cómo hincarle el diente a un mercado al que llegan cinco años tarde.
    Por si la caída del PC fuera poco para HP, Dell, Acer y compañía, Microsoft aseguró ayer de la mano de Steve Ballmer que ha llegado el momento de saltar del software al hardware y los servicios, de dejar de hacer solo programas a pasar a fabricar sus propios equipos. Ya lo va a hacer con la tableta Surface que, de funcionar, hundirá aún más al portátil, y es muy posible que lo intente también con los smartphones, con el rumoreado Surface Phone.
    Mientras Microsoft gira por completo su estrategia, HP, Dell, Acer, Asus y Nokia, comienzan a temblar. Lo dijo Steve Jobs hace unos años y Ballmer ayer lo reconoció: estamos ante una nueva era.

    martes, 16 de octubre de 2012

    Las mejores webs para aprender inglés gratis

    Hay muchas maneras de aprender y mejorar el inglés, como pagar clases particulares, ir a una academia, hacer un curso online, etc. Y entre estos recursos, el más barato es el de aprender gratis inglés online.
    Sólo necesitas un ordenador con conexión a internet y visitar algunas webs muy interesantes para aprender inglés de forma autodidacta. Mola, ¿eh? De todas estas webs destacan 10 que merecen que se les eche un ojo: 


    1. Elllo
    Elllo se centra en vuestra comprensión oral del inglés. Se puede escuchar a gente de todo el mundo hablando de diferentes temas como deportes, viajes, juegos, etc. Bajo el reproductor de audio tenéis las transcripciones de lo que estéis oyendo. También puedes escuchar algunas canciones chulas en inglés y ver algún vídeo.

    2. Fun Easy English
    Fun Easy English está especializada principalmente en el conocimiento básico del inglés y en consejos para principiantes. Sus cursos incluyen pronunciación, gramática, modismos, argot, escritura, tests, y mucho más. La mayor parte de los mismos se desarrollan en formato de vídeo, junto a transcripciones e imágenes de apoyo.

    3. Go4English.com
    Go4English.com es una web del “British Council”, que es la institución británica encargada de las relaciones culturales a nivel internacional. Go4English.com ofrece información para el aprendizaje del inglés y tests para profesores, estudiantes y niñ@s. Se puede aprender inglés online mientras mientras haces un test, escuchas una canción, o incluso jugando.

    4. Lang-8
    Lang-8 está especializada en la escritura en un idioma extranjero. Escribes un texto en la lengua que estés aprendiendo y luego ese texto es corregido por hablantes nativ@s. También puedes ayudar a otros a aprender tu idioma materno corrigiendo sus textos.

    5. Busuu
    Para el idioma que elijas aprender, Busuu proporciona unos cuantos cursos, incluyendo ejercicios de escritura, aprendizaje de vocabulario, comprensión escrita, etc etc. Además de cursos, puedes también aprender inglés online uniéndote a la red social y chateando con otros usuari@s.

    6. Livemocha
    Livemocha está enfocada al aprendizaje de un idioma extranjero mediante cursos y fomentando la comunicación. Para aprender inglés online, puedes hacer un curso, enviar ejercicios, o chatear con l@ miembr@s cuya lengua materna sea el inglés. También puedes ayudar a l@s demás corrigiendo sus ejercicios.

    7. VocabSushi
    VocabSushi te ayuda a aprender vocabulario con ejemplos contextuales del mundo real extraídos de las noticias diarias. Puedes elegir cualquier vocablo, comprender su significado, leer ejemplos, escuchar a hablantes, y luego realizar un test para comprobar si realmente te has aprendido el vocabulario.

    8. BBC Learning English
    En BBC Learning English website, puedes aprender gramática, vocabulario, pronunciación, y además, puedes hacer un test y aprender también cómo enseñar inglés a otras personas. El curso más interesante es el curso “6 minutos de inglés”, donde puedes escuchar cortas grabaciones en audio descargables en los formatos MP3 y PDF.

    9. Learn English Free Online
    Con más de 10 años de antigüedad, Learn English Free Online es una web con abundante material para alumn@s y profesores de EFL/ESL. Puedes aprender vocabulario con las imágenes relacionadas, recibir algunos consejos para aprender ingles, realizar tests divertidos, etc.

    10. Exam English
    Según sugiere el nombre, la web Exam English sirve para realizar exámenes, incluyendo TOEFL, CPE, KET, y casi todos los demás famosos exámenes internacionales de ESL/EFL. Puedes comprobar tu nivel de inglés en cada uno de los diferentes aspectos : lectura, audición, gramática, vocabulario, o escritura.
    Entre las 10 webs destacadas, las hay que (como elllo, p.e) se centran en la comprensión oral, otras (Lang-8) en la escritura, otras (VocabSushi) en aprender vocabulario, y algunas en otros aspectos del inglés. Echadles un ojo y elegid vuestra favorita. Si conocéis otros sitios para aprender inglés, encantad@s de que las compartáis con vuestros comentarios. 

    11. La mansión del inglés
    Mansión del inglés está destinada a todo aquél que quiere aprender, mantener o mejorar su inglés. Aquí podrás encontrar un conjunto de recursos que te facilitarán el aprendizaje y perfeccionamiento de la lengua inglesa. 
    El contenido de la web está adaptado a distintos niveles. El Curso de Aprendizaje en varios niveles, así como la Gramática pueden estudiarse sin ningún conocimiento previo o con un conocimiento básico del idioma.
     
    12. Speaking24.com
    Speaking24.com y proenglish.es son dos webs en las que la gente se registra y comparte su dirección de skype, messenger o yahoo (estas dos últimas solo son posibles desde speaking.com) para practicar inglés con otras personas que también estén interesadas.

    lunes, 28 de mayo de 2012

    Incrementar número de fans en facebook

    Aumentar el número de fans en Facebook es sin duda la gran pregunta que le surge a todo aquel que crea una nueva fan page en esta red social. Los inicios en Facebook como página pueden llegar a ser verdaderamente frustrantes: carecemos de una comunidad que comparta nuestro contenido, limitando nuestro alcance y, por tanto, nuestra capacidad de aumentar el número de seguidores.
    Seamos realistas, si no contamos con un presupuesto para invertir en publicidad las posibilidades de crecer rápidamente en Facebook de una forma natural son muy remotas. Sin embargo, existe un conjunto de técnicas para acelerar en mayor o menor medida el crecimiento natural de nuestro número de fans.

    Optimiza tu página de fans de Facebook.
    Si queremos aumentar el número de seguidores de nuestra fan page nuestra primera tarea va a consistir en optimizar los aspectos internos de nuestra página de fans.
    Elige bien el nombre de tu página de fans. Por ejemplo, si eres una empresa de cierto renombre deberías elegir como nombre el de tu marca. De ese modo tus clientes habituales podrán encontrarte por tu nombre en Facebook. Sin embargo, si no eres tan conocido posiblemente te interese posicionarte por algún término atractivo de tu sector.
    Refuerza el nombre que hayas elegido personalizando tu URL. Lo podrás hacer una vez superes los 25 seguidores. Si, por ejemplo, el nombre que elegiste fue Community Management deberías introducir estos términos en tu URL.
    Incluye esas palabras para las que quieres posicionarte en la descripción de tu fan page. Además tendrás que conseguir que sea lo más atractiva posible para incentivar al usuario a hacer clic en "me gusta" cuando llegue a tu página.
    El contenido de calidad, clave para conseguir fans en Facebook.
    Publicar en Facebook un contenido atractivo y de calidad es básico para incrementar nuestro número de seguidores. Publica contenido novedoso, visualmente atractivo, que aporte información interesante para el lector, etcétera. El contenido de estas características tendrá más posibilidades de ser compartido que un contenido que no las cumpla. Al ser compartido, aumentaremos nuestro alcance y, por tanto, nuestras posibilidades de captar nuevos usuarios.
    Publica contenido de calidad tanto propio como ajeno. A una cantidad importante de usuarios no les gustan aquellas páginas que sólo promocionan productos o publicaciones propias. Diversifica tus publicaciones siempre priorizando la calidad.
    A la hora de redactar contenido en Facebook tienes que mostrar un tono personal, cercano, que juegue con las emociones (la risa y la curiosidad serán buenas aliadas) e incluye siempre una llamada a la acción en tus publicaciones.
    Recurre a tus círculos cercanos.
    Una buena forma de comenzar a ganar seguidores en Facebook consiste en invitar a todos tus círculos cercanos a seguirte: amigos, clientes, socios, proveedores, seguidores de Twitter... Poco a poco conseguirás volumen de fans hasta alcanzar la masa crítica que necesitas.
    Facilita a los usuarios la posibilidad de unirse a tu comunidad en Facebook.
    Es fundamental facilitar a los usuarios la labor de unirse a nuestra comunidad. En primer lugar incluye el botón de Facebook en tu blog o en tus fichas de producto. De ese modo cuando los usuarios hagan clic en él aparecerán directamente en nuestra fan page.
    La caja de fans también es fundamental. En primer lugar porque es mucho más visible y atractiva que el botón anterior. Además el hecho de mostrar las caras y los nombres de tus seguidores actuales transmite confianza. Intenta colocarla en un lugar bien visible con un call to action del tipo... "¡Síguenos en Facebook!".
    Invita en tus artículos a los usuarios a seguirte en Facebook.
    En tu blog seguro que tienes muchos seguidores dispuestos a convertirse en tus fans... tan sólo tienes que pedírselo. Incluye una invitación al final de tus artículos invitando a que se unan a tu canal.
    Esta práctica también es válida a la hora de hacer Guest Blogging (es decir, publicar en otras plataformas como autor invitado) pero con una ventaja adicional: estarás ampliando tu alcance, llegando a un mayor número de usuarios.
    Incluye siempre tu página de Facebook en las firmas de tus correos electrónicos o en tu tarjeta de visita.
    No debemos despreciar ninguna técnica que nos permita conseguir más fans en Facebook. Incluyendo tu página de Facebook en las firmas de tus correos electrónicos o en tus tarjetas de visita llegarás a un público al que probablemente no llegues de otro modo.
    Lo gratis, los sorteos y los concursos venden mucho en Facebook.
    Las muestras gratuitas, los sorteos y los concursos son muy virales en Facebook. Si consigues que tus usuarios interactúen y logras generar conversación el éxito está garantizado. Demuestra siempre garantías en los concursos y los sorteos: tienes que mostrar a los usuarios transparencia y ofrecer ciertas garantías para que confíen que el ganador es lícito.
    Involucra a personalidades de tu sector.
    Identifica a aquellos usuarios influyentes en tu sector como bloggers. Involúcralos en tus campañas para maximizar tu alcance. 
    Tu atención sobre esta clase de usuarios debe ser máxima: identifícalos, averigua sus necesidades e intereses e intenta involucrarlos en tus conversaciones.

    jueves, 24 de mayo de 2012

    Hola Mundo con Android SDK


    Crearemos una aplicación a modo de introducirnos en el mundo del Android SDK, la herramienta principal para la creación de aplicaciones para dispositivos Android.
    En este punto tenemos que tener ya realizada la instalación de Eclipse junto con el SDK de Android y se ha creado un Dispositivo Virtual Android (AVD).
    Si aún no lo tenéis instalado, en este enlace se explica con detalle los pasos a seguir.
    Para empezar, creamos un proyecto nuevo “HolaMundo” . Para ello abrimos Eclipse y seleccionamos “File > New > Android Project“.

    01 Primera aplicación Android   Hola Mundo

    Nos aparecerá una ventana emergente:
    02 Primera aplicación Android   Hola Mundo

    En “Project name” ponemos HolaMundo, que será el nombre de nuestro proyecto.
    Dejamos por defecto la opción “Create new project in workspace“.
    En Build Target seleccionamos la version del sistema Android que utilizará el proyecto. Es importante utilizar las últimas versiones, en nuestro caso Android 2.2 (Froyo).
    Application name será el nombre de nuestra aplicación.
    En Package name, le daremos nombre al paquete. Se suele seguir la nomenclatura que hemos utilizado, en orden inverso, pero no es realmente necesario.
    Activamos “Create Activity” y le damos el mismo nombre que a la Aplicación.
    Al hacer click en “Finish” veremos nuestro proyecto estructurado de esta forma:

    03 Primera aplicación Android   Hola Mundo

    Antes de explicar como se estructura el proyecto, probaremos a ejecutar nuestro HolaMundo en el simulador del dispositivo.
    Con el proyecto HolaMundo seleccionado en el Package Explorer, hacemos click junto al icono verde “Run” de la barra de herramientas superior, y al desplegar seleccionamos “Run As > Android Application“:

    04 Primera aplicación Android   Hola Mundo

    Nos pedirá elegir el Dispositivo Virtual Android (AVD), elegimos el que tengamos configurado (ha de ser al menos de la misma versión o superior que nuestro proyecto), y aceptamos.
    Al abrir por primera vez el simulador de Android tardará un poco más que el resto de veces.
    En otros tutoriales, explicaremos como hacerlo funcionar directamente en el dispositivo móvil.
    Ahora veremos el resultado en pantalla. Vemos que por defecto, el programa principal muestra la cadena Hello World, seguido del nombre de la aplicación.
    Si hacemos click en el botón Return (←) iremos al menú principal del terminal android simulado.
    05 Primera aplicación Android   Hola Mundo
    Ahora cerramos, ya que vamos a ver un poco la estructura de nuestra aplicación Android.

    06 Primera aplicación Android   Hola Mundo

    Las carpetas más importante ahora mismo son “src“, “gen” y “res“.
    En SRC básicamente encontramos el código fuente de nuestra aplicación, las clases y paquetes de esta.
    En RES, se encuntran los recursos de la aplicación. Aquí colocaremos las imágenes, iconos, y el material que nos haga falta. Además tenemos varios XML que iremos viendo poco a poco.
    Entre estos se encuentra strings.xml, donde se guardarán las cadenas de texto que vayamos a utilizar en nuestro código.
    Como vemos se puede editar tanto gráficamente,

    Captura de pantalla 2010 12 03 a las 14.02.17 Primera aplicación Android   Hola Mundo

    Como editando el código:

    Captura de pantalla 2010 12 03 a las 14.02.29 Primera aplicación Android   Hola Mundo

    En el AndroidManifest.xml tenemos la estructura de nuestra aplicación en código XML:

    Captura de pantalla 2010 12 03 a las 14.31.53 Primera aplicación Android   Hola Mundo
    Como podemos ver este XML muestra la mayor parte de la información de nuestra aplicación: paquete, verisón, nombre, actividad, etc.
    Además si nos fijamos utiliza dos XML, el de @string que ya hemos mencionado, y el de @drawable, para mostrar cadenas o imagenes respectivamente.

    Vamos a modificar el saludo de nuestra aplicación. Para ello volvemos al string.xml y modificamos, en modo gráfico (o editando el código) la cadena “hello“. Nosotros ponemos “Hola“, que cada uno lo ponga a su gusto.

    Vamos a probar el efecto en nuestra aplicación lanzando el simulador como hemos explicado antes.
    Nota: Es importante tener cuidado a la hora de darle a “Run As > Android Application” porque hemos de seleccionar la aplicación entera en el explorador de paquetes. Si tenemos seleccionado otro archivo como puede ser un XML, nos dará error y nos generará un nuevo archivo que deberemos eliminar.
    Captura de pantalla 2010 12 03 a las 16.20.56 Primera aplicación Android   Hola Mundo

    Y este debería ser el resultado en el simulador: