viernes, 27 de diciembre de 2013

Windows 8 comprado legalmente y sus manías

Parece que después de haber reinstalado Windows 8 desde cero, resulta que la clave legal que tengo, y que pagué no le sirve. Tendría que volver a poner Win7 y luego actualizar al 8, pero no, la solución viene de trick77.com

1.En Windows 8, abrir el Editor del Registro
2.Búscar MediaBootInstall y poner el valor en 0.
3.Abrir un "símbolo del sistema", pero como administrador, y escribir:
  slmgr / rearme
4.Si da un mensaje de error de acceso denegado, no se está ejecutando el símbolo del sistema con privilegios de administrador.
5.Reiniciar el PC.
6.Abrir un símbolo del sistema, para volver a teclear la clave, y escribir:
  SLUI 3
7.Ahora volver a escribir la clave de licencia de actualización de Windows 8 y a activar.
8.Realizado!


miércoles, 13 de febrero de 2013

Ahora que estamos en crisis y hay que ahorrar

Ahora que estamos en crisis y hay que ahorrar, es el momento de deshacernos de los intermediarios, visitad este enlace y veréis de que hablo.
Para ahorrar hay que eliminar al intermediario, contratar directamente al empleado y hacerle sentir de la empresa, por supuesto siempre que la empresa no esté deshaciéndose de sus propios empleados.

Un saludo

miércoles, 28 de marzo de 2012

Android ListActivity con adaptador

Un paso más es tener un adaptador, que más adelante se puede adaptar para incluir en la lista cualquier objeto, como un botón, una imagen.
Partiendo del proyecto anterior, véase este enlace, hay que modificar en main.xml el identificador del ListView, ha de quedar con android:id="@android:id/list". Sirve para la Activity que cambiaremos a ListActivity.
El elemento a utilizar en el ListView por sencillez va a ser un TextView, hay que crear otro xml, lo he llamado element.xml y es este:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
<TextView 
    android:id="@+id/tvelement"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:text="item"/>
</LinearLayout>

Voy a necesitar una clase muy sencilla para representar a mi elemento, creamos la nueva clase Element:


public class Element {


    private String name;


    public Element(String name) {
        super();
        this.name = name;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }
}

Y la clase de prueba MilistviewActivity queda así:



public class MilistviewActivity extends ListActivity {
    private ElementAdapter myElementAdapter;
private ArrayList<Element> elements = null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      //Assign objects
        final Button mybutton = (Button) findViewById(R.id.addbutton);
        final EditText myEdittext = (EditText) findViewById(R.id.edittext);
        
      //Use of ElementAdapter
        elements = new ArrayList<Element>();
        myElementAdapter = new ElementAdapter(this, R.layout.element, elements);
        setListAdapter(myElementAdapter);
        
        mybutton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
      myElementAdapter.add(new Element(myEdittext.getText().toString()));
        myElementAdapter.notifyDataSetChanged();
  }
 });   
        
    }
    
    //class ElementAdapter
    public class ElementAdapter extends ArrayAdapter<Element> {
        private ArrayList<Element> items;
        private ViewHolder holder;
        class ViewHolder {
            TextView name;
        }
        
        public ElementAdapter(Context context, int textViewResourceId, ArrayList<Element> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if(v == null) {
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.element, null);
                holder = new ViewHolder();
                holder.name = (TextView) v.findViewById(R.id.tvelement);
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }
            Element listViewItem = items.get(position);
            
            holder.name.setText(listViewItem.getName());
            
            return v;
        }
    }



El aspecto es parecido:
Sin embargo, se pueden añadir otros objetos, para ello se cambia el objeto element por otro que puede estar compuesto de texto+botón, o texto+imagen; modificando por supuesto el adapter para que sea ArrayAdapter<de_otro_elemento>.

La fuente principal ha sido esta.

Un cordial

viernes, 23 de marzo de 2012

Alimentar ListView

No pretendo enseñar cómo se programa en Android,  pero este post me servirá de referencia.
Voy a contar cómo se alimenta un ListView desde un campo que se teclee, algo como esto:


Se trata de alimentar el ListView según se pulsa el botón.
Primero se crea el proyecto en Eclipse, si no se sabe, con Google es fácil encontrarlo. A mi proyecto lo he llamado Milistview y el XML main es así:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <EditText
        android:id="@+id/edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0000ff" />
    <Button
        android:id="@+id/addbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add" />
<ListView
        android:id="@+id/l_newlist"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textColor="#00ffff" 
         />
</LinearLayout>


La clase queda de esta manera:


public class MilistviewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Assign objects
        final ListView myListView = (ListView) findViewById(R.id.l_newlist);
        final EditText myEdittext = (EditText) findViewById(R.id.edittext);
        final Button mybutton = (Button) findViewById(R.id.addbutton);
        final ArrayList<String> elements = new ArrayList<String>();
       
        //the adapter
        final ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, elements);
        myListView.setAdapter(myadapter);
        // the listener
        mybutton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
elements.add(myEdittext.getText().toString());
myadapter.notifyDataSetChanged();
}
});
        
    }
} 




Y sigue funcionando:


Cordiales.

miércoles, 14 de diciembre de 2011

Como rootear el Kindle Fire en linux

Buenas, ya he encontrado como se rootea el Kindle Fire, en rootkindlefire.com. Salvo que tiene un lapsus, no hay que desconectarlo como dicen.


  • Paso 1. Ir a Settings->More->Device y activar “Allow Installation of Applications”.
  • Paso 2. Conectar el Kindle Fire al ordenador con un cable micro-USB, vale el de Nokia. Y aquí está el fallo, no hay que desconectarlo.
  • Paso 4. Abrir un terminal. 
  • Paso 5. Navegar hasta el directorio extraído KindleFireRootMacLinux por ejemplo: 
          cd Downloads/KindleFireRootLinux
  • Paso 6. Copiar el fichero adb_usb.ini en el directorio android. 
  • Paso 7 Ejecutar desde el terminal, si fuera necesario con SUDO:
           ./adb-linux kill-server
           ./adb-linux devices
  • Paso 8 El rooteo en sí es ejecutar:
          sh runmelinux.sh
  • Paso 9 Reiniciar el Kindle.
Se puede verificar que ha ido correctamente yendo a Settings->More->Applications->All Applications, donde aparecerá el androide parcheado.

Yo ya lo he hecho, ¿a qué esperas?

martes, 13 de diciembre de 2011

Lo que le falta al Kindle Fire

Buenas, voy a opinar sobre lo que le falta al Kindle Fire:


  • Lo primero es el idioma, ¿en EEUU no hay nadie que hable castellano?, porque no se puede cambiar el idioma.
  • No se solicita ninguna clave al encenderlo. Si se perdiera, o alguien accediera al Kindle, tendría a su disposición todos los libros, fotos, historial de navegación, correos, etc.
  • No he visto la navegación privada, si me conectara al banco, estaría mi cuenta accesible para cualquiera, o alguien podría repetir una transferencia o...
  • Eso de no poder instalar nada por no estar físicamente en los EEUU, aunque pronto lo arreglaré, cuando averigüe cómo hacerlo desde linux, porque en mi SDK de Android no tengo el fichero ADB_USB.ini.
Aunque también tiene sus cosas positivas, para enviar algo basta con mandarlo a usuario@kindle.com, y luego sincronizándolo se accede al documento, vídeo, etc.. La navegación con Silk va fluida, muy fluida.
El conector USB es estándar, he podido cargarlo con el de mi Nokia, aunque ya tengo el adaptador de enchufe americano a europeo.

Y he aquí la prueba gráfica de que dispongo de mi Kindle Fire:


jueves, 24 de noviembre de 2011

miércoles, 20 de abril de 2011

Mi segunda aplicación Cocoa Capítulo 3 y útimo

Nos queda la parte que lleva el cálculo, se puede usar, pero no sacar beneficios de él:


#import "PrimitivaAppDelegate.h"

@implementation PrimitivaAppDelegate

@synthesize window;
@synthesize numeros,num1,num2,num3,num4,num5,num6;
@synthesize aordenar;

NSInteger shuffleSort(id n1, id n2, void *context){
int resultado = arc4random()%3;
if (resultado==0) {
return NSOrderedAscending;
}
if (resultado==1) {
return NSOrderedDescending;
}
return NSOrderedSame;
}

-(IBAction)boton {
numeros =[NSMutableArray arrayWithObjects:@" 1",@" 2",@" 3",@" 4",@" 5",@" 6",@" 7",@" 8",@" 9",@"10",
  @"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",
  @"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30",
  @"31",@"32",@"33",@"34",@"35",@"36",@"37",@"38",@"39",@"40",
  @"41",@"42",@"43",@"44",@"45",@"46",@"47",@"48",@"49",nil];
srand(time(nil));
//agitar al agitador, si no se repiten
NSArray *numerosAgitados;
numerosAgitados = [numeros sortedArrayUsingFunction:shuffleSort context:NULL];  //agitar los numeros
// primer numero
int i1 = rand() % 49;   //el que diga random a elegir entre 49
num1 = [numerosAgitados objectAtIndex:i1];
[num1 retain];
NSMutableArray *numerosAgitados1;
numerosAgitados1 =[[NSMutableArray alloc] initWithArray:numerosAgitados];  
//para quitar un numero
  [numerosAgitados1 removeObjectAtIndex:i1];              //quita el que salio
srand(time(nil));
NSArray *numeros2Agitados;
numeros2Agitados = [numerosAgitados1 sortedArrayUsingFunction:shuffleSort context:NULL]; //agitamos
// segundo numero
    int i2 = rand() % 48;
num2 = [numeros2Agitados objectAtIndex:i2];
[num2 retain];
NSMutableArray *numerosAgitados2;
numerosAgitados2 =[[NSMutableArray alloc] initWithArray:numeros2Agitados];   
//para quitar otro numero
[numerosAgitados2 removeObjectAtIndex:i2];               //quita el que salio
srand(time(nil));
NSArray *numeros3Agitados;
numeros3Agitados = [numerosAgitados2 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// tercer numero
int i3 = rand() % 47;
num3 = [numeros3Agitados objectAtIndex:i3];
[num3 retain];
NSMutableArray *numerosAgitados3;
numerosAgitados3 =[[NSMutableArray alloc] initWithArray:numeros3Agitados];
[numerosAgitados3 removeObjectAtIndex:i3];
srand(time(nil));
NSArray *numeros4Agitados;
numeros4Agitados = [numerosAgitados3 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// cuarto numero
int i4 = rand() % 46;
num4 = [numeros4Agitados objectAtIndex:i4];
[num4 retain];
NSMutableArray *numerosAgitados4;
numerosAgitados4 =[[NSMutableArray alloc] initWithArray:numeros4Agitados];
[numerosAgitados4 removeObjectAtIndex:i4];
srand(time(nil));
NSArray *numeros5Agitados;
numeros5Agitados = [numerosAgitados4 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// quinto numero
int i5 = rand() % 45;
num5 = [numeros5Agitados objectAtIndex:i5];
[num5 retain];
NSMutableArray *numerosAgitados5;
numerosAgitados5 =[[NSMutableArray alloc] initWithArray:numeros5Agitados];
[numerosAgitados5 removeObjectAtIndex:i5];
srand(time(nil));
NSArray *numeros6Agitados;
numeros6Agitados = [numerosAgitados5 sortedArrayUsingFunction:shuffleSort context:NULL]; 

// sexto numero
int i6 = rand() % 44;
num6 = [numeros6Agitados objectAtIndex:i6];
[num6 retain];
aordenar = [NSMutableArray arrayWithObjects:num1,num2,num3,num4,num5,num6,nil];
[aordenar sortUsingSelector:@selector(compare:)];
    [eti1 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:0]]];
[eti2 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:1]]];
[eti3 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:2]]];
[eti4 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:3]]];
[eti5 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:4]]];
[eti6 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:5]]];
}

-(void)applicationDidFinishLaunching:(UIApplication *)application{
[window makeKeyAndVisible];
}


@end

Y ejecutando:
Lo que falta se puede obtener con google. Ahora ando viendo como lo hago con Android.

Cordiales

miércoles, 6 de abril de 2011

Mi segunda aplicación Cocoa Capítulo 2

Hoy vamos con los enganches, hay que utilizar el Interface Builder: doble click en MainWindow.xib.
Cuando estén pintados las etiquetas y el botón quedará así:
Es bastante tosco pero el caso es que funcione.
El arrastrar es fácil, tecla control, primero desde el botón hasta PrimitivaAppDelegate, que habremos incluido antes en MainView:
Y cada una de las etiquetas:
Hasta aquí lo bonito, lo que mola, para el próximo y último capítulo el código que gererará los números aleatorios.

Bye



lunes, 28 de marzo de 2011

Mi segunda aplicación Cocoa Capítulo 1

Para empezar el nuevo proyecto elegimos "Windows-Based" dentro de IOS:




Cuando estémos en Xcode la clase creada "Primitiva" la podemos borrar, ya que con las primitivas no vamos más que mostrarlas, si se hiciera algo con ellas, como imprimir, o sacar estadísticas si que la necesitaríamos.


Queda así:







Y a codificar: añádanse un botón y 6 etiquetas



@interface PrimitivaAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
IBOutlet UIButton *boton;
IBOutlet UILabel *eti1;
IBOutlet UILabel *eti2;
IBOutlet UILabel *eti3;
IBOutlet UILabel *eti4;
IBOutlet UILabel *eti5;
IBOutlet UILabel *eti6;
}

Los campos de trabajo, cada número generado y un par de ARRAYS con la colección de números, que al final saldrán en la ventana ordenados de menor a mayor:

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) NSMutableArray *numeros;
@property (nonatomic, retain) NSMutableArray *aordenar;
@property (nonatomic, retain) NSString *num1;
@property (nonatomic, retain) NSString *num2;
@property (nonatomic, retain) NSString *num3;
@property (nonatomic, retain) NSString *num4;
@property (nonatomic, retain) NSString *num5;
@property (nonatomic, retain) NSString *num6;


El total del código de PrimitivaAppDelegate:
//  PrimitivaAppDelegate.h
//  Created by JBZ on 25/03/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.

#import <UIKit/UIKit.h>

@interface PrimitivaAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
IBOutlet UIButton *boton;
IBOutlet UILabel *eti1;
IBOutlet UILabel *eti2;
IBOutlet UILabel *eti3;
IBOutlet UILabel *eti4;
IBOutlet UILabel *eti5;
IBOutlet UILabel *eti6;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) NSMutableArray *numeros;
@property (nonatomic, retain) NSMutableArray *aordenar;
@property (nonatomic, retain) NSString *num1;
@property (nonatomic, retain) NSString *num2;
@property (nonatomic, retain) NSString *num3;
@property (nonatomic, retain) NSString *num4;
@property (nonatomic, retain) NSString *num5;
@property (nonatomic, retain) NSString *num6;

-(IBAction)boton;

@end

En la próxima entrega engancharemos las etiquetas y el botón.

Bye



viernes, 25 de marzo de 2011

Mi segunda aplicación COCOA capítulo 0

Bien, mis intenciones son hacer mi segunda aplicación en Cocoa, además de dejar escritos los pasos en la nube.
La aplicación va a ser muy sencilla, pero útil: va a generar primitivas, que no son más que combinaciones de 6 números elegidos entre 49 posibles.

El programa se encargará de generar la combinación de 6 números, que por supuesto no está garantizado que nos toque.

Vamos al lio:

CUADERNO DE CARGA

Modelo
Como Cocoa es un lenguaje orientado a objetos, hay que tener presente qué objetos vamos a utilizar; sencillo vamos a tener una clase que será Primitiva, que tendrá como atributos 6 números.

Vista
La pantalla tendrá un NSLabel donde se mostrará la combinación generada. Y un botón tal que al pulsarlo se genere la combinación aleatoria.

Controlador
Se encargará de crear el objeto apuesta de la clase Primitiva; será el encargado de hacer que la apuesta generada sea aleatoria. Como añadido ha de elegir 6 números de 49, pero no puede repetirlos, la invocación a la función random() podría repetir los números, y es aquí donde está la dificultad.

miércoles, 26 de enero de 2011

¿Voy en contra de la nueva ley SINDE?

Pues si voy en contra de la ley, que me lo digan y borro este post:


Sí, he quitado los 7000 enlaces, si alguien iba a usarlos, google lo puede resolver.

A seguir bien

martes, 28 de diciembre de 2010

Adios CNN+

Adios, CNN+ ya ha cerrado.
Veía el canal desde que estuve abonado a Digital+, era de lo poco que se salvaba de su parrilla, cuando pasó a ser emitido en TDT volví a verlo, a informarme además de con otros con él.
Es una pena. Esta mañana al levantarme, ya no estaba ahí, en su lugar había un bucle de GH24. Y he tenido que hacerlo, he borrado el canal, no soporto la basura desde mi ventana al mundo.

Parece que en Navidad paran

Parece que en Navidad paran, llevo desde el 22 sin recibir ninguna llamada de mis acosadores favoritos.
Feliz navidad y todas esas cosas.

viernes, 10 de diciembre de 2010

No sólo Jazztel

No sólo Jazztel, ahora me ataca Iberdrola.
Ayer leo el folleto que me envían por correo, que sí, que no tengo que poner un molino en casa.
Hoy mientras estoy en el tercer bocado de la comida llaman a la puerta. El de iberdrola.
- Que no, que estoy comiendo
-¿Y luego?
-Me voy a echar la siesta
-¿Y mañana?
-No voy a estar
Hace un rato, me ataca Iberdrola por teléfono. Que no me interesa, ya he leído el folleto -mientras suena el pi-piii, de alguien llamado justo en ese momento, ¡que te voy a colgar, que me están llamando!.
Miro el número, de Barcelona ¿tendré un primo allí?, pues no, llamo y Movistar me informa: siguiendo la política de .. no se permite llamar ese número. Otra será Jazztel 935037799.

martes, 23 de noviembre de 2010

Ya vuelve la puñetera

Pues sí ya estamos otra vez con el coñazo de la lotería, navidad, fraternidad y demás zarandajas, soy TAN míster SCROOGE, que tengo una regla en el correo tal que si llega uno con los literales navidad, lotería, feliz, próspero, etc. lo desvío a un rincón profundo perdido en la inmensidad…..

martes, 16 de noviembre de 2010

Sí, siguen insistiendo

Sí, siguen insistiendo, día 15 de noviembre de 2010, a las 12:40 llama jazz5,je, je, je, lo tengo fichado. A las 15:10 llama jazz6, paso de cogerlo. A 17:40 un nuevo número 918372504, que no, que JC no vive aquí.
A las 19:50 sigue jazz5, paso.
Cenando: llama el 17146400, venga dejo de cenar, que me estáis tocando los coj..
-¿Don JC?
-No, ese señor no vive aquí.
-Que le llamo de Jazztel,¿no le interesaría?
-No, me acabo de mudar y además no tengo ordenador
-Adiós buenas noches.

viernes, 22 de octubre de 2010

Ya lo había anunciado

Como había previsto vuelven a atacar. Suena el teléfono y aparece identificado el número como jazz2, que se corresponde con el número 985666430. !Qué suerte¡ puedo desarrollar la siguiente:

Lo cojo, espero a que la locución automática termine, que si esta es una promoción, que si le ponemos con un técnico comercial...
Cuando la buena mujer lleva dicho bue (de buenas noches supongo) salto:
-Policía, dígame, ¿ocurre algo?.
-¿Perdón? (La cara de la operadora debía ser todo un poema)
-Sí, aquí la policía de Alpedrete, dígame en qué le podemos ayudar.
-No -responde- soy de una plataforma de comunicaciones...
-Pues se han equivocado de número, tenga más cuidado la próxima vez.
-Perdón, buenas noches.
-Buenas noches (Deben haber oído mis risas en el pueblo de al lado).

No os preocupéis, me queda otra. Aparte de intentar dialogar con ellos y la lista de llamadas que tengo recopiladas en papel, con número, fecha y hora.

Postdata: Cuando compruebo como quedan las entradas, y veo en los anuncios del blog las ofertas de jazztel, me entra un nosequé...

Vamos cachondearnos un rato

Como siempre, justo, justo a la hora de la siesta, hace piticlín, piticlín el teléfono.
Llaman del 34983443308:

Piticlín, piticlín...

-¿Con don JC por favor?
Y respondo: uy, se han equivocado, aquí no vive nadie, esto es una oficina.
-Es por una oferta de telefonía. ¿Quién es el encargado? (Les da lo mismo que lo mismo les da, si les dices que el titular está fenecido de cuerpo presente, te pedirían hablar con la viuda).
Le contesto: Pues los asuntos de suministradores los lleva el concejal.
-¿Puedo hablar con el concejal?
-No está, a estas horas está en su casa,(durmiendo la siesta como yo hacía), y cualquier decisión de compras la tiene que decidir junto a la alcaldesa.(Interiormente estaba carcajeándome)
-Entiendo, muy amable por atenderme.
-Adíos.

Seguro que llaman hoy otra vez, pero aún tengo dos salidas más, que tranquilos, las voy a escribir.

lunes, 18 de octubre de 2010

Más ataques de Jazztel

Y otro día más me atosigan, se libran por que no he estado en casa:

A las 10 de la mañana llama el 985666430.
A las 14:30 del 931839810.
A las "siesta" en punto, que es cuando uno tiene el sueño cogido llama el 958992027.
A las "siesta" y 25 minutos ahora ataca el número 985666430, ¿repiten hoy el mismo número?.
A las "cafelito después de la sisesta" lo intenta el 911880783.

Voy informatizar todo esto, crearé una hoja de cálculo, y me voy a entretener haciendo estadísticas, por hora, por número, por respuesta que les dé.

Y añado, después de escribir la entrada: tengo una llamada del 985666430 a las 21: y algo. Pero no he oído el teléfono. Se han librado.
Y a las 22:30 del 116925116402025, se les ha olvidado modificar el número:

-Hola buenas noches ¿JC?
Y le suelto, no, no soy JC, soy Pedro, me acabo de mudar.
-Encantado Pedro, mi nombre es ... y le llamo de Jazztel
-Un momentito, que me están llamando a la puerta. Y le dejo el teléfono escondido en un armario, a ver cuanto aguantan. Pero he flaqueado y a los 5 minutos he vuelto, y ya no me esperaban para darme la chapa. !Que poco aguantan¡