domingo, 30 de noviembre de 2014

Clase para pedir datos en Java

import java.io.IOException;


public class PedirDatos {
/* Funcion para leer caracteres*/
public static char leerCaracter(String frase){
char caracter;
caracter=leerCadena(frase).charAt(0);
return caracter;
}
  
/* Funcion para leer cadenas*/
public static String leerCadena(String frase){
String cadena="";
char caracter=(char)0;
int ascii = 0;
System.out.println(frase);
do{
cadena=cadena+caracter;
try {
ascii = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
caracter = (char) ascii;
}while(ascii!=13);
return cadena.trim();
}

/* Funcion para leer enteros*/
public static int leerEntero(String frase){
int entero=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
entero=Integer.parseInt(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un entero");
}
}while(!correcto);
return entero;

}

/* Funcion para leer decimales*/
public static double leerDecimal(String frase){
double decimal=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
decimal=Double.parseDouble(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un decimal");
}
}while(!correcto);
return decimal;

}

}

Número Vampiro en Java

public class Vampiro {

public static boolean verificaNum(int numero, int[] digitos) {
// verifica si esta en las posibles combinaciones
String numS = numero + "";
int ok = 0, numAc, len = numS.length();

for (int i = 0; i < len; i++) {
numAc = Integer.parseInt(numS.substring(i, i + 1));
for (int j = 0; j < digitos.length; j++) {
if (numAc == (digitos[j])) {
ok++;
break;
}
}
}
if (ok == len) {
return true;
}
return false;
}

public static boolean esVampiro(int n) {
String num = n + "";
int lon = num.length(), ini = 1;
int[] a = new int[lon]; // Array para los digitos

if (lon % 2 != 0) { // Si los digitos del numeros es impar no es vampiro
return false;
}

for (int i = 0; i < lon; i++) {
a[i] = Integer.parseInt(num.substring(i, i + 1));
}

for (int i = 1; i < lon / 2; i++) {
ini *= 10;
}

for (int i = ini; i < ini * 10; i++) {
for (int j = ini; j < ini * 10; j++) {
if (i * j == n && verificaNum(i, a) && verificaNum(j, a)) {
return true;
}
}
}
return false;
}

public static void main(String[] args) {
int nu;
nu = PedirDatos.leerEntero("Introduce un número de cuatro cifras: ");
System.out.print("El número "+nu);
if(esVampiro(nu)){
System.out.println(" es vampiro.");
return;
}
System.out.println(" no es vampiro.");

}
}

viernes, 11 de julio de 2014

Traducción al español de Interspire Email Marketer

Aquí os dejo una traducción realizada por mí para este software.

https://mega.co.nz/#!ocAlTTpR!yvZRuR9scBxI-YRIWJ6J-6tFoFKzoZbISkFpr1P3YLo

Piedra, Papel o Tijeras en JAVA

import java.util.Scanner;

public class ppt {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
String usu,cpu;
String[] opc={"piedra","papel","tijeras"};

        System.out.println("Elige:");
usu=teclado.next();
  int num = (int) Math.floor(Math.random()*(2-0+1)+0);  cpu = opc[num];
switch (usu) {
case "piedra":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. EMPATE");
break;
case "papel":
System.out.println("CPU elije PAPEL. Gana CPU");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. Ganas TU");
break;
}
       break;
   case "papel":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. Ganas TU");
break;
case "papel":
System.out.println("CPU elije PAPEL. EMPATE");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. Gana CPU");
break;
}
       break;
   case "tijeras":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. Gana CPU");
break;
case "papel":
System.out.println("CPU elije PAPEL. Ganas TU");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. EMPATE");
break;
}
       break;
   default:
       System.out.println("Incorrecto");
       break;
}
}
}

martes, 24 de junio de 2014

Script Perl Copias de Seguridad

#!/usr/bin/perl

# Ejecutar perl bk.pl ip_maquina cod_cliente cod_maquina tipo_copia [auto o manual] usuario_ftp pass_ftp

use DBI;
use Net::SFTP::Foreign;

#Datos de la conexión
$db="db_proyectint";
$host="datos.proyectint.org";
$port="3306";
$user="user_proyectint";
$pass="12Proyectint34*";
$connectionInfo="DBI:mysql:database=$db;$host:$port";

# Realizamos la conexión a la base de datos
$db = DBI->connect($connectionInfo,$user,$pass);

# Cogemos fecha desde MySQL
$qu_date="select sysdate()";
$sql_date = $db->prepare($qu_date);
$sql_date->execute();
$date = $sql_date->fetchrow_array();

# Inserto primeros datos de la copia
$query="insert into copias (cod_cliente,cod_maquina,fecha_ini,tipo_copia) values ('@ARGV[1]','@ARGV[2]','$date','@ARGV[3]')";
$sql = $db->prepare($query);
$sql->execute();

# Llamada al script bash SOLUCIONAR!!
`bash bk.sh @ARGV[0] @ARGV[2] @ARGV[1]`;
$n=0;
open (re,"/root/temp") or die "$!n";
while (<re>){
chomp;
@result[$n]=$_;
$n++;
}
close re;

# Actualizo datos de copia en BDD
if (@result[0] eq "OK"){
$up="update copias set fecha_fin = sysdate(), correcta= 'si', nombre_fichero = '@result[1]' where fecha_ini = '$date'";

# Subir a FTP el paquete
$sftp = Net::SFTP::Foreign->new("datos.proyectint.org",user => "@ARGV[4]", password => "@ARGV[5]") or die("No se pudo conectar al servidor: $!");
$sftp->put('/root/bk/'.@ARGV[1].'/'.@ARGV[2].'/'.@result[1]) or die "$!n";

# Elimino paquete
`rm /root/bk/@ARGV[1]/@ARGV[2]/@result[1]`;
print "Copia de seguridad realizada con exito\n";
}else{
$up="update copias set fecha_fin = sysdate(), correcta= 'no' where fecha_ini = '&date'";
print "Copia de seguridad no realizada\n";
}

$sql2 = $db->prepare($up);
$sql2->execute();
$sql_date->finish();

$sql2->finish();
$db->disconnect;

`rm /root/temp`;

Shell Script Copias de Seguridad

#! /bin/bash

# Ejecutar bash bk.sh ip_maquina cod_maquina cod_cliente

DATE=$(date "+%d%h%Y%H%M")
TO="/root/bk/$3/$2/rsync"
FROM="root@$1:/root/copias/$2/"

if test ! -d /root/bk/$3
then
mkdir /root/bk/$3
fi

if test ! -d /root/bk/$3/$2
then
mkdir /root/bk/$3/$2
fi

if test ! -d /root/bk/$3/$2/rsync
then
mkdir /root/bk/$3/$2/rsync
fi

if rsync --delete -avb $FROM $TO
then
cd /root/bk/$3/$2/rsync/
PAQ="BACKUP-$2-$DATE.tar"
tar cf ../$PAQ *
echo "OK" > /root/temp
echo $PAQ >> /root/temp
else
echo "no" > /root/temp
fi

martes, 17 de junio de 2014

PrestaShop: Cambiar todos los productos de una categoría

UPDATE `ps_product` SET `id_category_default`= [Nueva Categoria] WHERE `id_category_default`= [Antigua Categoria]

UPDATE ps_product_shop s, ps_product p SET s.id_category_default = p.id_category_default WHERE s.id_product = p.id_product

lunes, 2 de junio de 2014

Insertar Imagen en Página Principal de Moodle

Para insertar una imagen cualquiera en la Página Principal de Moodle debemos hacer cambios en el código del tema activo. Nos vamos al archivo PHP que se encarga del layout en nuestro tema (por ejemplo, en el tema afterburner es /theme/afterburner/layout/default.php) y Tras el siguiente código que aparece en el fichero:

<!-- END OF CUSTOMMENU AND NAVBAR -->
    <div id="page-content">
       <div id="region-main-box">
           <div id="region-pre-box">
               <div id="region-main">

Insertamos este código (cambiando el nombre de la web, el nombre y el tamaño de la imagen que queramos insertar):

<?php
$host3 = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if($host3 == 'midominio.es/') 
{
    echo '<p><img src="http://midominio.es/pix/cursos.jpg" width="705" height="386"></p>';
}
?>




jueves, 29 de mayo de 2014

Ver la posición de los módulos en Joomla!

Para ver la posición de los módulos existentes en una página basta con añadir en la barra de direcciones (luego de la dirección del sitio) ?tp=1. Por ejemplo:


http://www.misitio.org/index.php?tp=1



martes, 20 de mayo de 2014

Integrar Blog WordPress con Tienda Prestashop

Si tenemos una tienda online montada con Prestashop y queremos tener un blog corporativo que posea el mismo estilo que la tienda, tenemos dos opciones, complicarnos la vida intentando hacerlo con el mismo Prestashop o bien instalar un Wordpress en una ruta como esta: tudominio.com/blog/ e integrarlo Prestashop.

La integración no es muy complicada, tan solo tenemos que modificar dos archivos del tema que tenemos activo, header.php y footer.php.

El archivo de cabecera de nuestro blog a editar se encuentra en “wp-content\themes\nombre_tema\header.php“.
En dicho archivo header.php, borramos todo el contenido y lo sustituimos por el siguiente código:

<?php
require_once(dirname(__FILE__).'/../../../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../../../header.php');
?>


Recuerdo que esta ruta es válida si nuestro blog está ubicado en tudominio.com/blog/.
A continuación procedemos a hacer lo mismo con el archivo footer.php remplazando su contenido por este código:

<?php
require_once(dirname(__FILE__).'/../../../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../../../footer.php');
?>

Además si queremos aplicar el estilo de nuestro blog a la página, modificamos el archivo header.tpl de nuestra tienda Prestashop alojado en /themes/nombre_plantilla/header.tpl. Buscamos estas líneas:

    {$HOOK_HEADER}
</head>

Y Añadimos la llamada al css de nuestro blog de la siguiente manera:

{if (is_callable('bloginfo'))}
   <link href="../../../blog/wp-content/themes/twentytwelve/style.css" rel="stylesheet" type="text/css" media="all" />
{/if}
        {$HOOK_HEADER}
    </head>

miércoles, 23 de abril de 2014

Eliminar líneas repetidas de un archivo

Si tenemos un archivo cualquiera y queremos borrar lineas duplicadas, lo podemos hacer con este comando:

$ cat file.txt | sort | uniq > file-new.txt

martes, 1 de abril de 2014

Afinar búsquedas rápidas en Vtiger 6.0

La búsqueda rápida de Vtiger 6.0 no es posible realizarla con algo que no sea el nombre o apellido, para solucionar este problema ejecutar este código SQL.

UPDATE vtiger_contactdetails as origen, vtiger_crmentity as destino
SET destino.label = CONCAT(origen.firstname," ",origen.lastname,” ”,origen.phone,” ” ,origen.email)
WHERE destino.crmid = origen.contactid
AND destino.setype = "Contacts";

UPDATE vtiger_leaddetails as origen, vtiger_crmentity as destino, vtiger_leadaddress as aux
SET destino.label = CONCAT(origen.firstname," ",origen.lastname,” ”,aux.phone,” ” ,aux.mobile,” “,origen.email)
WHERE destino.crmid = origen.leadid 
AND aux.leadaddressid = origen.leadid
AND destino.setype = "Leads";

lunes, 31 de marzo de 2014

Guía de cómo comprimir y descomprimir en Linux

En Linux hay diversas herramientas para empaquetar y comprimir archivos, este es un resumen que os ayudará.


.tar

Empaquetar -->      tar cvf file.tar directorio/*
Desempaquetar -->    tar xvf file.tar


.gz

Comprimir -->     gzip -q directorio
Descomprimir -->    gzip -d directorio.gz


.tar.gz

Empaquetar y comprimir  -->         tar czvf file.tar.gz /directorio/*
Desempaquetar y descomprimir -->     tar xzvf file.tar.gz


.zip

Comprimir -->    zip file.zip /directorio/*
Descomprimir  -->    unzip file.zip


.rar

Comprimir  -->  rar -a file.rar /directorio/*
Descomprimir  -->    rar -x file.rar


jueves, 27 de marzo de 2014

Ejecutar código PHP en Wordpress

Si habéis intentado ejecutar código PHP en alguna entrada o widget en Wordpress os habréis dado cuenta que no lo ejecuta...Pues basta con instalar un plugin y añadir un trozo de código a function.php de vuestro tema aplicado. Plugin existen bastantes, aquí os dejo tres de ellos:


    El código que hay que insertar es el siguiente:

    function ejecutar_php($html){
    if(strpos($html,"<"."?php")!==false){
    ob_start();
    eval("?".">".$html);
    $html=ob_get_contents();
    ob_end_clean();
    }
    return $html;
    }
    add_filter('widget_text','ejecutar_php',100);
    
    
    Ya solo tenéis que añadir el código que queráis ejecutar en un widget. Por ejemplo:
    
    

    
    

    miércoles, 26 de marzo de 2014

    Backup de base de datos MySQL

    Para ello usamos el siguiente comando en la terminal.

    $ mysqldump -u root -p database > file.sql

    Siendo root el nombre de usuario y database la base de datos que queremos respaldar.

    lunes, 24 de marzo de 2014

    Instalación Vtiger CRM

    Vtiger es un CRM (se podría traducir por Gestión de las Relaciones con el Cliente) que nos permite organizar asuntos relacionados con la empresa, por ejemplo gestión de ventas y clientes, estudios de mercado (cliente potenciales, campañas,...). Es una aplicación web. Para instalarlo necesitamos lo siguiente en nuestra máquina:
    • Apache 2.1+
    • MySQL 5.1+
    • PHP 5.2+, 5.3
      • php-imap
      • php-curl
      • php-xml
      • max_memory (min. 256MB)
      • max_execution_time (min. 60 seconds
    Nos bajamos el paquete desde aquí. A continuación lo desempaquetamos y movemos a un sitio donde pueda accederse vía web, en este caso en /var/www, además vtigerCRM requiere atributos de lectura y escritura para varios directorios y archivos

    $ tar zxvf vtigercrm6.0.0.tar.gz 
    # mv vtigerCRM/ /var/www/

    # chmod 707 -R /var/www/vtiger/

    A continuación necesitamos crear la base de datos para vtiger, para ello podemos hacerlo vía web con alguna herramienta para trabajar con mysql como por ejemplo phpmyadmin, o también podemos hacerlo por comandos de la siguiente manera:

    $ mysql -u root -p
    > create database bd_vtiger;
    > grant all privileges on bd_vtiger.* to vtiger@localhost identified by 'vtiger';

    Antes de empezar con la instalación debemos tocar la configuración de PHP, lo podemos hacer creando una configuración especifica para vtiger y así no tocar la configuración global. Para ello:

    # nano /etc/apache2/conf.d/vtiger

    Y copiamos todo esto:

    Alias /crm /var/www/vtigerCRM
    <Directory "/var/www/vtigerCRM">
            Options Includes
            php_flag safe_mode Off
            php_flag display_errors On
            php_flag file_uploads On
            php_flag register_globals Off
            php_value max_execution_time 600
            php_flag output_buffering On
            php_value error_reporting E_WARNING|E_NOTICE
            php_flag allow_call_time_reference On
            php_flag log_errors Off
            php_flag short_open_tag On
    </Directory>

    Reiniciamos apache2.

    # service apache2 restart

    Ahora si ya podemos acceder vía web y así comenzar a instalar.

    http://localhost/crm




    jueves, 6 de marzo de 2014

    Crear conferencia en Openfire

    En esta entrada vamos a crear una conferencia en Openfire, para ello vamos a Conferencias --> Crear sala. Introducimos los datos de la sala que vamos a crear.


    A continuacion podemos agregar los miembros.
    Y ya podemos ingresar a la sala desde Spark cuando estamos logueados con un usuario miembro.


    Conexión a Openfire

    Ya vimos como instalar y como configurar y registrar usuarios, ahora vamos a conectarnos con dos clientes distintos y chatear.

    Primero conectaremos usando Spark, lo encontraremos en Ubuntu instalado por defecto. Lo iniciamos y nos loguemos con uno de los usuarios creados.

    Una vez logueado agregamos al otro usuario creado.

     En otra máquina nos logueamos con el otro usuario.


     Aceptamos al usuario.

     Y ya podemos chatear.


    Configuración Openfire

    En la entrada anterior vimos como es la instalación de Openfire. En esta entrada vamos a explicar como configurarlo para que puedan conectarse dos usuarios y que conversen.

    Accedemos en el navegador a la ip del servidor seguido de :9090. Nos logueamos y empezamos a configurar. Seleccionamos lo que aparece en las capturas:








    Ya ponemos acceder a la consola de administración.

    A continuación, nos vamos a Configuración del Servidor --> Registros y conexiones. Y establecemos esta configuración.




    Con esta configuración, permitiremos a los usuarios que se puedan registrar sin control, y que puedan cambiar de contraseña y restringiremos  el acceso anónimo. 

    Ahora vamos a crear los usuarios. Para ello vamos a Usuarios/Grupos --> Usuarios --> Crear Nuevo Usuario.



    Ya podemos ver que tenemos agregados los usuarios. En la entrada siguiente explicaremos como conectarnos y chatear.

     

    Instalación Servidor De Mensajería Instantánea : Openfire

    En este tutorial vamos a instalar y configurar un servidor de mensajeria instantánea Openfire, en posteriores entradas explicaré como usarlo, etc... ¿Qué nos permite Openfire? pues con él podremos tener nuestro servidor de mensajeria ( un pequeño Messenger) donde puedes administrar a los usuarios, compartir archivos, mensajes offline, mensajes broadcast, grupos y demás. Además existen diferentes plugins que aportan funciones extras.

      

    Para instalarlo necesitamos un servidor web, con PHP, Base de Datos y JAVA es decir tenemos que instalar lo siguiente:

    # apt-get install apache2 php5 mysql-server openjdk-6-jdk

    Una vez que tenemos todo lo anterior, instalaremos OpenFire. Para ello, podemos utilizar wget para descargarlo desde su url. Posteriormente lo desempaquetamos. 
    # wget http://download.igniterealtime.org/openfire/openfire_3.9.1_all.deb
    # dpkg -i openfire_3.9.1_all.deb 

    Para comprobar que está escuchando correctamente utilizaremos:
    #netstat –natup | grep 9090
      
    Para configurar Openfire via web ponemos en el navegador la IP seguido del puerto 9090. En entradas posteriores explicaré la configuración de Openfire
      







    domingo, 16 de febrero de 2014

    Instalación y configuración de LDAP

    OpenVPN

    Instalación y configuración de Nagios

    Servidor HTTP (IIS)

    Servidor HTTP (Apache2)

    Servidor de Correo