TU ANUNCIO / YOUR PUBLICITY

AQUÍ PODRÍA ESTAR TU ANUNCIO: / HERE COULD BE YOUR AD E-mail
Mostrando entradas con la etiqueta Databases.. Mostrar todas las entradas
Mostrando entradas con la etiqueta Databases.. Mostrar todas las entradas

domingo, 20 de abril de 2014

Instalation and first steps with POSTGRES / Instalación y primeros pasos con POSTGRES

1º Instalamos lo necesario: / Instaling
root@ordenata:~$ apt-get install apache2 php5 postgresql php5-pg*

→ Apache
→ php5
→ postgresql
→ las librerías de php5 de postgresql.

2º Como el super-usuario “postgresql” es muy dificil de tratar desde php se crea otro igual de super-usuario:
2nd As the super-user "postgresql" is very difficult to treat from php, create another super-user:

sudo -u postgres createuserb -EP usuario3
Introduzca la contraseña para el nuevo rol: tralara
Introdúzcala nuevamente: tralara
¿Será el nuevo rol un superusuario? (s/n) s

3º Crearemos una base de datos / We creare a DB.
root@ordenata:~$ su – postgres (desde root)
postgres@ordenata:~$ psql
psql (8.4.9) (esto aparececrá en la pantalla)
Digite «help» para obtener ayuda.

postgres=# create database arca ;
CREATE DATABASE
postgres=# \q
postgres@ordenata:~$ exit
logout

4º Desde apache-php / From apache-php

Archivo / file: "bd.php:"

<?php
$cona=pg_connect("host=localhost dbname=arca user=usuario3 password=tralara");
$sel=pg_query($cona,"CREATE TABLE tabla1(uno int, dos int)");
$sel=pg_query($cona,"INSERT INTO tabla1(uno, dos) VALUES (34,55)");
?>
Desde un navegadorhttp://localhost/bd.php

5º Comprobemos:
postgres@ordenata:~$ psql arca
arca=# \l
Listado de base de datos
Nombre | Dueño | Codificación | Collation | Ctype | Privilegios
-----------+----------+--------------+-------------+-------------+-----------------------
arca | postgres | UTF8 | es_ES.UTF-8 | es_ES.UTF-8 |

arca=# \dt → public | tabla1 | tabla | usuario3

arca=# SELECT * FROM tabla1; → 34 | 55


MÁS DIFICIL TODAVÍA QUIERO CONECTARME DESDE OTRO ORDENADOR VIA WEB
STILL MORE DIFFICULT, I WANT TO CONNECT FROM ANOTHER REMOTE COMPUTER.

1º Se abre el fichero / We open  postgresql.conf:

sudo nano /etc/postgresql/8.4/main/postgresql.conf

y en una fila se escribe: / In a line we write

[…]
listen_addresses='*'
[…]

Cuando lo intentemos dará el siguiente error: We will have this error. No problem.

Unable to connect to PostgreSQL server: FATAL: no hay una l?nea en pg_hba.conf para ...

2aº Se abre pg_hba.conf y se escribe: (si nuestra ip es 77.209.54.169)
2aº Open pg_hba.conf and write: (if our ip is 77.209.54.169)

sudo nano /etc/postgresql/8.4/main/pg_hba.conf
[…]
hostnossl all all 77.209.54.169/24 md5
[…]

2bº Para toda internet posible (pero conociendo nuestra base de datos, “arca”, y nuestro usuario, “usuario3”:
2bº For all people

[…]
host arca usuario3 0.0.0.0 0.0.0.0 md5
[…]

3º El siguiente ejemplo funcionará (con una bd postgresql en 83.57.127.159 en la que previamente habremos redirigido el puerto 5432):


3º The next ejemple will work (with a db postgresql in 83.57.127.159 with the port 5432):
<?php
$cona=pg_connect("host=83.57.127.159 port=5432 dbname=arca user=usuario3 password=tralara");
$sel=pg_query($cona,"CREATE TABLE tabla3(uno int, dos int)");
$sel=pg_query($cona,"INSERT INTO tabla3(uno, dos) VALUES (343,355)");
?>

domingo, 13 de abril de 2014

Installing WIFI in laptops with LINUX / Cómo instalar la WIFI en portátiles con LINUX

1º Instalar el controlador
1. INstall the driver

sudo apt-get install firmware-b43-installer

2º Hacer que al iniciar linux lo adopte:
2nd Make when starting linux accepts:

sudo nano /etc/modules

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
rtc
b43 ← se incorpora esta línea / Add this line.

3º Reiniciar el ordenador
3rd Restart computer

END

domingo, 6 de abril de 2014

Control of modified files with SAMBA / Control de archivos modificados vía SAMBA


En /etc/samba/samba.conf:

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = XXXX

######################################################################
# DATOS AÑADIDOS
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
#full_audit:success = mkdir rename unlink rmdir pwrite pread connect disconnect
full_audit:success = rename pwrite
full_audit:failure = none
full_audit:facility = LOCAL7
full_audit:priority = NOTICE
#FIN DATOS AÑADIDOS
######################################################################

# server string is the equivalent of the NT Description field
[…]

Luego se modifica donde esté LOCAL7 que está en /etc/rsyslog.d/50-default.conf:

# Default rules for rsyslog.
#
# For more information see rsyslog.conf(5) and /etc/rsyslog.conf
#SAMBA MODIFICADO:

local7.* /directorio/donde/guardar/datos/registro_de_movimiento_de_archivos.txt
[…]

Ejemplos en:


El registro (… registro_de_movimiento_de_archivos.txt ) que queda es del estilo...

Nov 2 15:10:50 usu smbd_audit: usu|192.168.1.69|__ffff_192.168.1.69|No|pwrite|ok|Fotos.pdf
Nov 2 15:11:22 usu smbd_audit: last message repeated 4795 times
Nov 2 15:14:41 usu smbd_audit: usu|192.168.1.35|otro|No|pwrite|ok|Diario.xls
Nov 2 15:26:38 usu smbd_audit: usu192.168.1.69|__ffff_192.168.1.69|Na|rename|ok|Gente/Asistencias/Inza|.Trash-1000/files/Inza
Nov 2 15:26:38 usu smbd_audit: usu|192.168.1.69|__ffff_192.168.1.69|No|pwrite|ok|.Trash-1000/info/Inza.trashinfo.U0OA4V
Nov 2 15:26:38 usu smbd_audit: usu|192.168.1.69|__ffff_192.168.1.69|No|rename|ok|.Trash-1000/info/Inza.trashinfo.U0OA4V|.Trash-
[…]


si recordamos la línea : full_audit:prefix = %u|%I|%m|%S

Nov 2 15:14:41 usu smbd_audit: obra|192.168.1.35|otro|No|pwrite|ok|Archivo

Dependerá, por tanto de lo que se defina en prefix la información que sea ordenada. El único punto débil es que el archivo de registro crecerá hasta el infinito si no tiene un sistema de borrado de datos viejos. Ésto se puede hacer a través de cron con la instrucción:

It will therefore depend on what the information is sorted in prefix defined. The only weak point is that the log file will grow to infinity if it has a system of deleting old data. This can be done via cron with the command:

echo “” > /directorio/donde/guardar/datos/registro_de_movimiento_de_archivos.txt 

domingo, 30 de marzo de 2014

Create a animated GIF and from this a movie to YOUTUBE / Crear un GIF animado y de éste una película para YOUTUBE

Varias veces en nuestro blog hemos realizado este truco:
Vamos a elegir un grupo de fotos en secuencia, con ello vamos a crear un gif animado y con el gif animado vamos a crear una película (un archivo avi)

Several times in our blog have done the trick:
We will choose a group of photos in sequence, thereby we will create an animated gif with animated gif we will create a movie (avi file)

El primer paso es tener las fotos:
The first step is to have the photos:

Hay varias opciones. La mas directa es con ImageImagick
The most direct way is with ImageImagick

    convert -delay 1000 *.png animación.gif.
ó


    convert -delay 1000 +repage *.png animación.gif.



La opción +repage puede ser necesaria si nos queda un gif que se salga de los límites que hemos pretendido.
Esta solución es directa y sencilla pero tiene un problema con el orden. A veces la secuencia no es la que quisiéramos. 
Hay otra opción: usar GIMP. Tras la apertura por capas (archivo -> Abrir como capas):

The + repage option may be needed if we have a gif that is outside the limits we have tried.
This solution is simple and direct but has a problem with the order. Sometimes the sequence is not what we wanted.
There is another option: using GIMP. Following the opening of layers (File -> Open as layers):


Archivo -> Guardar como ... animación.gif. Nos aparecerán los siguientes diálogos:
File -> Save As ... animación.gif. We the following dialogs appear:




Y ya tenemos el gif animado como Animado.gif
And we already have the animated gif as Animado.gif



Y ahora la segunda parte. Pasar de gif a avi:
And now the second part. Convert gif to avi:

          ffmpeg -i Animado.gif Animado.avi

Si esto falla hay otra solución más potente:
If this fails there is a more powerful solution:

      mencoder Animado.gif -o Animado.avi.AVI -ovc lavc -lavcopts vcodec=mpeg4

El archivo Animado.avi se sube a YouTube y listo:
The Animado.avi file is uploaded to YouTube and you're done:



domingo, 23 de marzo de 2014

MEGA-MAIL, Sending large files by e-mail / MEGACORREO, Envío de ficheros grandes por correo

¿Quién no ha tenido que enviar un correo con un archivo adjunto voluminoso? Estamos hablando de decenas de MBs. Existe un sistema sencillo y gratuito online propiedad de la empresa ENMACOSA. También denominado "Pásame tu archivo".

El sistema es muy sencillo. Se entra a través de la página:

                     proyecto.enmacosa.com
Portal de I+D de Enmacosa

Se hace click en "Pásame tu archivo" (Menú superior izquierda). O si se prefiere se va directamente a la página:
                    proyecto.enmacosa.com/megacorreo
Portal del Megacorreo de Enmacosa

Para subir se siguen las instrucciones:
                      1º.- Se elige un archivo: C:/ruta/del/archivo/archivo.pdf
                      2º.- Se da un seudónimo: algo.pdf.
                      3º.- Se pincha en "Dar a este botoncito"
Dependiendo de tu conexión a internet irá más deprisa o despacio (suele ser de unos 5MB/minuto).

To upload the instructions are followed: 
                       1º.- a file is chosen: C: /ruta/del/archivo/archivo.pdf 
                       2º.- is given a pseudonym: Algo.pdf 
                       3º.- is click on "Dar este botoncito" 
Depending on your internet connection will go quickly or slowly (usually about 5MB / minute).

Para bajar hay varias opciones a elegir la más cómoda:
To download there are several options to choose the most comfortable:

                      1º.- Si se pincha en abrir el correo, se abrirá nuestro programa de envío de e-mails así:
                      1º.- If you click to open the mail, our program for sending e-mails and will open:

                        De esta manera se manda un correo con el enlace de descarga.
                        In this way an email is sent with the download link.

                        2º.- Otra opción el copiar el texto que hay bajo la frase "O darle este link" y 
                               enviárselo por el método que mejor nos parezca.

                        2. Another option is copy the text under the phrase "O darle este link" and 
                                send it by the method we see fit.

                        3º.- Y por último la opción más simple es que el destinatario abra por su cuenta el 
                         megacorreo. En el cuadro de bajada pone el nombre del seudónimo. En nuestro 
                         ejemplo: algo.pdf e inmediatamente se pondrá a descargar.

                         3. And finally, the simplest option is that the recipient opens his account 
                          megacorreo. Table puts down the name of the alias. in our 
                          example algo.pdf will immediately downloaded.

Debido a la quiebra de la empresa enmacosa, este servicio no está disponible en la actualidad.
Due to the bankruptcy of the company Enmacosa, this service is not available at present.


domingo, 16 de marzo de 2014

Cómo usar ZEND para modificar PDFs con PHP

1º Instalamos ZEND o lo colocamos en un directorio determindo:

En el ejemplo se situa en el subdiretorio zend dentro del directorio de trabajo de php:

require_once 'Zend/Pdf.php';
$pdf = Zend_Pdf::load($Archivo_a_modificar);

$page = $pdf->pages[0];
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD);
$page->setFont($font,14);
$page->drawText($y_expediente, 450, 733);

$page2 = $pdf->pages[2];
$image = Zend_Pdf_Image::imageWithPath("/xxxx.png");
$font2 = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$page2->setFont($font2,14);
$page2->drawText($variableString, 262, 734);
$page2->drawImage($image, $xx,$yy,$ancho,$alto);
… etc …
// $pdf->save("/destino.pdf");
$pdfData = $pdf->render();

header("Content-Disposition: inline; filename=result.pdf");
header("Content-type: application/x-pdf");
echo $pdfData; 


LOS PROBLEMAS DE ZEND AL ABRIR ALGUNOS ARCHIVOS PDF

A veces, el framework de Zend tiene algún problema al abrir un archivo pdf. En nuestro programa de php:

<?php
...
$pdf1 = new Zend_Pdf();

$pdf2 = Zend_Pdf::load($archivo_pdf);

...
?>

No voy a preguntarme el motivo por lo que esto ocurre pero el caso es que es así. Por otra parte, si volvemos a imprimir el pdf en cualquier editor de pdf de nuevo en pdf (perdón por las redundancias) sí admite sin problemas el nuevo archivo. La idea que se ocurre es reimprimir el fichero pdf que da problemas en pdf y así eliminar el problema con el pdf original.

¿Cómo lo hacemos?

Como todo va a ser en línea de comandos lo mejor es disponer de una impresora y una impresión accesible en línea de comandos.

1º Impresora: ¿tenemos alguna impresora que emita pdfs? 
ejecutamos:

 lpstat -p -d 

y el resultado es algo así:
la impresora XXXXX está inactiva.  activada desde jue 20 oct 2011 12:01:46 CEST
destino predeterminado del sistema: XXXXX

En ese caso no tenemos algo reconocible en pdf.

2º Instalamos la impresora en pdf
sudo apt-get -y install cups-pdf
Después:
 lpstat -p -d
la impresora XXXXX está inactiva.  activada desde lun 04 mar 2013 12:46:05 CET
la impresora Generic-CUPS-PDF-Printer está inactiva.  activada desde lun 04 mar 2013 12:42:31 CET
destino predeterminado del sistema: Generic-CUPS-PDF-Printer

3º Tenemos que controlar donde imprimirá el nuevo pdf:

sudo gedit /etc/cups/cups-pdf.conf

el alguna línea estará:

Out ${HOME}/PDF

se cambia por

#Out ${HOME}/PDF
Out $/directorio/salida/PDF

La razón es porque muchas veces no se tiene controlado cual el el directorio {home} para www-data (usuario de apache).

4º Modificamos nuestro programa


<?php
...
$pdf1 = new Zend_Pdf();

exec("lp -d Generic-CUPS-PDF-Printer $archivo_pdf");
$nuevo_pdf="/directorio/salida/PDF".basename($archivo_pdf);
sleep(10);
$pdf2 = Zend_Pdf::load($nuevo_pdf);

...
unlink($nuevo);
?>

Expliquemos la modificación del programa:

Tomamos el archivo que da problemas ($archivo_pdf). Lo imprimimos (comando lp) en la impresora CUPS-PDF. Le hacemos esperar 10 segundos (sleep) al programa para darle tiempo a crearlo y guardarlo en /directorio/salida/PDF/ con el mismo nombre (sin las coletillas de directorios). Abre el nuevo archivo ($nuevo_pdf) que no dará problemas y al final borramos el archivo que nos sirvió de puente(unlink).

para más seguridad se puede poner (en vez de sleep(10)):

do{sleep(1);}while (not is_file($nuevo));

domingo, 9 de marzo de 2014

How to prevent hackers who want to enter the VNC server from port 5900. / Parar los pies a los hackers que quieren entrar en el servidor desde VNC, puerto 5900.

Para acceder al servidor, a veces, utilizo VNC. El problema es que  que noto que el archivo .xsession se crea y crece más y más hasta que llena el disco duro y el servidor deja de funcionar.
Una de las últimas entradas son del tipo:

To access the server, sometimes I use VNC. Have long noticed that the .xsession file is created and grows more and more until it fills the hard disk and the server goes down.
One of the latest entries are of the type:


vnc tat y tal desde tal Ip ,,,

Me fastidia porque me gusta entrar en el servidor por VNC y además soy un poco inutil en el tema de la informática.

Le dí al siguiente comando para saber cuales eran los puertos que tenía abiertos
What were the ports that were open?

socklist

y la respuesta fue:
This was the answer:

type  port      inode     uid    pid   fd  name

tcp   5900      12031    1000   1684   18  vino-server
tcp     80      10998       0   3867    3  apache2
...


No voy a decir aquí el resto de puertos que tengo. El caso es que algo tenía que hacer. Como ya he dicho soy un poco ignorante en estos temas. Por ello creé mi propio cortafuegos. Es muy sencillito y permite cerrar y/o abrir puertos a discreción.

Lo peor que puede ocurrir es que cierre algún puerto por demás pero son igualmente fáciles de reabrir

I will not say here other ports that I have. The fact is that something had to be done. As I said I'm a bit ignorant on these issues. So I created my own firewall. It's simple and allows close and / or open ports at will.
The worst that can happen is that you close any other port but equally easy to reopen

Secuencia de comandos:
Script:

ufw enable       // El cortafuegos empieza a funcionar
ufw deny 5900    // Se cierra el puerto 5900
ufw allow 5900   // Se abre el puerto 5900
ufw status       //Vemos lo que hemos cerrado y abierto y responde


Estado: activo



Hasta                      Acción      Desde

-----                      ------------------------
5900                       DENY        Anywhere
1110                       ALLOW       Anywhere
80                         ALLOW       Anywhere
1111                       DENY        Anywhere

Ahora sé que nadie puede entrar por el puerto 5900 ni el 1111. Si pueden por el 1110 y el 80.

Sólo tengo que entrar por ssh (aconsejable que sea un puerto diferente al 20) y desde alli tecleo ufw allow 5900. Cuando acabemos, colocamos de nuevo el cortafuegos, ufw deny 5900 y listos.

Now I know that no one can enter the port 5900 or 1111. If they can by 1110 and 80.

Only I have to enter through ssh (advisable to be a different port 20) and from there click ufw allow 5900. When we're done, put back the firewall: ufw deny 5900.



Otra solución (aunque creo que es algo peor) la expongo a continuación:


.xsession: Un archivo que no para de crecer hasta llenar completamente el disco duro en Linux.

He buscado soluciones de lo más variopintas.

Una de ellas fue intentar particionar el disco duro de tal manera que el directorio /home/usuario fuera el de la partición. El problema estaba en que una vez instalado todo ya no podía dar marcha atras como en el caso de Windows con Parted Magic. (Ídem con Gparted para Linux. ). Había que tener y hacer una copia se seguridad previa. Aún así cuando se colmataba el directorio del usuario volvía a complicarse el tema y a bloquearse el ordenador.

La segunda solución que encontré era la de limitar el tamaño del directorio. Para ello se suele usar la aplicación quota. el problema es que por más que leía foros no me enteraba nada y una vez que creí entenderlo bloqueé el ordenador al reconfigurar /etc/ftab. ¡Los experimentos con gaseosa!

Y la tercera, y definitiva, fue la de limitar el tamaño máximo de archivo. Ocurre que no quiero de ninguna manera que ningún archivo sea mayor de varios Gigas. Y, si es ninguno, tampoco es .xsession. La forma es muy sencilla. Teclea:

sudo gedit /etc/security/limits.conf

Te saldrá un archivo de la forma:

# /etc/security/limits.conf
#
[...]
#@student        -       maxlogins       4
# End of file

Antes de # End of file colocamos una linea más:

# /etc/security/limits.conf
#
[...]
#@student        -       maxlogins       4
*                hard    fsize           4096000
# End of file

¿Qué hemos hecho?

Le hemos dicho al sistema que no pueda albergar ningún archivo mayor de 4GB.

Reiniciamos el equipo y fin. 

Si quieres saber más yo me enteré desde esta página web:

http://magarto.com/blog/archivo/2007/12/11/cambiar-tamano-maximo-de-archivos-en-gnulinux/

domingo, 2 de marzo de 2014

Remote copy with LFTP / Copia remota con LFTP

Con FTP siempre ha habido un problema clásico de paciencia. Cuando se quiere subir algo (muchos archivo y carpetas) se hace la misma operación. Se abre un explorador de archivo. Se ven las carpetas y desde nuestro ordenador copiar y pegar. Las esperas pueden ser interminables. Aparecen las preguntas ¿quiere subtituir el anterior archivo? Y como no sabemos si ya estaba actualizado el anterior pues le decimos que sí a todo y durante dos horas se tira subiendo archivos como un campeón. A la mitad del negocio (tras una hora) se rompe la conexión y vuelta a empezar. Lo ideal sería tener una aplicación que le dijera desde donde, hasta donde y que no repitiera lo que ya estuviera y fuera igual. Es decir un back up vía ftp.

FTP has always been a classic problem of patience. When you want to upload something (many file and folders) and this operation is always the same. we opens the explorer files. They select files and copy-paste them. The waits can be interminable. Questions appear wants subtituir previous file? And since we do not know if it was already updated the previous because we say yes to everything and for two hours pulling up files like a champ. A half of the business (after one hour) connection and back again breaks. Ideally you want an application to tell you from where to where and not to repeat what was already well and out. Is a back up via ftp.

Esa aplicación existe. LFTP es un extraordinario comando que te permite hacer copias de seguridad en un directorio accesible por ftp. Sólo hay que tener cuidado con no confundir subir con bajar porque podríamos fastidiarla. Podríamos machacar lo nuevo por lo antiguo en vez de actualizar.

This application exists. LFTP is a special command that allows you to make backups in a directory accessible by ftp. Just be careful not to confuse up with down because we could mess. We could crush the new for the old instead of updating.


Ejemplos de lftp:
lftp examples:

DESTINO: ORDENADOR PROPIO
POSTING: OUR COMPUTER

lftp -f ftp_baja.lftp
→ buscará los ficheros modificados desde el ftp y los colocará en /home/usuario

DESTINO: FTP
POSTING: THE SERVER

lftp -f ftp_sube.lftp
→ buscará los ficheros modificados desde /home/usuario y los subirá al ftp

ftp_baja.lftp
open -u usuario,contraseña server.com
mirror --log=QueSeBajo.log /personal /home/usuario
exit

ftp_bajote.lftp
open -u usuario,contraseña server.com
mirror --log=QueBajote.log /www /directorio/de/backup
exit
#no toca el servidor sólo este ordenador
ftp_sube.lftp
open -u usuario,contraseña server.com
mirror -p -R --log=QueSeSubio.log /home/usuario /personal
exit

ftp_sube.lftp (EN WINDOWS)

open -u usuario,contraseña proyecto.enmacosa.com
mirror -p -R --log=Sube_a_illa.log /directorio/de/backup
exit

NOTA: /dir/directory es si se trata de c:\dir\directory
Si el programa está en el disco C. No hay opción de cambio de disco duro lee desde donde esté el programa instalado

domingo, 16 de febrero de 2014

Changing processor speed automatically if temperature increase ! / ¡ Cómo cambiar la velocidad del procesador automáticamente si aumenta peligrósamente la temperatura

Con este tipo de programas y un portátil Dell que tengo. Éste tiene la mala costumbre de recalentarse si funciona a 1600 MHz y se le hace trabajar duro. Sube hasta los 83ºC y se apaga sólo. Si le modifico la velocidad del procesador a 800 MHz la temperatura baja a los 50ºC.

El problema es que si, por ejemplo, estoy ejecutando un programa pesado de edición de vídeo a baja velocidad el proceso se eterniza y a alta velocidad el ordenador se apaga. 

To do hard woks, I have a Dell laptop that has a bad habit of overheating if it works at 1600 MHz and makes you work hard. Up to 83 ° C and off alone. If I modify the processor speed to 800 MHz low temperature 50 ° C.

The problem is that if I'm running a heavy video editing program on low speed high speed process and eternizes, the computer shuts down.

¿Como mejorar la velocidad sin recaletamientos extremos?.

 How to improve speed without extreme overheating?

Como no he encontrado una buena solución, he mezclado todas y, he creado un script que varía la velocidad del procesador según vaya yendo la temperatura.
Para entenderlo voy a explicar algunos pasos:

Since I have not found a good solution, and I mixed all, I created a script that varies the processor speed as the temperature get going.
To understand I will explain some steps:

El programa "sensors". 

The "sensors" program

Si tecleamos sensors en la consola nos aparecerá algo así:
If you type "sensors" in the console we see something like this:

~$ sensors
Adapter: Virtual device
temp1:       +63.0°C  (crit = +110.0°C)                  

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:  +59.0°C                                    
Core1 Temp:  +62.0°C    

La temperatura de ambos procesadores es algo similar. Nos interesa obtener el valor de la temperatura del 2º:
The temperature of both processors is similar. We are interested in the value of the temperature of 2nd:


~$ sensors | tail -c 45
62.0°C 


~$ sensors | tail -c 45 | head -c 2
62

Traduciendo: Al chorreo de texto después de sensors tomamos sólo los 45 últimos caracteres (tail -c 45) y de éstos los dos primeros (head -c 2)
Puede que en otros ordenadores no valgan los valores de 45 y 2. Probad hasta atinar.



Translating: The text after sensors take only the last 45 characters (tail-c 45) and of these the first two (head-c 2)
On other computers may not be worth the values ​​of 45 and 2. Taste to hit.

El programa "cpufreq". 

"cpufred" program

Si tecleamos cpufreq-set -g ondemand el procesador pasará a usar al máximo el procesador si se le exige caña.
Si tecleamos cpufreq-set -g powersave el procesador pasará a usar la mínima velocidad posible.
NOTA: puede necesitar poner delante sudo.

If you type cpufreq-set-g ondemand the processor will use to the maximum the processor if you are required cane.
If you type cpufreq-set-g powersave the processor will use the lowest speed possible.
NOTE: You may need to put ahead "sudo".

El script. 

The script.

#!/bin/bash
demanda=true
power=true
while true
  do
  clear
  echo "------------------INI--------------------"
  a=`sensors | tail -c 45 | head -c 2`
# Colocamos en la variable a el valor de la temperatura

  echo "Temperatura actual: $aºC"
El primer valor del argumento estará en $1
  if [ $a -lt $1 ]; then
    if $demanda; then
       echo "Cambia a ONDEMAND por ser $aºC menor de $1ºC"
       cpufreq-set -g ondemand
       demanda=false
       power=true
# Estas dos últimas es para no repertir constantemente la orden cpufrec

    fi
#   sleep 10
  fi

El segundo argumento estará en $2
  if [ $a -gt $2 ];  then
    if $power; then
       echo "Cambia a POWERSAVE por ser $aºC ser mayor de $2ºC"
       cpufreq-set -g powersave
       demanda=true
       power=false
    fi
  sleep 10
  fi

  echo "------------------fin--------------------"
  sleep 30
done

Como funciona. 

How it works

Si tecleamos sudo ./tempo.sh 60 70 saltará a powersave si se superan los 70ºC y saltará a ondemand si no llegan a los 60ºC

If you type sudo. / tempo.sh 60 70 jump to powersave if over 70 º C and jump to ondemand if you do not reach 60 ° C

~$ sudo ./tempo.sh 60 70

--------------------INI--------------------------
Temperatura actual: 59ºC
Cambia a ONDEMAND por ser 59ºC menor de 60ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 67ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 71ºC
Cambia a POWERSAVE por ser 71ºC ser mayor de 70ºC
--------------------fin--------------------------
.
.
.

Y ya está. Cuando nos cansemos, tecleamos en la consola ctrl+C y se para el programa por las bravas.


That's it. When we get tired, we type Ctrl + C in the console and the program will be over.






domingo, 4 de noviembre de 2012

Ground proyection from previous files

After obtaining the squares in. xyz (ASCII), the next step is to create the ground proyection of these files. In this way we can access in the future to data in a more efficient way and as we know the actual dimensions scaled measurement will be much easy.

We created another program the PlantaLasEje2.


The way of working is simple. File .xyz is selected. and checked the option<Dibuja planta> or every one <Todo Directorio>.


We now have everything in place to create the database that will feed our application Google Maps with centimeter accuracy:

Fuente: Bounded-Roads

What size is it?

45.000 files .xyz will be 45.000 files .jpg. 3,2GB. Fotos with 72KB  (300px x 300px)

Aside from this program described, we developed another in C and compilated with gcc and Linux (Ubuntu). Te time are reduce in 1/5 and the exit ase in png format (less size).

--------------------------------------------------------------------------------------------------------

Una vez obtenidos los cuadraditos en archivos .xyz, el siguiente paso es crear el dibujo en planta de estas secciones. De esta manera podremos acceder en un futuro a los datos en planta de una forma más eficiente y como sabremos las dimensiones reales la medición escalada será mucho más sencilla.


La forma de funcionar es muy sencilla. se selecciona el archivo .xyz y se le da a la opción <Dibuja planta> si se deseha hacer el trabajo de todo el directorio se pincharía en la opción <Todo Directorio>.


En este momento tenemos todo dispuesto para la creación de la base de datos que alimentará a nuesta aplicación Google Maps con exactitud de centímetros:

Fuente: Bounded-Roads

¿Cuanto ocupa?

En el apartado anterior los 45.000 archivos de datos .xyz se traducen en 45.000 archivos de dibujo .jpg que en total ocupan 3,2GB para unas fotos de 72KB de media. (tamaño: 300px x 300px)

Aparte de este programa descrito, hemos desarrollado otro en C y compilado con gcc y Linux (Ubuntu). Los tiempos los hemos reducido en 1/5 y la salida de plantas las hemos realizado en formato .png que en estos casos suele reducir el tamaño del archivo a una cuarta parte que su homólogo en .jpg, mejorando su transmisión por internet.

martes, 30 de octubre de 2012

How to split a large file .las (LIDAR) into small squares

One way to tame a huge, or worse, a huge set of ".las" files is transformed them into a set of files to predefined limits.

Steps to follw:

  1. Knowing the structure of .las files.
  2. Adding to each file that corresponds information as the name of it.
  3. Transforming a group of files in grid.
To make this work we have created several programs one in Visual Basic.

Program to cut into squares from a .las file in  Several .xyz files (ASCII, formatted xyziRGB) (PlantaLasEje.exe)  

Preview set
Marking lines where it will cut
Notice announcing the time required by the program
During execution the progress will be displayed

Original 3D
Futures pieces
One of them
If you prefer linux: (txt210).

The result is a grid of files.

LIDAR data on Google Maps and obtaining measurements



On the left plant and up, perspective view of an element 10x10mm
(in downloads allowed)

How long does the processing?


Obviously depends on the size of the files. On 18/01/2013, to see the processing times, I have to work on a computer program for 4 cores and 2GB of RAM on a group of files which total 20GB. The result is a collection of 45,000 files. Xyz (squares) which total 40 GB. Processing at 13.50 hours.

Our old solution in C compiled with gcc under Linux (Ubuntu) took 3 hours on a computer with similar characteristics.

------------------------------------------------------------------------------------------------------------


Una de las formas de domar un enorme, o peor, un conjunto de enormes archivos .las, es transformarlos en un grupo de archivos con los límites predefinidos.

Se darán los siguientes pasos:
  1. Conocer la estructura las para poder leerlos
  2. Se irán añadiendo a cada archivo la información que le corresponde según el nombre de éste.
  3. Se obtendrá un grupo de archivos en cuadrícula.
Para hacer este trabajo se han creado varios programas uno de ellos en Visual Basic para aquellos a los que les guste el güindous.

Programa en Windows de partición en cuadrados desde un archivo .las a varios .xyz (de texto, con formato xyziRGB) (PlantaLasEje.exe) descárgatelo desde aquí En Linux, también funciona con wine.

Visualización previa del conjunto
Líneas por donde se cortará
Aviso anunciando el tiempo que necesitará el programa
Durante la ejecución se mostrará el avance

Original en 3D
Futuros trozos
Uno de los trozos (3D)
Si por el contrario prefieres linux desde un archivo xyz a otros manteniendo el formato  (txt210) descárgatelo desde aquí.

El resultado final será una retícula de archivos.

Planta LIDAR sobre Google Maps y realización de mediciones


A la izquierda, planta, y arriba, perspectiva, de una elemento de 10x10m
(en descargas permitidas)

¿Cuanto tarda el procesado? 

Lógicamente depende de la dimensión de los ficheros .las. El día 18/01/2013, para ver los tiempos de procesado, he puesto a trabajar el programa en un ordenador de 4 núcleos y 2GB de RAM sobre un grupo de archivos que suman 20GB en formato .las. El resultado es un conjunto de 45.000 archivos .xyz (cuadraditos) que suman 40 GB después de 13,50 horas de procesado.

Nuestra antigua solución en C compilada con gcc bajo Linux (Ubuntu) tardó 3 horas en un ordenador de similares características.