Comments

In “The Go Programming Language Part 3” Rob Pike wrote 

” …

There are many concurrency questions. They will 

be addressed later; for now just assume it all 

works as advertised.

 

This is a good intro. Will definitely use it.  

Go?  
Yes, I also got that strange feeling about current bloat, and “no-fun” of modern programming languages. But I can’t say that Go will solve everything. Future Landing on Android and Native Client platforms could help.

I like it on first sight. It looks small, easy and simple on the front, and yet powerful in the back.

Like Google wants Go to be to programming languages what Google home page is to the web.

Still reading about it. Added to “track this” mail label. 

Comments

Unicode vlada. Već dugo su Windows .Net  i Java okruženja  zaživela na UTF-16 unikod kodiranju, dok na internetu najveći broj stranica koristi UTF-8. Iz ugla nekog čija kultura koristi i ćirilicu i latinicu, i koja se kao takva nikada nije uklapala u nekakve kodne strane, mogu reći - Napokon! Uz malo sreće i fontova i Š i Ш će biti prikazani na vašem ekranu. Ali kako će biti sortirani?  To je predmet ovog predloga. Dozvolite prvo da vam predstavim haos koji postoji sa srpskim jezikom i pravilima za sortiranje.

Srpski kroz internet vekove

Imamo oznaku “sr” za jezik. Koja je po ISO standardu postala ”sr_YU”, ali to je bilo ASCII vreme, pa su se pojavlie i ”sr_YU@Latin“  i  ”sr_YU@Cyrilic”. Onda je došao period sankcija gde je isplivao  ”sr_SP” uz  Latin i Cyrilic dodatak. Interesantno da je neko predpostavio da će Srbija dobiti SP kao ISO oznaku zemlje umesto YU, a ostali su prepisivali. I svi su pogrešili - dobili smo CS.  A uz to i ”sr_CS” (Windows i .Net 2.0) . Pojavio se i “Serbian (BIH)”.  Ove godine nakon osamostaljenja Srbije zaživela je, napokon, i ISO oznaka RS. Nisam video da se negde koristi sr_RS, pa sam ovde hteo da skrenem pažnju kako da se nova oznaka iskoristi da se dobije upotrebljivo rešenje u skladu sa jezikom.

ORDER BY Prezime COLLATE sr_RS

Većina sadržaja kojeg uopšte treba sortirati se nalazi u bazama podataka. Najveći igrači na tom polju su Oracle, Microsoft SQL Server, MySQL, IBM DB2 i drugi. Kada poželite da dobijete neki sortiran sadržaj, serveru se šalje ORDER BY komanda. Ako je navedena tekstualna kolona, server sortira podatke koristeći pravila za sortiranje (collation) . U praksi se navede podrazumevan collation kod kreiranja baze koji onda važi za sve tabele. Na posletku, ako želite da postavite colation na srpski, morate prvo da pronađete koji srpski želite (ako postoji!) i morate da se odlučite između ćirilice i latinice.   Ta odluka  uvek ide na štetu ćirilice. Pitate se zašto?  Uzvraćam pitanjem. Da li ste ikada videli srpsku ćiriličnu tastaturu? U unikod svetu to nije porebno. Evo zašto i kako.

Jedna korisnica je Ana a druga Ана.

Collation za ćirilicu i latinicu je razdvojen jer tako piše u pravopisu srpskog jezika. Odabereš pismo, i pišeš onim koji si odabrao. Razlog za to je praktičan - ako napišem CABA, da li sam napisao Sava? ili na Цабa?  Sa druge strane internet dozvoljava da i ćirilica i latinica završe u istoj bazi. Iako slova isto izgledaju, unikod ispod haube vrlo dobro zna da li pišem ćirilicom ili latinicom. Naime u unikodu a (latinično) i а (ćirilično) su dva totalno različita slova koja se nalaze na različitim pozicijama u fontu. Isto izgledaju, ali su to dva različita znaka.

sr_RS kao rešenje i spas

sr_RS treba da bude sortiranje koje uzima u obzir i latinicu i ćirilicu. U isto vreme i bez razdvajanja. Možemo dati prednost ćirilici da ide uvek prva. Ili da zagrizemo i napravimo mešan sort azbuke i abecede, ali mi se to čini ipak predaleko. Sa ćirilicom i latinicom sr_RS bi takođe bio način da sprečimo da internet potpuno ubije srpsku ćirilicu. Nadam se da će ovo pročitati i timovi koji rade prevođenja i implementacije vezane za srpski jezik, jer očigledno je da ovde postoji još mesta za raspravu. Ali kratku i efikasnu. Srpski jezik zaslužuje sistemski, a ne stihijski tretman.
Comments

LINQ je već tu, a Entity Framework je u završnoj fazi, i trebalo bi da se finalna verzija uskoro nađe u sastavu SP1 za net 3.5 kao i SP1 za Visual Studio 2008. Obratite pažnu - obe tehnologije će biti u srcu i Visual Studija i DotNeta. Ali zašto je Microsoft odlučio da da baš ove tehnologije dobiju prioritet? Da bi možda bili bliže odgovoru, hajde da probamo da razumemo zašto je SQL postao “loš” momak.

SQL u poslovnim aplikacijama

SQL je nastao u IBM-u još 1970. To znači da je stariji od većine učesnika jučerašnjeg “MSDN day” skupa, a, boga mi, i predavača. SQL ima 300 internet godina, a opet je okosnica celokupnog današnjeg poslovnog softvera. SQL živi iza skoro svakog sajta na internetu, iza gotovo svake poslovne klijent-server aplikacije. Jasno je da će SQL još dugo, dugo biti sa nama. Sa druge strane, stvari na polju softvera su dosta napredovale. Od C-a se došlo do Jave i C# i Rubija. Internet Explorer, FireFox, Safari su novi terminali. To je upravo taj nesklad - SQL se i u najmodernijim programski jezicima i dalje pojavljuje kao čist tekst, odnosno string. To nije dobro. Prvo zbog sigurnosti; Dovoljno je da neko zlonamerno ubaci svoj SQL string uz vaš, i da vaši podaci postanu nesigurni. Baš ova metoda napada je dosta česta i poznatija je kao SQL Injection. Sadržaj stringa će vaš kompajler uzeti zdravo za gotovo. Ako ste vi ili neko drugi izmenili naziv nekog polja u bazi, vaš do juče ispravni SQL će prijaviti grešku - ali tek kada taj string stigne do SQL servera. To može biti u test proceduri, a može biti i u produkcionoj verziji kod korisnika. Ne manje bitna stvar je da sadržaj stringa ne podržava IntelliSense tehnologiju. Ako imate nekoliko stotina tabela, pogleda, procedura, ili ako te tabele i njihova polja razvija neki drugi tim - taj nedostatak će sigurno usporiti razvoj.

LINQ i Entity Framework u pomoć

LINQ, odnosno LINQ to SQL rešava jedan deo problema. Vaš upit nije više string, već postaje ravnopravan dotnet kod. I SQL je tu, ali se generiše i izvršava u pozadini. A Entity Framework ide i korak dalje. On će vam predstaviti model baze kao model objekata sa relacijama. Vi pišete nešto kao Order.Partner.Adress sa tim da posle tačke na Order, dobijete Intellisense listu sa poljima iz Orders tabele, uključujući i objekat Partner sa podacima o partneru. Order je entitet a Orders kolekcija. Gospodin Dragoslav Ogar je na prezentaciji efektno prikazao i kako se takav kod ponaša kada se samo promeni konekcija na drugu bazu, kako radi Intellisense i kako se brzo mapiraju veze. Takođe smo u SQL profajleru mogli videli kako se entiteti pretvaraju u SQL i kako izgleda SQL koji stiže na SQL server.

Šta koristiti?

Obzirom da je LINQ jedna og udarnih stvari novog dotnet okruženja, i da će Entity Framework biti u srcu verzije 3.5 SP1, jasno je da je postavljen nov pravac kako će aplikacije “razgovarati” sa SQL serverima. Pre svih - poslovne aplikacije. Sa druge strane Entity Framewok još nije u finalnoj verziji. To se videlo i na prezentaciji, gde je napomenuto da neki tipovi podataka nisu podržani. Dodat je još jedan, ORM sloj između korisnika i podataka. Da bi sve radilo kako treba, neophodna su mapranja, odnosno XML fajlovi u kojima stoji kako se podaci iz baze preslikavaju na entitete i kolekcije. Ta mapiranja imaće svoj dizajner u najnovijem Visual Studiju. Dakle ostaje da nove tehnologije povlače za sobom prelazak na nove alate. Najnovije, najnovije, najnovije… Konačan sud doneće korisnici, odnosno razvojni timovi širom planete. Ja sam lično ubeđen da SQL lagano odlazi putem asemblera i C-a – prisutan ali sakriven od većine.

Trivia za kraj

Imao sam tu sreću da početkom devedesetih budem srednjoškolac u IV Beogradskoj gimnaziji, na matematičko-programerskom smeru. Tada je na neki od računarskih predmeta došao mlad profesor, za koga su svi tvrdili da stvarno nešto zna o programiranju. I ne samo to. Bio je glasan, ali je umeo da debatu vodi tako da nestane klasičan odnos profesor-učenik. Takođe je imao dovoljno neobično prezime koje je odmah postalo i nadimak - Ogar. MSDN predavanje je, bar za mene, bilo i krajnje simpatičan flashback. I gle, sad imam pred sobom MS papir da ocenim predavača i predavanje. I to ocenom od 1 do 5! Hm, kako život okreće stvari. Čista petica - naravno. Bilo mi je zadovoljstvo biti prisutan.
Comments

Na prvom mestu je škola. Ne kao dokaz da znate sve, nego jednostavno  ne smete sebi dozvoliti da vas odbace a da vas nisu videli. Znam da svi traže kandidate do 24 godine, sa završenim ETF-om i 5 godina iskustva u svim poznatim tehnologijama. Ali takođe znam da je praksa drugačija: Najbolji sa ETF-a ili PMF-a će dobiti vize pre nego diplome, a oni ostali će potražiti visko plaćene poslove u bankama, osiguranjima, vladi… Ovo ostavlja sve ostale firme otovrene za vas i vaš CV.  Ako se još dvoumite, pravac www.vets.edu.yu ili www.eposlovanje.org. “Inženjer”  zvuči više nego ok i vodi vas u drugi krug.  

Na drugom mestu su znanja koja ste stekli mimo škole, a imaju nekakve veze sa konkretnim poslom. Naravno da većinu ljudi koji budu čitali vaš CV neće zanimati da imate veštinu ronjenja iz izviđača. Ali ako se firma bavi opremom za ronjenje, to može da bude nešto što će prevagnuti u vašu korist. Takođe u poslednjih nekoliko godna se razvilo tržište sertifikata za razne softverske pakete  (n. pr. Microsoft), a iz pouzdanih izvora se saznaje da slične sertifikate pripremaju i neki domaći proizvođači softvera za svoje pakete.  Znate još neki jezik mimo engleskog?  Takve stvari su uvek plus u vašem CV-u.  

Imate li nešto na šta možete pokazati prstom? Adresar rađen u  nekom programskom jeziku? Postavili ste mrežu kod rođaka u firmi? Imate sajt? Preveli ste neki strani softverski alat na srpski?  Učestvujete u nekom open source projektu? To je treća stavka.  Ako su prve dve stavke odbrana da vas ne odbace, ovo može biti stvar zbog koje će neko hteti da vas vidi. Ovakvim stvarima pokazujete interesovanje i spremnost da aktivno učestvujete.

Odaću vam malu tajnu. Sve firme imaju svoje ustaljne poslovne procese. I jedino što traže od novih ljudi je da ih brzo razumeju, da ih ne kvare i da ih pamentno upotrebe. Probni rad je jedini pravi način da se proveri čovek, ali je zadatak ljudi koji razgovaraju sa kandidatima da izaberu najadekvatnije i eliminišu lošije kandidate.  Morate zadržati fokus na onome što se traži. Nemojte dozvoliti da se neke nevažne stvari iz CV-a protumače negativno.

Timski rad je peta i najvažnija stvar koja treba da se vidi u vašem CV-u. Ako bolje pogledate razred u školi, ili smer na fakultetu - to je jedna vrsta tima. Polaznici kursa su tim.  Projekti su delo tima. Fokus na zadatak je timska igra. Firma je tim. Uklopiti se u tim znači povećanje kreativne atmosvere u korist svih. Prvi red vašeg CV-a mora da znači ste spremni da u drasu ekipe istrčite na tržište.

Pre nekoliko dana smo o ovoj temi i pričali na sastanku. Dobri ljudi trebaju.  Ne menjajte kanal.  Kada bude zvaničan konkurs, obajviću detalje i ovde. Možda se i vidimo.