Google Code Jam 2006 – finale

Google Code Jam

Jedna od mnoštva akcija koje Google sprovodi je i Code Jam – programersko takmičenje uz tehničku podršku Top Coder sajta.

Ovogodišnje takmičenje je počelo 14. avgusta a završava se 27. oktobra u Njujorškoj Google centrali, gde će se najboljih 55 takmičiti za nekih 155,000$ u nagradama.

Ono što je vrlo interesantno je spisak finalista ili tačnije, njihova demografska struktura:

Rusija i istočna Evropa   32
Zapadna Evropa, VB, SAD, Kanada   14
Kina   6
Ostali   2
Hrvatska   1

Nekako sam očekivao poplavu indijskih a zatim i kineskih programera, ali su programeri istočne Evrope i posebno Rusije (20 njih) apsolutno dominantni.

Ne znam kako da objasnim ovo, ali mi nekako prija (valjda po slovenskoj liniji ;)) kada vidim ovakve rezultate 🙂

Knjiga “Operativni sistemi: UNIX i Linux” – besplatno preuzimanje!

Operativni sistemi: UNIX i Linux
U nesvakidašnjem potezu (barem na ovim našim prostorima) moj prijatelj i kolega, Dragan Pleskonjić, stručnjak za operativne sisteme i sigurnost, je svoju knjigu:

Operativni sistemi: UNIX i Linux

dao javnosti kao besplatan download (na gornjem linku je detaljan sadržaj knjige kao i link za preuzimanje).

Pokriveno je mnoštvo oblasti: istorijat, pregled Unix/Linux operativnih sistema, uređaji, sistemi datoteka, shell, Midnight Commander, rad sa mrežom, rad sa štampačima, arhiviranje i backup, itd.

Knjiga je zaista dobra i ako vas ova oblast zanima, preporučujem skidanje, i naravno kupovinu papirne verzije 🙂 (tj. ja recimo zaista dobre knjige na kraju kupim i u papirnom obliku, bez obzira da li ih imam u elektronskom obliku).

Google Code Jam Europe – programersko takmičenje

Google Code Jam Europe

U potrazi za najboljim programerima, Google se baca na Evropu ovog puta – sponzoriše Code Jam Europe 2006.

Prijava za takmičenje je od 1. do 23. maja; 4 runde:

  • kvalifikaciona (23. maja)
  • runda 1 (30. maja)
  • runda 2 (3. juna)
  • finale (29. juna)

Imate na raspolaganju tri moguće oblasti (jezika): C++, Java i C# a tu su i fine nagrade 🙂

Šta čekate? 🙂

Vaš virtuelni računar … besplatno … 2x :-)

Kažu da je konkurencija zdrava stvar – evo jednog primera gde zaista jeste 🙂 Naime, za manje od dva meseca, dva proizvoda namenjena virtuelizaciji (izvršavanju operativnih sistema kao da su obične aplikacije) postali su besplatni!

VMWare je 06. 02. 2006. objavio da VMWare Server postaje besplatan a već 03.04.2006. Microsoft povlači sličan potez i proglašava njihov Virtual Server 2005 R2 besplatnim 🙂

Pa, ako ste programer ili zahtevni korisnik, izaberite vaš porok 🙂 i prionite na download 🙂

Više detalja o samim programima imate u sekciji Programi:

1. VMWare Server

2. Microsoft Virtual Server 2005 R2

O logopedima i udarnicima – www.radionica.co.yu

Retko koji članak odslika moja duboka profesionalna unutrašnja uverenja tako verno, kao da mi je neko napravio snapshot u glavi; ovo je jedan od tih:

O logopedima i udarnicima

Osim poražavajućeg osećaja da ispravljate tuđe greške i poražavajućeg osećaja da radite isti posao koji je neko pre vas već radio, ispravljanje tuđih “herojskih podviga” sa sobom nosi i rizik da menadžeri obrnuto percipiraju vaše uloge u proizvodnji i udarnika vide kao onog efikasnog, koji gura proizvod napred, a ostale kao one ko manje-više ne rade ništa i stalno nešto zakeraju.

Vrlo topla preporuka da, ako ste na bilo koji način vezani za softversku proizvodnju, pročitate članak … više puta.

.local protiv DLL Pakla

Ako je vaš posao ikada uključivao petljanje sa Windows DLL bibliotekama ili ne-daj-bože COM aplikacijama, sigurno ste iskusili ono što se zove DLL Hell – problem koji se dešava kada deljeni DLL instalacijom nove aplikacije bude pregažen sa lošom (starijom) verzijom i time napravi vašu aplikaciju nestabilnom ili totalno neupotrebljivom.

Microsoft je naravno svestan ovih problema, pa je (prvi) pokušaj za rešavanje ovog problema (ili za rešavanje dela problema): Dynamic-Link Library Redirection – praktično, prvo mesto na kome će LoadLibrary pokušati da locira traženi DLL je lokalni direktorijum same aplikacije.

Ovim se rešavaju problemi sa deljenim “statičkim” tj. ne-COM DLL-ovima; problem sa COM-ovima je bez obzira na lokaciju (možete imati više COM servera na raznim lokacijama na disku) registracija COM servera se nalazi samo na jednom mestu (u Registry bazi) i poslednja registracija će biti važeća.

Da bi ovo razrešio, MS uvodi od Windows 2000 potpunu redirekciju, koja se sada odnosi i na delimično poređenje imena fajla (praktično se odnosi i na imena COM server aplikacija) – ako za vašu app.exe kreirate datoteku app.exe.local (sadržaj same datoteke nije bitan), Windows će sve (obične DLL ili COM datoteke) prvo tražiti u direktorijumu aplikacije – ovo je najbolji način da izbegnete bilo kakve probleme sa verzijama DLL-ova: sve što vam treba držite kod sebe.

(ovo je iskorišćeno kao osnova za više IE instalacija na istoj mašini – a must za bilo kog ozbiljnog web developera)

Od Windows XP/2003 ponašanje je malo promenjeno – ako je app.exe.local datoteka, ponašanje ostaje kao gore opisano; međutim ako je app.exe.local direktorijum, traženje DLL-ova će prvo početi od tog direktorijuma – jako zgodan način za lokalizaciju deljenih datoteka.

Nadgradnja svega ovoga je upotreba manifesta ili Isolated Applications and Side By Side Assemblies (praktično kopija metodologije upotrebljena u .Net svetu), ali kako ovo nisam praktično probao, iskoristite gornji link za više detalja.

Fina kolekcija programa @ Vesic.Org

Posle duže pripreme, jedan od mojih malih velikih ličnih projekata je počeo svoj život:

Fina kolekcija programa @ Vesic.Org (http://www.vesic.org/programi/)

ambiciozno zamišljen kao jedinstvena referenca za software koji vredi imati i koristiti, sa posebnim akcentom na Open Source i besplatne programe.

Ovo neće biti yet-another-list-software-site niti lista koja će brzo rasti – uslovi da se program pojavi ovde je da sam srećni korisnik istog više meseci, kao i da prođe strogu moderaciju (moju :)). Naravno, i vaše preporuke će biti uvažavane i objavljivane.

Format liste je blog, tako da je možete pratiti i preko vašeg omiljenog čitača: RSS link.

Dobrodošli 🙂

HTTP debug alati – Fiddler i HttpSpy

U uobičajenom poslu web developera posmatranje saobraćaja između web pregledača (browsera ;)) i servera je maltene dnevni posao – da li su svi elementi na mestu (404 greške), koje su veličine objekata koji se učitavaju, šta dolazi iz keša browsera a šta se dovlači, koliko HTTP zahteva je potrebno za stranu – sve ovo bitno utiče na odziv i svekupni utisak vaše web aplikacije.

Za gornje zadatke postoji mnogo komercijalnih proizvoda, da pomenem možda najpoznatiji Http Watch – dodatak za IE browser i sa cenom od 249$ (jedna licenca) pa sve do $9950 (kompanijska licenca).

No, ja sam veliki poklonik Freeware i Open Source rešenja, pa se trudim da za većinu poslova (i uspevam) nađem alternative komercijalnim rešenjima. Tako je i ovde:

U početku sam koristio HttpSpy – ovo je više klasičan proxy, koji se postavlja između browsera i servera i hvata sav saobraćaj. Moćna mogućnost ovog programa je simulator modema – smanjivanje brzine konekcije između 14.4k i 256k – na broadband konekcijama (za Srbiju je to 128/64 Kbps ;)) se lako zaboravi na 33kbps klijente – ovo toplo preporučujem u dizajn fazi programa a ne u finalnoj. HttpSpy i dalje koristim kada je potrebna provera za modemske korisnike.

Sada je pravi izbor, teška kategorija, Fiddler– HTTP debugging proxy. Napravljen od strane Microsofta, daleko je od prostog proksija – sem što “hvata” http saobraćaj, parsira ga i prezentuje, omogućava direktnu promenu request/response parova!

Fiddler podržava JScript.NET jezik – uz pomoć prostog event modela, možete se nakačiti na saobraćaj i ispitivati/menjati sadržaj i tako daleko, daleko brže naći i otkloniti problem u vašem kodu. Evo nekoliko jednostavnih primera:

1. Pretvaraj se da je upit došao od Google boot-a:

Event: OnBeforeRequest

Skript: oSession.oRequest["User-Agent"]="Googlebot/2.X (+http://www.googlebot.com/bot.html)";

2. Zabrani učitavanje CSS fajlova:

Event: OnBeforeRequest

Skript:

if (oSession.url.toLowerCase().indexOf(".css")>-1){
    oSession["ui-color"]="orange"; 
    oSession["ui-bold"]="true";
    oSession.oRequest.FailSession("CSS file");
}

Gomilu ovakvih primera imate i ovde – ScriptSamples biblioteka.

U svakom slučaju, kada jednom probate Fiddler, pitaćete se kako ste bez njega uopšte radili 🙂

Referenca:

  1. Fiddler – – Freeware, HTTP debugging proxy, analiza i mogućnost izmene http saobraćaja, samostalna aplikacija, potreban .Net framework
  2. HttpSpy – Freeware, HTTP proxy, hvatanje http saobraćaja i mogućnost simulacije nižih brzina prenosa, samostalna aplikacija, potreban .Net framework
  3. Http Watch – komercijalni, 249$ – 9950$, dodatak za Internet Explorer

Visual Studio .Net – Linije vodilje u tekst editoru

Visual Studio .Net 2003 je odličan IDE (Integrated Development Environment) sa velikim brojem konfiguracionih ekrana i opcija koje prilagođavaju okruženje vašim željama.

Za one kojima to nije dosta 😉 postoje i parametri koji su blago skriveni – podešavaju se kroz Registry.

Jedan od simpatičnih su Guidelines za Visual Studio tekst editor:

Visual Studio Linije vođice

jednostavan način da proverite da li je uvlačenje koda sasvim ok.

Da bi iskoristili ovo, kreirajte dokument u bilo kom tekst editoru, i nazovite ga recimo VisualStudio200x-GuideLines.Reg. Sadržaj datoteke je:



Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio7.1Text Editor]
"Guides"="RGB(128,0,0) 12, 24, 48"

[HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio8.0Text Editor]
"Guides"="RGB(128,0,0) 12, 24, 48"


(ovo je za obe verzije Visual Studija: 2003 i 2005 Beta 2 i očigledno je podešavanje boja kao i raspored linija).

Zatvorite Visual Studio ako je aktivan; duplim klikom na ovu datoteku unesite ove izmene u Registry.

Ako poželite da sklonite ovu opciju, evo datoteke (recimo VisualStudio200x-GuideLines-.Reg):



Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio7.1Text Editor]
"Guides"=-

[HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio8.0Text Editor]
"Guides"=-


Uzged, ono gore je način za ukidanje vrednosti iz određene grane Registry-ja preko fajla; format je:

Registry-Grana
“Ime ključa”=-