Arreglando problemas con subversion

Últimamente vuelvo a trabajar mucho con la línea de comandos, no en vano el teclado te permite trabajar mas rápido. Lo que puede crearte problemas cuando no puedes deshacer acciones, y a veces, trabajando con un módulo de codigo versionado la he cagado y no sabía salir al paso si no era capaz de resolver mi embrollo el IDE de turno.

Subversion guarda la información de archivos versionados dentro de un directorio oculto con nombre svn, por lo tanto si se te presentan problemas, puedes borrarlo y añadir los nuevos directorios al repositorio de código, y digo nuevos, porque al borrar el registro subversion no sabrá que ya estaban ahí.

Para no ir uno a uno, porque se alcena uno por directorio, realizaremos una búsqueda que se usará como entrada para el comando de borrado recursivo:

find . -name .svn | xargs rm -fr

Publicada en General, Linux, subversion | Etiquetas , , , | Dejar un comentario

Subversion en debian rápido

Una guía rápida para versionar código en Debian con subversion.

Instalamos subversion:

apt-get install subversion

Se crea el repositorio

svnadmin create /usr/local/src/jmdocbook

se crea el directorio /tmp/jmdocbook/trunk que alojará los módulos y se hace la primera importación.

svn import /tmp/jmdocbook file:///usr/local/src/jmdocbook -m "Initial import."

Comandos útiles para ver los proyectos versionados y descargarlos:

svn list file:///usr/local/src/jmdocbook/trunk

svn co file:///usr/local/src/jmdocbook/trunk/modulo

cd modulo
svn status // para ver los cambios
svn add directorio // para versionar un directorio y su contenido
svn del directorio // para eliminarlo
svn commit -m "Mensaje explicativo."

Para mas información visitar la wiki de debian sobre subversion.

Publicada en General, Linux | Etiquetas , , | Dejar un comentario

Pasando a la accion

Leo via meneame.net que David Bravo y Javier de la Cueva, siguiendo sus convicciones de defensa de las libertades digitales de los ciudadanos, han decidido una vez pasar a la accion.

Os dejo el enlace:

http://www.filmica.com/david_bravo/archivos/010338.html

P.D.: Pido disculpas por la ortografia, lo he escrito rapido en un teclado ingles.

Publicada en General | Etiquetas , , , | Dejar un comentario

En defensa de los derechos fundamentales

Desde este blog nos sumamos a los esfuerzos para preservar los derechos fundamentales adquiridos de los ciudadanos en la red.

Ciberderechos Barrapunto.com

Applesfera

Publicada en General | Etiquetas , , , , | Dejar un comentario

Contra el tijeretazo en I+D

La ciencia española no necesita tijeras.

La ciencia española no necesita tijeras.

He decidido unirme a la iniciativa lanzada por aldea irreductible protestando contra el recorte en investigación y desarrollo planteado en los presupuestos generales del estado por el actual gobierno.

Es una realidad que aquellos países que invierten en capital humano son los que se encuentran en la vanguardia del desarrollo. Si se propone cambiar el modelo productivo de este país, para volver a tiempos prehistóricos, no se me ocurre mejor manera que la propuesta. Si ya había fuga de cerebros españoles, ahora tendrán otro incentivo más.

En estos momentos me viene a la cabeza la propuesta de un portátil por estudiante. Es realmente necesaria en estos momentos? Por qué esa inversión no se prioriza para I+D, y que nuestros científicos e investigadores no tengan que huir de España? Máxime cuando los más beneficiados con aquella idea son empresas extranjeras con mínima inversión en España.

En definitiva, la mayoría somos conscientes de los difíciles momentos que todavían nos quedan, pero creemos que la actual propuesta del gobierno es totalmente desacertada y puede tener consecuencias catastróficas.

Publicada en General | Dejar un comentario

Latín y web 2.0

Hoy he descubierto que facebook soporta latín. Afortunadamente pude estudiar latín cuando se cursaba segundo de BUP, y aunque nunca llegué a hablar con fluidez (ni de lejos), me ha parecido parte importante del curriculum estudiantil de una persona culta. Aunque lo denominan una lengua muerta porque no existe ninguna comunidad que lo use como primera lengua vehicular, no quiere decir que no lo use alguna comunidad como los estudiosos de la cultura clásica romana.

Me parece una fantástica noticia para la cultura, y más que la iniciativa haya partido de Facebook.

Publicada en General | Etiquetas , | Dejar un comentario

PC-BSD

Debido a que el portátil de mi hermana se estropeó y no queria comprar un nuevo, al fin y al cabo estamos en crisis, decidí desempolvar mi viejo portátil, un acer travelmate de la serie 4100, y con la idea de que ella trabajara con un sistema operativo abierto, me decidi por instalar un Linux, concretamente un ubuntu, pero desistí porque no conseguí que se conectara via inalámbrica al router casero. Lo curioso es que la tarjeta wireless funcionaba correctamente, y otras redes eran visibles menos la de interés. Debo reconocer que ese router y mi portátil siempre se llevaron mal.

Como siempre he tirado más para UNIX decidí darle una oportunidad a FreeBSD, pero como el usuario final iba a ser mi hermana y no yo, opté por buscar una variante mas amigable. Y encontré PC-BSD.

Grabé el CD para una instalación mínima y completarla por Internet, y debo decir que fue muy satisfactoria: el instalador es totalmente gráfico y detectó y configuró todo sin problemas. No en vano el portatil tiene ya sus años y daba por hecho que estaría soportado.

El interfaz gráfico es KDE en su versión 4.2 con un acabado muy agradable, y donde la instalación de nuevos programas se ha simplificado mucho comparado con la compilación vía ports tradicional de FreeBSD. El sistema de paquetes que propone esta distribución se base en incluir todo en el binario, sin presuponer la existencia de librerías en el sistema, de una forma similar a como opera OS X. Seguramente no es la solución óptima, pero funciona y sin quebraderos de cabeza. Instalé Mozilla Firefox como navegador predeterminado y tras comprobar que visualizaba correctamente webs de correo electrónico y de redes sociales, lo dí por finiquitado y se lo cedí a mi hermana que se ha mostrado encantada.

Finalmente, aunque recomendaba Ubuntu Linux a los amigos que se querían iniciar o deseaban alargar la vida útil de su computadora, esta variación BSD me parece que ha hecho un excelente trabajo simplificando la instalación del sistema operativo y la gestión del software mediante su sistema PBI. KDE como interfaz gráfico me parece correcto, porque a pesar de ser una aplicación pesada corre fluidamente en un hardware de hace casi cinco años.

Publicada en General | Etiquetas , , , , , , , | Dejar un comentario

Trabajando de noche

Sin duda muchos de nosotros han pasado largas horas delante del ordenador, y en más de una ocasión trabajando a destajo para finiquitar una tarea urgente.

Todos estamos de acuerdo en que el principal inconveniente de trabajar tarde es que nuestros ojos están cansados y los sometemos a más estrés. Sin duda la mejor opción es evitar trabajar sin luz natural, pero cuando no es posible lo mejor es que realizar dicha tarea sea lo más cómodo posible.

Vía applesfera he encontrado una utilidad que me ha ayudado bastante: f.lux

Esencialmente lo que hace es mostrar colores acordes a la iluminación disponible, y que hemos indicado, que se traduce en la sensación de observar una pantalla de color pastel.

Vuelvo a recomendar que lo mejor es irse a la cama, pero de no hacerlo y tras finalizar, tus ojos no los notarás tan cansados.

Publicada en General | Etiquetas , , , , , , , | Dejar un comentario

La importancia de la documentación

Cualquier proyecto de ingeniería por la complejidad que acarrea requiere de un esfuerzo especial para plasmar las idea principal y cómo desarrollarla de principio a fin. En el caso de los proyectos de software no nos encontramos en una situación muy diferente.

Pero cómo se puede documentar un proyecto software de forma sencilla y satisfactoria? En los tiempos en que UNIX era practicamente el único sistema operativo se usaban ficheros de texto plano, de hecho muchos de las guías rápidas de Linux o howtos también.

Si a estas alturas eso no nos parece una barbaridad debe faltar poco. Y por supuesto sustituir los ficheros de texto plano por archivos de Word no me parece una solución aceptable. Al fin y al cabo el hecho de tener que cambiar de aplicación para realizar una consulta es de todo menos eficiente, máxime cuando a pesar de las mejoras en potencia de cálculo sigue tardando una eternidad en abrir un simple fichero más o menos formateado.

Y si además se considera que los diferentes desarrolladores pueden no estar geográficamente (ni temporalmente seamos relativistas) en el mismo lugar. Se puede argüir que el correo electrónico salva este inconveniente. Pero en este caso hay que utilizar una segunda aplicación: el cliente de correo electrónico, para descargar el fichero y abrirlo con otra aplicación.

Sin duda alguna los proyectos de software libre, que adoro, han resuelto de forma satisfactoria este problema porque su propia supervivencia dependía de ello. Al ser proyectos colaborativos internacionales, y donde principalmente los desarrolladores aportan su conocimiento, ganas y tiempo libre, es de vital importancia que cada miembro sepa lo que debe hacer, para averiguar cómo hacerlo, y todo ello en el menor tiempo posible.

Es aquí donde el hipertexto o HTML demuestra sus virtudes:

  • Información accesible en línea
  • Referencias enlazadas en el documento principal gracias a los hiperenlaces
  • Estándar

A día de hoy donde muchas de las aplicaciones software a desarrollar hacen uso del navegador, tiene sentido usar esa misma herramienta para presentar la documentación. Al hilo de esta idea han surgido diferentes propuestas como wikis y blogs que además permiten la edición colaborativa.

Pero a todo esto le veo un problema. Por ser un aficionado a la lectura aprecio una correcta impresión, y se debe reconocer que un fichero HTML impreso es de una calidad inferior a un libro barato. De hecho durante bastante tiempo he usado LaTeX para generar documentación impresa de calidad como es costumbre entre científicos e ingenieros (de verdad).

Y aunque LaTeX está bien, por sus muchas virtudes, alguno de sus inconvenientes es aprender un lenguaje de macros (es anterior a la popularización de HTML) y que fue concebido como generador de documentos a imprimir.

Existe algo a día de hoy omnipresente en la sociedad de la información, que estructure correctamente la información, independiente de plataforma, a ser posible un estándar, donde prime el contenido, relevándonos de los detalles de composición y que permita un procesado ágil? Sí, XML.

Publicada en General | Etiquetas , , , , , , , , , , , | Dejar un comentario

Desarrollo web MAMP con CakePHP (III)

En esta tercera y última parte se va a desarrollar la aplicación a partir del esqueleto ya disponible en la aplicación pastelito. La aplicación va listar los productos disponibles y su precio, en este caso tartas, por lo que siguiendo las convenciones de CakePHP se va a crear un modelo (Tarta) que implementa los datos, un controlador (TartasController) que realizará la lógica, y una vista (tartas/index.ctp) que mostrará la información y se corresponde con la función definida en el controlador.

Recordemos que en la base de datos se tiene una única tabla (tartas) que contiene un registro de cada tarta, de ahí que el modelo se denomine en singular, y se crea en /pastelito/models/tarta.php con el siguiente código:

<?php
class Tarta extends AppModel {
var $name = 'Tarta';
}
?>

Por otro lado el controlador /pastelito/controllers/tartas_controller.php contiene:

<?php
class TartasController extends AppController {
var $name = 'Tartas';

function index() {
$this->set('tartas', $this->Tarta->findAll());
}
}
?>

que define una función que invoca a la vista tartas/index.ctp pasando como parámetro todos los registros del modelo Tarta.

Finalmente la vista debe presentar el resultado, ahora la vista será un directorio /pastelito/views/tartas, con un fichero index.ctp que genera el código HTML a mostrar por el navegador:

<h1>Tartas</h1>

<table>
<tr>
<th>Id</th>
<th>Producto</th>
<th>Precio (eur.)</th>
</tr>

<?php foreach ($tartas as $tarta): ?>
<tr>
<td><?php echo $tarta['Tarta']['id']; ?></td>
<td><?php echo $tarta['Tarta']['nombre']; ?></td>
<td><?php echo $tarta['Tarta']['precio']; ?></td>
</tr>
<?php endforeach; ?>
</table>

Se puede ver el resultado visualizando la URL http://www.onestic.dev/tartas.

listatartas

Todo bien, pero la aplicación no deja de ser muy sencilla, se va a añadir funcionalidad: al pinchar sobre el producto se ve un detalle del mismo.

Se modifica index.ctp de forma que el identificador sea un hiperenlace que nos lleve a una nueva vista:

<td><?php echo $html -> link($tarta['Tarta']['id'], "/tartas/view/".$tarta['Tarta']['id']); ?></td>

Se crea view.ctp que será la vista y que recibe como parámetro de entrada el identificador, para recuperar ese registro:

<h1><?php echo $tarta['Tarta']['nombre']?></h1>
<p><small>Precio: <?php echo $tarta['Tarta']['precio']?></small></p>
<p><?php echo $tarta['Tarta']['descripcion']?></p>

Y se añade la acción asociada a la nueva vista en el controllador con la siguiente función:

function view($id = null) {
$this->Tarta->id = $id;
$this->set('tarta', $this->Tarta->read());
}

Nótese la correspondencia de nombres, la función view lee el registro con identificador = id y la vista view.ctp muestra el resultado.

Información del elemento seleccionado.

Finalmente se edita /pastelito/config/core.php para modificar el nivel de depurado,
Configure::write('debug', 0);
y routes.php para redirigir automáticamente a la página inicial que deseemos: http://www.onestic.dev.

Router::connect('/', array('controller' => 'tartas', 'action' => 'index'));

Publicada en PHP | Etiquetas , , , , | Dejar un comentario