martes, 14 de diciembre de 2010

Descargar todas las imágenes de una web con php

Hoy quiero mostraros un script que he hecho en php el cual dada una url (que pide primero), descarga todas las imágenes (públicas) de esa página a nuestro servidor (que si lo probamos desde localhost obviamente lo descarga en nuestro PC).

El script, básicamente consiste en 2 funciones:
La 1ª almacena en un path todas las imágenes (cogiendo la etiqueta img de html).
Y la segunda crea una copia para cada imagen en nuestra máquina local, dentro de la carpeta images.

Sin más dilación os dejo el código:


<?phpfunction imagenesHTML($url, $norepetidos = true)
{
$contenido = @file($url);
$contenido = array_map("trim", $contenido);
$contenido = implode(" ", $contenido);

if (
preg_match_all('/<img([^<>]+)>/i', $contenido, $match) ) {
foreach(
$match[1] as $atributos) {
if (
preg_match('/src="([^"]+)"/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
} elseif (
preg_match('/src=([^ ]+)/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
}
unset(
$matchpaths);
}
}
if ( !empty(
$pathimgs) ) {
if (
$norepetidos) {
return
array_unique($pathimgs);
} else {
return
$pathimgs;
}
} else {
return
false;
}
}
function
guarda_imagen ($img, $nombre){
$size =@getimagesize ($img);
if(
$size!=''){
$ancho = $size[0];
$alto = $size[1];
$thumbnail = ImageCreateTrueColor( $ancho, $alto );
switch (
$size['mime']){
case
'image/jpeg':
$tipo=".jpg";
$src_img = ImageCreateFromJPEG( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
ImageJPEG( $thumbnail, "images/".$nombre.".jpg" );
break;
case
'image/png':
$tipo=".png";
$src_img = imagecreatefrompng( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagepng ( $thumbnail, "images/".$nombre.".png" );
break;
case
'image/gif':
$tipo=".gif";
$src_img = imagecreatefromgif ( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagegif ( $thumbnail, "images/".$nombre.".gif" );
break;
default:
ImageDestroy( $thumbnail );
return
false;
}
ImageDestroy( $thumbnail );
return
$tipo;
}
else
return
false;

}
?> <html>
<head>
<title>Captura Imagenes de una URL</title>
</head>
<body>

<h1>Capturador de Imagenes</h1>
<form action="
<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
URL: <input type="text" name="url" value=""/>
<input type="submit" name="BOTON" value="Capturar" />
</form>
<?php
if ($_POST['BOTON']=='Capturar'){
$imagenes = @imagenesHTML($_POST['url']);
if (
$imagenes!=''){
if (!
is_dir('./images')) mkdir("images");
$i=0;
foreach (
$imagenes as $imagen){
$img = split ('/', $imagen);
if (
count($img)<=1){
$url= split('/', $_POST['url']);
$ori=$imagen;
$imagen='';
$tope=count($url)-1;
for (
$j=0; $j<$tope; $j++)
$imagen.=$url[$j].'/';
$imagen.=$ori;
}
$ok = guarda_imagen ($imagen, 'imagen_'.$i);
if (
$ok==false) echo 'no se ha podido descargar la imagen: '.$imagen.'<br/>';
else{
echo
'<img src="images/imagen_'.$i.$ok.'"/><br/>';
$i++;
}
}
}
}
?> </body>
</html>

martes, 7 de diciembre de 2010

html imagen con enlace

Como poner en html una imagen que sea un enlace:

< a href="http://www.blogger.com/ruta_web">< img src="http://www.blogger.com/ruta_imagen">

lunes, 29 de noviembre de 2010

Un nuevo blog. Vitocha - Bisuteria y complementos

En soy-informático hemos ayudado a las chicas de vitocha a introducirse en el mundo de la web. Les hemos creado un blog y una cuenta de facebook para que a través de internet, poder comunicarse con sus clientes o incluso conseguir nuevos.


Tareas realizadas:
  • Creación de un blog en blogger + la formación necesaria para que puedan autogestionarselo
  • Creación de una página de facebook + formación
  • Creación de un panel con las firmas a las que representan
  • Formulario de contacto
  • Añadirles la url del blog en el buscador google.
  • Script de google analytics para poder consultar las visitas
Si tu también quieres mejorar la comunicación con tus clientes a través de las tecnologías 2.0 (community manager) ponte conmigo en contacto a través de la dirección jose arroba soy-informatico.es

viernes, 26 de noviembre de 2010

fecha = null en microsoft dynamics

Si queremos comprar si el valor de una variable de tipo fecha, es igual a nulo en el C/AL de Microsoft Dynamics tenemos que utilizar la variable 0D (cero D)

Ejemplo:

//Es fecha (variable de tipo Date) igual a nulo

IF fecha = 0D THEN

domingo, 17 de octubre de 2010

PHP en Android

La empresa Bilbaina Irontec, utilizando la aplicación ASE (aplicación para Android desarrollada por Google gracias a la cual es posible editar y ejecutar scripts en tu terminal móvil) y añadiendo scripts propios, han desarrollado PFA (Php For Android).

Toda la información la tenéis en la página de la empresa y la documentación de la librería (scripts, manuales, etc) en la web www.phpforandroid.net.

Personalmente aún no poseo ningún terminal con Android, pero poco a poco me va convenciendo más y al final acabaré picando...

miércoles, 6 de octubre de 2010

reporting services mostrar parametro multivalor

Para mostrar un parámetro multievaluado en reporting services tenemos que utilizar la siguiente instrucción:
Join(Parameters!Parameter1.Value,", ")

viernes, 1 de octubre de 2010

frases que no le puedes decir a un universitario

Hace tiempo me encontré con este texto y no pare de reírme en un buen rato, no se quien es el autor, pero es un autentico crack. Hoy por hoy ya he conseguido el titulo, y a la gente que esta en ello solo le puedo decir dos cosas, en primer lugar ¡animo! y en segundo, que se tomen la carrera con filosofía, tal y como hace el autor del siguiente texto.

¡A disfrutar!


No te preocupes, ¡seguro que a la próxima apruebas!:

Sabemos que no es verdad, sabéis que no es verdad… ¿POR QUÉ COÑO LA DECÍS?. Es un insulto a nuestro estado emocional tratar de animarnos con semejante frase falsa. La única respuesta digna sería ‘¡Que te den por el culo, cabrón de mierda!’, pero como somos educados y estamos hundidos en la mierda respondemos con un tímido ‘Si, claro, a la próxima seguro’. Es mejor el silencio, no os preocupéis, sabemos que no nos comprendéis, así que no hace falta que os esforcéis porque será peor.

¿Qué tal el examen?:

MAL, el examen MAL, asqueroso revuelveheridas. Obviamente el mes que me he tirado estudiando no ha evitado que me follen cruelmente… ¿Para qué preguntas? ¿Para disfrutar de mi miseria? ¿Para decir ‘No te preocupes, ¡seguro que a la próxima apruebas!’? No se pregunta, lo único que puede ayudarnos a salir del agujero es dinero y chocolate. Si no estáis dispuestos a ofrecernos nada de eso, manteneros alejados y no os regodeéis en nuestro infortunio.

¿Pero no has acabado la carrera todavía?:

Vamos a ver, grandísimo hijo de puta, cuando terminemos la carrera os enteraréis, el mundo se enterará. Nos pondremos nicks en el Messenger con tantos emoticonos felices que dolerán los ojos, lo publicaremos en el periódico, en el BOE, haremos una gran fiesta, definitivamente NO LO ESCONDEREMOS. Así que no nos preguntéis si hemos acabado la carrera cuando la respuesta es obviamente no. Eso no hace más que darnos aún más ganas de suicidarnos o de meternos a jardineros o algo por el estilo.

Pero, ¿tan difícil es?:

No, que va. Está tirado. Yo es que disfruto hipotecándome medio pulmón para pagar la matrícula cada año y dejando que me metan palos por el culo en forma de exámenes y apuntes todo el año. PUES CLARO QUE ES DIFÍCIL. Es tan difícil que vuestra mente pagana es incapaz de comprender los niveles de dificultad y abstracción absurda a los que puede llegar un cerebro humano.

¡El hijo de Fulanita se hizo la carrera en 5 años justos!:

BIEN POR EL HIJO DE FULANITA. Tirémosle cacahuetes y bailemos a su alrededor. También hay gente que no la acaba nunca, y no vemos a nuestros padres diciéndonos cada día ‘Qué orgulloso estoy de ti, hijo, que aún no te has dado cuenta que no vales para esto’. Nada de comparaciones, porque entonces podemos mencionar a ese compañero nuestro que se sacó como pasatiempo no sé qué mierda que estudiáis mientras cursaba la carrera… A ver qué humilla más a quien.

Silencio incómodo producido tras la pregunta: ¿Por qué curso vas?:

Di algo, capullo, Tú has preguntado. ¿Tú objetivo era reírte de nosotros y jactarte de que estás sacando no sé qué mierda a año por curso?. Porque no falla, el silencio incómodo siempre se rompe con ‘¿Pero cuántos años llevas en la carrera?’. LOS QUE SEAN IMBÉCIL. Y PUNTO. Y que sepas que cada año es como un horrible infierno en el que te clavan cristales en el corazón y te arrancan las uñas con unas tenazas… ¡Y AGUANTO AHÍ CON DOS COJONES!. Así que no te atrevas a juzgarme.

Lo que estudio también es muy difícil. Sólo tienes que estudiar más:

Oh, sí, tu examen de Meterse Un Dedo En El Culo y Olerlo supera con creces el temario de asignaturas como: ‘Métodos Numéricos para la Fluidodinámica de Alta Densidad de Energía’ (Ingeniería Química), ‘Citología’ (Biología), ‘Estructura de Datos’ (Ingeniería Técnica Informática), Inventariación, Dasometría y Catastro (I.Forestal) o ‘Tipos Abstractos de Datos’ (Ingeniería Informática). Es que es muy duro que te hagan exámenes parciales que te quitan temario y te hagan media con el final… Buf… Qué complicado lo tuyo, ¿eh? Apenas deja tiempo para rascarse las pelotas y meterle mano a la de al lado. Será eso, que no estudio; los exámenes de cinco horas, los temarios imposibles de los que ni los profesores tienen puta idea o las preguntas trampa para pillarte si no eres el hijo de Fulanita son meras distracciones de la verdadera realidad: ESTUDIANDO SE APRUEBA, ¡Y UNA MIERDA!.

martes, 21 de septiembre de 2010

PDFs dinámicos con php

Buenas a todos, este es mi primera entrada en soy_informático y espero que les guste o al menos le sirva a alguien. Lo primero agradecer a geek que me deje participar en su blog, espero que no se arrepienta...

Para generar PDFs dinámicos en PHP hay 2 formas (si alguien conoce más formas serán bienvenidas):
1ª Usando la extensión PHP PDF Lib que es de pago y requiere instalación (y si no eres el administrador de tu servidor hosting ya puedes esperar).
2º Utilizando la librería class.ezpdf.php y alguna de sus extensiones como class.backgroundpdf.php, que son gratuitas y no requieren instalación (solo hay que descargarse las librerías y subirlas al servidor).

La segunda opción tarda un poco mas de procesar los pdfs, pero es muchísimo más sencilla de utilizar y ponerla a punto. Para muestra un botón.

PDF dinámico con imagen de logo corporativo en el centro:

1
<?php
2
include('class.ezpdf.php');
3 include(
'class.backgroundpdf.php');
4
5
$pdf = new backgroundPDF('a4', 'portrait', 'image', array('img'=>'logo.jpg', 'width'=>560, 'height'=>420, 'xpos'=>0, 'ypos'=>200));
6
$pdf->selectFont('./fonts/Helvetica.afm');
7
$pdf->ezText('PDF generado dinámicamente', 50);
8
$pdf->ezText('', 12);
9
$pdf->ezText('Ejemplo de PDF utilizando una imagen como Fondo.', 12);
10
$pdf->ezNewPage();
11
$pdf->ezText('Pagina 2', 50);
12
$pdf->ezStream();
13
?>



Edito: buscando me he dado cuenta que hay bastantes librerías más para generar pdf con php aquí os dejo una lista.
FPDF
TCPDF
FPDI
domPDF

martes, 14 de septiembre de 2010

jueves, 9 de septiembre de 2010

La pereza del consumidor

Siempre me he preguntado que por que la mayoría de las empresas ofrecen mejores ofertas a los no clientes que a los clientes. ¿Qué política de marketing es esa? No lo entiendo. Voy a poner el ejemplo con las operadoras de teléfonos móviles, aunque ya hay muchos tipos de empresas que también están realizando este tipo de practica. Compañías de seguros, proveedores de internet...

En mi opinión, no veo muy ético que se ofrezcan mejores promociones a clientes potenciales que a clientes reales. Además de verlo poco rentable, ya que se arriesgan a perder clientes. Por ejemplo, si yo soy usuario de orange, veo un anuncio de un móvil de orange a un precio de 100 euros, me voy a pedirlo y me dice que no puedo obtenerlo ¿¿¿¡¡¡Por que soy cliente!!!??? Si tengo suerte y no tengo ningún contrato de permanencia, puedo irme a vodafone a conseguir un móvil con todas las prestaciones del mundo por cuatro duros (ahora euros) claro, ¡como no soy cliente!

Siempre me he preguntado el por que de esta situación, pero el otro día por la noche, en una de esas largas conversaciones para arreglar el mundo, de los labios de mi amiga Mireia salio la frase "todo se basa en la pereza del consumidor" y es cierto, las empresas a lo que se dedican es ha hacer promociones para captar clientes, por que dan por hecho que los clientes que ya tienen no se van a mover. Habrá un porcentaje de clientes (como yo) que se van cambiando de compañías en función del que ofrezca una mejor promoción, pero la gran mayoría se queda donde esta, por que cambiarnos de compañía nos da pereza e incluso miedo. Además es posible que el beneficio de estas promociones no sea muy elevado, y que si salga rentable si a cambio se consiguen clientes, pero igual esa promoción no sería rentable si se ofreciera a todo el mundo, es decir, tanto a los clientes actuales como a los potenciales.

En resumen, las empresas basan sus promociones en el supuesto de que somos unos vagos. ¿no os parece triste?

viernes, 13 de agosto de 2010

bloquear paginas web

¿Quieres bloquear para algunos ordenadores el acceso a ciertas páginas web? Sin cortafuegos (firewall), sin programas, sin problemas. Fácil y eficaz.
Si estas interesado ponte en contacto conmigo a través de jose{[arroba]}soy-informatico.es

martes, 3 de agosto de 2010

Ejercicio FAT

Se dispone de una partición de disco con sistema de ficheros basado en FAT16. Si el tamaño de bloque es de 1KB, ¿cuántos KB de dicha partición podrán direccionarse como máximo? Si la partición resulta tener un tamaño de 2GB, ¿qué tamaño debería como mínimo tener el bloque para poder direccionar la partición por completo?

Solución


Solución:
Como el sistema es FAT16 puede direccionarse un total de 2^16 bloques * 1KB = 64MB

Si la partición es de 2GB, el tamaño de bloque debería ser como mínimo el resultado de dividir el tamaño de la partición entre el número máximo de bloques, es decir, 2GB/2^16 bloques = 32KB por bloque.

Ejercicio obtenido en la asignatura Sistemas Operativos de la Universitat Jaume I

miércoles, 21 de julio de 2010

CurrForm - Formulario actual

Es posible que ojeando código C/AL o C/SIDE os encontréis con una variable llamada CurrForm que representa el objeto de tipo formulario actual.

Para más información sobre la programación conMicrosoft Dynamics:



viernes, 11 de junio de 2010

g++ -O3

Al compilar con la opción -O3 lo que hace el compilador es optimizar nuestro código al máximo. También esta la opción -O2 que lo que hace es optimizar nuestro código sin aumentar el tamaño del ejecutable. Con la opción -O1 se intenta reducir tanto el tamaño del código, como el tiempo de ejecución.

sábado, 29 de mayo de 2010

mancuerna espalda


Hoy os dejo un enlace a un articulo muy bueno de nutrición.org para fortalecer nuestras espaldas con tan solo un par de mancuernas.


domingo, 16 de mayo de 2010

nav concatenar cadenas

Para concatenar dos cadenas en Microsoft Dynamics, en primer lugar tenemos que declarar una variable de tipo Text por ejemplo var. También tenemos que tener otro registro, por ejemplo cust que hace referencia a un registro de la tabla Customer. Para concatenar el código postal con la provincia solo tendríamos que ejecutar la siguiente sentencia:
var := cust."Post Code" + ' ' + cust.County;

domingo, 25 de abril de 2010

crisis de valores

¿QUE ES LA CRISIS? ¿EXISTE LA CRISIS?
Estas son algunas de las preguntas que me hago. Sin ir mas lejos, esta ya pasada pascua, me he ido a Morella (Castellón) y me he encontrado ese precioso pueblo repleto de gente haciendo turismo y sobre todo comprando y comiendo en bares o restaurantes. Por no decir QUE NO HABA NI UNA HABITACIÓN PARA HOSPEDARSE. Con estas lineas no quiero negar los 4 millones de personas que hay en el paro. Lo que quiero decir es que en mi opinión, la situación no es tan catastrófica como los medios de comunicación nos quieren hacer ver.
Con esta entrada quiero lanzar varias preguntas ¿Como veis la situación actual? ¿Que opinión tenéis sobre la opinión mediatica de los medios de comunicación? ¿Qué podemos hacer para mejorar la situación actual?

domingo, 4 de abril de 2010

How to make an ethernet cable (twisted pair)

With the arrival of a new floor, we have seen with the disadvantage that wiring had to be done in order to have all Internet. So now we have work the cables I decided to make the report a bit on how to make ethernet cables correctly, because in many websites and blogs explain it, but so too technical, so I decided to do a tutorial in a way more direct.

The first step is to gather the necessary materials displayed on the next photo.
Obviously the first thing we need is the cable (a bit simple, but I had to say), a crimper, it's that kind of key you see in the picture, worth between 10 and 20 euros, but from my point of view is a good investment and RJ -45 pin 8-pin.
The next thing to figure out is how we should run the wires before inserting into the pins, and this we can see in the picture below.
As you can see the sequence is (WHITE-ORANGE), (ORANGE), (WHITE-GREEN) (BLUE), (WHITE-BLUE) (GREEN), (WHITE-BROWN) and (BROWN). It should be noted that if we want a cord to connect to the internet, we must put the same lineup for two extremes, but if on the other hand we need a cable to communicate computer to computer, so we have to do is put at one end indicated and training At the other end the same formation but in reverse. Once you have the proper training thin wire we have to do is to put in the plug and with the help of the crimping press the plug to fit the thin wire.
If anyone has a problem do not hesitate to put it in the comments and try to solve.

sábado, 27 de marzo de 2010

recorrer directorios unix en c

Hoy en soy-informático y para que tengáis un ejemplo de como recoorer directorios unix mediante el leguaje de programación C, os dejamos en la sección de descargas un programa que realiza copias de seguridad de una carpeta a otra en función de la extensión. Una vez compilado el programa hay que llamarlo del siguiente modo:
./programa directorio_origen directorio_destino extensión
Ejemplo:
./programa /tmp /home .pdf
Descargar*

*La descarga requiere el pago previo de un 1€ a través de PayPal

lunes, 15 de marzo de 2010

linux en windows = ubuntu portable

¿Queréis utilizar algún programa de linux pero os da pereza todo el proceso de instalación? ¿Te gustaría inciarte en el mundo del software libre sin arriesgarte a perder tus datos? La respuesta es: UBUNTU PORTABLE. Con este maravilloso programa podrás trabajar como si estuvieras en linux, pero en windows.
PROS:
  • Los ficheros que creas permanecen las próximas veces que entres
  • Puesdes instalar cualquier programa
CONTRAS:
  • Ocupa mucho espacio en el disco duro

lunes, 1 de marzo de 2010

Libros Android Gratis

libro programacion android gratis¿Quieres libros de programación para androiod sin ningún coste? Solo tienes que entrar en el siguiente enlace y descargarte los que más te interesen. Gracias a la web Wow! eBook podremos encontrar numerosos libros para aprender a programar, y no solo para android, también podemos encontar libros para .net, c++, java, xml...

Enlace | Wow! eBook

sábado, 20 de febrero de 2010

programacion android: como saber mediante que tipo de red estamos conectados

Os dejo aquí el código fuente de un programa para android, con el cual podemos saber a que tipo de red esta conectado nuestro teléfono. EDGE, GPRS, UMTS, WIFI.
package com.tutoriales.ejemplo;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.TextView;
//import android.os.Parcelable;
public class ejemplo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hola");
setContentView(tv);
ConnectivityManager mgr = (ConnectivityManager) getBaseContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = mgr.getActiveNetworkInfo();
if (netInfo != null) {
if (netInfo.getState() == NetworkInfo.State.CONNECTED
&& netInfo.isAvailable()) {

if (netInfo.getSubtypeName().equalsIgnoreCase("EDGE")) {
tv.setText("EDGE");
}
if (netInfo.getSubtypeName().equalsIgnoreCase("GPRS")) {
tv.setText("GPRS");
}
if (netInfo.getSubtypeName().equalsIgnoreCase("UMTS")) {
tv.setText("UMTS");
}
if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) {
tv.setText("WIFI");
}
}
}
}
}

Fuente | anddev.org

jueves, 11 de febrero de 2010

Mañana...Hoy

Increíble este vídeo que muestra como serán los ordenadores del futuro. No se cuando saldrá, ni lo que vale, y si de verdad se va a llevar a cabo este diseño de portatil, pero... ¡YO QUIERO UNO!



Gracias por el enlace Guillermo

sábado, 6 de febrero de 2010

ejecutar un formulario desde navison

Para ejecutar un formularios desde por ejemplo el evento de hacer clic en un botón, deberemos de utilizar la intrucción:

FORM.RUN(Number* [, Record] [, Field])

* Donde Number es el número de formulario

jueves, 21 de enero de 2010

LIP DUB Universitat Jaume I de Castellón

Hoy voy a hacerles un guiño a los compañeros de Comunicación Audivisual de la Universitat Jaume I. Espero que todo el mundo disfrute de este LIP DUB que se han currado.


¿Qué es lip dub? (cito de la wikipedia)
Lipdub (también lip dub): "doblaje de labios". Se trata de un vídeo musical realizado por un grupo de personas que sincroniza sus labios, gestos y movimientos con una canción popular o cualquier otra fuente musical. Se suele realizar en una sola toma (plano secuencia), en la que los participantes hacen playback mientras suena la música en un reproductor móvil. No importa la calidad del sonido de la toma porque es en la edición posterior cuando se incorpora la canción como banda sonora.