Evitar listado de archivos en un directorio del servidor Apache

Filed Under (PHP) by admin on 12-04-2012

Tagged Under : ,

Si nuestro sitio está alojado en un servidor Apache la forma más práctica y fácil es agregar la siguiente línea en un .htaccess localizado en el directorio raíz:

Options -Indexes

Redirigir un formulario con Contact Form 7 de WordPress

Filed Under (JavaScript, PHP) by admin on 02-04-2012

Tagged Under :

En ocasiones se nos plantea que en vez de dar el visto bueno con un mensaje, tengamos que redirigir un formulario con Contact Form 7 de WordPress a otra página de gracias.

Muy fácil, en ‘Additional Settings’  incluir:

on_sent_ok: "location = 'http://www.example.com/thank-you/';"

Recoger parámetros de un programa por consola

Filed Under (.Net) by admin on 22-12-2011

Tagged Under : , ,


Para obtener los parámetros que se le pasan por consola a un programa se puede utilizar este código, por ejemplo en la consola pondríamos:

 

>Programa.exe argumento1

var x = Environment.GetCommandLineArgs();
if (x.Length > 0)
{
 // x[0] es el nombre del programa -> resultado : Programa.exe
 Console.WriteLine(x[1]); // -> resultado: argumento1
}

Redireccionar con .htaccess de sin www a con www en un sitio

Filed Under (PHP) by admin on 22-11-2011

Tagged Under : , , , ,

Para redireccionar la URL de un sitio desde sin www a www se debera insertar las siguientes líneas en nuestro archivo .htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.midominio.com$ [NC]
RewriteRule ^(.*)$ http://www.midominio.com/$1 [L,R=301]

De esta forma cuando ingresemos a midominio.com automáticamente se redireccionará a www.midominio.com

Formatear miles en php

Filed Under (PHP) by admin on 18-11-2011

Tagged Under : , , ,

Muy fácil, con la función number_format: http://php.net/manual/es/function.number-format.php

echo number_format(123456789, 0, '', '.');  
// Imprime 123.456.789

Cambiar puerto apache server

Filed Under (PHP) by admin on 15-11-2011

Tagged Under : ,

Algunas veces cuando trabajamos con aplicaciones Web , pueden ser ASP ó PHP y como ya sabemos cada una de ellas trabaja con un servidor el cual usa un puerto específico en la máquina donde esté instalado.

Resulta que por lo general estos servidores usan el puerto 80, pero si ya tenemos instalado uno de estos servidores, de seguro ya estará usando ese puerto y el nuevo servidor que queramos instalar no podrá iniciar su servicio.

Pues bien, a mi me pasó con Apache, la máquina donde tengo que instalar la aplicación ya tiene instalado el IIS (Internet Information Server) para otra aplicación que esta desarrolada en asp.net. Pues bien, esta aplicación debe estar en línea siempre y no puedo detener el IIS para instalar mi Apache, la solución es instalar ambos servidores en la misma máquina.

Instalamos Apache, y en el archivo httpd.conf cambiamos las siguientes líneas:

Listen 80

cambiamos esta línea de tal forma que quede así:

Listen 81

bien puede ser 81 u otro puerto que no esté uso.

La otra línea a modificar es:

ServerName localhost:80

de tal forma que quede

ServerName localhost:81

y de igual manera, puede ser 81 u otro puerto que no esté en uso.

Para visualizar el servidor, o los sitios web montados que corran con php, deben acceder en el navegador de esta forma:

http://localhost:81/sitioweb/

Curso Online (GRATIS) de Desarrollo de Aplicaciones en Silverlight para Windows Phone

Filed Under (.Net) by admin on 11-10-2011

Tagged Under : , , ,

Os dejo el enlace:

http://msdn.microsoft.com/es-es/windowsphone/hh307892

 

 

 

 

 

 

 

Linq to XML: carga de archivos XML enormes (más de 1Gb)

Filed Under (.Net, LINQ, SQLServer) by admin on 10-10-2011

Tagged Under : , , ,

Estos días he estado bastante liado ya que el proceso que teníamos de carga de XML realizaba una precarga en memoria del archivo (método Load()), la solución que hay es bastante sencilla con un XMLReader, os pongo un fragmento que seguro se entiende:

 

using (XmlReader reader = XmlReader.Create(directoryTemp + fichero))
{
 reader.MoveToContent();

 int count = 0; // una variable contador XElement nombretabla = null; // un XElement auxiliar

 while (!reader.EOF)
 {
 switch (reader.NodeType)
 {
 case XmlNodeType.Element: // se puede filtrar por tipo de XmlNodeType...
 if (count == 0)
 {
 // CUALQUIER CONDICION
 count++;
 reader.Read();

 } else if (count == 1)
 {
 nombretabla = new XElement((XName)reader.Name); // esto para crear un XELEMENT con el nombre del Reader actual
 count++;
 reader.Read();
 } else
 {
 if (string.IsNullOrEmpty(nodoReg)) nodoReg = reader.Name; // condicion para omitir anidados..

 if (nodoReg == reader.Name)
 {
 count++;
 nombretabla.Add(XElement.ReadFrom(reader) as XElement);

 // INSERCION .. cada X lanzo una inserción en BD
 if (count % numInserciones == 0)
 {
 nombrecondicionado.Add(nombretabla);
 docaux.Add(nombrecondicionado);

 // VALIDACION ...
 validado = ValidarEsquema(docaux, esquema);

 if (validado)
 {
 nreg += cond.Insertar(docaux, delete);
 delete = false;

 // vacio contenidos
 nombretabla.Elements().Remove();
 nombrecondicionado.Elements().Remove();
 docaux.Elements().Remove();
 }
 else
 {
 OnReportInformation(string.Format("ERROR fichero{0} no valido.", fichero), ReportLevel.Error);
 EstadoCarga = 2;
 }
 }

 }

 }
 break;

 default :
 reader.Read();
 break;

 }

 }
 // INSERCION DE LOS ULTIMOS QUE NO ENTRAN EN EL ÚLTIMO WHILE
 nombrecondicionado.Add(nombretabla);
 docaux.Add(nombrecondicionado);

 // VALIDACION
 validado = ValidarEsquema(docaux, esquema);

 if (validado)
 {
 nreg += cond.Insertar(docaux, delete);

 // vacio contenidos
 nombretabla.Elements().Remove();
 nombrecondicionado.Elements().Remove();
 docaux.Elements().Remove();
 }
 else
 {
 OnReportInformation(string.Format("ERROR fichero{0} no valido.", fichero), ReportLevel.Error);
 EstadoCarga = 2;
 }

}

Linq to XML: Diferencia entre Elements() y Descendants()

Filed Under (.Net, LINQ) by admin on 10-10-2011

Tagged Under : , , , , ,

La diferencia es sencilla, mientra Descendants() cuenta todos los nodos (anidados incluidos), Elements() solo cuenta los del mismo nivel.

 string xml = @"
                <Root>
                    <Item>
                        <id>1</id>
                    </Item>
                    <Item>
                        <id>2</id>
                    </Item>
                    <Item>
                        <id>3</id>
                        <Items>
                            <Item>
                                <id>5</id>
                            </Item>
                            <Item>
                                <id>6</id>
                            </Item>                            
                        </Items>
                    </Item>
                    <Item>
                        <id>4</id>
                    </Item>
                </Root>";

            XDocument doc1 = XDocument.Parse(xml);

            var q1 = from e in doc1.Root.Descendants("Item")
                     select e;

            var q2 = from e in doc1.Root.Elements("Item")
                     select e;

            int c1 = q1.Count(); //6
            int c2 = q2.Count(); //4

Técnica HDR con Photoshop – VideoTutorial

Filed Under (Fotografía, Photoshop) by admin on 05-09-2011

Tagged Under : , , , ,

Imagen de previsualización de YouTube

Excelente tutorial donde explica paso a paso como conseguir el efecto HDR con photoshop