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.

13.3.2006

Programiranje

Dejan VesićComments (0)

LibCheck i XSDObjectGen (.Net)

U svakodnevnom programerskom poslu sledeća dva alata koristim redovno:

1. LibCheck

Omogućava poređenje razlika između dve verzije asemblija na nivou API-ja. Ovo nije magičan alat: jednostavno gleda specifikaciju javnih metoda i svojstava iz manifesta oba asemblija i poredi ih – ne radi se analiza koda ili nešto slično.

Ipak, dobro dođe kada vaša aplikacija zavisi od biblioteke drugog programera ili drugog tima – kada dobijete novu verziju, na brzaka možete da proverite šta je promenjeno u odnosu na staru i da procenite koliko će te promene boleti :) vašu aplikaciju.

2. XSD Object Code Generator

Na osnovu XML šeme (XSD datoteka) generiše klase (C# i VB.NET) koje predstavljaju opisane objekte u šemi (nešto kao XSD.EXE iz Visual Studio paketa, ali bolje).

Link do datoteke: http://www.microsoft.com/downloads/details.aspx?FamilyID=89e6b1e5-f66c-4a4d-933b-46222bb01eb0&DisplayLang=en

26.2.2006

Alati

Dejan VesićComments (0)

.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.

16.2.2006

Programiranje

Dejan VesićComments (0)

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 :-)

4.2.2006

Programi,Programiranje,Video i PC

Dejan VesićComments (2)

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

7.10.2005

Programi,Programiranje,Web

Dejan VesićComments (0)

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_USER\Software\Microsoft\VisualStudio\7.1\Text Editor]
"Guides"="RGB(128,0,0) 12, 24, 48"

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text 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_USER\Software\Microsoft\VisualStudio\7.1\Text Editor]
"Guides"=-

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text 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”=-

2.9.2005

Programi,Programiranje

Dejan VesićComments (1)

LoanCalculator za Siemens SK65

Loan Calculator za Siemens SK65 Od nedavno sam vlasnik finog, teškog :-) i elegantnog telefona, Siemens SK65.

Telefon sa dosta memorije (64 Mb, od toga dostupno korisniku 35Mb), odličnim delom za PIM (Personal Information Manager) koji se sinhronizuje sa Microsoft Outolook-om, i intuitivnim sistemom menija. Pokazao se kao savršeni kandidat za zamenu već ostarelog Handspring Visor Deluxe, Palm kompatibilnog uređaja.

Ono što mi je na novoj platformi nedostajalo su mali programčići za svakodnevne zadatke. Na sreću, SK65 podržava Javu za mobilne uređaje – Java 2 Platform, Micro Edition (J2ME) i za većinu programa sam našao freeware ili open source J2ME zamenu; no, za jedan, Loan Calculator, nisam uspeo, a u današnje vreme tako nešto je neophodno ;-)

Kako odavno nisam učio nešto novo, neku novu platformu / jezik, ovo je bila super prilika i rezultat je pred vama: LoanCalculator, J2ME (CLCD 1.1 i MIDP 2.0), program koji za dati iznos, visinu kamate i period kredita izračunava mesečnu ratu, deo koji uzima banka
kao i ukupan iznos otplate kredita. Testiran je kako u emulatoru, tako i u samom telefonu i trebalo bi da radi na svim Siemens telefonima serije 65, kao i na drugim telefonima koji imaju podršku za J2ME (CLCD 1.1 i MIDP 2.0).

Datoteka je ovde: LoanCalculator.zip: ZIP sa .jar i .jad datotekama, 5kb

Za razvoj sam koristio:

  • Eclipse razvojno okruženje
  • EclipseME , Eclipse dodatak za razvoj midleta (mobilnih aplikacija)
  • Ant i Antenna za generisanje finalnih Jad i Jar fajlova

22.3.2005

Programiranje

Dejan VesićComments (3)

ASP.NET projekti i sistemi za verzionisanje koda – opustite se :)

.Net je po meni nešto najbolje što je izašlo iz Majkrosoft kuhinje za programere.

Iako je koncept među-koda (p-code, intermediate code) veoma star, MS ga je podigao na jedan viši nivo (verujem da mu je Java u tome puno pomogla ;) ), donoseći jako udobnu i efikasnu platformu za rad.

Sad, naravno da nije savršena (neki bi rekli da je to nemoguće, kada je od Majkrosofta ;) ) ali je ogroman pomak u odnosu na Win32 / Visual Studio 6 SP 6 kombinaciju. Visual Studio .Net 2002 a zatim i Visual Studio .Net 2003 su udobna (premda malo sporija) okruženja gde se najveći broj uobičajenih zadataka odrađuje jednostavno / intuitivno.

Problemi nastaju kada je situacija malo komplikovanija – čitaj, koristi se neki od sistema za kontrolu izvornog koda (SCC – Source Code Control sistemi) kao što su Visual Source Safe, Source Of Site, Perforce, SubVersion itd – VS.NET tada zna da bude jako svojeglav kada se radi o kontroli ASP.NET projekata – te mu treba prazan virtuelni folder, te ima problema sa dovlačenjem celog Solutiona, ako postoji virtuelni folder to ga boli …

Sa druge strane, odustajanje od ASP.NET projekata i korišćenje standardnih Class Library projekata rešava ove probleme, ali se gubi udobnost ispravljanja (debagovanja) ASP.NET projekata na prirodan način, kao i ugrađenih čarobnjaka za forme i korisničke kontrole (User Controls).

Na sreću, postoji rešenje koje miri oba zahteva: izbeći SCC kontrolu ASP.NET projekata kako je MS to zamislio, a zadržati sve ostalo:

ASP.NET Applications without Web Projects

Po cenu malo ručnog dorađivanja konfiguracionih fajlova samog Visual Studija dobijate daleko udobniji rad sa ASP.NET projektima, gde je potpuna kontrola o smeštanju datoteka u virtualne direktorijume samo vaša (Aleče, ovo je za tebe ;) )

4.3.2005

Programiranje

Dejan VesićComments (1)

Ulepšajte XML

Vrlo često se dešava da u svom dnevnom poslu radim sa XML datotekama, nastalim kao rezultat rada nekog servisa ili programa.

Te datoteke su najčešće bez preloma redova, bez uvlačenja paragrafa, samo jedna veeelika linija teksta koja nosi svu informaciju. Ovo, naravno, ne smeta mašinama kod obrade takvih datoteka, no smeta meni, malo ;) , kao običnom smrtniku, posebno kod poređenja dve verzije istog fajla – u originalnom formatu je to nemoguće uraditi.

Sad, većina editora namenjenih radu sa XML-om imaju mogućnost “ulepšavanja” XML koda, i to je sve lepo i fino ako radite nad jednom, dve … do 5 datoteka. Šta raditi ako je pred vama direktorijum (da ne kažem “fascikla”, daleko bilo ;) ) sa stotinak datoteka koje treba pregledati?

Programer bi prvo posegao za “napisaću program za to”, ali to najčešće nije racionalno; bolje uposliti vijuge i dođi do jednostavnog rešenja, brzo.

Problem: kako od nečitljivog XML-a dobiti čitljiv (po ljudima) XML?
Rešenje: transformacijom polaznog u ciljni XML, sa željenim formatiranjem
Tehnologija: XSLT, ili prirodni jezik za transformacije XML fajlova u nešto drugo

Iako XSLT smatram jednim od najružnijih ikada napisanih skript jezika (a nagledao sam ih se), za ovu svrhu je i više nego pogodan. Potrebne su dve stvari:

1. XSLT datoteka sa instrukcijama za izvođenje transformacije (MakePretty.XSLT) – u ovoj datoteci je upravo celo rešenje:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Ulepšavanje XML coda -->
<xsl:output method="xml" indent="yes" /> <!-- indent="yes" je ključno -->
<xsl:template match="*">
   <xsl:copy>
      <xsl:copy-of select="@*" />
      <xsl:apply-templates />
   </xsl:copy>
</xsl:template>
<xsl:template match="comment()|processing-instruction()">
   <xsl:copy />
</xsl:template>
</xsl:stylesheet>

2. Način da izvedemo transformaciju:

Predlažem NXSLT, jako dobru konzolnu aplikaciju Olega Kačenka (nisam siguran kako se piše ime na srpskom :? ). Sada se obrada celog direktorijuma sa XML fajlovima svodi na:

for %i in (*.xml) nxslt.exe “%i” MakePretty.XSLT -o “out\%i”

(pretpostavka je da želite sve datoteke konvertovane u isto ime u poddirektorijumu out)

Update, 15.01.2005 – Način 2

Zahvaljujući Danilu (hvala Danilo :) ), evo još jednog alternativnog načina za isti posao:

LibXML, odlična biblioteka, i deo te instalacije je xmllint; jedno „xmllint –format“ će odraditi posao.
Ovde je Win32 implementacija.

29.12.2004

Programiranje

Dejan VesićComments (3)

RentACoder, Guru – dodatni prihod za IT profesionalce

Uobičajeno pitanje u IT vodama je kako zaraditi dodatni novac, bez peripetija koje donose dva redovna posla :) U našim krajevima je to još uobičajenije pitanje ;) Jedan od odgovora je korišćenje usluga sajtova koji se postavljaju kao posrednici između onih koji nude IT usluge i onih kojima su te usluge potrebne…

U vreme IT boom-a (1998 – 2000) broj sajtova koji su se bavili ovim poslom je bio ogroman; no, kako se IT balon tada izduvao, tako su ostali samo najiskusniji i najozbiljniji – RentACoder i Guru. Moja iskustva sa RentACoder-om su dobra, i toplo ga preporučujem kao mogući izvor dodatnog prihoda.

RentACoder
Prijava na RAC-u je besplatna; potrebna vam je važeća mail adresa i to je to uglavnom. Odmah po prijavi možete učestvovati u nadmetanju za jedan ili više poslova po principu aukcije: kupci ostavljaju opis posla koji treba odraditi, a onda registrovani programeri pokušavaju da osvoje posao, pokušavajući kupca da ubede da su baš oni pravi izbor i da daju najbolji odnos cene/kvaliteta rezultata.

Za posredovanje između zainteresovanih strana RAC uzima najčešće 15% ili 3 US$ (šta je veće); u slučaju da se radi o doradi starog posla, onda je ovaj procenat 10%. Tu su i troškovi isplate, o tom malo kasnije.

Kao i svuda, svaki početak je težak – pokušaću da vam pomognem savetima:

  • Pročitajte tekstove za kodere – pisali su ih iskusni RAC korisnici, i u njima ćete naći korisne i praktične savete
  • Pripremite dobro vaš rezime – to je vrlo često odlučujuća stavka kod neodlučnih kupaca
  • Budite jako uporni – potrebno je i 10 – 20 pokušaja dok se neko ne odluči za vas prvi put
  • Prve poslove (tačnije, prva tri) nudite po smešnim ciframa, odradite ih profesionalno i zamolite naručioca da oceni vaš rad – potrebna vam je što bolja pozicija za ozbiljnije poslove
  • Gledajte da konkurišete samo u oblastima gde ste zaista jaki; pokušaj žongliranja vam može samo doneti loše ocene.
  • Trudite se da zahteve za posao dobro razumete; tražite dodatne informacije sve dok niste sigurni da ste raščistili sve nejasne stavke – mnogo je bolje da tu ode malo vremena, no da potcenite potrebno vreme za izradu posla.

Kada prikupite novac, treba da odlučite kako želite da vam bude dostavljen; RAC nudi nekoliko opcija, od kojih su na nas praktično primenljive samo dve:

  1. Slanje čeka poštom
    Cena slanja čekom je 10 US$; kada ček stigne, odlazite u vašu omiljenu banku i dajete ček na naplatu; to će vas koštati dodatnih 1 – 2% kao i barem 3 nedelje dok se ček ne naplati. Ako se radi o većem iznosu, preporučujem da izaberete Priority Mail varijantu, koja će vas koštati još 26 US$, ali će stići daleko brže i daleko sigurnije no obična pošta
  2. Western Union
    Troškovi su 10$ + cena WU usluge koja uopšte nije mala: na 500 US$ ćete platiti 40$ troškova (na manje iznose ide i do 16%), plus će vam isplata biti u evrima, po internom WU kursu koji je obično niži no redovan kurs :( No, to je cena za brzu uslugu – do novca stižete za 10tak dana, bez jurenja po bankama.

Isplata novca ide do dva puta mesečno (sredinom i krajem meseca); možete lako podesiti da se ne isplaćuje preko nekog minimalnog iznosa (preporučujem) da bi smanjili ukupne troškove.

Ako imate viška slobodnog vremena a manjak slobodnih sredstava, obavezno probajte – vrlo često se dešava da RAC bude mesto gde ćete susresti vašeg sledećeh poslodavca, uspostaviti dobar odnos i krenuti u posao van RAC sajta i uslova.

26.9.2004

Posao,Programiranje

Dejan VesićComments (2)

« Previous Page