miércoles, diciembre 19, 2007

Cómo diferenciar a un programador PHP profesional

Un avezado desarrollador PHP que dice trabajar para Panasonic y haber entrevistado a 200 aspirantes en los últimos 3 años enumera su criterio para seleccionar al candidato ideal para el puesto de programador "Senior". Según, lo que diferencia a un programador PHP profesional de uno amateur puede resumirse en esta lista:

  • PHP5 vs. PHP4
    Debe enumerar por lo menos 3 características que diferencien a PHP5 de PHP4.
  • Redes
    Debe ser capaz de hacer por lo menos programas básicos que manipulen sockets o por lo menos comprender cómo conectar a 2 computadoras.
  • OOP
    Debe entender profundamente los conceptos de la programación orientada a objetos y ser capaz de responder preguntas simples como la diferencia entre métodos "privados" (private) y "protegidos" (protected).
  • Bases de datos
    Debe saber qué es una base de datos normalizada, y entender claves primarias y foráneas.

Montando un servidor LAMP en Ubuntu 7.10

De la propia boca de un converso desarrollador PHP que hizo el cambio de Windows a Linux nos llega este conciso tutorial de cómo montar un servidor "LAMP" (Linux, Apache, MySQL y PHP) en el reciente Ubuntu 7.10 "Gutsy Gibbon". El artículo repasa todos los pasos para instalar todos los paquetes "oficiales" de Apache2, PHP5 y MySQL5 disponibles en los repositorios por defecto de Ubuntu.

10 "NOs" para los desarrolladores web independientes

Cuando uno trabaja independientemente (freelance) en el mundo del desarrollo de sitios Web, esta lista de situaciones en las que deberíamos responder con un contudente "NO" nos ayudará a ahorrarnos ingratas experiencias laborales:

1. ¿Puedes mostrarme una demostración que me ayude a elegir un diseñador/programador? Respuesta: ¡NO!

2. ¿Puedes hacernos un descuento? Respuesta: ¡NO!

3. ¿Puedes registrar nuestro dominio y hospedar a nuestro sitio? Respuesta: ¡NO!

4. ¿Puedes copiar este otro sitio? Respuesta: ¡NO!

5. ¿Puedo pagar mi sitio de e-commerce con las ventas que realice? Respuesta: ¡NO!

6. ¡Tengo una gran idea! ¿Quieres que... Respuesta: ¡NO!

7. ¿Tienes una cuenta de mensajería instantánea? Respuesta: ¡NO!

8. ¿Puedo pagar el total cuando esté terminado todo? Respuesta: ¡NO!

9. ¿Hay alguna manera de que puedas terminar esto esta noche o el fin de semana? Respuesta: ¡NO!

10. ¿Puedes asegurarme que no usarás este mismo trabajo en otro lugar? Respuesta: ¡NO!

jueves, noviembre 01, 2007

3er encuentro en línea de Educación y Software Libre


Hablando de las tecnologías de información y comunicación el modelo del software libre representa un punto de inflexión que esta modificando el modelo de producción imperantes en el desarrollo de software, pero esta modificación puede que sea lo menos importante.

Las libertades de uso, aprendizaje, modificación y redistribución significan una alternativa en un mundo donde la producción del conocimiento y la propiedad intelectual son un bien privado y tal vez el más preciado . Hoy en la sociedad del conocimiento la filosofía del software libre es adoptada y adaptada a la producción de otros bienes culturales como el arte o la producción de textos y vídeos.

La educación no es la excepción, las propuestas existentes van desde la sustitución del software propietario por libre, hasta ideas más innovadoras como la Wikipedia o los cursos abiertos del Instituto Tecnológico de Massachusetts (MIT's OpenCourseWare). Además la estructura y organización de la comunidad son un ejemplo en si mismo de como en la educación no formal se puede fomentar y mantener el interés y de cómo se puede producir conocimiento colaborativamente.

Este encuentro en línea de software libre y educación busca el intercambio experiencias, propuestas y opiniones entre la comunidad educativa interesada en el software libre con la finalidad de producir colaborativamente un cuerpo de conocimiento que nos permita a todos reflexionar sobre nuestras acciones y propuestas educativas.

Por estas razones hoy convocamos a realizar un esfuerzo por sistematizar nuestras experiencias educativas con el software libre, reflexionar entorno a ellas y crear propuestas novedosas que nos permitan a todos beneficiarnos de la construcción colaborativa del conocimiento. mas detalles

miércoles, agosto 29, 2007

Congreso Nacional de Software Libre


Este año el congreso es organizado por el Grupo de Usuarios Linux de
Santa Cruz (GLISC) y Software Libre Bolivia (SLB). El congreso se realizará
los días 25, 26 y 27 de Octubre, en las instalaciones de la universidad
Aquino de Bolivia (UDABOL) en la ciudad de Santa Cruz. mas info

viernes, julio 13, 2007

Top de los 25 comandos mas útiles para el administrador novato

Encontré en Pimp Your Linux, un interesante artículo sobre el top 25 de los comandos de Gnu/Linux y Un*x en algunos casos, que resultan imprescindibles para el administrador y usuario novato. El artículo es más que interesante, y les trascribo y traduzco :

#1. hostname
Imprime el nombre del local host en donde estás trabajando.

#2. whoami
Imprime el nombre de usuario en la pantalla, y puede resultar extremandamente útil cuando se cambia de usuario con su.

#3. id username
Imprime el UID del usuario y su GID, effective ID y grupos suplementarios.

#4. date
Imprime o cambia la fecha y la hora del sistema operativo. También se podria utilizar un servidor ntp para tener todos los sistemas con el mismo horario cada vez que se encienden.

#5. time
Determina la cantidad de tiempo que le toma a un proceso completarse + otra información. El ejemplo que se dá es:
  • time ls
Para ver el tiempo que toma hacer un listado con ls.

#6. who
Determina los usuarios logueados en el sistema.

#7. rwho -a
Determina todos los usuarios logueados en la red. El servicio debe estar activado para ejecutar el comando o se debe ser usuario root.

#8. finger user_name
Información del sistema sobre un usuario.

#9. last
Muestra un listado de los últimos usuarios logueados en el sistema.

#10. history | more
Muestra los últimos ( 1000 aprox ) comandos ejecutados desde la línea de comandos. El "| more" hace que pare la salida por pantalla cada vez que se completa la salida. Redireccionar un comando hacia "more" resulta sumamente útil para diferentes propósitos, como se explica, para listados largos y para otras actividades corrientes en cualquier Gnu/Linux o Un*x.
#11. ps uptime
Muestra el tiempo que pasó desde el último reboot.

#12. ps
Lista los procesos actualmente ejecutados por un usuario.

#13. ps axu | more
Lista todos los procesos actualmente corriendo, incluso aquellos que no son controlados por la terminal, junto con el nombre del usuario que es dueño del proceso.

Agrego a lo anterior:
  • ps aux | grep nombredelprograma
  • kill -9 PID ( el pid correspondiente al nombredelprograma que se busca terminar )
Para que se reinicie un proceso, útil parar reiniciar un servicio y que éste lea otra vez su archivo de configuración:
  • kill -hup PID
  • killall nombredelprograma
Este último comando termina todas las instancias de un programa indicando su nombre. No siempre funciona, y a veces es necesario recurrir a ps y grep para obtener el pid.

Y por último, si cancelamos la ejecución de una aplicación con control + z , o bien si lo corremos con el & al final:

Por ejemplo "jackd -d alsa &" ( para ejecutar el servidor Jackd con el driver Alsa en segundo plano ), si queremos terminar con el proceso:
  • kill -9 %1
En caso de que sea el proceso en segundo plano número uno, si es el segundo 2, y así.

#14. top
Muestra una lista de los procesos que estan corriendo actualmente, listados en orden según su consumo del cpu. Muy útil.

#15. uname -a
Información sobre el servidor local. Versión del kernel, de Linux si es un sistema Gnu/Linux, o lo mismo para otros Un*x o BSD, además de información sobre el procesador.

#16. free
Información sobre la memoria ( en kb ), libre y consumida, además de datos sobre la swap.

#17. df -h
Muestra el espacio libre en Mb de una partición. El formato es df -h /dev/hda1 si queremos saber la cantidad de espacio en Mb libre en /dev/hda1. Agrego yo:
  • du -h
Para saber, también en Mb, la cantidad de Mb que ocupa un directorio o un archivo.

#18. du / -bh | more
Similar a lo anterior, pero mas específico y detallado. No tan útil como el df -h archivo o directorio.

#19. cat /proc/cpuinfo
Para ver ( cat ) el contenido de la entrada cpuinfo del pseudofilesystem proc, en éste caso con información sobre el cpu.

#20. cat /proc/interrupts
Lista las interrupciones en uso.

#21. cat /proc/version
Lista la versión de Linux.

#22. cat /proc/filesystems
Muestra los filesystem habilitados en el kernel. Muy útil.

#23. cat /etc/printcap
Muestra la configuración de las impresoras.

#24. lsmod
Muestra los módulos cargados en el sistema.

#25. echo $PATH
Muestra el contenido de la variable $PATH.

Algunos otros comandos útiles que agrego:
  • mount -o loop imagen.iso directorio/
Para montar una imagen iso en un directorio sin necesidad de grabarla a CD o DVD. Deben ser root.
  • cp -rv directorio/ /otrodirectorio/
Copia un directorio entero manteniendo los permisos, dueños, links, y cualquier cualquier otra característica del directorio.
  • netstat -putan | grep aplicación
Información sobre el estado de una aplicación servidor o que trabaja con tráfico de red. También deberán ser root.
  • w
Muestra quien está logueado y qué está haciendo
  • comando > archivo
Redirecciona el contenido de un comando hacia archivo, por ejemplo:
  • ls -l | grep usuario > archivosdeusuario
Si se usan dos > , es decir ">>" se agrega el contenido que se redirecciona después de la última línea del archivo de texto, sin sobreescribir.
  • ls -l
Muestra los permisos, dueño y grupo, además de fecha dentro de un directorio, de los archivos y directorios
  • chown -R nombredeusuario:grupo directorio/
Cambia recursivamente el dueño y grupo de un directorio y su contenido. Pueden utilizar el comodín ( * ), ya que a veces según la configuración puede no funcionar como debe hacerlo.
  • sync
Recomandado para hacer antes de desmontar un dispositivo mass storage, como una cámara fotográfica digital, un pendrive, o una pda. O bien si hubo modificaciones y movimiento de información ( cp y mv por ejemplo ) entre particiones, antes de desmontar.

Para cambiar la contraseña de un usuario:
  • passwd usuario
Otro comando muy útil es el de agregar un usuario a un grupo:
  • gpasswd -M usuario grupo
  • gpasswd -A usuario grupodeusuario
En el ejemplo anterior indicamos que usuario será el administrador de grupodeusuario.

Si hay problemas con la lectora de cd o con la de dvd, y quieren saber qué aplicación o comando la está utilizando ( para evitar el dispositivo ocupado ), prueben con :
  • lsof | grep /dev/hda1
Si hda1 es su compactera, por ejemplo. Si pusieron un CD/DVD que está roto y les cuelga la compactera, prueben con :
  • hdparm -w /dev/hda1
Otra vez, si /dev/hda1 es su compactera. Es el mismo comando que usa el kernel para permitir que luego de muchos I/O erróneos, se pueda desmontar el dispositivo. Deben ser root para ejecutar dicho comando.
La lista podria seguir, pero por el momento se me han ocurrido los comandos sugeridos. Creo que será de utilidad para más de un usuario. Hagan sus comentarios o envien sus comandos para agregar a la lísta.

miércoles, febrero 07, 2007

Flisol 2007

El día 28 de abril se realizará el Festival Latinoamericano de Instalación de Software Libre, FLISOL. Durante ese día serán instalados diferentes tipos de software libre en las computadoras que lleven los asistentes, que también podrán concurrir a charlas de software libre y tipos de licencias, y otras actividades. La asistencia al evento es totalmente libre, y abierta a todo tipo de personas: empresarios, entusiastas, estudiantes y aún personas que no tienen mucho conocimiento sobre el software.

El objetivo del evento es difundir el uso del software libre dando a conocer las ventajas que posee. Aunque este es un Festival Latinoamericano, nos gustaría contar con su participación, para que ya no sea un Festival Latinoamericano y se convierta en un Festival Iberoamericano o Euroamericano.

Los países que han confirmado su participación en este festival hasta el momento son: Argentina, Bolivia, Brasil, Chile, Colombia, Cuba, Ecuador, Perú, Guatemala, México, Paraguay y Venezuela. Nos gustaría contar con la participación de España, Portugal, Italia y Francia.

Para mayor información pueden visitar [WWW] http://www.installfest.info.