Slike – radost našeg weba

Jedna od prvih stvari koje sam naučio prije petnaestak godina kad sam počeo pisati za raznorazne tiskovine jest da je oprema teksta najvažnija stvar na svijetu. Doduše, od redakcije do redakcije je varirala i praktična spremnost urednika da se oko toga pokači s autorom, no otkad sam u Bugu (a ima tome više od devet godina!), više se niti ne trudim objasniti da "nema adekvatne slike" ili "da se ne može napisati okvir". Štoviše, naučio sam da nema tako stručnog i teorijskog teksta uz kojeg se ne može domisliti kakva prateća slika.

Glavni razlog za neopremanje teksta je zapravo lijenost – stvaranje adekvatnih popratnih sadržaja zna uzeti puno vremena, no njihova vrijednost je neprocijenjiva. Obratite pažnju tome kad budete u prilici – uzmite novine/časopis/web-stranicu koja nudi suhe tekstove bez međunaslova, slika, linkova, tablica, okvira… i primjerak koji to sve nudi, pa ćete uočiti razliku. Iako je tekst jednako dug, jednako nezanimljiv i jednako napisan – iskustvo čitanja bit će sasvim drugačije.

Tako sam i ja, iz čiste lijenosti, odlučio da u blogu neću koristiti prateće slike – to je dodatan posao, za njima većinom nema nužnosti, a blog je osobna stvar, gdje sam sam sebi urednik i direktor, pa čemu da se mučim? Sada shvaćam da sam bio potpuno u krivu – stranica je izgledala očajno suho pa sam čak i starim postovima udahnuo nov život. Isto savjetujem svima – tekst veći od kartice teksta jednostavno mora imati sliku, tablicu, graf, fotografiju autora, ilustraciju ili, ako baš ništa od toga ne ide, izdvojenu rečenicu iz teksta, pisanu većim fontom.

0  

Problemi s mailing listama

Kao novinar član sam brojnih mailing listi koje raznorazne firme i organizacije šalju nama novinarima, većinom s objavama za medije i ostalim tek povremeno korisnim materijalima. Ima među njima dosadnih koji iz svake sitnice rade Veliku Vijest (i u pravilu ih brišem odmah po primanju), a ima ih zanimljivih (koje čitam od vrha do dna, s interesom). Bilo kako bilo, iako većinu tih mailinga  nikad nisam izričito tražio i uz trunku filozofije moglo bi ih se proglasiti spamom, smatram da to pripada u opis posla pa nikad ne dižem bunu niti se odjavljujem s istih. (Da se razumijemo, cijela ta ergela objava i informacija, čak i onih "dosadnih", procesira se na drugom mjestu u redakciji, i dobar dio istih završava u našim izdanjima, što ih čini korisnima za obje strane.)

Međutim, u ovom postu zanimljivo je ono "u pozadini" – kako firme barataju svojim listama. Daleko najjednostavniji, a možda i najčešći način, je trpanje liste adresa koju imaju u polje BCC. To je ujedno i najbolji način za slanje poruka na više adresa, posebno ako se primatelji međusobno ne poznaju. Ipak, nemali se broj puta do sada dogodilo da nas pošiljatelj sve strpa u polja TO ili CC, pa tako dođe poruka u kojoj vidim kome je sve poslana. Takve slučajeve uvijek kopiram u posebnu tekstualnu datoteku i na taj sam način skupio već priličnu bazu kolega novinara. Siguran sam da ju neću nikad iskoristiti za masovno slanje, no već više puta je poslužila za kontaktiranje nekoga čiji e-mail nisam imao pri ruci. To što je meni spomenuti način slanja povremeno bio koristan, ne umanjuje sramotu pošiljatelja odnosno organizacija koje iza njih stoje. Shame on you. To se ne radi.

Oni nešto napredniji koriste prave mailing liste. Ima tu raznoraznih rješenja, nikad nisam išao istraživati o kojima se točno radi, no princip je uvijek isti. Pošiljatelj poruku šalje na jednu adresu (tipa novinari@firma.hr), a server se pobrine da se stvar dostavi svima na listi koja se nalazi iz te adrese. Dva su načina da se to dogodi – da server pošalje zasebnu poruku svakom od primatelja (pa njemu dođe poruka u kojoj je on jedini primatelj) ili pak da se ista poruka pošalje na više adresa, s time da se primatelji ne vide (gotovo identično BCC rješenju, samo što se kao primatelj vidi ime liste, u našem imaginarnom slučaju "novinari@firma.hr"). Ovo prvo je fancy rješenje, vrlo probitačno kroz filtere za spam i toplo ga preporučam svakome tko si ga može ili zna priuštiti.

Ono što nažalost i najveće organizacije zaboravljaju jest da mailing listu treba zaštititi. Direktan povod za ovaj post bila je obavijest jedne velike domaće (državne, IT… možda pogađate) organizacije koja ima takvu listu. Jednim klikom na "Reply to all", jedan odgovor, upućen toj organizaciji, dobili su svi primatelji liste jer je među adresama bila i adresa novinarske mailing liste, očito nezaštićene. Strašno neprofesionalno.

Inače, metoda za zaštitu mailing liste ima više i većina uključuje samo malo dobre volje. Jednostavan, ali ne i savršen jest sakriti ime liste (dakle, ne smjestiti ga u polje TO, već u BCC), ili pak koristiti varijantu gdje se svakom primatelju poruka šalje pojedinačno. Naravno, u tom slučaju bi bilo korisno koristiti neku manje očitu adresu – umjesto press@firma.hr, koristiti naziv svinovinari.press@firma.hr. To je, složit ćete se, puno teže za "pogoditi".

Drugi način je ograničavanje pošiljatelja – to se radi najčešće na samom serveru, a znači uključivanje opcije "dozvoli slanje samo s te-i-te domene" ili čak samo neke specifične e-mail adrese. To je polusigurno rješenje, jer je adresu pošiljatelja lako krivotvoriti, no bolje išta nego ništa.

Treći način koji mi se čini najzgodnijim (kojeg sam i sam implementirao u jedno rješenje prije par godina) jest korištenje lozinke. Jednostavno se napravi da je prva riječu u subjectu zapravo lozinka i, ako nije ispravna, poruka neće biti proslijeđena ljudima na listi.

Naravno, kod slanja poruke, server će izbrisati tu prvu riječ tako da ona nije vidljiva primateljima. Konkretno, pošiljatelj će napisati subject "lozinka Novosti iz moje firme", a primatelji će dobiti samo "Novosti iz moje firme".

0  

Valna duljina boje

Eto opet jedan programerski post… Pozadina današnjeg posta je sljedeća: radim na intranetskom projektu kod kojeg je jako bitna vizualizacija elemenata. Ukratko, na stranici postoji hrpa elementa koje treba shematski prikazati, može ih biti neograničeno mnogo, a neki od njih su međusobno povezani. Najlogičnije rješenje jest prikazivati elemente u različitim bojama, s time da povezani elementi budu prikazani u istoj boji. Da ne filozofiram, kako to izgleda mozete vidjeti na slici uz tekst.

Najjednostavnije rješenje bilo je kreirati listu boja koja će se koristiti. No, to nije "lijepo" rješenje, a i što ako se dogodi da ima više elemenata nego što smo predvidjeli boja?

Pametno rješenje ovog problema podrazumijeva automatsko generiranje boja, palete koja će se koristiti. No, bitno je da korištene boje budu međusobno što različitije. Naravno, ako ćemo na stranici imati sto različitih elemenata, razlike među njima nužno će biti manje, no uvijek će biti cilj dobiti što bolji rezultat. Ako koristimo dvije boje, razlika će biti drastična. Ako koristimo deset, bit će lako uočljiva. Ako koristimo sto, bit će jedva uočljiva, no postojat će.

U tome će nam pomoći svojstvo boja koje se naziva "hue". Neki to prevode kao "nijansa", a neki valna duljina, no bitno je da se sve boje nalaze u rasponu od 0 do 360 (stupnjeva). Želimo li dobiti suprotne boje, uzet ćemo one nasuprotne (primjerice, na 0 i 180 stupnjeva). Želimo li četiri boje, uzet ćemo one na 0, 90, 180 i 270 stupnjeva. Želimo li dobiti 10 najrazličitijih boja, krenut ćemo od nula i uzimati boju svakih 36 stupnjeva. Shvatili ste…

Kako biste iz vrijednosti hue dobili RGB boju (kakva se koristi na webu), trebaju vam još dvije vrijednosti – saturation (zasićenost boje) i lightness (svjetlina). Te tri vrijednosti čine HSL color space, o kojemu više možete pronaći na Wikipediji. Za "najbolje" boje iz te palete, valja uzimati one najzasićenije (saturation = 100%) i srednje osvjetljene (lightness = 50%). Naravno, želite li dobiti još različitije boje, možete se poigrati i s tim parametrima (primjerice, svakoj drugoj boji staviti nešto veće zasićenje ili nešto veću osvjetljenost. Ja sam u već spomenutom projektu boje iz palete koristio kao pozadinu, a boju slova naizmjence ispisivao u bijeloj i crnoj boji (kako su sve 50% osvjetljene, obje boje slova su čitljive na njima), što je znatno doprinijelo uočljivosti razlike u bliskijim bojama.

Boju definiranu po modelu HSL u RGB mozete jednostavno konvertirati pomoću formula ili gotovih klasa u C#.

0  

Centralna pohrana podataka

Digitalne fotografije, razni filmići s Interneta i glazba kreiraju ogromnu količinu podataka i moj notebook to više nije mogao izdržati. Uz to, na media center računalu kojeg imamo u dnevnoj sobi imali smo kopiju svih tih sadržaja, da se nađu i kod kuće. Konačno, moja draga žena također povremeno želi pogledati fotografije odnosno, češće, poslati ih u DM na razvijanje.

Ukratko, došlo je vrijeme za centralno spremište podataka. Poseban server je automatski pao u vodu, ne znam niti gdje bismo ga stavili, a trebalo bi i izdvojiti popriličnu sumu novaca. Višednevnim istraživanjem i proučavanjem, izbor je pao na Western Digitalov mrežni disk My Book World.

Nabavio sam model od 500 GB (to bi trebalo biti dovoljno za početak) za nekakvih 1500 kn. Nisam znao kako točno radi i hoće li zadovoljavati potrebe, no prema specifikacijama i iskustvima drugih, činio mi se dovoljno dobar za isprobavanje na slijepo.

Danas, tjedan dana kasnije, disk mogu proglasiti fenomenalnim rješenjem! Iako se uz njega isporučuje softver koji kao pojednostavljuje upravljanje podacima (čak se može pristupati disku izvana, preko Interneta), ja sam se odlučio za osnovnu funkcionalnost, bez ikakvih instalacija na računalima koji mu pristupaju – mogućnost pristupa pomoću dijeljenih mapa (shared folders). Neke je mape moguće zaštititi lozinkom (neograničen je broj korisnika), a neke mogu biti javne (mogu im pristupati svi koji su unutar mreže). Trivijalno, genijalno i dovoljno.

No, najveća fora ovog diska, zbog kojeg i pišem cijeli ovaj esej, jest mogućnost spajanja (pazi sad!) eksternog USB diska! Drugim riječima, jednom kad se popuni ovaj disk, dovoljno je nabaviti novi, veći i ljepši, no s USB sučeljem, koji u praksi košta dvostruko manje od mrežnoga. To ja zovem feature!

[Usput, za one sklonije istraživanju, My Book World diskovi (zapravo, radi se o računalu temeljenom na Linuxu) mogu se i hackirati i pretvoriti u, primjerice, web ili FTP poslužitelje. Više informacija o tome možete pronaći ovdje, a ako se itko odluči na tako nešto, volio bih da mi se javi – zvuči zanimljivo!]

[Update 11.12.2007.] Upravo pročitah da je disk koji toliko hvalim i ljubim opremljen DRM zaštitom koja ne dozvoljava određene ekstenzije, među kojima su ".avi" i ".mp3". Doduše, koliko sam shvatio sa stranica proizvođača, ograničenje se javlja samo kad se koristi softver WD Anywhere Access, koji služi za pristup disku izvan lokalne mreže, što ja ne koristim niti planiram koristiti. Meni, koji koristim klasičan sharing, ne događaju se spomenuti problemi.

0  

Zašto (ne)volim MAXtv?

Kod kuće već više od godinu dana imam MAXtv. Uvijek sam volio isprobavati nove stvari, posebno tehničke prirode, što me nebrojeno puta koštalo živaca i vremena, no čar je ipak veća od povremenih razočaranja.

[Mala digresija – moje najluđe iskustvo što se tiče isprobavanja novih stvari zapravo nema veze s tehnikom, radi se o bankarskom proizvodu. Naime, vidio sam na internetskim stranicama Zagrebačke banke da od tog i tog datuma nude paket "1 za sve". Izračunavši koje sve usluge koristim, odmah sam shvatio da mi se tako nešto isplati, pa sam prvi dan pružanja te mogućnosti skočio do lokalne podružnice i zatražio paket. Prvo sam službenici morao objasniti o čemu se zapravo radi, a kad se prisjetila, cijeli proces je trajao oko dva sata, a ja sam na kraju završio sa dva žiro-računa (iako je trebao biti otvoren samo jedan). Danas, čujem, pakete otvaraju za desetak minuta.]

No, da se vratimo na MAXtv. Prije nego što pobrojim razloge za i protiv (ili, bolje rečeno, stvari koje me smetaju), valja reći da sam njime izuzetno zadovoljan jer gledanje televizije čini znatno praktičnijim. Naravno, kad bih mogao, naviknuo bih se i na nekakvu kabelsku, no… nije to to.

Evo po meni tri glavna aduta MAXtva:

  1. Dobra slika – namjerno nisam napisao "izvrsna", jer moglo bi to biti i bolje, no činjenica je da većina ljudi koji dođu prvi puta do mene pitaju "otkud vam tako dobra slika" i da je stvar neusporedivo bolja u odnosu na antenu, pa čak i kabelsku (primjerice kakva je kod mojih roditelja).
  2. Raspored programa – izuzetno korisna stvar, posebno što piše što se trenutno prikazuje kod mijenjanja programa, a ne da moraš par minuta gledati da bi skužio o čemu se radi ili kad je počelo (osobno ne volim gledati stvari od pola, a raspored programa mi tu informaciju daje odmah po prebacivanju)
  3. Snimalica – možda i ponajbolji feature je mogućnost snimanja emisija, posebno što to možete napraviti i nekoliko dana unaprijed. Televiziju ne gledam puno, no tih par emisija i serija koje volim pogledati sada jednom tjedno postavim za snimanje i pogledam kad mi najbolje odgovara.

Par stvari koje treba srediti:

  1. Raspored programa – osim što je izuzetno koristan, raspored programa zna biti i frustrirajuće netočan. Televizije kakve jesu, mijenjaju raspored u zadnji čas, no informacije o tome adekvatno promijene i na svojim web-stranicama i teletekstu. Zašto T-Com ne može redovitije sinkronizirati raspored na MAXtvu, nikako mi nije jasno. Što je najbolje, oni tvrde da to rade i da je program točan, no u praksi to jednostavno nije tako. Nebrojeno mi se puta dogodilo da mi se neka serija ili film, upravo zbog netočnog rasporeda, snimi bez zadnjih pet minuta. Pogodite koliko je to frustrirajuće.
  2. Korisnička podrška – ako nešto ne štima (a to nije rijetkost), treba pola sata da bi se uopće netko javio. Ljudi koji se jave u pravilu su nekompetentni i sve što znaju reći je "resetirajte sve uređaje". Kad nešto ne funkcionira pa proradi, nitko se ne udostoji reći zašto nije radilo – većini možda to nije bitno, no ja bih želio znati u čemu je bio problem, možda se u budućnosti može izbjeći ili prepoznati. Neki dan se dogodilo da se snimilo samo prvih 27 minuta jedne emisije, od sat vremena koliko traje. Prijavio sam problem, ispričali su se i poklonili "plus paket" mjesec dana gratis. No, ja nisam želio niti trebam "plus paket", želio sam pogledati emisiju do kraja!
  3. Sporo sučelje – ponekad je malo brže, ponekad je malo usporenije, no generalno je za jedno koplje sporije od razine ugodnog korištenja. Stisneš tipku i onda čekaš na reakciju, najčešće između pola i tri sekunde, posebno ako si negdje dublje u izbornicima. Okej, ako se to već ne može popraviti iz bilo kojeg razloga, zašto onda ne naprave web-sučelje za konfiguriranje, postavljanje snimanja i slične radnje? Evo, ja se javljam da napravim! Svatko tko ima MAXtv ima i pristup Internetu, korisničko ime i lozinka postoje, sve je ionako smješteno na serverima, a osim ugodnijeg korištenja, postojala bi mogućnost postavljanja snimanja i s neke druge lokacije (s posla, vikendice i slično).
  4. Mogućnost isključivanja programa – neke programe uopće ne želim vidjeti niti znati da postoje. Mogu se doduše zaključati pomoću roditeljske zaštite, no to nije to. Želim ih isključiti i ne znati da postoje.

Stvari koje me čine totalno ravnodušnim (ne koristim ih):

  1. Interaktivni sadržaji – ima nekakav link, no ne znam niti radi li kako treba. Zadnji put kad sam gledao, servisne informacije su kasnile koji dan.
  2. Videoteka – možda zato što nemam vremena, a možda jer nikad nisam stekao naviku posuđivanja filmova iz videoteke – bilo kako bilo, dobro je izvedeno, no meni osobno beskorisno…
  3. Roditeljska zaštita – klinka mi je još premala da bi uopće moglo imati smisla, možda jednom uvidim potrebu, no trenutno – nula bodova.

Jedva čekam konkurenciju na području IPTV-a. Vjerojatno neću prelaziti, no siguran sam da će se MAXtv tada znatno popraviti.

0  

Kombinacije

Trenutno radim na jednom vrlo zanimljivom projektu (web-aplikacija u ASP.NET-u) u kojem se pokazala potreba za računanjem kombinacija. Konkretno, radi se o tome kako smjestiti n ljudi po sobama, ako znamo da su dostupne, recimo, dvokrevetne i trokrevetne sobe.

Izračunati koliko kombinacija postoji, sjećam se iz srednje, nije neki problem, no ispisati sve kombinacije…

Kod rješenja tog problema uvelike mi je pomogao članak na CodeProjectu, inače vrlo korisnom siteu, koji nudi gotovu klasu za kombinacije.

Evo kako to izgleda (primjer preuzet iz samog članka):

using CH.Combinations;

int[] input = new int[] { 1, 2, 3, 4, 5 };
Combinations<int> combinations = new Combinations<int>(input, 3);
foreach (int[] combination in combinations)
{
    // Do something with "combination".
}

Za ostale primjere i trikove, posjetite sam članak, a kako za download izvornog kôda treba registracija, možete ga mimo nje preuzeti ovdje.

0  

Počelo je, počelo…

Sve je počelo vrlo nevino – iz profesionalnih sam razloga odlučio otvoriti korisnički račun na nekom od servisa za bloganje, čisto da vidim kako to izgleda, kako je napravljeno, što se koristi, koja su ograničenja i slično. Naime, takve stvari dio su mog posla, jer se i sam unutar tvrtke Dizzy internetska rješenja bavim izradom web-aplikacija (još nismo radili baš blogove, no sve su to neki oblici CMS-ova).

Zatim su ljudi oko mene, prijatelji, kolege i poznanici, počeli otvarati svoje blogove, a ključnu je ulogu nesvjesno odigrao Luka, što još niti ne zna. Hrpa korisnih i/ili zanimljivih informacija koje sam pronalazio na tim blogovima pretvorili su ih u moje redovito štivo svakih nekoliko dana. Kroz praćenje tih blogova otkrio sam zanimljivu, neobveznu formu, koju do sada, pisanjem za tiskovine kao što su Bug i Mreža, nisam imao prilike koristiti, pa me eto povuklo… Koliko će me držati – vidjet ćemo! :-)

Konačno, shvatio sam da se u svakodnevnim developerskim problemima na koje nailazim izrađujući web-aplikacije, i koje u pravilu rješavam googlanjem, do rješenja sve češće dolazim preko tuđih blogova. Tri reda teksta i komad kôda često su od neprocijenjive pomoći pa osjećam da bih i ja mogao na taj način tu i tamo pomoći nekim trećim osobama, pa makar to bilo linkanjem na tuđe blogove.

Eto, motivi su ovdje, ideja je već bezbroj, jedino što će me sigurno sputavati u ovom obliku izražavanja jest slobodno vrijeme, no tek sam na početku, mislit ću pozitivno!

0