Usando Gedit para PHP/(X)HTML/CSS

Desarrollo web, GNU/Linux, Programación 1 Comment

Gedit

Gedit [gnome.org] es el editor predeterminado del entorno de escritorio GNOME ( que uso diariamente :P ). Algunas de sus características son:

* Soporte de textos internacionalizados, usando la codificación UTF-8.
* Coloreado del texto según la sintaxis de varios lenguajes de programación: C, C++ Java, Python…
* Corrector ortográfico multi-idioma.
* Incorporación de plugins para ampliar las funcionalidades básicas del programa.
* Posibilidad de cambiar el color y fuente del texto del editor.
* Numeración de líneas.
* Búsqueda y reemplazo de texto.
* Edición de archivos remotamente.
* Copia de seguridad de los ficheros sobre los que se trabaja.
* Soporte propio para SCIM, pudiendo escribir en distintos alfabetos como el japonés, chino, etc. activándolo desde el menú y teniendo instalado el SCIM.

…y un largo etcétera de nuevas funcionalidades que se van incorporando en sucesivas versiones.

http://es.wikipedia.org/wiki/Gedit.

Y bueno, navegando en busca de las funcionalidad de PHP sobre gedit, me di cuenta que tiene soporte para varios plugins que extienden dicha funcionalidad. No, esto no es guía, más bien, es la recopilación de algunos artículos que tratan del tema que me parecieron interesantes:

Customizing gedit as a Web Developer’s IDE. Esta entrada es de uno de los creadores de precisamente un plugin de gedit, habla sobre sus preferencias al usar Gedit, su plugin, cómo tener a la mano las diferentes etiquetas de (X)HTML/CSS/PHP y de algunas herramientas externas (que es algo como crear scripts para que se integren con el editor).

Usar gEdit como si fuera Dreamweaver (o como IDE Web). Trata de básicamente lo mismo pero en español :P .

Haciendo gedit más sociable para el programador. Este me ha gustado por la mención de algunos ejemplos sobre una de las características de gedit, que es la de Recortes (insertar texto que usamos seguido de forma rápida).

Ahora la pregunta obligada: Cuál es mi aporte al tema? xD, ps ninguno :D (no, mentira). Si leyeron algunas de las entradas de blog anteriores, seguramente se dieron cuenta sobre un complemento en gedit que se llama “Herramientas Externas” (External Tools) o en el peor de los casos , están fastidiados por ir al navegador y escribir la URL de la página que están creando (gedit nativa-mente no puede mandar a mostrar en el navegador predeterminado de GNOME la página que estén programando). Entonces, hice un pequeño script para poder mandar al navegador la página actual que se esté editando, para crearlo habrá que ir a Editar > Preferencias > Plugins y seleccionar Herramientas Externas, pulsar en Configurar Plugin. Crear uno nuevo con las siguientes características:

El script es:

#!/bin/sh

# By soullost.org xD

USER=`id --name -u`
NUMBER=`ls -d /home/${USER}/public_html/ | wc -m`
CUT=`echo cut -c${NUMBER}-`
DIR=`echo $GEDIT_CURRENT_DOCUMENT_DIR | $CUT`
NAME=`echo $GEDIT_CURRENT_DOCUMENT_NAME`

if [ -n "$DIR" ]
then
	URL=`echo http://localhost/~${USER}/${DIR}/${NAME}`
else
	URL=`echo http://localhost/~${USER}/${NAME}`
fi

gnome-open $URL > /dev/null 2> /dev/null

Limitaciones del script:

- Hay que tener configurado el Apache para poder tener una carpeta (public_html) en nuestro home (/home/[usuario]/public_html/) y almacenar ahí nuestras páginas web. Esto hace que al acceder desde el navegador, la URL tenga que escribirse así: http://localhost/~[usuario]/. Por lo tanto, la página web a visualizar tiene que estar dentro de este directorio (si no es así, no va a funcionar!).

- gnome-open toma el navegador predeterminado que se especifica en: Sistema > Preferencias > Aplicaciones Preferidas. Yo tengo a epiphany para que abra un nuevo enlace en una pestaña nueva :P .

Uso:

- Si está todo bien, cuando quieras visualizar la página web que estés editando basta con pulsar Ctrl + F12.

Nota: Por supuesto, te puedes sentir libre de modificar el script a tus necesidades :D (sólo basta saber un poco de bash).

Espero les sea útil. Nos vemos y a programar con Gedit ;) .

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Básico. Cómo hacer una encuesta en PHP

Desarrollo web, Programación 6 Comments

Ya tiene algo de tiempo desde que empecé a programar en PHP, desde luego, nada serio. Actualmente estoy tomando un curso de PHP en la universidad (no forma parte de alguna materia xD), ya más serio, lleva algo de CSS, MySQL, POO. Así que bueno, ahora estaré escribiendo en una nueva categoría, Desarrollo Web.

Ya que este viernes pasado no asistimos, nos dejaron algunos ejercicios para hacer, de los cuales uno es hacer una pequeña encuesta. Veamos, a simple vista necesitamos:

  • La pregunta.
  • Las opciones.
  • Algunas estadísticas.
  • Manejo de Base da Datos.

Para empezar, hacemos el formulario con la pregunta y las opciones:


¿América ganará su próximo partido? 
Si No Número de votantes: Si: No:

La página se llamará así misma al momento de hacer el voto, entonces, procesará la información a la base de datos para almacenar los valores. Además, si observan, hay que mostrar el número de votantes y el porcentaje de votos para las dos diferentes opciones (si y no).

La base de datos se llamará encuesta1 y es la siguiente (Ojo, por prisa lo hice de la forma menos apropiada xD):

-- phpMyAdmin SQL Dump
-- version 2.8.2.4
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 25-04-2008 a las 18:43:50
-- Versión del servidor: 5.0.24
-- Versión de PHP: 5.1.6
--
-- Base de datos: `ENCUESTA1`
-- 

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

--
-- Estructura de tabla para la tabla `opciones`
-- 

CREATE TABLE `opciones` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nombre` char(30) NOT NULL,
  `valor` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `opciones`
-- 

INSERT INTO `opciones` (`id`, `nombre`, `valor`) VALUES (1, 'Si', 0),
(2, 'No', 0);

Como ven, registramos las dos opciones de la encuesta: Si y No, estableciendo las dos con un valor inicial de cero (ya que nadie ha votado todavía). Una vez teniendo la base de datos tenemos que hacer varias cosas (empezar a armar el funcionamiento de la página web):

1) Conexión con la base de datos:

< ?php
	$link=mysql_connect     ("localhost","admin","*****") or die ("Error en la conexion");
	//se selecciona la base
	mysql_select_db("ENCUESTA1",$link);
?>

2) Registrar el voto del usuario:

< ?php
if($_POST['opc']=='si'){
	$valor[0]++;
	$sql="update opciones set valor=$valor[0] where id='1';";
	mysql_query($sql) or die('Lo sentimos, hay un error en la BD');
	}
elseif($_POST['opc']=='no'){
	$valor[1]++;
	$sql="update opciones set valor=$valor[1] where id='2';";
	mysql_query($sql) or die('Lo sentimos, hay un error en la BD');
	}
?>

$valor[], es un array que contiene las veces que el usuario a votado por dicha opción. $valor[0] para la opción Si, $valor[1] para la opción No. Estos valores junto con el total de votos los sacamos en la siguiente parte:

< ?php
$sql="select * from opciones";
$res=mysql_query($sql);
$total=0;
$indice=0;
while($fila=mysql_fetch_object($res)){
    $total += $fila->valor;
    $valor[$indice]=$fila->valor;
    $indice++;
}
?>

Para obtener el porcentaje de votos de cada opción respecto al total de los mismo, necesitamos, una pequeña operación aritmética (la clásica regla de 3):

< ?php
	$porcentaje[0]=intval(($valor[0]*100)/$total);
	$porcentaje[1]=intval(($valor[1]*100)/$total);
?>

Nota: la función intval() regresa el valor entero de una variable.

3) Lo único que hace falta es agregar las estadísticas (mostrar a los usuarios como va la votación), eso lo he puesto abajo de la encuesta (mirar el código html al principio). Entonces, falta sólo agregar el código PHP que haga lo descrito anteriormente.


 Número de votantes: < ?php echo " ".$total; ?>  


		Si:
		< ?php
			for ( $i = intval($porcentaje[0]/10); $i>0; $i-=2){ ?>
				porcentaje
		< ?php } ?>
		Porcentaje: < ?php echo " " . $porcentaje[0] . " % con " . $valor[0] . " votos"; ?>
	


		No:
		< ?php
			for ( $i = intval($porcentaje[1]/10); $i>0; $i-=2){ ?>
				porcentaje
		< ?php } ?>
		Porcentaje: < ?php echo " " . $porcentaje[1] . " % con " . $valor[1] . " votos"; ?>
	

Si se dan cuenta, debes tener la imagen palomita.gif en el directorio images (me quebré mucho la cabeza buscando-la, que tardé ~1/2 min. en obtenerla de google). Ésta imagen sirve como un pequeño histograma del porcentaje que ocupa la opción en comparación con el total de votos emitidos (que ya calculamos antes).

Una forma de hacer el histograma es de una escala de 20%, osea, quedaría:

1 Palomita: 20%
2 Palomitas: 40%
3 Palomitas: 60%
4 Palomitas: 80%
5 Palomitas: 100%

Por ejemplo, si el porcentaje de la opción Si es 40.5%, divididos sobre 10, es igual a 4 (el resultado lo deja sin decimales por la función intval()). El for toma este 4 y en cada ciclo le resta 2 y coloca una palomita; hasta que este 4 sea menor que cero. En el ejemplo del 40%, realizará 2 ciclos y por lo tanto, dibujará la palomita dos veces :P .

La página final queda de esta manera:

Código:

< ?php
	$link=mysql_connect     ("localhost","admin","******") or die ("Error en la conexion");
	//se selecciona la base
	mysql_select_db("ENCUESTA1",$link);

	//consulta
	$sql="select * from opciones";
	$res=mysql_query($sql);
	$total=0;
	$indice=0;
	while($fila=mysql_fetch_object($res)){
	    $total += $fila->valor;
	    $valor[$indice]=$fila->valor;
	    $indice++;
	}

	$porcentaje[0]=intval(($valor[0]*100)/$total);
	$porcentaje[1]=intval(($valor[1]*100)/$total);

	if($_POST['opc']=='si'){
	$valor[0]++;
	$sql="update opciones set valor=$valor[0] where id='1';";
	mysql_query($sql) or die('Lo sentimos, hay un error en la BD');
	}
	elseif($_POST['opc']=='no'){
	$valor[1]++;
	$sql="update opciones set valor=$valor[1] where id='2';";
	mysql_query($sql) or die('Lo sentimos, hay un error en la BD');
	}

	/*
	elseif(!$_POST['opc']){
	echo "

No se ha seleccionado nada!.

";
	}*/
?>

¿América ganará su próximo partido? 
Si No Número de votantes: < ?php echo " ".$total; ?> Si: < ?php for ( $i = intval($porcentaje[0]/10); $i>0; $i-=2){ ?> porcentaje < ?php } ?> Porcentaje: < ?php echo " " . $porcentaje[0] . " % con " . $valor[0] . " votos"; ?> No: < ?php for ( $i = intval($porcentaje[1]/10); $i>0; $i-=2){ ?> porcentaje < ?php } ?> Porcentaje: < ?php echo " " . $porcentaje[1] . " % con " . $valor[1] . " votos"; ?>
< ?php mysql_close($link); ?>

Obviamente se puede mejor bastante, agregando CSS, Ajax y cualquier cosa que se nos ocurra (hasta llegar a crear un sistema que cree encuestas).

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5 out of 5)
Loading ... Loading ...

Buscando códigos por medio de google

General, Programación 2 Comments

Me vengo enterando que hay un servicio de google para buscar código en diferentes lenguajes de programación. La webpage es: http://google.com/codesearch.

Por ejemplo, para los superhackers: http://google.com/codesearch?q=explot+linux+2.6&hl=es&btnG=Buscar+c%C3%B3digo

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

¿Dónde están los ingenieros de software del mañana?

General, Programación 2 Comments

Leyendo el feed de barrapunto [barrapunto.com] me enteré de un artículo escrito por Robert B.K. Dewar y Edmond Schonberg, dos profesores de la Universidad de Nueva York: “Educación de Ciencias de la Computación: ¿Dónde están los ingenieros de software del mañana?“, donde hacen una crítica sobre las malas tendencias en las universidades al momento de enseñar cursos de programación y me parece buen idea difundir esto a las pocas personas que visitan el blog xD.

En mi caso estoy estudiando Ingeniería en Sistemas (nada del otro mundo) y algunas de las situaciones que señalan, son y están más que por enterados, que en los institutos tecnológicos del país suceden las mismas carencias y hasta más. Me gustó y hasta cierto punto me siento identificado (posiblemente a muchos otros les pase lo mismo) que comentan que nosotros como estudiantes necesitamos no precisamente que nos enseñen muchos lenguajes de programación, sino más que nada a Aprender a Programar, además de que están en nuestras manos entender y aprender todas esas lagunas mentales que los profesores nos dejan en clases.

Aquí un pequeño resumen del artículo en español más las reflexiones del autor del mismo.

En ella, apuntan a Java como “dañino” en el aprendizaje de la programación, así como critican a las universidades por no enseñar lenguajes sólidos como C, C++, Lisp y Ada. En lo personal estoy totalmente de acuerdo con éste artículo. Si bien tengo que admitir que mis estudios formales (por formales quiero decir “en clase”) en programación, en su mayoría, arrastran los defectos que señala este artículo. Sin embargo, siendo conciente de ello, intento profundizar éstos temas fuera de clase, y compensar esas carencias por mi cuenta.

El artículo se hizo eco en varios sitios, y parece un verdadero referente del estado actual de la educación formal en Ciencias de la computación. Como estudiante, recomiendo a todos aquellos que estén estudiando programación (o similar) leerlo.

En su mayoría, éste post es una traducción libre resumida de dicho artículo, así como opiniones y reflexiones personales agregadas.

Foto por Dominik Rusiecki - http://www.dominik-leszno.prv.pl/Según Dewar y Schoenberg, las tendencias más preocupantes que notan en los últimos años de educación, en resumen, son:
1 - Se están reduciendo los requerimientos de matemáticas en Ciencias de la Computación.
2 - El desarrollo de habilidades de programación en varios lenguajes está dando lugar a acercamientos tipo receta usando grandes bibliotecas y paquetes de prop´sito especial.
3 - El set de habilidades resultantes es insuficiente para la industria del software de hoy.

Creo que esto se coincide con otros posts en los que he hablado sobre “programadores express”. Hoy en día, para preparar a los “programadores” a salir al mercado laboral lo antes posible, se enseña lo básico para poder trabajar y listo. Éste artículo en general ataca a Java, ya que es el lenguaje usado en varias universidades para la introducción al curso, pero se aplicaría a cualquier lenguaje de alto nivel, sobre todo .NET.

En los comentarios de la noticia en Slashdot, un usuario comenta:
“desafortunadamente no llega lo suficientemente lejos al núcleo del problema, el cual es que las universidades de hoy están produciendo en masa lo que los empleadores quieren, en vez de los pensadores del mañana. Los empleadores no quieren más que zánganos reemplazables que vengan con una habilidad fácilmente definible la cual puedan reemplazar cuando aparezca una nueva palabra de moda. Esto NO ES a lo que las universidades deberían apuntar.”

Joel Spolsky (de joelonsoftware.com), aporta la idea de crear un bachillerato en artes para la programación, de ésta forma atraer estudiantes a Ciencias de la computación. Comenta cómo algunas universidades ya hacen algo similar, y plantea mientras tanto cuántos departamentos de ciencia han ganado una reputación gracias a lo que han escrito: X Window de MIT, Athena y la Lisp Machine, entre otros. “¿Dónde están esos hoy? ¿Qué nos han dado las universidades recientemente? ¿Cuál es el mejor colegio para un graduado de secundaria que ama programar pero no está emocionado con cálculo lambda?”

Respecto a Java, el artículo dice: “Debido a la popularidad en aplicaciones web y la facilidad con la que novatos pueden producir programas gráficos, Java se ha convertido en el lenguaje más usado en los cursos introductorios a la programación.”
Consideran esto “un intento desviado de hacer la programación más divertida, tal vez en reacción a la reducción de anotados a Ciencias de la computación desde la caída de las .com.”

Las observaciones fueron que “a los estudiantes les resultaba difícil escribir programas sin interfase gráfica, no sentían la relación entre el programa fuente lo que el hardware haría, y (más dañino) no entendían las semánticas de punteros en absoluto, lo que hace muy desafiante el uso de C en programación de sistemas”.

Proponen éste principio: “La irresistible belleza de programar consiste en la reducción de procesos complejos formales a un pequeño set de operaciones primitivas. Java, en vez de exponer ésta belleza, anima a los programadores a enfocar la solución de problemas como un plomero en una ferretería: buscar en una multitud de cajones (paquetes) encontraremos algún dispositivo (clase) que hace más o menos lo que queremos. Cómo lo hace no es interesante! El resultado es un estudiante que sabe cómo armar un programa simple, pero no sabe cómo programar.”

Continúan su artículo con “Un verdadero programador puede escribir cualquier lenguaje“, en mi opinión, una verdad absoluta de la programación. “Por ejemplo, un verdadero programador debería poder programar herencia y envío dinámico en C, esconder información en Lisp, bibliotecas de manipulación de árboles en Ada, y recolector de basura en cualquier cosa menos Java.” Continuan con:

Porqué C Importa
“C es el lenguaje de bajo nivel que todos deben conocer”. En muchos lugares he leído “el lenguaje fundamental”, y otras frases aludiendo a C. “Puede ser visto como un lenguaje assembly portable, y como tal, expone la máquina subyacente forzando al estudiante a entender claramente la relación entre el software y el hardware. El análisis de performance es más directo, porque el costo de cada declaración está claro. Finalmente, compiladores (GCC por ejemplo) facilitan examinar el código assembly generado, lo cual es una excelente herramienta para entender el lenguaje y arquitectura de máquina.

Porqué C++ importa
C++ trae a C los conceptos fundamentales de la ingeniería del software moderno: encapsulación con clases y namespaces, esconder información a través de operaciones y datos protegidos y privados, programar por extensión a través de métodos virtuales y clases derivadas, etc. C++ también impulsa la administración de almacenamiento lo más lejos posible sin recolección de basura completo, con constructores y destructores.

Porqué Lisp Importa
Todo programador debe estar cómodo con programación funcional y con la importante noción de transparencia referencial. Un beneficio adicional es que el programa está escrito lo que suma a sintaxis abstracta, a saber la interpretación interna que usan la mayoría de los compiladores entre parsing y generación de código. Finalmente, Lisp es manejable a una definición propia muy compacta. Ver es intérprete de Lisp completo escrito en Lisp es una revelación intelectual que todo científico de la computación debería experimentar.

Porqué Java importa
A pesar de los comentarios negativos sobre Java, creen que tiene un rol importante en la instrucción de Ciencias de la Computación. Mencionan dos aspectos del lenguaje que deben ser parte del set de habilidades del programador:
1 - Entender programación concurrente (para la cual los threads o hilos proveen un modelo básico a bajo nivel).
2 - Reflection, a saber el entendimiento de que un programa puede ser instrumentado para examinar su propio estado y para determinar su propio comportamiento en un ambiente que cambia dinámicamente.

También describen que Ada es un lenguaje importante por otras tantas características, aunque ésto puede ser tomado con pinzas, viniendo del presidente y vicepresidente de AdaCore…

Para resumir, admiten que el lenguaje de programación no lo es todo. Concluyen algo como “un buen currículum incluirá una variedad de lenguajes, entendimiento de procesos de programación, en vez de un resumen de lenguajes populares percibidos”. Se sienten un poco consternados por la popularidad de lenguajes de scripting en cursos introductorios (Javascript, PHP, Atlas) quienes cargan con los defectos que le señalan a Java: “su ausencia de tipado fuerte lleva a un estilo de programación por prueba-y-error y les impide a los estudiantes adquirir la disciplina de separar el diseño de las interfaces de la especificación”.

Finalizan con que enseñar los lenguajes correctos no es suficiente. Los estudiantes deben ser expuestos a las herramientas para construír programas confiables a gran escala. Como científico de computación, deberías tener algún conocimiento de cómo se alcanza el alto nivel de confiabilidad. “Nuestros estudiantes deben estar listos para este nuevo mundo”.

Hay que entender entonces, que el lenguaje de programación con el que se empieza, si bien probablemente influya el resto de la carrera, no debe ser lo más importante. Más que un lenguaje, hay que aprender a programar. El problema radica también en enseñar UNICAMENTE un lenguaje, que de todas formas, depende del estudiante. Si uno se queda solo con lo que aprende en clase… Si aparte de tener cursos/profesores malos, uno no intenta ir más allá de lo que le están inculcando, no va a haber mucho lugar para evolucionar como programador.


[Mirar fuente]

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Hoy domingo….

GNU/Linux, General, Programación 5 Comments

Hoy domingo estoy jugando con vim ;) .

Vim

vim 2

Ustedes deberían hacer lo mismo :P .

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5 out of 5)
Loading ... Loading ...

« Previous Entries Next Entries »