TU ANUNCIO / YOUR PUBLICITY

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

domingo, 15 de junio de 2014

Construction KML files for GOOGLE EARTH / Construcción de archivos KML (GOOGLE EARTH)


Para construir un archivo KML

ENCABEZADO:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1"><Document>

DEFINICIÓN DE LOS ICONOS:
<Style id="cuacua">
<IconStyle><Icon><href>http://DONDEESTÉ/cuacua.jpg</href> </Icon>
<scale>0.5</scale>
</IconStyle>
</Style>

NOMBRE DEL OBJETO COMPLETO A INCRUSTAR:
<name>GUITIRIZ</name>

SITUACIÓN DE PUNTOS:
<Placemark>
<name>ABELLEIRA</name><description>Cuadro</description><styleUrl>#cuacua</styleUrl>
<Point>
<coordinates>-7.827769, 43.243973</coordinates>
</Point>
</Placemark>

DESCRIPCIÓN MÁS AMPLIA: ¿CON UN CÓDIGO HTML?
<description>
<![CDATA[
<html><body> <ul> <li>unacosa</li> <li>doscosa</li> <li>trecosa</li> </ul>
</body></html>
]]>
</description>

RUTA
<Placemark>
<name>Ruta</name>
<styleUrl>#ELQUESEA</styleUrl>
<LineString> <tessellate>1</tessellate>
<coordinates>
-7.831145169149639,43.24548111003632,0 -7.829838425578537,43.24543153520305,0 -7.828802085991362,43.24596206771469,0 -7.827556559695273,43.24629794655928,0
</coordinates>
</LineString>
</Placemark>

POLÍGONO
<Placemark>
<name>Polígono</name> <styleUrl>#ELQUESEA</styleUrl>
<Polygon> <tessellate>1</tessellate>
<outerBoundaryIs> <LinearRing>
<coordinates>
-7.831434018418226,43.24545399364921,0 -7.830158331852824,43.24602676219662,0 -7.830760553640029,43.24670912547285,0 -7.831434018418226,43.24545399364921,0
</coordinates>
</LinearRing> </outerBoundaryIs>
</Polygon>
</Placemark>
PIE
</Document></kml>

domingo, 8 de junio de 2014

A little philosophy / Un poco de filosofía

¿Por qué empezamos a programar?

Hay dos motivos:
  • El primero, que podríamos denominar, el acicate serio, es debido a una necesidad. Queremos hacer que el ordenador haga un trabajo por nosotros y no encontramos un programa que lo haga.
  • El segundo, el más banal de los motivos. Porque se puede. Siempre te gusta poder hacer algo por tí mismo. Es una cuestión de orgullo.
Por este motivo se están colocando en este blog todo lo que hemos necesitado, recopilado o creado en este blog. (tambíen, reconozco hay un coco de inmodestia)

Ha habido que domar servidores, toneladas de información, crear combinaciones, transformaciones, ediciones, confrontar bases de datos, soluciones estéticas ... jugar con archivos y todo tipo de información en innumerables formatos.

Todo lo realizado tiene un poco de búsqueda por internet, estudio, esfuerzo y suerte. Y dado que bastante de esa sapiencia me la ha dado este mundo virtual es lógico devolver el favor por el equilibrio global.

De todos los temas que se exponen no se debe esperar un orden. Espero, que al menos, sea entretenido.

El primer paso para entender algo es reconocer qué es lo que no se sabe.

Hace años (muchos años) era estudiante universitario en Madrid. Tuve un profesor de estadística del cual, aunque olvidara el nombre, siempre recordaré una de sus primeras clases. Partió de la base de que si de un suceso no conocía nada, la probabilidad de que ocurriera o no sería del 50%. Ante la duda, cara o cruz. Equiparó el suceso al lanzamiento de una moneda al aire. El suceso podría repetirse otra vez; con dos caras, cara y cruz, o dos cruces de resultado, y sus probabilidades resultantes serían 1/4, 1/2, 1/4. Continuó con ello hasta llegar a un sumatorio del que dedujo la ecuación de la distribución normal (Gauss).

Desde la cara/cruz a Gauss

Billete de 10 marcos (antes del euro) con la imagen de Gauss y su célebre ecuación.
Cuando cuento esta historia me doy cuenta de que no le interesa a un altísimo porcentaje de la gente. Pero, a un pequeño número de personas, les parece apasionante que de una simple probabilidad del 50% se pueda deducir un ecuación tan importante: 

Ecuación de Gauss en los antiguos billetes de 10 marcos
Cada dos o tres años me encuentro con alguien que le interesa y disfruta la historia y a cambio me cuenta otra. El lado malo es que cada vez me canso más en tenerla que repetir doscientas veces hasta encontrar a esa persona.

domingo, 1 de junio de 2014

Tree with JAVASCRIPT / Árbol con JAVASCRIPT


Si interesa crear un sistema de árbol parejo a un tramo de directorios y subdirectorios es fácil de la siguiente manera.


Objetivo:

Javascripts necesarios:

<script src="/.../jquery.js”>
</script>

<script src="/.../jquery.easing.js" ></script>

<script src="/.../jqueryFileTree.js>
</script>

<link href="/.../jqueryFileTree.css" rel="stylesheet" type="text/css" media="screen" />
- fileTreeDemo.php


El resto del código:

<script type="text/javascript">
$(document).ready( function() {
$('#fileTreeDemo_2').fileTree({ root: 'Directorio/de/datos/', script: '/.../jqueryFileTree.php', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false }, 
function(file) {llama2(file);});});
function llama2(cosa){window.open('Archivo.php?dibu='+cosa,'_self');}
</script>

</head><body>
<div class="example"><div id="fileTreeDemo_2"></div></div>
</body></html>
Análisis de las funciones/códigos:
jquery.js Demasiado coñazo para entenderlo. Se baja de internet y punto.
/* 
 * jQuery 1.2.1 - New Wave Javascript 
 * 
 * Copyright (c) 2007 John Resig (jquery.com) 
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses. 
 * 
 * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $ 
 * $Rev: 3353 $ 
 */

jquery.easing.js
/* 
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 
 * 
 * Uses the built In easIng capabilities added In jQuery 1.1 
 * to offer multiple easIng options 
 * 
 * Copyright (c) 2007 George Smith 
 * Licensed under the MIT License: 
 *   http://www.opensource.org/licenses/mit-license.php 
 */ 

jqueryFileTree.js

// jQuery File Tree Plugin 
// 
// Version 1.01 
// 
// Cory S.N. LaViska 
// A Beautiful Site (http://abeautifulsite.net/) 
// 24 March 2008 
// 
// Visit http://abeautifulsite.net/notebook.php?article=58 for more information
DESDE ESTE SE LLAMARA A: jqueryFileTree.php

jqueryFileTree.css 

UL.jqueryFileTree { font-family: Verdana, sans-serif; line-height: 18px; 
 padding: 0px; margin: 0px; } 

UL.jqueryFileTree LI { list-style: none; padding: 0px; padding-left: 20px; 
 margin: 0px; white-space: nowrap; } 

UL.jqueryFileTree A { color: #333; text-decoration: none; display: block; 
 padding: 0px 2px; } 

UL.jqueryFileTree A:hover { background: #BDF; } 

/* Core Styles */ 
.jqueryFileTree LI.directory {
 background: url(images/directory.png) left top no-repeat; } 
.jqueryFileTree LI.expanded {
 background: url(images/folder_open.png) left top no-repeat; } 
.jqueryFileTree LI.file { 
 background: url(images/file.png) left top no-repeat; } 
.jqueryFileTree LI.wait { 
 background: url(images/spinner.gif) left top no-repeat; } 
/* File Extensions*/ 
.jqueryFileTree LI.ext_3gp { 
 background: url(images/film.png) left top no-repeat; } 
.jqueryFileTree LI.ext_afp { 
 background: url(images/code.png) left top no-repeat; } 
.jqueryFileTree LI.ext_afpa { 
 background: url(images/code.png) left top no-repeat; }
[…]

jqueryFileTree.php

<?php 
$_POST['dir'] = urldecode($_POST['dir']); 
if ($_POST['dir']<>"//"){ 
$root = isset($root) ? $root : ""; 
if (is_dir("/EL/DIRECTORIO/DE/PARTIDA/".$root.$_POST['dir'])){$root="/EL/DIRECTORIO/DE/PARTIDA/".$root;} 
if( file_exists($root . $_POST['dir']) ) { 
 $files = scandir($root . $_POST['dir']); 
 natcasesort($files); 
 if( count($files) > 2 ) { /* The 2 accounts for . and .. */ 
  echo "<ul class=\"jqueryFileTree\" style=\"display: none;\">"; 
  // All dirs 
  foreach( $files as $file ) { 
   if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && is_dir($root . $_POST['dir'] . $file)  && ( substr($file,-1,1)<>"-" )  ) { 
    echo "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "/\">" . htmlentities(utf8_decode($file)) . "</a></li>"; 
   } 
  } 
  // All files 
  foreach( $files as $file ) { 
   if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && !is_dir($root . $_POST['dir'] . $file)  && ( substr($file,-5,1)<>"-" ) ) { 
    $ext = preg_replace('/^.*\./', '', $file); 
    if (strlen($ext) > 4) {$ext="";} 
    echo "<li class=\"file ext_$ext\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "\">" . htmlentities(utf8_decode($file)) . "</a></li>"; 
   } 
  } 
  echo "</ul>";  
 } 
} 
}//nodir 
?>


Parece lioso pero el resultado de conjugar jQuery con jqueryFileTree es asombroso.

domingo, 25 de mayo de 2014

MiniServer with PYTHON / Miniservidor con PYTHON

A veces, no queremos que nuestro ordenador se convierta en un servidor con todo el montaje de Apache, PHP y demás sino que simplemente mande una información por un puerto. Esto se puede conseguir con Python de la siguiente manera:

Sometimes we do not want your computer to become a server with all mounting Apache, PHP and others but simply send an information for a port. This can be achieved with Python follows:

Programación del lado del servidor:
Server program:

servidor.py:

- No necesita cliente.py. Le basta un navegador.
#!/usr/bin/python
import socket
import time
puerto = 4444; #si es menor de 1000 deberá invocarlo sudo
miSocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
#miSocket.bind( ( socket.gethostname(), puerto ) )
miSocket.bind( ( 'localhost', puerto ) )
miSocket.listen( 1 )
while True:
da = time.time()
channel, details = miSocket.accept()
recibido = channel.recv(1024)
channel.send( '<html><body><input type="button" value="' + recibido + "--" + time.asctime(time.localtime(da)) + '"></body></html>')
channel.close()

- Necesita cliente.py
#!/usr/bin/python
import socket
s = socket.socket()
s.bind(("localhost", 9999))
s.listen(1)
sc, addr = s.accept()
while True:
recibido = sc.recv(1024)
if recibido == "quit":
break
print "Recibido:", recibido
sc.send(recibido)
print "adios"
sc.close()
s.close()


Programación del lado del cliente:
Client program

cliente.py:

- Cuando se necesita cliente.py
#!/usr/bin/python
import socket
s = socket.socket()
s.connect(("localhost", 9999))
while True:
mensaje = raw_input("'?> ")
s.send(mensaje)
if mensaje == "quit":
break
print "adios"
s.close()

- Cuando no se necesita cliente.py y su opción en el navegador

#!/usr/bin/python
import socket
miSocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
#miSocket.connect( (socket.gethostname(), 4545 ) )
miSocket.connect( 'localhost', 4545 ) )
data, server = miSocket.recvfrom( 100 )
print data
miSocket.close()


domingo, 18 de mayo de 2014

Creating thumbnail from AUTOCAD / Creación de miniaturas de AUTOCAD


Hay un convertidor de CAD a SVG denominado cad2svg. Vale tanto para dxf como para dwg. Es descargable desde:
Miniatura de un plano en dwg.

*====================================
* cad2svg.c -- Convert DWG and DXF to SVG
*-------------------------------------------------------------------------
* Author: Renaud BOMPUIS - cad2svg@nkadesign.com - http://etc.nkadesign.com
  • Adapted and augmented from the OpenDWG library examples

Programación en PHP

[…]
//CASO DE PLANOS
if (($ex==".dwg") or ($ex==".dxf")) {
exec('/.../cad2svg "'.$paz.'" -o "'.$paz.'-1.svg"');
exec('sed '."'s/0.50mm/3.50mm/g'".' "'.$paz.'-1.svg" > "'.$paz.'-2.svg"');
exec('sed '."'s/1.50mm/5.50mm/g'".' "'.$paz.'-2.svg" > "'.$paz.'-3.svg"');
exec('convert "'.$paz.'-3.svg" -resize x150 -raise 5x5 -negate "'.$miniPNG.'"');
$im=new imagick($paz."-3.svg");
$im->setImageFormat("png");
$im->thumbnailImage( null, 150);
$im->negateImage( FALSE, imagick::CHANNEL_ALL );
$im->raiseImage( 5, 5, 140, 140, true);

header("Content-type: image/png"); readfile($miniPNG);
// $gestor = fopen($miniPNG, "w"); fwrite($gestor, $im); fclose($gestor);
unlink($paz.'-3.svg'); unlink($paz.'-1.svg'); unlink($paz.'-2.svg');
}
[…}


Programación en Python

[…]
if [[ $EEE == 'dwg' ]] || [[ $EEE == 'dxf' ]] || [[ $EEE == 'DWG' ]] || [[ $EEE == 'DXF' ]]; then
/.../cad2svg "$FICHERO" -o "$FICHERO-1.svg"
sed 's/0.50mm/3.50mm/g' "$FICHERO-1.svg" > "$FICHERO-2.svg"
sed 's/1.50mm/5.50mm/g' "$FICHERO-2.svg" > "$FICHERO-3.svg"
convert "$FICHERO-3.svg" -resize x150 -raise 5x5 -negate "$FICHERO.png"
rm "$FICHERO-1.svg"
rm "$FICHERO-2.svg"
rm "$FICHERO-3.svg"
echo "$j-cad->$FICHERO"
fi
[...]

domingo, 11 de mayo de 2014

Creating thumbnails from office files (Microsoft or OpenOffice or FreeOffice) / Creación de miniaturas a partir de documentos de Office (MS or FreeOffice)


Puede resultar interesante crear miniaturas de ficheros ofimáticos. Un previsualización de ésto e incluso mostrarse a través de una página web.

Ejemplo de miniatura
 de un documento .doc
con efecto biselado
FORMA 1
Existe un código de Python: DocumentConverter.py:

# PyODConverter (Python OpenDocument Converter) v1.1 - 2009-11-14
#
# This script converts a document from one office format to another by
# connecting to an OpenOffice.org instance via Python-UNO bridge.
#
# Copyright (C) 2008-2009 Mirko Nasato <mirko@artofsolving.com>
# Licensed under the GNU LGPL v2.1 - http://www.gnu.org/licenses/lgpl-2.1.html

La forma de trabajar con ello es primero crear la entrada a través del puerto.

libreoffice -headless -accept="socket,port=8100;urp;"
ó
openoffice.org -headless -accept="socket,port=8100;urp;"

/.../dc.py "FICHERO" "FICHERO.pdf"

y después:

convert "$FICHERO.pdf[0]" -resize x150 -raise 5x5 "FICHERO.png"

FORMA 2
Otra posibilidad es partir del fichero de java (http://code.google.com/p/jodconverter/wiki/GettingStarted):

java -jar /.../java_dc/lib/jodconverter.jar -port 8100 "FICHERO" "FICHERO.pdf"
convert "$FICHERO.pdf[0]" -resize x150 -raise 5x5 "FICHERO.png"

NOTA: Obsérvese que se utiliza el comando convert (descargar imagick).

Otro ejemplo lo tenemos en “minifoto.php”:
[…]
//MS Oficce
if (($ex==".doc") or ($ex==".docx") or ($ex==".xls") or ($ex==".xlsx") or ($ex==".rtf") or ($ex==".html") or ($ex==".htm") or ($ex==".ppt") or ($ex==".pptx") or ($ex==".ods") or ($ex==".odt") or ($ex==".odp")) {
$puerto=rand(10000,60000);
$ello='java -jar /directorio/donde/este/jodconverter-core-3.0-beta-4.jar -port '.$puerto.' "'.$paz.'" "'.$paz.'-1.pdf"';
exec ($ello);
exec ('convert "'.$paz.'-1.pdf[0]" -resize x150 -raise 5x5 "'.$miniPNG.'"');
header("Content-type: image/png");
readfile($miniPNG);//echo $im;
unlink($paz.'-1.pdf');
}
[...]

domingo, 4 de mayo de 2014

Metadata in photographs / Metadatos en fotografías

Para la inserción de metadatos y/o visualización de estos existe un repertorio de programas (en linux) exif, jhead, exiv2, exiftool, identyfy...

To insertion metadata in linus there are various programs in Linux: exif, jhead, exiv2, exiftool, identyfy...


$ exiftool -S -t -GPSLongitude -GPSLatitude -GPSAltitude -c %.6f IMG_0722_1.JPG
Que da esta salida. 122.477727 E 8.604807 S 1.281 m
Para añadir las coordenadas GPS deberemos añadir los siguientes tags:
exif:GPSAltitude: 0/1
exif:GPSInfo: 90
exif:GPSLatitude: 60/1, 23/1, 10662/625
exif:GPSLatitudeRef: N
exif:GPSLongitude: 5/1, 19/1, 41599/761
exif:GPSLongitudeRef: E
exif:GPSVersionID: 2, 2, 0, 0


Partiendo de una imagen cualquiera, vemos que no tiene tags con identify -verbose:
We know tags with identify -verbose:

$ identify -verbose toronto.jpg
(...)
Properties:
comment: systemadmin.es
date:create: 2011-08-02T09:58:50+02:00
date:modify: 2011-08-02T09:58:50+02:00
jpeg:colorspace: 2
jpeg:sampling-factor: 2x2,1x1,1x1
signature: b8f1944378ff5891453ed999b7469021de44ab15ed178de645751faf1fdb9f38
(...)


Podemos añadir los tags mediante exiftool:
We add tags with exiftoll:

$ exiftool -GPSAltitude="0/1" toronto.jpg
$ exiftool -GPSLatitude="41.403339" toronto.jpg
$ exiftool -GPSLatitudeRef="N" toronto.jpg
$ exiftool -GPSLongitude="2.1740288" toronto.jpg
$ exiftool -GPSLongitudeRef="E" toronto.jpg


Al sacar los datos con identify veremos como tenemos las coordenadas en los metadatos:
And came back with identity:

$ identify -verbose toronto.jpg
(...)
exif:GPSAltitude: 0/1
exif:GPSInfo: 90
exif:GPSLatitude: 41/1, 24/1, 30051/2500
exif:GPSLatitudeRef: N
exif:GPSLongitude: 2/1, 10/1, 82824/3125
exif:GPSLongitudeRef: E
exif:GPSVersionID: 2, 3, 0, 0
(...)

domingo, 27 de abril de 2014

How to georeference photo files / Cómo georeferenciar archivos fotográficos


1º Instalamos lo necesario:
root@ordenata:~$ apt-get install geotiff-bin

El comando más habitual es:

geotipcp -e archivo.tfw origen.tif destino.tif

Las instrucciones son:

usage: gtiffcp [options] input... output
where options are:
-g file install GeoTIFF metadata from <file>
-4 proj4_str install GeoTIFF metadata from proj4 string
-e file install positioning info from ESRI Worldfile <file>
-a append to output instead of overwriting
-o offset set initial directory offset
-p contig pack samples contiguously (e.g. RGBRGB...)
-p separate store samples separately (e.g. RRR...GGG...BBB...)
-s write output in strips
-t write output in tiles
-i ignore read errors
-d truncate 8 bitspersample to 4bitspersample

-r # make each strip have no more than # rows
-w # set output tile width (pixels)
-l # set output tile length (pixels)

-f lsb2msb force lsb-to-msb FillOrder for output
-f msb2lsb force msb-to-lsb FillOrder for output

-c lzw[:opts] compress output with Lempel-Ziv & Welch encoding
-c zip[:opts] compress output with deflate encoding
-c jpeg[:opts]compress output with JPEG encoding
-c packbits compress output with packbits encoding
-c g3[:opts] compress output with CCITT Group 3 encoding
-c g4 compress output with CCITT Group 4 encoding
-c none use no compression algorithm on output

Group 3 options:
1d use default CCITT Group 3 1D-encoding
2d use optional CCITT Group 3 2D-encoding
fill byte-align EOL codes
For example, -c g3:2d:fill to get G3-2D-encoded data with byte-aligned EOLs

JPEG options:
# set compression quality level (0-100, default 75)
r output color image as RGB rather than YCbCr
For example, -c jpeg:r:50 to get JPEG-encoded RGB data with 50% comp. quality

LZW and deflate options:
# set predictor value
For example, -c lzw:2 to get LZW-encoded data with horizontal differencing

Y un ejemplo de archivo.tfw sería:

0.0096628
0.00257495
0.00257495
-0.0096628
618251.334935
4849230.18706

es decir:


|Vx1, Vx2| es el tamaño del pixel en la dirección x
|Vy1, Vy2| es el tamaño del pixel en la dirección y
Px, Py son las coordenadas del punto de origen.

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