» »

Programiranje za windows

Programiranje za windows

MUC ::

Pred 10 leti sem v Delphiju napisal en enostaven windows app (system service), ki bo sprejetju paketa na TCP port resetira računalnik. Imam še source kodo.

Ali se mi splača to napisat vse na novo, ali obstaja kakšen windows compiler še za delphi.

Če bi pisal na novo, kater jezik bi izbrali in kater IDE (free po možnosti)? Načeloma ne bi pisal v .NET, ker bo to nameščeno lahko na starih ali novih računalnikih in .NET ni nujno sploh nameščen.

Hvala :)

WarpedGone ::

Ali se mi splača to napisat vse na novo, ali obstaja kakšen windows compiler še za delphi.

Wot?
"Delphi princip" sedaj razvija in prodaja Embarcadero v obliki Delphi XE, trenutno v izdaji Delphi XE7. Reč je kompatibilna s 'starimi' delphi projekti.
Nič ti ne preprečuje zadeve skompajlat s kakšnim "zadnjim pravim delphi okoljem" - Delphi 2007 in bo stvar delala tudi v Windows 8.1 (odvisno točno kaj bo program na mašini počel). Lahko kakšen sekjuriti kej gnoji ampak v principu stvar dela, edino inštalacija samega IDE zna delat probeleme, ki pa so rešljivi.
Zbogom in hvala za vse ribe

MUC ::

Imam en star Delphi, ampak je problem pri inštalaciji ...

Kaj pa bi vzel, če bi pisal na novo?

WarpedGone ::

Js delphi ...
Ne nasedam na buzzworde in na smrt shypane polizdelke, ki za svoje delovanje nucajo tri dodatne layerje prek OS.
Zbogom in hvala za vse ribe

MUC ::

OK, ql, hvala.

Anyone else še kakšen drug predlog?

mihaelf3 ::

Najlazje ti bo v jezikih in tehnologijah, ki jih poznas. Ce je to Delphi in sploh ce imas zadevo ze narejeno, je to seveda dobra izbira.

TCP povezavo in reset lahko sicer izvedes v prakticno kateremkoli jeziku s precej malo kode. Osebno bi izbral Go lang.

Mimogrede: windows ze ima restive za remote restart.
torch it

mile ::

delphi je cist fajn zadeva (bila)

http://www.lazarus.freepascal.org/

Invictus ::

Kaj je narobe z C#?

Uradni MS razvijalski jezik ...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

MUC ::

mihaelf3 je izjavil:


Mimogrede: windows ze ima restive za remote restart.


Sem že nekaj gledal, samo mi ni bilo ravno všeč. Rabim nekako tako, da lahko iz ene embaded naprave, ki ima recimo samo telnet sprožim reset, ne morem pa namestit wmi_clienta... ali je kakšna alternativa wmi_clientu?

Invictus je izjavil:

Kaj je narobe z C#?

Uradni MS razvijalski jezik ...



Tudi lahko. Ali obstaja kakšen free compiler, če že celotno IDE okolje ni free, ali pač?

Zgodovina sprememb…

  • spremenil: MUC ()

Invictus ::

Visual Studio Express

Je zastonj.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

WarpedGone ::

Da zadeva laufa moraš pa poleg svojega programa distribuirat kaj vse še?
Zbogom in hvala za vse ribe

Invictus ::

Samo tisto kar rabiš ...

Saj v installerju narediš link da avtomatsko sname z interneta in naloži.

Big deal ...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

celada ::

Invictus je izjavil:

Visual Studio Express

Je zastonj.


Visual Studio Community edition.

V bistvu free verzija ultimate edicije VS.

MUC ::

Ali je app za installer tudi vključen?

WarpedGone ::

Big deal ...

Ja, je big deal.
Neki je teorija, neki pa praksa z jajcanjem in lovom na pravo verzijo pravega kosa dodatne kode, katero je treba porinit na pravo mesto in pofočkat v sistemu na pravi način.

Nekoč je bil problem samo OS, sedaj je problem OS + FW.
Zbogom in hvala za vse ribe

Mavrik ::

MUC je izjavil:

Ali je app za installer tudi vključen?


Ja, Microsoft za moderne aplikacije priporoča C# v .NET in privzeto imaš opcijo namestitvenega programa, ki na sistem namesti pravi .NET v kolikor ga nima (pri tem se spomni da imajo dost moderen .NET inštalirani vsi Windowsi od Viste dalje, tako da to načeloma ni resen problem ). Problem imajo kvečjemu ljudje ki so še vedno zataknjeni na XPjih, njim bo pa namestitveni program namestil runtime avtomatično.

V kolikor ti pa Delphi bolj leži, pa imaš še vedno podprta Borland orodja, s tem da je mogoče čas da se vprašaš koliko svojega časa si pripravljen zapraviti z zastarelimi tehnologijami samo zato, ker par starih prdcev noče kliknit install za runtime.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

WarpedGone ::

svojega časa si pripravljen zapraviti z zastarelimi tehnologijami

Zapravlen je čas, ki ga vržeš v shypano zadevo, kjer šele čez čas spoznaš da odkrivaš toplo vodo, ki niti mokra ni.
Če izza .Neta nebi stal MS, bi stvar crknila pri verziji 0.9.
Če izza jave nebi stal nekoč Sun, bi stvar crknila pri verziji 0.1.

Zapuščanje "zastarelih tehnologij" je recept za zapravlanje denarja.
Zbogom in hvala za vse ribe

LightBit ::

MUC je izjavil:

Invictus je izjavil:

Kaj je narobe z C#?

Uradni MS razvijalski jezik ...


Tudi lahko. Ali obstaja kakšen free compiler, če že celotno IDE okolje ni free, ali pač?

Mono je celo odprto-koden.

technolog ::

LightBit je izjavil:

MUC je izjavil:

Invictus je izjavil:

Kaj je narobe z C#?

Uradni MS razvijalski jezik ...


Tudi lahko. Ali obstaja kakšen free compiler, če že celotno IDE okolje ni free, ali pač?

Mono je celo odprto-koden.


Odprtokoden.

johnnyyy ::

Mavrik je izjavil:

(pri tem se spomni da imajo dost moderen .NET inštalirani vsi Windowsi od Viste dalje, tako da to načeloma ni resen problem ).

Jaz sem imel problem na Win7, saj .NET ni bil default nameščen (to je kakšno leto nazaj - max 2). Načeloma ni problem če delaš zase, če pa imaš kakšno stranko, je pa včasih tečno (še posebej, če poveš kot sem jaz - samo en exe fajl, 2x klkneš in dela - nič ne rabiš).

Mavrik ::

johnnyyy je izjavil:

Mavrik je izjavil:

(pri tem se spomni da imajo dost moderen .NET inštalirani vsi Windowsi od Viste dalje, tako da to načeloma ni resen problem ).

Jaz sem imel problem na Win7, saj .NET ni bil default nameščen (to je kakšno leto nazaj - max 2). Načeloma ni problem če delaš zase, če pa imaš kakšno stranko, je pa včasih tečno (še posebej, če poveš kot sem jaz - samo en exe fajl, 2x klkneš in dela - nič ne rabiš).


Windows 7 SP1 ima jasno privzeto nameščen .NET framework 1.0, 1.1, 2.0, 3.0 in 3.5. Windows Update bo namestil 4.0 v kolikor je vklopljen. Jasno potem pri prevajanju izbereš da želiš da se prevede .exe z linkanjem na .NET framework 3.0 ali pa celo 2.0 v kolikor se malo potrudiš in ti "vse dela".

Pa saj to si kot .NET razvijalec vedel a ne? O.o
The truth is rarely pure and never simple.

noraguta ::

ne nucaš zato servisa, zgolj skripto.
Pust' ot pobyedy k pobyedye vyedyot!

johnnyyy ::

Mavrik je izjavil:

johnnyyy je izjavil:

Mavrik je izjavil:

(pri tem se spomni da imajo dost moderen .NET inštalirani vsi Windowsi od Viste dalje, tako da to načeloma ni resen problem ).

Jaz sem imel problem na Win7, saj .NET ni bil default nameščen (to je kakšno leto nazaj - max 2). Načeloma ni problem če delaš zase, če pa imaš kakšno stranko, je pa včasih tečno (še posebej, če poveš kot sem jaz - samo en exe fajl, 2x klkneš in dela - nič ne rabiš).


Windows 7 SP1 ima jasno privzeto nameščen .NET framework 1.0, 1.1, 2.0, 3.0 in 3.5. Windows Update bo namestil 4.0 v kolikor je vklopljen. Jasno potem pri prevajanju izbereš da želiš da se prevede .exe z linkanjem na .NET framework 3.0 ali pa celo 2.0 v kolikor se malo potrudiš in ti "vse dela".

Pa saj to si kot .NET razvijalec vedel a ne? O.o

Zadeva je bila takšna, da sem delal HW na katerih so bili različni LCDji namenjeni za testiranje (vidni koti, kontrast, kako se obnese na soncu - po testiranju se izbere najboljši LCD ves HW in SW pa leti v smeti). No v glavnem imaš HW, ki ga prklopiš na računalnik, tam pa rabiš app, ki po USBju pošlje podatke - sliko (na HWju je bil FTDI čip, tako je bilo potrebno stvari spraviti do serial porta). App naj bi bil minimalističen (dela max 1. dan), kater programski jezik izbrat?
Pa pravi sodelovec, da bo najbolje, če se naredi en izi program v C# (exe - 2klika) in to je to. To naredim testiram na svojem in še na nekaterih računalnikih. Povsod deluje BP.

Ko pride stranka zraven prinese MACa. Vso kratko demonstracijo sem naredil na svojem računalniku, oni pa so dobili HW, SW pa po mailu. Naslednji dan klic app ne dela ... Pride z stranka z notebookom (Win7) zaženem app ... ja rabiš .NET (katero verzijo se ne spomnem). Zraven so bile še neke težave z admin pravicami. In končno začne APP delat (HWja stranka nima zraven). Naslednji dan spet klic: slika se ne prikazuje ... potem pa je bila težava v driverjih (FTDI driver, ki ga je prenesel Windows je zgleda imel bug - potem sem namestil tistega iz uradne spletne strani)... In potem je končno stvar delala.

V glavnem tako se iz 2 klikov pride na 1000 klikov in 5 minut dela, se spremeni v enodnevni projekt. Sicer pa nisem .NET razvijalec, to pa je bil moj 1. in (zaenkrat) zadnji program C#. Če po pravici povem, si nisem mislil, da lahko gre toliko stvari narobe.

noraguta ::

ftdi drajver je povsem nepovezan z .netom isto štalo bi meu u win32. ostalo stvar inštalerja.
Pust' ot pobyedy k pobyedye vyedyot!

johnnyyy ::

noraguta je izjavil:

ftdi drajver je povsem nepovezan z .netom isto štalo bi meu u win32. ostalo stvar inštalerja.

Ja vem. Odgovor je bil na Mavrikov post, glede verzij .NET v Win7, posodobitev in truda. Zato sem povedal celotno zgodbo, katera ima z izvorno skupno, enostavno aplikacijo, kjer ti je cilj čimprej sprogramirat in ne pri njej doktorirat. Če ne bi Mavrik povedal, da bi moral linkat na .NET 3.0 (oz. .NET 2.0) da bo "povsod" delalo (Win7 SP1), ne bi najbrž nikoli vedel (in si upam trdit, da nisem edini). Če si bo avtor izbral .NET okolje, bo to vedel. Zdaj pa nazaj na ontopic :).

noraguta ::

ma ontopica sploh ni. Windowsi imajo to že vgrajeno. pa tudi, če bi hotel spisat opisani servis bi bil nevaren že v sami zasnovi. če bi pa že kdo silil v to je pa v managed kodi nekoli lažje poservisirat napake med izvajanjem.
če pa že vztraja kdo pri win32 zatak servis in ga skrbi prenosljivost pa vse skupaj statično poveže. pa saj to so osnove katere upoštevaš preden greš sploh pisat program in jih vem celo jaz pa sploh nisem programer. sploh če mu misliš dat administrativne pravice. cela tema je eno samo trapasto nabijanje kdo ima bolj umazanga. kup trapasti kurcev še vedno trapa o stvareh o katerih nimajo pojma.
Pust' ot pobyedy k pobyedye vyedyot!

Invictus ::

johnnyyy je izjavil:


Ko pride stranka zraven prinese MACa. Vso kratko demonstracijo sem naredil na svojem računalniku, oni pa so dobili HW, SW pa po mailu. Naslednji dan klic app ne dela ... Pride z stranka z notebookom (Win7) zaženem app ... ja rabiš .NET (katero verzijo se ne spomnem). Zraven so bile še neke težave z admin pravicami. In končno začne APP delat (HWja stranka nima zraven). Naslednji dan spet klic: slika se ne prikazuje ... potem pa je bila težava v driverjih (FTDI driver, ki ga je prenesel Windows je zgleda imel bug - potem sem namestil tistega iz uradne spletne strani)... In potem je končno stvar delala.

To sam pomeni da si zanič razvijalec.

Narediš na svoji mašini, dela, ne pomisliš pa da ima stranka lahko drugačen setup.

Sem srečal cel kup takih šalabajzerjev v poslu. In odgovor je, pri tebi je problem. Baš ni odgovor ki bi ga stranka hotela ...

Poleg tega se da v Windows Installerju nastavit da se vsi dependeciji avtomatsko inštalirajo. Lahko se poberejo z neta, ali pa jih priložiš na CDju/USB ključku.

Ni baš to rocket science, je samo dober razvoj in testiranje.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

jype ::

Invictus> Ni baš to rocket science, je samo dober razvoj in testiranje.

Pove pa ogromno o tem, kako je v Windows svetu zaostalo upravljanje z odvisnostmi.

No, saj zdaj se to baje popravlja. Bomo videli, če bo Windows 10 že znal sam in avtomatično naložiti manjkajoče knjižnice. Tehničnih razlogov, da tega ne bi mogel, itak ni.

Mavrik ::

jype je izjavil:


Pove pa ogromno o tem, kako je v Windows svetu zaostalo upravljanje z odvisnostmi.


Zakaj si zmišljuješ?

MSVS ima že od časov .NET 2.0 ustrezen namestilnik, ki namesti vse odvisnosti. To da johnyyy ne zna nastaviti odvisnosti, ki jih rabi (oz. sploh nima pojma kaj počne) pač ne more biti problem platforme - v končni fazi se bo isto zgodilo v tebi priljubljenem Pythonu (če pozabiš nastavitve v setup.py ali enem od 300 drugih napol nedelujočih načinov kako se pakira pakete, bognedaj da si kot johnyy in ne veš sploh kateri Python rabiš), ali Cju (če boš polinkan na napačen glibc), ali C++u (če ne boš distribuiral libstdc++, libstlport, ali MSVC runtime odvisno od prevajalnika), ali Javi (če ne boš distribuiral JVMja) ali Rubyu (niti ne začnem).

Prosim da nehaš širiti neumnosti no, problem na katerega je naletel Johnny je prisoten na praktično vseh platformah (z izjemo morda golanga in mogoče Rusta).
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

jype ::

Mavrik> MSVS ima že od časov .NET 2.0 ustrezen namestilnik, ki namesti vse odvisnosti.

MSVS praviloma ni nameščen na računalnikih strank, namestilnik je pa treba distribuirat z vsakim programom posebej, kar je izrazito neelegantna rešitev za zadovoljevanje odvisnosti od knjižnic.

Edina razlika med starim načinom, ko je vsak Windows program bundlal poleg "VB runtime" in podobne DLLje in tem, kar programje počne zdaj, je v tem, da zdaj vsak program zgolj poskusi namestit knjižnice, pa potem obupa, če so že nameščene, namesto da bi za to skrbela infrastruktura, ki je večini ostalih ekosistemov na voljo že desetletja.

Razumem, da od 2001 do Windows 10 ni bilo nobenega resnega napredka na tem področju, ker pač ni bilo konkurence, ampak vztrajati na tem, da je lepljenje namestilnikov univerzalnih (.NET in podobnih) knjižnic ali celo knjižnic samih v namestitev vsakega programa, ki jih potrebuje dobra rešitev (ali pa da je še boljša rešitev uporabniku težit, da mora to namestit, kar eni, recimo Autodesk, še vedno radi počnejo) pove veliko predvsem o tem, kako ozko znajo gledat razvijalci, ki so omejeni na zgolj eno platformo.

No, vsaj Windows Store to pravilno rešuje in je očitno smiseln korak naprej.

technolog ::

Jype, a bo Windows 10 znal namestit sam svoje interne knjižnice (kot npr .NET), ali tud ostale, kot naprimer libssl, libjpg, libpng, libldap, ..., se pravi vse te knjižnice, ki so jih bli razvijalci prisiljeni statično povezovat?

Zgodovina sprememb…

Mavrik ::

jype je izjavil:

Mavrik> MSVS ima že od časov .NET 2.0 ustrezen namestilnik, ki namesti vse odvisnosti.

MSVS praviloma ni nameščen na računalnikih strank, namestilnik je pa treba distribuirat z vsakim programom posebej, kar je izrazito neelegantna rešitev za zadovoljevanje odvisnosti od knjižnic.


Rešitev ki dela brez težav že več kot 15 let in so je uporabniki vajeni in jo pričakujejo. To a zadeve zdownloada program v OSu ali program, ki je del distribucije je popolnoma nepomembno in je implementacijski detajl.

jype je izjavil:


Edina razlika med starim načinom, ko je vsak Windows program bundlal poleg "VB runtime" in podobne DLLje in tem, kar programje počne zdaj, je v tem, da zdaj vsak program zgolj poskusi namestit knjižnice, pa potem obupa, če so že nameščene, namesto da bi za to skrbela infrastruktura, ki je večini ostalih ekosistemov na voljo že desetletja.

Razumem, da od 2001 do Windows 10 ni bilo nobenega resnega napredka na tem področju, ker pač ni bilo konkurence, ampak vztrajati na tem, da je lepljenje namestilnikov univerzalnih (.NET in podobnih) knjižnic ali celo knjižnic samih v namestitev vsakega programa, ki jih potrebuje dobra rešitev (ali pa da je še boljša rešitev uporabniku težit, da mora to namestit, kar eni, recimo Autodesk, še vedno radi počnejo) pove veliko predvsem o tem, kako ozko znajo gledat razvijalci, ki so omejeni na zgolj eno platformo.

No, vsaj Windows Store to pravilno rešuje in je očitno smiseln korak naprej.


Vso to trabunjanje na koncu za končnega uporabnika ne predstavlja nobene razlike, niti nima nobene veze s to temo.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

johnnyyy ::

Invictus je izjavil:

To sam pomeni da si zanič razvijalec.
Nisem .NET razvijalec.

Invictus je izjavil:

Narediš na svoji mašini, dela, ne pomisliš pa da ima stranka lahko drugačen setup.
Kot sem že povedal, podporni softwer, ki gre čez 14 dni v smeti skupaj z HWjem. Max 1. dan dela, brez doktoriranja.

Invictus je izjavil:

Sem srečal cel kup takih šalabajzerjev v poslu. In odgovor je, pri tebi je problem. Baš ni odgovor ki bi ga stranka hotela ...
Stranka je bila zelo zadovoljna. Prvič ker sem ji pomagal, drugič ker je lahko stvari kasneje sama testirala. Nikjer nisem komentiral, čigav problem naj bi bil.

Invictus je izjavil:

Ni baš to rocket science, je samo dober razvoj in testiranje.
Zato pa s tem nisem delal znanosti.

jernejl ::

Razumem, da od 2001 do Windows 10 ni bilo nobenega resnega napredka na tem področju, ker pač ni bilo konkurence, ampak vztrajati na tem, da je lepljenje namestilnikov univerzalnih (.NET in podobnih) knjižnic ali celo knjižnic samih v namestitev vsakega programa, ki jih potrebuje dobra rešitev (ali pa da je še boljša rešitev uporabniku težit, da mora to namestit, kar eni, recimo Autodesk, še vedno radi počnejo) pove veliko predvsem o tem, kako ozko znajo gledat razvijalci, ki so omejeni na zgolj eno platformo.

V času, ko sem v OS WIN instaliral program s priloženimi knjižnicami, je ta po namestitvi vsaj deloval. Na drugem OS sem tedaj ob namestitvi zaradi dependency-jev tudi kdaj obupal. Tudi drugje ni (zadnjih nekaj desetletij) vse tako zlato.

technolog ::

no, jype?

technolog ::

Ni res. Dinamično povezana knjižnica je deljena. Njen executable je v ramu samo na enem mestu.

Jype, moje vprašanje še vedno stoji. Do kakšne mere bodo porihtal dependecy management?

MUC ::

Hvala vsem za odgovore, sedaj pa spet malo ontopic. :)

Sem sprogramiral potem v Visual Studiu v C# moj system service, ki mi lepo deluje..

Sedaj pa bi rad še, da bi imel installer package, ki bi mi namestil moj .exe v sistem, dodal firewall exception in seveda registriral system service.

Vsaj za registracijo servisa bi rad naredil v installer packagu, ker ob vsakem zagonu servisa to verjetno ne bi šlo, brez da bi uporabnika spraševal za ime uporabnika, ali pač?

Kaj mi svetujete?

Zgodovina sprememb…

  • spremenil: MUC ()

Mavrik ::

Poglej odgovor v temle SO: http://stackoverflow.com/questions/9021...
The truth is rarely pure and never simple.

MUC ::

Evo, sem uredil tudi installer, ki tudi registrira service, čeprav je samo limited edition :)

Sedaj imam samo še dilemo, kako uredit elegantno firewall rule. Ali naj uporabim netsh ? Moti pri njem me to, da ima za windows XP drugačno sintakso in da moram vsakič sam preverjat, če rule že obstaja, sicer bi netsh dodaja isti rule z istimi parametri kar naprej.

Še kakšen predlog glede tega?

Yacked2 ::

MUC je izjavil:

Evo, sem uredil tudi installer, ki tudi registrira service, čeprav je samo limited edition :)

Sedaj imam samo še dilemo, kako uredit elegantno firewall rule. Ali naj uporabim netsh ? Moti pri njem me to, da ima za windows XP drugačno sintakso in da moram vsakič sam preverjat, če rule že obstaja, sicer bi netsh dodaja isti rule z istimi parametri kar naprej.

Še kakšen predlog glede tega?


Najprej preveriš kateri OS lavfa na mašini in nato dodaš pravilo. Kaj je narobe z preverjanjem ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

MUC ::

Naredil sem tako, da sem poleg system servisa v instalacijo dodal še eno aplikacijo. Zažene se po končani namestitvi z administratorskimi pravicami in ki uredi firewall z netsh (tudi z detekcijo OSa in ustrezno sintakso za vsak OS) in ostale prilagoditve. Tako izpade še malo bolj "fensi" :)

Hvala vsem za nasvete, pa glede na datum zaželim vsem še srečnga in zdravga, ejga :)

MUC ::

Nekdo je v temi omenil, da Visual Studio zna namestit vse odvisnosti. Imam visual studio 2013 community edition in sem namestil InstallShield LE . Tam lahko brez težav odkljukam recimo .NET 4 odvisnost, ampak na Windows XP samo ustavi nameščanje, ne ponudi pa samodejnega nalaganja.NET 4 s spleta.

Kako je sedaj s tem? Se da narest ali ne?

Iluvatar ::

celada je izjavil:



Visual Studio Community edition.

V bistvu free verzija ultimate edicije VS.


Aja? A kr free verzija ULTIMATE edicije je? Imaš kak vir, za to?
Sem zmeraj mislil, da je Community = Professional z licenčnimi omejitvami.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Preprost exe kalkulator formule

Oddelek: Programiranje
201581 (909) kow
»

težave z deployem na linux distribucije

Oddelek: Programiranje
5802 (653) AndrejO
»

Microsoftov SQL Server prihaja na Linux (strani: 1 2 3 )

Oddelek: Novice / Ostala programska oprema
12627402 (22087) noraguta
»

Shranjevanje programa

Oddelek: Programiranje
81597 (1383) mihies
»

Sprejet standard C++11

Oddelek: Novice / Ostala programska oprema
4010782 (8864) Bistri007

Več podobnih tem