[ S A J A @ 07.03.2015. 20:55 ] @
Kad imam neku klasu i želim da je "spakujem" u string i upišem u bazu... a posle i obrnuto onda koristim:

Code:
Dim x As New ImeKlase
JSON.Serialize(x)   ili   x = JSON.Deserialize(Of ImeKlase)(string)


I to super radi kad je izvan klase ali sad mi to treba UNUTAR klase

Kad hoću da snimim u bazu onda mi lepo radi

Code:
JSON.Serialize(Me)


ali kad hoću da pročitam vrednosti iz baze, u okviru New() procedure

Code:
Me = JSON.Deserialize(Of ImeKlase)(string)


neće da radi... kaže: 'Me' cannot be the target of an assignment.

Dakle ne mogu unutar klase da dodelim propertise iz nekog nelogičnog razloga.

Naravno, mogu da nabrajam jedan po jedan

Code:
Me.Property1 = JSON.Deserialize(Of ImeKlase)(string).Property1 
Me.Property2 = JSON.Deserialize(Of ImeKlase)(string).Property2 
Me.Property3 = JSON.Deserialize(Of ImeKlase)(string).Property3 


i TAKO RADI ali bih to da izbegnem. Jel postoji neki način?
[ Shadowed @ 07.03.2015. 22:50 ] @
Mozes unutar klase dodeliti vrenosti preoperty-ima, sto si u poslednjem code segmentu i pokazao.
Ono sto ne mozes da uradis je da uredis dodelu na "Me" iz sasvim logicnog razloga - Me referencira trenutnu instancu i cak i da ti dozvoljava da upises tu nesto, jedino bi ti ta "promenljiva" Me ukazivala na tu novu instancu, sve ostale bi i dalje ukazivale na isto sto su i pre. Pri tome bi pokvario funkcionalnost Me-a.


Sta je JSON? Koja je to klasa? Mozda moze nesto sa njim da se uradi da ti obavi stvar kako treba..
[ S A J A @ 08.03.2015. 08:53 ] @
Citat:
Shadowed: Mozes unutar klase dodeliti vrenosti preoperty-ima, sto si u poslednjem code segmentu i pokazao.
Ono sto ne mozes da uradis je da uredis dodelu na "Me" iz sasvim logicnog razloga - Me referencira trenutnu instancu i cak i da ti dozvoljava da upises tu nesto, jedino bi ti ta "promenljiva" Me ukazivala na tu novu instancu, sve ostale bi i dalje ukazivale na isto sto su i pre. Pri tome bi pokvario funkcionalnost Me-a.


Sve jedno, glupo su to napravili. Ako može jedan po jedan onda su mogli da stave i da mogu svi odjednom. Ovako moram da nabrajam, em što ružnim kod em što posle ako budem nešto dodavao moram na više mesta.

Citat:
Shadowed:Sta je JSON? Koja je to klasa? Mozda moze nesto sa njim da se uradi da ti obavi stvar kako treba..


To je neki format da zapišeš objekat u string (i obrnuto). http://en.wikipedia.org/wiki/JSON

Na primer, imaš

Code:
Person p = new Person();
p.name = "John";
p.age = 42;


i od toga se dobije:

Code:
{“age”:42,”name”:”John”}


Odlično za sitne stvari...

Na primer ove kontrole koje ja koristim za projekat koji radim (Ext.Net) imaju tu JSON funkciju gde sve mogu da pretvaram sa velikom lakoćom a koliko vidim, nešto slično ima i u Frejmvorku (samo naravno iskomplikovano).

Na primer, u Ext.Netu napravim celu formu za unos (gomila kontrola koje korisnik treba da popuni: textboxovi, comboboxovi, checkboxovi itd...). Kad klikne na Save dugme, sve dobijem u u JSON stringu pa samo "zalepim" za objekat.

Code:
<ext:Button runat="server" ID="SnimiIzmeneButton" Text="Snimi izmene">
      <DirectEvents>
            <Click OnEvent="SnimiIzmene" Success="dirtyreset();">
                    <ExtraParams>
                          <ext:Parameter Name="Values" Value="App.Form.getForm().getFieldValues()" Mode="Raw" />
                    </ExtraParams>
            </Click>
      </DirectEvents>
</ext:Button>



Code:
Protected Sub SnimiIzmene(sender As Object, e As DirectEventArgs)

       Dim Par As New PartnerClass
       Dim JSONString = e.ExtraParams("Values")

       Par = JSON.Deserialize(Of PartnerClass)(JSONString)          
       Par.SnimiIzmene(True)

End Sub
[ dusans @ 08.03.2015. 09:26 ] @
Dodela vrednosti Me odnosno this "promenljivoj" nema nikakvog smisla
i to je valja jasno čim si se dohvatio VB.net-a, C#...

Problem je jedino do JSON ili kako se već zove klasa koju koristiš za deserijalizaciju.
Shadowed je pitao (zna on dobro šta je JSON kao format) ali nisi napisao koju klasu koristiš.
Da li je to https://msdn.microsoft.com/en-...tserializer%28v=vs.110%29.aspx ili neka druga?

Dakle, ako tvoja JSON klasa podržava JEDINO deserijalizaciju kroz konstrukciju objekta,
onda se jednostavno moraš pomiriti sa tim:
Code:

X = JSON.Deserialize(Of ImeKlase)(string)

Umesto uzaludnog posla kroz konstruktor:
Code:

Me.Property1 = JSON.Deserialize(Of ImeKlase)(string).Property1 
Me.Property2 = JSON.Deserialize(Of ImeKlase)(string).Property2 
Me.Property3 = JSON.Deserialize(Of ImeKlase)(string).Property3 

[ S A J A @ 08.03.2015. 09:51 ] @
Napisao sam gore da je ta funkcija iz paketa kontrola Ext.Net, mislim da se nalazi u Newtonsoft.Json.dll.

Mada to nije mnogo bitno. Takođe ne verujem da je do te funkcije jer VS piše da se "Me" u okviru klase ne može na taj način dodeljivati.

Znam da mogu izvan klase da dodelim propertise (čak sam i u prvoj poruci napisao da to koristim), meni upravo treba da to uradim unutar klase.

Na primer, neko napravi objekat i prilikom pravljenja objakta ja iz baze deserijalizujem string, dodelim ga propertisima i dobije se gotov objekat. Ne znam zašto tvrdiš da to nema smisla, poenta objekta je da dođe gotov i spreman za korišćenje. Ali dobro, nema veze, sve zavisi kakva je zamisao.

A to za "Me" je zaista loše rešeno. Ako ja mogu da dodeljujem jedan po jedan propertis tako što ću ručno da ih nabrajam, onda nema tog Anštajna koji će da me ubedi da to nije moglo da se uradi da bude bez nabrajanja.

Sve u svemu, snašao sam se sa ručnim dodeljivanjem, postavio sam pitanje za slučaj da možda postoji neki način da to dodelim bez nabrajanja (unutar klase naravno), ali ako ne postoji onda ništa.
[ dusans @ 08.03.2015. 11:28 ] @
Citat:

Znam da mogu izvan klase da dodelim propertise (čak sam i u prvoj poruci napisao da to koristim), meni upravo treba da to uradim unutar klase.

Na primer, neko napravi objekat i prilikom pravljenja objakta ja iz baze deserijalizujem string, dodelim ga propertisima i dobije se gotov objekat. Ne znam zašto tvrdiš da to nema smisla, poenta objekta je da dođe gotov i spreman za korišćenje. Ali dobro, nema veze, sve zavisi kakva je zamisao.

Naravno na ima smisla i da treba tako, al si se ti uhvation instance metoda i pokušavaš da siluješ Me (što nema smisla).
Šta te tačno sprečava/je loše da uradiš to na ovaj način, na primer?
Code:

Public Class ImeKlase

    Public Shared Function CreateImeKlase(string Data) AS ImeKlase
        Dim X As ImeKlase
        X = JSON.Deserialize(Of ImeKlase)(Data)
        ' Dodatna inicijalizacija
        ...
        Return X
    End Function

    ...



[ Shadowed @ 08.03.2015. 11:39 ] @
Citat:
S A J A: Sve jedno, glupo su to napravili. Ako može jedan po jedan onda su mogli da stave i da mogu svi odjednom. Ovako moram da nabrajam, em što ružnim kod em što posle ako budem nešto dodavao moram na više mesta.

Nisu glupo napravili nego to ne sluzi toj svrsi.
Ako imas ovako nesto:
Code:

Dim X As new Person()
Dim Y As new Person()

Y = X

On nece u delu Y = X kopirati sve vrednosti property-a X-a u Peroperty-e Y-a. Umesto toga, ce se kopirati referenca pa ce Y ukazivati na isti objekat na koji ukazuje i X. Zbog toga, Me = nesto nema smisla jer Me ne moze (ne sme) referencirati nista drugo osim trenutnog objekta.


Citat:
S A J A:
Citat:
Shadowed:Sta je JSON? Koja je to klasa? Mozda moze nesto sa njim da se uradi da ti obavi stvar kako treba..


To je neki format da zapišeš objekat u string (i obrnuto). http://en.wikipedia.org/wiki/JSON

Na primer ove kontrole koje ja koristim za projekat koji radim (Ext.Net) imaju tu JSON funkciju gde sve mogu da pretvaram sa velikom lakoćom a koliko vidim, nešto slično ima i u Frejmvorku (samo naravno iskomplikovano).

Znam sta je JSON format Ovo drugo sam te pitao. Razlog je taj sto bi funkcija u obliku JSON.Deserialize(data As String, target As Object) mogla da ti zavrsi posao tako sto bi pozivao sa JSON.Deserialize("....", Me) pa sam hteo da pogledam da li ta JSON klasa ima tako nesto ili ako je open sourse da je prosiris. Medjutim, ni jedno od ta dva nije slucaj.

Ti svakako mozes napraviti jednu malu funkciju koja ce ti preko refleksije raditi kopiranje kakvo zelis i koristiti je za to sto hoces. To sto MS nije napravio, ne znaci da ne mozes napraviti sam
[ S A J A @ 08.03.2015. 12:20 ] @
Hvala na idejama, uspeo sam da napravim loop koji će unutar klase, u okviru New() procedure, da dodeli propertise iz JSON stringa:

Code:
For Each f In Me.GetType.GetFields
    f.SetValue(Me, JObject.Parse(string).GetValue(f.Name).ToString())
Next


Ovako kada gledam ovaj smešan kod, prosto mi je neverovatno kako sam morao da izgubim 4 sata (guglanja i isprobavanja) da dođem do njega. Ko mi je kriv kad nisam učio kad je trebalo.

[ Shadowed @ 08.03.2015. 13:24 ] @
Uh, ne znam gde si izguglao taj kod, ali nije dobar.. Mislim, uradice ti ono sto hoces, ali je jako los po pitanju performansi jer za svaki property u objektu iznova radi parsiranje JSON stringa.
Evo ti koda za dve extension metode, jedna je da kopiras bilo koji objekat u postojeci, drugi je da prvo parsira JSON pa onda kopira. Ovo ces moci da koristis na bilo cemu referentnog tipa. Ima i proveru da li je property writable da ne bi pokusao da kopira read only property. Jedino sto je kod u C#-u, posto nisam dugo radio u vb.net-u ali ne bi trebalo da ti bude problem da prevedes.

Code (csharp):

static class Extensions
     {
          public static void DeepCopy<T>(this T target, T source) where T : class
          {
               PropertyInfo[] PInfos = typeof(T).GetProperties();
               foreach (PropertyInfo pi in PInfos)
               {
                    if (pi.CanWrite)
                         pi.SetValue(target, pi.GetValue(source));
               }
          }

          public static void FillMeFromJSON<T>(this T target, string json) where T : class
          {
               target.DeepCopy(JSON.Deserialize<T>(json));
          }
     }
 
[ Shadowed @ 08.03.2015. 13:27 ] @
Isto, ovo nemoj nikad raditi:
Citat:
S A J A:
Naravno, mogu da nabrajam jedan po jedan

Code:
Me.Property1 = JSON.Deserialize(Of ImeKlase)(string).Property1 
Me.Property2 = JSON.Deserialize(Of ImeKlase)(string).Property2 
Me.Property3 = JSON.Deserialize(Of ImeKlase)(string).Property3 


Za svaki property vrsis deserijalizaciju.

Sledeci kod je, odokativno, par desetina puta brzi:

Code:

Dim Source As ImeKlase = JSON.Deserialize(Of ImeKlase)(string)
Me.Property1 = Source.Property1 
Me.Property2 = Source.Property2 
Me.Property3 = Source.Property3 
[/quote]
[ S A J A @ 08.03.2015. 13:33 ] @
Hm, deluje interesantno, oću da probam ali mi traži dodatni argument za GetValue:



I još jedna sitnica, kad sam isprobavao, probao sam slična rešenja i VS mi je skrenuo pažnju da ne koristim GetProperties/PropetyInfo nego GetFields/FieldInfo. Ona moja klasa je jednostavna, nema prave propertise nego obične promenljive. A kad koristiš FieldInfo onda nećeš imati .CanWrite
[ Shadowed @ 08.03.2015. 13:52 ] @
Ne znam zasto se buni za pi.GetValue. Postoji taj overload koji ima samo jedan parametar - https://msdn.microsoft.com/en-...ry/hh194385%28v=vs.110%29.aspx

Ako koristis field-ove, oni se uvek mogu upisivati pa ti ta provera ne treba. Mozes zapravo samo dodati kopiranje field-ova tako da ti extension metoda radi bez obzira da li klasa ima field-ove, property-e ili mesano. Dakle, samo dodaj jos:

Code (csharp):

FieldInfo[] FInfos = typeof(T).GetFields();
foreach (FieldInfo fi in FInfos)
{
     fi.SetValue(target, fi.GetValue(source));
}
 
[ S A J A @ 08.03.2015. 14:13 ] @
Ovaj kod je generalno dobar, tako nešto slično sam i ja isprobavao u okviru onih sati kad sam istraživao. Problem je u sledećem:

Dodeljivanje vrednosti propertisima (zapravo fieldovima) se odvija u okviru New() procedure. Ako koristim komandu JSON.Deserialize(Of ImeKlase)(string), iz nekog razloga ono "Of ImeKlase" ponovo pokreće New() proceduru i ulazi u gadu petlju, toliko gadnu da ni VS ne može da prihvati grešku, pojavi mi se onaj windows prozor gde me pita da li hoću da dibagujem i ako brzo ne zatvorim stranicu onda se zakuca ceo IIS proces. A kad se zakuca onda ne pomaže ni restart servisa, mora da se restratruje ceo windows. Dakle, taj JSON.Deserialize(Of ImeKlase)(string) očigledno da ne mogu da koristim unutar New() procedure...

Isto se dešava i kad koristim

Me.FillMeFromJSON(string)

i

Dim Source As ImeKlase = JSON.Deserialize(Of ImeKlase)(string)
Me.Property1 = Source.Property1
Me.Property2 = Source.Property2
Me.Property3 = Source.Property3


dakle svi pozivaju New() odakle su i pokrenuti pa mi se zakucava IIS.

Zato sam i morao da pređem na JObject.Parse. Ako bi mogao sa njim da probaš oni ekstenziju onda bi možda radilo, to sve već prevazilazi moje znanje.
[ mmix @ 08.03.2015. 21:28 ] @
Just my 2 cents.

JSON ima smisla samo i jedino ako radis sa browserom. JSON je od JavaScript Object Notation i njegova jedina konkretna prednost nad ostalim interchange formatima je sto moze da se direktno upuca u JS blok i da ga JS parser u browseru odmah iskompajlira u DOM. Za server side interchange je potpuno besmislen narocito ako objekte smestas u SQL (XML je defacto standard i vecina danasnjih RDBMSa podrzava pretragu unutuar XMLova u poljima, ne JSON). Zo to sto JSON uopste figurira u enterprise okruzenju imamo da zahvalimo navali web developera u ent. arenu gde im realno nije mesto (i REST i sve ostale idiotluke sa kojima se svakodnevno maltretiramo u svim mogucim integration scenarijima).


.NET ima svoju ugradjenu serijalizaciju i nju bi trebao da koristis. Dva podrzana rezima su XML i Binary u zavisnosti od toga sta ti je cilj. Moj predolog za tvoju primenu je XML, cak iako ti sada ne vidis nikakvu prednost jednog dana ce ti neki OLAP analyst biti zahvalan sto u bazi ima citljive i upotrebljive XMLove umesto kripticnih json stringova.

XML and SOAP Serialization
[ S A J A @ 08.03.2015. 22:54 ] @
Verujem da je tako, ovaj frejmvork koji koristim koristi JSON upravo radi razmene podataka između clienta i servera (mislim na brauzer) a ja sam ga sad koristio za smeštanje u bazu jer se jednostavno koristi, pregledan je a ne treba mi nikakva pretraga. U pitanju su podaci o podešavanjima, koji se ne koriste tako često, mrzelo me da pravim posebnu bazu za to pa sam sve spakovao u string. XML mi se nekako ne sviđa, nepregledan je i zauzima više mesta. Gledam ovo uputstvo koje si stavio, previše je "za programere", većinu stvari ne razumem, svaka njima čast ali ja gledam da mi bude praktično i jednostavno, više se koncentrišem na proizvod nego na tehnologiju programiranja.
[ tdusko @ 10.03.2015. 11:01 ] @
Citat:
mmix:
Zo to sto JSON uopste figurira u enterprise okruzenju imamo da zahvalimo navali web developera u ent. arenu gde im realno nije mesto (i REST i sve ostale idiotluke sa kojima se svakodnevno maltretiramo u svim mogucim integration scenarijima).


Mislis na ovakve?



:)
[ Shadowed @ 10.03.2015. 12:10 ] @
/me uzima kokice...
[ mmix @ 10.03.2015. 20:14 ] @
meh, iskreno web developeri mogu da rade sta hoce u browserima, ali i dalji stojim pri tome da je navala jeftinih web developera u enterprise arenu pivotalni momenat kada je ta industrija krenula rapidno nizbrdo. Voleo bih da mogu da kazem da je json u OLAP bazi najveci problem na koji sam naleteo. Ali nije, evo trenutno upravo radimo sa web servisom koji je pisao neki potpuni idiot koji uopste ne razume ne samo sta je SOAP vec i sta je XML Servis recimo puca sa null pointer java faultom kad mu se prosledi:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" ...

ali radi kako treba ako mu prosledis

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ...


I tako mi izgubimo dva dana kao potpuni moroni preispitujuci sopstveni kod, pokusavajuci da skapiramo sta nismo dobro definisali i serijalizovali, racunajuci da centralni Configuration Server visemilionskog 450Gbps fiber-to-the-home sistema sposobnog da snadeva IPTVem, telefonijom i internetom omanju drzavu mora biti kvalitetno uradjena i nauljena masina. Nakon poraza i eskaliranja situacije vendoru ispostavlja se da je "web servis" radio potpuni idiot koji je, (dramska pauza), parsirao POST deo Http zahteva kao je*eni string. I naravno posto nije nasao podstring "soapenv:Envelope" pokusva null pointer da upotrebi kasnije i puca To je bio jedan potpuno surealan sastanak na kojem smo se mi samo gledali i cutali i pokusavali da skapiramo da li je ovo samo los san. Ali nije. Lik je web developer koji je nesto petljao sa Javom i kome su uvalili da napravi "web servis" jer su musterije to trazile i on se izvinjava sto mozda tu ima "nekih bagova" ali da sve to radi kod "drugih klijenata". Trebao sam da znam odmah sa kim imam posla kad nije mogao da nam preda WSDL za taj servis. ne mozes imati WSDL ako nemas uospte web servis
[ dejanet @ 10.03.2015. 20:48 ] @
^ Soap u Javi je straightforward prica. U praksi, uz specifikaciju moze da odradi pismeni java programer sa godinom iskustva.
To sto ste naleteli na baticu nije njegova krivica, vec firme koja ga unajmila ili firme koja je narucila posao('usteda na mostu').

U svakom slucaju ti si iz svega toga izvukao citav niz losih zakljucaka.
[ mmix @ 10.03.2015. 21:03 ] @
Soap u Javi uopste nije straightforward prica, cak i kad se uradi kako treba, ali to je vec druga prica koja jos i ima smisleno resenje.

Problem je sto tih "usteda na mostu" imas sada kriticno previse tamo gde u startu ne bi smelo da ih bude. Profil osobe koja je dobar web developer nije profil osobe koja je dobar enterprise developer. Retki su oni koji premoscavaju uspesno ta dva sveta.
[ dejanet @ 10.03.2015. 21:20 ] @
Web developer ne treba da bude sef tima(ili projekta), ali bi treblo da bude sposoban da uradi web service metod, validaciju... isto i sa ems porukama i naravno rad sa db-om. To su zanatske stvari.

Team leader se brine o specifikaciji i kriticnim stvarima.

[ Shadowed @ 10.03.2015. 21:36 ] @
Citat:
dejanet: To sto ste naleteli na baticu nije njegova krivica, vec firme koja ga unajmila ili firme koja je narucila posao('usteda na mostu').

Pa, krivica je i njegova i njihova. Njegova sto je prihvatio da radi ono sto ne zna a njihova sto su dali nekom ko ne zna (ili sto nisu dobro procenili kakvo je znanje coveka koji im to radi).
[ dejanet @ 10.03.2015. 21:45 ] @
^ Batica je koliko razumem, parsirao a zatim spajao xml 'kobaju' kao string i bacao nazad, ludilo.
Mislim da je greska firme, jer da je znao da gresi izguglao bi barem do jaxb-a.
[ tdusko @ 11.03.2015. 08:34 ] @
Greska jeste njegova, ali odgovornost nije. Ne moze izmedju specifikacije taska i koda na produkciji da bude samo jedan developer. Taj code kao i svaki drugi koji ide na produkciju je morao da prodje reviziju bar jos jednog senior developer posebno ako je taj task nesto sto on radi prvi put u zivotu. Tim i njegov lead moraju da budu svesni takvih stvari i postoje nacini kako se to handluje. Ja se slazem sa mmix-om da se kod web developera moze svasta naci, ali ne vidim njih kao uzrok problema vec nepostojanje/nepostovanje procedura, neinsistiranje na edukaciji i knowledge transferu. I sam sam u karijeri radio sa pun q lead-ova koji imaju 20 godina iskustva, iseravaju code dok spavaju, znaju napamet ceo framework, hodaju po vodi itd, a clanovi tima parsiraju XML. Sorry, ali to nije lead. Lead koji nije svestan (ne)sposobnosti igraca u svom timu, koji nije sposoban da od njih napravi bolje igrace kroz propisno prilagodjen roadmap za edukaciju, koji nema dovoljno komunikacijskih vestina da organizuje KT sesije, koji nije u stanju da osigura da code koji je napisao junior ne ode na produkciju bez revizije jednostavno nije lead.

Naravno, ne moze se od svakoga napraviti dobar developer, ali ako postoje procedure i dobra organizacija tima vrlo brzo isplivaju(potonu) oni kojima nema spasa i sleduje im otkaz. Pa software development je valjda jedina industrija gde je nemoguce dobiti otkaz zbog loseg performansa. To se ekstremno retko desava s obzirom na cinjenicu da koji god code base zagrebes svuda iskacu nakaze i budzevine.
[ ravni @ 11.03.2015. 10:25 ] @
Citat:
mmix:
meh, iskreno web developeri mogu da rade sta hoce u browserima, ali i dalji stojim pri tome da je navala jeftinih web developera u enterprise arenu pivotalni momenat kada je ta industrija krenula rapidno nizbrdo.
mmirisem elitizam :))
[ mmix @ 11.03.2015. 10:31 ] @
Koji developer lead? Onaj koji je prvi otpusten jer mu je plata bila 25% iznad proseka tima?

Ni ja nisam rekao da su sve firme takve, ali jednostavno ih ima zastrasujuce puno. I takvi likovi se najlakse provlace u velikim kompanijama koje nisu predominantno softverske, banke, osiguranja, hardver vendori, itd. To o cemu ti pricas je defacto standard sz s/w kompanije i u njima se zaista takve stvari ne desavaju (bar janisam sreo), ali sve van toga je fair-game. O kvalitetu softverskog dela firme brinu bean-counteri kojima je bottom line troskova tog cost centra jedino merilo. Koliko plate toliko i dobiju, i mene to ne bi mnogo ni oticalo da na kraju ja ne moram da trpim posledice toga.
[ mmix @ 11.03.2015. 10:35 ] @
Citat:
ravni: mmirisem elitizam )


Nije elitizam, vec sposobnost za kvalitetno obavljanje poslova. Lik koji mi npr prebacuje sto koristimo CVS umesto Gita kao repository, iako ja ponajmanje imam veze sa time, ali ne ume u bilo koji repository da utera iole smisleno parce koda koji nije javascript. Enterprise development je na mahove dosadan, veoma prljav posao, i takav je sa razlogom.

[Ovu poruku je menjao mmix dana 11.03.2015. u 12:06 GMT+1]