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.