martes, 26 de febrero de 2013

Maquetación rápida con css

Boas a todxs,

Hoxe toca saltar da administración de gnu/linux a css, despois dun tempo "traballando" do lado cliente da web con html, css e algo de javascript e agora que andamos con isto en clase dinme conta que hai pequenos detalles que poden volvernos tolos á hora de maquetar unha web con caixas e css e en realidade non é tan complicado, aí van uns pequenos apuntamentos.

Empregaremos algo deste estilo de exemplo:

***********************************
*////////header//////////*
***********************************
*/////////menu//////////*
***********************************
*/columna1//**/columna2//*
***********************************
*////////footer//////////*
***********************************

domingo, 24 de febrero de 2013

Pequena introducción as expresións regulares

As expresións regulares son unha forma de buscar patróns nun texto moi potente e común, atópanse por exemplo en ferramentas coma `sed`, `grep` e teñen soporte estándar en prácticamente calqueira linguaxe de scripting moderno.
Se ben orixinalmente as expresións regulares referíanse a unha notación para expresar alfabetos dos autómatas finitos co paso do tempo o uso do termo relaxouse e hoxe é comunmente usado para referirse as PCRE (expresións regulares compatibles con perl), máis potentes.

O propósito de este post é amosar os conceptos xerais destas ferramentas sen adentrarnos en ningunha linguaxe de programación en concreto, o final faráse referencia a distintos recursos para facer uso delas coas linguaxes e ferramentas antes referidas.

Nota: as imáxes foron xeradas a través do sitio regexper.com
Nota2: as expresións regulares estarán entre ‘/’ e ignonrarase o escapado coma nas cadeas raw de python (‘\n’ non será un salto de liña, senón un carácter ‘\’ seguido dunha ‘n’). 

sábado, 16 de febrero de 2013

Recuperando o password desde o grub [GNU/Linux]

Boas a todxs,

Despois dun tempo desaparecido (portatil estropeado + entroido + exames) volvo por aquí. Esta vez toca unha breve entrada sobre comor recuperar a nosa password da nosa distribución GNU/Linux desde o grub. Concretamente empregara este método para recuperar unha password de root dun Ubuntu 12.04 con grub2.

Aquí temos unha imaxe do grub, temos que entrar en modo edición, como podedes ler faise presionando o 'e'.


Unha vez aquí temos que ubicarnos nunha liña tipo:

miércoles, 13 de febrero de 2013

Utilizando GIT contra un servidor SVN

Fai uns días xa faláramos dos sistemas de control de versións, de GIT e das ventaxas que tiñan os que coma el eran distribuídos, hoxe ímos ver como usar GIT coma interfaz sobre un sistema SVN (non distribuído), para obter certas ventaxas que teñen estes sistemas.

Para as probas imaxinade un servidor SVN por HTTP `svn-test-server` cun repositorio na ruta `/svn/hl/`, neste caso con SVN para descargar o código faríase:
[~/git-svn]$ svn checkout http://svn-test-server/svn/hl/
Checked out revision 0.
[~/git-svn]$ ls -a hl
.  ..  .svn
[~/git-svn]$ 

Ben, agora coma escenario para as probas crearémo-la estructura de arquivos típica de SVN (aforramos pásos adicionais se facemos o primeiro commit dende o SVN e xa aproveitamos :P)

miércoles, 6 de febrero de 2013

Obter a lista de marcadores de Firefox [Bash][Twitcode XXV]

O comando é o que segue:
sqlite3 .mozilla/firefox/*.default/places.sqlite 'SELECT b.title, p.url FROM moz_bookmarks AS b JOIN moz_places AS p ON b.fk = p.id'

Por exemplo:
$ sqlite3 .mozilla/firefox/*.default/places.sqlite 'SELECT b.title, p.url FROM moz_bookmarks AS b JOIN moz_places AS p ON b.fk = p.id'
Getting Started|http://www.mozilla.com/en-US/firefox/central/
Help and Tutorials|http://www.mozilla.com/en-US/firefox/help/
Customize Firefox|http://www.mozilla.com/en-US/firefox/customize/
Get Involved|http://www.mozilla.com/en-US/firefox/community/
About Us|http://www.mozilla.com/en-US/about/
Etiquetas recentes|place:type=6&sort=14&maxResults=10
JamesM's kernel development tutorials|http://www.jamesmolloy.co.uk/tutorial_html/index.html
Máis visitados|place:sort=8&maxResults=10
Marcados recentemente|place:folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&folder=TOOLBAR&queryType=1&sort=12&maxResults=10&excludeQueries=1
Historial|place:type=3&sort=4
Descargas|place:transition=7&sort=4
Etiquetas|place:type=6&sort=1
|place:folder=TOOLBAR
|place:folder=BOOKMARKS_MENU
|place:folder=UNFILED_BOOKMARKS
Macros - The C Preprocessor|http://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros
...
$ 

domingo, 3 de febrero de 2013

Executando as probas do repositorio ao facer commit [GIT][Python]

Os sistemas de control de versións son desas cousas que non botas en falla ata que as coñeces, sobretodo se están ben feitos. A miña primeira experiencia con estes foi usando Subversion e a impresión non foi en absoluto positiva, se querías gardar un grupo de cambios necesitabas conexión o servidor (polo tanto a internet, e polo tanto non era algo intantáneo), se querías ler a lista de cambios necesitabas conexión o servidor (o mesmo), se querías seguir a partires dun estado previo era unha auténtica odisea e se alguén actualizaba o código mentres ti o facías outra... e xa non quixen saber nada máis diso.

Avancemos un pouco, co auxe de GitHub e compaña acabei por probar GIT e todo cambiou, os cambios? ata que queiras mandálos o servidor gárdanse en local (é distribuído por natureza); a lista de cambios? o mesmo, está en local así que é instantáneo; se queres voltar a un estado previo so tes que facer `git checkout id-do-estado`, e se ben os cambios concurrentes poden requerir algún manexo manual ata o de agora non foi necesario, o propio sistema toma cargo deles.

Un día compría facer un tutorial en condicións destes sistemas, pero por agora quero amosarvos un truco que evitou que código defectuoso chegara ó servidor nun proxecto que tiven que desenvolver fai pouco.

Resulta que GIT ten unha funcionalidade que permite executar código en diversos puntos da execución das súas accións e modificar o curso a tomar pola aplicación, por exemplo, podemos escribir un script que se executará o facer commit, e no caso de voltar un valor distinto de 0 na súa saída deterá o proceso, impedindo que se realice, isto permite por exemplo evitar enviar código que non pasa as probas.