Rakiško jezero

Domačini mu pravijo “Rakiško”, drugi Rakitniško jezero. Kljub deževnemu vremenu sem se pred večerom odpravil k jezeru, naredil ducat posnetkov in namočil noge v mrzli vodi. Jezero se ni dosti spremenilo, okolica pa kar precej. Ljudi pa kljub slabemu vremenu ni bilo malo.



PHP SOAP Server/Client

Last week I got an assignment to make a service for transferring a huge chunk of data. It sounded OK till i found out, that the end-user wants to use SOAP calls. I’ve never deal with SOAP so didn’t have much to work with. Couple of days went by, hours and hours of searching the web for a solution, number of Tweets, etc. But right on the point where i would gave up, i found a solution to all the problems.
SOAP is easy to use, if you use it with a simple application and in a simple way. But oh boy, it can get complicated. If you’re not a PHP expert or an advanced developer i suggest using REST (POST) calls or XML-RPC .. trust me, you’ll thank me.

First, you have to understand the way that SOAP works. It’s not just a data transfer protocol, it can do magic too :) It includes two sides – server and client. Server accepts the call, process it and (if needed) returns a response. In other hand, client makes the call and accepts the response.
The most important part of SOAP call is the WSDL (Web Services Description Language) file in which you describe how the transfer works, which data can be “pushed” and which data can be returned. The PHP part isn’t as complicated for a newbie as the writing of the WSDL file.

WSDL file can be divided in small chunks in which every chunk represents the important part of final call / response. I’ll just post an example and explain, what and how things work ..

<?xml version =’1.0′ encoding =’UTF-8′ ?>
<definitions
targetNamespace=’server.php’
xmlns:tns=’server.php’
xmlns:wsdl=’http://schemas.xmlsoap.org/wsdl/’
xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’
xmlns=’http://schemas.xmlsoap.org/wsdl/’>

<message name=’incomeMessage’>
<part name=’string’ type=’xsd:string’/>
</message>

<message name=’outcomeMessage’>
<part name=’string’ type=’xsd:string’/>
</message>

<portType name=’updatePortType’>
<operation name=’callMe’>
<input message=’tns:incomeMessage’/>
<output message=’tns:outcomeMessage’/>
</operation>
</portType>

<binding name=’updateBinding’ type=’tns:updatePortType’>
<soap:binding style=’rpc’ transport=’http://schemas.xmlsoap.org/soap/http’/>
<operation name=’callMe’>
<soap:operation soapAction=’urn:server.php’/>
<input>
<soap:body use=’encoded’
namespace=’urn:server.php’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</input>
<output>
<soap:body use=’encoded’
namespace=’urn:http://yourdomain.comserver.php’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</output>
</operation>
</binding>

<service name=’updateService’>
<port name=’updatePort’ binding=’updateBinding’>
<soap:address location=’http://yourdomain.com/rest’/>
</port>
</service>
</definitions>

I hope the code didn’t scared you, cuz it’s quite simple to understand. All the code must be written between “<definitions></definitions>” tags, as the WSDL 1.0, WSDL 1.1 and WSDL 1.2 formats are the only one which currently works with PHP (with WSDL 2.0 you can skip “definitions” tags but it won’t work with PHP).
Then we have four objects – message, portType, binding and service.
message is a very important part as you define the data that the service accepts and returns. It must contain a “name” tag and at least one “part” object. With “<part ../>” you define the number and type of chunks in the call, that will be transferred. I suggest writing two “message” objects, one for the “input” (received) and one for the “output” (returned) data.
portType combines the two messages defined and the name of operation (function) that will be called, when the call is made.
binding is the part in WSDL in which you define the port, which should be used and type and URL of input (received) and output (returned) data.
service – it just sticks all the previous definitions together and makes the call and response possible.

Now, i know i didn’t define every tag very specifically, because i don’t feel the need to. Please visit “the site”, where you can find all the explanations that will help you write a perfect WSDL file – w3.org/TR/wsdl.

We have a WSDL file, let’s say we store it as updateMe.wsdl. Now let’s build some webservice, shall we? At first, we need to build a SOAP Server part. I used the SOAP class that is included in PHP5=>, you may use NuSOAP library instead – it’s is very popular (and works with PHP4), but you’ll have to make some adjustments to the PHP code.

The “server” component needs to contain only 2 lines of code, we’ll use 3:

$server = new SoapServer('updateMe.wsdl');
$server->setClass("updateClass");
$server->handle();

So we’ve made a new SoapServer, set a class and “executed” the service. That simple? No. You need a class within a function to handle the received data and return a response. And here it is ..

class updateClass
{
function callMe($input)
{
return "I cannot belive my eyes, it is so simple.";
}
}

What we’ve done here is we’ve set up a class within which the call can execute a function. And where did we define the function, which will be used in the call? In WSDL file. We defined it in the “portType/operation” and later on in the “binding/operation”. We received the data as a string ‘$input’ and returned the response (returned data) to the client.

So, let’s say we’ve saved the “server component” as server.php. We have a updateMe.wsdl and server.php in a root directory, so we only have to write a Client to “push” data to the server.

Here is an example of a Client that should work with the server / WSDL file written above ..

$client = new SoapClient('updateMe.wsdl');
$xml = $client->__soapCall("callMe", array('string' => 'We have landed.'));

Simple, ain’t it? Only 2 lines of code. So, what did we do here? We’ve made a call to updateMe.wsdl file, which made a call to server.php file, and passed a chunk of data via string variable to the function called callMe. The function is held in the updateClass, which we defined in the server component ($server->setClass(”updateClass”)) ..

So .. how does SOAP works? It’s not a traditional “POST/GET” request call. The call is made over the WSDL file and can’t be made directly to server component itself. If you add more operations / messages to the WSDL file, you can transfer more chunks of data to the server. It works like this ..

Client -> WSDL -> Server -> Client

I hope this “how-to” helps you deal with SOAP & PHP. SOAP is not used as much as it could be, while the developer has to learn an additional programming language (WSDL). In some ways it’s as simple as a REST request, which is being used very often .. but for more complex data transfers and with clients that don’t all have “advanced developers” I wouldn’t suggest using it for a client-end service but it’s a nice was to transfer data from one server to another.

Akademskih 15′

Ne bom jamral in se opravičeval zaradi nerednega objavljanja na blogu. Začetek poletja, kot mnogo študentov, preživljam za knjigami, služim denarce in krepim zdravje in duha.

Fotografija me je vedno zanimala, že od očetovega film-aparata, katerega se mi ta trenutek ne ljubi it iskat, da bi napisal znamko, do nedavno kupljenega Canona IXUS 860, sem prešel na DSLR fotoaparat. Zaradi časovne zabasanosti v zadnjem mesecu sicer še nisem imel veliko časa, da bi se spustil v vse podrobnosti, a fotografiranje je svojevrsten užitek. Zaenkrat sem fotografiral le par zabav, eno prireditev in malce po centru Ljubljane. Poletje bom torej izkoristil za iskanje popolnega momenta, dobre kompozicije in ravno pravšnje svetlobe.

Na fakulteti smo zaključili s predavanji. Letos sem bil kar priden, pogoje za vpis v višji letnik sicer že imam, a sta mi ostala še 2 predmeta. Če jih ne opravim pred poletjem, bom seveda dal vse od sebe, da jih do začetka predavanj za naslednji letnik.

V zadnjem času sem bil aktiven tudi na spletu. Pred mesecem dni je MMC RTVSLO predstavil nov portal, katerega majhen del sem soustvaril. Zadnjih nekaj tednov pred uradno objavo je bilo kar napornih, a uporabniki so bili s prenovo zadovoljni, kar je za spletne ustvarjalce najbolj pomembno.
Med lastnimi spletnimi projekti, ki sem jih lansiral prejšnjo jesen, je Pravnica.net postala precej popularna spletna skupnost študentov prava v Sloveniji. Pred mesecem dni sem objavil še en projekt, Partee.si, kjer bom zbiral fotografije z zabav, ki jih bom posnel. Ogromno idej imam še v glavi, a vrjetno luči spleta nikoli ne bodo ugledali. Ni časa in volje za realizacijo.

Še kratek napovednik, kaj bom počel v prihodnjih mesecih. Poletje bo letos bolj penzionistično. V začetku julija na Disconautiko, takoj zatem na Papaya Summer Festival v Zrče .. pa še na kakšno zanimivo zabavo .. na morje pa za par dni na Pag in za kak teden na vikend v Novigrad.

Blog žal ni več tako aktualen, kot včasih. Vse moje dnevne aktivnosti lahko spremljate na Facebooku in Twitterju.

IMG_6684

Škisova tržnica 2009

Pred vstopom v zadnje izpitno obdobje pred poletjem se študentarija že dvanajsto leto zapored odklopi na Škisovi tržnici v Ljubljani. Letošnja prireditev se je začela ob 12h, trajala pa tja do poznih jutranjih ur .. za zabavo so skrbeli bendi in DJi na dveh odrih, pjače in futra pa, kot se za pravi študentski žur spodobi, ni manjkalo.

img_2492 img_2513 img_2622
img_2706 img_2872 img_2776
img_2845 img_2822 img_2794
img_2748 img_2703

Škisova tržnica 2009:
@ Partee.si
@ Miha Rekar
@ Flickr

Play With Me Partee @ Rovinj by Collegium & Radio DeeJay

Letošnji spring break smo z družbo preživeli v Rovinju, na Play With Me Partee by Collegium & Radio DeeJay .. super žurersko vzdušje, dobra tuc-tuc muzka in odlična prilika za ultra super partee posnetke ..

img_1145 img_1790 img_1564
img_1501 img_1279 img_1233
img_1185 img_1974 img_1926
img_1748 img_2096 img_1916

Play With Me Partee:
@ Partee.si1, 2, 3, 4
@ Collegium.si
@ Radio DeeJay
@ Lajf.com

WacAp?

Na hitro bom napisal par vrstic, ker sem si zadal, da bom vsak mesec oddal vsaj en zapis .. pa ta mesec ni bilo časa, volje za daljše tekste, če ni prave teme, pa itak nikoli ni.

Bliža se izpitno obdobje, zato večino dneva preživim za študijsko literaturo. Ob večerih se le spravim za računalnik in se posvetim delu, ki ga je te dni kar veliko. Veselim se že pomladi in toplih poletnih dni, pa posedanja ob Ljubljanici na kavi, toplih morskih večerov s hladnim pivcem, zabav na plaži, ..
MinWajl me spremljajte na Twitterju in Facebooku, kjer dnevno objavljam nova sporočila in slike -, v toplih mesecih pa uživajte, nabirajte sončne žarke in se kmalu spet beremo ..

s_u_m_m_e_r_by_hadiya

Politični začetek

Na novoletni večer smo dvignili kozarce penine in si zaželeli sreče, zdravja in veselja v prihajajočem letu. Čestitke, pred in po novoletne zabave, v novem letu so ostali le spomini -, življenje pa pripravlja nove izzive in vsak dan odpira nove priložnosti.

Dolgo časa nisem našel ustrezne teme za blog – zadnje čase delam nekakšno selekcijo, kaj napisati in kaj zamolčati. Pa je selekcija dobra? Če bi se oziral na statistiko, niti ne. Dobro je biti aktualen, pisati prežvečene reči in svoje izlito mišljenje na blogu prilagajati trenutnim situacijam. Sam pišem o rečeh, ki se me dotaknejo, o katerih razmišljam čez dan .. pišem dnevnik, ker je to moje življenje.

Zadnjih nekaj mesecev se ukvarjam pretežno s študentskimi zadevami ..

Pravnica.net
V sredini oktobra sem ustvaril forum študentov Pravne fakultete v Ljubljani. V treh mesecih sem s pomočjo kolegov zgradil spletno skupnost, ki ustvarja konstruktivno debato in študentom pomaga pri odgovorih na vprašanja, ki se jim porajajo med študijem.

ePravna
V letošnjem študijskem letu sem postal študent Evropske pravne fakultete v Novi Gorici. Ker smo študentje razpršeni po Sloveniji, splet predstavlja enostaven način združevanja na spletu. Zato sem postavil portal, lastne izdelave, ki nam bo omogočal “onlajn” komunikacijo, izmenjavo literature, objavo fotografij, ..

Kot študent Evropske pravne fakultete v Novi Gorici pa pozorno spremljam tudi ustanovitev Nove univerze. Z veseljem sem podprl ustanovitev Študentske organizacije Nove univerze, podpiram tudi ustanovitev Nove univerze. Političnega pridiha, ki ga v zadnjih dneh zavrača minister, preprosto ne morem spregledati. Iskanje banalnih vzrokov, ki bi onemogočili ustanovitev in opravičevanje v imenu javnega interesa kažejo le na način dela, ki ga bo aktualna vlada izvajala. Politični začetek, ali le nadaljevanje političnega pritiska v izobraževanju?

Če bi minister resnično želel delati v javnem interesu, bi zmanjšal število vpisnih mest na študijske programe, ki polnijo prenasičen trg dela, medtem ko se za programe, ki ustvarjajo potrebne kadre in znanje, razpiše le nekaj deset mest. So si določene politične elite že pred leti ustvarile reko, po kateri vsako leto priteče zajeten kup denarja?

Včeraj je prisegel 44. ameriški predsednik Barack Hussein Obama. Nekaj pozitivnega domoljubja, ki so ga američani izkazali ob prisegi predsednika, ne bi škodilo tudi slovencem. Narod z vseh vetrov, a združen pod eno zastavo?

Primerjava spletnih video hranilnic #2

Splet se razvija kot življenje -, v mladosti se uči govoriti in pisati, v puberteti pa zaživi. Na spletu so, nekoč drage in za posameznika nepredstavljive možnosti izražanja mnenja, dostopne praktično brezplačno. Spletnih portalov, ki ponujajo hranjenje video posnetkov je dandanes veliko – pa vsi ponujajo enako kvalitetno storitev? Pred časom sem ugotovil, da temu ni tako. Ker pa se vsak dan rodi nova spletna storitev ali se že obstoječa izboljša, sem primerjavo ponovil.
Izbral sem najbolj popularne video hranilnice, s katerih je bilo moč dobiti “prekodiran” video posnetek.

Na izbrane portale sem naložil isto video datoteko, počakal, da jo storitev prekodira in prekodirane video posnetke primerjal med seboj.

Izvorni video posnetek (.mov)

vlc_info_original vlcsnap-180499
Duration: 00:00:44.6, start: 0.000000, bitrate: 3048 kb/s
Stream #0.0(eng): Audio: qdm2, 48000 Hz, stereo
Stream #0.1(eng): Video: svq3, yuv420p, 720x480, 29.97 fps(r)

Blip.tv

vlc_info_bliptv vlcsnap-183515
Duration: 00:00:44.6, start: 0.000000, bitrate: 80 kb/s
Stream #0.0: Video: vp6f, yuv420p, 720x480, 30.00 fps(r)
Stream #0.1: Audio: mp3, 44100 Hz, stereo, 80 kb/s

DailyMotion.com

vlc_info_dailymotion vlcsnap-169478
Duration: 00:00:44.5, start: 0.000000, bitrate: 455 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 512x336, 29.97 fps(r)
Stream #0.1(eng): Audio: mpeg4aac, 44100 Hz, stereo

Frendi&Flirt

vlc_info_frendiinflirt vlcsnap-171448
Duration: 00:00:44.5, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Video: flv, yuv420p, 416x312, 29.92 fps(r)
Stream #0.1: Audio: mp3, 44100 Hz, stereo, 64 kb/s

MMC RTVSLO Moj video

vlc_info_mmcmojvideo vlcsnap-172667
Duration: 00:00:44.5, start: 0.000000, bitrate: 224 kb/s
Stream #0.0: Video: flv, yuv420p, 320x214, 29.97 fps(r)
Stream #0.1: Audio: mp3, 44100 Hz, stereo, 224 kb/s

MojVideo.com

vlc_info_mojvideo vlcsnap-174703
Duration: 00:00:44.5, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Video: flv, yuv420p, 320x240, 25.00 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, stereo, 64 kb/s

Shrani.si

vlc_info_shranisi vlcsnap-176123
Duration: 00:00:44.5, start: 0.000000, bitrate: 913 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 720x480, 30.00 fps(r)
Stream #0.1(eng): Audio: mpeg4aac, 44100 Hz, stereo

Viddler

vlc_info_viddler vlcsnap-177223
Duration: 00:00:44.6, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Video: vp6f, yuv420p, 720x480, 29.97 fps(r)
Stream #0.1: Audio: mp3, 44100 Hz, stereo, 64 kb/s

Vimeo

vlc_info_vimeo vlcsnap-178388
Duration: 00:00:44.6, start: 0.000000, bitrate: 112 kb/s
Stream #0.0: Video: vp6f, yuv420p, 504x336, 29.97 fps(r)
Stream #0.1: Audio: mp3, 44100 Hz, stereo, 112 kb/s

Youtube

vlc_info_youtube vlcsnap-179323
Duration: 00:00:44.5, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Video: flv, yuv420p, 320x214, 29.97 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, mono, 64 kb/s

comparetabela_small

video_compare_small

V tabeli so boljše vrednosti odebeljene, slabše podčrtane.

Za najslabše storitve sta se izkazali slovenski Mojvideo.com in Frendi&Flirt. Storitvi spremenita razmerje slike in zmanjšata avdio bitrate.

Kot najboljši storitvi bi izpostavil dve, vsaka ima svoje prednosti in slabosti.
Shrani.si ponuja kvalitetno h264 kodiranje, prekodiran video posnetek ohrani velikost in razmerje izvorne video datoteke, enak avdio bitrate in malenkost manjšo avdio frekvenco. Edina slabost je le velikost prekodirane datoteke.
Viddler ponuja ta trenutek najboljše vp6f flash kodiranje, prekodiran posnetek ohrani velikost in razmerje izvorne video datoteke. Edina slabost omenjene storitve je le slabša kvaliteta zvoka.

Če na splet nalagate HD posnetke (720p, 1080p) priporočam uporabo spletne storitve Vimeo (omogoča kvalitetno kodiranje HD posnetkov), če gre za posnetke (malce) slabše kakovosti, pa storitev Shrani.si ali Viddler.com.

Prednost storitev Blip.tv, Vimeo in Viddler način kodiranja – uporabljajo namreč On2 vpf6 (VP7) kodiranje, ki omogoča dobro kompresijo, s čimer se ne zmanjša kvaliteta slike. Ostali ponudniki storitev pa najvrjetneje za kodiranje video posnetkov uporabljajo odprtokodne programe ffmpeg ali mencoder.

Nakup pnevmatik

Zaradi zakonske zahteve (114. člen zakona o varnosti cestnega prometa) pa tudi zaradi lastne varnosti, letos prvič kupujem zimske pnevmatike za mojega novega Renault Cliota. Letne pnevmatike imajo sicer še dovolj “profila” (stare so cca. 2 leti), a na s snegom prekriti ali poledeneli cesti mi verige v prtljažniku ne bodo koristile. Zato je padla odločitev, letos kupim nove zimske pnevmatike, premontiram na stara ALU platišča, kasneje pa kupim nova ALU platišča, na njih pa montiram letne gume (kupovati nova ALU platišča za zimske pnevmatike, katere potrebujem 4-5 mesecev na leto, bi bilo neumno).

Pred nakupom novih pnevmatik je potrebno pogruntati, katere pnevmatike po homologacijskem lističu ustrezajo določenemu vozilu. Na homologacijskem lističu za Clio Storia 1.2 16V, 2006 letnik, piše nekako takole:

Dovoljene pnevmatike in platišča: “185/55 R15 (81)H, 175/65 R14 (82)T”

img_22911

img_22921

Pod temi oznakami je še nekaj številk o dovoljeni velikosti platišča, tisto me zaenkrat ne zanima (ne kupujem novih platišč). Kaj pomenijo te oznake? 185/55 predstavlja širino/višino, R15 presek pnevmatike, (81) predstavlja indeks nosilnosti, oznaka H pa hitrostni razred.

185 – širina pnevmatike (milimetri)
55 – višina pnevmatike (v % glede na širino pnevmatike)
R – zgradba pnevmatike (radialna)
15 – premer platišča (cole)
81 – indeks nosilnosti
H – indeks hitrosti

Pnevmatika mora imeti točno takšne mere in kvaliteto, v nasprotnem primeru po homologaciji ni ustrezna na vaše vozilo. Pri zimskih pnevmatikah je lahko le indeks hitrosti za dva razreda nižji od predpisanega (”S” ali “T”). Več o oznakah na pnevmatikah si preberite na spletni strani AMZS.

Ko so rešene dileme z velikostjo pnevmatike in raznoraznimi indeksi, pa se pojavi problem pri izbiri pnevmatike. Na tržišču je veliko število proizvajalcev, nekateri so znani, drugi malo manj. Kvaliteta zimskih pnevmatik pa je zelo pomembna zaradi najrazličnejših situacij in stanja na cesti, v katerem se lahko znajdemo vsak dan. K sreči določene avto-moto zveze, med njimi tudi slovenski AMZS, vsako leto še pred začetkom sezone opravijo preizkus zimskih pnevmatik, rezultate analizirajo ter priporočajo dobre in odsvetujejo slabe pnevmatike. Priporočam ogled testov slovenskega AMZSopis testa, razultati pnevmatik dimenzije 175/65 R14 in 195/65 R15. Priporočam tudi pregled rezultatov testov pri nemškem ADAC-u – 175/65 R14 in 195/65 R15.

Na vseh testih (slovenskih in tujih) se je dobro odrezala pnevmatika Goodyear UltraGrip 7+. Po številnih prebranih temah in pozitivnih ocenah (1, 2, 3, 4, 5, 6, ..) sem se odločil za nakup slednje (Goodyear Ultra Grip 7+ 185/55 R15 82T). Sledi tipično potrošniško vprašanje – kje kupiti to pnevmatiko po najnižji ceni? Preklikal sem spletno ponudbo med različnimi prodajalci z isto pnevmatiko, razultati so sledeči ..

AMZS101,70 EUR
ŠPAN – 88,34 EUR
Mimovrste – 82,72 EUR
Nakupovanje.net82,44 EUR

Najcenejši in najdražji ponudnik sta odebeljena. Odločil sem se za nakup pnevmatik v spletni trgovini Mimovrste. Nakupovanje.net spletni trgovini nekako ne zaupam več (slabe izkušnje), z nakupovanjem pri Mimovrste pa zaenkrat še ni bilo težav. Počakati bo potrebno 14 dni .. upam le, da me sneg in temperature ne bodo prehitele :-)