viernes, 4 de marzo de 2011
martes, 21 de diciembre de 2010
La utilidad de atención al cliente vía twitter
Desde un tiempo a la fecha distintas empresas, corporaciones, o como deseen llamarse, están escaneando sus menciones en distintas redes sociales entre otras twitter, algunas no entran en el juego, y otras están corriendo el riesgo y destinan recursos a controlar los reclamos de clientes surgidos en estas.
He tenido interacciones principalmente con @movistarchile y @entel_ayuda.
@entel_ayuda mostró gran disposición, aunque fue un poco lento, y debí insistir en algunos casos, aunque finalmente generó resultados.
Por otro lado, tenemos a @movistarchile, quienes poseen mucha disposición a resolver los problemas, aunque lamentablemente, al menos en mi caso, las soluciones no se dan, se contactan con el afectado, toman los requerimientos y finalmente los traspasan a las áreas de siempre. Nuevamente caemos en el mismo “circulo vicioso” de siempre, donde ofrecen soluciones, y lamentablemente en las siguientes boletas te das cuenta que la solución no fue tal, y vuelves a contactarte y nuevamente caemos en lo mismo.
Así pueden pasar meses sin una solución final y lo único que te dicen: “La empresa es grande” y “Debemos investigar el caso”.
Antes lo cual queda la duda, ¿Este es el momento en que las empresas ataquen dentro de las redes sociales, siendo una extensión más de la actual burocracia y los problemas que estas muestran o deberían primero mejorar los procesos, y darle un mayor poder de resolución a áreas que apuntan a tecnologías de rápida interacción?
domingo, 27 de junio de 2010
Compartir disco usb con samba.
Finalmente encontre una pagina que lo explicaba de mandera bien simple http://www.goltratec.com/wp/2008/09/16/instalar-disco-usb-en-ubuntu/ .
En las siguientes lineas mostrare las pocas acciones que debi realizar poder compartir el disco USB.
Nota: Desconozco si influira e el resultado final, pero previamente habia instalado usbmount por pruebas anteriores por el mismo tema.
Lo primero es saber el UUID de la unidad para lo cual ejecutamos
En mi caso el resultado fue:
/dev/sda5: UUID="d52eb565-821e-46ca-b804-6428e049166b" TYPE="swap"
/dev/sdb: UUID="C2902DC3902DBEB3" TYPE="ntfs"
en mi caso el UUID de la unidad es "C2902DC3902DBEB3" de tipo "ntfs"
Ahora creamos el directorio donde montaremos el dispositivo
ahora editamos el archivo /etc/fstab y agregamos la linea que se describe mas abajo
ahora ejecutamos
Podemos revisar si el disco esta bien montado ejecutando el clasico "ls"
Finalmente debemos configurar el samba (este articulo muestra su configuracion) agregando al archivo smb.conf las lineas puestas mas abajo.
path = /media/directorio_a_montar/
valid users = sharer
read only = No
create mask = 0777
directory mask = 0777
available = yes
browsable = yes
writable = yes
y finalmente reiniciamos samba
viernes, 4 de junio de 2010
Administracion de Oracle:::Matar la sesion
nos conectamos como system
para saber que con que usuario estamos conectados usamos
generamos otra conexion la cual intentaremos matar (desde otro terminal)
en la consola de system
desc nos muestra la estructura de la tabla
buscamos el proceso donde esta la sesion del alumno
muestra los procesos que ahi en las sessiones
el sid es el identificador del proceso
si el proceso es dividido por el oracle en varias partes se repite el sid y con distintos serial
process indica el proceso en el sistema operativo
entrega como resultado
SID SERIAL# USERNAME PROCESS
---------- ---------- ------------------------------ ------------------------
138 111 ALUMNO 4973
matamos la session
al no matar el proceso (SO), el pmon se encarga de recuperarlo en aproximada mente en un 1.5 minutos buscandolo en el historal de oracle.
para matar la session de forma definitiva
o
SQL>!kill -9 4973
Administracion de Oracle:::Primeras configuraciones
Crearemos un usuario
no usamos el usuario sys para crear usuarios, ya que este posee muchos privilegios, trabajaremos con el usuario system
como no sabemos la clavem la cambiaremos
conectamos el usuario system
creamos un usuario
otorgamos provilegios
grant es un conujunto de uno mas privilegios
privilegio es el acceso sobre uno o mas objetos
resource (permisos para crear objetos), connect (permiso para conectarse)
asignamos el tablespace user por defecto ya que estaba originalmente el system
conectamos como usuario alumno
Administracion de Oracle:::Subir la base de datos
En esta primera parte se mostrara como se sube la base de datos.
Estos ejemplos fueron realizados en un linux red hat.
Lo primero que se debe hacer es iniciar sesion como usuario oracle.
luego se debe iniciar el oracle.
Conectamos como sysdba para lo cual no se requiere clave ya que se esta
Enter password:
Connected to an idle instance.
Subimos la base de datos.
antes de montarla revisa que el nivel de cambio coincide entre los controlfile, datafile y redolog
luego limpia el redolog y finalmente sube la db
Para confirmar que esta arriba revisamos los procesos
los procesos de color anaranjado son los minimos
oracle 4564 1 0 20:44 ? 00:00:00 ora_pmon_DUOC
oracle 4566 1 0 20:44 ? 00:00:00 ora_vktm_DUOC
oracle 4570 1 0 20:44 ? 00:00:00 ora_gen0_DUOC
oracle 4572 1 0 20:44 ? 00:00:00 ora_diag_DUOC
oracle 4574 1 0 20:44 ? 00:00:00 ora_dbrm_DUOC
oracle 4576 1 0 20:44 ? 00:00:00 ora_psp0_DUOC
oracle 4578 1 0 20:44 ? 00:00:00 ora_dia0_DUOC
oracle 4580 1 0 20:44 ? 00:00:00 ora_mman_DUOC
oracle 4582 1 0 20:44 ? 00:00:00 ora_dbw0_DUOC
oracle 4584 1 0 20:44 ? 00:00:00 ora_lgwr_DUOC
oracle 4586 1 0 20:44 ? 00:00:00 ora_ckpt_DUOC
oracle 4588 1 0 20:44 ? 00:00:00 ora_smon_DUOC
oracle 4590 1 0 20:44 ? 00:00:00 ora_reco_DUOC
oracle 4592 1 0 20:44 ? 00:00:00 ora_mmon_DUOC
oracle 4594 1 0 20:44 ? 00:00:00 ora_mmnl_DUOC
oracle 4596 1 0 20:44 ? 00:00:00 ora_d000_DUOC
oracle 4598 1 0 20:44 ? 00:00:00 ora_s000_DUOC
oracle 4682 1 0 20:44 ? 00:00:00 ora_p000_DUOC
oracle 4684 1 0 20:44 ? 00:00:00 ora_p001_DUOC
oracle 4686 1 0 20:44 ? 00:00:00 ora_qmnc_DUOC
oracle 4701 1 0 20:44 ? 00:00:00 ora_cjq0_DUOC
oracle 4719 1 0 20:44 ? 00:00:00 ora_q000_DUOC
oracle 4721 1 0 20:44 ? 00:00:00 ora_q001_DUOC
oracle 4773 1 0 20:46 ? 00:00:00 ora_j000_DUOC
oracle 4775 1 0 20:46 ? 00:00:00 ora_j001_DUOC
preparamos el listener
# Generated by Oracle configuration tools.
#El listener se puede llamar como uno quiera para identificarlo para comunicarlo con el ORACLE
#abre el puerto de comunicacion
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
#Ejecuta este programa EXTPROC instanciado en la linea superior para
#LISTENER puede ser cuaquier nombre, aunque debe llamarse igual en ambos bloques
#Ej CUALQUIERVALOR... SID_LIST_CUALQUIERVALOR
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = DUOC)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = DUOC)
)
)
# /u01/app/oracle/product/11.2.0/db_1 corresponde al $ORACLE_HOMEsubimos el listener
desde el 11G el listener no parte por defecto
desde el 10 esta hecho para trabajar en grilla(*) que es distinto al clustes
el listener lo deja trabajando en forma normal no como grilla
para ver si se inicio correctamente
aqui dice que lo que llegue a cualquier interfaz de red :::* pasa al
...
tcp 0 0 :::1521 :::* LISTEN 4210/tnslsnr
...
(*)Grilla: trabajan varios oracles trabajando como uno solo.
miércoles, 7 de abril de 2010
Agregar Validaciones Personalizadas a JQuery Validator
Este plugin incluye una serie de validaciones por defecto (email, campo obligatorio, numérico, etc…) y además se pueden agregar nuevas validaciones.
En el ejemplo se puede ver el uso de nuevas validaciones junto a la personalización del mensaje de estas.
Para el ejemplo se usaron las siguientes librerías
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery/jquery.js"></script>
<script type="text/javascript"
src="js/jquery/lib/validate/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
/**
* creamos una validacion llamada formato que solo permita un cierto rango de caracteres
* en el campo
*/
jQuery.validator.addMethod("formato", function(value, element) {
return this.optional(element) || /^([a-z]|\d|[ ]|\,)+$/i.test(value);
}, "Error formato");
/**
* Creamos una validacio que no permita duplicidad de valores en ciertos campos
*/
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
return this.optional(element) || value != $(param).val();
}, "No puede repetir el valor en los campos);
/**
* Validacion con una complejidad mayor
*/
jQuery.validator.addMethod("validacionCompleja",function(value, element, param) {
var result = true;
var comparador = $(param).val();
if (value == "" || param == "") {
result = true;
}
if (value.length >= 3 && comparador >= 3) {
result = true;
} else {
result = false;
}
return result;
}, "validacionCompleja");
$("#fvalida").validate(
{
rules : {
campo1 : "required",
campo2 : {
minlength : 1,
notEqualTo : "#campo1",
validacionCompleja : "#campo1",
formato : true,
required : true
}
},
messages : {
campo1 : {
required : "campo requerido"
},
campo2 : {
notEqualTo : "no debe ser igual al campo 1",
minlength : "largo minimo 1",
formato : "caracteres no permitidos",
validacionCompleja : "campo 1 y campo 2 deben tener al menos 3 caracteres"
}
}
});
});
</script>
</head>
<body>
<form action="controlador" method="post" id="fvalida" class="admform">
<fieldset><legend>Prueba Validator</legend>
<ol>
<li><label for="campo1">campo1</label><input type="text"
id="campo1" name="campo1" /></li>
<li><label for="campo1">campo2</label><input type="text"
id="campo2" name="campo2" /></li>
<li><input type="submit" name="Enviar" /></li>
</ol>
</fieldset>
</form>
</body>
</html>
viernes, 26 de febrero de 2010
instalacion apache2 php5 y mysql
como complemento esta la instalacion del phpMyAdmin
sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install php5 libapache2-mod-php5
sudo apt-get install php5 libapache2-mod-php
sudo apt-get install php5-gd
sudo /etc/init.d/apache2 restart
sudo apt-get install phpmyadmin
miércoles, 24 de febrero de 2010
Carnaval Florianopolis 2010
y junto a los carros alegoricos, las miles de personas que desfilaban por escuela (correctamente uniformada).
Existian personas que eran mas destacadas, generalmente encabezaban un grupo dentro del desfile de la escuela, y en este grupo era mas comun ver a los hombres bailar mientras las mujeres se paseaban mas de un lado para otro.
para muestra les dejo este video que filme en el carnaval.
viernes, 4 de diciembre de 2009
Java Reflection
Con esto logre invocar los métodos getter y setter sin necesidad de invocarlos explícitamente ( instancia.getValor ), para lo cual hice el siguiente ejemplo.
primero una clase donde tenemos el origen de los datos
PersonaOrigen.java
public class PersonaOrigen {
private String nombre;
private String apellido;
private String edad;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getEdad() {
return edad;
}
public void setEdad(String edad) {
this.edad = edad;
}
}
una clase donde volvaremos los datos.
Persona.java
public class Persona {
private String nombre;
private String apellido;
private String edad;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getEdad() {
return edad;
}
public void setEdad(String edad) {
this.edad = edad;
}
}
Y tenemos la clase que realiza la operacion.
Prueba.java
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
public class Prueba {
public static void main(String[] args) {
/*
* La clase PersonaOrigen Representara la fuente de los datos
*/
PersonaOrigen po = new PersonaOrigen();
po.setNombre("Juan");
po.setApellido("Perez");
po.setEdad("18");
/*
* por simplicidad, en este caso supondremos que los
* campos que vienen de la fuente de datos son conocidos
* por lo cual los guardaremos en un ArrayList
* (Cuando lo implemente los obtenia de base de datos)
*/
ArrayList<String> campos = new ArrayList<String>();
campos.add("nombre");
campos.add("apellido");
campos.add("edad");
HashMap metodos;
try{
metodos = new HashMap();
Persona persona = new Persona();
Field[] fields = persona.getClass().getDeclaredFields();
/*
* recorro la clase y almaceno los atributos en un hashmap
* esto se podria evitar, y grabar directamente los datos.
*/
for( int zz = 0; zz < fields.length ; zz++ ){
metodos.put(fields[zz].getName(), fields[zz]);
}
//recorremos los campos
Iterator i = campos.iterator();
String nombreCampo = null;
while(i.hasNext()){
//rescato el nombre del campo
nombreCampo = (String) i.next();
//genero el string que contiene el nombre de los metodos getter y settet de cada campo
String setterName = "set" + String.valueOf(nombreCampo.charAt(0)).toUpperCase() + nombreCampo.substring(1);
String getterName = "get" + String.valueOf(nombreCampo.charAt(0)).toUpperCase() + nombreCampo.substring(1);
//rescato el valor de la fuente de origen de los datos
Method getter = po.getClass().getMethod(getterName);
Object valor = getter.invoke(po, new Object[0]);
//seteo el valor en la instancia de la clase Persona
Field field2= (Field) metodos.get(nombreCampo);
Method setter = persona.getClass().getMethod(setterName, field2.getType());
setter.invoke(persona, new Object[]{( valor ) });
}
/*
* Finalmente podemos ver volcados los datos de PersonaOrigen a persona
*/
System.out.println("Nombre:" + persona.getNombre());
System.out.println("Nombre:" + persona.getApellido());
System.out.println("Nombre:" + persona.getEdad());
}
catch (Exception e) {
;
}
}
}
martes, 27 de octubre de 2009
Como usar Log4j
Como primera acción debemos incluir la librería (jar) de Log4j en nuestro proyecto
Log4jInit.java
package cl.ruta.package;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.PropertyConfigurator;
/**
* Servlet implementation class for Servlet: Log4jInit
*
* Servlet que permite obtener la ruta del contexto de la aplicacion, con el fin
* de poder setear la ruta para la generacion del LOG del Sistema log4j.
*
*/
public class Log4jInit extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
/**
* Inicializacion de LOG4J en base a lo descrito en {@link log4j.properties}
*/
public void init() throws ServletException {
Properties prop = new Properties();
FileInputStream is = null;
/*
* Obtengo el contexto de la apliación
*/
String prefix = getServletContext().getRealPath("/");
/*
* Cargo desde el web.xml la ruta en donde se encontrara el archivo
* properties
*/
String file = getInitParameter("log4j-init-file");
try {
/*
* Abre el fichero y carga el properties
*/
is = new FileInputStream(prefix + file);
prop.load(is);
} catch (IOException ioe) {
ioe.printStackTrace();
}
FileOutputStream out = null;
/*
* Se guarda la modificacion y se carga para log4j
*/
try {
out = new FileOutputStream(prefix + file);
prop.store(out, "---No Comment---");
out.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
/*
* Setea para el log4j el properties modificado
*/
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
}
El Servler debe ser agregado al archivo web.xml
<servlet-name>Log4jInit</servlet-name>
<servlet-class>cl.ruta.package.Log4jInit</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
luego agregamos el log4j.properties (Donde quedo definido en el param del web.xml) en mi caso quedo en "
# ***** Tipos de salida que tendra el LOG.
log4j.rootLogger=debug,R
# Configuración Registro en archivo
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/webapps/[contexto]/WEB-INF/log/[archivo_log].log
log4j.appender.R.MaxFileSize=250KB
log4j.appender.R.MaxBackupIndex=20
# ***** Encoding de salida
log4j.appender.R.Encoding=UTF-8
# ***** Patternlayout indica el tipo de formato usado
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %p %m%n
por ultimo lo agregamos en las clases java.
import org.apache.log4j.Logger;
/* Dentro de la clase*/
private Logger log = Logger.getLogger(this.getClass());
private String clase = this.getClass().getName().toString();
/*donde se quiere imprimir el mensaje*/
log.debug(clase +"::mensaje:" );
/*Si es dentro de un exception*/
catch (Exception e) {
log.debug(clase +"::Exception::", e);
}
sábado, 25 de julio de 2009
Navegador BOLT pata BlackBerry
domingo, 28 de junio de 2009
Arroz para suchi.
para una taza de arroz (de preferencia arroz grano corto) .
- Lavar bien el arroz.
- Poner 2 tazas de agua en una olla mediana (según lo que he escuchado mientras más grande la olla mejor queda el arroz obviamente sin exagerar)
- Prender la cocina llama baja o alta con tostador.
- Echar el arroz con cuidado y en forma uniforme en la olla.
- Tapar la olla y esperar hasta que se cocine bien.
martes, 5 de mayo de 2009
Maqueta Shelby Series 1
domingo, 3 de mayo de 2009
Publicar en Twitter desde php
lo complicado era aprender como publicar en twitter cosa que se logra en 4 líneas gracias a esta api
el código para publicar es el siguiente:
include('ruta a la api');
$twitter = new Twitter("usuario_twitter", "contraseña_twitter");
$public_timeline_xml = $twitter->getPublicTimeline("xml");
$twitter->updateStatus("Mensaje a publicar");
?>
Gracias a esa base se genero el bot twitter que nos entrega el tiempo meteochile_stgo.
para que funcione automaticamente el php se ejecuta mediante crontab.
domingo, 19 de abril de 2009
vmware + ubuntu + samba
Esto no necesariamente es la mejor forma, pero es la que me funciono :)
Para esto el linux antes que nada debe contar con el servicio samba.
En mi caso para partir con un ejemplo que me fuera útil, montare la carpeta '/var/www' donde apache almacena los fuentes de los sitios web.
Creamos el grupo sharer
#sudo groupadd sharer
Creamos el usuario sharer perteneciente al grupo sharer
#sudo useradd --gid sharer --shell /bin/false sharer --home /nonexistent
le asignamos una clave al usuario sharer
#sudo smbpasswd -a sharer
para este ejemplo compartiremos la carpeta /var/www
#cd /var
#sudo chown tu_username:sharer www
#sudo chmod 775 www
#sudo chmod g+s www
editamos /etc/samba/smb.conf
path = /var/www
valid users = sharer
read only = No
create mask = 0777
directory mask = 0777
Ahora reiniciamos samba
#sudo /etc/init.d/samba restart
Codigo para montar desde un linux (probado en un linux ubuntu 9.10)
sudo mount -t cifs //192.168.1.130/www /mnt/smb -o username=sharer,password=xxxxx
Ahora viene montar la unidad desde windows
En mi caso tengo el windows en ingles
En windows nos vamos al explorador de windows
ahí seleccionamos Tools->Map Network Drive
En mi caso le asigne la unidad 'Z'
y la carpeta \\la_ip_de_mi_linux\www
Selecciono: Connect using a different user name (conectarse con un usuario distinto).
usuario: sharer
password: cla clave asignada al usuario sharer
Presionamos 'OK' y finalmente 'Finish'
Quedando finalmente asi.
domingo, 5 de abril de 2009
Columna con 100% de alto dentro de div.
Si el contenido de la columna del lado izq hacia que excediera la altura del contenedor debia funcionar la opción css 'overflow: auto'
Primero genere una página basándome en http://www.cssstickyfooter.com/ para que el pie de pagina siempre quedara al final (razón por me era desconocido la altura del contenedor).
además use las librerías de prototype para simplificar el manejo de los javascript.
Quedando asi.

el lado blanco representa el menú izquierdo, el amarillo el contenido donde si desean pueden aplicar el mismo truco, la parte inferior el pie de página.
Codigo XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link rel="stylesheet" href="http://www.cssstickyfooter.com/style.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://www.prototypejs.org/javascripts/prototype.js"></script>
<script type="text/javascript">
Event.observe(window, 'load', function() {
redimensiona();
});
window.onresize = function(){
redimensiona();
}
function redimensiona(){
var contenedor = $('contenedor');
var menu = $('menu-izq');
var foot = $('footer');
var contDims = contenedor.getDimensions();
var menuDims = menu.getDimensions();
var footDims = foot.getDimensions();
var y = ( contDims.height - footDims.height ) ; /*resto footer*/
var styles = { height: y +'px' };
menu.setStyle(styles);
}
</script>
</head>
<body id="contenedor">
<div id="wrap" style="background-color:#CCCCCC">
<div id="main" class="clearfix" >
<div id="menu-izq" style="background-color:#FFFFFF;float:left;width:100px;overflow:auto;">menu </div>
<div id="detalle" style="background-color:#FFFF00">contenido</div>
</div>
</div>
<div id="footer" style="background-color:#993300">
Pie de pagina
</div>
</body>
</html>
la función redimensiona se encarga de redimensionar la altura del menú izquierdo al calcular la nueva altura 'y' al restarle al contenedor principal 'contenedor' la altura del pie 'footer' con la operacion var y = ( contDims.height - footDims.height ) ; para luego reasignársela al menú 'menu-izq' con var styles = { height: y +'px' }; menu.setStyle(styles); .
miércoles, 17 de diciembre de 2008
Concierto de madonna

En lo personal tengo repoca experiencia en conciertos masivos, el anterior fue el the police en chile.
y ahora me toco asistir al de Madonna, desde un principio se veía que todo seria complicado desde adquirir un ticket, hasta ver el concierto y así fue.
Primero con mucha anticipación comenzaron a verse distintos rumores sobre el costo de las entradas donde la más barata rodearía los 75.000 o algo asi.
por suerte fue algo más barata, según precios que encontré publicados en internet:
Galería $ 23.000
Lateral $ 39.000
Andes $ 65.000
Pacífico Bajo $ 105.000
Pacifico Alto $ 165.000
Pacífico Medio$ 205.000
Cancha Vip $ 150.000
Cancha $ 39.000
bueno por surte las entradas llegaron a mis manos sin tramites ni sorteos, y sin el cargo por ticket máster :D, luego de esto a esperar.
Y comenzó la gira por Sudamérica, y el argentina comienzan los problemas ya que el primer concierto se retraso un día con lo cual ya se especulaba que en chile pasaría lo mismo, por surte fue falsa alarma.
y llego el día del concierto y pasaban las horas y Madonna aun no llegaba, al final ni idea a qué hora llego, pero las pruebas de sonido se retrasaron y se retraso en algo el ingreso al estadio.
Se llego al estadio a las 15:00 y ya tenían el trafico cortado, por lo cual debimos llegar a las proximidades del estadio caminando.
y solo llegamos a un radio próximo, ya que no dejaban acercarse mas al estadio, solo quienes habían llegado antes estaban ya haciendo la fila para entrar.
bueno a las 4 dejaron pasar a un grupo para acercarse al estadio y hacer la fila, y poder deleitarse con la llovizna provocada por el guanaco.
Pasada las 5 comenzó a ingresarse al estadio, estampida humana, tarupidos que empujaban sin pensar a en quienes quedaban aplastados contra el suelo o alguna reja, pero se llego a cancha.
una vez en la cancha había que acercarse a la reja que nos separaba de la cancha vip, cosa que se logro con esmero, en el intertanto todos quienes te rodeaban eran tus amigos, no se ni como se llamaban, ni de donde eran pero eran tus amigos, bromas de ida y vuelta, conversaciones varias, pelambres y un montón de temas de conversación con personas que no conocías ni volverías a ver...
a las 8:30 partió el telonero, Paul Oakenfold entretenido pero se hizo largo...
luego un receso y comenzó el concierto...
Saltando, Bailando durante 2 horas que se hicieron nada, luces, sonido y puesta en escena espectacular.
movían el show a un lado del escenario mientras sin que te dieras cuenta por el otro lado aparecía un ring, un auto, etc... todo bien coordinado, todo bkn!!
Después de estas cortísimas 2 horas te das cuenta que tus piernas ya no existen, que estas agotado, etc...
pero todo valió la pena
martes, 2 de diciembre de 2008
Socios

En mi vida profesional, pocas veces he volcado las ganas de emprender en hechos y debido a mi poca experiencia siempre he buscado algún tipo de socio que me sirva de ayuda y apoyo.
Lamentablemente estos no pasan del “vamos”, ”me gusta la idea”, “echémosle pa’ adelante”, etc.
Siempre quedan en el camino con un sin fin de escusas... generando desmotivación y muchas veces el fin de una idea...
espero que la lección por mi lado este aprendida para mi última iniciativa que pronto estará online, pase por 3 alternativas de socios o partners o como se quiera llamar, que no dieron frutos. La idea siguió vigente y ya está muy cerca de concretizarse.
En lo personal ha sido una buena lección, donde se me ha demostrado que nadie tiene el mismo entusiasmo por una idea salvo uno mismo. y si no existen lucas seguras de por medio... muchas personas no pasaran de una declaración de buenas intenciones.
Aun así existe gente entusiasta que siempre seria un aporte, el problema es encontrarlas y tener lograr las confianzas mutuas.
jueves, 13 de noviembre de 2008
Discriminación?
El sitio está recién creado y me ya me sale este mensaje:"Posibles infracciones de las Condiciones del servicio de Blogger
Posibles infracciones de las Condiciones del servicio de BloggerEste blog se está revisando debido a una posible infracción de las Condiciones del servicio de Blogger.".
Desconozco completamente el por qué de esta postura, espero que no sea simplemente por el robot de blogspot pensó que mi nick tiene una connotación árabe, que para mi esta relacionada con la tierra donde nació mi familia y para “Algunos” gringos tienen una connotación terrorista.
Veamos cuánto dura este mensaje.
Actualización: El sitio esta declarado como sitio generador de posible spam.... por que no se...ahora ya realice los tramites que me conciernes a mi ... ahora debo esperar que me revisen el blog y no se cuanto tardaran.
Finalmente el sitio fue desbloquiado a finales de noviembre, no recuerdo la fecha exacta. aunque ya esta funcionandocorrectamente.