sâmbătă, iunie 28, 2008

...and The Heavens shall tremble!

Ştire în premieră pe sietch!

Blizzard a anunţat astăzi că Diablo 3 este în lucru. Orice comentariu este de prisos.

joi, iunie 26, 2008

sâmbătă, iunie 21, 2008

Adelu.

Ce e întrebat Adrian Năstase când cumpără o şaorma?
Aici sau la Parchet?

vineri, iunie 20, 2008

Post de vară.

I'm a banana!

luni, iunie 16, 2008

Pentru că meritaţi.

Contrar confuziei create de titlu, nu voi vorbi despre campaniile agresive şi tânpite de publicitate la produse cosmetice, ci despre rezultatul alegerilor. Da, Oprescu a câştigat la Bucureşti din postura de candidat independent. Evident, nu este decât o marionetă haioasă şi demagoagă a eminenţei cenuşii roşii de la PSD, fost PDSR, fost FSN, fost PCR. Iliescu a condus şi cred că va conduce această ţară până când va muri şi-l vom împăia ca pe Lenin.

Cum de s-a ajuns aici? Simplu - poporul român e format din retardaţi acefali. Uită-te în jurul tău: toţi burtoşii care te sfidează dintr-un Q7 la semafor, toţi analfabeţii, toţi foştii ofiţeri care au făcut trecerea de la beciurile întunecate şi neştiute ale Securităţii la cămăşile albe cumpărate din Elveţia şi asasinatul economic şi acum sunt oameni de afaceri respectabili, toţi grataragii de cartier şi taximetriştii şaormari, toate curvele de lux din Bamboo, toţi ascultătorii de Radio 21 şi cititorii avizi de CanCan, toţi beţivii care-şi bat nevasta. Toţi acesti oameni se duc şi votează. În schimb, intelectualii, inginerii, economiştii şcoliţi cum trebuie, doctorii adevăraţi, oamenii care au deschis mai mult de două cărţi la viaţa lor stau acasă pe motiv că sunt "scârbiţi". Atunci, dragi români, aveţi conducătorii pe care-i meritaţi.

Tot ceea ce e suficient pentru ca răul să învingă este ca oamenii buni să nu facă nimic. - Edmund Burke

joi, iunie 12, 2008

Îngheaţă! Poliţia!

De vreo două săptămâni, în cartier duduie muzica. House, Paraziţii sau Sugababes, toate se ascultă la volum de mare angajament pentru liniştea şi pacea locatarilor. Am stat o zi. Am stat două. Am stat nouă. E clar că cineva trebuie să-l înveţe manierele pe proaspătul mutat. Şi cine mai bine decât nişte mai vechi cunoscuţi ai sietch-ului - Poliţia Română?

Ca un om civilizat ce mă pretind, n-am sunat la 112, pe motiv că nu era tocmai o urgenţă şi n-aş dori ca din cauza liniei pe care o ocup eu cu gâlceava de cartier să nu ajungă o ambulanţă unde trebuie. Drept urmare, dau un telefon la secţia de poliţie pe raza cărei habitez. Vorbesc cu o doamnă foarte drăguţă şi-i povestesc situaţia, iar dânsa mă sfătuieşte să dau telefon la 112 ca să poate trimite o patrulă. Zis şi făcut, mă înfig în receptor şi dau 911-ul autohton. Povestesc şi acolo nemulţumirea şi doamna îmi face legătura la Poliţie. Mai povestesc o dată ce-am pe suflet şi primesc răspunsul cum că "asta nu-i urgenţă, dom'le, sunaţi la secţia de poliţie". Cercul este iarăşi închis, ca-n filmele cu tâlc. Sper că aţi înţeles că absolut toate discuţiile cu poliţişti se desfăşurau pe tonul binecunoscut zeflemitoro-tâmp.

Până una, alta, ajunge şi pe uliţa mea un echipaj. Evident, fix cât a stat gaborimea în zonă era o linişte mormântală de mi-a fost şi ruşine că le ocup timpul preţios. Apoi mi-am adus aminte că-s plătiţi şi din banii mei şi m-am liniştit. Dar, ascultă cuvintele mele Ascultătorule-de-Decibeli-Mulţi, războiul nu s-a încheiat!

miercuri, iunie 11, 2008

Descărcarea automată a datelor GPS de la o staţie fixă.

Tocmai ai venit de pe teren după o sesiune de măsurători GPS. Vrei să descarci cât mai repede datele de la o staţie fixă, dar ţi-e lene să cauţi manual fişierele. De asemenea, te afli într-un mediu Unix. Nu căuta mai departe! Scriptul pe care l-am scris şi ţi-l dau mai jos face exact asta.

Ca de obicei, există o serie de cerinţe:
  • GPS Toolkit - o excelentă suită de aplicaţii pentru manipularea datelor GPS.
  • teqc - un veritabil briceag pentru lucrul cu fişiere RINEX
  • sed - ştiu că se poate şi fară, dar mi-a fost lene
  • awk - la fel ca la sed
  • tail - probabil că tail, sed şi awk puteau fi scoase din buclă şi folosite chestii native în Python. Probabil.
  • wget - folosit doar pentru descărcarea efectivă a fişierelor
  • Python - limbajul de programare cu baterii incluse

Şi o serie de presupuneri:
  • Mediu de lucru Unix-like, care suportă redirectări şi pipe-uri
  • Datele sunt în format Trimble
  • Date sunt preluate de la staţia permanentă EUREF din Bucureşti
  • Utilizatorul nu este idiot. Deşi este destul de sigur să faceţi copy/paste codului de mai jos, în cele mai multe situaţii va trebui să adaptaţi diverşi parametri pentru problema specifică. Presupun că se poate scrie relativ uşor un script care să ia în calcul diverse variabile, aşa că dacă sunt voluntari...

#!/usr/bin/python

import commands
import re
import os
import sys

rinexdump = "RinexDump --num --format \"%d-%m-%Y,%H:%M:%S\" "
timeconvert = "timeconvert --input-format=\"%d-%m-%Y,%H:%M:%S\""
trimbleconvert = "teqc -tr d "
ftp_site = "ftp://igs.bkg.bund.de/IGS/nrt/"

if len(sys.argv) <= 1:
print "Mod de folosire:"
print "eurefd.py [fisier2] [fisier3]"

for fname in sys.argv[1:]:
fname_rinex = fname + ".obs"

print "Convertesc in RINEX...",

convert_cmd = trimbleconvert + fname + " > " + fname_rinex

r = commands.getoutput(convert_cmd)

if r.find("cannot fopen argument file") != -1:
print "eroare"
exit()
print "gata"


print "Extrag timpul de start din RINEX...",
get_up_limit_cmd = rinexdump+fname_rinex+"| sed q | awk '{print $1 $2}'"
get_down_limit_cmd = rinexdump+fname_rinex+"| tail -1 | awk '{print $1 $2}'"

up_limit = commands.getoutput(get_up_limit_cmd)

if up_limit.find("Error") != -1:
print "eroare"
exit()
print up_limit


print "Extrag timpul de stop din RINEX...",
down_limit = commands.getoutput(get_down_limit_cmd)

if down_limit.find("Error") != -1:
print "eroare"
exit()
print down_limit

print "Valorile de timp aflate:"
timeconvert_up_cmd = timeconvert+" --input-time=\""+up_limit+"\"" + " --format=\"%j\""
timeconvert_down_cmd = timeconvert+" --input-time=\""+down_limit+"\"" + " --format=\"%j\""

up_gps_day = commands.getoutput(timeconvert_up_cmd)
if len(up_gps_day) > 3:
print " Nu am putut extrage ziua GPS (",timeconvert_up_cmd
exit()

down_gps_day = commands.getoutput(timeconvert_down_cmd)
if len(down_gps_day) > 3:
print " Nu am putut extrage ziua GPS (",timeconvert_down_cmd
exit()
if up_gps_day != down_gps_day:
print " Observatiile nu sunt din aceeasi zi."
exit()

print " ziua GPS:", up_gps_day

m = re.search('(?<=,)\w+', up_limit)
if m == None:
print " Nu am putut extrage ora de inceput din (",up_limit,")"
exit()
up_hour = m.group(0)
print " ora de inceput:",up_hour

m = re.search('(?<=,)\w+', down_limit)
if m == None:
print " Nu am putut extrage ora de inceput din (",up_limit,")"
exit()
down_hour = m.group(0)
print " ora de final:",down_hour

print "Lista fisierelor ce trebuiesc descarcate:"
lista_fisiere = list()
for i in range(int(up_hour), int(down_hour)+1):
down_hour_letter = chr(int(i)+ord('a'))

bucuname = "bucu" + up_gps_day + down_hour_letter + ".08d.Z"
fullpath = ftp_site + up_gps_day +"/"
if len(str(i))<2:
fullpath = fullpath + "0" + str(i)
else:
fullpath = fullpath + str(i)
fullpath = fullpath + "/"+bucuname
lista_fisiere.append(fullpath)
print " *",bucuname," %d" % i

print lista_fisiere


print "Descarc fisierele..."
for i in lista_fisiere:
os.system("wget -nc " + i)

print "Sterg fisierul RINEX..."
commands.getoutput("rm " + fname_rinex)