Prijazne besede so lahko kratke in enostavne, njihov odmev pa je neskončen.
Mati Terezija

|
Začetki
Moji začetki segajo v pozna 70-ta leta, ko sem bil še majhen fantek.

Z računalniki sem se prvič srečal že daljnega leta 1979, ko sem bil še nadobuden šolarček. Imel sem ta privilegij, da je moj oče delal v računskem centru in z njim sem hodil v službo ter spoznaval računalnike. In moje prvo srečanje z računalniko ni bilo mnogo drugačno, kot so današnja - z igricami! Igral sem PacMan-a in Space Invaderse ter (na mobilnih telefonih še vedno popularno) kačo Qix in Slippery. Prav dobro se spomnim, kako so operaterji bentili, ko so igrice jemale potreben procesorski čas, da niso mogli obračunati plač ... Ohhh, to so bili dnevi ... Kmalu nato sem začel programirati, najprej v Pascalu, kmalu nato v asemblerju Z80 (od leta '83 sem bil ponosen lastnik "mavrice" - ZX Spectrum-a) in nedolgo zatem v C. V C-ju sem experimentiral celo srednjo šolo in na koncu pristal na Clipperju. Clipper je bil odlično orodje za hitro programiranje poslovnih aplikacij, žal pa se ga je prijel "sloves" slabega programskega jezika, saj so programi kar naprej nagajali oz. niso delovali pravilno. Po mojih izkušnjah to sploh ne drži, razmišljal pa sem, da je ta sloves pridobil zato, ker je bil tako enostaven (dBase II pa še pred njim), da je lahko praktično vsakdo napisal program, ki je delal s podatkovnimi bazami, če je le imel malo volje. To pa je pripeljalo do tega, da so se pojavili mnogi "programerji", ki so delali prava skropucala. Po diplomi sem v glavnem nehal s programiranjem, saj je služba od mene zahtevala bolj sistemca, kot programerja. Seveda pa se mu nisem popolnoma odrekel, skrbel sem za program za obračun plač, ki še danes obračunava plače v nekaj podjetjih.
|
|
|
Web design
In potem je leta '95 prišel Web.

Z internetom sem se prvič srečal proti koncu leta '95 in se ujel v njegovo "mrežo". Najprej sem sicer počel bolj sistemske stvari (routerji, TCP/IP, ...) kmalu pa sem naredil svojo domačo stran in tako od leta '97 govorim tudi HTML. Seveda je bil začetek po današnjih standardih skromen, a tudi, ko sem shodil, nisem takoj tekal naokrog in podiral rekordov. Konec prejšnjega tisočletja smo se usedli jaz, moj brat in kolega ter se resno lotili weba. Naredili smo spletno trgovino oz. sistem za predstavitev katalogov na spletnih straneh. Sodelovali smo z nekaj renomiranimi podjetji s tega področja, nato pa se kmalu osamosvojili in ustanovili svojo firmo, ki še vedno dela vrhunske spletne strani (www.n-3.si). V tem času sem (s pomočjo ostalih) razvil web aplikacijo, ki omogoča enostaven vpis vsebin, katalogov, galerij slik in še marsičesa (med drugim tudi tale stran deluje v tej aplikaciji). Ker pa seveda noben program nikoli ni dokončan, tako se tudi ta aplikacija stalni spreminja in dopolnjuje, kakor pač to od mene to zahtevajo ali pa si zamislim sam. V začetku l. 2000 sem kot akvarist zagnal Akvazin (www.akvazin.com), ki je od takrat povzročil pravo revolucijo v akvaristčnem svetu (no, vsaj v Sloveniji). Seveda je Akvazin moj poligon za programerske experimente in mnogokrat se je zgodilo, da sem kljub obsežnem testiranju zagrešil kakšno programersko cvetko zaradi katere so se akvaristi upravičeno jezili. Prosim jih, naj mi odpustijo ... S tem, ko sem začel programirati spletne strani in spletne aplikacije, se je vse moje ostalo programiranje zaključilo oz. sem nad njim obupal. Upam, da v svoje dobro ...
|
|
|
Obdelava slik
Z digitalno fotografijo sem se spustil tudi v vode obdelave/retuše fotografij.

Zanimivo je, da sem skoraj sočasno z akvaristiko začel še z enim hobijem: fotografijo. Analogno seveda, saj so bili takrat digitalci (pre)dragi in redki. Dokler sem slikal le na film, kake velike potrebe po programih za obdelavo slik nisem imel. Še največ sem uporabljal Corel PhotoPaint, za katerega še vedno mislim, da je najprimernejši za začetnike, ki se želijo spustiti v vode fotoretuše. Žal pa v naprednih funkcijah odpove in zato sem posegel po Adobe PhotoShopu. Prehod iz PhotoPainta na PhotoShop je bil zame relativno enostaven, čeprav sem se v začetku malo lovil. Seveda me je motilo cel kup malenkosti (beri bližnjic), ki so se jih moji prsti navadili v PhotoShopu pa so bile na drugih mestih ali pa jih ni. No, preživeti se vseeno da! Največji šok po prehodu na PhotoShop je bil zame Color management. Dokler nisem nekoč ponesreči posnel fotografije v AdobeRGB (1998) barvnem prostoru in je odposlal v fotostudio razvit, se nisem menil za upravljanje barv. Tisto, kar sem videl na zaslonu, sem pričakoval tudi drugod (beri papirju). Kakšna zmota! Seveda sem se takoj zapodil na internet poiskat informacije in glej ga zlomka - obstaja celo znanost upravljanja z barvami! Če na kratko povzamem Color management: - najprej je treba kalibrirati in profilirati zaslon
(za začetek je dober Adobe Gamma, ki je zraven PhotoShopa; tudi WiziWYG, ki je brezplačen je odličen; za resno kalibracijo pa bo potrebno poseči po hardware kalibratorjih Eye-One Display ali MonacoOPTIX XR) - sledi izbrira delovnega parvnega prostora sRGB ali AdobeRGB
(če nameravate slike gledati le na zaslonih bo sRGB vrh glave dovolj (mimogrede nekateri fotostudii oz. njihovi stroji ne razumejo ničesar drugega), za tiskanje na kvalitetnih inkjet tiskalnikih pa bo boljša izbira AdobeRGB) - za kvaliteten izpis na papir je potrebno profilirati printer
No še na brzino nekaj hitrih napotkov za retušo: - spreminjanje barv/tonskih vrednosti (levels in curves) počnite na 16 bitnih slikah (TIFF), drugače lahko hitro pride do posterizacije
- če uporabljate RAW format, razvijte sliko z -1, 0 in +1 EC (kompenzacijo osvetljitve) in nato rezultate zlepite v PhotoShopu - rezultati so odlični
In še marsikaj, ko bom našel čas...
|
|
|
Po dveh letih cincanja ...
sem postal srečni lastnik A3+ foto tiskalnika. HP Photosmart Pro B8850 je moja nova zverina, ki že pridno pljuva črnilo.

Hja res sem se vsaj dve leti odločal ali naj sploh kupim ali ne A3 foto printer. Ves čas je bilo razmerje med ceno in kvaliteto ter mojimi potrebami previsoko, letos pa sem se vendarle odločil, da je to potreben korak v moji foto karieri.
Po nekaj neprespanih nočeh in stotinah pregledanih spletnih straneh sem na koncu pristal pri HP Photosmart Pro B8850 Photo Printer-ju. Po nekaj izpisih, ki sem jih naredil na HP Advanced High-Gloss Photo papirju lahko rečem samo to, da sem impresioniran. Vernost barv, barvni razpon, kvaliteta izpisa, resolucija in še in še ... so na nivoju, ki si ga pred tem nisem predstavljal. In vse to s priloženimi ICC profili. Skratka fantastika! Naročil sem si tudi že HP Aquarella Watercolor Art in HP Professional Satin-Matt Photo papirje za večjo paleto možnosti. Naslednji korak je, da ga bom priklopil na mrežo, saj je printer prevelik, da bi ga imel v dnevni sobi. Ja res je! Printer je tako velik, da zasede polovico delovne mize v kabinetu in to je ena izmed njegovih (redkih) šibkih točk. V ta namen sem izbral Edimax PS-1206U print server. Kako bo delalo? Še ne vem, sporočim, ko preskusim.
|
|
|
Edimax PS-1206u
Zanimiv in poceni Ethernet/USB print-server.

Že zadnjič sem obljubil, da bom sporočil, kako se obnese Edimax PS-1206U printer server, ki sem ga uporabil za povezavo novega tiskalnika v LAN omržje.
Glede na to, da sem pred tem že povezal dva tiskalnika na omrežje preko Applovih Airport Express access pointov, so bila pričakovanja precejšnja. Na Appluje vse zelo enostavno, saj močno pomaga Bonjour Printer Wizzard, ki samodejno namesti vsak tiskalnik priključen na Airport. Po pregledu Edimaxove dokumentacije sem sklenil, da njihovega softwera ne bom nameščal in sem v Windowsih enostavno dodal nov tiskalnik in kot port izbral/dodal Standard TCP/IP port. Izbral sem Custom... konfiguracijo in zgolj kliknil OK. Printer je začel tiskati iz prve! No, na Macu je bilo malo bolj komplicirano. Po nekaj neuspelih poskusih z LPD metodo in napačnim naslovom serverja mi je le uspelo. Trik je bil v tem, da sem dodal IP Socket tiskalnik in kot metodo konekcije izbral HP Jetdirect. Voila! Printer dela kot pušeljc. Aja, še konfiguracija! Preden sem sploh dodajal tiskalnik v OS, sem konfiguriral stvarco. Zadeva ima konfiguracijski program, ki sam poišče strežnik v omrežju in omogoči konfiguracijo. Zanimivo je, da ima po tovarniških nastavitvah fiksen IP naslov (192.168.2.2) namesto, da bi ga dobil preko DHCP. Poleg konfiguracijskega programa pa se namestijo tudi ginilniki (samo Windows), ki pa jih nisem želel, zato sem vse skupaj odinstaliral in nadaljeval konfiguracijo preko web vmesnika, ki ga ta mala zverinica premore. Edimax printer server je luštna zadevica. Škoda le, da ima zunanji napajalnik, ko bi bilo lahko vse zapakirano v ohišje z vtikačem. Podobno kot ima to Airport Express. Toplo priporočam!
|
|
|
Frankenmac
Poimenovanega po frankensteinovi pošasti imam doma frankenmaca.

Svoj PC sem spremenil v kvazi Mac Pro - vzdevek pa sem si sposodil pri reviji MacWorld. Že dolgo nazaj (še v času OSX 10.4.7) sem imel željo, da bi na svoj PC namestil OSX, vendar pa nikoli nisem imel dovolj časa in zagnanosti, da bi se lotil "preobrazbe". No pred kakšnim tednom sem z neta snel Kalyway 10.5.2 distribucijo OSX s potrebnimi patchi za ne-Apple hardware in "ustrelil v temo". Fantastika! Očitno imam praktično ves hardware, kot ga imajo neutrudni hekerji, saj mi praktično vse dela. Izjema je le WinFast TV kartica, ki pa je zadnje čase ne uporabljam toliko (nehal sem snemati risanke). Tudi hitrost delovanja je odlična. Najbolj me je presenetilo to, da delajo tudi Applovi patchi. Ni mi sicer bilo še treba patchati kernela. Upam pa, da tudi tu ne bo večjih težav saj imam Core 2 mašino. Če povzamem hardware, ki dela: - Core 2 Duo 1.86GHz 2MB cache z 2GB RAM
- matična plošča Gigabyte GA-965P-DS3
- grafična kartica Gigabyte GV-NX76T256D-RH (NVidia 7600GT 256MB silent-pipe)
- diski 160G, 320GB in 500GB SATA (WesternDigital)
- Optiarc 7170S SATA DVD-DL RW
- noname Firewire kartica
- D-Link BT-120 BlueTooth USB
- Apple aluminium USB keyboard (ja, dela na PCju)
- Logitech QuickCam Messenger
- Microsoft wireless notebook optical mouse 4000 USB
- Dell UltraSharp 2005FPW (20" wide monitor; no ja, ta dela povsod
) - noname čitalec kartic 8v1 (CF/MS/SD/SM)
No, glede na to, da mi PC služi tudi kot MediaPC (se pravi je priklopljen na 40" TV in Onkyo TX-DS494 receiver preko digitalne povezave) moram reči, da žal TV out ne dela, medtem, ko digitalna povezava na ojačevalec dela. Ampak odkar uporabljam AppleTV je ta njegova funkcija malo uporabljena.
|
|
|
BackUp maca s Time Machine na mrežni disk
Če nimate Applovega Time Capsule, pa imate na mreži velik disk, je rešitev tu!

Na netu (kje pa drugje) sem našel hack, ki omogoči, da uporabite mrežni disk (oz. mrežni share) kot backup napravo za Time Machine. Najprej je potrebno omogočiti, da Time Machine vidi mrežne diske: defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
Nato je potrebno ustvariti sparsebundle navidezni disk. To lahko storite v Terminalu ali z Disk Utility (ki je mnogo prijaznejši). Finta je v pravilnem poimenovanju tega navideznega diska. Le to je sestavljeno iz imena mac mašine (npr. "Blaž Kristan`s MacBook") kot ga najdete v System Preferences pod Sharing, podčrtaja in MAC adrese ethernet kartice. Ethernet MAC adreso lahko dobite v Terminalu, tako da vtipkate: ifconfig en0 | grep ether
Iz številke odstranite dvopičja! Nato prekopirate navidezni disk na osnovno mapo mrežnega diska (t.i. root folder) in v nastavitvah Time Machine izberete mrežni disk (pred tem si ga povežite). Time machine bo začel s kopiranjem po cca 2 minutah. Nasvet: Če Time Machine javi, da ni mogel izvesti "back-up"a, je verjetno ime navideznega diska napačno. Pomagate si lahko tako, da pustite Time Machine, da za nekaj trenutkov sam ustvari navidezni disk na mrežnem disku. Prekopirajte ime in ga uporabite v Disk Utility. Biti morate hitri, ker disk, ki ga je poskusil ustvariti Time Machine, kmalu izgine.
|
|
|
Mac OS X
... in njegov novi 3D dock.

Danes sem med surfanjem naletel na zanimivo povezavo na MacWorld-u, ki omenja predelavo Leopardovega docka. Omenjena je tudi stran z zbirko predelanih dockov, ki jih lahko enostavno snamemo in prepišemo v OS X. Zanimivo.
Druga pa je še bolj zanimiva - Hackintosh z Leopardom.
|
|
|
Smola in nekaj malih trikov
Pri updateu mojega Frankenmaca sem imel težave. Pomagal je le reinstall. Sem se pa pri tem spet nekaj naučil.

Že pred časom se je moj Frankenmac pritoževal, da bi se rad poupdateal na verzijo 10.5.8. Pa nekako nisem imel časa oz. sem na mašini bolj laufal Windowse in se nisem lotil tega. Predvčerajšnjim pa sem to le poskusil narediti. No, sledi poučna zgodba. Namountal sem 10.5.8 Combo update in pognal instalacijo. Vse lepo in prav do tik pred koncem instalacije (sočasno moram v terminalu vtipkati sudo -s while sleep 1; do rm -rf /System/Library/Extensions/AppleIntelCPUPowerManagement.kext; done in nato po uspešni namestitvi popraviti /System/InstallAtStartup/scripts/1, kjer zamenjam "Dont Steal Mac OS X.kext" z "dsmos.kext"). nano /System/InstallAtStartup/scripts/1 Ko bi že moral napisati "Completed" je zajamral, da source fajli niso OK in, da sistem ni poupdejtan. Čudno, ker sem iz istega DMGja poupdejtal MacBooka! "No, nič hudega, bom podownloadal še enkrat" sem si mislil in to naredil. Nič bolje! Pa sem pognal instalacijo še enkrat. Tokrat s katastrofalnimi posledicami. Že kmalu po začetku kopiranja fajlov je javil kernel panic in obvisel. Tako mi ni preostalo nič drugega kot formatirati disk in ponovno instalirat zadevo. Še enkrat sem poskusil z 10.5.8 in po enaki izkušnji obupal. Tako je zdaj Frankenmac spet na 10.5.7, kjer je bil pred začetkom. No tu pa se začne zabava. Tokrat sem za prenos programov, podatkov in nastavitev uporabil Migration assistant, ki mi je lepo prenesel vse z MacBooka na Frankenmaca. Tudi ikone v menujski vrstici - za baterijo in AirPort wireless kartico. In ker v Frankenmacu ni baterije ali AirPorta nisem mogel uporabiti Preferences, da bi odstranil nedelujoči ikoni. Ker sem pedanten, me je to motilo in našel sem rešitev! Če želiš odstraniti ikono iz menujske vrstice, pa ne najdeš nastavitev za to, je dovolj, da stisneš Command in povlečeš problematično ikono iz menujske vrstice na namizje (podobno, kot to narediš na Docku, le da tam ne tiščiš tipke Cmd). Majka! Tile dve tipki Option in Cmd sta zelo uporabni. Svetujem, da se vsakdo malo poigra z njima, ko klika po OS X aplikacijah. Včasih so rezultati prav zanimivi. Pa veselo raziskovanje!
|
|
|
Widgeti na namizju
Danes sem na netu našel zanimivo možnost, ki omogoča, da Dashboard widgete obdržimo na namizju, ne da bi zaslon prekrival Dashboard.

Dashboard na Mac-ih z OS X-om je zanimiva in uporabna zadeva. Pa vendar mu je nekaj manjkalo, če sem stvar primerjal z Yahoo! Widgets. Pri Yahoo! Widgets so widgeti lahko oz. so vedno prisotni na namizju in jih ni potrebno vedno prikazovat/skrivat kot je to pri Dashboardu. V nekaterih primerih je to mnogo bolje oz. priročneje. No, v nadaljevanju je opisan postopek, kako lahko podobno funkcionalnost vklopimo tudi v Dashboardu. Zadeva je čisto preprosta: zgolj vklopimo t.i. developer mode in na poseben način odvlečemo widget na namizje. Stvar gre takole: - vklopimo developer mode za Dashboard z:
defaults write com.apple.dashboard devmode YES; killall Dock
- aktiviramo Dashboard
- z miško povlečemo widget na namizje
- med vlečenjem deaktiviramo Dashboard
- spustimo gumb na mestu, kjer želimo widget
Ker pa odprti widgeti kurijo pomnilnik in procesorski čas (čeprav zelo malo) jih je najbolje zapreti, ko jih ne rabimo več. To naredimo takole: - z miško povlečemo in držimo widget
- vklopimo Dashboard
- spustimo gumb na miški
- deaktiviramo Dashboard
V kolikor v prihodnje ne želimo take funkcionalnosti Dashboarda, deaktiviramo developer mode z ukazom: defaults write com.apple.dashboard devmode NO; killall Dock
Upam, da še komu pride prav. Original je tule.
|
|
|
Prenos iTunes knjižnice iz PCja na Maca
... sem naredil še v Ameriki, drugi dan uporabe MacBooka.

Hja, res je! Glede na to, da rad poslušam glasbo (in gledam filme), sem takoj začutil, da bo nekako treba prenesti celotno knjižnico iz PCja na Maca. Seveda sem najprej kopiral vse MP3 datoteke iz PCja na prenosni disk in nato na Maca (v moj home folder (~/music/iTunes/iTunes music). Nato sem poskusil dodat vse datoteke v iTunes a so se vse zvezdice (in ostala statistika) izgubile.
Po nekaj minutah raziskovanja (v bistvu sem za to že vedel od prej) sem ugotovil, da iTunesi poleg svoje .ITL naredi tudi .XML datoteko v kateri so vsi podatki iz knjižnice. Najprej sm poskusil enostavno importati XML iz PCja, pa so se iTunesi na macu pritožil, da ni nobene datoteke za uvoz. Po nekaj minutah sem ugotovil, da bo dovolj, če v XML datoteki zamenjam C:/MY%20MUSIC z /users/mojeime/music/iTunes/iTunes%20Music in ponovim vse skupaj. VOILA! Celotna knjižnica je bila uspešno prenesena.
|
|
|
Kako omejiti velikost TimeMachine arhiva na TimeCapsule
Ko sem kupil 1TB mrežni disk WD MyBook World Edition, sem se odločil, da mu zaupam arhiv (backup) svojega meka s TimeMachine. TimeMachine pa ima eno slabost: privzeto porablja prostor na disku, dokler je le ta fizično na voljo. To pa pomeni, da ga za druge podatke lahko zmanjka.

WD MyBook World Edition ima možnost dodajanja uporabnikov, ki dostopajo do diska, in nastavljanja kvot prostora, ki jim pripada. To velja tudi za posebnega uporabnika (WD_backup) s katerim se TimeMachine poveže na backup particijo na mrežnem disku.
In tu se pojavi prva težava, kvota oz. omejitev razpoložljivega prostora je zgolj logična in ne fizična. Uporabnik namreč še vedno vidi celoten prostor, ki je na voljo na disku, le uporabiti ga ne more.
Sam sem se odločil, da bom rezerviral 250GB prostora za arhiv (backup), ostalo pa bom imel za druge vsebine, ki si jih delimo v domačem omrežju. Vsem uporabnikom sem nastavil kvote, da ne bi po nepotrebnem preveč smetili po disku. Seveda sem nastavil kvoto tudi uporabniku WD_backup in to na 250GB.
Vse lepo in prav, dokler arhiv ni dosegel omenjenih 250GB. V tem trenutku disk ni več pustil pisanja (dodajanja) nanj, čeprav je še vedno kazal razpoložljivih 700GB praznega prostora. Seveda je TimeMachine narejen tako, da začne z brisanjem starih arhivov, ko na disku zmanjka prostora - vendar to pomeni fizičnega prostora in ne samo logičnega. TimeMachine začne z brisanjem starih arhivov šele, ko vidi, da je disk poln. Torej je logično omejitev zaznal kot napako diska in je nehal izvajati arhiviranje.
Neugodno!
Malo tuhtanja in predhodnih eksperimentov z FrankenMacom me je napeljalo na idejo, da poskusim ročno omejiti prostor, ki ga ima TimeMachine na voljo na TimeCapsule kompatibilnem disku. Tako sem skupaj spravil naslenji enostavni postopek, ki učinkovito omeji kapaciteto arhiva, brez da bi bilo potrebno nastaviti kvote za uporabnika WD_backup. Hkrati se to izkaže za dodatno koristno, še posebej, ko na isti mrežni disk arhiviramo več kot enega Meka.
Kot že rečeno, postopek je enostaven:
- z DiskUtility naredimo virtualni disk (disk image) tipa sparsedbundle, ki je omejen na želeno kapaciteto (v mojem primeru 250GB)
- virtualni disk poimenujemo na poseben način (opisano že pri postopku bekapiranja na nepodprt mrežni disk)

- prekopiramo tako nastali virtualni disk na mrežni disk (na particijo za TimeMachine)
- vklopimo TimeMachine in izberemo mrežni disk
TimeMachine bo uporabil virtualni disk in vanj začel s shranjevanjem podatkov, a le do velikosti, ki smo jo določili za DiskUtility.
Prihodnjič: Prepis arhiva iz USB diska na mrežni disk oz. kako ohraniti stare arhive.
|
|
|
AJAX in jQuery
Pri predelavi svoje spletne strani, o kateri sem pisal že zadnjič, sem se lotil posodobitve: odločil sem se za AJAX. Ker pa AJAX ni za začetnike, sem poiskal pomoč. Našel sem jQuery.

Servisni del aplikacije je nastal že leta 2000 in sem ga nato posodabljal ter nadgrajeval precej let. Že v osnovi pa je bil zgrajen podobno kot so današnje AJAX aplikacije, le da takrat te tehnologije ni bilo in sem se poslužil IFRAME in FRAMESET, da je bila količina osveževanega najmanjša. AJAX (Asynchronous Javascript And XML) filozofija je čisto preprosta: namesto osveževanja cele strani, z JavaScriptom zahtevamo (asinhrono - torej ne nujno na željo uporabnika) nalaganje strani s serverja v pomnilnik. Nato tako naloženo stran vrinemo oz. vstavimo v DOM (običajno v innerHTML property). Zveni čisto preprosto in v resnici tudi je, če le odmislimo tehniko. In tu se je tudi meni zdelo nepotrebno kompliciranje. Zato sem malo pogledal naokoli. Kupil sem si knjigo AJAX, JavaScript and PHP in malo poštudiral. V knjigi je priporočenih kar nekaj zanimivih JavaScript knjižnic za delo z AJAXom. V oko mi je padla knjižnica prototype.js, a se mi je zdela nepotrebno velika. Verjamem, da ima mnogo funkcij, a jih vseh nisem potreboval. Iskanje me je preko množice raznoraznih knjižnic privedlo do jQuery. Sprva sem jo zgolj bežno preletel in, ker je nisem razumel, enostavno preskočil. A mi ni dalo miru, stalno sem se vračal na stran in študiral primere. In končno sem dojel. Lepota jQuery je odlično izražena v njenem sloganu: Write less, do more! In kako to drži! Primer: Servisno stran imam razdeljeno na tri dele: zgoraj je menu, na levi strani je seznam in na desni urejevalno okno. V straih časih sem za spodnji del uporabil IFRAME in, znotraj, FRAMESET. Tokrat sem se odločil za modernejši pristop in pripravil DIVe. Enega za menu, enega za spodnji del, ki vsebuje še dva, levega in desnega. <div id="menu">...koda za menu...</div> <div id="okvir"> <div id="levo" style="float:left"> </div> <div id="desno" style="float:left"> </div> </div> In ker so DIVi block objekti visoki zgolj toliko kot njihova vsebina, sem jih moral raztegniti, preko vsega zaslona. Klasično je to kar precej kode (ki je tukaj ne bom ponavljal), z jQuery pa zgolj: function fixSize() { var frame = $("#okvir").width(0).height(0); // fix scroller problem var list = $("#levo").width(0).height(0); var edit = $("#desno").width(0).height(0); frame.width($(window).width()).height($(window).height() - frame.position().top); list.height(frame.innerHeight()).width(325); edit.height(frame.innerHeight()).width(frame.innerWidth()-325); } ... $(document).ready(fixSize); $(window).resize(fixSize); A ni to lepo? Morda na prvi pogled res ne, a če pogledamo podrobno je smešno enostavno. $(document).ready() pove, naj se po končanem nalaganju strani zažene funkcija fixSize(). Isto naredi $(window).resize() za slučaj, če uporabnik spremeni velikost okna. Prve tri vrstice v funkciji fixSize poskbijo za anomalijo, ki se pojavi s prikazom scrollerjev in so v bistvu nepomembne. Četrta vrstica (frame.width(...)) poskrbi za raztegnitev DIVa okvir preko preostanka zaslona. Vse v eni vrstici! Pa še čitljivo je! Torej, širina je širina okna, nato sledi višina, ta je višina okna minus vertikalni položaj samega DIVa. Sledi zgolj nastavitev še za DIVa levo in desno. Širino levega sem fiksiral na 325. Iz menija se nalaga vsebina v levi del, ki jse seznam vsebine (npr. besedil, ...). Tudi tu je koda smešno enostavna. V meniju imam onClick JavaScript, ki naredi tole: $("#levo").load('pot/levo.php?izbor='+ID); To pomeni, da v DIV levo (njegov innerHTML) naloži vsebino strani levo.php (s parametrom kaj želim nalagati). In linki (A) v levi vsebini so praktično vsi enaki: jaascript:$("#desno").load('pot/desno.php?izbor='+ID); Simp'l za poscat se!
|
|
|
PHP in MySQL
Iz gole radovednosti, kako deluje PHP in kako se obnaša MySQL, sem se lotil predelave moje spletne strani iz CFML/MsSQL v PHP/MySQL. Naletel sem na nekaj zanimivih težav, ki pa sem jih uspešno obšel.

Dobra dva tedna nazaj sem začel razmišljati, kako bi svojo spletno stran predelal v PHP kodo. Pa ne, da bi bilo z ColdFusion kaj narobe (no, mogoče je to, da je plačljiv), temveč me je gnala gola radovednost, kako izgleda programiranje spletnih rešitev v PHP. Poleg tega je bil dodatni moment tudi to, da je PHP že vgrajen v OS X in zanj ni potrebno plačevat nobene licence. In da ne bi bil polovičen, sem se odločil, da tudi bazo zamenjam iz MS SQL Express 2005 v MySQL v5.1. Kot že rečeno, na OS X je PHP že naložen, aktiviramo ga zgolj z odkomentiranjem vrstice v /private/etc/apache2/httpd.conf konfiguracijski datoteki Apache web serverja: LoadModule php5_module libexec/apache2/libphp5.so Še največ težav je bilo sPHPjem na Windowsih. Na Win2k3 serverju sem imel težave, če je bil PHP poinstaliran v Program Files. Na enih mašinah je delalo, na enih ni. Tako, da sem na koncu pristal z instalacijo PHPja na rootu C: diska. Čudno. V konfiguraciji PHP.INI sem spremenil naslednje: output_buffering = On # oz. 8192, odvisno od mašine default_charset = "utf-8" date.timezone = CET No, seveda je med razvojno in produkcijsko mašino še nekaj razlik, ki pa niso bistvene. Če sem hotel na Macu uporabljat bazo, sem imel dve možnosti: Oracle Express ali pa MySQL. Seveda izbira ni bila težka. Že pred časom sem se poigraval z MySQLom, ki pa takrat ni imel uporabnih grafičnih orodij za ad-hoc opravila. V verziji 5.1 je to čisto drugače! Poleg tega obstaja na Windows okolju tudi t.i. Migration utility, ki prenese podatke iz (skoraj) katerekoli druge podatkovne baze v MySQL. In dela skoraj popolno. Težave sem imel samo pri pretvarjanju tabel, ki vsebujejo DEFAULT vrednost. Ne vem zakaj, ampak v nekaterih primerih se orodje odloči in uporabi naslednjo sintakso: imepolja INT NULL DEFAULT (0) za katero pa se izkaže, da ne deluje. Pravilno je naslednje: imepolja INT NULL DEFAULT 0 Ko je bilo to poštimano in sem prenesel podatke iz MsSQL Express 2005 serverja v MySQL, sem naletel na prvi resni problem. Ko sem izpisoval tekstualne podatke, ki so vsebovali šumnike (ščž...), se Š in š nikakor nista hotela izpisovat. Namesto njiju je bil ? (vprašaj). Malo Googlanja mi je dalo naslednjo rešitev: SET NAMES 'utf8' COLLATE 'utf8_slovenian_ci'; To je prvi ukaz, ki ga iz PHPja pošljemo MySQLu, da pravilno interpretira UTF-8 kodirane znake v bazi. Čudno, ker vsa MySQL orodja niso kazala težav. Očitno je to povezano zgolj s PHP in MySQL. Ko sem obšel te prve težave, je sledilo prekodiranje CFML v PHP. Zamudno in dolgočasno. Lahko rečem, da večjih težav nisem imel. Še največ mi je sivih las naredila ReReplace iz CFMLja, ki v stringu zamenja substring z uporabo regular expression. Sintaksa, ki jo uporablja CFML je namreč drugačna od PHPjeve. Pa še v PHPju so se odločili, da starejšo opustijo in uporabljajo zgolj Perl kompatibilno v prihodnjih verzijah PHPja. Za dostop do baze podatkov sem našel super knjižnico EZSQL Justina Vincenta, ki poenostavi dostop do baze do maksimuma. Za konekcijo uporabim zgolj: require_once('inc/ezsql_core.php'); require_once('inc/ezsql_mysql.php'); $db = new ezSQL_mysql('user','pass','DB','host'); in nato za branje podatkov: $recordset = $db->get_results('SQL query'); Za zdaj lahko rečem, da sem prezentacijski del aplikacije uspešno prekodiral v PHP ostane mi še servisni/administrativni del. Tam pa je kode krepko več in me čaka še precej neprespanih noči. UPDATE: Kogar zanima lahko pogleda novonastalo stran na /~blaz na serverju. Deluje na PHP in MySQL, medtem, ko trenutna stran še vedno teče na CFML/MsSQL.
|
|
|
Ahh ta web, včasih mi je bil IE celo všeč
Microsoft Internet Explorer je bil v verziji 3 eden izmed boljših brskalnikov tistih časov, vendar pa se ni pokoraval nobenim standardom in to tradicijo drži še danes. Zato je programiranje spletnih strani tako zoprn posel.

Administracijo sem dokončal, tako, da je vnos vsebin in oblike (strukture) spletne strani mogoč v celoti. Sedaj me čaka še forum, ki pa se ga verjetno lep čas ne bom lotil, saj ga na blogu ne potrebujem (komentarji so narejeni na osnovi foruma in ta del je dokončan).
Če bi si kdo zaželel te spletne aplikacije, mu jo odstopim. Za eno pivo!
Zdaj pa k temi tega zapisa: IE in njegovi ocvirki! Tisti nesrečneži, ki si ogledujete to spletno stran z njim, ste verjetno opazili, da so nekatere slike čudnih barv in da so sličice v galeriji namesto na sredini diapozitiva (belega okvirčka) postavljene na vrh (tole mi je celo uspelo porihtat). Edini, ki na tak način prikazuje tole stran je IE od verzije 6 naprej.
Najprej se teh težav nisem niti zavedal, ker sem že zdavnaj obupal nad njim in nisem niti preskusil prikazati moje spletne strani v njem. Pa so me opozorili!
Torej, najprej sem se lotil na videz enostavnega problema: pozicionirati sličice na sredino okvirčka - horizontalno in vertikalno. Slednje se je pokazalo precej zamotano.
Torej: Če želimo sličico (ali pa kak drug konstrukt) pozicionirati vertikalno na sredino z uporabo CSS to naredimo na naslenji način:
<style> .slide { width:...px; height:...px; line-height:...px; text-align:center; vertical-align:middle; display:table-cell; clear:both; } </style>
Kar dela lepo v vseh brskalnikih razen v IE. Na netu sem našel zelo nazoren primer, kako to zadevo poštimati tudi v IE. In je delovalo. Dodal sem le še en prazen SPAN tik pred sliko in pogojni CSS v HEAD dokumenta.
<!--[if lte IE 8]><style> .slide span { display: inline-block; height: 100%; } </span><![endif] -->
Pred tem pa sem si razbijal glavo do onemoglosti. Skoraj sem že šel nazaj na postavitev s tabelo.
Ostaja mi le še čuden prikaz slik, ki imajo preko sebe napet link (<a>). Iz neznanega razloga IE sliko invertira, če je le ta JPEG. PNG slike prikaže popolnoma normalno.
Pa naj še kdo reče, da je IE super brskalnik (in hroščev, ki omogočijo hekerjem nadzor nad računalnikom, sploh nisem omenil).
|
|
|
Spletna aplikacija moje internetne strani
... je moj velikanski uspeh. Vsaj zame! Vzelo mi je mesec in pol, da sem jo posodobil in prekodiral v PHP. S tem je postala precej privlačnejša in uporabnejša.

Že s prvim januarjem letošnjega leta (in to nekaj minut po polnoči) sem predstavitveni del spletne strani prestavil na PHP različico, ki sem jo pred tem že nekaj časa razvijal in testiral na testnem okolju. Zdelo se mi je vredno postaviti sad mojega nočnega življenja na ogled javnosti.
Vendar pa samo predstavitveni del aplikacije ni vse. V resnici je samo drobčken košček! Glavnino predstavlja t.i. administrativni del, kjer se vnašajo podatki in parametri delovanja. Takoj, ko sem objavil PHP različico, sem vedel, da s prekodiranjem administrativnega dela ne smem več odlašati, saj je bilo vzdrževanje takega sistema zelo naporno.
Vzelo mi je mesec in pol, da sem dokončal administracijo do take mere, da tole besedilo lahko že pišem v njej. Vključno z vsem varnostnim oz. sistemskim delom. Do osnovne celote mi manjka zgolj še administracija rubrik spletne strani (hierarhija).
Poleg tega bo v končni različici zadeva vsebovala tudi administracijo mailing list (ostanek korporativne aplikacije) in foruma oz. diskusij (kot jih imenujem sam).
Sledi nekaj zaslonov tistega dela, ki sem ga pripravil.
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)

|
|
|
Detekcija mobilnega brskalnika
Porast obiskov z mobilnih naprav me je vzpodbudil, da dodelam svojo stran tako, da bo optimizirana tudi zanje.

Že pred časom, ko sem prvič z iPod Touch-em obiskal Amazon, sem bil navdušen nad dejstvom, da je bila spletna stran posebej prilagojena za mobilni brskalnik. Vendar je pri tem ostalo.
V zadnjem času pa sem opazil nekaj obiskov z mobilnimi napravami (iPhone, iPod, Symbian, ...) in sem sklenil, da dodelam spletno stran, da bo optimalno prikazana tudi na njih.
Najprej sem seveda moral nekako detektirati ali je obiskovalec mobilen ali ne. Vedel sem, da je to nekdo že naredil zato sem zgolj vprašal ata Googla in na krožnik mi je serviral enostavno funkcijo, ki jo je spisal Andy Moore.
Sledi zgol includanje v mojo kodo in klic na vsaki strani. Nato sem v nekaj predlog in osnovni index.php dodal potrebne if-e. Zadeva je delovala od prve, a vseeno nisem bip zadovoljen, ker so bile črke premajhne, zato sem popravil CSS, tako da imam sedaj posebnega za mobilnike.
Pri vsem skupaj, pa me je presenetilo to, kako malo popravkov sem imel: include, klic funkcije in vsega skupaj 20+ if-ov.
|
|
|
|