ponedeljek, 5. september 2011

Butasti trik dneva - DateTime.UtcNow

Če bi vsakič, ko sem natipkal
DateTime.Now.ToUniversalTime()
natipkal le
DateTime.UtcNow
bi s tem prihranil 15 znakov! To bi pomenilo nesluten dvig produktivnosti, da o manjši obrabi tipkovnice in z vsem tem povezanimi finančnimi prednostmi sploh ne govorim.

No, čisto (IntelliSense) resno, tale UtcNow je predvsem bistveno bolj čitljiv.

Povrh vsega sem sem seveda sumil (educated guess) da tisti dodatni klic metode ToUniversalTime()nekaj stane. No, izkaže se, da je na mojem jurasičnem mlinčku po 10 milijonih meritev ta faktor v povprečju osupljivih 300.

Če želi kdo preveriti:

int loops = 10;
float ratio = 0;
for (int j = 0; j < loops; j++)
{
    long t1 = DateTime.Now.Ticks;
    for (int i = 0; i < 1000000; i++)
    {
        DateTime now = DateTime.Now.ToUniversalTime();
    }
    t1 = DateTime.Now.Ticks - t1;
    long t2 = DateTime.Now.Ticks;
    for (int i = 0; i < 1000000; i++)
    {
        DateTime now = DateTime.UtcNow;
    }
    t2 = DateTime.Now.Ticks - t2;
    ratio += t1 / t2;
    Console.WriteLine(String.Format("{2}: {0:d} => {1:g}", t1 - t2, t1/t2, j));
    }
Console.WriteLine(ratio / loops);

ponedeljek, 25. julij 2011

ARSO radar padavin

Včeraj sem med močnim dežjem gledal ARSO radarsko sliko padavin. Radar meri odboj signala na vodnih kapljicah v atmosferi in tako kaže količino padavin na nekem področju. V resnici sicer ni tako preprosto, več o tem ve kot ponavadi Wikipedia.
V oči mi je padel zanimiv artefakt. V jugo-zahodnem delu so se skozi čas kazale nenavadne motnje, preveč pravilne, da bi bile lahko naravnega izvora.
Animacija radarske slike padavin (klik za animacijo)

Radialna narava motnje skozi čas mi je nakazovala, da gre morda za kak radarski artefakt? Shranil sem animirani gif in v par minutah v Photoshopu pridelal tole:

Izhodišče artefaktov? (klik za animacijo)

Čez robove in 'izseke' sem nahitro narisal nekaj črt, ki so se (ne)presenetljivo sekale v omejenem področju. Skratka, kmečka triangulacija mi je dala približno lokacijo radarja.
Seveda ni nobena skrivnost, da je radar na Lisci pri Sevnici, kar se tudi dovolj dobro sklada z mojo 5 minutno analizo.

Če ima kdo bolj poučen kak komentar, ga bom zelo vesel. Predvsem me zanima, kaj je povzročilo tak izpad signala.

[UPDATE]
Dobil sem informacijo direktno od vira na ARSO. Pravi takole:

Težko je res točno povedati. Kolega, ki se največ ukvarja z radarji je trenutno na dopustu.Načeloma je to res lahko motnja, npr. zaradi kakšne naprave, ki deluje na podobni frekvenci.
Ampak bolj verjetno je ta težava povsem naravnega izvora. Radar ima namreč precejšnje težave s pokrivanjem JZ konca te regije zaradi Dinarsko-kraške pregrade (radar ne vidi okoli "vogala"). Kadar so padavinski oblaki na tistem območju nizko (kot je bilo ob precejšnji ohladitivi to nedeljo), jih radar lahko vidi le z najnižjim žarkom in le skozi "luknje" v reliefu. Žarek na naslednji elevaciji je že nad oblakom.In zato jih v takem primeru vidi kot radialne črte.Pregled nad območjem zahodne Slovenije se bo bistveno izboljšal s postavitvijo novega radarja zahodno od LJ prihodnje leto.
PS: Pa brez teorij zarot prosim.
No, tako torej.

petek, 8. julij 2011

Butasti trik dneva - Visual Studio zvoki

Tole sem odkril zadnjič bolj kot ne po naključju.
Visual Studio (2010) definira svoje sistemske dogodke, ki jim lahko priredim zvoke! Na prvi pogled deluje to popolnoma neuporabno (kot večina sistemskih zvokov), je pa v resnici neverjetno koristno.

Recimo da imam/razvijam kos softvera, ki se občasno sesuje na neponovljiv način, večino časa pa dela pravilno. Predvsem lahko traja zelo dolgo, da se napaka sploh zgodi, saj je lahko odvisna od kakih zunanjih pogojev, ki niso pod mojo kontrolo. Izjemo sicer (lahko) ujamem v catch bloku, kjer je breakpoint in tako preverim okoliščine. Kot rečeno pa lahko traja zelo dolgo, da se sploh kaj zgodi. Med tem časom bi raje delal kaj pametnejšega, kot da čakam, da v taskbaru utripne Visual Studio (kar seveda spregledam in se zaradi tega zgodi še nekaj timeoutov povezanih z okoliščinami napake).

No, tu nastopi zdaj zvočni dogodek "Breakpoint Hit", na katerega sem si nastavil zvok, ki me opozori, da se je izvajanje ustavilo na breakpointu. Torej lahko zdaj med čakanjem mirno delam kaj drugega in mi ni treba stalno z enim očesom škiliti na VS.

Pri buildanju velikih projektov, ki lahko traja tudi več (deset) minut sta koristna zvoka "Build Succeeded" in "Build Failed". Tisti enterprise ninja developerji, ki imate continous build server farme in podobno, pa se gotovo ne ukvarjate s takimi trivialnostmi.

Aja, zvoke se nastavi v nadzorni plošči (primer Windows XP):

Control Panel -> Sounds and Audio Devices