miércoles, 28 de noviembre de 2012

Amañando erros gracias aos logs [GNU/Linux]

Boas a todxs,

Esta semana imos falar da detección de erros na nosa distribución de GNU/Linux. A idea ven dun día no que paseando pola comunidade de ubuntu en galego vin que estaba recén publicado un fío donde, @dinisinho, pedía axuda cun problema que tiña na súa máquina con Ubuntu instalado. A información que tiña era pouca, unha descripción por enriba do problema, concretamente, cando executaba o gedit ou o transmission pechábaselle a sesión. Con esa información diagnosticar algo, a menos que tiveses exactamente o mesmo problema é complicado, que podemos facer? Consultar os logs do sistema.

Podemos facelo do seguinte xeito:
$ cd /var/log/
$ ls -la

Aí veremos toda unha serie de logs pero os que nos teñen que interesar son o "messages" que é o log da sesión actual ou ben, se foi un problema vello nos chamados message-XXXXXXXX. Para poder ver o arquivo temos que ser root así que facémolo do seguinte xeito:
$sudo gedit messages

Pois ben, unha vez aquí é cuestión que cando teñamos o problema ir a consultalo e cara o final do log de messages deberá aparecer algún tipo de erro.
Realmente funciona? Pois a min nunca me pasara tal, eu só tiña lido e escoitado falar e din a idea, logo @dinisinho foi quen puido comprobar que saltaba un erro relacionado con Xorg.0.log e Xorg.0.log.old, é dicer, problemas coa gráfica, proceder a solucionalo e compartilo coa comunidade.
Cal foi a solución? Pois neste caso polo visto foi culpa dos drivers, non se lle instalaban ben e era por culpa do linux headers. Que non estaba instalado/estaba sen actualizar.

Aquí podedes consultar o fío do problema no propio foro.

A verdade é que aprender así, entre todxs, é como máis presta :)

Agardo gostásedes!

Saúde!

domingo, 25 de noviembre de 2012

Obter os métodos permitidos nun servidor HTTP [Twitcode XVII][Bash]

Traballando con HTTP os métodos máis coñecidos son GET e POST pero existen máis, por exemplo HEAD (coma GET pero sin descargar o arquivo, só as cabeceiras), PUT (para subir un arquivo) ou DELETE (para eliminalo) entre outros, habendo un deseñado para saber de cales se pode tirar, OPTIONS (que fai iso, lista-las opcións), e podemos poñelo en práctica con:

OPTIONS(){ echo -e "OPTIONS / HTTP/1.1\nHOST: $1\nConnection: close\n"|nc -q 10 $1 80|grep -i allow|awk '{print $2}';}

Nota: está en maiúsculas a semellanza dos comandos `HEAD`, `GET` ou `POST`.

Por exemplo:
$ OPTIONS(){ echo -e "OPTIONS / HTTP/1.1\nHOST: $1\nConnection: close\n"|nc -q 10 $1 80|grep -i allow|awk '{print $2}';}
$ OPTIONS apache.org
GET,HEAD,POST,OPTIONS,TRACE
$ 

Iso sí, non está soportado en todo-los servidores...
$ nc google.es 80
OPTIONS / HTTP/1.1
HOST: google.es

HTTP/1.1 405 Method Not Allowed
Content-Type: text/html; charset=UTF-8
Content-Length: 962
Date: Sun, 25 Nov 2012 21:20:39 GMT
Server: GFE/2.0
Connection: keep-alive

<!DOCTYPE html>
...
$ 

Saúdos

Buscando a orixe do erro dun programa [C]

O programar é inevitable mete-la pata de cando en vez, posiblemente xerando algún tipo de error que a computadora non tarda en facer notar, se isto é nun entorno interpretado coma en Python, pois non hai problema xa que temos toda a información a man.
Traza do erro con número de liña e motivo incluído, cousa fina

Nembargantes se optamos por un entorno compilado coma C, as cousas complicanse.
Dicía un profesor meu
 "C non é coma pascal, en pascal se compila xa tes media bataia gañada;
en C todo compila, a loita ven despois"
É ben certo, pero coñecer un par de ferramentas alivia moito a carga.

martes, 20 de noviembre de 2012

Listar quenes contribúen nun repositorio GIT segundo o número de commits [Twitcode XVI][Bash]

Inda que sexa un pouco indiscreto e so vaia a amosar o número de commits e non a contribución real...

git log|grep Author|sort|uniq -c|sort -nr|awk -F ': ' '{print $2}'

Ou engadindo `| head -n 20` pra so amosar as primeiras 20 posicións.

Por exemplo, sobre o repositorio de midori (un navegador web lixeiro) [ git://git.xfce.org/apps/midori ]

martes, 13 de noviembre de 2012

Curvas Bézier [python]

Hoxe ímos ver un pequeno truquiño para facer fácilmente curvas suaves, esta é unha técnica moi usada nos gráficos de computadores. As curvas bézier foron utilizadas xa no ano '62, por (adiviñade quén) Pierre Bézier para deseñar superficies de automobiles e, volvendo á época actual pódense atopar entre outras moitas cousas no canvas de HTML5.


Así que ímos ver como funcionan por detrás...

domingo, 11 de noviembre de 2012

Limpando os arquivos temporais. [Twitcode XV][Bash]

Boas a todxs,

Aqui vai un twitcode máis, limpando os temporais do usuario actual ou outro usuario en GNU/Linux:

#!/bin/bash
user=`logname`
rm -r `find /tmp/ -user $user` && rm -r `find /var/tmp/ -user $user`

Tuneando o noso grub! [Ubuntu 12.10 e anteriores]

Boas a todxs,

Hoxe toca "tunear" o grub2, o xestor de arranque default en moitas distribucions de GNU/Linux, concretamente para versións de Ubuntu 12.10 e anteriores, en fedora aínda nunca me puxen. Para comezar temos que saber que o arquivo de confgiuración do grub, está en /boot/grub2/grub.cfg, abrindoo con gedit:
gedit /boot/grub2/grub.cfg

Podemos observar como nos avisa de que non editemos este arquivo xa que se crea a partires dunha serie de arquivos ubicados en /etc/grub.d e o arquivo grub /etc/default que nos permitirá algunha información extra como o timeout entre outras cousas.
Pois ben, agora faremos un par de pequenas modificacións, primeiro imos cambiar algo o aspecto, comecemos coa cor de fondo e o resaltado á hora de escoller o SO que queremos cargar, imos a /etc/grub.d e abrimos o arquivo chamado 05_debian_theme:

miércoles, 7 de noviembre de 2012

Compilando un pequeno programa en [C] para Android (rooteado)

Se alguén trastea cun android rooteado un rato acabará atopándose cun programa do SDK  `adb`, que entre outras moitas cousas permite levantar unha shell no celular, se resulta que se engade un `bash` á mistura resulta que temos un mini computador totalmente capaz nas mans e non necesariamente atado ás limitacións de Java e a interface puramente táctil do resto de android... e que se fai cos computadore? prográmaselles!

domingo, 4 de noviembre de 2012

Sacando a nosa IP (limpa) por pantalla. [Twitcode XIV][Bash]

Boas a todxs,

Pois o twitcode desta semana serve para sacar a nosa IP limpa por pantalla, sen outros datos que nos da ao facermos un ifconfig, o script é así:

ifconfig | grep inet | grep -v 127.0.0.1 | cut -d: -f2 | cut -d\  -f10

sábado, 3 de noviembre de 2012

Enviando mails con Python! [Python][SMTP]

Boas a todxs,

Hoxe imos a aprender a usar a librería smtp (send mail transfer protocol) ou noutras palabras, imos enviar correo electrónico con un script en python, o código que adxunto é unha pequena porción dun script maligno que tiña feito fai un tempo.

O primeiro que temos que coñecer é como funciona o protocolo de envío de mail (SMTP) e que é MIME (Multipurpose Internet Mail Extensions). Están moi ben explicados na galipedia e penso que o importante é o que segue a continuación, así que aí vai primeiro o código e logo con explicacións.