viernes, 18 de octubre de 2013

Instalar nginx con soporte para php


 sudo apt-get install nginx

 location ~ \.php$ {
 fastcgi_pass   127.0.0.1:9000;
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
 include fastcgi_params;
 
 
 

viernes, 27 de septiembre de 2013

usar json con jquery

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
    <title>JavaScript And JSON</title>
</head>
<body>

<h2>Links</h2>
<ol id="links">
</ol>

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="myscript.js"></script>

</body>
</html>


myscript.js

$(document).ready(function() {

    $.getJSON('data.json', function(info){

            var output='';
            for (var i = 0; i <= info.links.length-1; i++) {
                for (key in info.links[i]) {
                    if (info.links[i].hasOwnProperty(key)) {
                        output += '<li>' +
                        '<a href = "' + info.links[i][key] +
                        '">' + key + '</a>';
                        '</li>';
                }  
                }
            }
           
            var update = document.getElementById('links');
            update.innerHTML = output;

    }); //getJSON

}); // ready




data.json

{
    "full_name" : "Ray Villalobos",
    "title" : "Staff Author",
    "links" : [
            { "blog"     : "http://iviewsource.com" },
            { "facebook" : "http://facebook.com/iviewsource" },
            { "podcast"  : "http://feeds.feedburner.com/authoredcontent" },
            { "twitter"  : "http://twitter.com/planetoftheweb" },
            { "youtube"  : "http://www.youtube.com/planetoftheweb" }
        ]




usar json con ajax

var request;
if (window.XMLHttpRequest) {
    request=new XMLHttpRequest();
} else {
    request=new ActiveXObject("Microsoft.XMLHTTP");
}

request.open('GET', 'data.json');
request.onreadystatechange = function() {
    if ((request.status === 200) &&
        (request.readyState === 4)) {

            info = JSON.parse(request.responseText);

            var output='';
            for (var i = 0; i <= info.links.length-1; i++) {
                for (key in info.links[i]) {
                    if (info.links[i].hasOwnProperty(key)) {
                        output += '<li>' +
                        '<a href = "' + info.links[i][key] +
                        '">' + key + '</a>';
                        '</li>';
                }  
                }
            }
           
            var update = document.getElementById('links');
            update.innerHTML = output;
           
           
    } //ready
} //event
request.send();

Recorrer un objeto json

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
    <title>JavaScript And JSON</title>
</head>
<body>
<h2>Links</h2>
<ul id="links">
</ul>


<script>

var info = {
"full_name" : "Ray Villalobos",
"title" : "Staff Author",
"links" : {
    "blog"     : "http://iviewsource.com",
    "facebook" : "http://facebook.com/iviewsource",
        "youtube"  : "http://www.youtube.com/planetoftheweb",
        "podcast"  : "http://feeds.feedburner.com/authoredcontent",
        "twitter"  : "http://twitter.com/planetoftheweb"
    }
};

var output = "";

for ( key in info.links ) {
    if (info.links.hasOwnProperty(key)) {
        output += '<li>' +
        '<a href = "' + info.links[key] +
        '">' + key + '</a>' +
        '</li>';
    } //if the links has the key property
} // for...go through each link

var update = document.getElementById('links');
update.innerHTML = output;


</script>
</body>
</html>

sábado, 21 de septiembre de 2013

Creando un entornovirtual

Creando un entorno virtual


Para crear un entorno virtual solo basta con situarse en la carpeta donde se ubicará y luego ejecutar:
$ virtualenv __nombre__

Siendo __nombre__ el nombre del entorno que deseas crear. Después, para acceder a él, deberás colocar:
$ cd __nombre__$ source bin/activate

Si estas en Windows:
$ cd __nombre__$ Scripts\activate.bat

Listo.

Por ultimo, dentro del entorno virtual, para instalar Django en cualquier sistema operativo solo basta con ejecutar:
$ pip django -U

-U lo colocamos para obtener la última versión.

Ahora todo se instalará y ejecutará dentro del entorno virtual.  Si deseas colocar algo de manera global, la instalación deberá ser fuera de este.

miércoles, 4 de septiembre de 2013

Instalar python

En Linux:

En linux ya tienes instalado Python, así que solo queda instalar easy_install, pip y virtualenv.

Ten en cuenta ser superusuario para cada uno de los comandos a ejecutar.

Para easy_install (si no lo tienes instalado):
$ sudo apt-get install python-setuptools python-dev build-essential

Ahora instalamos pip y virtualenv:
$ easy_install pip$ pip install virtualenv

jueves, 18 de julio de 2013

Evento .toggle(), .toggleClass()

El evento toggle() toma dos argumentos, cada uno de los cuales es una función . El primer clicc hace que se ejecute la primera funcion y el segundo click hace que se ejecute la segunda función.

$(document).ready(function() {
   $('#switcher h3').toggle(function() {
     $('#switcher .button').addClass('hidden');
   }, function() {
    $('#switcher .button').removeClass('hidden');
   });



El   metodo .toggleClass() comprueba si existe la clase antes de aplicarla.

 $(document).ready(function() {
   $('#switcher h3').click(function() {
     $('#switcher .button').toggleClass('hidden');
   });
 });


El metodo .hover() toma dos argumentos de función la primera se ejecuta en el over  y la segunada al salir.

 $(document).ready(function() {
   $('#switcher .button').hover(function() {
     $(this).addClass('hover');
   }, function() {
     $(this).removeClass('hover');
   });
 });



Eventos

El metodo bind  nos permite especificar cualquier evento javascript y anexarle un comportamiento.


 $(document).ready(function() {
   $('#switcher-large').bind('click', function() {
     $('body').addClass('large');
   });

 });


body.large .chapter {
  font-size: 1.5em;
}




      <div id="switcher">
        <h3>Estilo del switch</h3>
        <div class="button selected" id="switcher-default">
          Normal
        </div>
        <div class="button" id="switcher-narrow">
          Narrow Column
        </div>
        <div class="button" id="switcher-large">
          Large Print
        </div>
      </div>

Métodos transversales DOM

.filter()
.next()
.nextALL()
.prev()
.prevAll
.Simblings

  $('a').filter(function() {
    return this.hostname && this.hostname != location.hostname;
  }).addClass('external');
});
 $('td:contains(Henry)').nextAll().andSelf().addClass('highlight');



Selectores de formularios

Le toca el turno a los selectores de formulario. Este tipo de selectores se utilizan para acceder a una gran variedad de elementos de formulario dependiendo del tipo.
Como son una gran cantidad no voy a seguir el formato empleado en los otros selectores. Vamos a ver un resumen de la función de cada selector y si acaso algunos ejemplos. De todas formas la mayoría son autodescriptivos.

Form Selector

  • :input Selector : Selecciona todos los elementos de formulario(<input> de todos los tipos, <select>, <textarea> y <button>).
  • :text Selector : Selecciona todos los inputs de tipo texto(<input type=”text”>).
  • :password Selector : Selecciona todos los inputs de tipo password(<input type=”password”>).
  • :radio Selector : Selecciona todos los inputs de tipo radio(<input type=”radio”>).
  • :checkbox Selector : Selecciona todos los inputs de tipo checkbox(<input type=”checkbox”>).
  • :submit Selector : Selecciona todos los inputs de tipo submit y los botones (<input type=”submit”>, <button>).
  • :image Selector : Selecciona todos los inputs de tipo image(<input type=”image”>).
  • :reset Selector : Selecciona todos los botones de reset(<input type=”reset”>).
  • :button Selector : Selecciona todos los botones e inputs de tipo button(<button>, <input type=”button”>).
  • :file Selector : Selecciona todos los inputs de subida de archivos(<input type=”file”>).
  • :enabled Selector : Selecciona todos los elementos de formulario que están habilitados, es decir, aquellos que no tienen el atributo disabled.
  • :disabled Selector: Selecciona todos los elementos de formulario que están deshabilitados, es decir, aquellos que tienen el atributo disabled.
  • :checked Selector: Selecciona todos los elementos del formulario que están checkeados, es decir, los botones de checkbox y radio seleccionados.
  • :selected Selector: Selecciona todos los elementos de formulario que están seleccionados, es decir, los elementos <option> seleccionados en un <select>.
Como la mayoría de selectores de formularios son autodescriptivos no veo la necesidad de ejemplos. Se utilizan mucho para la validación de formularios o incluso para dar estilos en general a todo un formulario.
Como con otros selectores, los selectores de formulario se pueden combinar con mayor especificidad. Podemos, por ejemplo seleccionar todos los botones de tipo radio seleccionados pero no los de tipo checkbox mediante la combinación de los selectores $(‘:radio:checked’) o seleccionar todos los inputs de tipo text deshabilitados mediante la combinación de selectores $(‘:text:disabled’).

Selectores personalizados

esta funcion busca todos 

$(document).ready(function() {
  // $('tr:odd').addClass('alt');
  $('tr:nth-child(even)').addClass('alt');

le aplica a todos los tr impares el estilo alt



.alt {
  background-color: #ccc;
}

<table>
  <tr>
      <td>As You Like It</td>
      <td>Comedy</td>
      <td></td>
  </tr>
  <tr>
      <td>All's Well that Ends Well</td>
      <td>Comedy</td>
      <td>1601</td>
  </tr>
  <tr>
      <td>Hamlet</td>
      <td>Tragedy</td>
      <td>1604</td>
  </tr>
  <tr>
      <td>Macbeth</td>
      <td>Tragedy</td>
      <td>1606</td>
  </tr>
  <tr>
      <td>Romeo and Juliet</td>
      <td>Tragedy</td>
      <td>1595</td>
  </tr>
  <tr>
      <td>Henry IV, Part I</td>
      <td>History</td>
      <td>1596</td>
  </tr>
  <tr>
      <td>Henry V</td>
      <td>History</td>
      <td>1599</td>
  </tr>
</table>

Selector contains()

$(document).ready(function() {
  // $('tr:odd').addClass('alt');
  $('tr:nth-child(even)').addClass('alt');

  $('td:contains(Henry)').nextAll().andSelf().addClass('highlight');//.siblings()
  $('th').parent().addClass('table-heading');
});






















Selectores de atributo

Nos permite buscar dentro de los atributos de una etiqueta.

$(document).ready(function() {
  $('a[href^=mailto:]').addClass('mailto');  // busca en el atributo donde el principio se = mailito
  $('a[href$=.pdf]').addClass('pdflink'); // busca en el atributo donde el final sea = pdf
  $('a[href*=henry][href!=mailto:henryiv@king.co.uk]').addClass('henrylink');

// busca en el atributo donde el final sea = * cualquer cosa y signo de exclamacion para cosas negativas, los atributos se pueden combinar

a.mailto {
  background: url(images/email.png) no-repeat 100% 2px;
  padding-right: 18px;
}
a.pdflink {
  background: url(images/pdf.png) no-repeat 100% 0;
  padding-right: 18px;
}
a.henrylink {
  background-color: #fff;
  padding: 2px;
  border: 1px solid #000;

<li><a href="/asyoulikeit/">As You Like It</a></li>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>

Selectores

Son tres tipos de selectores que podemos utilizar

$('p') selecciona cualquier etiqueta html
$('#ud-id')  selecciona los ids de la etiquetas o divs
$('.clase') Selecciona todos los elementos que tengan la clase

Se genera un bucle automatico que busca los elemtos que se pasan como parametro, es decir nos ahorramos el for.


Ejemplo: Esto se lee asi buscas los hijos  li de id  selected-plays y le aplica el estilo horizontal
 y las que no sean hijos directos de  selected-plays  que son li y no se le aplico  el estilo horizonal le aplicias el estilo 'sub-level'

$(document).ready(function() {
  $('#selected-plays > li').addClass('horizontal');
  $('#selected-plays li:not(.horizontal)').addClass('sub-level');
 });

.horizontal {
  float: left;
  list-style: none;
  margin: 10px;
}


<ul id="selected-plays" class="clear-after">
  <li>Comedies
    <ul>
        <li><a href="/asyoulikeit/">As You Like It</a></li>
        <li>All's Well That Ends Well</li>
        <li>A Midsummer Night's Dream</li>
        <li>Twelfth Night</li>
    </ul>
  </li>
  <li>Tragedies
    <ul>
        <li><a href="hamlet.pdf">Hamlet</a></li>
        <li>Macbeth</li>
        <li>Romeo and Juliet</li>
    </ul>
  </li>
  <li>Histories
    <ul>
        <li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
        <ul>
          <li>Part I</li>
          <li>Part II</li>
              </ul>
            </li> 
            <li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
            <li>Richard II</li>
    </ul>
  </li>
</ul>


Forma de llamar un jquery

Esta es la sintaxis para llamar a jquery  donde se va ejecutar cuando se carga todo el html  y mediante una funcion  anonima.



$(document).ready(function() {
  $('.poem-stanza').addClass('highlight');
});

En jQuery, el signo de  $ es simplemente un alias para jquery. Puden surgir conflictos si se usan mas de estas librerias, para evitar estos conflictos remplazamos el signo de $  con jQuery y listo.

al ejecutar  el archivo le agrea el estilo al la clase


.highlight {
  font-style: italic;
  border: 1px solid #888;
  padding: 0.5em;
  margin: 0.5em 0;
  background-color: #ffc;
}


 <div class="poem-stanza">
          <div>sevot yhtils eht dna ,gillirb sawT'</div>
          <div>;ebaw eht ni elbmig dna eryg diD</div>
          <div>,sevogorob eht erew ysmim llA</div>
          <div>.ebargtuo shtar emom eht dnA</div>
        </div>




martes, 16 de julio de 2013

Backups MySQL con mysqldump


Mysqldump, como la mayoría sabéis, es una herramienta de mysql que sirve para realizar copias de seguridad de bases de datos. Es esencial conocer el uso básico de esta herramienta, como es esencial tener un sistema de backups adecuado para cualquier dato almacenado con un mínimo de importancia.
Os voy a poner los ejemplos más básicos y comunes para realizar backups desde línea de comandos con mysqldump.
Realizar backup de una única base de datos:
mysqldump -u root -p nombre_base_de_datos > fichero.sql
De este modo, realizará el backup de la base de datos, solicitando la clave del usuario root mysql, si queréis también se puede especificar pegado a la letra “p” -pclave.
Y si quisieramos restaurar esa base de datos, haríamos lo siguiente:
mysql -u root -p  nombre_base_de_datos < fichero.sql
Lo mismo ocurre con la clave del usuario root, la podemos especificar o esperar a que la pregunte.
Si quisieramos realizar un backup de todas las bases de datos:
mysqldump -u root -p --all-databases > fichero.sql
Y si solo quisieramos hacer backup de un par de bases de datos:
mysqldump -u root -p --databases base_datos1 base_datos2 > fichero.sql
Para hacer backup de una sola tabla, dentro de una base de datos:
mysqldump -u root -p base_datos tabla > fichero.sql
Esto es, a grandes rasgos, lo más básico de la herramienta mysqldump, en la propia ayuda de la herramienta encontraréis mucha más información:
mysqldump --help

martes, 2 de julio de 2013

Conectar mysql de manera remota

Cuando tratamos de conectar a un servidor MySQL y obtenemos el ERROR 1130 (HY000): Host ‘x.x.x.x’ is not allowed to connect to this MySQL server imaginamos que algo habrá que configurar en el server MySQL para permitir el acceso remoto a un cliente MySQL, exactamente eso, a nuestro servidor MySQL tenemos que decirle como, desde donde y quien puede acceder a que bases de datos configuradas en el servidor MySQL. Para los novatos como yo, este es el error de conexión que obtenemos si tratamos de conectar de forma remota a nuestro server MyQSL sin configurar:


hnoguera@cliente:~$ mysql -h 10.0.0.143 -u cliente -p
Enter password: 
ERROR 1130 (HY000): Host '10.0.0.15' is not allowed to connect to this MySQL server

Nota: si tratamos de acceder incluso desde el propio server MySQL a la consola de MySQL usando como destino de conexión la IP de cualquiera de las interfaces de red de servidor la respuesta será la misma. Con la configuración por defecto del servidor MySQL solo podremos acceder en modo local y apuntando a localhost o 127.0.0.1.

Estos son los pasos para habilitar la conexión remota desde un cliente determinado:

  1. Entramos como root en el server MySQL, damos de alta un nuevo usuario con el nombre que queramos usar con el cliente remoto al que le damos acceso a una o varias de las bases de datos que haya creadas en el servidor MySQL, desde una IP de cliente determinada y con un password definido para el usuario a crear:

    hnoguera@cliente:~$ mysql -h localhost -u root -p
    Enter password: 
    mysql> GRANT SELECT, INSERT ON bdd.* TO 'nuevo_usuario'@'10.0.0.15' IDENTIFIED BY 'pass' ;
    Query OK, 0 rows affected (0.00 sec)

    Nota: Acabamos de crear el usuario llamado “nuevo_usuario” y le hemos dado permisos de selección e inserción (SELECT, INSERT) a todas las tablas de la base de datos llamada “bdd” (bdd.*) desde la IP remota “10.0.0.15″ y con el password “pass”. En cuanto a los privilegios dados al usuario podemos elegir los que necesitemos -> tabla de privilegios que provee MySQL

    Con el comando anterior se hacen todos los pasos a la vez, se crea el usuario con el password especificado, se le dan permisos de acceso y se especifica una IP desde la que ese usuario se podrá conectar de forma remota, pero esto no es todo para poder acceder de forma remota al server MySQL.

  2. Lo siguiente es cambiar la configuración del archivo de configuración mysql que está en /etc/mysql/my.cnf, y en la línea 47 tenemos:

    bind-address = 127.0.0.1

    En este parámetro se configura la IP de la interfaz local de escucha del servidor MySQL, por defecto la escucha se hace solo como localhost así que para que podamos acceder desde cualquier IP que tenga el servidor configurada necesitaremos cambiar la línea anterior por:

    bind-address = 0.0.0.0

    Nota: no es posible poner más de una IP como dirección de escucha así que no podemos configurar por ejemplo solo 2 de las 3 interfaces de red de nuestro server, serán o todas o solo una de ellas.

  3. Ahora solo el servidor MySQL:

    root@LAMP-squeeze:~# /etc/init.d/mysql restart
    Stopping MySQL database server: mysqld.
    Starting MySQL database server: mysqld.

  4. Y probar que todo funciona correctamente desde el cliente habilitado:

    hnoguera@cliente:~# mysql -h 10.0.0.143 -u nuevo_usuario -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 36
    Server version: 5.1.49-3 (Debian)
    
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL v2 license
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>

martes, 4 de junio de 2013

Configurar postgresl para accesar desde cualquier parte

I successfully install phppgadmin and access using http://localhost/phppgadmin got no problem.
But access using IP address from another PC http://10.1.16.26/phppgadmin getting below error.

Forbidden
You don't have permission to access /phppgadmin on this server.

I managed to solve it myself as below

sudo /etc/apache2/apache2.conf

unmark "allow from all" under the <DirectoryMatch /usr/share/phppgadmin/>

restart apache2 using /etc/init.d/apache2 restart

poner en el config para poder accesar como postgresql

$conf['extra_login_security'] = false;

viernes, 31 de mayo de 2013

Una vez instalado Composer la instalación de Symfony es extremadamente sencilla. Lo único que tienes que hacer es situarte en la carpeta donde quieres descargarlo que en este caso seria C:\wamp\www\ y ejecutar el comando “composer create-project symfony/framework-standard-edition path/ 2.2.0″. Abajo antes de mostrar el ejemplo explicaremos que significa este comando:
  1. composer: Este es el comando en sí que utilizaremos para ejecutar las funcionalidades de composer
  2. create-project: Esta funcionalidad le dice a composer que cree un nuevo proyecto el siguiente tipo
  3. symfony/framework-standard-edition: Con esto le especificamos a composer que queremos instalar la version standar edition de Symfony que se encuentra aquí en el packagist.
  4. path/: Le decimos la ruta en donde tiene que instalarnos el proyecto
  5. 2.2.0: Especificamos que la versión de Symfony que queremos es la 2.2.0
Ahora que entendemos que significa abramos una terminal, ingresemos a nuestra carpeta raíz donde nos descargaremos el framework Symfony y dejémosle a composer encargarse del resto.

cesar@developerWEB:/var/www$ composer create-project symfony/framework-standard-edition Symfony/ 2.2.1

Verificamos si la configuracion es correcta

cesar@developerWEB:/var/www/Symfony$ php app/check.php

Le damos permisos a estas carpetas,

cesar@developerWEB:/var/www/Symfony$ sudo chmod -R 777 app/cache/ app/logs/

Con todos los requeremientos obligatorios solucionados podríamos ingresar a nuestro sitio: http://localhost/Symfony/web/app_dev.php y ver la pantalla de bienvenida diciéndonos que la instalación está correcta y felicitándonos por el arduo trabajo de instalación

Gestionando dependencias con Composer

Desde la versión 2.1 de Symfony se integra ampliamente al proyecto un “Manejador de Dependencias” para PHP llamado Composer.
 Composer contiene una base de datos online de muchas librerías 
desarrolladas por terceros a fin de centralizarlas en un repositorio 
llamado Packagist. 
Esto nos permite olvidarnos de descargar las librerías que queremos 
utilizar y almacenarlas dentro de nuestro proyecto base sino que a 
través de un archivo de configuración declaramos cuales son las 
librerías que nuestro proyecto necesita para funcionar y estas se 
descargaran y serán administradas por Composer. 
 
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
 
 
Para ver si se estalo bien podemos ejecutar
 
cesar@developerWEB:/usr/local/bin$ composer --version
Composer version 93d37833dc6d40e3fdbfc683fabb6734677e65bf 

sábado, 25 de mayo de 2013

Instalar node.js

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

sábado, 11 de mayo de 2013

instalar postgresql-9.2

sudo add-apt-repository ppa:pitti/postgresql 
sudo apt-get update
sudo apt-get install postgresql-9.2

lunes, 6 de mayo de 2013

Configurar pg_hba.conf

# Database administrative login by Unix domain socket
local   all             postgres                                md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all        all        10.0.2.12/32        md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             10.0.2.144/32           md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

martes, 16 de abril de 2013

Extrayendo el Modelo E-R para una Base de datos Postgres mediante ingenieria inversa

Necesitamos

- Editor de diagramas DIA
- Postgresql-autodoc
-Software de visualización de gráficos Graphviz

O en su defecto instalarlos mediante los siguientes comandos (Ubuntu), ya que se encuentran disponibles des los repositorios universales.

# sudo apt-get install postgresql-autodoc
# sudo apt-get install dia
# sudo apt-get install graphviz

Una vez instalados, procedemos a ingresar en la consola el siguiente comando:


$ postgresql_autodoc -d sigiems -f /home/cesar/diagramabase/sigiems -h localhost -U postgres –password=iems

instalacion de paquete rpm en ubuntu

Los archivos RPM (originalmente llamado Red Hat Package Manager) son el formato de paquetes de partida del Linux Standard Base. Originalmente fue desarrollado por y para Red Hat, pero actualmente se usa en muchas otras distribuciones como Fedora, Mandriva o SuSe.
Quizás te hayas encontrado alguna vez en una situación en la que necesitas instalar una aplicación que sólo está disponible en formato *.rpm para Ubuntu. El problema es que Ubuntu usa paquetes *.deb (Debian) que son incompatibles con ese formato. Pues vamos a aprender que hacer para poder instalarlos también en Ubuntu.

Afortunadamente podemos convertir fácilmente un paquete *.rpm a *.deb y luego instalarlo usando el instalador de paquetes debian en Ubuntu (cosa que solemos hacer habitualmente) o desde consola, como explicaremos a continuación.
Para hacerlo, simplemente seguiremos los siguientes pasos:
  • Instalamos Alien (disponible en los repositorios de Ubuntu) desde una consola con el siguiente comando:
sudo aptitude install alien
  • Convertimos los paquetes usando:
sudo alien -k nombre_del_paquete.rpm
  • Y lo instalamos ya como un .deb con:
sudo dpkg -i nombre_del_paquete.deb

jueves, 11 de abril de 2013

Instalar webmin en ubuntu

sgdgm@sgdgm:~$ chmod +x webmin_1.620_all.deb
sgdgm@sgdgm:~$ sudo dpkg -i webmin_1.620_all.deb 

sudo apt-get -f install

Configurar phppgadmin para poder accesar desde cualquier ubicacion de internet


Hay que  habilitar la opcion # allow from all dentro del apache y reinicar

sgdgm@sgdgm:/etc/apache2/conf.d$ cat phppgadmin
Alias /phppgadmin /usr/share/phppgadmin

<Directory /usr/share/phppgadmin>





DirectoryIndex index.php
AllowOverride None

order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0 ::1/128
# allow from all

<IfModule mod_php5.c>
  php_flag magic_quotes_gpc Off
  php_flag track_vars On
  #php_value include_path .
</IfModule>
<IfModule !mod_php5.c>
  <IfModule mod_actions.c>
    <IfModule mod_cgi.c>
      AddType application/x-httpd-php .php
      Action application/x-httpd-php /cgi-bin/php
    </IfModule>
    <IfModule mod_cgid.c>
      AddType application/x-httpd-php .php
      Action application/x-httpd-php /cgi-bin/php
    </IfModule>
  </IfModule>
</IfModule>

</Directory>
sgdgm@sgdgm:/etc/apache2/conf.d$ sudo nano  phppgadmin
sgdgm@sgdgm:/etc/apache2/conf.d$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                                      apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                               [ OK ]
sgdgm@sgdgm:/etc/apache2/conf.d$

jueves, 4 de abril de 2013

Configurar escritorio remoto

sudo apt-get install vino
sudo apt-get install vinagre


configura la opcion y el passwrd y listo

miércoles, 27 de marzo de 2013

Respaldar base y resturar base en postgreslq

paso 1: nos logueamos con el usuario postgres

Si no tienes el password de postgres lo puedes reiniciar con

sudo passwd postgres


paso2:  pg_dump sigiems > /var/www/sigiems/sigiems.sql

paso 3: eliminamos la base vieja y la creamos

$ dropdb sigiems

$ createdb sigiems

paso 4: resturamos la base 

psql sigiems < sigiems.sql












miércoles, 20 de marzo de 2013

http://www.damianculotta.com.ar/2009/02/15/backup-de-tablas-especificas-en-postgresql/

http://www.damianculotta.com.ar/2008/08/26/automatizar-backups-de-postgresql/

http://freeopenidea.blogspot.mx/2008/11/creating-sha1-hashing-function-for.html

http://caronates.wordpress.com/2010/01/03/instalar-postgresql-y-configurar-phppgadmin/

http://www.martiniglesias.eu/blog/formularios-web-con-jquery-validate-y-envio-por-phpmailer-y-gmail/100

http://www.jamboreebliss.com/2010/03/18/php-mail-using-gmail-smtp-authentication/

http://yacoding.blogspot.mx/2006/07/howto-install-dbdesigner-4-on-ubuntu.html

http://www.programacionweb.net/articulos/articulo/?num=502&pag=1

como instalar aplicasiones tgz, rpm, y deb

http://www.ubuntu-es.org/node/12100#.UUoYuVGYNa0

http://www.postgresqlya.com.ar/

http://www.yiiframework.com/wiki/49/update-content-in-ajax-with-renderpartial/


martes, 19 de febrero de 2013

Instalar java

descomprimimos el archivo  en /opt y listo!!!!!!!!!!

sudo tar vfzx jdk-7u13-linux-x64.tar.gz

Configuar el path de java

$ export PATH=$PATH:/usr/java/jdk1.5.0_09/bin

Si por algun motivo esto no llegara a funcionar.... prueba esto en el terminal:

$ export PATH=/usr/java/jdk1.5.0_09/bin:$PATH (que en el fondo es lo mismo xD)

es lo mismo

martes, 5 de febrero de 2013

Convertir campo cadena a entero en postgresql

INSERT INTO rh.personal_plantilla
(
  id_persona,
  id_plaza,
  fecha_ingreso,
  tipo_empleado,
  reg_interinato,
  reg_lsgs,
  fecha_reg,
  estado,
  num_emp,
  rfc
) SELECT
  '0',
  '0',
  '2013-01-01',
  '1',
  '0',
  '0',
  '2013-01-01',
  '1',
  to_number(clave_empleado,'999999999999D99'),
  rfc
  FROM rh.qna02_13

jueves, 31 de enero de 2013

Que entiedes por seguridad ?

Para ubicarnos en el entorno abierto internet, como empezamos a estudiar la seguridad de la informacion, en donde  hay sistemas operativos diferentes, medios diferentes, usuarios diferentes, n redes distinas, aplicaciones diferentes, hardware diferentes, diferentes arquitecturas, software diferentes, etc, etc.

¿Como empiezas a estudiar la seguridad?

 Lo que hay que hacer es abstraer la realidad creando un modelo.

Un modelo que me reduzca al minimo   posible el escenario y al reves, que a partir de  esa simplicidad   llegar a la complejidad deseada.


                                        A -----------X--------------B

Si yo soy A y quiero enviar un mensaje a B integro se puede????

Donde  X  es el Mal, y pude hacer lo que quiera, retardarlo, redireccionarlo, reenviarlo, eliminarlo, campuralo, modificarlo, esconderlo, cortar el medio, etc.

Se puede garantizar la seguridad????

 NO SE PUEDEEEE Por que el medio es publico, compartido y promiscuo.

 Entonces que debemos hacer ???? Que si podemos Garantizar??

 No podemos garantizar que no se altere la informacion, lo que si puedo garantizar es que si se altero me pueda dar cuenta. 


Con que se puede hacer???

Servicios de seguridad atraves de  la funcionalidad  que se llaman mecanismos de seguridad.

En este caso  seria verificacion de integridad, atraves de funciones hash y cifrado  simetrico.

La disponibilidad  este es probabilistico,  se soporta, pero no hay mecanismo que garantice la disponibilidad.

La Autenticación para que la partes puedan demostrarse que son quien son, hay varios tipos se clasifican por la base que viene siendo el autentificador  que es lo que se llama 1 factor(password), puede haber una base biometrica que de igual manera es de un factor(Patron biometrico),  y puede haber dos factores, algo que se sabe y algo que se es osea dos factores.(password y un tocken), lo que es engañoso  ya que no son dos factores lo que nos lleva a toda la gama de fraudes que se han hecho.

La autenticacion se divide en de entidad y de origen  depende  de la necesidad de donde salio el mensaje o quien lo envio.

Un certificado digital de origen autentica la llave publica, no a la entidad  a menos que se un certificado que atentifique  la entidad que cuesta mas de 2500000 dolares.

 Con que  mecanismos se puede garantizar?

funciones hash,   cifrado simetrico , cifrado asimetrico y dentro de las aplicaciones del cifrado asimetrico esta la firma digital.




















miércoles, 30 de enero de 2013

Envio de correos desde gmail


    function SendMail($folio_iems,$mensaje,$mail_soporte,$mail_ing){


    require("class.phpmailer.php");
    $mail = new PHPMailer();
    // Recipient’s e-mail address
    $email="ms_ces@hotmail.com";
    $email2="cesar.morones1@gmail.com";
    // Message text (may contain HTML)
    $milo="Aviso!!!";
    $mail->Mailer = "smtp";
    $mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "cesar.morones@iems.edu.mx"; // SMTP username
    $mail->Password = "tupassword"; // SMTP password

    $webmaster_email = "cesar.morones1@gmail.com"; //Reply to this email ID
  //  $name="$nombreuser[1]"; // Recipient’s name
    $mail->From = "cesar@planeacion.unam.mx";
    $mail->FromName = "Sistema Integral de Soporte IEMS";
  //  $mail->FromName = "$nombreuser[1] $nombreuser[2]"; // Edit this to select “From” header
   // $mail->AddAddress($email, $valor); ///  $valor  esta variable es el correo del usuario en produccion hay que remplazarla por $email
    $mail->AddAddress($email2, 'cesar morones');
    $mail->AddAddress($mail_soporte, 'JUD');
    $mail->AddAddress($mail_ing, 'Tecnico');
  // $mail->AddReplyTo($webmaster_email, "Youraccount.com");
    $mail->WordWrap = 70; // set word wrap
    $mail->IsHTML(true); // send as HTML
    $mail->Subject = "Se genero Ticket folio:$folio_iems";
    $mail->Body = $mensaje;//HTML Body
    $mail->Send();

    }

Diferencias entre fechas


$fecha_hoy =date("Y\-n\-j");
$date1=strtotime($objDep->fecha2); // fecha de inicio
$date2=strtotime($fecha_hoy); // fecha de hoy
//calculo timestam de las dos fechas
$timestamp1=mktime(0, 0, 0, date("m", $date1), date("d", $date1), date("Y", $date1));
$timestamp2=mktime(0, 0, 0, date("m", $date2), date("d", $date2), date("Y", $date2));

//$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
//$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);

//resto a una fecha la otra
$segundos_diferencia = $timestamp1 - $timestamp2;
//echo $segundos_diferencia;

//convierto segundos en días
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);


$dias_diferencia = round($dias_diferencia,0);

if($dias_diferencia <= 0){

    $estado_lsgs ="<div style='color:#FF0000;'><STRONG>VENCIDO</STRONG></div>";

}

if($dias_diferencia <= 20 && $dias_diferencia > 0 ){

    $estado_lsgs ="<div style='color:#088A08;'><STRONG>EN TRAMITE</STRONG></div>";

}

if($dias_diferencia > 20 ){

    $estado_lsgs ="<div><STRONG>NORMAL</STRONG></div>";

}

lunes, 14 de enero de 2013

Para mostrar los errores de PHP en un servidor en produccion

Solo hay que poner estas lineas al principio del archivo

error_reporting(E_ALL);
ini_set("display_errors", 1);