Prikaži potpunu verziju : How to... C#
Evo resio sam da naucim ovaj jezik,ali nasao sam sve nekakve tupave ebook-ove....guglao sam i guglao...
Da li neko ima neku dobru knjigu(engleski ili srpski,svejedno),da mi posalje ili da mi da link,nesto?
Evo sta bih ti ja preporucio (mada je krajnje divlje resenje, ali ja sam tako naucio C#). Smisli neku aplikaciju koju zelis da napravis, npr obican digitron, rokovnik, raspored casova ili tako nesto jednostavno. Startuj okruzenje, izaberi novi C# projekat... prevlaci kontrole da bi napravio user interface. Igraj se malo sa time, istrazi sta sve ima od kontrola, probaj sam da provalis kako se neke koriste/konfigurisu. Ako zapnes bilo gde, konsultuj se sa primerima na netu. Jedan od vrlo lepih sajtova sa puno gotovih resenja za C# je http://www.codeproject.com/ ... puno sam naucio bistreci njegove source-ve. Mislim da zahteva besplatnu registraciju da bi mogao bilo sta da downloadujes sa njega.
Evo sta bih ti ja preporucio (mada je krajnje divlje resenje, ali ja sam tako naucio C#). Smisli neku aplikaciju koju zelis da napravis, npr obican digitron, rokovnik, raspored casova ili tako nesto jednostavno. Startuj okruzenje, izaberi novi C# projekat... prevlaci kontrole da bi napravio user interface. Igraj se malo sa time, istrazi sta sve ima od kontrola, probaj sam da provalis kako se neke koriste/konfigurisu. Ako zapnes bilo gde, konsultuj se sa primerima na netu. Jedan od vrlo lepih sajtova sa puno gotovih resenja za C# je http://www.codeproject.com/ ... puno sam naucio bistreci njegove source-ve. Mislim da zahteva besplatnu registraciju da bi mogao bilo sta da downloadujes sa njega.
Pa jedino tako izgleda i moze.
Pa jedino tako izgleda i moze.
hehehe :)
sreca pa ne odustajes lako.
ima dosta kvalitetnih knjiga na temu c#-a, a uvek je tu i microsoftova msdn dokumentacija, i njen deo posvecen pocetnicima u C#-u.
imas detaljne tutoriale, objasnjenja, uputstva i sve drugo sto moze da ti zatreba na msdn-u, a uz to je i besplatan. kud ces bolje ? :)
http://msdn.microsoft.com/en-us/vcsharp/aa336766.aspx
na tom linku pogledaj "Fundamentals"
pogledaj "Learning C# by Topic" itd.
Evo za pocetak, mozes da napravis imenik :opanachke
Evo za pocetak, mozes da napravis imenik :opanachke
Cek covece tek sam napravio Hello World!
:D:D
Geomaster
4.11.2009, 23:17
Cek covece tek sam napravio Hello World!
:D:D
Dobro, ne moraš imenik, možeš Crysis... :D
Dobro, ne moraš imenik, možeš Crysis... :D
Pa, batice, verujem da je to prosto k'o pasulj za njega... Ej, on je napravio "Hello, world!" :D
P.S. Ja u C# ne znam ni toliko nego da se zezamo malo :D
Svidja mi se jezik,mesavina VB-a,C++ mozda jos necega...
I prihvatio sam veliki zadatak procitaci knjigu od 1847 str. i to jos na engleskom...Engleski sporo citam tako da...
Svidja mi se jezik,mesavina VB-a,C++ mozda jos necega...
Kazu da C# lici mnogo na Javu.
Geomaster
5.11.2009, 11:55
Kazu da C# lici mnogo na Javu.
Jeste, mada Java liči na C++, pa Ivan ima pravo :) C# takođe ima onaj drag&drop UI builder, pa zato malo liči i na VB...
C# takođe ima onaj drag&drop UI builder, pa zato malo liči i na VB...
Valjda to ima Visual Studio a ne C# :)
Geomaster
6.11.2009, 19:55
Valjda to ima Visual Studio a ne C# :)
Well, nešto ne postoji mnogo drugih C# kompajlera :)
E, sa'cu da vas mracim malo... :D
boskodj je u pravu, GUI editor je vezan za sam VS, ne za jezik, obzirom da je sve to moguce uraditi u bilo kom drugom .NET jeziku, jer se na kraju sve svodi na istu stvar - MSIL.
Sto se kompajlera tice, postoji i Mono.
Sintaksno, C# je kombinacija Jave i C++, kao sto se da videti:
static class Program
{
static void Main(string[] args)
{
string[] list = { "STACK", "IS", "OUT ", " OF", "ORDER", "UBERM", " SOLVER", "OF", "UNNILATERAL", "EMPIRES"};
IEnumerable<string> query = from str in list where str.Length % 2 == 1 select str.GetSomething();
foreach (string s in query) Console.Write(s);
Console.Read();
}
static string GetSomething(this string s)
{
return s[0].ToString() + s[s.Length - 1].ToString();
}
}
Naravno, nije ogranicen na to...
I, btw, pokrenite ovo... :D
Imam pitanje.
Da li zato sto se prevodi u IL(Intermediate Language)znaci da je ne zavistan od platforme?
Imam pitanje.
Da li zato sto se prevodi u IL(Intermediate Language)znaci da je ne zavistan od platforme?
C# ti je Microsoftovo cedo, ostalo ti je sve jasno :rolleyes:
Pa, zavisi, ako u nekoj buducnost budes imao CLI na svakoj platformi, onda ce biti nezavisan. :D
.NET prefektno radi, za sada, jedino na windowsu. Pogledaj MONO (http://en.wikipedia.org/wiki/Mono_%28software%29) (Linux (http://en.wikipedia.org/wiki/Linux), BSD (http://en.wikipedia.org/wiki/BSD), UNIX (http://en.wikipedia.org/wiki/Unix), Mac OS X (http://en.wikipedia.org/wiki/Mac_OS_X), Solaris (http://en.wikipedia.org/wiki/Solaris_%28operating_system%29) ) za ostale.
Sto se samog IL-a tice, nije nesto previse komplikovano, pogledaj recimo ovo:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 235 (0xeb)
.maxstack 4
.locals init ([0] string[] list,
[1] class [mscorlib]System.Collections.Generic.IEnumerable`1<string> query,
[2] string s,
[3] string[] CS$0$0000,
[4] class [mscorlib]System.Collections.Generic.IEnumerator`1<string> CS$5$0001,
[5] bool CS$4$0002)
IL_0000: nop
IL_0001: ldc.i4.s 10
IL_0003: newarr [mscorlib]System.String
IL_0008: stloc.3
IL_0009: ldloc.3
IL_000a: ldc.i4.0
IL_000b: ldstr "STACK"
IL_0010: stelem.ref
IL_0011: ldloc.3
IL_0012: ldc.i4.1
IL_0013: ldstr "IS"
IL_0018: stelem.ref
IL_0019: ldloc.3
IL_001a: ldc.i4.2
IL_001b: ldstr "OUT "
IL_0020: stelem.ref
IL_0021: ldloc.3
IL_0022: ldc.i4.3
IL_0023: ldstr " OF"
IL_0028: stelem.ref
IL_0029: ldloc.3
IL_002a: ldc.i4.4
IL_002b: ldstr "ORDER"
IL_0030: stelem.ref
IL_0031: ldloc.3
IL_0032: ldc.i4.5
IL_0033: ldstr "UBERM"
IL_0038: stelem.ref
IL_0039: ldloc.3
IL_003a: ldc.i4.6
IL_003b: ldstr " SOLVER"
IL_0040: stelem.ref
IL_0041: ldloc.3
IL_0042: ldc.i4.7
IL_0043: ldstr "OF"
IL_0048: stelem.ref
IL_0049: ldloc.3
IL_004a: ldc.i4.8
IL_004b: ldstr "UNNILATERAL"
IL_0050: stelem.ref
IL_0051: ldloc.3
IL_0052: ldc.i4.s 9
IL_0054: ldstr "EMPIRES"
IL_0059: stelem.ref
IL_005a: ldloc.3
IL_005b: stloc.0
IL_005c: ldloc.0
IL_005d: ldsfld class [System.Core]System.Func`2<string,bool> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
IL_0062: brtrue.s IL_0077
IL_0064: ldnull
IL_0065: ldftn bool Program.Program::'<Main>b__0'(string)
IL_006b: newobj instance void class [System.Core]System.Func`2<string,bool>::.ctor(object,
native int)
IL_0070: stsfld class [System.Core]System.Func`2<string,bool> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
IL_0075: br.s IL_0077
IL_0077: ldsfld class [System.Core]System.Func`2<string,bool> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
IL_007c: call class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0> [System.Core]System.Linq.Enumerable::Where<string>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>,
class [System.Core]System.Func`2<!!0,bool>)
IL_0081: ldsfld class [System.Core]System.Func`2<string,string> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
IL_0086: brtrue.s IL_009b
IL_0088: ldnull
IL_0089: ldftn string Program.Program::'<Main>b__1'(string)
IL_008f: newobj instance void class [System.Core]System.Func`2<string,string>::.ctor(object,
native int)
IL_0094: stsfld class [System.Core]System.Func`2<string,string> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
IL_0099: br.s IL_009b
IL_009b: ldsfld class [System.Core]System.Func`2<string,string> Program.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
IL_00a0: call class [mscorlib]System.Collections.Generic.IEnumerable`1<!!1> [System.Core]System.Linq.Enumerable::Select<string,string>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>,
class [System.Core]System.Func`2<!!0,!!1>)
IL_00a5: stloc.1
IL_00a6: nop
IL_00a7: ldloc.1
IL_00a8: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<string>::GetEnumerator()
IL_00ad: stloc.s CS$5$0001
.try
{
IL_00af: br.s IL_00c0
IL_00b1: ldloc.s CS$5$0001
IL_00b3: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<string>::get_Current()
IL_00b8: stloc.2
IL_00b9: ldloc.2
IL_00ba: call void [mscorlib]System.Console::Write(string)
IL_00bf: nop
IL_00c0: ldloc.s CS$5$0001
IL_00c2: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()
IL_00c7: stloc.s CS$4$0002
IL_00c9: ldloc.s CS$4$0002
IL_00cb: brtrue.s IL_00b1
IL_00cd: leave.s IL_00e3
} // end .try
finally
{
IL_00cf: ldloc.s CS$5$0001
IL_00d1: ldnull
IL_00d2: ceq
IL_00d4: stloc.s CS$4$0002
IL_00d6: ldloc.s CS$4$0002
IL_00d8: brtrue.s IL_00e2
IL_00da: ldloc.s CS$5$0001
IL_00dc: callvirt instance void [mscorlib]System.IDisposable::Dispose()
IL_00e1: nop
IL_00e2: endfinally
} // end handler
IL_00e3: nop
IL_00e4: call int32 [mscorlib]System.Console::Read()
IL_00e9: pop
IL_00ea: ret
} // end of method Program::Main
To je IL kod onoga sto sam napisao ranije. Kada pokrenes .NET aplikaciju, ovaj kod se salje CLR-u na kompajliranje.
Imam pitanje.
Da li zato sto se prevodi u IL(Intermediate Language)znaci da je ne zavistan od platforme?
I tu dolazimo do dela "zasto je C# smece". Kopira javu u svemu ali na kraju onako elegantno odbacuje njenu najvecu prednost - mogucnost izvrasavnja nepromenjenog programa na svim operativnim sistemima. Ne samo da jenom napisan C# program nece raditi u nepromenjenom obliku na drugim platformama, nego nemozes ni da ga portujes. Mono je kao neki izgovor i alternativa, ali to je samo slika za pokazivanje pred US Department of Justice i Evropskom komisijom. Teoretski, Mono moze da se razvije i bude bolji od .NET-a, (zato sto je open-source i zato sto postoji vise pametnih ljudi na svetu nego sto M$ moze da plati) ali u praksi... ne moze. Razlog: Mono je hakovani klon .NET-a a M$ je patentirao sve zivo u .NET-u. M$-u trenutno odgovara postojanje FOSS alternative radi boljeg primanja klice zla... ovaj... .NET-a, ali kad popularnost .NET-a poraste, M$ ce potegnuti patente, Novell ce izvuci utikac iz Mono projekta i softverska industrija ce se naci u velikom problemu. A cinjenica da prebacuju Mono na MIT X11 licencu ni malo ne pomaze.
Dakle, koga ozbiljno zanima krosplatformsko programiranje, taj treba u sirokom luku da zaobidje C# i .NET i da gleda u neki stadardniji jezik koji nema Visual prfiks i koji ima sto manje dodirnih tacaka sa M$-om. Java, C++, C, Fortran... sve je bolje od cetarabe.
Meni je trebalo neko vreme da shvatim zašto Micro$oft toliko insistira na .NET-u i zašto tolike nade i trud polaže u njega, izuzimajući, jelte, ideju o globalnoj dominaciji :dzavo:, a ne pokušava da .NET proširi na druge sisteme.
Odgovor je ustvari veoma jednostavan. Čak i glupi Micro$oft shvata da im je njihova uzdanica, njihovo čedo, zvano Windows najobičnije đu**e. Sam dizajn OS-a kao i gomila starih i zaostalih API-ja, koji se nažalost još uvek koriste, predstavljaju najveću prepreku u pravljenju potpuno novog i modernog OS-a. Ako bi napravili novi sistem, možda nešto unix-oliko, jednostavno bi ubili kompatibilnost sa ogromnom bazom već postojećeg softvera i pokopali sami sebe. E tu stupa na scenu .NET. Naime plan je da se nateraju programeri da pišu programe isključivo za .NET, čak su išli do te mere da su programiranje nekih tipova aplikacija doveli na nivo trivijalnosti (RAD - rapid application development, ono što je Borland imao oduvek), sve u cilju da .NET postane mainstream. Micro$oft namerava u potpunosti da se reši starih API-ja. Kad se to dogodi, mogu sasvim slobodno da naprave novi sistem i .NET virtualnu mašinu za taj sistem na kojoj će da rade programi bez bojazni da će biti problema sa kompatibilnošću. Zato .NET nije portovan na druge sisteme jer mu to nije ni bila namena, iako su managed kod i virtualne mašine ustvari smišljene u svrhu većeg nivoa portabilnosti i dostupnosti na više platformi. Dokaz za to je i sve veći broj programa/alata koji su sastavni deo Windows-a a pisani su za .NET. Naravno virtualna mišina donosi i ostale pogodnosti - veću otpornost na viruse (lokalizaciju njihovog delovanja), veću kontrolu nad pravima pristupa itd.
Nažalost (:dzavo:), u tome uspevaju. .NET sigurno ima veći nivo prihvatanja kod programera nego pisanje klasičnih, ne managed, programa, iako ne dobijaju nikakvu portabilnost a gube na performansama.
Nažalost (:dzavo:), u tome uspevaju. .NET sigurno ima veći nivo prihvatanja kod programera nego pisanje klasičnih, ne managed, programa, iako ne dobijaju nikakvu portabilnost a gube na performansama.
Zavisi sve od volje programera da optimizuje softver. Recimo ti uradis neku aplikaciju u C++ a ja u C#, a s'obzirom da je tebe mrzelo da optimizujes a mene ne, moja radi bolje. Isto naravno vazi i u obratnom slucaju.
Zavisi sve od volje programera da optimizuje softver. Recimo ti uradis neku aplikaciju u C++ a ja u C#, a s'obzirom da je tebe mrzelo da optimizujes a mene ne, moja radi bolje. Isto naravno vazi i u obratnom slucaju.
To apsolutno nema nikakve veze sa onim što ja pričam. Dva različita čoveka su dva različita čoveka. Pričam o izboru koje može jedan čovek da napravi i rezultat njegovog izbora.
Naravno da brzina programa zavisi od optimizovanosti koda samo što je i tu managed kod u nepovoljnijoj poziciji. Optimizacija je moguća samo na najvišem nivou, sve ostalo je u rukama kompajlera i virtualne mašine.
Statistički je uvek moguće izvući zaključak da managed kod nikada ne može biti brži od nativnog.
To jeste, em sto zbog visine optimizacije, em sto zbog sabloniziranja (mislim da tu ide dobar deo performansi).
Znaci ako neko ima instaliran mono moze da pokrene program,a da nije na windowsu?
Malo ste me zbunili neko kaze moze,neko ne,a i knjiga kaze da moze ako je na nekom drugom OS-u instaliran mono.
Odgovor je prost. Mono nema implementiranu podršku za sve ono što nudi .NET (npr. WPF). Može da izvršava programe predviđene za izvršavanje na .NET-u sve dok program koristi samo one funkcionalnosti koje su implamentirane. Konzolski programi će, recimo, skoro savršeno raditi kao i programi koji koriste Windows Forms. Opet, 100%-tna kompatibilnost ni u tom slučaju verovatno ne postoji. S druge strane, programi koji koriste WPF neće raditi uopšte.
Važi i obrnuto. Mono programi koji koriste, npr. GTK, neće raditi na .NET-u jer .NET nema podršku za GTK.
Ide se ka tome da Mono implementira sve što .NET nudi što bi omogućilo da jedan te isti program bez problema pokrećeš u .NET-u na Windows-u ili u Mono-u na nekom drugom sistemu. Problem je u sledećem. Neke komponente .NET-a su standardizovane (ECMA standard), javno su dokumentovane i Mono projekat sasvim slobodno može da implementira te komponente. Međutim, mnoge komponente .NET-a nisu standardizovane i Micro$oft ih drži za sebe. Mono projekat može da implementira i te komponente ali dolazi u sukob s Micro$oft-om jer su te komponente pod patentom.
Sve mi je jasno,mrzim M$.
Sve mi je jasno,mrzim M$.
ovo je stvarno kontraproduktivno.
MS svakako za mnoge svoje poteze zasluzuje ostru kritiku, ali nikako ne preporucujem javne pozive na linc i toliko olajavanje da neko "zamrzi" kompaniju cije prozivode svaki dan koristi.
uvek ce biti ljudi koji ce na sav glas da pljuju Ms, i onih koji ce ga braniti.
pokusajte naci neku zlatnu sredinu, neko objektivno misljenje :)
Kontraproduktivno je koristiti M$ proizvode koji druge primoravaju da koriste M$ proizvode protiv svoje volje. .NET je jedan takav proizvod.
Ladowina
11.11.2009, 15:16
Kolega sa posla je jednom rekao "mrzeo sam MS dok nisam poceo da koristim open source toolove" :D
Bojim se da zaboravljate koji je operativni sistem danas najkorišćeniji na desktop računarima. Jezik se bira prema potrebi a ne prema nekakvim filozofijama, open-sourceu i čemu sve ne. Ako ti gazda kaže da radiš u tome i tome, radićeš u tome i tome. Ako ne, radićeš u onome u čemu je tebi lakše. Dalje, ne znam na kojim podacima bazirate stav da C# aplikacije plaćaju prevelike penale u brzini, ali je kompajler u VS2008 optimizovan za sve pare i u 90% slučajeva usporenje je zanemarljivo, a pritom imate lep i čitljiv program, lak za održavanje i sad i za godinu dana ako nešto treba da se dorađuje.
Biranje Jave za pisanje desktop aplikacija samo zato što će ta aplikacija moći da se izvršava na svim sistemima je potpuno retardirano. Od 50 korisnika koji će koristiti taj moj program, 49 ionako koriste Windows (manite me priče o serverskom tržištu, pričam o desktop aplikacijama za prosečnog Džoa) i zauzvrat dobijaju program čiji je GUI potpuno prilagođen sistemu i čija je upotreba udobna i ne igra po ganglijama. Ovako da bih pokrio i tog jednog, em dobijam kljakav interfejs koji može da se svidi ne znam tačno kome, em moram daleko više da se iscimam. Tim pre što Java GUI programiranje, kada se posmatra iz perspektive nekog ko je radio sa bilo kakvim iole logičnim projektovanjem i programiranjem GUI-ja, uključujući tu i Delphi kao etalon razumnog i udobnog RAD-a, deluje suludo. Kad pređem sa Delphija ili C#-a u Javu i dođem u situaciju treba da registrujem nekakve listenere za najprostije operacije u interfejsu mog programa ili da zamišljam logički grid po panelu da bih raspoređivao komponente, ne znam da li da plačem ili da se krstim na šta su ti ljudi mislili onda kad su projektovali AWT.
Da li bi radili recimo u Office paketu pisanom u Javi, sa Java GUI komponentama koje su u ovakvom stanju kakvom su danas? Bi, malo sutra. I JDownloader koristim samo što moram, inače me nervira najužasnije. A ni GTK+ i Qt za Windows nisu mnogo bolji.
Jezik se bira prema primeni. Ako znate u startu da ćete pisati multiplatformski program specifične namene, onda birate takav jezik. Ako ne, C# je sjajan izbor. Živci i vreme su najvrednije što čovek ima u životu, što pre to shvatite to bolje za vas. Ako pišem desktop aplikaciju, ne pada mi na pamet "u ovim godinama" (iako nemam puno godina) da se bakćem sa C++-om i Qt ili GTK+ bibliotekama samo zato da bi 2% mojih potencijalnih korisnika moglo da pušta program. To sam mogao u srednjoj dok sam imao svo vreme ovog sveta i uopšte se nisam brinuo o tom odnosu uloženo/dobijeno.
Takođe stičem utisak da većina ljudi koja oštro kritikuje .NET ovde nema blagu predstavu kako izgleda programerski rad u korporativnom okruženju, i kada bi se našla u istom, pukla bi sa živcima ili bi fasovala otkaz u roku od dva meseca. Najlakše je pričati šta je bolje u teoriji ili kako je ovaj ili onaj zao. Treba znati pronaći balans između truda i rezultata, jer nije sve u programiranju crno i belo. Ja imam isto da iskritikujem Sun što Java posle 15 godina postojanja i dalje pati od nekih potpunih gluposti koje nikako da isprave.
...
sta dodati, sve si rekao.
ja to konstantno pricam ljudima kad me pitaju.
al u neku ruku i razumem zasto im to nije toliko jasno, i ja sam nekada imao tone vremena da eskeprimentisem, zezam se i izgubim ogromnu kolicinu vremena a dobijem malo poboljsanje.
al onda sam se zaposlio, a tada se sve okrene u trenutku.
sada je najbitnije ispuniti rok, zadovoljiti sefa, napraviti interfejs zbog kojeg te korisnik nece zvati svakih 2 minuta...
uporno me pocetnici pitaju "koji je najbolji programski jezik?"
i ja uprono odgovaram "koji god ti omogucava da najlakse odradis aktuelni projekat."
Bez obzira na sve ja ostajem da ucim C# zato sto mi odgovara,svim mojim potrebama.Mozda ce se u buducnosti nesto promeniti...
-> voodoo_, ja lično nemam ništa protiv vertualnih mašina i managed koda. Oni imaju svoju namenu i prednosti. Nisam nigde tvrdio da je gubitak u performansama ogroman, već da teoretski postoji. Koliki će da bude veoma zavisi od samog programa. Negde ga neće biti, negde će da bude primetan. Takođe nemam ništa ni protiv C#-a kao jezika, niti RAD-a. Zaboga, Borland-ov Delphi i C++ Builder furaju RAD već godinama. Od svog začetka su definisali pojam RAD.
Ono što meni smeta je da sad odjednom Micro$oft "izmisli" RAD i odmah gomila ljudi, svojevoljno ili ne, skaču i hvataju se za Micro$oft-ove tehnologije ko da su bogom dane. Zašto pre nekoliko godina, dok su programeri koristeći Visual C++ pravili grafičke interfejse naslepo, dok im se stomak prevrtao od muke, isti nisu jednostavno koristili blagodeti RAD-a u Borland-ovim alatima, nago su i dalje trpeli, jer zaboga, to je Micro$oft-ova tehnologija - bogom dana. Sad odjednom kad su otkrili blagodeti RAD-a, pitaju se kako su mogli bez toga, a Micro$oft i .NET dižu u nebesa. Borland bukvalno propade, ko da nije nikad ni postojao. Na kraju, samo će Micro$oft da od svega toga profitira a svi ostali će da ispaštaju. Još jedna tehnologija koja će im doneti samo još veću dominaciju i učvrstiti monopol iako nije ništa novo.
to je mozda tacno, ali ja ne vidim kako za to mozes da krivis microsoft ili c#.
tacnije, nisi naveo neki argument kako je Microsoft kriv za to sto su svi furali vc++ umesto Borlandovog resenja.
ako su korisnici to radili svojevoljno, i sada svojevoljno odjednom dizu u nebesa rad i .net, onda su korisnici krivi sto Borland i ostali ispastaju, zar ne ?
to se valjda zove slobodno trziste.
i ovo nije odbrana Microsofta, ozbiljno pitam za neko pojasnjenje kako je Microsoft uticao na to da korisnici preferiraju njihovo resenje, osim izbacivanjem svojih proizvoda na trziste.
i ovo nije odbrana Microsofta, ozbiljno pitam za neko pojasnjenje kako je Microsoft uticao na to da korisnici preferiraju njihovo resenje, osim izbacivanjem svojih proizvoda na trziste.
To je upravo ono što bi i ja hteo da znam. Kako je Micro$oft-u pošlo za rukom da većina preferira njihova rešenja bila ona bolja, istog kvaliteta ili gora od već postojećih rešenja? Kako? Zašto se to događa?
Zašto pre nekoliko godina, dok su programeri koristeći Visual C++ pravili grafičke interfejse naslepo, dok im se stomak prevrtao od muke, isti nisu jednostavno koristili blagodeti RAD-a u Borland-ovim alatima, nago su i dalje trpeli, jer zaboga, to je Micro$oft-ova tehnologija - bogom dana.Odgovor na ovo pitanje je prost. Softverska industrija se kao i sve ostalo vremenom menja. Dok se do pre nekoliko godina RAD manje više smatrao modom a vremena za eksperimentisanje je bilo na pretek danas je to jedini način da se naprave ogromne uštede na vremenu u razvoja aplikacija. A svaka ušteda u vremenu je naravno novac. Niko tebi recimo danas kao programeru neće zabraniti da "crtkaš" korisnički interfejs svoje aplikacije kroz sirovi WinAPI ali će te sa takvim pristupom danas jednostavno pojesti pomračina softverske industrije i verovatno da u komercijalnim vodama sa takvim stavom ne bi doživeo da prvi projekt na kome budeš radio ugleda svetlost dana sa tobom kao delom ekipe :)
To je upravo ono što bi i ja hteo da znam. Kako je Micro$oft-u pošlo za rukom da većina preferira njihova rešenja bila ona bolja, istog kvaliteta ili gora od već postojećih rešenja? Kako? Zašto se to događa?Jednostavno. Godinama je osluškivao potrebe developera i nastavio da i na razvojna okruženja primenjuje filozofiju koju primenjuje na svoje operativne sisteme. Od mušičavog .NETa vremenom se razvila kompaktna, uniformna i pre svega pogodna platforma za brzo i efikasno pisanje koda koji će se i onako izvršavati na Windows baziranim sistemima jer zagovornici linča Windowsa ni dan danas ne mogu da shvate da su Windows serverske platforme izuzetno pouzdane i moćne. Kad se u celu matematiku ubaci činjenica da okruženje pruža sve što se zamisliti može za poboljšanje timskog rada mislim da ovo stvara poprilično dobru sliku za svakoga ko ima nameru da se ozbiljno bavi razvojem aplikacija.
Za kraj bih dodao još jednu bitnu stvar zbog koje .NET manje više možda i nema neku realnu konkurenciju danas a posebno u odnosu na Open source - podrška. O čemu pričam? Pa jednog lepog dana svaki zaljubljenik i entuzijasta u slobodan softver shvatiće koliko vremena je izgubio samo na traženju odgovora na najbanalnije gluposti za koje je morao da provede sate i sate na raznim forumima gde je dobijao svakakve savete od kojih je 99.9% bilo beskorisno a ostalih 0.1% pravilo još veći problem. Jednostavno kod slobodnog softvera pojedinac je prepušten na milost i nemilost ostatka zajednice a to je paradigma koju ozbiljan razvoj softvera jednostavno ne trpi.
Upravo to je osnovni razlog zbog kojeg su ostale tehnologije (posebno Open source) još uvek miljama udaljene od krema aplikacija koje se koriste za pravljenje novca.
Da niste malo zasli u offtopic?:rolleyes:
Preteraste, hehe :)
Ja sam postavio slicno pitanje pre nedelju-dve. Kako je Windows pobedio OS/2? Sve se svodi na to da je Microsoft izuzetno "pametna" korporacija. Ima pametne ljude, koji rade svoj posao tako sto idu linijom manjeg otpora i daju ljudima ono sto vecina njih zeli, i dok svi ostali pokusavaju da naprave neku revoluciju M$ to ne cini. Kod njih sve ide korak po korak. Polako ali sigurno. Ljudi podsvesno to znaju i zato koriste njihove proizvode jer je "foreground" tih proizvoda odlican, i uspeva da prikrije nezgrapni "background". Dosta o ovome... Tema je How to... :)
Post nije bas najsjajnije napisan, citajte izmedju redova...
I tu dolazimo do dela "zasto je C# smece". Kopira javu u svemu ali na kraju onako elegantno odbacuje njenu najvecu prednost - mogucnost izvrasavnja nepromenjenog programa na svim operativnim sistemima. Ne samo da jenom napisan C# program nece raditi u nepromenjenom obliku na drugim platformama, nego nemozes ni da ga portujes. Mono je kao neki izgovor i alternativa, ali to je samo slika za pokazivanje pred US Department of Justice i Evropskom komisijom. Teoretski, Mono moze da se razvije i bude bolji od .NET-a, (zato sto je open-source i zato sto postoji vise pametnih ljudi na svetu nego sto M$ moze da plati) ali u praksi... ne moze. Razlog: Mono je hakovani klon .NET-a a M$ je patentirao sve zivo u .NET-u. M$-u trenutno odgovara postojanje FOSS alternative radi boljeg primanja klice zla... ovaj... .NET-a, ali kad popularnost .NET-a poraste, M$ ce potegnuti patente, Novell ce izvuci utikac iz Mono projekta i softverska industrija ce se naci u velikom problemu. A cinjenica da prebacuju Mono na MIT X11 licencu ni malo ne pomaze.Pobogu odakle izvlačite ovakav zealotski "treš" :eek:
Mono bi sigurno mogao da bude mnogo kvalitetnije rešenje od .NETa ali problem je u tome što dok se Microsoftov proizvod razvija pod čvrstim project managementom koji zahteva rezultate u dogledno vreme Open source varijanta se i dalje zasniva na slobodnoj volji iliti u prevodu na "kad bude biće" filozofiji.
Dakle, koga ozbiljno zanima krosplatformsko programiranje, taj treba u sirokom luku da zaobidje C# i .NET i da gleda u neki stadardniji jezik koji nema Visual prfiks i koji ima sto manje dodirnih tacaka sa M$-om. Java, C++, C, Fortran... sve je bolje od cetarabe.Upravo tako ali logično pitanje koje svako treba samom sebi odmah na početku da postavi je da li želi da krene putem krosplatformskog programiranja ukoliko ima nameru da se ozbiljnije upusti u softversku industriju. Za visokokalibarske aplikacije koje daleko prevazilaze čistu želju da se nešto odradi u slobodno vreme za široke narodne mase potpuna orijentacija na jednu razvojnu i produkcionu platformu nije nikakav problem.
Dakle ono sto sam ja rekao je zealotski trash a ovo je na mestu? Postovi su vam k'o M$-ove reklamne poruke, vise mi smisla ima ono Ballmerovo rezanje "Developer, Developer " nego ovo sto sad citam na stranicama cenjenog foruma.
Mono ne moze da bude kvalitetnije resenje od .NET-a jer je triple-licenciran i sad ima i MIT licencu. To znaci da sve inovativno sto Miguel de Icaza i Co izmisle moze nesmetano da nadje put i u NET. Svaka optimizacija, svaka linija koda. MIT X11 je non-copyleft licenca i M$ ce to koristit i da uvek ima korak ispred. Nebi im bilo prvi put da to rade (khm, WinNT networks stack stolen form BSD, khm) a sigurno ni poslednji. Ne rade Mono lenji programeri, to su ljudi koje Novell placa da full time rade na Mono projektu i nema ni tu "kad bude bice". Plus jos neko naidje uvek sa nekim patchom sa strane. Prblem je sto sav razvoj Mono-a ne pravi konkurenciju nego pomaze M$-u zbog te MIT licence koja je neadekvatna za ovakav projekat. Ali verovatno ju je M$ stavio kao uslov, inace poteze patente.
Mickie, da je open source zajednica uspela da shvati šta je do sada sa tolikim brojem "zaposlenih" mogla da uradi veruj mi mi odavno ne bi smo više pričali o .NETu ali sve dok ista smatra da su advokatura i razne pravne za*****cije važnije od pravog i ozbiljnog project managementa Microsoftu niko nema prava da zameri što realno u ovom trenutku ima mnogo bolju platformu za razvoji i eksploataciju komercijalnih aplikacija.
boshkodj
12.11.2009, 11:28
Ma prosto. Ako toliko mrzite microsoft , obrisite windows , instalirajte drugi OS i batalite 80% programa koje koristite. I nema vise nervoze ;)
To zapravo nema nikakve veze sa temom, koja je: .NET programiranje, da ili ne?
Odosmo zaista u offtopic, ali diskusija je vrlo interesantna, pa mi je zao da brisem postove :)
Mislim da je C# korisno znati... spadam u one hardcore programere koji su pisali rucno interfejs pomocu WinAPI-ja, samo sto sam ja isao u krajnost, pa to sve radio u assembleru za Windows. Tada sam bio mlad, lud i imao vremena za takve stvari. Sticajem okolnosti C# sam morao da savladam dok sam radio u bivsoj firmi. Sada ga pretezno koristim za razvoj alata; a i zgodan je kada prihvatim neki honorarni posao sa strane kada klijent trazi da mu aplikacija radi samo u Windowsu. Skoro sam radio neku aplikaciju koja je trebala da uradi prostu stvar, ali je bilo hrpa kontrola u podesavanjima. Zavrsio sam je za 2h pomocu C# i uzeo 50e. Kad budem dobio sedmicu na loto-u i ne budem vise morao da brinem odakle ce da mi kaplje novac, rado cu se baciti na open-source i cross-platform resenja.
Bojim se da zaboravljate koji je operativni sistem danas najkorišćeniji na desktop računarima.
Bojim se da ti zaboravljas da nicija nije gorela do zore. Windows je sada najpopularniji OS, ali to moze da se promeni preko noci. Ti si indirektno (ma sta indirektno, direktno) rekao da te ne zanima 10% trzista koje sad drze OS X i linux (neznam odakle ti tih 2% kojih pominjes, verovatno mislis samo na dektop linux ali eto postoiji i OS X) i da te zanima samo ono gde su pare(sto nije nista ruzno, mora da se zivi od necega). Nisu pare bas toliko tamo gde mislis da jesu.
Kad budem dobio sedmicu na loto-u i ne budem vise morao da brinem odakle ce da mi kaplje novac, rado cu se baciti na open-source i cross-platform resenja.
A i ti zaboravlas da pare leze i u open source.
Posto vecinu ljudi ne zanimaju fraze 'sloboda', 'nepotkupljivost', 'bojkot monopola', 'nezavisnost od velikih kompanija', 'nezavisnost od brendova' koje prirodno idu uz open source, evo jedne reci koja nas sve interesuje: PARE! Koliko jedan pojedniac ili kompanija moze da izgubi tako sto insistira na M$ certified proizvodima koji su sami po sebi neprijateljski (i iz politickih razloga nekompatibilni) prema svemu sto nije M$ a pogotovu prema onom sto je Open Source. Dakle samo nekolio primera, imajte da da kada u daljem tekstu kazem 'ti', obrcam se bilo kome i nikome posebno. Pricam uopsteno.
1.Biranjem C# umesto nekog krosplatformskog jezika otudjujes OS X korisnike koji cine 8% desktop trzista. Ljudi koji ne zale pare za hardver ne zale ni za softver. Razna istrazivanja pokazuju da je piraterija medju Mac korisnicima na mnogo nizem nivou nego medju Windows korisnicima koji piratizuji i ono sto im treba i ono sto im ne treba. Mac korisnici imaju naviku da placaju softver, sti ne moze da se kaze za prosecnog Djoku koji koristi prozore. Mnoge kompanije imaju veci prihod na Mac trzistu nego na Windows trzistu iako bi neko na prvi pogled rekao suprotno.
2.Biranjem jezika koji se ne koristi u free & open source zajednici ostajes nekompatibilan sa milijardama redova otvorenog koda(mahom C i C++). Sad ce neko da se zapita sta ce mu to, ali neka samo cita dalje. Dosta koda je pod dopustajucim licencama kao sto je MIT X11, BSD, Apache, etc, etc... Sve ove licence dozvoljavaju eksplotaciju Open Source sofvera bez vracanja icega za uzvat. Nikakav M$-ov RAD IDE ne moze da se takmici sa time. Kod M$-a dobijes gotove dugmice i prozore a ovde dobijes gotov program koje mozes da izmenis kako ti se svidi i da mu metnes tvoj trademark. Mozes da prodajes program, samo u slucaju MIT-a ne smes da tvrdis da si ti napravio program a ako te neko pita kazi 'No comment'. U slucaju BSD-a samo stavis 'Regents of Berkley Unuversity' negde u dokumentaciji i legalan si. OS X izbacuje tu poruku pri verboose bootu. Naravno, ako budes nepazljiv u odnosima sa javnoscu, mozes da se desi da Groklaw (http://www.groklaw.net/) napravi kampanju protiv tebe i da dobijes sajt u svoju (ne)cast kao sto ima Novell (http://boycottnovell.com/wiki/index.php/Main_Page), ali koga to interesuje. Ionako mogu samo da te mrze. M$ to radi (http://technet.microsoft.com/en-us/library/bb878108.aspx) tako da (https://forum.defcon.org/showthread.php?t=6512) mora da je ispravno:rolleyes:. Samo se drzi podalje od GPL-a jer onda moras da otvoris kod a prtpostavljam da ovde niko to ne zeli da radi, barem ne dok se program dobro prodaje. A ako bas imas zelju da pomognes projektu od koga uzimas, onda lepo uzmi starije verzije svog programa i otvori ih pa tako pomogni. A ako radis custom programe po narudzbini, onda nemoras ni da izbegavas GPL. Uzmi lepo bilo koji GPL program, prepravi ga onako kako ti musterija trazi, isporuci mi racun, disk sa programom a ako trazi onda i disk sa izvornim kodom. I opet si legalan. Po GPL-u, duzan si da das izvorni kod samo onome kome das/prodas program. Prodavanje programa je dozvljeno ali mora da ide u paketu sa izvornim kodom. Free as in freedom, not price. Koga zanima vise, neka procita ovo (http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#WhatDoesGPLStandFor). Tako da prica da u slbodnom softveru nema para pada u vodu k'o Milorad Cavic. Lakse ces je zaraditi pare od slobodog softvera nego od zatvorenog.
3.Veliki broj Windows programa je potrebna iskljucivo zbog mana Windows-a. Registry Mechanic, Tune Up i slcno, zatim razni AntiMalware i AntiVirus programi... sve je to bilo vrlo prfitabilno dok M$ nije izbacio M$ Security Esentials. Istog dana su akcije na berzi mnogih AV kompanija stucnule. Da li bas svako zeli da njegov program bude koristan samo dok M$ ne zakrpi rupu i dok zakrpu ne priloze uz Windows? Ko nezna odgovor na ovo pitanje neka ide da pita Netscape a usoro moze da pita i Borland. Da, kao sto neko rece, M$ sistematski, planski i strpljivo radi na unistavanju svih ostalih kompanija. Open Source je jedina alternativa koju ne mogu da uniste bas iz pravnih razloga i pametnih licenci koje ljude mahom ne interesuju ali koje nude veliku dobit za sve. I one koje zanima zarade, i one koje zanima samo funkcionalnost i one koje samo zanima sloboda. Mozes da imas sva tri u jednom ako odigras kako treba.
I tu cu da stanem, 3 tacke je dovoljno i necu da gnjavim vise. Sto se tice brisanja poruka, mislim da bi bila steta iako ima dosta offtopika. Moj konstruktivni predlog je da se off topik izmesti u drugu temu i da se ako mora i zakljuca. Ali mislim da je ovde dosta zanimljivog i korisnog. C# mozda nije totalno smece ali je oruzje za postizanje djavolskih planova preko glave obicnih ljudi i svako ko ga bira za svoj rad mora toga da bude svestan i da to svesno prihvati ili odbije. Da ne bude posle kad stvari postanu ugly 'da sam to znao u ono vreme nebih ucio C#'. Takodje C# nije sveti gral programiranja kao sto ga neki predstavljaju. Programski jezik kao i svi drugi ako ga gledas sa tehnicke strane.
To be continued... (character limit)
Bez obzira na sve ja ostajem da ucim C# zato sto mi odgovara,svim mojim potrebama.Mozda ce se u buducnosti nesto promeniti...
Ako je tebi C# lepo legao i svestan si svega onda ok. Uzdravlje da programiras. Ali ne ocekuj da se bilo sta promeni. Strateski planovi jedne kompanij se ne menjaju tek tako. Java (slicno vazi i za C i C++) ima probleme koji su iskljucivo samo tehnicke prirode. Ali tehnologija ide napred i svaki tehnicki problem na kraju biva resen. Jedini razlog zasto nije reseno do sada je to sto Sun nema kolicine novca koje M$ ima. Ali Oracle zato ima. Oracle ce da poboljsa Javu, ali M$ nikad nece da promeni misljenje da je Windows Bog i da svi ostali sistemi trebaju da umru. Lakse je popraviti tehnicki problem nego promeniti kurs jednog takvog gusarskog broda kakav je M$. To je jedini razlog zasto nekad treba staviti filozofiju ispred pragmatizma i zasto je neke tehnologije najpametnije zaobici bez obzira koliko ti je stalo da ih koristis. Ne volim ni ja sto je to tako ali tako je.
ENDE
Koliko jedan pojedniac ili kompanija moze da izgubi tako sto insistira na M$ certified proizvodima koji su sami po sebi neprijateljski (i iz politickih razloga nekompatibilni) prema svemu sto nije M$ a pogotovu prema onom sto je Open Source.Možeš li molim te da navedeš kako tačno kompanija koja reši da svoj razvoj ili produkciju zasnuje na Microsoftovoj razvojnoj platformi kao što je recimo .NET "može mnogo da izgubi"? I kakvu ti političku korektnost prema konkurenciji očekuješ u kapitalističkom svetu gde je konkurencija jedan od osnovnih pokretača razvoja?
Razna istrazivanja pokazuju da je piraterija medju Mac korisnicima na mnogo nizem nivou nego medju Windows korisnicima koji piratizuji i ono sto im treba i ono sto im ne treba.
Mac korisnici imaju naviku da placaju softver, sti ne moze da se kaze za prosecnog Djoku koji koristi prozore.
Mnoge kompanije imaju veci prihod na Mac trzistu nego na Windows trzistu iako bi neko na prvi pogled rekao suprotno.
A izvori ovih informacija su? Gde to tačno stoji da je ljubitelj jednog specifičnog operativnog sistema pošteniji od Đokice? :D
Kod M$-a dobijes gotove dugmice i prozore a ovde dobijes gotov program koje mozes da izmenis kako ti se svidi i da mu metnes tvoj trademark.Tačno je da su .NET bazirani programi vizuelno prilagođeni Windowsu ali je potpuno netačno da je bilo ko ograničen na isključivo korišćenje onoga što dobija uz razvojno okruženje. Na netu se može naći bukvalno hiljade i hiljade različitih besplatnih i komercijalnih komponenti koje mogu da se prilagode potrebama aplikacije a ako ni to nije dovoljno svako može da se lati posla i napiše sam potpuno novu komponentu koja će da mu završi posao tako da tu jednostavno ne vidim problem.
Po GPL-u, duzan si da das izvorni kod samo onome kome das/prodas program.Do ove rečenice sam samo naslućivao da nisi potpuno upoznat sa odredbama GPLa a sada sam potpuno siguran da neke stvari jednostavno nisi dobro shvatio. Kako pobogu možeš da napišeš ovakvu dezinfomaciju? :icon_scra
Da probam da objasnim. Ako ti lično preuzmeš neki kod sa neta koji je objavljen pod GPLom isto tako si dužan da ga objaviš pod istom licencom ako nad njim vršiš bilo kakve izmene! Nakon što izvršiš izmene možeš slobodno da ga tako modifikovanog prodaješ ali samo pod uslovom da uz binarni oblik programa ponudiš (a kupac ne mora da prihvati) i izvorni kod. Nakon toga ti si u obavezi da tako modifikovani izvorni kod objaviš javno tako da svako ko poželi može da ga slobodno preuzme i sebi recimo kompajlira aplikaciju! To znači da ja mogu recimo već odmah posle tog klijenta da se pojavim kod tebe i da ti tražim izvorni kod i ti ako ne želiš da kršiš odredbe GPLa moraš da mi daš izvorni kod! Nikakvo ograničenje tipa "samo klijent može da dobije izvorni kod" ne sme da postoji! To je fundamentalna osnova GPLa i jedno od njegovih prvih i osnovnih pravila.
Java (slicno vazi i za C i C++) ima probleme koji su iskljucivo samo tehnicke prirode.Koje probleme po tebi imaju recimo Java, C i C++? Šta ti najviše smeta kod njih?
Da pokušam da se vratim na temu i bar nekako spasim svoju "zlu" dušu :) Za sve ove godine koliko sam u softverskim vodama (bilo amaterski bilo profesionalno) ja lično smatram da je kombinacija C# i .NETa nešto najbolje što je moglo da zadesi RAD razvoj nezavisno o tome o kojoj platformi pričamo. Dugo sam se mučio sa izrodom kakav je Java a o svojoj C i C++ pozadini neću ni da govorim. Ono što je meni najbitnije u celoj priči je da me ne interesuje ko će koga da tuži i ko je kome šta maznuo niti da li će mi zbog moralne (softverske) prljavštine duša goreti u paklu već da pred sobom imam alat kojim ću mnogo brže završiti posao koji radim nego da se Sizifovski držim svoje "moralne" strane i čisto dokazivanja radi ko zna čega koristim arhaične tehologije kojih se i njihovi tvorci već stide.
Do ove rečenice sam samo naslućivao da nisi potpuno upoznat sa odredbama GPLa a sada sam potpuno siguran da neke stvari jednostavno nisi dobro shvatio. Kako pobogu možeš da napišeš ovakvu dezinfomaciju? :icon_scra
Da probam da objasnim. Ako ti lično preuzmeš neki kod sa neta koji je objavljen pod GPLom isto tako si dužan da ga objaviš pod istom licencom ako nad njim vršiš bilo kakve izmene! Nakon što izvršiš izmene možeš slobodno da ga tako modifikovanog prodaješ ali samo pod uslovom da uz binarni oblik programa ponudiš (a kupac ne mora da prihvati) i izvorni kod. Nakon toga ti si u obavezi da tako modifikovani izvorni kod objaviš javno tako da svako ko poželi može da ga slobodno preuzme i sebi recimo kompajlira aplikaciju! To znači da ja mogu recimo već odmah posle tog klijenta da se pojavim kod tebe i da ti tražim izvorni kod i ti ako ne želiš da kršiš odredbe GPLa moraš da mi daš izvorni kod! Nikakvo ograničenje tipa "samo klijent može da dobije izvorni kod" ne sme da postoji! To je fundamentalna osnova GPLa i jedno od njegovih prvih i osnovnih pravila.
Istrgao si moju izjavu iz konteksta, ali cak ni tako nije netacna. Naravno da mora pod istom licencom, nisam rekao suprotno. Izvorni kod si duzan da nacinis dostupnim onima kome i program nacinis dostupnim (bilo po ceni ili dzabe). Dakle ako svoj program stavis kao besplatan download na internetu, moras i kod isto tako. Ako download sa sajta zahteva placanje, kod ne mora da bude objavljen kao besplatni download, nego je besplatan samo za one koji plate download program. Dokaz - http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#DoesTheGPLAllowDownloadFee
Does the GPL allow me to charge a fee for downloading the program from my site?
Yes. You can charge any fee you wish for distributing a copy of the program. If you distribute binaries by download, you must provide “equivalent access” to download the source—therefore, the fee to download source may not be greater than the fee to download the binary.
Ali, dovoljan je samo jedan kupac koji ima svoj prostor na netu... ili rapid share nalog, da kod postane dostupan i ostalima. Davanje/prodavannje koda pod NDA je strogo zabranjeno. Kupac mora da bude slobodan da ga deli sa kim god hoce. Recimo moze neko da kupi program i da hostuje izvorni kod zajedno sa samim programom u binarnoj formi i kod na svom sajtu. Opet, moze da kosta a moze i dzabe i naravno taj “hoster” nemora nista da pita tebe (a kamoli da ti plati) iako je program kupio od tebe. To je razlog zasto komapnije ipak ostavljaju izvorni kod kao besplatan download iako se binarni format mozda placa, zasto da cekaju prvog kupca da on to uradi umest njih kad je elegantnije da to urade sami. To sam izostavio da kazem jer se podrazumeva ali ovde neko izgleda ceka svaku moju recenicu na noz.
Na ostala pitanja cu ti odgovoriti kasnije jer sam trenutno na poslu. Ovo sam jednostavno morao da odgovorim cim sam video, jer smatram brukom kad me neko optuzi da neznam odredbe GPL-a.
PS: Evo jos jedan link (http://www.gnu.org/philosophy/selling.html) koji moze da bude koristan.
Nema tu neke preterano velike filozofije oko GPLa osim što su njeni pomalo smotani tvorci uspeli od kiselog kupusa da naprave sarmu bez mesa pa većina ljudi iz one ogromne dokumentacije ne može ni da pohvata šta koja stavka zapravo znači.
Ta stavka koju citiraš Mickie iz GPL FAQa se ne odnosi na cenu slobodnog softvera koji objavljuješ i stavljaš na uvid ostatku zajednice nego na nešto što se zove "transportni troškovi i troškovi održavanja". Citirana stavka ti bukvalno samo dozvoljava da slobodno proceniš koliko treba da naplatiš svoj rad da na kraju ti sam ne bi bio na gubitku jer na aktivan način doprinosiš zajednici. Na kraju krajeva svako ko se ikada malo dublje zamislio nad problematikom slobodnog softvera valjda je shvatio da slobodan softver u stvari realno nema cenu tj. nikada ali apsolutno nikada sam softver nije ono što se naplaćuje. Ono što se u stvari naplaćuje se uvek svodi na podršku, razne troškove (recimo transport ili troškove vezane za vrednost medija itd.) ali generalno sam slobodan softver se i pored tolike halabuke da slobodno nije isto što i besplatno na kraju svede na to.
Ali, dovoljan je samo jedan kupac koji ima svoj prostor na netu... ili rapid share nalog, da kod postane dostupan i ostalima.Poenta uopšte nije u downloadu jer to nije jedini način na koji program može da se distribuira što GPL poprilično dobro uzima u obzir. Poenta je u tome da ja odmah nakon što ti rešiš da "objaviš" svoj modifikovan program prodajom mogu od tebe da tražim recimo da mi pošalješ disk sa kopijom tog programa ili da ga na neki drugi način objaviš. I ti ćeš moći da mi u zajedničkom dogovoru samnom naplatiš samo cenu koštanja medija i/ili transporta (potencijalno i ono što ti proceniš da vrede tvoje izmene) ali kod ne smeš da držiš u tajnosti u tom slučaju. Nema tu neke mnogo velike filozofije.
Na ostala pitanja cu ti odgovoriti kasnije jer sam trenutno na poslu. Ovo sam jednostavno morao da odgovorim cim sam video, jer smatram brukom kad me neko optuzi da neznam odredbe GPL-a.Niko ovde nikoga niti bruka niti optužuje! Poenta mojih postova je da neke stvari iz prethodnih postova jednostavno nisu tačne i to moraš da priznaš i ti sam. Mislim kako shvatiti ovu rečenicuPo GPL-u, duzan si da das izvorni kod samo onome kome das/prodas program.kad ovo jednostavno nije istina i potpuna je suprotnost od onoga što GPL propagira :eek: Da stvar bude, uslovno rečeno, stiče se utisak da je kupac programa ključna karika u celom sistemu što opet nije tačno. Ceo sistem GPLa počinje da deluje od onog trenutka kada onaj ko modifikuje kod taj kod preuzme ili ako ga piše od nule reši da ga objavi pod GPLom.
Pošto ovo zaista ode u ogroman offtopic (a kako bi i bilo drugačije na ovom forumu :D) završiću svoju raspravu na ovu offtopic temu konstatacijom da nisam sujetna snobina koja pošto-poto traži razlog da nekoga stavi na tapet ali iskreno rečeno iznervirala me je tvoja potreba Mickie da u poslednje vreme kad god stigneš blatiš stvari koje jednostavno ne voliš i to još potkrepljuješ argumentima u vidu potpuno netačnih informacija. Da stvar bude gora izvlačiš zaključke na osnovu iskustva koje si do sada imao a koliko ja mogu da zaključim ona su jako tanka kada je u pitanju komercijalan softver visokog kalibra. Za klasično amatersko ili možda bavljenje razvojem softvera iz dobre volje (ono što je i srž Open sourcea) imaš argumente koji su potpuno validni ali sve ostalo ti je ispunjeno čistim (rekao bih pomodarskim) hejtom za koji jednostavno nemam razumevanja.
Evo da ti citiram opet, ali sada cu da boldujem druge reci da ti bude jasnije:
Does the GPL allow me to charge a fee for downloading the program from my site?
Yes. You can charge any fee you wish for distributing a copy of the program. If you distribute binaries by download, you must provide “equivalent access” to download the source—therefore, the fee to download source may not be greater than the fee to download the binary.
Cinjenica je da si me napao nizasta, a sada se izvalacis iz rasprave samo zato sto nisi u pravu. Ni ja ne volim ovakve rasprave i kad mi neko postavlja retoricka pitanja bez da pazljivo procita ono sto sam pisao. Nigde nisam napisao da mrzim *sav* vlasnicki softver. Cak i na Linuxu koristim neke zavorene aplikacije i ne mislim da treba njihove izdavace nataci na kolac. Windows ne koristim, ne zato sto ga mrzim nego zato sto mi je poceo da lici na obicnu igracku cim sam malo bolje upoznao linux. Da se vratimo na GPL samo za trenutak. Nedao bog da je GPL toliko neprijateljski nastrojen prema open source biznisu koliko pricas. Da je stvarno tako, nebi ovoliko kompanija radilo na linux kernelu, nebi velike kompanije izdavale svoj softver pod GPL... GPL ne otima slobodu da zaradjujes od svog rada !
Da pokušam da se vratim na temu i bar nekako spasim svoju "zlu" dušu. Za sve ove godine koliko sam u softverskim vodama (bilo amaterski bilo profesionalno) ja lično smatram da je kombinacija C# i .NETa nešto najbolje što je moglo da zadesi RAD razvoj nezavisno o tome o kojoj platformi pričamo. Dugo sam se mučio sa izrodom kakav je Java a o svojoj C i C++ pozadini neću ni da govorim. Ono što je meni najbitnije u celoj priči je da me ne interesuje ko će koga da tuži i ko je kome šta maznuo niti da li će mi zbog moralne (softverske) prljavštine duša goreti u paklu već da pred sobom imam alat kojim ću mnogo brže završiti posao koji radim nego da se Sizifovski držim svoje "moralne" strane i čisto dokazivanja radi ko zna čega koristim arhaične tehologije kojih se i njihovi tvorci već stide.
Sad se hvatamo i za dusu? I meni je najbitnije da posao zavrsim sto efikasnije, ali volim i da bude i zabavno. Inace zasto raditi? Odem u njivu i sadim krompir, i od toga moze da se zivi a monotono je. C# mi apsolutno nije zabavan (a probao sam i njega) jer nema izazova. Jedini izazov je naterati prost "hello world" program (sa GTK# GUI-em) da radi svuda, a to sa C dobijas rekompajliranjem a u Javi po defaultu. To nije izazov koji trazim. Hocu da to imam automatski. Izazov treba biti u samom osmisljanju programa.Mene tuzbe u IT industriji vise zanimaju radi zabave, naravno da se ne potrisem oko toga, ali ne zelim da koristim nesto sto je namerno napravljeno da bude magnet za tuzbe i sto sutra mozda nece raditi na platformi/platformama koje koristim i ciljam da razvijam za njih.
Ja verujem ljudima kad kazu da nesto nije savrseno, ali automatski znam da lazu kad kazu da je nesto savrseno. C# je daleko od savrsenog. A krosplatformnost mi je prokleto vazna. Bez nje ostaje samo jedan OS. To je lose.
Tačno je da su .NET bazirani programi vizuelno prilagođeni Windowsu ali je potpuno netačno da je bilo ko ograničen na isključivo korišćenje onoga što dobija uz razvojno okruženje. Na netu se može naći bukvalno hiljade i hiljade različitih besplatnih i komercijalnih komponenti koje mogu da se prilagode potrebama aplikacije a ako ni to nije dovoljno svako može da se lati posla i napiše sam potpuno novu komponentu koja će da mu završi posao tako da tu jednostavno ne vidim problem. Opet ne citas ono sto sam napisao. Ne pricam o ovakvim ili onakvim dugmicima, pricam o stabilnoj OpenSource osvnovi, bilo u LGPL bibliotekama ili samom endzinu programa pod dopustajucom licencom ili cak pod GPL-u. Sa tim RAD ne moze da se takmici, iskoriscavanje koda i njegova a time i njegova konstantna nadogradnja je najveca prednost open sorsa. Mozda sam bio malo cinican linkujuci boycottnovell.com , ali ozbiljno mislim da svaki freelance programer moze da koristi softver otvorenog koda u svoju korist a u isto vreme i pomazuci razvoj istog. Da je GPL toliko neprijateljski prema biznisu kao sto neki hoce da predstave, nebi bio ni ovoliko raspostranjen. Mnoge kompanije ga korste, i ne pitaj me da nabrajam jer mozes da pogledas na Vikipediji.
Možeš li molim te da navedeš kako tačno kompanija koja reši da svoj razvoj ili produkciju zasnuje na Microsoftovoj razvojnoj platformi kao što je recimo .NET "može mnogo da izgubi"?
Jesi li ti citao ono sto sam ja pisao ili si se samo uhvatio jedne recenice o GPL-u? Sve sam ti napisao, ali ajde opet da probijem character limit samo za tebe. Jednostavno, kad neko osniva softversku kompaniju na zatvorenom kodu (bila to one-man firma, ili grupa programera sa iskustvom), svaka linija koda i svaki man-hour mora da se plati dok se ne dodje do finalnog proizvoda koji moze a ne mora da uspe na trzistu kojim vec dominiraju ogromne kompanije koje imaju dovoljno para da marketingom udare bas tamo gde je novonastala kompanija najslabija – krebibilitet i poverenje korisnika. Sa druge strane, ako se kompanije svoj projekat bazira na otvorenom kodu i pronadje odgovarajuci biznis model koji u razvoj uklucuje i zajednicu, onda troskove svog postojanja dramaticno smanjuje a vec sam ti nacrtao kako od otvorenog koda moze da se zaradi . /*Nije kao da nisi znao, ali me iz nekog nepoznatog razloga teras da pisem romane, i hvatas svaku recenucu koja bi mogla da zvuci onako kako ti hoces ako se istrgne iz konteksta i zdravog razuma. Mislim da to zovu trolovanje/*. Dakle open source moze da smanji takozvanu barijeru za ulazak na trziste ("barier to entry"). Koje kompanije profitiraju? Red Hat je poceo tako i dobro mu ide, zatim MySQL, PostgresQL... ma kome ja ovo nabrajam...
Ko gubi sa C# ? Pa naravno ne Micro$oft. Ne velike kompanije kojima ove open source kompanije kvare racunicu. Gube startup kompanije i programeri koji njih uzimaju za uzor. Takve kompanije traju dok je M$-u potreban pokusni kunic (can u say Ximian, Novell), posle bivaju izbrisane sa mape.
Koje probleme po tebi imaju recimo Java, C i C++? Šta ti najviše smeta kod njih?
Opet retoricko pitanje, ali evo ti:
Java – nekim ljudima se ne svidja Swing, meni se svidja. Ja volim da mi program izgleda i radi isto na svakom kompu koji dohvatim, razliciti dugimici na raznim OS-ovima mogu samo da zbunjuju nekoga koga ne drzi jedan OS. Ono sto mi se ne svidja je veci memorijski otisak, i manja mogucnost koriscenja low level funkcija... OS ne mere u Javi bez bar malo C-a ili Assemblera. Dakle treba joj veca optimizacija na prvom mestu, a treba i nesto ponuditi kao Alternativu za Swingu ovima koji ga ne vole. Kazu ljudi nece GTK i Qt da rade kako treba, to nisam probao (drzim se Swing-a) pa cu verovati na rec iskusnijima.
C++ - Njega ne koristim za sad, mada me kopkaju kDevelop i Qt biblioteke. Rekao sam da ima mane vise iz kurtoazije, necu da tvrdim da je bilo sta savrseno za razliku od C# zilota. Znam da je C++ nadogradnja na C, ali mi ta nadogradnja trenutno nije potrebna, to ostavljam za kaasnije kada savladam C u potpunosti. C++ mi trenutno nije prioritet.
C – On mi je prioritet. Po meni nema problema. Na C nemam bas nikakve zamrke, sintaksa se lako pamti, sve je prirodno, GCC mi je postao najbolji drugar. Za mene je savrsen jezik. Nekima se ne svidja sto je razvoj aplkacija nesto duzi nego kad prevlacis prozore i dugmice, ali ja volim da isprljam ruke i mislim da:
#include <stdio.h>
int main()
{
printf( " Nema leba...\n bez motike");
getchar();
printf( "Nisi programer ako uopste ne kucas i citas kod\n nego samo prevlacis prozore i dugmice\n");
getchar();
return 0;
}
Neznam da li ovo rdi, nisam palio NetBeans da probam ti mi kazi:D. Ali volim sto je sa C programiranje zabavno. Eto ti RAD, u za 2 minuta program bez kompajlera, sve naopamet. Nije nista posebno ali sta ocekujes od coeveka za koga kazes da je tanak u svemu sa znanjem i da je napaljenik koji siri hejt iz pomodrstva. I eto, probio sam character limit ponovo i nisam napravio mnogo typografskih gresaka.
Po svemu što si napisao, mogu samo da zaključim da u životu nisi napravio nijedan program koji ima više od dva prozora i 200 redova koda.
A ako jesi, objasni mi, života ti, kako bi u čistom C-u, koristeći WinAPI, napravio non-MDI program od dva prozora gde, recimo, jedan ne bi bio modalan i ne bi imao dugmiće za zatvaranje ili Ok/Cancel, nego bi nešto radio u odvojenom threadu i o tome korisnika obaveštavao preko progress bara, a onda se zatvorio kad se posao završi, dok bi korisnik radio nešto drugo u prvom prozoru, recimo crtkao po canvasu? I kakve bi veze takav horor šou od koda imao sa RAD-om?
Mislim, skucao si nešto u C-u što izgleda kao prva lekcija iz programiranja za srednju školu, kažeš da je to "getting dirty" i očekuješ da neko poveruje da si pro? Pa najbazičniji Java i C# program sa konzolnim outputom je složeniji od toga! Jel troluješ namerno ili kako? Lepo reci, ljudi nemam mnogo iskustva, neće se niko ljutiti. Ja i dalje ne verujem šta čitam na ovom forumu, ljudi koji poseduju bazično teoretsko poznavanje programiranja objašnjavaju nekome šta je dobro za višegodišnju praksu i razvoj složenih aplikacija, pa ovo je bre bolje od gornjeg dela foruma gde ljudi koji nikad nisu imali jedan tip hardvera ubeđuju druge zašto je taj hardver krš! Vrh potpuni!
Ponekad i ja zaista pomislim da ovom forumu treba jedan "epic fail" smajli :D
Mislim ne znam tačno od koje besmislene rečenice prvo da krenem kada vidim sledeće citate? :eek:
C# mi apsolutno nije zabavan (a probao sam i njega) jer nema izazova.
Ja verujem ljudima kad kazu da nesto nije savrseno, ali automatski znam da lazu kad kazu da je nesto savrseno. C# je daleko od savrsenog.
Znam da je C++ nadogradnja na C, ali mi ta nadogradnja trenutno nije potrebna, to ostavljam za kaasnije kada savladam C u potpunosti.
Ali volim sto je sa C programiranje zabavno.
Red Hat je poceo tako i dobro mu ide, zatim MySQL, PostgresQL...
Kao prvo, ne znam kako neko ko je "probao" bilo koji programski jezik može da donosi bilo kakve a kamoli finalne zaključke o njemu? :eek: Programski jezik (korektniji termin bi verovatno bio razvojno okruženje) i ne treba da bude izazov programeru ako ovaj hoće da od njega živi. Šta je onda poenta jezika? Da mi bude što je moguće veći izazov? :confused: Čemu to osim gubljenju vremena? Da stvar bude gora kao početnik donosiš zaključak da je C# "daleko od savršenog" :eek: Na osnovu kojih argumenata i iskustva to tvrdiš?
Zatim lepiš epitet C++-u da je, pajz sad, "nadogradnja" C-a... Osim što dele skoro identičnu sintaksu metodologije rada ova dva "jezika" su potpuno različite i ne možeš da tvrdiš da ti C++ "još" ne treba jer će ti svako ko ima bar i malo iskustva u pisanju ozbiljnijih aplikacija u ova dva jezika reći koliko su u produkcionim okruženjima ova dva "jezika" slična. Takođe pominješ recimo da ti je programiranje u C-u zabavno ali rad na ozbiljnim projektima često nije tako zabavan. Pitao bih te da li bi se "zabavljao" u C-u kada ostaneš par puta prekovremeno da bi stigao jutarnji deadline i da li bi ti tada bilo važnije da se dičiš nad svojih 50% gotovog umetničkog koda u C-u ili 95% u nekom Visual okruženju ;)
Kao da to nije dovoljno kasnije stavljaš Red Hat, MySQL i PostgreSQL u isti koš. Kao prvo Red Hat opstaje zbog podrške a ne prodaje svog OSa. Tu leži poenta onoga što ja tebi pokušavam da objasnim sve vreme ali ti uporno obilaziš oko tih reči kao kiša oko Čačka. MySQL sa druge strane nije čak ni potpun OpenSource a na stranu to što i on živi od podrške svom RDBMSu. I šta onda PostgreSQL radi u tom košu kad je on poptun OpenSource?
A sad poslastica. Mane programskih jezika.
Java – nekim ljudima se ne svidja Swing, meni se svidja. Ja volim da mi program izgleda i radi isto na svakom kompu koji dohvatim, razliciti dugimici na raznim OS-ovima mogu samo da zbunjuju nekoga koga ne drzi jedan OS.Kladim se da nisi znao da i Swing ima poseban hook sistem putem kojeg možeš u potpunosti da izmeniš izgled Swing aplikacija ;) Guglaj "pluggable look and feel". Misliš da se taj sistem slabo koristi čisto da bi se održala uniformnost Java aplikacija ?:opanachke
C++ sam manje više dotakao gore.
C – On mi je prioritet. Po meni nema problema. Na C nemam bas nikakve zamrke, sintaksa se lako pamti, sve je prirodno, GCC mi je postao najbolji drugar. Za mene je savrsen jezik.Eeej nesrećo jedna :) Da si ti ikada obarao ruke sa pokazivačima, ulančanim listama, stablima i ostalom aspidama iz čistokrvnog C-a ne bi ti sada ovde ovako govorio :D Danas da me neko natera da uradim bilo šta komplikovanije od struktura u C-u opalio bih mu šamar i odmah rekao da je Isus rekao da uvek valja okrenuti i drugi obraz ;)
Da remiziram. Mislim da osnovni problem u celoj priči leži u sledećoj rečenici.
Mozda sam bio malo cinican linkujuci boycottnovell.com , ali ozbiljno mislim da svaki freelance programer moze da koristi softver otvorenog koda u svoju korist a u isto vreme i pomazuci razvoj istog.Freelance programeri i oni koji to nameravaju da ostanu ceo svoj profesionalni vek mogu da ignorišu zahteve ozbiljne softverske industrije jer kao pojedinci nemaju apsolutno nikakve šanse da u tom rejonu uspeju i ubrzo ih proguta pomrčina konkurentnosti. Slična stvar važi i za one koji imaju nameru čisto da se "zavabljaju" razvojem softvera jer je prva stvar koju treba da shvate ako uopšte krenu putem bilo kog ozbiljnog posla da postoji jasna razlika između zabave i biznisa. Ko bude mešao ove dve stvari veoma će brzo u ozbiljnim softverskim vodama da počne da guta taster po taster sa tastature na kojoj je dok je bio mlad i neiskusan mislio da je bitno zabavljati se :)
Da ne postoji potreba za brzim pravljenjem aplikacija i dan danas bi radili u asembleru...
#include <stdio.h>
int main()
{
printf( " Nema leba...\n bez motike");
getchar();
printf( "Nisi programer ako uopste ne kucas i citas kod\n nego samo prevlacis prozore i dugmice\n");
getchar();
return 0;
}
:boodala: Vreme je novac, sto automatski daje prednost "prevlacenju prozora i dugmica." Veoma plitko misljenje od tebe.
aman bre ljudi, niko od vas ne zna sta prica.
BASIC je jedini jezik koji vredi nauciti i tacka.
sve ostalo su gluposti.
mislim, evo :
10 PRINT "Vidite kako je dobro, zar ne ?"
20 GOTO 10:
Neznam da li ovo rdi, nisam umeo probam, ti mi kazi.
ali volim sto je BASIC tako jednostavan za ucenje.
nisi programer ako ne pises bejzik.
Nisi programer ako ovaj kod ne koristis za pravljenje prozora, raditi drugacije je no challenge at all:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR, CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; return exit code in eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; if the user closes our window
invoke PostQuitMessage,NULL ; quit our application
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Default message processing
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
switch (integerA)
{
case 1:
Console.WriteLine("integerA =1");
break;
case 2:
Console.WriteLine("integerA =2");
break;
case 3:
Console.WriteLine("integerA =3");
break;
default:
Console.WriteLine("integerA is not 1,2, or 3");
break;
}
}
}
}Zasto ovo nece da mi pokrene po knjizi bi trebalo...?
Izbacuje:
The name 'intigerA'doen not exist in the current context.
The name 'intigerA'doen not exist in the current context.
Intiger? Sa "i" Mozda u nekom drugom delu koda imas tipografsku gresku? (nagadjam ne poznajem C# :) )
boshkodj
14.11.2009, 18:32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
switch (integerA)
{
case 1:
Console.WriteLine("integerA =1");
break;
case 2:
Console.WriteLine("integerA =2");
break;
case 3:
Console.WriteLine("integerA =3");
break;
default:
Console.WriteLine("integerA is not 1,2, or 3");
break;
}
}
}
}Zasto ovo nece da mi pokrene po knjizi bi trebalo...?
Izbacuje:
U switch si stavio integerA a tu varijablu uopste prethodno nisi napravio.
Nije ti ovo game maker , moras pre koriscenja prvo da napravis varijablu :opanachke
P.S. Kakva crna "tipografska greska" :D
Greška baš lepo opisuje u čemu je problem u tvom kodu (još jedna lepa prednost Visual okruženja gde nema kriptičnih tekstova koji više odmažu nego pomažu :) ) Naime, na mestu gde pokušavaš da svoj kod granaš (switch linija) promenjljiva integerA jednostavno ne postoji i to real time debugger odmah prijavljuje. Dakle ti ni na jednom mestu ne koristiš vrednost koja je uneta preko komandne linije već naprosto koristiš neku integerA promenjljivu koja nije nigde definisana :) Možda je u pitanju greška pa si omašio neku liniju u tom delu koja sadrži deklaraciju i definiciju te promenjljive ali evo ti kako bi kod trebao otprilike da glasi.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
foreach (string arg in args)
{
switch (arg)
{
case "1":
Console.WriteLine("integerA =1");
break;
case "2":
Console.WriteLine("integerA =2");
break;
case "3":
Console.WriteLine("integerA =3");
break;
default:
Console.WriteLine("integerA is not 1,2, or 3");
break;
}
}
}
}
}Prvo, umesto da direktno referenciram samo jednu potencijalnu vrednost koja bi se unela sa komandne linije ja sam se dodavanjem foreach petlje postarao da se ako se unese više vrednosti kroz komandnu liniju svaka od njih odradi (bez izuzetaka) kako nekim bezveznim unosima ne bi bio napravljen neki izuzetak (exception itd.).
Definisao sam novu promenjljivu u foreach petlji arg koja u svakoj petlji nosi vrednost po jednog argumenta sa komandne linije. Bitno je da se ta vrednost odmah pri deklaraciji postavi da bude string jer je mnogo bolje ulazne podatke tretirati kao stringove nego kao brojeve i time izbeći potencijalne probleme. Zato umesto čistih brojeva kod case treba da dodaš navodnike oko njih jer treba da upoređuješ stingove a upoređivanje brojeva i stringova bez prethodnog kastovanja nije dozvoljeno.
Moglo je ovo da se reši i na druge načine i to čak i direktnim pristupom prvoj promenjljivoj (argumentu) ali ovco je sigurniji način.
Uf... Nadam se da si shvatio šta sam istrabunjao gore :D
kao sto boshkodj rece, ne mozes koristiti varijablu koja pre toga nije deklarisana i inicijalizovana/podesena.
pogledaj malo bolje primer u knjizi, negde sigurno stoji
int integerA = <broj>; //deklarisanje i inicijalizovanje u istoj liniji
ili
int integerA; // deklarisanje
...
integerA = <broj>; // dodeljivanje vrednosti
ako varijablu deklarises, a ne dodelis joj vrednost pre nego sto pokusas negde da je upotrebis, takodje ces dobiti gresku.
A ako deklarises, dodelis vrednost i nigde je neupotrebis dobices warning (i varijabla ce biti podvucena zelenom linijom) da se ona nigde ne koristi tj. visak je.
...
Uf... Nadam se da si shvatio šta sam istrabunjao gore :D
Pa nesto sam shvatio...;)
Ali radi mi:D
Samo da kazem da sam pokusavao da deklarisem varijablu kao string,int,ali ni tad nije htelo.
Evo ti jednostavnije alternative koja neće uzimati u obzir ako navedeš više od jednog argumenta.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
switch (args[0])
{
case "1":
Console.WriteLine("integerA =1");
break;
case "2":
Console.WriteLine("integerA =2");
break;
case "3":
Console.WriteLine("integerA =3");
break;
default:
Console.WriteLine("integerA is not 1,2, or 3");
break;
}
}
}
}U switch liniji je odmah kao uslov upotrebljen prvi element iz niza sa argumentima umesto da se definiše promenjljiva itd.
Drugim rečima recimo da pokreneš ovu aplikaciju iz konzole sa ConsoleApplication 1 2 3 promenjljiva args će biti niz koji će sadržati sledeće vrednosti:args[0] = 1, args[1] = 2, args[2] = 3Niz sa argumentima je inače "zero based" (prvi indeks niza je uvek nulti args[0]) ali za razliku od C-a prvi element tog niza nikad nije sam naziv aplikacije koja se pokreće. Pošto je odmah na početku definisano da je args niz sa elementima tipa string to znači da njegove elemente možeš upoređivati (u switchu recimo) isključivo sa elementima istog tipa a stringovi se inače ograničavaju duplim navodnicima (ne jednostrukim koji služe za podatke tipa karakter char - zato "pehapejci" pažljivo ovde :D)
Ostalo je nadam se jasno :)
P.S. Kakva crna "tipografska greska" :D
Ma nisam ni citao code :D
@holodoc
Znao sam da je to tvoj plan i vidjenje "rasprave na forumu". Iznapadas me bez ikakvog razloga (ono za "zilotski trash") i bombardujes besmislenim pitanjima i prikrivenim uvredama sve dok ne kazem nesto glupo i bez veze (kao onaj glupi ameba programcic koji ispisuje poruku koja ipak vredja neke ljude, sto mi nije bila namera) i onda si kao pobedio. A kad sam ja u pravu, onda je Stallman kriv sto je napisao GPL onako kako je napisao, jer je morao da ga napise tako da samo ti budes u pravu. Evo citata koji rasprsuje sve tvoje nade da si u pravu u vezi toga:
If I distribute GPL'd software for a fee, am I required to also make it available to the public without a charge?
No. However, if someone pays your fee and gets a copy, the GPL gives them the freedom to release it to the public, with or without a fee. For example, someone could pay your fee, and then put her copy on a web site for the general public
http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#DoesTheGPLRequireAvailabilityToPublic
A i da si u pravu, moja recenica u vezi GPL-a se odnoslila na custom prgrame za ljude koji traze odredjenu funkcionalnost za posao koji zele da obave. U tom slucaju je baziranje na GPL programu OK, klijent plati tvoj radi, a ceo svet ukljucujuci i klijenta dobije funkcionalnost. Druga stvar je kad klijent hoce da bude jedini koji ima tu funkcionalnost. Primer za to su Hollivudski studiji koji dosta koristie Linux, Blender i Cinepaint(mada Cinepaint nije skroz pod GPL pa njega ne racunaj), a nigde ne mozes da nadjes build-ove koji oni koriste jer im ne pada napamet da podele sa svetom, a GPL ih na to ne obavezuje. Koriste ovo pravo:
Does the GPL allow me to develop a modified version under a nondisclosure agreement?
Yes. For instance, you can accept a contract to develop changes and agree not to release your changes until the client says ok. This is permitted because in this case no GPL-covered code is being distributed under an NDA.
You can also release your changes to the client under the GPL, but agree not to release them to anyone else unless the client says ok. In this case, too, no GPL-covered code is being distributed under an NDA, or under any additional restrictions.
The GPL would give the client the right to redistribute your version. In this scenario, the client will probably choose not to exercise that right, but does have the right.
To pravo upravo koristi Google pri razovoju svog Chrome OS-a (primecuijes da nema Beta jos nigde), a i koristile odavno jer imaju svoj Goobuntu koji ne dele sa svetom. Niko ne obavezuje Cannical da salje diskove za dzabe po svetu, rade to iz dobre volje i zato sto misle da to pomaze biznisu, dok neki drugi ne misle tako i to je ok sve dok ne krse GPL. Proctaj ceo taj FAQ, mozda ces onda prestati da siris FUD o GPL-u. I ko ovde price neproverene informacije? Bio bi red da se izvinis.
Kao prvo, ne znam kako neko ko je "probao" bilo koji programski jezik može da donosi bilo kakve a kamoli finalne zaključke o njemu?
Zasto odgovaras na moje postove kad ih uopste ne citas? Rekao sam da sam ga batalio zato sto nisam mogao lako da portujem ni obican "hello world" program sa GUI-em. Dalje nisam imao ni potrebu da gubum vreme na njega, jer mi ne vrsi posao.
Kao da to nije dovoljno kasnije stavljaš Red Hat, MySQL i PostgreSQL u isti koš. Kao prvo Red Hat opstaje zbog podrške a ne prodaje svog OSa. Tu leži poenta onoga što ja tebi pokušavam da objasnim sve vreme ali ti uporno obilaziš oko tih reči kao kiša oko Čačka. MySQL sa druge strane nije čak ni potpun OpenSource a na stranu to što i on živi od podrške svom RDBMSu. I šta onda PostgreSQL radi u tom košu kad je on poptun OpenSource?
Nije poenta da li je u pitanju podrska, jer mora da naprave nesto da imaju sta da podrze. Pitao si me koje kompanije profitiraju sto ne koriste C# a koje gube sto ga koriste a pomenuo (MySQL i PosgreSQL) sam ih zato sto su primeri uspesnih opensource kompanija/projekata kao i Red Hat. Secas se? Ne secas se jer je to pitanje bilo samo radi podyebavanja i izvrtanja mojih reci isto kao i ono pitanje koje "Koje su po tebi mane programskih jezika" koje sam pokusao da ti odgovorim radi reda i sto krace, a sada ispadam neznalica sto nisam razvukao odgovor preko 5 posta i 35 hiljada karaktera. Naravno da znam razliku izmedju C i C++ ali me mrzi da ti pisem jer ne vidim poentu. I odakle ti to da MySQL nije FLOSS? Zadnji put kad sam gledao, bio je pod GPLv2 licencom, a to sto mozes da ga kupis i pod vlasnickom licencom je samo jedan nacin kako neko moze da zaradi od slobodnog softvera iako ga objavi pod GPL.
Da remiziram. Mislim da osnovni problem u celoj priči leži u sledećoj rečenici.
Da, problem lezi u tome da ti nisi razumeo moju recenicu, kao sto (namerno ili slucanjo) nisi razumeo nista sto sam napisao u ovoj temi. Celo vreme govorim da Open Source nije samo za hobiiste i idealiste, da se znacajan deo softverske industrije bazira na FLOSS-u i da ni open-suorce programeri ne rade samo za "hvala" (kao sto ti hoces da dokazes) i da vrlo cesto zaradjuju vise nego closed-source programeri a posao im je laksi zato sto nisu naterani da sve rade od nule ili da plate royalty ako se neki red koda poklopi sa konkurentskim resenjem (pod uslovom da je konkurentsko resenje takodje FLOSS pod kompatibilnom licencom). FLOSS ne pisu neoprani, bradati i nezaposleni hakeri (kao sto ljudi obicno misle) koji zive u pecini i njihova glavna pokretacka snaga nije mrznja prema M$-u ili kome sve ne, nego novac. Ljudi koji rade iz zabave, ako budu dovoljno dobri u svom poslu, pre ili kasnije dobiju ponudu od neke uspesne open source kompanije da nadalje radi za njih uz vrlo dobru platu, o kakvoj "drag & drop" programeri cesto mogu samo da sanjaju. 70% programera koji rade na Linux kernelu su placeni da to rade od velikih kompanija kao sto su IBM, HP, Oracle, Fujitsu, Intel... naravno i Red Hat.
http://www.internetnews.com/dev-news/article.php/3737761/Who+Writes+Linux+There+Are+a+Lot+of+Unknowns.htm
http://blogs.computerworld.com/who_writes_linux_corporate_america
Alan Cox je poceo tako sto je hakovao Linux kernel a onda ga je zaposlio Red Hat da nastavi da radi to isto, ali samo uz lepu platu. Onda je presao u Intel da radi to isto. Miguel de Icaza je poceo tako sto je osnovao nesrecni Ximian da napravi nesrecni Mono, a onda mu je kompaniju kupio Novell i nastavio ulaganja. Mozda ne volim Mono, ali postujem coveka zato sto radi ono sto voli i zato sto je zapioceo i GNOME. Oni su poceli kao freelance programeri na ovaj ili onaj nacin, pa vidi gde su zavrsili? Da ih nije pojela ta konkurencija o kojoj govoris? Pa pogodi sta, da su radili za M$, sada niko nebi ni znao za njih i tek onda bi postali zrtva konkurencije! Nabrajam ti njih zato sto su mi prvi pali napamet, ne trpam ih u isti kos i nemoj opet da mi postavljas glupa pitanja tog tipa.
Ali dalje necu nista da pisem na tvoj odgovor, jer ces opet da zapitkujes cisto da me podyebavas (a ja ti nisam prvi ni poslednji na koga imas pik) i na takvu raspravu nisam navikao. Vise sa tobom u nikakve rasprave ne ulazim jer ovo nije prvi put da samnom teras raspravu samo radi rasprave. A i vec si rekao da su moji argumenit ok ali da te nervira nesto drugo u vezi mene.
Vreme je novac, sto automatski daje prednost "prevlacenju prozora i dugmica." Veoma plitko misljenje od tebe.
Moje razmisljanje je mnoooogo dublje nego sto ti misis i verovatno zato ljudi i misle da lupetam gluposti. Celo vreme govorim da FLOSS menja RAD ako posedujes znanje onih jezika u kojima je FLOSS mahom napisan. Ali niko da me shvati. To je razlog zasto ucim C. UNIX filozofija podrzava recikliranje koda, to u FLOSS svetu ne zove plagijat, sve dok postujes licencu i dok dajes koliko i uzimas. Moj misljenje je da je ustvari Stallman izmislio pretecu Rapid Aplication Development-a (u prenesenom znacenju, nemoj da me opet neko hvata za jednu rec) kada je napisao GPL i zapoceo ideju saradnickog softvera.
@Voodoo_
Napisao sam ono sto sam napisao u afektu, jer sam imao u planu da Holodoku lepo odgovorim na pitanja koja je postavio, a onda sam video da je postavio novu poruku u kojoj pokusava da pobije moj argument time da je RMS slucajno pogresno napisao GPL i FAQ u vezi GPL-a. Ajde to, ali me onda na kraju posta i vredja. Tako da mozes da okarakterises moj post #49 kao pokusaj da na kulturan i zanimljiv nacin saopstim da me dalja rasprava sa covekom koji ne postuje sagovornika ne interesuje. Mada vidim da se ovde uvek trazi nacin da se nekom nalepi EPIC FAIL na celo, sto bih ocekivao ne nekom drugom delu foruma kao sto je deo sa igrama (gde preovladavaju klinci) ali ne i ovde.Cudo je jedno kako ljudi uspevaju da me shvate pogresno bilo sta da kazem. Naravno da ne pokusavam da nekog ubedim da sam "pro" da deset linija koda, to mi uopste nije bila namera i neznam gde si procitao da sam se uprljao praveci taj "program".
Naravno da sam pisao programe sa vise od 200 linija koda ali WinAPI sam odavno batalio. Razvijam samo za X bazirane operativne sisteme jer me samo to trenutno interesuje i samo tu vidim svoju sansu. Windows programera ima k'o kusih pasa. Sto ne znaci da sam neznalica kao sto me holodok (a sad vidim i ti) smatrate.
@Moderatori i ostali
Izvinjavam se za off-topik. Kad napisem i procitam svoj post, deluje mi vrlo logicno, zatim vidim da neko citira moju recenicu u nekom levom kontekstu i ja se zapitam "sta li su ovi ljudi citali? Jer definitivno nisu citali moj post" Nisam imao nameru da nekog ko programira u C# nazovem bilo kakvim losim imenom, samo sam hteo da kazem moje vidjenje stvari. I za to sam nazvan zilotom, hejterom, neznalicom, napaljenikom i sta sve ne. Zelim srecu svima koji programiraju u bilo kom jeziku, pa i C#, i nisam mislio da kvarim. Moja prica se zasnivala na tome da su proponenti C#-a preglasni i da mi je muka vise citati tu reklamnu kampanju. Nisam kriv sto je raspava potekla u pravcu koji ni meni nije drag ali moram da se branim kad me neko napada bez razloga.
Muka mi je vise od ovog foruma, tako da mozete da mi lupite ban slobodno, bio bih vam vrlo zahavalan.
hahaha :)
bolje citati ovu temu nego gledati nindza ratnike...
Evo jedno n00bovsko pitanje.Hteo sam da napravim najprostiji moguci program za sabiranje,i reko to ce lako ali:
int first;
int second;
int third=first + second;
Console.WriteLine("Program za sabiranje!");
Console.WriteLine("Unesi prvi broj:");
first = Console.ReadLine();
Console.WriteLine("Unesi drugi broj:");
second = Console.ReadLine();
Console.WriteLine("Rezultat je: "+third);
Console.ReadLine();
return;I sad lepo ga pokrene ali prijavi dve greske cannot convert int to string...ali pokrene ga
I ukucam prvi broj pa drugi,i kad treba da mi izbaci zbir on izbaci:
Rezultat je:first + second
Svasta sam pokusao ali nece:confused::confused:...
Probao sam i third=first + second posle second = Console.ReadLine();
i razne kombinacije ali ne.
?????
Evo jedno n00bovsko pitanje.Hteo sam da napravim najprostiji moguci program za sabiranje,i reko to ce lako ali:
int first;
int second;
int third=first + second;
Console.WriteLine("Program za sabiranje!");
Console.WriteLine("Unesi prvi broj:");
first = Console.ReadLine();
Console.WriteLine("Unesi drugi broj:");
second = Console.ReadLine();
Console.WriteLine("Rezultat je: "+third);
Console.ReadLine();
return;I sad lepo ga pokrene ali prijavi dve greske cannot convert int to string...ali pokrene ga
I ukucam prvi broj pa drugi,i kad treba da mi izbaci zbir on izbaci:
Rezultat je:first + second
Svasta sam pokusao ali nece:confused::confused:...
Probao sam i third=first + second posle second = Console.ReadLine();
i razne kombinacije ali ne.
?????
Prvo kad sam video "int third=first + second;" hteo sam da se ubijem... Pokusavas da saberes nesto sto nisi ni uneo? Dobra logika...
Sto se tice drugog problema, Console.ReadLine() vraca string a ne mozes string da ubacis u promenljivu tipa int. Moras da ga konvertujes u int tako sto ces napisati Convert.ToInt32(Console.ReadLine());
Mozes i int.Parse(Console.ReadLine());, pa ti odluchi sta ces..
Dobro nećemo baš da napadamo bilo koga samo zato što je početnik :) Uostalom ovde to možda jeste pogrešna logika ali imaš recimo slučajeva kod specijalnih slučajeva rekurzivnih funkcija gde tako nešto može i da ima potpunu logiku ;)
Elem, Eclipse je lepo objasnio šta je ovde problem. U stvari nije konkretno čak ni problem već pre će biti logička nelogičnost (Mister Spok bi me ubio :D) Tačno je da ti pokušavaš da sabereš dva broja ali problem je u tome što oni još uvek nisu uneti pa ćeš na kraju dobiti rezultat sabiranja dva nepostojeća broja. Isto tako u C# ne postoji mogućnost da se promenjljiva tipa string kastuje (cast) u integer pa ovde moraš da koristiš funkcije koje je naveo Eclipse jer Console.ReadLine() uvek vraća string a ti dalje moraš da vodiš računa o promenjljivama i njihovim tipovima.
Evo primera radi kako može da izgleda tvoj zadatak.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sabiranje
{
class Program
{
static void Main(string[] args)
{
int first, second, third;
Console.WriteLine("Program za sabiranje!");
Console.WriteLine("Unesi prvi broj:");
first = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Unesi drugi broj:");
second = Convert.ToInt32(Console.ReadLine());
third = first + second;
Console.WriteLine("Rezultat je: " + third);
Console.ReadLine();
return;
}
}
}
jedini nacin koji vidim da si mogao da napravis toliku gresku u logici je ako nisi dobro ukapirao operater "=", odnosno dodeljivanje vrednosti varijabli;
jest' osnovno, al ajd da napisem, za svaki slucaj, ako ti to nije bilo jasno.
kada jednu varijablu podesis na drugu, ili na rezultat operacije sa nekim drugim varijablama, ili na bilo sta, ona tako ostaje sve dok ponovo ne promenis njenu vrednost.
ako imas varijable a i b
i napises
b = 10;
a = b;
a ce sada takodje biti deset.
ali ako nakon ovoga promenis b
b = 15;
a ce, naravno, i dalje biti 10. jer a = b je jedna naredba koja se jednom izvrsi i to je to, nece se posle automatski a menjati da uvek bude jednako b.
nadam se da ti je vrlo jasno zasto tvoj originalni program nikako nije mogao da radi (i pored potrebe za konvertovanjem inputa u integer)
ako ti nije jasno, nemoj nikako ici dalje dok to ne shvatis.
Dolazi mi danas tetka sa molbom da joj popunim par kombinacija na loto listiću pošto misli da ja koji sam totalni nevernik kada su u pitanju igre na sreću možda i budem dovoljno veliki baksuz pa nešto i "ubodem" :) S obzirom na nedostatak vremena sednem ja i na brzinu napišem dva loto generatora i to jedan u C#-u i jedan u PHP-u i za 15 minuta popunim bez problema 4 kombinacije na tiketu ;) Kod sam naknadno iskomentovao da bi bio malo jasniji a ovo bi inače bio relativno početički način izrade jer postoje mnogo bolji načini sa listama nizova (ArrayList), iteratorima itd.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Loto
{
class Program
{
static void Main(string[] args)
{
int minimum = 1;//minimalni broj na izvlacenju
int maksimum = 39; //maksimalni broj na izvlacenju
int brojeva = 7; //koliko se brojeva izvlaci?
int[] kombinacija = new int[brojeva]; //niz gde se skladisti kombinacija
int pozicija = 0; //pozicija izvucenog broja u kombinaciji (nizu) [zero-based]
Random izvlacenje = new Random(); //generator slucajnih brojeva (objekt)
int izvuceniBroj; //trenutno izvuceni broj
string dalje; //cisto za skladistenje rezultata upita da li se izvlacenje ponavlja
/*
Ponavljaj sledeci blok...
*/
do
{
while (pozicija < brojeva) //dok trenutna pozicija u nizu nije jednaka ukupnom broju koji se izvlaci
{
izvuceniBroj = izvlacenje.Next(minimum, maksimum); //izvlaci se broj
if (kombinacija.Contains(izvuceniBroj)) //ako je izvuceni broj vec u nizu
{
continue; //ponavljaj ceo ovaj blok sa izvlacenjem
}
else
{
kombinacija[pozicija++] = izvuceniBroj; //upis izvucenog broja u niz
}
}
Console.WriteLine("Dobitna kombinacija za ovu nedelju glasi: ");
Array.Sort(kombinacija); //sortiranje niza
/*
* Ispis brojeva iz niza
*/
foreach (int broj in kombinacija)
{
Console.Write(" " + broj + " ");
}
Console.WriteLine("\nZa novo izvlacenje ukucati \"da\"? [da | ne]");
/*
* Resetovanje nekih promenjljivih da bi potencijalno novo izvlacenje radilo kkao treba
*/
pozicija = 0; //trenutna pozicija se postavlja na nulti indeks (prvi clan niza)
Array.Clear(kombinacija, 0, brojeva); //ciscenje niza sa brojevima kombinacije
dalje = Console.ReadLine(); //os dalje il neces?
} while (dalje == "da");
/*
* ...dok korisnik unosi "da" na kraju izvlacenja.
*/
}
}
}PHP
<?php
$minimum = 1; //minimalni broj na izvlacenju
$maksimum = 39; //maksimalni broj na izvlacenju
$brojeva = 7; //koliko se brojeva izvlaci?
$kombinacija = array(); //niz gde se skladisti kombinacija
$izvuceniBroj; //trenutno izvuceni broj
/*
* Dok je broj elemenata u nizu sa kombinacijom manji od ukupnog broja za izvlacenje...
*/
while(count($kombinacija) < (int) $brojeva){
$izvuceniBroj = rand($minimum, $maksimum); //izvlacenje broja u navedenom opsegu
if(in_array($izvuceniBroj, $kombinacija)){ //ukoliko je element vec u kombinaciji
continue; //ponavlja se ceo blok sa izvlacenjem
} else {
array_push($kombinacija, $izvuceniBroj); //ako nije izvuceni broj ide u kombinaciju
}
}
sort($kombinacija); //sortiranje kombinacije
echo 'Dobitna kombinacija za ovu nedelju glasi: '.implode(', ', $kombinacija).'!'
?>DISKLEJMER: Na svaki potencijalni dobitak koji ovi generatori "ispljunu" uzimam 5% od odbitka :D
Geomaster
20.11.2009, 16:15
OMG...
DISKLEJMER: Na svaki potencijalni dobitak koji ovi generatori "ispljunu" uzimam 5% od odbitka :D
Tesko je dobiti... Zasto nas ti lepo ne naucis da hakujemo banke? Mnogo je efikasnije :D
Geomaster
20.11.2009, 17:00
btw, kad brišeš niz, ukucao si Array.Clear(kombinacija, 0, 7), mada ja bih ipak išao na Array.Clear(kombinacija, 0, brojeva).
btw, kad brišeš niz, ukucao si Array.Clear(kombinacija, 0, 7), mada ja bih ipak išao na Array.Clear(kombinacija, 0, brojeva).Baš se vidi da je bilo 15 minuta :)
Ispravljeno.
Imam ovaj kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string url = "http://zeusoft.net/wp-login.php";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookies = new CookieContainer();
SetupRequest(url, request, cookies);
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
//request.Headers["Accept-Language"] = "uk,ru;q=0.8,en-us;q=0.5,en;q=0.3";
//request.Headers["Accept-Encoding"] = "gzip,deflate";
//request.Headers["Accept-Charset"] = "windows-1251,utf-8;q=0.7,*;q=0.7";
string user = textBox1.Text;
string pwd = textBox2.Text;
request.Credentials = new NetworkCredential(user, pwd);
string data = string.Format(
"log={0}&pwd={1}&wp-submit={2}&testcookie=1&redirect_to={3}",
user, pwd,
System.Web.HttpUtility.UrlEncode("Log In"),
System.Web.HttpUtility.UrlEncode("http://zeusoft.net/wp-admin/"));
SetRequestData(request, data);
ShowResponse(request);
}
private static void SetupRequest(string url, HttpWebRequest request,CookieContainer cookies)
{
request.CookieContainer = cookies;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5";
request.KeepAlive = true;
request.Timeout = 120000;
request.Method = "POST";
request.Referer = url;
request.ContentType = "application/x-www-form-urlencoded";
}
private void ShowResponse(HttpWebRequest request)
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
responseTextBox.Text = (((HttpWebResponse)response).StatusDescription);
responseTextBox.Text += "\r\n";
StreamReader reader = new StreamReader(response.GetResponseStream());
responseTextBox.Text += reader.ReadToEnd();
}
private static void SetRequestData(HttpWebRequest request, string data)
{
byte[] streamData = Encoding.ASCII.GetBytes(data);
request.ContentLength = streamData.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(streamData, 0, streamData.Length);
dataStream.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Ali uporno mi izbacuje greske,ove:
pa importuj potrebne namespaceove :)
system.net i ostale potrebne, trebao bi vs cak i sam da ti ponudi koje tacno treba da ubacis.
Evo sad imam ovo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Web;
...
I ovaj deo koda:
...
System.Web.HttpUtility.UrlEncode("Log In"),
System.Web.HttpUtility.UrlEncode("http://zeusoft.net/wp-admin/"));
...
I izbacuje:
Error 1 The type or namespace name 'HttpUtility' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) C:\Users\Ivan\Desktop\Zeusoft Files\ZeuCD\WindowsFormsApplication5\WindowsFormsA pplication5\Form1.cs 42 28 WindowsFormsApplication5
Error 2 The type or namespace name 'HttpUtility' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) C:\Users\Ivan\Desktop\Zeusoft Files\ZeuCD\WindowsFormsApplication5\WindowsFormsA pplication5\Form1.cs 43 28 WindowsFormsApplication5
:confused:
boshkodj
12.12.2009, 11:15
1. Je l' znas sta predstavljaju ti errori?
2. Je l' si uzeo neki kod odnekle pa ga samo copy / paste ?
2. Je l' si uzeo neki kod odnekle pa ga samo copy / paste ?
naravno da jeste, sa linka koji sam postavio.
google, covece, google !!!
zasto, ali zasto ti je tesko da probas barem da nadjes odgovor sam ?
da si samo pokusao, teze bi ti bilo da ne nadjes odgovor nego da ga nadjes.
evo:
http://bytes.com/topic/c-sharp/answers/230137-system-web-httputility-not-available
sve sto je trebalo da ukucas na google je " httputility assembly reference "
i PRVI rezultat je ono sto ti treba...
Geomaster
12.12.2009, 15:21
Ivane, pa pre par dana si tražio pomoć oko iste stvari u VB2008 pa kad si video da ne možeš, našao si gotov kod napisan u C#-u koji kod tebe ne radi kako treba, i sad si došao da pitaš zašto. Nema smisla raditi copy/paste koda odnegde. Em što nećeš ništa da naučiš, em što nećeš da razumeš ništa, em što nemaš veze sa tim šta kod radi i kako da ispraviš greške.
Do juče si radio nešto tipa int third=first+second; first = 1; second = 2; i čudio se što ne radi kako treba, a danas pokušavaš da uradiš logovanje na Wordpress za Zeusoft i ZeuCD... Da li uopšte znaš šta je HTTP, šta je POST zahtev - to jednostavno ne ide tako, no offense.
Kreni od početka a ne od kraja - ne možeš da "zidaš od krova".
Uostalom, zašto da radiš logovanje na WP kada možeš kao čovek da odeš na taj sajt i bez problema se uloguješ?
I nađite nekoga ko se razume u programiranje, mislim, da se baš razume, da radi softver za ZeuCD. Ili ti prvo nauči osnove i onda polako kreni sa web-related programiranjem u C#-u.
Oko ovoga konkretno ne mogu da ti pomognem zato što nisam mnogo vičan managed jezicima tipa VB.NET, C++.NET i C#-u, ali ovo je jedan savet. Ako ti treba pomoć uvek možeš da pitaš, ali niko ne može da ti pomogne ako ti ne razumeš o čemu se tu radi.
Ivane, pa pre par dana si tražio pomoć oko iste stvari u VB2008 pa kad si video da ne možeš, našao si gotov kod napisan u C#-u koji kod tebe ne radi kako treba, i sad si došao da pitaš zašto. Nema smisla raditi copy/paste koda odnegde. Em što nećeš ništa da naučiš, em što nećeš da razumeš ništa, em što nemaš veze sa tim šta kod radi i kako da ispraviš greške.
Do juče si radio nešto tipa int third=first+second; first = 1; second = 2; i čudio se što ne radi kako treba, a danas pokušavaš da uradiš logovanje na Wordpress za Zeusoft i ZeuCD... Da li uopšte znaš šta je HTTP, šta je POST zahtev - to jednostavno ne ide tako, no offense.
Kreni od početka a ne od kraja - ne možeš da "zidaš od krova".
Uostalom, zašto da radiš logovanje na WP kada možeš kao čovek da odeš na taj sajt i bez problema se uloguješ?
I nađite nekoga ko se razume u programiranje, mislim, da se baš razume, da radi softver za ZeuCD. Ili ti prvo nauči osnove i onda polako kreni sa web-related programiranjem u C#-u.
Oko ovoga konkretno ne mogu da ti pomognem zato što nisam mnogo vičan managed jezicima tipa VB.NET, C++.NET i C#-u, ali ovo je jedan savet. Ako ti treba pomoć uvek možeš da pitaš, ali niko ne može da ti pomogne ako ti ne razumeš o čemu se tu radi.
U VB nisam hteo zato sto sam prestao da radim sa njim,a i nisam znao.
Nije mi sad u interesu da naucim nesto,nego to da zavrsim...
Uostalom, zašto da radiš logovanje na WP kada možeš kao čovek da odeš na taj sajt i bez problema se uloguješ?
Znam,ali ja necu samo da se ulogujem ovako...
Geomaster
12.12.2009, 21:43
Nije mi sad u interesu da naucim nesto,nego to da zavrsim...
Trebalo bi bar da razumeš, da bi znao kako da debuguješ.
tesko da ces bilo sta da zavrsis ako ne umes ni najosnovnije greske da shvatis i ispravis - ili barem da ih ukucas na google pa vidis kako su ih drugi ispravili.
razumem ja da ti samo hoces da zavrsis, al to je kao kad bi rekao "samo hocu da osvojim medalju na olimpijadi, nemam sada vremena da treniram i spremam se"
Markonije
16.12.2009, 17:55
Evo par "kick-ass" sajtova za C#:
msforge.net
sharper tutorials.com
social.msdn.microsoft.com/forum
Napomena za projectcode sajt,on je vise orjentisan za medium i expert nivo znanja a manje za pocetnike.
Ova tri gore pomenuta "rade posao" za sve nivoe znanja.
int i = 940;
int j = 73;
Console.WriteLine(" {0,4}\n+{1,4}\n ---- \n {2,4}", i, j, i + j);
{0,4}Nula mi je jasna ali ova cetvorka nije,kakva je to sirina za vrednost?
{1,4}Isto
{2,4}Isto
decimal i = 940.23m;
decimal j = 73.7m;
Console.WriteLine(“ {0,9:C2}\n+{1,9:C2}\n ---------\n {2,9:C2}”, i, j, i + j);
I ovde ovo m?
Pitanje je mozda prosto ali ako sad ne saznam nikad necu.:)
Da li je moguce da unete brojeve(int) razdvojene zarezom stavim u array,i kako?
Geomaster
21.3.2010, 22:17
Potraži string splitting in C# na Googleu, ili string exploding ili neku varijantu, naći ćeš sigurno.
Da li je moguce da unete brojeve(int) razdvojene zarezom stavim u array,i kako?
Ne znam koliko je dobro ( pravilno ) , ali ja bih uradio tako sto bih ubacio te brojeve i zareze u string. I posle samo string.Split(',')...
@Geomaster
@boshkodj
Koritio sam Split ovako:
string myString = "Neki string...";
char[] separator = {' '};
string[] myWords;
myWords = myString.Split(separator);
E sad nije u tome problem nego je u tome sto bih ja uradio ovo:
static int MaxValue(int[] intArray)
{
int maxValue = intArray[0];
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxValue)
maxValue = intArray[i];
}
return maxValue;
}
static void Main(string[] args)
{
int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};
int maxVal = MaxValue(myArray);
Console.WriteLine("The maximum value in myArray is {0}", maxVal);
Console.ReadKey();
}
tj. nasao najveci broj u nizu,a to ne mogu sa stringovima(nisam probao ali mislim da ne moze).
Nasao bih sa predhodno unesenim brojevima.
@Geomaster
@boshkodj
Koritio sam Split ovako:
string myString = "Neki string...";
char[] separator = {' '};
string[] myWords;
myWords = myString.Split(separator);
E sad nije u tome problem nego je u tome sto bih ja uradio ovo:
static int MaxValue(int[] intArray)
{
int maxValue = intArray[0];
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxValue)
maxValue = intArray[i];
}
return maxValue;
}
static void Main(string[] args)
{
int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};
int maxVal = MaxValue(myArray);
Console.WriteLine("The maximum value in myArray is {0}", maxVal);
Console.ReadKey();
}
tj. nasao najveci broj u nizu,a to ne mogu sa stringovima(nisam probao ali mislim da ne moze).
Nasao bih sa predhodno unesenim brojevima.
Pa gledaj, mozes slobodno da prebacis string u int ( naravno ako si siguran da su u tom stringu brojevi :) )... Evo napisao sam primer ovoga sto ti hoces :
class Program
{
// Ta tvoja funkcija...
static int MaxValue(int[] intArray)
{
int maxValue = intArray[0];
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxValue)
maxValue = intArray[i];
}
return maxValue;
}
static void Main(string[] args)
{
// Prvo ubacis brojeve koje hoces u string, za primer sam uradio
// kao da si vec ubacio brojeve.
string brojevi = "3,7,10,11,55,2";
// Onda svaki broj ubacis kao poseban string
string[] odvojeni_brojevi_string = brojevi.Split(',');
// Onda lepo te odvojene brojeve ( u string ) prebacis u int
int[] odvojeni_brojevi_int = new int[odvojeni_brojevi_string.Length];
for (int i = 0; i < odvojeni_brojevi_string.Length; i++)
{
odvojeni_brojevi_int[i] = Convert.ToInt32(odvojeni_brojevi_string[i]);
}
// Izvuces najveci broj
int maxValue = MaxValue(odvojeni_brojevi_int);
// I ispises ga...
Console.WriteLine(maxValue);
Console.ReadKey();
}
}
Opet kazem, nisam bas siguran da je ovo najbolje resenje...
ako to treba korisnik da unosi sa tastature, nikako ne mozes da pretpostavis da ce zaista uneti samo brojeve (osim ako nemas neki drugi mehanizam koji ne dozvoljava pogresan input.)
a ako nije pravi broj, Convert.ToInt32 ce da pukne samo tako
probaj ovako nesto (modifikovao sam kod koji je napisao boshkodj, ostali su neki njegovi komentari)
class Program
{
// Ta tvoja funkcija...
static int MaxValue(int[] intArray)
{
int maxValue = intArray[0];
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxValue)
maxValue = intArray[i];
}
return maxValue;
}
static void Main(string[] args)
{
// Prvo ubacis brojeve koje hoces u string, za primer sam uradio
// kao da si vec ubacio brojeve.
string brojevi = "3,7,10,11,55,2";
// Onda svaki broj ubacis kao poseban string
string[] odvojeni_brojevi_string = brojevi.Split(',');
List<int> odvojeni_brojevi_int = new List<int>(odvojeni_brojevi_string.Length); // ovo odvojeni_brojevi_string.length govori listi za koliki kapacitet da se pripremi. nije obavezno ali je optimalnije
int parsovan_broj; // deklarisemo ga iznad petlje da ne bi mnogo puta u petlji kreirao i brisao objekte
foreach (string str in odvojeni_brojevi_string)
{
if (int.TryParse(str,out parsovan_broj))
odvojeni_brojevi_int.Add(parsovan_broj);
}
// Izvuces najveci broj
int maxValue = MaxValue(odvojeni_brojevi_int.ToArray());
// I ispises ga...
Console.WriteLine(maxValue);
Console.ReadKey();
}
}
-EDIT-
takodje ti predlazem da se osiguras da je prosledjen pravilan array ovoj tvojoj funkciji koja trazi maks vrednost. ako prosledis prazan array, pucice ti program.
e sad, posto funkcija mora da vrati neki broj, imas dve mogucnosti, po meni.
Prva: koristi nullable type int, to je int koji pored svih brojeva koje moze da predstavlja, takodje moze da bude i "null".
u tom slucaju, gde god koristis tu maks funkciju, morao bi da proveravas da li je vratila null ili nije, pa ako je null da reagujes drugacije. ovo je po meni losija opcija
bolja opcija je mozda da jednostavno izbacis precizniji error (ili na ekran, ili da "bacis" exception i cekas da ga uhvati neka visa instanca, ne znam kolko znas o exceptionima)
dakle nesto tipa
if (intArray.Length == 0)
throw new ArgumentOutOfRangeException("intArray");
na taj nacin bi izbacio precizniji error, koji kaze da argument koji je prosledjen funkciji nije dobar.
ukoliko kod koji poziva tvoju funkciju ima error handling, on ce znati sta da uradi sa tim exceptionom. ukoliko nema, korinsiku ce izadji poruka da se desila greska koja nije handleovana.
naravno, pretpostavljam da ti za ovaj konkretan projekat to uopste nije ni najmanje bitno, ali ovakve stvari su svakodnevnica u profesionalnom, pogotovo timskom radu, na vecim projektima.
pa reko ono, da se navikavas polako :)
Opet ja :)
Rec je o Label box wrapping?
Posto citam neke atribute iz xml-a pa to treba da mi ubaci u label ali kad ga ubaci nigde se ne prelama recenica,nego se proooooduzi...
EDIT:TextBox ne dolazi u obzir.
Opet ja :)
Rec je o Label box wrapping?
Posto citam neke atribute iz xml-a pa to treba da mi ubaci u label ali kad ga ubaci nigde se ne prelama recenica,nego se proooooduzi...
EDIT:TextBox ne dolazi u obzir.
Evo primer :
label1.Text = "Ja sam prvi red, sada cu da se odvojim.\r\nSada sam drugi red"
Znaci prelazis u drugi red sa \r\n...
Evo primer :
label1.Text = "Ja sam prvi red, sada cu da se odvojim.\r\nSada sam drugi red"
Znaci prelazis u drugi red sa \r\n...
pa ne zeli sam da odlucuje gde ce da se prelomi -_-
podesis AutoSize na false, a onda podesis sirinu i visinu, labela ce automatski tada raditi prelom.
naravno, ukoliko pricamo o Label kontroli.
posto ne znam sta tacno mislis pod label box
pa ne zeli sam da odlucuje gde ce da se prelomi -_-
Nisam procitao lepo :p
ilija_iksi
5.6.2010, 19:46
Evo resio sam da naucim ovaj jezik,ali nasao sam sve nekakve tupave ebook-ove....guglao sam i guglao...
Da li neko ima neku dobru knjigu(engleski ili srpski,svejedno),da mi posalje ili da mi da link,nesto?
http://msdn.microsoft.com/en-us/beginner/default.aspx
Nije e-book, već kolekcija članaka, videa i audio zapisa za C#, VB.NET i Visual C++.
Tako sam ja naučio C#... ;)
http://msdn.microsoft.com/en-us/beginner/default.aspx
Nije e-book, već kolekcija članaka, videa i audio zapisa za C#, VB.NET i Visual C++.
Tako sam ja naučio C#... ;)Naučiti jezik i nije neka posebna nauka ali mnogo je veća naučiti kako se radi sa dostupnim framework-om. Inače dotični tutorijali su namenjeni baš početnicima i osim osnove ne zalaze preterano duboko u strukturu samog Visual Studia i .NET-a. Shvatićeš na šta mislim kada budeš imao prilike da se prvi put uhvatiš sa design patternima ;)
Da ne bi otvarao novu temu, jel može neko da mi kaže kako da splitujem ovaj => ' karakter. Nešto tipa:
string[] timeA = Console.ReadLine().Split(''');// da li je to uopšte moguće sa stringom
Pošto se radi o minutima i input bi bio ovako nešto: 12^33'45"
string[] timeA = Console.ReadLine().Split(("'")[0]);
i to ce da radi.
medjutim, nadam se da si svestan da bi trebao da odradis provere da li je uneti string u pravilnom formatu pre nego sto probas da ga parsujes.
Da to bi bilo to. Hvala puno
BTW ne moram da radim proveru jer bot unosi ovaj input i uvek je u ovom formatu.
znaci radis one zadatke online ?
tu ti se ne vrednuje samo da li radi, nego i koliko brzo radi.
tako da gledaj da to optimizujes, kreiraj const char na pocetku sa vrednoscu tog karaktera pa na osnovu njega splituj, ako vec moras da radis taj split.
Da baš se sa tim zanimam. U pravu si, vrednuje se i brzina kompajliranja, ali pošto radim zadatke u c# tako da nemam nikakve šanse kolko god se trudio da se program brže kompajlira. Tako da mi je motiv da uradim što više zadataka tačno jer se i to dosta boduje. Što se brzine tiče možda ću kasnije pisati i u čistom C-u, pa da budem kolko tolko konkurentniji. Ovako izgleda kao da se trkam sa ponijem :D.
hehe, pa niko ni ne ocekuje da ces ti u c#-u da napravis brzi program od nekoga u c-u.
poenta je da se poredis sa drugim c# programerima...
U pravu si, samo što je malo fustrirajuće da se najbolji c# program nalazi tek na 5k ili 10k mestu. To ti je kao da gledaš formulu 1 zajedno sa nacionalnom klasom.
Nema veze, zato sam skoro siguran da ni jedan programer nije uradio sve zadatke. Tako da što ih budem više uradio, to ću se bolje naoštriti :)
Već sam rešio 2 zadatka i moje samopouzdanje raste iz dana u dan ;)
sasha vukelic
8.6.2010, 7:46
=> string[] timeA = Console.ReadLine().Split('''); ?a moze i ovo :) Console.ReadLine().Split('\'');
Ovako,imam downloader koji skida druge programe e sad ja hocu da brojim broj downloada.To znam kako da uradim ali ono sto ne znam je kako da te podatke posaljem na server.I uz pomoc php-a da prikazem te podatke sa servera(i to za php je reseno).
E sad aplikacija mora da ostane portable(da nema dodatnih dll-ova).
Ja sam mislio da to sve saljem u MySql bazu(na server) ali za to mi treba MySql.Data.dll.
Ima li neko ideju kako to da uradim?
Prosto resenje je msSql server. Osim ako nemas linux sever.
kako kako da saljes ?
pa napravi jednu php stranicu koju ces pozivati iz c#-a i prosledjivati parametar koji php cita i posle sa njim radi sta hoces.
e sad, da ne bi mogao bilo ko da pozove tu stranicu, ukljucis da je neophodna identifikacija. tu ti ide od basic (samo ime + sifra u ne kriptovanom obliku) sve do sertifikata, pa ti biraj sta volis.
druga alternativa su web servisi, posto je malo neozbiljno da direktno bazu otvaras za pristup sa interneta.
Prosto resenje je msSql server. Osim ako nemas linux sever.
Pa bas linux imam.
Jel si razmisljao mozda o xml-u. To bi ti resilo slučaj.
Jel si razmisljao mozda o xml-u. To bi ti resilo slučaj.
xml je format u kome moze da bude komunikacija izmedju aplikacije i servera, ali ta komunikacija opet mora preko NECEGA da se odvija.
ili preko stranice, kako sam predlozio, ili preko nekog web servisa, ili direktno preko tcp-a ? kako god, nekako moras taj xml da posaljes na server ;)
Ja sam to zamislio ovako:
Kad se download zavrsi doda se jedan(int) u bazu(ili nesto drugo) i uz pomoc php-a ja prikazem statistiku.
Pa da mislio sam da direktno šalje xml preko tcp-a na server, i da tu skladišti podatke, a ne u mySql. Mada posle ovoga je lako da posle salje i u mySql. Mislim da mu je ovo bolje rešenje nego da dize poseban web servis, jer je ovo direktniji metod.
Pa da mislio sam da direktno šalje xml preko tcp-a na server, i da tu skladišti podatke, a ne u mySql. Mada posle ovoga je lako da posle salje i u mySql. Mislim da mu je ovo bolje rešenje nego da dize poseban web servis, jer je ovo direktniji metod.
ako hoce direktno preko tcp-a da posalje xml, onda mora da napise nesto sto ce da slusa na nekom tcp portu na serveru, pa da onda sa klijenta otvori konekciju ka tom udaljenom tcp portu (za sta ce se buniti firewall i traziti od korisnika da odobri konekciju) pa onda da posalje xml.
a ako napravi stranicu ili web servis ne mora nista dodatno da podesava na serveru (vec je podesen) a i klijent ce mnogo lakse obaviti komunikaciju jer se http port (80) jako retko blokira.
jedno mozda glupo pitanje, instalirao sam Studio 2008 i C# pokusavam da kreiram aplikaciju u kojoj cu jasno videti rezultat koda, pokusao sam sa Console apl ali izbacuje rezultat u Command promptu i to samo flesne na ekranu. hocu neku console aplication koja ce izbaciti jasan rezultat, u javi sam radio console apl i izbacuje rez.
tvoj problem je sto ti se program zavrsi pre nego sto stignes da vidis rezultat, sto je sasvim logicno jer ti ispises rezultat i onda nema dalje nista - kraj Main-a, kraj programa.
Umesto sa F5, pokreni program sa CTRL + F5, i nakon sto se isti zavrsi, konzola ce ostati da mozes da vidis rezultat, dok ne stisnes neki taster.
medjutim, losa strana toga je sto kada pokrenes sa CTRL + F5, ne pokreces u Debug modu, pa ako imas Breakpoint-ove i druge debug zezancije, nece raditi.
zato mozes samo na kraju programa pre izlaza da dodas Console.ReadLine();
i to je to.
pokreces normalno sa F5, videces rezultat i moraces da stisnes enter pre nego sto se zavrsi program...
Pa bolje da ga pokrece sa debugerom. Samo naznaci dokle hoces da ti se kod izvrsava (kada kliknes ispred linije koda pojavi se crvena lampica). Tako da lepo i jasno mozes da vidis kako ti se kod izvrsava i kako se varijable pune, kroz propadanje.
Pa bolje da ga pokrece sa debugerom. Samo naznaci dokle hoces da ti se kod izvrsava (kada kliknes ispred linije koda pojavi se crvena lampica). Tako da lepo i jasno mozes da vidis kako ti se kod izvrsava i kako se varijable pune, kroz propadanje.
pa upravo sam to i rekao, da pokrece sa F5 kako bi pokretao sa Debuggerom.
a ako hoce da mu na kraju programa ostane konzola dok ne stisne enter, onda samo doda Console.ReadLine();
Znam, nego cisto da mu malo bolje objasnim sta da radi. :)
hvala vam, nisam video rezultat pa mi bezveze da pokusavam da uradim bilo sta.
Sledece pitanje, kako se zove klasa koja prima tipove podataka sa konzole, tj sta korisnik unese? u Javi se zove Scanner i posebnim funkcijama prima int a posebnim String, mada ima i opsti primac :) posle ga mogu upisati u odgovarajucu varijablu. znao sam ranije ali zaboravi covek.
ja kolko znam, iz konzole ucitavas input iskljucivo preko Console klase, odnosno njenih Read i ReadLine funkcija.
kasnije mozes to da ubacis u neku varijablu parsovanjem, ako ti ne treba kao string.
recimo int.Parse(<string unos>);
naravno, posto je ucitavanje iz konzole u pitanju, trebao bi pre svega da proveris da li uneti string jeste broj koji moze da se parsuje u int.
pomoci ce ti i int.TryParse(<string unos>,out int rezultat); koji vraca boolean da li je uspeo da parsuje ili ne, a ako uspe, smesti rezultat u out varijablu.
Ako si siguran da ti je input intidžer, onda možeš direktno da korisitiš i ovu komandu:
int a = Int32.Parse(Console.ReadLine());
a ako nisi, uvek mozes da koristis try / catch petlju.
ne znam da li se razumemo. hocu da kazem korisniku sledece :
Unesite broj od 1-9 ; ili Unesite ime i prezime.
upisem broj koji korisnik unese u varijablu i posle radim s njom.
pitam kako se to radi za bilo koji tip podatka. ako moze u primeru. hvala unapred.
onda pre onog koda moras da stavis ovaj:
Console.Read"Unesite broj od 1-9: ";
pa upravo smo ti rekli !
sve sto ulazi sa konzole je string.
string str = Console.ReadLine();
sada mozes taj string da pretvoris u bilo koji drugi tip:
int i = int.Parse(str);
time ces ucitati integer, i raditi sa njim sta hoces.
ili ako si ucitao broj sa decimalom:
double d = double.Parse(str);
itd.
to sve u slucaju da si siguran da je unos u dobrom formatu.
ako nisi, imas dve mogucnosti. ili try catch, ili tryParse.
po meni try catch ipak sluzi za neke stvari koje se teze testiraju, pa moras da cekas da se desi exception pa da ga uhvatis.
meni je logicnije kada ne znas da li je dobar unos da koristis tryParse
static void Main(string[] args)
{
Console.WriteLine("Unesite neki broj:");
string str = Console.ReadLine();
int i;
if (int.TryParse(str, out i) == true)
{
// uspeo je parse, ovde mozes sa i da radis bilo sta
}
else
{
// nije uspeo parse, unos je u pogresnom formatu, obavesti korisnika.
}
}
evo i kompletnog primera za neki jednostavni meni sistem:
static void Main(string[] args)
{
char ch = ' ';
int i;
while (!int.TryParse(ch.ToString(), out i)) // ponavljaj dokle god ne dobijemo pravilan unos
{
Console.Clear();
Console.WriteLine("1. Start");
Console.WriteLine("2. Pomoć");
Console.WriteLine("3. O programu");
Console.WriteLine(Environment.NewLine);
Console.WriteLine("4. Izlaz");
Console.WriteLine(Environment.NewLine);
Console.Write("Izaberite opciju:");
ch = (char)Console.Read(); // ovde sam ucitao samo prvi karakter unosa, u char formatu
}
//kada program dodje do ovde, sigurno je unesena neka cifra
//sada joj pristupas preko i i radis sta hoces po potrebi
}
ovo, naravno, nije kako treba kompletan program da izgleda nego samo demonstracija.
-EDIT-
zaboravih da dodam, ako ces koristiti taj ulaz za izbor stavke u meniju, a ne neku matematicku operaciju, nema puno smisla konvertovati unos u int, mozes jednostavno ceo onaj tryParse deo u mom primeru da zamenis sa Char.IsDigit(ch), i posle kada ucitas pravilnu vrednost, proveravas:
if (ch == '1')
//prvi izbor
itd.
Eto Irreal ti je sve objasnio. :)
ovo je sjajno, hvala na trudu puno!
Sad ovo sto cu da pitam ne trazim da mi vi uradite neko kazete na koje sve nacine moze.
Ovako imam neki search engine za muziku,e sad na koje sve nacine mogu da dobijem rezultate njegove pretrage.Na primer trazim pesme izvodjaca Taylor Swift,i izbaci mi novu stranicu sa rezultatima te pretrage.Kako mogu da "uzmem" te rezultate i ma koliko god da ih je?I to u C#.Ja sam razmisljao da koristim web scraping,ali da vidim sta vi mislite?
Curl.
Posle sa regexima isfiltriraj rezultat ..
Kako mogu da "uzmem" te rezultate i ma koliko god da ih je?I to u C#.Ja sam razmisljao da koristim web scraping,ali da vidim sta vi mislite?
Nisam shvatio, kako misliš da uzmeš rezultate. Valjda misliš da ih izlistaš. Najjednostavnijni način po meni je da koristiš LINQ, bar bih ja to koristio.
E sad ako ti web scraping radi posao, onda si resio problem. Nadam se da si pogledao ovaj tutorijal http://mhinze.com/archive/screen-scraping-tutorial-using-c-net/
Nisam shvatio, kako misliš da uzmeš rezultate. Valjda misliš da ih izlistaš. Najjednostavnijni način po meni je da koristiš LINQ, bar bih ja to koristio.
E sad ako ti web scraping radi posao, onda si resio problem. Nadam se da si pogledao ovaj tutorijal http://mhinze.com/archive/screen-scraping-tutorial-using-c-net/
Da mislio sam na to da ih izlistam.
Markonije
19.7.2010, 19:56
Imam jedno pitanje mozda ce delovati naivno i prosto za odgovoriti al ja se mucim vec duze vreme.
Bice malo opsirnije al boze moj...
Evo ovako glavna i jedina forma je velicine 800x600 u pixelima,slika koja je background forme je istih dimenzija da lepo pasuje tako da kazem.E sad na odredjenim pozicijama se nalaze labele njih 5-6 ali ono sto je bitno i mora biti tacno je tacna pozicija svake labele u pixel bukvalno sve drugo mi ne odgavara i propast je.Zakljucao sam labele na tim pozicijama,forma takodje, isti min i max size znaci nema rucnog podesavanja dimenzije i sl.
Probam taj programcic na par razlicitih masina sve cool,svugde je sve kako treba ali kad promenim rezoluciju ekrana sa 1280x960(orginalnu) na bilo koju sem 1024x768 labele vise nisu na onim zeljenim pozicijama.
U cemu je problem?Gde gresim?
Znate sta mi je cilj,da imam isti raspored labela proporcijalno u odnosu na formu nevezano za radnu rezoluciju sistema.
How to ... he he
...
Prvo da ti nampomenem da se "zaključavanje kontrola" odnosi samo na IDE, i nema nikakve veze sa runtime-om. Služi da bi osigurao da kontrola ne može da se pomeri u toku dizajniranja GUI-a.
Imaš li screenshot? Čini mi se da je tvoj problem druge prirode, pošto mislim da sam font labele/DPI imaju neke veze sa tim, ali ne mogu više da ti kažem dok ne pogledam...
Pitanje glasi:
Imam tab kontrolu sa nekoliko tabova,kako mogu da dobijem informaciju koji je tab pritisnut?
tabovi nisu pritisnuti nego selektovani.
ovo ti ne kazem da bi se pravio pametan nego zato sto ti pomaze da bolje zapamtis resenje:
tabControl1.SelectedIndex (to je index izmedju 0 i broj tabova -1)
ili tabControl1.SelectedItem (to je referenca ka samom tabu, kome posle mozes da zoves .Text da vidis sta pise u njemu ili da ga na drugi nacin manipulises, recimo sa .Controls.Add(kontrola) da bi mu nesto dodao itd)
Da li postoji mogucnost da se pozove C# funkcija iz eksternog fajla? Npr. imam sledecu f-ju:
public void Buy_HomingMissiles(ushort cost)
{
//...
}
u fajlu Function.extension i zeleo bih da je pozovem iz glavnog koda. Da li moze i kako?
Milis, dinamicki, u toku runtimea? Za to imas CSharpCodeProvider i pratece klase, npr. ovako: http://blogs.msdn.com/b/ddietric/archive/2008/06/11/compiling-code-at-runtime-c-3-0-and-compiler-executable-file-csc-exe-cannot-be-found.aspx
Nije tehnicki pozivanje, ali je najblize tome sto ti treba...
A ako je u pitanju binding u toku kompajliranja, sta ti tacno ne radi?
Da li postoji mogucnost da se pozove C# funkcija iz eksternog fajla? Npr. imam sledecu f-ju:
public void Buy_HomingMissiles(ushort cost)
{
//...
}u fajlu Function.extension i zeleo bih da je pozovem iz glavnog koda. Da li moze i kako?
Preporuka: probaj to nekako da rešiš preko scriptinga, manje boli glava kasnije. ;)
NeoAxis ima build-in Logic Editor u Map Editoru i imam realizovanu potrebnu funkcionalnost preko njega. Radim Shop i problem je sto bih morao da kopiram buy funkcije za upgrade-ove za svaku mapu jer ne postoje globalne klase niti Logic Editor za tipove (razmisljaj klasa u fajlu, npr zombi je objekat GameCharacter tipa). Anyway hteo sam da te funkcije turim u jedan fajl, da ih ne bi trpao u sors pa kompajlirao pri najmanjoj promeni (da ne pominjem sto moram editore da gasim), i pozivam ih preko koda. Rekao bih da ce ovo posluziti kao ok resenje.
Verujem da će preporučeno rešenje raditi kako treba, ali ako planiraš da više ovoga radiš, možda će neki skripting (preporučujem Lua) bolje raditi posao. Ovde je i brzina dosta bitna, koliko vidim, a mnogo ćeš brže raditi sa precompiled Lua chunkovima nego sa funkcijama iz fajla (znači bez Logic Editora – samo središ skripte i linkuješ funkcije). Mada, neću nešto da *******im, ako tebi ovo vrši posao i ako ti ne treba neka ultra brzina, vršiće posao sigurno. E sad, malo je nestandardno to raditi na taj način, ali valjda ne smeta :)
Mozda ovo treba u Web razvoj ali...
Ovako trebam da pristupim mysql bazi sa lokalne masine.E sad ja sam za testiranje koristio bazu na mom racunaru,znaci localhost je njen host.E sad posto ce baza da bude na serveru ... a i njen host je localhost ali ne mogu da koristim localhost zato sto ce da proba da se konektuje na bazu na lokalnom racunaru...
Probao sam da za host stavim adresu tog sajta ali i dalje nece.Pa kako mogu da joj pristupim sa bilo kog racunara(koji je njen host-adresa)?
E da,program pisem u C# i koristim MySql.Data.dll biblioteku.
Geomaster
4.10.2010, 21:27
Mozda ovo treba u Web razvoj ali...
Ovako trebam da pristupim mysql bazi sa lokalne masine.E sad ja sam za testiranje koristio bazu na mom racunaru,znaci localhost je njen host.E sad posto ce baza da bude na serveru ... a i njen host je localhost ali ne mogu da koristim localhost zato sto ce da proba da se konektuje na bazu na lokalnom racunaru...
Probao sam da za host stavim adresu tog sajta ali i dalje nece.Pa kako mogu da joj pristupim sa bilo kog racunara(koji je njen host-adresa)?
E da,program pisem u C# i koristim MySql.Data.dll biblioteku.
Hmm, čudno, trebalo bi da radi sa adresom tog sajta. Znači, kakvu grešku dobiješ? Nema odgovora, pretpostavljam?
Hmm... sad sam probao ovo:
ovako "site.net" dobijam ovo "Host '87.250.46.218' is not allowed to connect to this MySQL server".
a sa "http://www.site.net" dobijam ovo "Unable to connect to any of the specified MySQL hosts."
Geomaster
4.10.2010, 21:56
Hmm... sad sam probao ovo:
ovako "site.net" dobijam ovo "Host '87.250.46.218' is not allowed to connect to this MySQL server".
a sa "http://www.site.net" dobijam ovo "Unable to connect to any of the specified MySQL hosts."
Po tome, problem je oko permission-a. Znači, server je podešen da ne prihvata eksterne MySQL konekcije. Pročačkaj malo po podešavanjima MySQL-a, mora da ima negde to da se podesi.
MySQL server je podešen tako da ne dozvoljava remote access tj. pristup sa bilo koje adrese koja nije localhost (127.0.0.1). Pristup se omogućava na samom serveru kroz shell ili eventualno dodavanjem IP-a klijenta u listu dozvoljenih eksternih IP adresa (u slučaju korišćenja recimo cPanela-a ili sličnog rešenja).
Ukoliko se koristi shell bitno je da MySQL korisnik mora eksplicitno da se definiše i za localhost i za eksternu IP adresu.
-- Definisanje korisnika na localhostu - OBAVEZNO
CREATE USER 'korisnik'@'localhost' IDENTIFIED BY PASSWORD('lozinka');
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE VIEW ON korisnikova_baza.* TO 'korisnik'@'localhost';
-- remote korisnik - zameniti ip_korisnika sa IP adresom
CREATE USER 'korisnik'@'ip_korisnika' IDENTIFIED BY PASSWORD('lozinka');
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE VIEW ON korisnikova_baza.* TO 'korisnik'@'ip_korisnika';
kolege su ti lepo rekle gde je problem.
Ja bi samo da dodam jos jednu informaciju koja ti mozda nije tolko korisna sada al moze da ti bude korisna u buducnosti.
Koliko sam razumeo, sad ti treba pristup bazi s'polja samo za testiranje, jel tako?
i to je uredu, dozvolices pristup svojoj ip adresi (ili cak svim ip adresama, dok jos nemas kriticne podatke na serveru)
medjutim, ako ikada budes pravio aplikaciju koja ce namenski da se kaci sa korisnickih racunara na tvoju bazu, nikako nemoj da ides u tom pravcu otvaranja baze za konekcije s'polja, vec je resenje web servis.
postavio bi web servis na istom racunaru kao i bazu, on bi se lokalno kacio na bazu a korisnici na sam web servis.
web servis bi imao minimum funkcija koje su neophodne za rad sa korisnicima i naravno neki nivo bezbednosti.
dal bi to bilo korisnicko ime i sifra ili cak sertifikati, to vec zavisi od ozbiljnosti projekta i mogucnosti i potreba.
sve u svemu, nista sto ti sada treba, al cisto da znas za neku perspektivu :)
Plus činjenica da ukoliko pod C# aplikacijom ne podrazumevaš aplikaciju rađenu u ASP .NET-u onda zaista nemaš razloga da koristiš daljinski pristup MySQL-u.
Desktop aplikacije po prirodi nisu ni namenjene da pristupaju udaljenim bazama podataka već da sve svoje podatke smeštaju lokalno na računaru. Za te potrebe se koristi ili nativna podrška za .mdb fajlove ili eventualno neki wrapper za SQLite i sl.
Kod web aplikacija priča je malo drugačija pošto web aplikacije obično koriste DBMS servere za skladištenje podataka ali se čak i tada većina aplikacija oslanja na DBMS servere koji se nalaze u NAT-ovanoj mreži na kojoj su obično i web server, mail server, DNS server itd.
Ne to je desktop aplikacija,ali svaki user ce morati da napravi account.
A baza ce da cuva username,password i email.
Geomaster
6.10.2010, 19:42
Isto unrelated, ali pazi na to kako čuvaš username i password za pristup bazi. Ti podaci moraju biti enkriptovani, inače bilo ko će moći da ih pročita.
username nije neki problem.
za password pazi da ne saljes kao obican tekst preko neta.
sad o teoriji zastite sifara mozemo da razglabamo satima i postoje ljudi koji se samo time i bave.
ali ukratko, sifru u bazi neces cuvati kao sifru vec kao hash sifre.
hash je enkripcija koja ne moze da se dekriptuje.
ljudi najvise koriste MD5 (koji nije pogodan, ali posto ne pravis banking sistem, i te kako ce da posluzi)
dakle, kada korisnik izabere sifru, ti ces da uradis MD5 hash sifre, i to da posaljes serveru.
kada se korisnik loguje, opet napravis MD5 hash sifre kojom pokusava da se loguje i proveris da li se slaze sa onim hashom koji si kreirao prilikom registracije korisnika.
jedina mana ovakvog sistema su tzv "rainbow tabele" gde hakeri koriste bilione izgenerisanih hash-ova za sve moguce kombinacije slova i brojeva kako bi "provalili" sifru.
ti bi na ovo trebao da budes manje vise imun, al mozes i da "posolis" hash tako sto neces kreirati hash od sifre vec hash od "neka moja tajna fraza" + sifra
itd.
to su najosnovniji sistemi zastite, necu ulaziti u daleko kompleksnije kakvi se koriste na ozbiljnim sistemima :)
Da smislio sam slican(isti) sistem cuvanja sifri.
Znaci neka moja enkripcija pa onda MD5 hash.Takodje poslusacu vas i korisnici ce da se "kace" na web servis a on ce da komunicira sa bazom.
Hvala vam.
Geomaster
6.10.2010, 20:33
Ja sam konkretno mislio na username i password za pristup (ne usernameovi i passwordovi koji se čuvaju u bazi), pošto bilo da se program kači direktno na bazu ili na web servis, u svakom slučaju potrebna je neka autentikacija tipa username/password (sa bazom ili web servisom). Gledaj da to ne čuvaš direktno u programu, pošto je u pitanju običan niz bajtova, pa može da se filtrira nekim hex editorom i neko da pronađe URL-ove, username i password za pristup, ako znaš na šta mislim. Znači gledaj da to čuvaš enkriptovano u sâmom binarnom zapisu, a da dekriptuješ on-the-fly (što opet nije neki mnogo bezbedan pristup, ali poslužiće).
...
ako aplikacija radi nesto i sama po sebi, bez da se prvo korisnik loguje, onda da - mozes tako nesto da zbudzis.
al ako aplikaciju koriste samo korisnici koji imaju ime i sifru, neces cuvati sifru lokalno ni u jednom obliku.
sto manje "verujes" klijentu to bolje.
Geomaster
6.10.2010, 22:31
ako aplikacija radi nesto i sama po sebi, bez da se prvo korisnik loguje, onda da - mozes tako nesto da zbudzis.
al ako aplikaciju koriste samo korisnici koji imaju ime i sifru, neces cuvati sifru lokalno ni u jednom obliku.
sto manje "verujes" klijentu to bolje.
Da, u stvari, njemu treba samo za dobijanje podataka iz baze, ne i za menjanje. Onda nije problem, autentikacija i nije potrebna.
@Ivan-94
Ukoliko želiš u potpunosti da zaštitiš saobraćaj između udaljenih servera i tvoje klijentske aplikacije jedini siguran metod ti je korišćenje klijentskih SSL sertifikata sa peer verifikacijom. Tako ćeš izbeći potrebu da pišeš bilo kakav kod za pripremu podataka pred slanje na server a isti SSL kanal možeš da koristiš i za prenos bilo kakvih drugih informacija.
Klijentski sertifikati se inače lako instaliraju i podrška za njihovo kreiranje postoji čak i kod web servera koji imaju isključivo web baziran interfejs za podešavanja naloga (cPanel itd.) Da napomenem da klijentski SSL sertifikati nisu isto što i serverski SSL sertifikati koje potpisuju autorizovani sertifikatori (CA) koji tu uslugu naplaćuju.
Inače korišćenje SSL-a ne iziskuje bilo kakve bitne promene koda tvoje aplikacije osim što ćeš sve HTTP zahteve serveru sada umesto na port 80 slati na port 443.
Pozdrav ljudi. Kako u C# da napisem stepenovanje (x^y)?
Geomaster
22.10.2010, 23:41
Math.Pow(x, y);
Pozdrav svima. Ovde sam prvi put (na ovom dijelu foruma) ali moguće je da ću duže ostati :), posebno na ovoj temi jer sam počeo da učim C# prije malo više od dva mjeseca, prešao sam dve knjige i sad sam uzeo da pravim neki svoj programčić jer se, kako kažu, kroz to najviše nauči (a i kroz to se najbolje vidi koliko se ne zna :(). Imam još nekih ideja za neke sitnije projekte ali to ću kad ovaj završim.
Želim da napravim jednostavni kataloški program (za filmove) koji će unositi po svega par podataka za svaki unos/film i ispisivati ih, ali ne želim da to radim sa bazom podataka nego preko lokalnog fajla (praktičnije je, mogu program koristiti bilo gdje, dati ga bilo kome, nema potrebe za bazom). Dakle treba da se u lokalni fajl, recimo TXT fajl, za svaki uneseni film upisuje naslov filma, žanr, datum kad sam ga pogledao, dakle tri "kolone" za svaki unos/film. Napravio sam formu koja to unosi i snima u fajl, ali samo za taj jedan unos. Kako da napravim da se svaki sledeći unos smješta u fajlu ispod prethodnog? Znači da TXT fajl ima sledeću strukturu:
NaslovFilma1
Žanr1
DatumGledanja1
NaslovFilma2
Žanr2
DatumGledanja2
NaslovFilma3
Žanr3
DatumGledanja3
Pri čemu bi se onda sve to prikazivalo u ListView koji bi imao te tri kolone (nalov, žanr, datum).
Da li je ovo komplikovano? Ima li neko savjet? Napravio sam forme, podaci se uredno unose u fajl, ali samo za taj jedan (prvi) unos.
Drugo pitanje: na ovoj slici (http://images.collectorz.com/movie/screenshots/mac-main-screen.png) ovog poznatog komercijalnog kataloškog programa ovo lijevo je standarni TreeView, gore desno je ListView, ali šta je ovo dole desno gdje se ispisuju podaci i slika selektovanog filma?
I zašto kada prikazujem tekst iz nekog fajla u TexBox kontroli taj tekst bude sav selektovan, markiran?
I jedno pitanje za baze podataka, postoje ona tri oblika: connected, disconnected i entity framework, šta predlažete da prvenstveno učim za početak, na koji da najviše obratim pažnju i vježbam? Da li je to disconnected layer (DataSet)? Da li se sa sva tri može uraditi sve pa je stvar ličnog ukusa koji će neko koristiti, ili nije tako?
Geomaster
23.10.2010, 21:59
@Paladin:
Ne radim u C#-u, ali mislim da mogu da ti pomognem. Kada otvaraš fajl, nemoj da ga otvaraš u 'output' modu, nego u 'append'. Time će se svaki novi podatak koji upišeš u fajl upisivati na njegov kraj, a prethodni sadržaj se neće brisati. Koliko sam razumeo, tebi je to bio problem. Mada sad, postoje bolji načini da uradiš to upisivanje u fajl, ali za sada tebi ovo treba.
Za drugo pitanje, najverovatnije je neki box koji renderuje HTML kod, bar bih ja to tako uradio. Najprostiji način za ovo je da implementiraš Microsoftovu WebBrowser kontrolu (čini mi se da je ima i u .NET frameworku) ali si onda zavistan od toga da li na ciljnom računaru ima Internet Explorer.
Za treće pitanje, kada dodaš tekst probaj da uradiš ovo
TextBox.Select(0, 0);ili
TextBox.SelectionStart = TextBox.Text.Length;Trebalo bi da deselectuje tekst. (Ovo sam našao na Google-u i pričam dosta napamet, neko ko radi u C# ako može da potvrdi/opovrgne/dâ bolji način.)
Oko zadnjeg pitanja, nikad nisam radio mnogo sa bazama, tako da ću preskočiti i pustiti nekog iskusnijeg da ti objasni :)
1. Nemoj nikako da koristiš txt fajl već XML koji je upravo predviđen za ovakve relacije. Samo malo bolje prouči XML i videćeš da je savršen za tvoj problem.
2. Ovo dole desno ti je obična Web kontrola nju imaš u toolbox-u.
3. Probaj da staviš da ti je textBox readOnly ili kako ti je geomaster objasnio u prvom primeru.
4. Ovo te baš i nisam shvatio, ja sam npr. kupio knjigu ADO.net pa sam odatle učio.
Geomaster
23.10.2010, 22:25
1. Nemoj nikako da koristiš txt fajl već XML koji je upravo predviđen za ovakve relacije. Samo malo bolje prouči XML i videćeš da je savršen za tvoj problem.
Ma možda bolje da krene sa txt fajlovima, lako će posle početi da korsti XML. Cenim da sistem parsinga može malo da zbuni početnike...
Math.Pow(x, y);
Da se ubacim jos jednom. Da li je ispravno da 6x10^24 napisem kao 6e24 u C#?
:ciao:
ilija_iksi
24.10.2010, 17:48
Ovo pitanje sam stavio na posebnu temu, pa me je irreal preusmerio ovde.
1. Radim neke programe u C# pa me zanima kako da pustim video. Gledao sam neki tutorijal i kaže mi da ubacim Windows Media Player kontrolu. Kod mene te kontrole nigde nema. Kako da tu kontrolu ubacim u toolbox?
2. Pomenuta kontrola pušta i video i audio. Zanima me da li nekom posebnom kontrolom može da se reprodukuje .mp3 zvuk. SoundPlayer postoji i pušta samo .wav.
PS. Koristim VS2010 Express i WPF rešenja ne dolaze u obzir!
ilija_iksi
24.10.2010, 17:54
Math.Pow(x, y);
A kako ide korenovanje?
Pa onda valjda staviš da ti y bude 1/2.
Geomaster
24.10.2010, 18:11
A kako ide korenovanje?
Ima funkcija za kvadratni koren,
Math.Sqrt(x);
A za druge osnove je
Math.Pow(x, 1 / y)
To je y-ti koren iz x.
ilija_iksi
24.10.2010, 20:37
Ovo pitanje sam stavio na posebnu temu, pa me je irreal preusmerio ovde.
1. Radim neke programe u C# pa me zanima kako da pustim video. Gledao sam neki tutorijal i kaže mi da ubacim Windows Media Player kontrolu. Kod mene te kontrole nigde nema. Kako da tu kontrolu ubacim u toolbox?
2. Pomenuta kontrola pušta i video i audio. Zanima me da li nekom posebnom kontrolom može da se reprodukuje .mp3 zvuk. SoundPlayer postoji i pušta samo .wav.
PS. Koristim VS2010 Express i WPF rešenja ne dolaze u obzir!
Još niko nije odgovorio!!!
Evo ovo sam ja koristio kada sam to radio.
http://www.c-sharpcorner.com/uploadfile/mgold/playingvideo11242005002218am/playingvideo.aspx?articleid=3d1c3b81-1a12-48e7-ad5e-758f96525409
sa tim sto imas sada i DirextX 2010 sdk mislim, ali isti je princip.
ilija_iksi
26.10.2010, 19:50
Evo ovo sam ja koristio kada sam to radio.
http://www.c-sharpcorner.com/uploadfile/mgold/playingvideo11242005002218am/playingvideo.aspx?articleid=3d1c3b81-1a12-48e7-ad5e-758f96525409
sa tim sto imas sada i DirextX 2010 sdk mislim, ali isti je princip.
Imam DX Sdk June 2010 i guess what? Ne radi. Sve datoteke imaju .h extenziju, jako korisnu za C/C++, a neupotrebljivu za C#. Moram li da skidam raniju verziju? BTW, koju si verziju koristio?
Geomaster
26.10.2010, 22:27
Imam DX Sdk June 2010 i guess what? Ne radi. Sve datoteke imaju .h extenziju, jako korisnu za C/C++, a neupotrebljivu za C#. Moram li da skidam raniju verziju? BTW, koju si verziju koristio?
U SDK-u imaš managed DLL-ove koje trebaš da dodaš kao reference u C#-u.
\Developer Runtime\x86 (ili x64 za 64-bitni sistem)\DirectX For Managed Code i dodaj fajlove Microsoft.DirectX.Direct3DX.dll (D3DX helperi), Microsoft.DirectX.Direct3D.dll (D3D), i Microsoft.DirectX.dll (osnovni DX).
Onda importuješ odgovarajuće reference, trebalo bi da je ovako
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using Microsoft.DirectX.Direct3DX;
(nemam C# na laptopu pa ne mogu da proverim)
I onda bi trebalo da može. Daj D3D-u HWND u kom hoćeš da imaš iscrtano, odradi screen quad i dekodiranje preko D3D-a.
EDIT: Sad sam pogledao link koji ti je Ivan452 predložio i sve lepo piše, uključujući i dodavanje referenci. Tebi ne trebaju .h fajlovi, nego .dllovi.
ilija_iksi
28.10.2010, 21:22
U SDK-u imaš managed DLL-ove koje trebaš da dodaš kao reference u C#-u.
\Developer Runtime\x86 (ili x64 za 64-bitni sistem)\DirectX For Managed Code i dodaj fajlove Microsoft.DirectX.Direct3DX.dll (D3DX helperi), Microsoft.DirectX.Direct3D.dll (D3D), i Microsoft.DirectX.dll (osnovni DX).
Onda importuješ odgovarajuće reference, trebalo bi da je ovako
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using Microsoft.DirectX.Direct3DX;
(nemam C# na laptopu pa ne mogu da proverim)
I onda bi trebalo da može. Daj D3D-u HWND u kom hoćeš da imaš iscrtano, odradi screen quad i dekodiranje preko D3D-a.
EDIT: Sad sam pogledao link koji ti je Ivan452 predložio i sve lepo piše, uključujući i dodavanje referenci. Tebi ne trebaju .h fajlovi, nego .dllovi.
Nemam datoteku DX for managed code, ima tu neki .dllovi, ali ne mogu da ih raspoznam... :(
Screenshot priložen.
Geomaster
28.10.2010, 22:38
Nemam datoteku DX for managed code, ima tu neki .dllovi, ali ne mogu da ih raspoznam... :(
Screenshot priložen.
Taj screenshot je iz kog direktorijuma?
Evo ti sledeci nacin:
ToolBox-desni klik-Choose Components-kartica 'COM Components'-selektujes Windows Media Player-OK.
Potom prevuces tu komponentu, rasiris je malo cisto da se vidi video.
Atribut 'URL' ti je putanja do fajla koji zelis da pustis.
Nemoguce da ne radi.
Ono sa DirectX-om bi mozda bilo bolje resenje, ali nadam se da ti je i ovo ok.
ilija_iksi
29.10.2010, 11:48
Evo ti sledeci nacin:
ToolBox-desni klik-Choose Components-kartica 'COM Components'-selektujes Windows Media Player-OK.
Potom prevuces tu komponentu, rasiris je malo cisto da se vidi video.
Atribut 'URL' ti je putanja do fajla koji zelis da pustis.
Nemoguce da ne radi.
Ono sa DirectX-om bi mozda bilo bolje resenje, ali nadam se da ti je i ovo ok.
To!!!! :alealeee::alealeee::alealeee:
Baš sam to tražio! Ivane, car si :to_care:
Bog ti dao zdravlje.
miša topola
29.10.2010, 15:01
Počeo sam da radim u Visual C# 2010 Express, ikada pokušam do pokrenem program koji sam napisao samo se na trenutak pojavi komandni prozor i odmah se zatvara. Kako da rešim ovo?
Geomaster
29.10.2010, 15:04
Počeo sam da radim u Visual C# 2010 Express, ikada pokušam do pokrenem program koji sam napisao samo se na trenutak pojavi komandni prozor i odmah se zatvara. Kako da rešim ovo?
Pomenuto preko 9000 puta.
Console.ReadKey();
miša topola
29.10.2010, 15:15
Hvala na odgovoru, ali nije to što ja tražim :)
Nisam pokrenuo program preko Start Without Debugging kao što treba, nego preko Start Debugging pa se zato komandni prozor odmah zatvarao.
Za treće pitanje, kada dodaš tekst probaj da uradiš ovo
TextBox.SelectionStart = TextBox.Text.Length;Trebalo bi da deselectuje tekst.
Hvala, to je to :)
Nemoj nikako da koristiš txt fajl već XML koji je upravo predviđen za ovakve relacije. Samo malo bolje prouči XML i videćeš da je savršen za tvoj problem.
Hvala na uspućivanju na pravi put, našao sam jedan dobar tutorial (http://functionx.com/vcsharp/xml/Lesson01.htm) za rad sa XML-om u C# i proučavao ga i sa tim sam uspio napraviti to što sam želio, nešto što liči na neki katalog knjiga, u XML se uredno upisuju naziv filma, godina, datum kad sam ga pogledao, ocjena i još ponešto. Ideja je da se to onda prikazuje u ListView i to sam uradio, svaki podatak se uredno prikazuje u svojoj koloni.
Ali je sad malo zapelo nešto drugo, našao sam u jednoj knjizi kako se sredi ono sortiranje kolona u ListView, napravi se klasa koja podržava IComparer i tu se definiše šta i kako radi, i to mi je proradilo, ali samo djelomično. Naime sortiranje kolona sa datumom kad je film pogledan i ocjenom ne rade kako treba, ne sortira ih uredno. Koliko vidim problem je što su svi upisani podaci u XML-u u string formatu, npr kada sam unosio datum radio sam sa DateTimePicker kontrole i podatak sam uzeo sa
string datumGledanja = dtpDatumGledanja.Value.ToShortDateString();
XmlText text = xmlDoc.CreateTextNode(datumGledanja);
Dakle ovde se sve radi sa stringovima, pa tako i ocjenu filam unosim u XML kao string
string ocjenaFilma = (string)comboOcjena.SelectedItem;
Kako da onda sortiram te kolone u ListView kada su sve one string? Našao sam kako se napravi implementacija IComparer interfejsa u nekoj klasi za sortiranje gdje npr ide ovako
private static int PoredjenjeSubitema(ListViewItem.ListViewSubItem sub1, ListViewItem.ListViewSubItem sub2)
{
if (sub1.Tag == null || sub2.Tag == null)
{
return CaseInsensitiveComparer.DefaultInvariant.Compare(s ub1.Text, sub2.Text);
}
else if (sub1.Tag is Int32)
{
int x1 = (Int32)sub1.Tag;
int x2 = (Int32)sub2.Tag;
return x1.CompareTo(x2);
}
else if (sub1.Tag is DateTime)
{
DateTime x1 = (DateTime)sub1.Tag;
DateTime x2 = (DateTime)sub2.Tag;
return x1.CompareTo(x2);
}
throw new ArgumentException("U nemogucnosti da sortiram ListViewItem instance");
}
I to bi trebalo da radi, ali ako bi meni neki podaci u ListView kolonama bili zaista Integer ili DateTime, ali oni to nisu već su svi string.
Šta da radim?
Ovako sam ubacivao u ListView
XmlNodeList listaFilmova = rootXml.ChildNodes;
foreach (XmlNode filmNode in listaFilmova)
{
ListViewItem listItem = new ListViewItem(filmNode.ChildNodes[0].InnerText); // Nalov filma
listItem.SubItems.Add(filmNode.ChildNodes[1].InnerText); // Godina
listItem.SubItems.Add(filmNode.ChildNodes[3].InnerText); // DatumGledanja
listItem.SubItems.Add(filmNode.ChildNodes[4].InnerText); // Ocjena
listItem.SubItems.Add(filmNode.ChildNodes[5].InnerText); // Top250
listItem.SubItems.Add(filmNode.ChildNodes[6].InnerText); // DVD kolekcija
lstFilmovi.Items.Add(listItem);
}
Da li mogu ovde pri kreiranju Subitema za ubacivanje u ListItem da ubacujem Integer ili DateTime? Probao sam da uradim
Int32.Parse(filmNode.ChildNodes[4].InnerText)
ali neće, valjda očekuje string kao listItem.SubItems element.
Dakle kako da sortiram kolone u ListView tipa "Ocjena filma" kada je ocjena u XML unesena kao string?
Vidi ako ti je filmNode.ChildNodes[4].InnerText stvarno int tip i jedino int onda koristiš Int32.Parse, a ako nije moraćeš sa int.TryParse. E sad bilo bi lepo da pročitaš poruku koju ti intellisence prijavljuje, odnosno grešku, jer je tu ključ tvog problema.
U ostalom, ako ti onaj nod zahteva string, onda ćeš morati prvo da ga konvertuješ u string pa u int.
npr.: Int32.Parse(filmNode.ChildNodes[4].InnerText.ToString());
Sve je u XML uneseno kao string jer sam radio sa XmlText i CreateTextNode koji primaju samo string (može li drugačije?), npr.
XmlText text = xmlDoc.CreateTextNode(nazivFilma);
text = xmlDoc.CreateTextNode(godinaFilma);
text = xmlDoc.CreateTextNode(datumGledanja);
pri čemu sam i datum morao konvertovati u string
string datumGledanja = dtpDatumGledanja.Value.ToShortDateString();
Ocjena filma (koja je isto konvertovana u string pri upisu u XML) mi se ovako unosi iz XML-a u petu kolonu ListView-a
listItem.SubItems.Add(filmNode.ChildNodes[4].InnerText); // Ocjena
a ako uradim ovo
listItem.SubItems.Add(Int32.Parse(filmNode.ChildNo des[4].InnerText)); // Ocjena
ili
listItem.SubItems.Add(Int32.Parse(filmNode.ChildNo des[4].InnerText.ToString())); // Ocjena
dobijem ova dva errora:
The best overloaded method match for 'System.Windows.Forms.ListViewItem.ListViewSubItem Collection.Add(string)' has some invalid arguments
Cannot convert from 'int' to 'string'
I zbog toga mi ne radi na pravi način soritanje kolona "Ocjena filma" i "Datum gledanja" u ListView-u jer su svi elementi u njemu string, a da su Integer ili DateTime onda bi radilo. Sortiranje onoga što i treba biti string kao "Naziv filma" radi kako treba. Samo da mi je natjerati i ocjene i datum da se sortiraju :confused:
Vidi, veoma je jednostavan problem. Ovo znači da ti je filmNode.ChildNodes[4].InnerText već u string formatu, ali da sadrži ne int karaktere u njemu. Mislim da ti je pored broja prošao i neki beli spejs koji ne možeš da vidiš pa ne može da uradi konverziju. Da bi to rešio imaš više načina, od sečenja stringa za taj razmak pa do splitovanja tog stringa u neki niz.
npr.
int[] nekiInt = filmNode.ChildNodes[4].InnerText.Split(' ');
Tako da će ti onda nekiInt[0] biti taj tvoj broj koji ti treba.
ili
string nekiString = filmNode.ChildNodes[4].InnerText;
nekiString.Remove(nekiString.Lenght - 1);
int nekiInt = Int32.Parse(filmNode.ChildNodes[4].InnerText);
E da Vidim, šta pokušavaš da uradiš. Oćeš da dodaš u listView int karakter, ali problem je u tome što on prima samo string. Tako da je jedino moguće da int čuvaš na nekom drugom mestu zbog sortiranja i kad posle ubacuješ u listView onda taj int samo konvertuješ u string.
npr. nekiInt.ToString()
Oćeš da dodaš u listView int karakter, ali problem je u tome što on prima samo string.
Da, to sam i ja zaključio, ListView prima samo stringove i tu je problem.
Ali ovaj je u knjizi sortirao integere i DateTime na taj način što je kod implementacije IComparer interfejsa u klasu za sortiranje provjeravao tip podataka pomoću Tag propertija
private static int PoredjenjeSubitema(ListViewItem.ListViewSubItem sub1, ListViewItem.ListViewSubItem sub2)
{
if (sub1.Tag == null || sub2.Tag == null)
{
return CaseInsensitiveComparer.DefaultInvariant.Compare(s ub1.Text, sub2.Text);
}
else if (sub1.Tag is Int32)
{
int x1 = (Int32)sub1.Tag;
int x2 = (Int32)sub2.Tag;
return x1.CompareTo(x2);
}
else if (sub1.Tag is DateTime)
{
DateTime x1 = (DateTime)sub1.Tag;
DateTime x2 = (DateTime)sub2.Tag;
return x1.CompareTo(x2);
}
throw new ArgumentException("U nemogucnosti da sortiram ListViewItem instance");
}
Gdje je rekao:
We leverage the fact here that we assigned the actual value of each subitem to the Tag property for all nonstring columns. Knowing this, we sort the items based on the Type of the first item. We only handle integer and date-time types in our code, as these are the only types required for our sample. Additional types could be added in a similar manner.
Zato on ispituje da li je Tag nekog subitema Integer ili DateTime da bi utvrdio da je taj subitem Integer ili DateTime, i onda vrši komparaciju
if (sub1.Tag is Int32)
Samo gledam gdje i kako da onda definišem Tag-ove za svoje subiteme. Imaš li ideju? Nakon toga bi mi gornji kod trebao raditi.
Ovaj kod ne sortira stringove, već intidžere i vreme (mada samo pretpostavljam jer ne vidim šta radi metoda CompareTo()). On samo proverava da li string može da se konvertuje u int, pa ako može izvrši CompareTo(), a pre toga konvertuj u int ili u DateTime.
Tako da sam već rekao. Čuvaš polja u int-u, al kad ti zatreba u listView-u jednostavno konvertuješ taj int u string zbog prikaza.
Trebaće ti malo vremena da se navikneš na ovakav pristup i ja sam imao problema u početku, al vidićeš da ti to nikad neće predstavljati problem u kreiranju složenijih algoritama.
Imam opet problem. Napravio sam klasu i sad ocu da napravim niz objekata te klase i da redom uzimam podatke (preko konzole) za polja klase. Evo ga kod:
Klasa:
class Daska
{
//Fields
private string _ime;
private double _sirina;
private double _duzina;
//Properties
public string ime
{
get { return ime; }
set {_ime= value; }
}
public double sirina
{
get { return sirina; }
set { _sirina= value; }
}
public double duzina
{
get { return duzina; }
set { _duzina= value; }
}
}
Main():
Daska[] d1= new Daska[4];
for (int i = 0; i < d1.Length; i++)
{
Console.Write("Ime {0}. daske: ", i+1);
d1[i].ime = Console.ReadLine();
}
for (int i = 0; i < d1.Length; i++)
{
Console.WriteLine(d1[i].ime);
}
Imam opet problem. Napravio sam klasu i sad ocu da napravim niz objekata te klase i da redom uzimam podatke (preko konzole) za polja klase. Evo ga kod:
Klasa:
class Daska
{
//Fields
private string _ime;
private double _sirina;
private double _duzina;
//Properties
public string ime
{
get { return ime; }
set {_ime= value; }
}
public double sirina
{
get { return sirina; }
set { _sirina= value; }
}
public double duzina
{
get { return duzina; }
set { _duzina= value; }
}
}
Main():
Daska[] d1= new Daska[4];
for (int i = 0; i < d1.Length; i++)
{
Console.Write("Ime {0}. daske: ", i+1);
d1[i].ime = Console.ReadLine();
}
for (int i = 0; i < d1.Length; i++)
{
Console.WriteLine(d1[i].ime);
}
A šta bi ovde bilo pitanje? Nisam razumeo.
ilija_iksi
4.11.2010, 18:05
Zna li neko kako isprintati sliku prikazanu u pictureBoxu koristeći printDialog?
Pravim neki picture viewer, pa sa se tu zaglavio.
A šta bi ovde bilo pitanje? Nisam razumeo.
U klasi Daska imam string Ime. Kad napravim po 1 instancu klase, ime zadam ovako:
Daska dsk1 = new Daska();
dsk1.Ime = "Steva"
Daska dsk2 = new Daska();
dsk2.Ime = "Djura"
Daska dsk3 = new Daska();
dsk3.Ime = "Mile";Sad kad napravim array:
Daska[] dsk = new Daska[3];i ocu da unesem redom imena za sve tri instance u nizu. Sa kodom koji sam postavio u proslom postu nece. Kad unesem 1. ime izbaci mi gresku:
Object reference not set to an instance of an object.
To iskoci pre nego sto zada vrednost instanci dsk[0].
iMa_NeKo_PljUgU
4.11.2010, 19:27
...
Kad unesem 1. ime izbaci mi gresku:
Object reference not set to an instance of an object.
To iskoci pre nego sto zada vrednost instanci dsk[0].
Pa znači da nisi napravio instancu... Dodaj d1[i] = new Daska(); u for petlju...
P.S. I u klasi "Daska", ispravi nazive promenljivih u get-ovima.
tako je.
sa onim daska[] dsk = new daska[3]
ti si sa tim "new" kreirao novi array i dodelio mu velicinu (3)
ali svaki clan tog array-a upucuje ka "null" jer ne sadrzi u sebi ni jednu instancu daske.
naravno, resenje je da za svaki element kreiras novu dasku (ili dodelis postojecu, sto je takodje validno)
mozes znaci npr da uradis
daska[] dsk = new daska[3];
for (int i = 0; i < 3; i++)
{
daska d = new daska();
d.ime = "bla"; // ili naravno ucitavanje iz konzole
daska[i] = d;
}
dakle, ne moras niz da popunjavas novim daskama, mozes i da dodajes postojece.
to u ovom konkretnom primeru nije narocito korisno ali u nekim drugim i te kako jeste.
Treba ti niz
Ako ti treba niz onda moraš da ga deklarišeš. Npr.
public string[] ime = new string[4];
i tek onda mozes da guras u ime koliko god ti treba, ali ne na nacin koji si ti naveo vec ovako Daska d1 = new Daska();
Znaci tek onda je d1.ime[0], prvi clan niza.
Treba ti niz
Ako ti treba niz onda moraš da ga deklarišeš. Npr.
public string[] ime = new string[4];
i tek onda mozes da guras u ime koliko god ti treba, ali ne na nacin koji si ti naveo vec ovako Daska d1 = new Daska();
Znaci tek onda je d1.ime[0], prvi clan niza.
nesto si se malo preracunao.
ne treba njemu niz imena nego niz dasaka, koji je uspesno kreirao (svaka daska = jedno ime)
ono sto nije radio, nije kreirao instance u nizu, sto mu je "iMa_NeKo_PljUgU" objasnio, a ja sam dodao da moze i samo da dodeli vrednost vec postojece instance.
Heh, skontao sam tek kad sam video post od iMa_NeKo_PljUgU,. Preduhitrio me dok sam kucao moj odgovor. :)
Odlicno, sve radi kako treba. Samo jos jedno pitanje i necu vise danas :p. Da li mogu da nacrtam elipsu, ali ne da definisem pravougaonik u koji je upisana ta elipsa, nego recimo centar i duzinu osa/poluosa ili fokuse/ekscentricitet?
:ciao:
zavisi o kojem crtanju pricas... gdi+ ?
u svakom slucaju, sve moze, ako znas matematiku :)
Pogledaj ovaj tutorijal možda vidiš nešto zanimljivo.
http://www.yevol.com/en/vcsharp/applicationdesign/Lesson14.htm
Nacrtaš je matematičkom funkcijom za elipsu, samo ne crtaš tačku po tačku nego izračunate tačke spajaš linijom (ne znam kako ide u C#, u Delphiju je bilo tako što pozicioniraš tačku sa MoveTo(X, Y) pa vrtiš petlju sa LineTo(X, Y)).
zavisi o kojem crtanju pricas... gdi+ ?
u svakom slucaju, sve moze, ako znas matematiku :)
Pravo da ti kazem, nemam pojma sta je gdi+. Malo sam se igrao sa crtanjem pomocu Paint event-a.
Graphics x = e.Graphics;
Pen Olovka = new Pen(Color.Black);
x.DrawEllipse(Olovka, 50, 50, 100, 90);
// Ovo sam kucao napamet, mozda nesto ne valjaKod .DrawEllipse ima 4 override-a, ali ni preko jednog ne mogu da crtam pomocu centra, osa...
Jel ima neki tutorial za to? Brzim prelazom preko gugla nisam nista nasao.
Edit: Uh, dva odgovora dok ja otkucah jedan. :D Sutra cu preci dati tut i potraziti nesto o tim funkcijama, sad idem u krevet, fax pocinje zorom ranom.
Pozdrav!
Geomaster
4.11.2010, 23:48
Pravo da ti kazem, nemam pojma sta je gdi+. Malo sam se igrao sa crtanjem pomocu Paint event-a.
Graphics x = e.Graphics;
Pen Olovka = new Pen(Color.Black);
x.DrawEllipse(Olovka, 50, 50, 100, 90);
// Ovo sam kucao napamet, mozda nesto ne valjaKod .DrawEllipse ima 4 override-a, ali ni preko jednog ne mogu da crtam pomocu centra, osa...
Jel ima neki tutorial za to? Brzim prelazom preko gugla nisam nista nasao.
Probaj sa
float RadiusX;
float RadiusY
float CentarX;
float CentarY;
x.DrawEllipse(Olovka, CentarX - RadiusX, CentarY - RadiusY, CentarX + RadiusX, CentarY + RadiusY);
Malo napamet, ali trebalo bi da radi...
@Toce da, to je GDI+
Nacrtaš je matematičkom funkcijom za elipsu, samo ne crtaš tačku po tačku nego izračunate tačke spajaš linijom (ne znam kako ide u C#, u Delphiju je bilo tako što pozicioniraš tačku sa MoveTo(X, Y) pa vrtiš petlju sa LineTo(X, Y)).
u principu nema potrebe za time jer već ima funkciju za crtanje elipse.
ako već ne postoji ugrađeni način da se definiše centar i prečnik, onda može da preračuna za taj i taj centar i taj i taj prečnik koji je kvadrat, pa tako da uradi, cenim da bi bilo brže i lakše.
ilija_iksi
5.11.2010, 14:15
Zna li neko kako isprintati sliku prikazanu u pictureBoxu koristeći printDialog?
Pravim neki picture viewer, pa sa se tu zaglavio.
Hoće li neko odgovoriti?:mad::mad::mad::mad::mad::mad::mad::mad ::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad ::mad::mad::mad::mad::mad::mad::mad::mad::mad:
Hoće li neko odgovoriti?:mad::mad::mad::mad::mad::mad::mad::mad ::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad ::mad::mad::mad::mad::mad::mad::mad::mad::mad:
Dodaj PrintDocument kontrolu, u njenom OnPrint eventu nacrtaj sliku (dobijas graficki dc, samo uradi DrawImage(...)).
Posle to samo odštampaj koristeći PrintDialog...
To ti je najprostije rešenje...
Zna li neko za neki program kojim mogu Word dokument sa tabelom prebaciti u XML? Ništa drugo u njemu ni nema osim tabele sa tri kolone i dosta redova.
Pravio sam neki katalog filmova u tabeli u Wordu i sad sam napravio C# katalog program koji radi sa XML-om pa bih rado da filmove iz Word tabele nekako ubacim u svoj XML, da ne moram ručno sve da ih unosim kroz program. Pretpostavljam da je najbolji način da nekim programom Word tabelu prebacim u XML i da onda napravim neku Import funkciju u programu koja će iz tog XML-a prebaciti filmove u moj XML sa kojim program radi. Ali mi treba dobar program koji će ovu Word tabelu prebaciti u XML. Najidealnije bi bilo da za svaki red tabele iz worda kreiran jedan XML node sa tri elementa jer toliko svaki red ima kolona u wordu.
to zelis da uradis samo sada jednom i to je to ?
to nece biti standardna funkcija programa, jer nemas predstavu kako je ko organizovao listu u wordu, jelte ?
u tom slucaju, zbudzi kako znas i umes, kada jednom prebacis to je kraj.
ja bi se povezao na word direktno iz C#-a i ucitavao liniju po liniju.
koristi google, C# read word document il slicno
Riješio sam uz pomoć ovog programa
http://msdn.microsoft.com/en-us/library/aa140221(office.10).aspx
Morao sam da izvodim razne izmotancije i brojne pokušaje da bih dobio što bolji XML koji bih mogao da raznim find and replace u text editoru svedem na XML formu koju koristi moj program, to znači da dodam razne nodove. Morao sam onda srediti još neke stvari da bi to iz nekih 10 pokušaja proradilo u mom porgramu. Milina, sad ne moram da unosim ručno preko 300 filmova :)
Ali sad imam novu dilemu i nakon toga je sve gotovo. Moj program za svaki slektovani film u ListView-u utvrđuje jedinstveni ID koji se nalazi kao atribut u XML-u i na osnovu toga zna koji film da edituje i briše, i to radi. Ali sada kako sam prebacio ovaj word u XML taj atribut treba nekako inkrementovati kroz cijeli XML.
Dakle treba da izgleda ovako
<film>
<NazivFilma id="1">Deja vu</NazivFilma>
....
</film>
<film>
<NazivFilma id="2">The Prestige</NazivFilma>
....
</film>
Sada mi je kod svih id="1" a trebam napraviti da je inkrementovan.
Sada pišem neku kao skriptu koja bi trebala da to inkrementuje ali ona inkrementuje za 10 a ne za 1 :), jer inkrementuje za broj linija u XML fajlu između tih ID linija. Gdje griješim:
string linija = null;
int id = 0;
while ((linija = reader.ReadLine()) != null)
{
string stariString = string.Format(@"id=""1""");
string noviString = string.Format(@"id=""{0}""", id++.ToString());
string novaLinija = linija.Replace(stariString, noviString);
writer.WriteLine(novaLinija);
}
Proradilo je sa
string staraLinija = null;
string novaLinija = null;
int id = 1;
while ((staraLinija = reader.ReadLine()) != null)
{
string stariString = string.Format(@"id=""1""");
string noviString = string.Format(@"id=""{0}""", id.ToString());
if (staraLinija.Contains(stariString))
{
novaLinija = staraLinija.Replace(stariString, noviString);
id++;
}
else
novaLinija = staraLinija;
writer.WriteLine(novaLinija);
}
Samo je trebalo malo razmisliti :)
ilija_iksi
6.11.2010, 14:22
Dodaj PrintDocument kontrolu, u njenom OnPrint eventu nacrtaj sliku (dobijas graficki dc, samo uradi DrawImage(...)).
Posle to samo odštampaj koristeći PrintDialog...
To ti je najprostije rešenje...
Ništa te ne razumem. Možeš li mi to objasniti korak po korak, sa sve kodom? Kako taj dc odštampam PrintDialogom? Gde da ubacim PrintDocument?
Ništa te ne razumem. Možeš li mi to objasniti korak po korak, sa sve kodom? Kako taj dc odštampam PrintDialogom? Gde da ubacim PrintDocument?
PrintDocument možeš da prevučeš iz toolboxa na form (ili uradiš ono što i ja).
Čini mi se da sam ti korake već napisao, a evo i koda:
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintSimple
{
class Program
{
static void Main()
{
var document = new PrintDocument();
document.PrintPage += Document_PrintPage;
var printDialog = new PrintDialog();
if(printDialog.ShowDialog() == DialogResult.OK)
{
document.PrinterSettings = printDialog.PrinterSettings;
document.Print();
}
}
static void Document_PrintPage(object sender, PrintPageEventArgs e)
{
// ovde nacrtaj sliku pomocu e.Graphics.DrawImage(...);
e.Graphics.FillRectangle(Brushes.Red, 10, 10, 100, 100);
}
}
}
Imam sledeci kod( rec je o WPF ):
<Button Content="Button" HorizontalAlignment="Left" Margin="173.5,165,0,0" VerticalAlignment="Top" Width="75">
<Button.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Black" GlowSize="3"></OuterGlowBitmapEffect>
</Button.BitmapEffect>
</Button>
I sad bi trebao oko dugmeta da imam sjaj ali ga nema.
Izgleda obicno, isto( vidi sliku ).
Da li neko zna zasto nece da radi, i kako da ga nateram da proradi?
iMa_NeKo_PljUgU
6.11.2010, 16:58
A da promenis GlowColor, u neku drugu boju.
P.S. Bitmap efekti su obsolete.
A da promenis GlowColor, u neku drugu boju.
P.S. Bitmap efekti su obsolete.
Probao, nece da radi.
iMa_NeKo_PljUgU
6.11.2010, 17:42
Ne znam šta da ti kažem... Meni radi
37163
ilija_iksi
6.11.2010, 19:07
PrintDocument možeš da prevučeš iz toolboxa na form (ili uradiš ono što i ja).
Čini mi se da sam ti korake već napisao, a evo i koda:
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintSimple
{
class Program
{
static void Main()
{
var document = new PrintDocument();
document.PrintPage += Document_PrintPage;
var printDialog = new PrintDialog();
if(printDialog.ShowDialog() == DialogResult.OK)
{
document.PrinterSettings = printDialog.PrinterSettings;
document.Print();
}
}
static void Document_PrintPage(object sender, PrintPageEventArgs e)
{
// ovde nacrtaj sliku pomocu e.Graphics.DrawImage(...);
e.Graphics.FillRectangle(Brushes.Red, 10, 10, 100, 100);
}
}
}
Ne radi. Ubacio sam sliku u pictureBox, stavio kod iz main() u event handler za button1, a drugi deo u posebnu metodu.
ElEm, EvO, KoDa:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var document = new PrintDocument();
document.PrintPage += Document_PrintPage;
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
document.PrinterSettings = printDialog.PrinterSettings;
document.Print();
}
}
static void Document_PrintPage(object sender, PrintPageEventArgs e)
{
// ovde nacrtaj sliku pomocu e.Graphics.DrawImage(...);
e.Graphics.FillRectangle(Brushes.Red, 10, 10, 100, 100);
}
}
}
Ne radi. Ubacio sam sliku u pictureBox, stavio kod iz main() u event handler za button1, a drugi deo u posebnu metodu.
...
Radi, zapravo... Ostavio sam ti komentar na mesto gde treba da iscrtas sliku... Nije valjda toliko tesko prosletiti sliku iz pictureboxa DrawImage() funkciji? :opanachke
Naravno, mozes i da obrises liniju koja iscrtava pravougaonik, to sam stavio samo kao sample...
Ne radi. Ubacio sam sliku u pictureBox, stavio kod iz main() u event handler za button1, a drugi deo u posebnu metodu.
ElEm, EvO, KoDa:
...
A kako ti nije glupo da ni ne pročitaš ovo što ti je on postavio, jer da si pročitao, valjda bi video da piše da treba da koristiš drawimage i da je ostavljen fillrectangle kao primer?
Kako ti nije glupo da napišeš "ne radi" bez ikakvog objašnjenja šta, kako, koja je greška ako je ima, itd.
Ako nećeš da se potrudiš ne zaslužuješ pomoć.
Ovo ti dobronamerno pričam, da znaš da će sve više ljudi da izbegava da ti pomogne dok ne budeš hteo da se potrudiš.
Imam sledeci kod( rec je o WPF ):
<Button Content="Button" HorizontalAlignment="Left" Margin="173.5,165,0,0" VerticalAlignment="Top" Width="75">
<Button.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Black" GlowSize="3"></OuterGlowBitmapEffect>
</Button.BitmapEffect>
</Button>
I sad bi trebao oko dugmeta da imam sjaj ali ga nema.
Izgleda obicno, isto( vidi sliku ).
Da li neko zna zasto nece da radi, i kako da ga nateram da proradi?
Da li trebam nesto da instaliram?
Imam .Net 4.0 cak i Expression Blend...
Imam čudan problem. Želim da napravim bekap opciju u svom programu u kojoj će korisnik odabrati direktorij i u njega bi se onda kopirao XML fajl sa kojim program radi. Odabir direktorija se vrši sa FolderBrowserDialog-om a kopiranje sa
File.Copy(fileName, bekapLokacija);
pri čemu bekapLokacija mora biti puni path, znači direktorij plus naziv fajla, a FolderBrowserDialog daje samo direktorij, pa sam uradio ovako:
string bekapFolder = dlg.SelectedPath; // uzimam direktorij
string bekapNazivFajla = "filmovi.xml";
string bekapLokacija = bekapFolder + bekapNazivFajla; // direktorij + naziv fajla
File.Copy(fileName, bekapLokacija);
I to radi, ali radi kako treba samo ako je za lokaciju odabran root nekog drajva na hard disku (C:\, D:\...) ali ako odaberem direktorij C:\Bekap onda se fajl neće iskopirati u njega već u root na C: i imaće naziv Bekapfilmovi.xml
Znači uzme ime direktorija i doda ga na naziv fajla "filmovi.xml" i onda ga snimi u root.
Koliko vidim problem bi mogao biti do toga što kada odaberem root sa FolderBrowserDialog-om i kažem mu da ga prikaže u MessageBox on za C: root napiše da je odabran direktorij C:\ (uočite ovo \) dok kada odaberem C:\Bekap on napiše da je odabran C:\Bekap (sad nema \ na kraju), i koliko vidim upravo zato mi radi to što mi radi :(
Ideje?
Geomaster
8.11.2010, 20:38
Imam čudan problem. Želim da napravim bekap opciju u svom programu u kojoj će korisnik odabrati direktorij i u njega bi se onda kopirao XML fajl sa kojim program radi. Odabir direktorija se vrši sa FolderBrowserDialog-om a kopiranje sa
File.Copy(fileName, bekapLokacija);pri čemu bekapLokacija mora biti puni path, znači direktorij plus naziv fajla, a FolderBrowserDialog daje samo direktorij, pa sam uradio ovako:
string bekapFolder = dlg.SelectedPath; // uzimam direktorij
string bekapNazivFajla = "filmovi.xml";
string bekapLokacija = bekapFolder + bekapNazivFajla; // direktorij + naziv fajla
File.Copy(fileName, bekapLokacija);I to radi, ali radi kako treba samo ako je za lokaciju odabran root nekog drajva na hard disku (C:\, D:\...) ali ako odaberem direktorij C:\Bekap onda se fajl neće iskopirati u njega već u root na C: i imaće naziv Bekapfilmovi.xml
Znači uzme ime direktorija i doda ga na naziv fajla "filmovi.xml" i onda ga snimi u root.
Koliko vidim problem bi mogao biti do toga što kada odaberem root sa FolderBrowserDialog-om i kažem mu da ga prikaže u MessageBox on za C: root napiše da je odabran direktorij C:\ (uočite ovo \) dok kada odaberem C:\Bekap on napiše da je odabran C:\Bekap (sad nema \ na kraju), i koliko vidim upravo zato mi radi to što mi radi :(
Ideje?
Kad prihvatiš string, proveri da li na njegovom kraju imaš '\', ako imaš, onda ništa, a ako ne onda ga samo dodaj. Tako "C:\" ostaje "C:\", ali "C:\Bekap" postaje "C:\Bekap\".
To bi izgledalo:
String bekapFolder = dlg.SelectedPath; // uzimam direktorij
If (!bekapFolder.EndsWith("\"))
bekapFolder = bekapFolder + "\";
// onda nastaviš dalje kao i u tom kodu
Radim samo po intuiciji i Google-u pa se nadam da je tačno :) Mislim bolje ikakav odgovor nego nikakav :D
Kad prihvatiš string, proveri da li na njegovom kraju imaš '\', ako imaš, onda ništa, a ako ne onda ga samo dodaj. Tako "C:\" ostaje "C:\", ali "C:\Bekap" postaje "C:\Bekap\".
To bi izgledalo:
String bekapFolder = dlg.SelectedPath; // uzimam direktorij
If (!bekapFolder.EndsWith("\"))
bekapFolder = bekapFolder + "\";
// onda nastaviš dalje kao i u tom kodu
Radim samo po intuiciji i Google-u pa se nadam da je tačno :) Mislim bolje ikakav odgovor nego nikakav :D
jeste tacno i radice, ali ima i "pravilniji" "ispravniji" nacin :)
System.IO.Path.Combine(path1,path2);
u tvom slucaju
ovu liniju izbacis skroz: string bekapLokacija = bekapFolder + bekapNazivFajla; // direktorij + naziv fajla
a ovako uradis dalje:
File.Copy(fileName, Path.Combine(bekapFolder,fileName));
Path.Combine ce spojiti putanju i fajl, bez obzira da li u putanji imas \ ili ne.
Hvala vam obojici, nisam ni znao za ovo Path.Combine, zgodna stvar :)
Našao sam da radi i ovo
string bekapFolder = dlg.SelectedPath; // uzimam direktorij
string bekapNazivFajla = "filmovi.xml";
string bekapLokacija = bekapFolder + "//" + bekapNazivFajla; // direktorij + naziv fajla
File.Copy(fileName, bekapLokacija);
Znači u treću liniju je kod spajanja dodano + "//"
I to radi, mada mi nije jasno kako :), jer ako odaberem root C:/ on će na njega dodati još jedan / pa će biti C://, ali nekim čudom to radi :). To rješenje sam našao na nekom sajtu. Ja nisam tako nešto probavao baš zato što sam očekivao da to ne bi radilo ako se odabere root dok bi radilo ako nije root, ali eto to radi u oba slučaja.
Geomaster
9.11.2010, 15:23
Hvala vam obojici, nisam ni znao za ovo Path.Combine, zgodna stvar :)
Našao sam da radi i ovo
string bekapFolder = dlg.SelectedPath; // uzimam direktorij
string bekapNazivFajla = "filmovi.xml";
string bekapLokacija = bekapFolder + "//" + bekapNazivFajla; // direktorij + naziv fajla
File.Copy(fileName, bekapLokacija);Znači u treću liniju je kod spajanja dodano + "//"
I to radi, mada mi nije jasno kako :), jer ako odaberem root C:/ on će na njega dodati još jedan / pa će biti C://, ali nekim čudom to radi :). To rješenje sam našao na nekom sajtu. Ja nisam tako nešto probavao baš zato što sam očekivao da to ne bi radilo ako se odabere root dok bi radilo ako nije root, ali eto to radi u oba slučaja.
Proći će i C:\\, ali bolje da uradiš ovo što je irreal predložio :)
To sam i uradio :)
Sad da pitam sledeće, koje kontrole za formu mogu koristiti kada trebam da u njima prikažem malo veću količinu teksta, recimo 10-15 linija teksta?
To se može uraditi sa multiline TextBox ali nisam siguran da je to najelegantnije rješenje, TexBox ako se ne varam uglavnom služi za unos teksta a ne prikaz, mada može poslužiti za prikaz ako baš mora. Druga opcija je ona WebBrowser kontrola. Ima li još nekih rješenja ili samo ta dva?
Želim da prikažem tekst iz XML-a, npr. u programu za katalog filmova jedan od XML elmenata je Plot (kratak opis filma) i sad želim da ga prikažem na formi. To je kao u ovom profesionalnom katalogu (http://images.collectorz.com/movie/screenshots/mac-main-screen.png), već sam pitao ovde šta je ova kontrola dole desno pa je neko rekao da je to ta WebBrowser, i kao što možete da vidite ona prikazuje lijepo formatirane podatke, slika, pa desno glumci, nešto je boldovano a nešto nije. Kako to da napravim (generišem takav neki prikaz) na osnovu podataka iz XML-a? Recimo da za početak radi jednostavnosti hoću samo da mi prikaže Plot, bez ušminkanog formatiranja, već samo da prikaže. Kako to ide? Da li WebBrowser kontroli mogu poslati samo string i da ona to prikaže ili ona radi samo sa HTML-om, i kako onda da se snađem u tom slučaju?
Geomaster
9.11.2010, 16:25
To sam i uradio :)
Sad da pitam sledeće, koje kontrole za formu mogu koristiti kada trebam da u njima prikažem malo veću količinu teksta, recimo 10-15 linija teksta?
To se može uraditi sa multiline TextBox ali nisam siguran da je to najelegantnije rješenje, TexBox ako se ne varam uglavnom služi za unos teksta a ne prikaz, mada može poslužiti za prikaz ako baš mora. Druga opcija je ona WebBrowser kontrola. Ima li još nekih rješenja ili samo ta dva?
Želim da prikažem tekst iz XML-a, npr. u programu za katalog filmova jedan od XML elmenata je Plot (kratak opis filma) i sad želim da ga prikažem na formi. To je kao u ovom profesionalnom katalogu (http://images.collectorz.com/movie/screenshots/mac-main-screen.png), već sam pitao ovde šta je ova kontrola dole desno pa je neko rekao da je to ta WebBrowser, i kao što možete da vidite ona prikazuje lijepo formatirane podatke, slika, pa desno glumci, nešto je boldovano a nešto nije. Kako to da napravim (generišem takav neki prikaz) na osnovu podataka iz XML-a? Recimo da za početak radi jednostavnosti hoću samo da mi prikaže Plot, bez ušminkanog formatiranja, već samo da prikaže. Kako to ide? Da li WebBrowser kontroli mogu poslati samo string i da ona to prikaže ili ona radi samo sa HTML-om, i kako onda da se snađem u tom slučaju?
WebBrowser parsuje HTML kôd, znači moći će samo tako. Potražio sam na Google-u i našao ovo (http://ryanfarley.com/blog/archive/2004/12/23/1330.aspx) i to bi trebalo da bude ono što ti treba, tj. da prikažeš neki svoj HTML u WebBrowseru. Ako hoćeš samo da prikažeš plot, ja bih to napisao u HTML-u ovako:
<html>
<head>
<!-- ovde nam za sad ništa ne treba -->
</head>
<body>
<div style="padding: 3px">
<span style="font-family: verdana, tahoma, sans-serif">
Ovde ubaciš plot
</span>
</div>
</html>
Tu sad, naravno, imaš gomilu mogućnosti pošto je u pitanju HTML markup :) možeš da promeniš recimo boju pozadine/teksta, dodaš sliku, naslov, itd. Ovo što se vidi na tom screenshotu nije teško napraviti, naravno moraćeš da znaš HTML (i strongly recommended CSS).
od gotovih kontrola tu ti je i RichTextBox koji podržava razne načine formatiranja teksta.
U svakom slučaju, preporučujem ti HTML, još bolje ako uradiš to što je uradio program sa slike koju si pokazao - linkuješ IMDB stranicu i ne razmišljaš o opisu i prikazu istog.
Taj program u Web kontroli prikazuje neke elemente koje je ranije pokupio i u sebi snimio za svaki film, a onda od njih generiše prikaz u toj Web kontroli, ne ide svaki put na IMDb da bi ih prikazao već ih uzima iz svoje "baze" i u letu generiše prikaz u Web kontroli. To me zanimalo kako se radi a sad sam na dobrom tragu.
Ovo (http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=51473) je pomoglo pa sada gledam i učim oko XSLT formata za transformacije iz XML u HTML, to do sada nisam znao pa evo malo učim na W3Schools (http://www.w3schools.com/xsl/) i već na toj prvoj stranici su imali ono što mi treba, sad sam vidio da se u Visual Studiu može kucati XMLS fajl pa sam napravio da mi u WebBrowser kontroli napravi tabelu, povadi elemente iz XML-a i prikaže ih :)
Znači mora taj kod sa prvog linka i onda treba kreirati odgovarajući XSLT fajl.
Eh da, zanima me i kako ide ekstrakcija podataka sa nekog sajta, programi to rade kada im daš ime filma i on ga sam nađe na IMDb i popuni podatke sa same IMDb stranice (slika, godina izlaska, glumci, ocjena i drugo). Imate li ideju kako to ide? Pretpostavljam da se mora proučiti source HTML IMDb stranice i onda napisati kod koji će iz određenih HTML tagova uzimati određene elemente (npr. link za sliku koju će onda učitati u program). Da li ide tako?
Geomaster
9.11.2010, 20:07
Eh da, zanima me i kako ide ekstrakcija podataka sa nekog sajta, programi to rade kada im daš ime filma i on ga sam nađe na IMDb i popuni podatke sa same IMDb stranice (slika, godina izlaska, glumci, ocjena i drugo). Imate li ideju kako to ide? Pretpostavljam da se mora proučiti source HTML IMDb stranice i onda napisati kod koji će iz određenih HTML tagova uzimati određene elemente (npr. link za sliku koju će onda učitati u program). Da li ide tako?
Da, uglavnom tako. Jedino možda neki sajtovi tebi daju posebne API URLove koji recimo vraćaju podatke u XML-u baš za potrebe programiranja, da se ne bi downloadovala cela stranica. Ali to retko koji sajt pruža, tako da ti je u većini slučajeva jedino rešenje da downloaduješ HTML kod i onda iscediš informacije odatle. Ako te zanima kako to možeš da uradiš, najlakše bi bilo da napišeš regex (http://www.regular-expressions.info/) za svaki podatak koji ti treba.
Mislim da bi ova tema trebala da bude pinovana. Šta vi mislite? :)
Apsolutno, i da se otvore i pinuju još neke teme tipa "How to...", koje se odnose na jezike koji se najčešće spominju ovde.:)
miša topola
10.11.2010, 16:19
Mislim da bi ova tema trebala da bude pinovana. Šta vi mislite? :)
Može. Mada je i bez lepljenja ova tema uvek na vrhu.
Apsolutno, i da se otvore i pinuju još neke teme tipa "How to...", koje se odnose na jezike koji se najčešće spominju ovde.:)
How to... C++, How to... Java, How to... C
Spominje se i Pascal, ali za njega ne bi trebalo da se otvara takva tema :)
Pa, dobro, u principu mislim da nam trebaju, "How to... C/C++", "How to... Java", "How to... C#", a "How to... Visual Basic" već imamo; u principu je dovoljno jer nema toliko programera ovde, a ni onih koji se bave nekim jezikom koji nije među navedenima :)
Mada možda može i "How to... SQL/Baze podataka" pošto se često ljudi javljaju kada ne znaju/zabrljaju nešto oko baza :)
Imam sledeci kod( rec je o WPF ):
<Button Content="Button" HorizontalAlignment="Left" Margin="173.5,165,0,0" VerticalAlignment="Top" Width="75">
<Button.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Black" GlowSize="3"></OuterGlowBitmapEffect>
</Button.BitmapEffect>
</Button>
I sad bi trebao oko dugmeta da imam sjaj ali ga nema.
Izgleda obicno, isto( vidi sliku ).
Da li neko zna zasto nece da radi, i kako da ga nateram da proradi?
Resio sam problem tako sto sam projekat prebacio u .NET 3.5, izgleda da Bitmap efekti u 4 nisu dozvoljeni nego je sad tu klasa Effect.
Pozdrav, kako da od broja 9,87 dobijem 9. Znaci da mi ne zaokruzi na 10. Koristio sam Convert.ToInt32, al on zaokruzi, meni treba samo ta cifre pre zareza, bez zaokruzivanja.
:ciao:
Pozdrav, kako da od broja 9,87 dobijem 9. Znaci da mi ne zaokruzi na 10. Koristio sam Convert.ToInt32, al on zaokruzi, meni treba samo ta cifre pre zareza, bez zaokruzivanja.
:ciao:
Iskreno ti preporučujem da detaljno proučiš metode statične Math klase.
sve česte računske operacije imaju svoje metode u toj klasi.
u tvom slučaju, treba ti Math.Floor()
floor zaokružuje broj na dole
a Math.Ceiling() zaokružuje na gore
Iskreno ti preporučujem da detaljno proučiš metode statične Math klase.
sve česte računske operacije imaju svoje metode u toj klasi.
u tvom slučaju, treba ti Math.Floor()
floor zaokružuje broj na dole
a Math.Ceiling() zaokružuje na gore
Will do!
Ovako, napisao sam php wed servis koristeci nusoap biblioteke.I sad kada hocu da dodam web service u VS-u on ga pronadje ali mi izbaci sledecu gresku:
Only one top level element is allowed in an XML document. Error processing resource 'http://nesto.net/projekat/webservice/lo...
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/nesto/pub...
Da li neko zna kako ovo da resim?
Geomaster
26.11.2010, 16:01
Ovako, napisao sam php wed servis koristeci nusoap biblioteke.I sad kada hocu da dodam web service u VS-u on ga pronadje ali mi izbaci sledecu gresku:
Da li neko zna kako ovo da resim?
Po grešci, kao da imaš dva ili više top-level elementa. Možeš da postaviš XML ovde pa da pogledamo.
:kreza:Po grešci, kao da imaš dva ili više top-level elementa. Možeš da postaviš XML ovde pa da pogledamo.
Znam ja za to ali ne pisem ja taj xml nego ga generise ta biblioteka.
Geomaster
26.11.2010, 20:59
:kreza:
Znam ja za to ali ne pisem ja taj xml nego ga generise ta biblioteka.
Aha, pa ček, kad ga generiše biblioteka, gde se on prosleđuje? PHP skripta ga outputtuje ili...?
Kako se moze embedovati neka baza podataka (preferiram MS ACCESS jer sam vec to radio ali moze i SQL SERVER) u VS 2008 (ako je bitno C# jezik) tako da se na kraju dobije jedan .exe fajl? Da li je to uopste moguce? Da li se moze dobiti jedan exe fajl ako se recimo doda neki mp3 , xml fajl itd kao resursi? Ili ipak mora taj moj program podrzavati neki installer za te podatke? Konkretno, hocu da napravim program koji moze sadrzavati neke audio zapise, mozda slike, a da ima podrsku za rad sa nekom bazom podataka. Nesto kao klasicna prezentacija ali sa vise interaktivnosti. Mozda je ipak bolje da bacim pogled na Windows Presentation Foundation? Savet? :)
http://www.sqlite.org/
http://sqlite.phxsoftware.com/
Aha, pa ček, kad ga generiše biblioteka, gde se on prosleđuje? PHP skripta ga outputtuje ili...?
Da kazem da je problem resen.Ja sam stavio require_once negde na sredini koda.A u tom fajlu postoji header informacija pa zbog toga prikazivao gresku.
ne znam dal smem ovde link da postavim al ako nekom treba ova knjiga (http://myph.us/pics/90643_0470563486.jpg) nek mi posalje pm
Da li neko može da mi da informaciju kako da uradim sledeće u C#:
Imam accessovu bazu koju sam linkovao OLE DB data provajderom.
Imam prikaz jednog recorda na formularu 1.
Napravio sam form2 koji je datagrid view, ali izgleda da ne može da koristi dataset
od prvog formulara, pa piše u svoj dataset2, ali to nije problem, rešiću to sa izmenom
podataka u samoj bazi i updateima datasetova u oba formulara.
Problem mi je da npr. kada sam u preglednijem form2 - gde je datagridview i izaberem
npr, selektujem dakle, record 3, kada se vratim u form1 i dalje stoji selektovan record
koji je bio pre ulaska u form2-datagridview.
Da li me iko razume, i da i može da pomogne? xD
Hvala unapred.
wtf. Ne!
poveži sve na isti dataset, nauči kako idu Scope-ovi i deklariši dataset kao public pa ćeš uz pomoć reference moći da mu pristupiš sa druge forme.
Nikako nećeš duplirati podatke ili menjati ceo dizajn zbog druge forme O_o.
Šta da ti kažem, uči o cross form komunikaciji u C# i radu sa bazama, suviše je široko pitanje i mnogo bi duboko morao da ulazim u objašnjenja da bi ti ovde objasnio sve.
Da li je moguce napisati web servis u javi, i posle ga koristiti u klijentu koji je pisan u C#-u?
Da li u .NET-u (2.0 poželjno) postoji kontrola kao u Windows Exploreru na XP-u, onaj levi panel sa "klizajućim" sakrivajućim lokacijama?
Mislim da mislis na TreeView kontrolu. U toolbox-u je, ne znam tacno u kojem odeljku.
Ne to
http://upload.wikimedia.org/wikipedia/en/c/c0/Windows_Explorer_XP.png
Ovo levo.
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc.