miércoles, 24 de agosto de 2011

Call to a member function remove() on a non-object


Si estas usando el cache system de Symfony, debes tener un problema similar a  Call to a member function remove() on a non-object, eso siginifica que getViewCacheManager retorna null.

Seguro has estado mas de 2 dias googleando y llegaste aqui !

El problema es que cuando estas trabajando en el entorno .dev el cache no esta activo, por eso no funciona sfContext::getViewCacheManager()

Solo debes activarlo en settings.yml

   dev:
     .settings:
       error_reporting:                                                         
       web_debug:              true
       cache:                  true
Eso es todo!

Fuente: http://www.pbtg.com/blogs/jim/2009/07/15/symfony-cache-gotcha

Variables en Symfony

[sf_symfony_lib_dir] 
    [sf_root_dir] 
    [sf_apps_dir] 
    [sf_lib_dir] 
    [sf_log_dir] 
    [sf_data_dir] 
    [sf_config_dir]
    [sf_test_dir]
    [sf_plugins_dir]
    [sf_web_dir]
    [sf_upload_dir]
    [sf_cache_dir]
    [sf_app_base_cache_dir]
    [sf_app_cache_dir]
    [sf_template_cache_dir]
    [sf_i18n_cache_dir]
    [sf_config_cache_dir]
    [sf_test_cache_dir]
    [sf_module_cache_dir]
    [sf_app]
    [sf_environment]
    [sf_debug]
    [sf_app_dir]
    [sf_app_config_dir]
    [sf_app_lib_dir]
    [sf_app_module_dir]
    [sf_app_template_dir]
    [sf_app_i18n_dir]
    [sf_error_404_module]
    [sf_error_404_action]
    [sf_login_module]
    [sf_login_action]
    [sf_secure_module]
    [sf_secure_action]
    [sf_module_disabled_module]
    [sf_module_disabled_action]
    [sf_use_database]
    [sf_i18n]
    [sf_compressed]
    [sf_check_lock]
    [sf_csrf_secret]
    [sf_escaping_strategy]
    [sf_escaping_method]
    [sf_no_script_name]
    [sf_cache] 
    [sf_etag]
    [sf_web_debug]
    [sf_error_reporting]
    [sf_file_link_format]
    [sf_admin_web_dir]
    [sf_web_debug_web_dir]
    [sf_standard_helpers]
    [sf_enabled_modules]
    [sf_charset]
    [sf_logging_enabled]
    [sf_default_culture]
 
print_r(sfConfig::getAll());

Valores por defecto en formularios symfony

Para poner un valor por defecto al cargar un formulario, nada tan sencillo como poner en el actions:
$this->form->setDefault(’nombrecampo’, ‘valorcampo’);

Fuente: http://www.informaticosinmemoria.com/2009/10/valores-por-defecto-en-formularios-symfony/

Para ver el error en un al grabar un formulario


if ($form->isValid()){
     $form->save();
}else {
     echo $form->getErrorSchema()->getMessage();
}

¿ Que módulo o acción se está ejecutando?


Para saber el modulo que se está ejecutando:
$this->getModuleName()

Y para saber la acción:
$this->getActionName()


Fuente: http://www.informaticosinmemoria.com/2009/11/%c2%bf-que-modulo-o-accion-se-esta-ejecutando/

Mejorando el selector de culturas de Symfony

Extraído de Practical Symfony – Día 19: Internacionalización y Localización:
Pero la mayor parte del tiempo, tu sitio web no estará disponible en los 136 principales idiomas. El método getPreferredCulture() devuelve el mejor lenguaje mediante la comparación de los idiomas preferidos del usuario y los idiomas de tu sitio web:
// in an action
$language = $request->getPreferredCulture(array('en', 'fr'));
Sí, pero si quieres hilar fino en tus aplicaciones pronto descubrirás que se queda corto con el método getPreferredCulture():
/**
   * Returns the preferred culture for the current request.
   *
   * @  array  $cultures  An array of ordered cultures available
   *
   * @ string The preferred culture
   */
  public function getPreferredCulture(array $cultures = null)
  {
    $preferredCultures = $this->getLanguages();
 
    if (null === $cultures)
    {
      return isset($preferredCultures[0]) ? $preferredCultures[0] : null;
    }
 
    if (!$preferredCultures)
    {
      return $cultures[0];
    }
 
    $preferredCultures = array_values(array_intersect($preferredCultures, $cultures));
 
    return isset($preferredCultures[0]) ? $preferredCultures[0] : $cultures[0];
  }
O lo que viene a ser lo mismo: Devuélveme el primero que exista, el primero de los definidos en el navegador o nada en absoluto.
Aunque resulte raro, en la mayoría de los casos este nivel de complejidad es el suficiente ya que Symfony arreglará cualquier imprecisión que pueda darse si este mecanismo falla. No hay que olvidar que en el fichero settings.yml debemos definir una cultura por defecto para nuestra aplicación.
Pero, ¿qué pasa si un usuario configura su navegador para español de México e inglés (en ese orden de prioridad) y mi aplicación admite español (genérico) e inglés? El algoritmo anterior nos devolverá como preferido el inglés erróneamente. Según la configuración del navegador, se debería presentar un texto en español (aunque no sea en su variedad mexicana) y si esto no fuera posible, una traducción en inglés.
Es decir, los códigos de 5 carácteres de culturas como es_MX especifican una variedad del español pero no excluyen la cultura es a secas.
Por lo tanto, propongo el siguiente método para realizar una selección más precisa y configurable:
/**
   * Makes the best choice of culture. It can check the domain of preferred
   * languages in order to choose a more generic language if it's available.
   *
   * Example:
   * 
   * preferred cultures: es_ES, en
   * available cultures: es, en, fr
   * 
   * In this example this method will return 'es' over 'en' as the best choice
   * if $checkCultureDomains flag is enabled.
   *
   * If no preferred culture is available this method will return the
   * $defaultCulture.
   * 
   * @ array $availableCultures Array of valid available cultures
   * @ array $preferredCultures Array of preferred cultures. Order DOES matter (lower index => higher priority)
   * @ string $defaultCulture A default culture if none of the preferred cultures is available
   * @ bool $checkCultureDomains Flag to enable/disable language domain check
   * @ string best choice culture
   */
  public static function bestChoiceCulture($availableCultures, $preferredCultures, $defaultCulture, $checkCultureDomains = true) {
    foreach ($preferredCultures as $culture) {
      if (in_array($culture, $availableCultures)) {
        return $culture;
      }
      if ($checkCultureDomains) {
        $domain = substr($culture, 0, 2);
        if ($domain != $culture && in_array($domain, $availableCultures)) {
          return $domain;
        }
      }
    }
    return $defaultCulture;
  }
El único aspecto sobre el que dudo en este método es sobre la corrección de pasarle un valor por defecto a la función para ser devuelto si el algoritmo no encuentra una cultura apropiada. Qué se yo, prefiero dejarlo así por darle coherencia y atomicidad al método cuando lo use por ahí. Si molesta, se puede quitar y reemplazarlo por un return null o incluso una excepción. Al gusto del consumidor.
Happy coding!

viernes, 1 de julio de 2011

No puedo iniciar sesion como Cliente de Terminal Server

Seguro a muchos le han dado el mismo problema...

  1. Debemos añadir a los usuarios a "usuarios de escritorio remoto", 
  2. Abrir las politicas del sistema (gpedit.msc) 
  3. Ir a la ruta:
    1. Configuración del Equipo >
    2. Configuración de Windows >
    3. Configuración de Seguridad >
    4. Directivas Locales >
    5. Asignación de Derechos de Usuarios
  4. Y en la entrada "Permitir inicio de sesión a través de servicios de terminal server" 
  5. Añadí tanto al grupo de usuarios de escritorio remoto como a los que me interesan
  6. Aceptar y Aplicar todas las veces que sean necesarias para cerrar todo.
Una solución muy útil y un poco rebuscada para habilitar el acceso por Terminal Server.

Fuente: http://foro.ethek.com/viewtopic.php?f=7&t=9844#p54527

lunes, 27 de junio de 2011

No funciona el numpad en mi Ubuntu

Me paso esto en el trabajo (y a pesar de todo) no queria dejar de postear la solución, para usar el numpad como mouse, o recuperar el numpad, debes presionar

Shift + Bloq Num

Hagan la prueba.

fuente: http://www.prothotype.com/blog/archives/668/no-funcion-el-numpad-en-mi-ubuntu-o-como-usar-el-numpad-como-mouse/

jueves, 26 de mayo de 2011

Conditional object actions for the admin generator Explained

http://snippets.symfony-project.org/snippet/467


ReUse of:
Conditional object actions for the admin generator By Georg Sorst

The list view of the admin generator currently always displays all defined object actions for each object. There is no way to display an object action for an object only if some condition on this object itself is met.

In order to extend the admin generator with this functionality only a small enhancement is required. You can either apply this change per module or create a new admin generator theme as described in the Symfony book.

The templates/_list_td_actions.php has to be extended to look roughly like this, depending on whether you already have your own modifications in there.

I use sf v1.4.11, for make this enhancement...

First, you should find the partial _list_td_actions.php found in
lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_actions.php 
And modify the original code like this:
<td>
    <?php if ($this->configuration->getValue('list.object_actions')): ?> 
    <ul class="sf_admin_td_actions">

    <?php foreach ($this->configuration->getValue('list.object_actions') as $name => $params): ?>

        <?php if ( isset( $params['condition'] ) ): ?>

            [?php if ( <?php echo ( isset( $params['condition']['invert'] ) && $params['condition']['invert'] ? '!' : '') . '$' . $this->getSingularName( ) . '->' . $params['condition']['function'] ?>( <?php echo ( isset( $params['condition']['params'] ) ? $params['condition']['params'] : '' ) ?> ) ): ?] 
        <?php endif; ?>

 
        <?php if ('_delete' == $name): ?>
            <?php echo $this->addCredentialCondition('[?php echo $helper->linkToDelete($'.$this->getSingularName().', '.$this->asPhp($params).') ?]', $params) ?>

        <?php elseif ('_edit' == $name): ?>
            <?php echo $this->addCredentialCondition('[?php echo $helper->linkToEdit($'.$this->getSingularName().', '.$this->asPhp($params).') ?]', $params) ?>

        <?php elseif ('_show' == $name): ?>
            <?php echo $this->addCredentialCondition('[?php echo $helper->linkToShow($'.$this->getSingularName().', '.$this->asPhp($params).') ?]', $params) ?>

        <?php else: ?>
            <li class="sf_admin_action_<?php echo $params['class_suffix'] ?>">
                <?php echo $this->addCredentialCondition($this->getLinkToAction($name, $params, true), $params) ?>

            </li>
        <?php endif; ?>
 
        <?php if ( isset( $params['condition'] ) ): ?>

            [?php endif; ?]
        <?php endif; ?>
    <?php endforeach; ?>

    </ul>
    <?php endif; ?>
</td>
 

Second, in the generator.yml you should add aditional lines like

actionName:
            label:          actionLabel
            action:         executeAction
            #Now the enhancement =D
            condition:
              # function is the name of function in the model::functionName and must return boolean
              function:     functionName 
              # params are the params to send to functionName
              params:       "$model->getDbField(), $sf_user, 'test'"

              # invert is used if you need invert the result of functionName
              invert:       false
 

Third and final step, go to

lib/model/doctrine/model.class.php
 

and create the functionName like:

/**
* $param1 is $model->getDbField()
* $param2 is $sf_user
* $param3 is 'test'
*/
public function functionName($param1, $param2, $param3){

        //code personal
        return boolean;
    }
 

Final, important!

php symfony cache:clear 
 

Well that's all, sorry for my bad English =S
Thanks Georg Sorst and Google Translator

lunes, 16 de mayo de 2011

Symfony url_for in ACTION

symfony tutorial

Symfony url_for() method return the URL according to current context, remember url_for method is available only in VIEW part of Symfony MVC, what if one wants to create a HTML in MODEL (although it is not recommended, just in case) and in that HTML there are link which needs to be formatted according to current context, for that there is a method in Symfony generateUrl().

generateUrl() Method Signature

string generateUrl('URL_ROUTE',  
         array(  
        'module'=>'MODULE_NAME',  
        'action'=>'ACTION_CALLED',  
        'PARAMS'=>'VALUE'  
             ),  
        $isAbsolute  
);  

URL_ROUTE is the SEO Friendly URL pattern you defined in config file of module, if not defined use 'default' second is the config array in which we define module name and the action we want to call next is the parameter we want to pass via URL you can pass as many as you want params through it, in the form 'PARAM1'=>'VALUE1','PARAM2'=>'VALUE2',.... and last parameter is $isAbsolute it instruct whether we want relative or absolute URL, default is false it generate relative URL by default.

Example

$this->generateUrl('default',
array('module'=>'User','action'=>'EditUser','uid'=>$id))  

the out will be something like this...

backend_dev.php/User/EditUser/uid/1130  

hope it helps...

Fuente: http://www.tutorialjinni.com/2011/04/symfony-urlfor-in-action.html

viernes, 15 de abril de 2011

Conociendo el P2K Tools




Barra de herramientas, con los botones

SWITCH TO AT MODE/P2K MODE:
Nos permite poner el tel. en modo AT o P2K. Por ahora el que nos interesa es P2K, así que esto lo dejamos como está.



RESTART: Para reiniciar el teléfono, se utiliza luego de realizar algún cambio como por ej: modificación de volumen o al instalar una nueva skin. 

ALL SILENT: Nos pone todos los eventos del celu (llamada, aviso de mensaje, alarma) en Silencioso. Lo utilizamos cuando por ej. borramos algún archivo de sonido y luego no nos deja entrar al menú de sonidos. 

FIX MELODYDB: Se utiliza también para el caso que describí arriba, sólo que este lo que hace es reconstruirnos los archivos mytonedb.db y temptonedb.db. También es posible hacer esto de forma manual (yo prefiero manual más adelante explicaré cómo). 

VIEW: Nos filtra los archivos por atributo (o sea, sólo nos mostrará los que nosotros queramos, ya sean de sistema, ocultos, sólo lectura o de usuario).

STYLE: Define el estilo de listado para el administrador de archivos. Acá deben elegir el que les quede más cómodo (lista, detalles, íconos grandes, pequeños, etc.)



Menú TOOLS (Herramientas)

OPTIONS:
Nos permite elegir entre los modos (AT ó P2K) y configurar su funcionamiento (en modo AT, el puerto, velocidad, etc.).

CHANGE VOLUME: Opciones para cambiar el volumen de los speakers.

EXTERNAL LCD: Para cambiar el texto de la pantalla externa.

WEB ACCESS: Para configurar las sesiones web de nuestro celu.

CUSTOM ANIMATION: Opciones para modificar las pantallas de encendido/apagado y los sonidos.

MY MENU y CUSTOM LANGUAGE: Para menús y lenguajes personalizados. Nunca pude probarlos porque por lo menos en mi caso me aparecen caracteres extraños al leerlos desde el celu.


Administrador de archivos

FOLDER TREE:
Nos muestra las carpetas de nuestro celu.

FILE OPERATIONS: contiene las operaciones que el programa nos permite realizar con los archivos, las cuales son:

REFRESH: para actualizar la lista de archivos.

DOWNLOAD: para bajar archivos desde el celu a la computadora.

DELETE: para borrar archivos del celu.

UPLOAD: para subir archivos de la compu al celu.

USE SEARCH PATTERN: para filtrar los archivos que queremos ver en el administrador de archivos, por ejemplo: "*.*" nos mostrará todos los archivos, "A*.GIF" nos mostrará todos los archivos .GIF cuyo nombre empiece con la letra A, etc.

USE UPLOAD PATH: define la carpeta a la que queremos subir los archivos. No es necesario tocarla ya que las carpetas las elegiremos nosotros en Folder Tree.

FILE INFORMATION: ofrece información acerca del archivo que hayamos seleccionado en la lista del administrador.

PATH: nos informa de la ubicación del archivo.

NAME: nos informa el nombre completo del archivo.

SIZE: tamaño del archivo.

ATTRIBUTES: sus atributos. Tenemos: read-only (sólo lectura), hidden (oculto, los vemos en el administrador de archivos pero no desde el celu), system (archivo de sistema).

CHANGE: una vez establecidos los atributos que queramos para determinado archivo, mediante las casillas de verificación, debemos hacer clic acá para aplicarlos. 


4 - Barra lateral: Permite acceder a las distintas "secciones" del programa, que son las siguientes:
FILE MANAGER: es el administrador de archivos, sobre el que ya estuvimos tratando unas líneas más arriba.
SEEM EDITOR: para editar las seems. No recomiendo utilizar este programa, sino el XVI32 y el P2KMan. Uno ya lo tienen posteado, el otro lo subiré cuando les escriba algo referente a edición de seems.
OTHER FEATURES: nos permite modificar características del celu tales como Mensajes y Multimedia, esto es, agregar/quitar opciones, y modificar otras. Más adelante lo explicaré con mayor detalle.
KJAVA: para instalar/borrar programas JAVA. No recomiendo utilizar P2KTools para esto, para JAVA usen el MotoMidMan.
P2KINFO: información del celu, como ser: flex, language pack, modelo, etc.
FLEX: para modificar la flex de nuestros celus.
ALARM CLOCK: para modificar y definir alarmas.
RING STYLES: para modificar y definir estilos de timbre.

5 - Barra de estado: Nos ofrece información como ser:
STATUS: puede variar entre CONNECTED (conectado, luz verde) cuando el celu está conectado correctamente, ó NOT CONNECTED (no conectado, luz roja) cuando no tenemos el celu conectado.
FREE SPACE: nos muestra el espacio que nos queda libre en nuestro celu. En mi caso muestra el que queda libre en latarjeta de memoria.
FILES: cantidad total de archivos que tenemos en nuestro celu.
MODEL: tan simple como el modelo de celular.

Programas Útiles




Drivers USB: 
Necesarios para que la PC reconozca tu celular. 
El mejor programa para realizar cualquier tipo de edición a nuestro celular de forma segura.

Modifica opciones de tu celular, tales como la imagen de la pantalla externa, o aumentar la duración de la grabación de video.

MotoMidMan: Sirve subir, bajar o eliminar juegos y aplicaciones Java a tu celular. 

Java Adapter for Mobile: Utilizado para cambiar las resoluciones de juegos o aplicaciones javas. 

SkinMan: Sirve subir, bajar o eliminar skins a tu celular. 

Skin View: Sirve para previsualizar los skins antes de subirlo a nuestro celular. 

Skinner4Moto: Sirve para crear o modificar skins. 

MSNap: Para sacar screenshots (capturas de pantalla) de tu celular Motorola. 

MP3 To Ringtone Gold: Convierte cualquier sonido desde formatos estándar para PC y CD de audio (.mp3, .wma, .wav, .ogg, etc.) a formato compatible y de tamaño reducido para tu teléfono móvil (.mmf, .amr, .mp3, .wav, .qcp). 

MotoTables: Para editar el gain_table del celular. 

Opedit: Se utiliza para cambiar el texto del operador "a mano", editando el archivo plmn_text_table.bin. 

Funlights Editor: Para editar las luces disco/luces de ritmo del celular. 

MotoSpeed: Utilizado para acelerar los menús del celular, USAR CON CUIDADO. 

PST Phone Programmer: Sirve para averiguar el código de bloqueo de funciones. 

YAMP: Sirve para poder editar nuestro celular. 

Flash & Backup: Programa utilizado para realizar backup y flasheo. 

RSD LITE: Programa utilizado para el flasheo.

SHXCoDec: Utilizado para compilar/descompilar archivos .SHX (flashes). 

Random’s SHX Toolkit: Para trabajar con flashes en formato .SHX 

Moteasy: Programa utilizado para cambiar el IMEI de nuestro celular.

Motorola V3


Descripción:

El Moto RAZR V3 fue creado con tecnología de punta, para un excepcional desempeño. Dentro de su diseño ultrafino encontramos avanzadas características como: reproducción de vídeo en MPEG4, tecnología inalámbrica Bluetooth® y cámara digital, entre otras. Además, con su teclado de gran precisión, sencillo estilo y acabado metálico, el V3 tiene una apariencia original e inconfundible.

martes, 22 de marzo de 2011

PHP Enviar Array por GET

WOW, como he sufrido con esto! cuantas horas le he dedicado. Gracias a Foros del Web, google y referencia personal lo HE ENCONTRADO.

No se si alguno de ustedes lo ha intentado ya, pero esto se trata de Enviar un Array Asociativo por GET request, SIN USAR FORMULARIOS. Bueno aqui tengo la solucion!


href="data_enviar.php?q=cualquiercosa¶m= $_SESSION['unoVal'], "dos" => $_SESSION['dosVal']))); ?>"

Resumiendo:
Los parametros deben ser pasados por:

array();
serialize();
urlencode();


Luego cuando llegan al destino se debe revertir todo eso:

unserialize(urldecode(stripslashes($_GET["param"])));

stripslashes();
urldecode();
unserialize();

Y finalmente obtenemos nuestro array(); identico.



Fuentes: http://www.forosdelweb.com/f18/faqs-php-530600/#post262072
Experiencia Personal

jueves, 3 de marzo de 2011

Zimbra en Ubuntu Server 8.04 LTS

Este tutorial lo encontré en Ubuntu-es, pero también comparto mi experiencia instalando Zimbra.

Zimbra es una excelente Suite de Correo donde simplifica toda la configuración e interfaz de Postfix o Sendmail, sin comentar que la interfaz grafica es comoda y excelente, nada que envidiarle a Yahoo, Hotmail o Gmail.

Escenario: Servidor de 32Bits, Ubuntu 8.04 LTS, Zimbra 7.0.0 GA

Vamos a comenzar!

Primero revisamos el /etc/hosts donde se coloca nombre del equipo y dominio para el que va a ser servidor de correo, deberia haber algo parecido a esto:

127.0.0.1 localhost localhost
127.0.0.1 mail-server.zimbra mail-server
192.168.0.110 mail-server.zimbra mail-server

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Luego revisamos el archivo /etc/resolv.conf que estén configurado los ip de nuestro servidor dns en el caso de que el servidor de correo este detras un firewall o gateway en una red privada.

# Generated by NetworkManager
search mail-server.zimbra
nameserver 192.168.0.X #Nuestro servidor de DNS o Proxy

Luego de esto desintalamos los paquetes innecesarios para nuestra instalación y que ademas dan problemas con el zimbra

sudo apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light

Acto seguido instalamos los que si necesitamos

apt-get install libc6-i686 sudo libidn11 curl fetchmail libgmp3c2 libexpat1 libgetopt-mixed-perl libxml2 libstdc++6 libpcre3 libltdl3 ssh

Ya con esto tenemos el sistema listo para empezar con la instalación del zimbra nos cambiamos de directorio y nos descargamos la ultima versión que para el momento es 7.0.0 GA


wget http://files2.zimbra.com/downloads/7.0.0_GA/zcs-7.0.0_GA_3077.UBUNTU8.20110127201433.tgz

Luego que lo hemos descargado empezamos con la instalación,
  1. Descomprimimos el archivo
  2. Entramos en el directorio que descomprimimos
  3. Instalamos
tar xvfz zcs-7.0.0_GA_3077.UBUNTU8.20110127201433.tgz
cd zcs-7.0.0_GA_3077.UBUNTU8.20110127201433
./install.sh

En este paso nos hara una serie de preguntas y va a chequear las dependencias previas

Checking for prerequisites...
NPTL...FOUND
sudo...FOUND sudo-1.6.8p12-4
libidn11...FOUND libidn11-0.6.5-1
fetchmail...FOUND fetchmail-6.3.6-1etch1
libpcre3...FOUND libpcre3-6.7+7.4-2
libgmp3c2...FOUND libgmp3c2-2:4.2.1+dfsg-4
libxml2...FOUND libxml2-2.6.27.dfsg-2
libstdc++6...FOUND libstdc++6-4.1.1-21
openssl...FOUND openssl-0.9.8c-4etch1
libltdl3...FOUND libltdl3-1.5.22-4
Prerequisite check complete.
Checking for standard system perl...
perl-5.8.8...FOUND standard system perl-5.8.8

Install zimbra-ldap [Y] Y
Install zimbra-logger [Y] Y
Install zimbra-mta [Y] Y
Install zimbra-snmp [Y] Y
Install zimbra-store [Y] Y
Install zimbra-apache [Y] Y
Install zimbra-spell [Y] Y
Install zimbra-proxy [N] N

The system will be modified. Continue? [N] Y

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
+Create Admin User: yes
+Admin user to create: admin@mail-server.zimbra
******* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: spam.m0bqyoayc@mail-server.zimbra
+Non-spam(Ham) training user: ham.ygch0qyz1@mail-server.zimbra
+Global Documents Account: wiki@mail-server.zimbra
+SMTP host: mail-server.zimbra
+Web server HTTP port: 80
+Web server HTTPS port: 443
+Web server mode: http
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://mail-server.zimbra:7780/aspell.php

4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

Address unconfigured (**) items (? - help)

Aqui tienes que elegir la opción numero 3 y ponerle una clave al usuario admin no menor de 6 digitos, cn este usuario es que vamos a trabajar siempre para administrar nuestro servidor


Store configuration

1) Status: Enabled
2) Create Admin User: yes
3) Admin user to create: admin@mail-server.zimbra
** 4) Admin Password UNSET
5) Enable automated spam training: yes
6) Spam training user: spam.m0bqyoayc@mail-server.zimbra
7) Non-spam(Ham) training user: ham.ygch0qyz1@mail-server.zimbra
8) Global Documents Account: wiki@mail-server.zimbra
9) SMTP host: server1.example.com
10) Web server HTTP port: 80
11) Web server HTTPS port: 443
12) Web server mode: http
13) IMAP server port: 143
14) IMAP server SSL port: 993
15) POP server port: 110
16) POP server SSL port: 995
17) Use spell check server: yes
18) Spell server URL: http://mail-server.zimbra:7780/aspell.php

Select, or 'r' for previous menu [r]

Enter "4" (without the quotes) and press "Enter" to modify the admin password. Now you'll be asked for the new password.

Password for admin@mail-server.zimbra (min 6 characters): [TR9Fm7uD]

Aqui introduces el password para el usuario admin

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help)

Con esot ya tenemos casi listo nuestro servidor de correo nos hara una preguna sobre donde y en que archivo va a sarvar los cambio le damos a todo enter

Save configuration data to a file? [Yes] Enter
Save config in file: [/opt/zimbra/config.5422]
Saving config in /opt/zimbra/config.5422...done.
The system will be modified - continue? [No] Y

Operations logged to /tmp/zmsetup.02062008-135354.log
Setting local config values...done.
Setting up CA...done.
Creating SSL certificate...done.
Initializing ldap...done.
Setting replication password...done.
Setting Postfix password...done.
Setting amavis password...done.
Deploying CA to /opt/zimbra/conf/ca ...done.
Creating server entry for mail-server.zimbra...done.
Setting spell check URL...done.
Setting service ports on mail-server.zimbra...done.
Adding mail-server.zimbra to zimbraMailHostPool in default COS...done.
Installing skins...
hotrod
lavender
waves
steel
sky
bones
yahoo
sand
lemongrass
beach
bare
done.
Setting zimbraFeatureIMEnabled=FALSE...done.
Setting zimbraFeatureTasksEnabled=TRUE...done.
Setting zimbraFeatureBriefcasesEnabled=TRUE...done.
Setting zimbraFeatureNotebookEnabled=TRUE...done.
Setting MTA auth host...done.
Setting TimeZone Preference...done.
Creating domain mail-server.zimbra...done.
Creating user admin@mail-server.zimbra...done.
Creating postmaster alias...done.
Creating user wiki@mail-server.zimbra...done.
Creating user spam.m0bqyoayc@mail-server.zimbra...done.
Creating user ham.ygch0qyz1@mail-server.zimbra...done.
Setting spam training accounts...done.
Initializing store sql database...done.
Setting zimbraSmtpHostname for mail-server.zimbra...done.
Initializing logger sql database...done.
Initializing mta config...done.
Configuring SNMP...done.
Setting services on mail-server.zimbra...done.
Setting up zimbra crontab...done.
Setting up syslog.conf...done.

After all you'll be asked if you want to notify Zimbra of your installation. Press "Enter" if you want to do that, or enter "N" (without the quotes) and press "Enter" if you disagree to that. Afterwards the system will be initialized - it should look like this:

Starting servers...done.
Checking for deprecated zimlets...done.
Installing zimlets...
com_zimbra_date
com_zimbra_url
com_zimbra_cert_manager
com_zimbra_phone
com_zimbra_search
com_zimbra_local
com_zimbra_email
done.
Initializing Documents...done.
Restarting mailboxd...done.

Moving /tmp/zmsetup.02062008-135354.log to /opt/zimbra/log

Por ultimo para verificar que todo este bien nos cambiamos al usuario zimbra y verificamos que todos los servicios esten arriba de la siguiente manera

su - zimbra
zmcontrol status Esto nos deberia de arrojar como resultado lo siguiente
Host mail-server.zimbra
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Running
mta Running
snmp Running
spell Running
stats Running

En caso de no arrojar un resultado parecido a este intentamos levantar los servicios asi

zmcontrol start

Si todo ha ido bien tenemos listo nuestro servidor de correo sino es porque te saltaste algun paso del manual.

Para empezar a administrar nuestro servidor entramos a la consola administrativa de la siguiente manera

https://mail-server.zimbra:7071/zimbraAdmin/ 

Importante que "A" de Admin este en mayuscula si no esta en mayuscula no va a entrar en la consola aqui nos pide un usuraio y una clave el usuario es admin y la clave es la uqe pusimos hace ratos atras, la consola no la voy a explicar porque ella se explica sola es muy facil y eficiente, todo lo que resta es crear los usuarios y los dominios si vas a hacer el servidor multidominio y listo.

Para entrar en modo usuario entras de la siguiente manera

http://mail-server.zimbra 

Introduces el usuario en este formato usuario@midominio.com y la clave si no le pones el @dominio no va a entrar debido a que puede ser servidor multi-dominio, como información adicional les digo que antes de empezar a instalar el zimbra tienen que tener el DNS bien configurado apuntando hacia la ip de nuestro servidor de correo porque sino el zimbra les va a dar error en la instalación.


Fuente: http://www.ubuntu-es.org/index.php?q=node/96029
Fuente: Experiencia Personal

Comenzemos!

Geek

Geek (del inglés geek, pronunciado "guik": IPA /gi:k/) es un término que se utiliza para referirse a la persona fascinada por la tecnología y la informática. El término «geek» en español está relacionado sólo con la tecnología, a diferencia del uso del término geek en inglés, que tiene un significado más amplio y equivalente al término español friki.

El concepto al que se refiere el término Nerd es compartido por Geek. Se entiende que para una persona Geek no importa demasiado el grado de extravagancia que conlleva el aprendizaje o tiempo invertido en sus habilidades.

Las connotaciones sociales de dichas características llevan al término Geek más allá de una simple definición para convertirlo en un estilo de vida del cual, habitualmente, el sujeto suele sentirse orgulloso; algo en lo que, de nuevo, vuelve a coincidir con el Nerd. Pero, de hecho, la extraversión del primero, ligada a su visceral neofilia (atracción por la tecnología y curiosidad generalizada por lo nuevo), entra en confrontación directa con el último.

Fuente: http://es.wikipedia.org/wiki/Geek