Danielside

informática softwarelibre divagaciones música

Programación

Iterando en PHP

A veces no le damos más de una vuelta a una cosa aparentemente tan sencilla como recorrer todos los elementos de un array, pero la opción que elijamos puede llegar a tener un impacto considerable en el rendimiento de la aplicaciójn.

Tradicionalmente recorrer un array ha estado ligado a la estructura de control for, que en PHP es tan potente como en C.

A veces, también, nos perdemos en los océanos de Internet para buscar cosas y nos olvidamos de buscar en el manual, que en el caso de PHP es un buen manual, repleto de consejos. No hay muchos proyectos que tengan una documentación de tanta calidad como PHP. Su calidad unido a que dejan hacer comentarios y aportaciones en cada página, hace que sea la referencia más importante de este lenguaje.

Seguir leyendo…

GNU/Linux, Programación, Software Libre

Mi entorno para programación con i3-wm y Emacs

Alan Kay fue el verdadero visionario, el genio detrás de las cortinas. Trabajando en los laboratorios de Xerox Parc, inventó algo que nos suena mucho: el concepto de ventanas donde se ejecutan programas y la interacción con esas ventanas (moverlas, activarlas, cerrarlas,…) mediante algún dispositivo apuntador. Hoy día parece simple, pero en un mundo de arcanos comandos e informáticos de bata blanca, era una revolución.

Se dice, se comenta y se rumorea que Steve Jobs andaba de visita por Xerox y Alan le enseñó el invento, todo emocionado. Muchos días me imagino aquél encuentro en clave de «Celebrities» (Muchachada Nui) viendo como Steve habla con Alan manteniendo una cara de «Sí, no está mal» mientras esa pensando «ME VOY A FORRAR, ESTO LO ROBO YA». Cosas parecidas se dicen de Bill Gates en una visita similar.

El caso es que gracias al curre de Alan, que por cierto también presentó genialidades como Smalltalk y el Dynabook (precedesor de las tablets) y la posterior comercialización por parte de estos sujetos, se hicieron enormemente populares las interfaces WIMP (Windows, Icons, Menus, Pointers). Pero ¿significa eso que son la herramienta idónea para cualquier trabajo? Definitivamente no.

Seguir leyendo…

Internet, Programación, Software Libre

Hacking on GNU social: Unicode Smileys

As you probably know already, GNU social is a GNU Affero licensed microblogging server software written in PHP that implements the OStatus protocol, an open standard for distributed status updates.

Everyone can deploy her own server and follow people in her own server or any other, as I explained here https://www.fsf.org/blogs/community/thousands-of-spaniards-leave-twitter-for-gnu-social.

I have run my own server for quite a long time, and the time to make some contribution back to this great software has come! I always thought that it would be great to take advantage of Unicode characters to insert some emojis in GNU social notices. You can always copy and paste these entities (http://unicode-table.com/en/) but the experience is better if that feature is integrated, so I decided to create a plugin.

Seguir leyendo…

Divagaciones, Programación

Me gustan los lenguajes dinámicos

Y Ruby en particular, por la cantidad de maneras diferentes que hay de contar hasta tres 🙂

i = 0
while i < 3 do   puts i+=1 end

i=0
puts i+=1 while i<3

i=0
puts i+=1 until i==3

for i in (1..3) do
  puts i
end

def a(i)
  yield(i)
end
for i in (1..3) do
  a(i) {|i| puts i}
end

(1..3).each{|i| puts i}

¿Conoces más? 😉

GNU/Linux, Programación

Emacs y modo Markdown automático

Emacs se ha convertido en mi editor favorito, una bestia que ni Stallman podría dominar hoy al 100%. Tiene vida propia.

Lo puedes usar tanto en un terminal real, como en un terminal virtual, como en entorno gráfico. Tiene un conjunto de atajos de teclado que -para mi- tiene mucho más sentido que el de vi(m), tiene plugins para todo lo que te puedas y no te puedas imaginar y encima está disponible en todos los sistemas operativos. La flexibilidad que te da para trabajar con varios archivos al mismo tiempo -especialmente usando una pantalla grande- para mi es inigualable.

El formato Markdown de formateo de texto me parece uno de los inventos más geniales de los últimos años, es pensar en aquéllos cutreformatos previos a la era de los procesadores de texto y hacer que tengan sentido. Luego puedes transformar ese cutreformato a HTML sencillamente. Ejemplos:


# Formatos de marcado
Describimos algunos formatos de marcas populares.
## HTML
Expresivo y estándar, dificultad media.
## TeX
Muy expresivo y flexible. Profesional. Dificultad alta.
## Markdown
Muy fácil de aprender, menos expresivo. Lista de ventajas:
* Editable con cualquier editor.
* Disponible en muchas plataformas.

Con Emacs hace una gran pareja. Incluso cuando estás editando en un terminal real (sin entorno gráfico) te detecta y colorea el documento. En debian, para tener el modo Markdown disponible, hay que instalar el paquete emacs-goodies-el.

Lo que venía a añadir con esta entrada es que podemos hacer que Emacs cargue automáticamente este modo cuando abrimos archivos con la extensión que se suele usar para los archivos Markdown, que suelen ser: .md (lo usa github), .mdwn (lo usa un plugin de Owncloud). Para ello no tenemos más que editar el archivo ~/.emacs y añadir:


(autoload 'markdown-mode "markdown-mode"
"Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.mdwn\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

2 comentarios

Electrónica, GNU/Linux, Programación, Raspberry Pi

Refrescando al Pi Solar (I)

Hace calor, mucho calor. Los seres basados en carbono pasamos calor, pero tenemos voluntad propia para refrescarnos de la manera que sea. Los seres basados en silicio dependen de nosotros para eso.

Por ello, después de montar el Portátil Raspberry Pi Solar estaba pensando en ponerle un ventilador. Pero ya que lo hacía, quería hacerlo bien, introduciéndome en el maravilloso mundo del GPIO. No es un pájaro, son las siglas de General-purpose input/output o Entrada/Salida de propósito general, y son esas dos hileras de pines (40 en el modelo B o superior) que aparecen en la placa.

Es muy interesante romper esa barrera entre el mundo del software y el mundo real, siempre me ha llamado la atención. En este caso, lo que quiero conseguir es que el ventilador se apague o encienda en función de la temperatura, un mecanismo que damos por hecho en cualquier PC. Gracias a la ayuda del amigo http://dontmakeitdouble.blogspot.com.es/ por ponerme en el camino de como se hace esto. Invitadle una cerveza, que os lo agradecerá.

Seguir leyendo…

GNU/Linux, Programación, Software Libre

Comprobación de la batería restante en el prompt

Al hilo de la entrada Hay vida en la línea de comandos, tenía una asignatura pendiente, que era la de saber en cada momento cuanta batería le quedaba al trasto. Necesitaba algo sencillo, que no implicara la instalación de sustitutos del shell como GNU Screen (multiplexador de terminales). Son servicios que se colocan «encima» de la terminal normal, para simular un entorno con varias «ventanas» y que además te puede presentar información en pantalla. El problema es que este tipo de entornos tienden a secuestrar eventos de teclado que pertenecen a otros programas -como Emacs- además de ocupar necesitar más recursos y, en mi caso, hacer cosas raras con la pantalla.

Seguir leyendo…

Administración Electrónica, GNU/Linux, Legal, LinuxAE, Programación, Software Libre

(y otra versión) Distribución Linux para Administración Electrónica

Actualización Sept. 2016 La última versión de la máquina virtual LinuxAE se puede encontrar en linuxae.org.es

ATENCIÓN: Si al iniciar el navegador de la máquina virtual da un aviso diciendo algo así como que hace mucho tiempo que no se inicia iceweasel y que quiere resetear, decir que no, porque se perderían configuraciones importantes.

(Act. 07 junio ’16) Nuevos torrent y magnet disponibles.

He vuelto a crear el torrent y he añadido nuevos trackers, que los que había no iban muy finos.
LinuxAE_v3.1.ova.torrent
magnet.txt

(Act. 14 enero ’15) Torrent disponible.
Aquí os dejo el enlace magnet para la descarga, tened paciencia sobre todo al principio por la escasez de semillas que habrá, y os agradecería que no borraseis inmediatamente el archivo, para hacer de semilla y que cada vez sea más fácil de descargar.

(Act. 15 diciembre) Ya estoy enviando los enlaces.
Página principal del proyecto: Configuración LinuxAE

(Act. 9 diciembre)
Me he dado cuenta de que había un par de cosas que tenía que ajustar, por lo tanto lo estoy haciendo antes de colgar la versión nueva. Por otro lado, estoy intentando resolver un asuntillo con el DNIe, que funciona casi por completo, pero hay un problema al firmar en ciertos sitios con @firma.
No he contestado a todo el mundo que ha puesto comentario, pero os enviaré el enlace a todos, será cosa de esta tarde o mañana a más tardar.

4 dic 2014 ¡He sido meneado! xD

Debido a la saturación de la cuenta de dropbox, por favor, enviadme un correo a la dirección que figura en contacto y os haré llegar un enlace de descarga.
Nada de esto estaba previsto, de hecho desde que esto está colgado (abril) y más aun desde la primera versión que hice, esto se lo habrán bajado no más de 50 personas, por tanto daba de sobra la capacidad dropboxera. Pero claro, llega el día que te menean y salen 30 gurús de internet de debajo de una seta.
Se agradecen comentarios sobre el funcionamiento, cuando la probéis.
PD. Para desconfiados, yo más bien desconfiaría de las grandes corporaciones xDD. Y el que quiera hacerle una auditoría a la imagen, puede hacerla con total libertad y contará con mi colaboración en todo momento.

Vamos con una nueva versión de la máquina virtual para Administración Electrónica basada en Linux (Debian 7).

Vuestros comentarios me han ayudado mucho. En especial uno que hacía referencia a porqué no tenía páginas de test que usaran las librerías WebSigner. Me sorprendió mucho la apreciación porque en mi concepción de la administración electrónica todo el mundo usaba @firma, pero está claro que no es así y que hay que dar soporte a las librerías WebSigner para que la máquina virtual tenga más alcance.

Seguir leyendo…

42 comentarios

Divagaciones, Ingeniería del Software, Programación

El Cuerpo de Conocimiento en Ingeniería del Software SWEBOK

He tenido pendiente encontrar esto en la Red, desde que un lejano día uno de mis profesores en los cursos de Doctorado mencionara algo al respecto de que «todo lo que debería saber un Ingeniero del Software está aquí», y creo que precisamente es a esto a lo que se refería.

Seguir leyendo…

Programación, sandbox

Combinar transacciones AJAX y peticiones estándar en un formulario

Si utilizamos AJAX -en este caso lo hago con jQuery- para guardar información introducida en formularios, puede que nos haya asaltado la necesidad de «redirigir» la página actual una vez que se ha creado el nuevo registro de información.

Seguir leyendo…