Dejandomarcas.com y cakePHP

Estoy programando de nuevo mi site principal usando el framework cakePHP.

Pronto estará en producción corriendo con este framework cuyo trabajo me ha agilizado bastante. Espero que os gusten los cambios ya que hacía bastante tiempo que no actualizaba mi web (en cuanto a diseño y programación). Decir también que me mudo de Arsys, ya que, después de muchos años con muchísimos errores, he decidido mudarme de servidor a uno más barato y con más opciones de configuración, ya que desde el servidor compartido que tengo contratado con ellos me es imposible editar el .htaccess, imprescindible para que cakePHP trabaje con URLs amigables

Os dejo un pequeño pantallazo para que veais cómo está quedando:

Nuevo diseño y programación

Anuncios

Acampada Sol

Fuente Señoras que

Rotar capas con css

Este es un ejercicio sencillo para lograr la rotación de una capa. Podéis ver un ejemplo pulsando aquí

<style>

	* {
		margin: 0;
		padding: 0;
		text-align: center;
	}

	#header {
		width: 100%;
		height: 300px;
		background-color: #000000;
		z-index: 10;
	}
	
	#main {
		width: 900px;
		height: 500px;
		margin: -178 auto;
		z-index: 100;
	}
	
	#main .block-left {
		float: left;
		margin-top: 40px;
		margin-right: 30px;
	}
	
	#main .block-right {
		float: right;
		width: 395px;
		font-size: 14px;
		margin-top: 190px;
	}
	
	#main .block-right p {
		text-align: right;
	}
	
	#main .block-left .mapa {
		-moz-transform: rotate(-10deg);
		background-color: #FFFFFF;
		border: 4px solid #FFFFFF;
		box-shadow: 0 0 5px 3px #999999;
		height: 275px;
		margin-top: 45px;
		width: 464px;
	}

</style>

Una vez declarados los estilos, tan solo nos queda diseñar el html para ver los resultados

<div id="header"></div>
<div id="main">
	<div class="block-left">
		<div class="mapa">
                      <iframe width="464" height="275" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=es&amp;geocode=&amp;q=espa%C3%B1a,+sevilla,+plaza+de+espa%C3%B1a&amp;aq=&amp;sll=37.0625,-95.677068&amp;sspn=53.477264,114.169922&amp;ie=UTF8&amp;hq=espa%C3%B1a,+sevilla,+plaza+de+espa%C3%B1a&amp;t=h&amp;ll=37.377334,-5.986267&amp;spn=0.006295,0.006295&amp;output=embed"></iframe>
		</div>
	</div>
	<div class="block-right">
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue laoreet augue et consequat. Pellentesque hendrerit nulla eu turpis tincidunt fringilla. Phasellus a tempus massa. Donec sed congue dolor. Aenean eget ligula est, a luctus tellus. Nunc pharetra dui ultricies sapien suscipit at cursus arcu interdum.</p>
	</div>
</div>

El único inconveniente es que solo funciona para firefox, pero para seguir con la tónica de ejercicios nos sirve.

Monumento en memoria a Aníbal González en Sevilla

Invitación muy especial

Monumento en memoria a Aníbal González

Finalmente después de mucho esfuerzo y sudor, el gran día ha llegado. El Monumento a la memoria del arquitecto Aníbal González que luce desde la semana pasada en su querida Plaza de España será inaugurado oficialmente mañana Jueves 26 de Mayo.

A los autores nos gustaría que nos acompañárais en un día tan señalado. Será por supuesto en la Plaza de España a las 20:30 horas. Un saludo

Manu Nieto, Guillermo Plaza, Manuel Osuna

Pirámide de asteriscos con PHP – Modo avanzado

Tras explicar una forma básica de dibujar una pirámide de asteriscos con PHP, voy a tratar de explicar una forma un poquito más avanzada de hacerlo.

Lo bonito de la programación es que no hay una sola forma de hacer las cosas. Todo se puede analizar de muchas maneras y los resultados pueden ser los mismos. No obstante, dependiendo de nuestro análisis y de nuestra programación, podemos optimizar los resultados y conseguir que sean mucho más viables dependiendo de nuestro objetivo final.

El método que voy a tratar de explicar es una forma más avanzada de entender el problema. Para ello, voy a dibujar la pirámide dentro de un plano cartesiano.

<?php

/* 

 * Para trazar la piramide usare un plano cartesiano hecho con matrices

 * Este es un ejemplo de como quedara el plano sin valores

 *

 * $plane = array (0 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   1 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   2 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   3 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   4 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   5 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0),

 *           	   6 => array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0)

 *                );

 *

 * Los parametros que voy a usar son los siguientes

 *

 * @param $rows int indica el numero de filas que va a tener la piramide

 * @param $char string indica el simbolo que vamos a usar para pintar la piramide
 * @Param $view int (opcional) indica si quiero pintar la piramide o el plano cartesiano
 *
 * return $piramide string si $view es true
 * return $plane array si $view es false
 *

**/

function crear_piramide ($rows, $char, $view = true) {



	// Creo el plano cartesiano, la piramide, las columnas y los acumuladores

	$plane = array();
	$range = null;
	$piramide = null;
	$cols = 0;
	$cont_pos = 0;
	$cont_neg = 0;



	/* Calculo el numero de columnas a partir de las filas. Hay que tener en cuenta 
	 * si el numero es par o impar para que la piramide quede bien dibujada en el 
	 * centro del plano cartesiano
	**/
	if (($rows % 2) != 0) {

		// El numero de filas es impar, calculo las columnas

		$cols = ($rows * 3) - 4;
	
	} else {

		// El numero de filas es par, calculo las columnas
		$cols = ($rows * 2) - 1;
	}
	
	// Creo los acumuladores para calcular los rangos que tengo que marcar
	$cont_pos = (($cols + 1) / 2) - 1;
	
	// Al ser el primer valor o pico de la piramide, el contador negativo es igual que el positivo

	$cont_neg = $cont_pos;
	

	// Recorro todas las filas

	for ($i = 0; $i < $rows; $i++) {
	
		// Creo el rango que quiero marcar dentro de cada fila
		$range = range($cont_neg, $cont_pos);

	

		// Recorro todas las columnas

		for ($j = 0; $j < $cols; $j++) {
		
			// Si la columna obtenida esta dentro de mi rango
			if (in_array($j, $range)) {
			
       
                                // Guardo valor 1 y pinto el asterisco
				$c[$j] = '1';
				$piramide .= $char;
				
			} else {
				
				// Si no esta, guardo valor 0
				$c[$j] = '0';
			}

		}
		

		// Guardo la fila generada dentro del plano cartesiano

		array_push($plane, $c);
		
		// Añado un salto de carro para seguir con la siguiente linea
		$piramide .= "<br />";
		
		// Actualizo los contadores para volver a calcular los rangos

		$cont_pos++;

		$cont_neg--;

	}
	
	// Devuelvo la opcion elegida en el parametro $view
	if ($view)
		return $piramide;
	else
		print_r($plane);

}

// Forma de uso

$piramides = crear_piramide (5, '*');

echo $piramides;

?>

Si ejecutáis esta función, el resultado por defecto será este:

          *
         ***
        *****
       *******
      *********

También podéis cambiar el asterisco por cualquier otro símbolo:

<?php

$piramides = crear_piramide (5, '[]');
echo $piramides;

// Resultado
         []
       [][][]
     [][][][][]
   [][][][][][][]
 [][][][][][][][][]

?>

Si quereis ver cómo ha quedado nuestro plano cartesiano, solo tenéis que modificar el tercer parámetro pasándolo como false:

<?php

$piramides = crear_piramide (5, '*', false);

echo $piramides;

// Resultado
Array ([0] => Array([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 1 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0)
          [1] => Array([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 1 [5] => 1 [6] => 1 [7] => 0 [8] => 0 [9] => 0 [10] => 0)
          [2] => Array([0] => 0 [1] => 0 [2] => 0 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 0 [9] => 0 [10] => 0)
          [3] => Array([0] => 0 [1] => 0 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9] => 0 [10] => 0)
          [4] => Array([0] => 0 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9] => 1 [10] => 0)
)

?>

Como siempre, esta no es ni mucho menos la forma más eficiente ni definitiva de resolver el problema. También hay que tener en cuenta que este tipo de ejercicios nos ayudan a comprender cómo funciona un lenguaje de programación y cómo debemos abordar un problema real.

Os animo a que comenteis vuestra solución.

// Don’t forget to comment your code

Cada vez que escribes un bloque de código sin comentar, dios mata a un gatito… Por favor, hagamos algo para evitar esta masacre…

<?php

$cat = new cat();

// Comentarios? para que??
if (!isset($comments)) {
     $cat->getLightningBolt();
     $god->say("Cuando aprendereis...");
}

?>

Colores y más colores

A la hora de diseñar un boceto web, lo más importante es dar con esa gama de colores que identifica al cliente. Muchos tenemos suerte porque el cliente tiene un buen manual de imagen corporativa y eso nos ahorra mucho trabajo y nos facilita la tarea, pero es cierto que la mayoría de los clientes no saben lo que quieren y esperan que tú como diseñador les digas exactamente qué necesitan.

Os presento 0to255.com

0to255.com


En esta web se nos presenta una magnífica utilidad gráfica para poder ver todo el desarrollo de un color que especifiquemos. Recuerdo cuando trabajaba en Cajasol que mi amigo Jose tenía siempre encima de su mesa una pantonera gigante como arma de trabajo, y eso me gustaba, porque tenía un amplio abanico de colores y siempre sabía cuál utilizar exactamente.

Para mí esto es prácticamente igual. Fácil de usar, cómodo, y muy dinámico, ya que haciendo click sobre el color que nos guste, se copia el código hexadecimal para poder pegarlo directamente en la hoja de estilos.

Para mí, una herramienta imprescindible a la hora de diseñar. Espero que os sirva de la misma ayuda como me está sirviendo a mí.

Fuente 0to255.com

Creando un ámbito de trabajo

Desde hace unos años estoy programando en PHP tanto para empresas como para mí particularmente. Gracias a dios, desde entonces nunca me ha faltado trabajo y he estado en empresas grandes al pie del cañón (Cajasol, Sadiel…).

En mi experiencia he pasado a programar desde el notepad hasta en linux, pasando por frontpage, dreamweaver, notepad++, incluso microsoft word. Ahora puedo presumir de tener una buena base para poder decidir qué necesito para desarrollar bien mi trabajo, para organizar mi tiempo e intentar ser lo más productivo posible.

Esta es mi opción para poder desarrollar sin contratiempos y con la máxima eficacia:

  1. A nivel de hardware, procesador de cuatro núcleos intel core duo 2 a 2.2ghz.
  2. Memoria DD3 a 1.333mhz. Un total de 8ghz.
  3. Un buen monitor de 21 pulgadas (con uno sobra, aunque a mucha gente les guste tener dos, yo lo probé en su día y me sobró uno al tener expose o multiescritorios).
  4. A nivel de software, sistema operativo Linux, por mi parte, Ubuntu 11.04.
  5. Paquete Apache 2, MySQL, phpMyAdmin y PHP5.
  6. Para la gestión de bases de datos MySQL, phpMyAdmin y MySQL Workbench (fundamental para los modelos de datos).
  7. Para picar código, Gedit, el editor de código de Ubuntu.
  8. Web browser, sin duda alguna, Firefox.
  9. Para la comunicacion entre el entorno de desarrollo y el de producción, conexión SSH directo al servidor o en su defecto, FileZilla (cliente FTP).
  10. Para testear las aplicaciones en windows con Iexplorer en todas sus dichosas versiones, una máquina virtual. Yo uso Virtual Box.
  11. Para el control de versiones y archivos, Subversion.
  12. Para backups, una opción es Dropbox (por lo menos a mí me parece bastante buena, desde mi total ignorancia).
  13. Para gestionar las tareas pendientes, incidencias y desarrollos de un proyecto, una aplicación de código abierto hecha en PHP y gratis: Mantis Bug Tracker.
  14. Y por último pero menos importante, el framework que utilizo es CakePHP.

En cuanto a la configuración local, al tener Linux es mucho más cómodo. Puedes editar los hosts y los espacios virtuales de una forma muy rápida y sencilla. Sinceramente, si alguien quiere abrirse camino en este complicado mundo, yo creo que esta es la base para poder trabajar en un entorno profesional y productivo.

¿Y vosotros?, ¿cómo lo tenéis montado?, me encantaría saber cuál es vuestra opinión y de qué forma trabajáis para la web.

Instalar Ubuntu
Instalar el paquete Apache, MySQL y PHP para Ubuntu
Instalar Firefox 4 para Ubuntu
Instalar MySQL Workbench
Conexión SSH a servidor
Instalar FileZilla Ubuntu
Instalar Virtual Box
Instalar Subversion Ubuntu
Instalar Dropbox
Instalar Mantis Bug Tracker
Instalar CakePHP

Lipsum o quijotipsum?

Para todas aquellas personas que usamos el famosísimo lipsum a la hora de generar texto aleatorío y “rellenar” nuestros diseños, os presento otra magnífica herramienta llamada Quijotipsum. El servicio es básicamente igual que lipsum, pero esta vez, en lugar de generar texto en latín, nos muestra textos sacados directamente de la obra El Quijote.

Muchos no sabréis de qué estoy hablando, pero para los que lo sepan tanto como yo, seguro que les hace gracia la idea.

Enlace Quijotipsum

Elecciones 2011

Esta es la gráfica que jamás nos enseñarán los medios

A %d blogueros les gusta esto: