ToboAds open source plugins

Posted by Krof Drakula on May 21st, 2008

Danes smo odprli uradni repozitorij za ToboAds plugine, s čimer želimo olajšati integracijo ToboAds sistema s širokim spektrom aplikacij. Projekt smo odprli pod LGPL licenco in se nahaja na Google Code:

http://code.google.com/p/toboads-plugins/

Trenutno so podprte platforme Joomla, Wordpress in Symfony Framework. Vsi plugini so trenutno v alfa izdaji, kar pomeni, da zaenkrat še ne zagotavljamo 100% produkcijske stabilnosti le-teh. Če jih uporabljate in opazite kakšno nepravilnost, pa nam lahko to sporočite preko issue trackerja.

Kako se izogniti uporabi Flasha pri demo CD-jih

Posted by Krof Drakula on Aug 29th, 2007

Ker trenutno pomagam zbirati in urejati gradivo za Labirint trenutkov in ga lično zapakirati v dinamično obliko, sem se odločil narediti nekaj dokaj neortodoksnega - narediti “Flash” predstavitev brez Flasha.

Kako, porečete? No, ideja je taka - ker zelo nerad programiram in delam v Flashu, se ga rad izognem, ko je le-to možno. In ker sem zelo domač v Javascriptu (ki je neke vrste ActionScript, natančneje “sibling” jezik v grupi, imenovani ECMAScript) in XHTML-ju kot prezentacijskem sloju, se mi je posvetilo - zakaj pa ne bi zadeve naredil kar v XHTML-ju? Glede na to, da so dandanes knjižnice z efekti res dobre (jQuery in maljon vtičnikov za le-tega) in računalniki dovolj dobri za predvajanje JS animacij, zakaj ne bi tega res naredil kot offline XHTML?

Vse lepo in prav, dokler se ne udariš ob eno prepreko - nešteta množica različnih brskalnikov, ki se nahajajo na računalnikih končnih uporabnikov (CD je namenjen distribuciji medijem in sponzorjem), od katerih je najbolj problematičen IE - 5.5, 6.0 in 7.0. Trije brskalniki, ki se med seboj po sposobnostih in funkcionalnosti razlikujejo huje kot različni brskalniki drugih ponudnikov med seboj. Nočna mora - še posebej, kar se tiče podpore JS knjižnic in prikaza strani, pa četudi gre za še najbolj preproste CSS vmesnike.

…in potem, ključni trenutek - kaj pa če bi prisilil uporabnika, da uporabi Firefox? Lame rešitev bi sicer bila ikona na dnu strani (mogoče še celo splash screen pred dejansko stranjo), kjer bi propagiral “Best viewed in Firefox,” ampak vsak spletni oblikovalec in programer ve, da je to formalni no-no. Tega se ne počne že od davnega leta 1997. Seveda bi lahko priložil inštalacijsko kopijo Firefoxa na CD-ju, ampak kaj, če bi s tem povozil kakšne nastavitve in novejše različice brskalnika, ki je že na sistemu (recimo Firefox 1.5-)? Najti je bilo treba boljšo, izolirano in samozadostno rešitev. Rezultat? Portable Firefox!

Seveda pa sama predstavitev zna zavajati ljudi, ker, seveda, gre še vedno za brskalnik v vsej svoji veličini. Še vedno lahko dodajaš zaznamke, vtičnike, uporabljaš multi-tab vmesnik, itd. Pa tudi vsi menuji so še vedno vidni, kar seveda nima mesta v namenskem brskalniku, ki služi le predstavitvi.

Slednje pa lahko, vsaj vizualno (do sem sem trenutno prišel), popravimo s pomočjo userChrome.css datoteke. Le-ta se nahaja v PortableFirefox/Data/profile/chrome, določa pa izgled XUL vmesnika. V mojem primeru sem hotel v prvem koraku izbrisati zgornjo vrstico z menuji, kar sem dosegel z naslednjo vsebino:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
#toolbar-menubar, #nav-bar {
  display: none !important;
}

To skrije naslovno vrstico in menu, bookmark toolbar pa sem skril že prej s pomočjo kontekstnega menuja z desnim klikom na sivi prostor med gumbi. Željeno predstavitveno stran pa lahko odprem s preprostim ukazom v smislu PortableFirefox.exe file:///c:/pot/do/projektnega/index.html in voilá! Gecko engine s Flash pluginom in polnim JavaScript VM-jem, z vsemi dobrotami XHTML in CSS.

Sicer je še veliko ostalo - treba je izključiti vse t.i. “acceleratorje” (bližnjice na tipkovnici), ki jih je trenutno še moč klicati (Ctrl+O, Ctrl+B, Ctrl+H in podobno), izklopiti je treba še kontekstni menu pri desnem kliku na “non-input” HTML elemente (torej, vse, razen input, textarea in podobno) in par ostalih bonbončkov.

Končen nabor datotek in komentirana navodila pa bom objavil, če koga zanima takšno početje. ;) Če ne drugega, lahko sedaj res oblikujete brskalnik natančno tako, kot želite.

OMG kaka ezoterika

Posted by Krof Drakula on Mar 1st, 2007

Bentim nad ActionScriptom 2.0. No, sicer je moja napaka, ker se še nisem čisto navadil na prototype-based language. Posledično me je nekaj zaj–alo v zvezi s tem.

Če si v PHP ali v vsakem klasičnem OO jeziku pisal metode znotraj klase in delegiral izvajanje neki funkciji ob eventu, računaš na to, da se kontekst metode nanaša na klaso objekta, na katerem se nahaja. Not so v ActionScriptu. In JavaScriptu, predvidevam, ker sta oba ECMAscript.

V glavnem, problem je takle:

class XMLLoader {
  private var xml_object:XML;
  public function XMLLoader(location:String) {
    this.xml_object = new XML();
    this.xml_object.ignoreWhite = true;
    this.xml_object.onLoad = this.xmlLoaded;
    this.xml_object.load(location);
  }
  private function xmlLoaded(success:Boolean):Void {
    trace(this);
  }
}

// nekje v timeline
var a:XMLLoader = new XMLLoader("myxml.xml");

Bi kdo rad uganil, kaj se izpiše v output oknu? Vsebina XML fajla. Tako je. Ne _level0.a, ampak vsebina XML fajla. Ker nastaviš XMLLoader::xmlLoaded funkcijo kot handler za onLoad event, le ta postane member objekta XML, in tako kontekst ključne besede this pade znotraj objekta XML.

Zabavno, ne?

Update: našel rešitev. Če hočeš izvesti zgornjo kodo, to narediš s pomočjo Delegate klase:

import mx.utils.Delegate;

class A {
  private var xml_input:XML;
  public function A(xml_location:String) {
    this.xml_input = new XML();
    this.xml_input.ignoreWhite = true;
    this.xml_input.onLoad = Delegate.create(this, onLoadXml);
    this.xml_input.load(xml_location);
  }
  private function onLoadXml(success:Boolean) {
    trace(this.xml_input.firstChild);
  }
}

// v timeline:
var a = new A("myxml.xml");

Rezultat je sedaj pričakovano vsebina XML datoteke myxml.xml.

CSS Reset za lažji razvoj predloge

Posted by Krof Drakula on Dec 27th, 2006

Če ste kadarkoli bentili nad razlikami v prikazu strani ter privzetih vrednosti za nekatere HTML elemente v poljubnem brskalniku, je Symfony framework že od začetka ponujal privzeto vključeno CSS datoteko, ki s pomočjo deklaracij eksplicitno nastavi lastnosti elementov na neko znano vrednost, s katere lahko potem avtor designa strani gradi. Sicer je res, da so te začetne vrednosti same po sebi že dovolj dobre za 95% vseh designov, se včasih pri nekih specifičnih in obskurnih zadevah podre, ker manjkajo določene stvari.

Continue Reading »

Flistr, file listing utility [GPLv2]

Posted by Krof Drakula on Sep 28th, 2006

Včeraj sva s kolegom Dodom postavila svoj prvi odprtokodni projekt. Zadeva se nahaja na naslovu http://code.google.com/p/flistr, vendar zaenkrat še ni vnešene kode v repozitorij.

Continue Reading »

Next »

To sem jaz.

  • Krof Drakula osebno.




  • N3rd badge.


    Microsoft Certified Professional

Podpiram

  • Poetomanija

Del.icio.us