PrestaShop: Slovenski prevod

sept. 07 2010

Kratko in jedernato.

Share it: Slovenski prevod za PrestaShop 1.3.1. Preveden je frontend, večji del administracije, vsa korespondenca preko mailov ter vsi uporabljeni moduli. Trgovina v uporabi: Fit Body Shop

Prenesite si prevod:

  PrestaShop - Slovenski prevod (134.2 KiB, 1,330 hits)

Sorodni zapisi:

13 responses so far

PrestaShop: Brezplačen Facebook Like Box Block modul

sept. 03 2010

Približno dva meseca sem se ukvarjal z lastnim projektom z imenom Fit Body, Fit Mind. Več o sami ideji in izvedbi si lahko preberete kar na sami spletni strani projekta.
Del tega projekta je tudi spletna trgovina Fit Body Shop ki bazira na Open Source E-Commerce rešitvi PrestaShop.

Zakaj sem izbral ravno PrestaShop?
Predvsem zaradi enostavnosti in funkcionalnosti. Trgovina ima sodoben videz in sledi MVC arhitekturi, kar samo prilagajanje trgovine naredi sila preprosto. Dodajanje novih tem[1] in modulov poteka preko administratorskega vmesnika.

Če imate PrestaShop in bi želeli na strani prikazovat Facebookov Like Box imate dve možnosti:
- lahko ga kupite v PrestaStore za 35,88 €
- ali pa si brezplačno prenesite mojega :)[2]

Prenesite si Facebook Like Box Block modul

  Facebook Like Box Block (2.6 KiB, 797 hits)

  1. dizajn []
  2. spisan danes za potrebe lastne trgovine []

Sorodni zapisi:

10 responses so far

Objavljena nova verzija 0.3.9 KjeSeRoka

jun. 21 2010

Med vikendom sem objavil novo različico KjeSeRoka 0.3.9 na Android Marketu. Posodobljena različica sedaj omogoča pošiljanje e-pošte izbranemu prizorišču neposredno iz aplikacije. Trenutno se ukvarjam z funkcionalnostjo, ki bo omogočala dnevni prikaz dogodkov – Kam Danes?

Na mojem blogu, ki ga pišem v angleškem jeziku, pa lahko preberete še prispevek o tem kako sem sploh začel razvijat za Android platformo.

Prenesi

Screenshots

Sorodni zapisi:

  • Ni sorodnih zapisov

No responses yet

Mala šola testiranja z PHPUnit in Selenium

jun. 16 2010

Debugging Sucks! Testing Rocks!

Tale članek sem se spravil pisat že dobro leto nazaj. Vmes sem tudi sformatiral disk in so šle stvari v tri … Kljub temu da je članek še vedno nedokončan sem se odločil da ga objavim, saj bo marsikomu v pomoč pri prvih korakih TDD-ja.

Prvi odziv programerjev ob omembi Test-Driven Developmenta je ponavadi negativen, saj pomislijo le na eno: “Tole mi bo pa vzelo dodatnih 50% več časa pri razvoju aplikacij.” Podoben odziv sem pred kratkim doživel pri “naših” programerjih, ko sem jim kazal kako naredimo “Acceptance Test” z uporabo Selenium RC-ja.[1]
Zgornja trditev bi načeloma veljala samo če bi se življenski cikel aplikacije zaključil z prvo produkcijsko verzijo, ter ob klasičnem razvoju Dizajn-Implementacija-Testiranje[2]. To zgodbo najverjetneje vsi poznamo:
“Imamo dva programerja, ki vsak zase nadgrajujeta svoj del že žive aplikacije. Ob združitvi kode, zgleda kot, da je vse ok. Čez čas dobita klic[3], da določene stvari ne delajo, čeprav so prej delale. Vsak posebej za iskanje in razhroščevanje kode porabita polovico dneva.”
Take in podobne zgodbe so lahko preteklost. Rešitev je TDD.

Kaj je TDD

Test-Triven Development (TDD) je razvojna tehnika za softver. Z TDD tehniko stvari postavimo malce na “glavo”. Teste pišemo preden začnemo pisat implementacijsko kodo!. Test pelje oziroma diktira kodo ki se razvija.[4]
TDD cikel pri razvoju aplikacij izgleda nekako takole:

  • Dizajn: Pogruntamo kaj želimo narediti
  • Test: Napišemo test, ki izraža naš dizajn.
    • Test ne bi smel uspeti – FAIL
  • Implementacija: Napišemo kodo
  • Test: ponovno
    • Test bi moral uspeti – PASS
  • Refactoring po potrebi
  • Ponavljaj

Še vedno vas je strah da bo več dela. Malce pa res. :)
Tri različne študije (Microsoft, IBM, John Deere / Ericsson) so pokazale:

  • TDD projekti imajo dva krat večjo kvaliteto kode.
  • Pisanje testov vzame le 15% več časa – dolgoročno gledano.
  • Število hroščev in defektov je manjše za 40%.
  • Skupinska produktivnost se poveča za 16%.

Testiranje

Kaj potrebuje testiranje?
- Backend: programska logika in ponovno uporabljene komponente
- Frontend: procesiranje form, templatov, bogata vsebina z uporabo “AJAX-a#, JSON, RSS Feed, Web Servisi

Kako testiramo?
- Backend: test funkcionalnosti programske logike z Unit Testi
- Frontend: “Acceptance” in Sistemski testi, ki se izvajajo na brskalniku, Testiranje RSS Feedov, Web servisov z Unit Testi, Kompatibilnostni testi …

Acceptance testing

je testiranje na določenem sistemu po principu “črne škatle“. Acceptance test zagotavlja da koda počna to kar želi “stranka”[5], ne pa pričakovanj razvijalca! Temu testiranja bi lahko preprosto rekli tudi testiranje funkcionalnosti. Pa poglejmo kako implementirati Acceptance Test z “ubijalsko kombinacijo” PHPUnit in Selenium.

Priprave na testiranje

Zahteve:

V tem članku uporabljamo PHPUnit, kateri od verzije 3.0 naprej, vsebuje PHPUnit_Extensions_SeleniumTestCase razred, katerega lahko uporabljamo za definicijo Acceptance testov. Sam razred pa za opravljanje testov potrebuje Selenium Core. Zelo pomembno je, da ne pozabimo da to NI Unit testiranje. PHPUnit je knjižnica za “Unit Testing”, med drugim pa je framework prav tako uporaben za integracijske ter acceptance teste.

Inštalacija PHPUnit:
Priročnik PHPUnit-a priporoča inštalacijo frameworka z uporabo PEAR Installer-ja. PEAR kanal (pear.phpunit.de), kateri se uporablja za distribucijo PHPUnit-a bora biti registriran z lokalnim PEAR okoljem.[7] Ko to enkrat naredimo, uporabimo PEAR za inštalacijo paketa od PHPUnit kanala.
Inštalacija PHPUnita
Inštalacija PHPUnita
PHPUnit dokumentacijo za Selenium najdete na http://www.phpunit.de/pocket_guide/3.2/en/selenium.html. Sedaj nam preostane še da iz PEAR kanala inštaliramo Testing_Selenium paket, ki ga potrebuje PHPUnit Selenium podaljšek.


Inštalacija paketa Testing_Selenium
Inštalacija paketa Testing_Selenium

Selenium:
je paket orodij za avtomatsko testiranje spletnih aplikacij. Vsebuje kar nekaj paketov, med drugim Selenium Core, Selenium RC, Selenium IDE, … Selenium Core opravlja aktivnosti uporabnika, izvaja test in obvešča o rezultatih testa. Selenium RC je dodatni serverski proces, ki ga rabimo, če želimo izvajati teste z PHPUnit podaljškom za Selenium. Njegov glavni namen je da omogoča izbranemu programskemu jeziku interakcijo z Selenium Core ki laufa na brskalniku z uporabo preprostega HTTP GET klica do RC strežnika. Komplicirano?!
Najnovejši Selenium RC dobite na http://selenium-rc.openqa.org/download.html. Po tem ko raspakiramo paket v njem najdemo kar nekaj map. V eni izmed njih je Selenium server, ostali so client driverji za različne programske jezike. Mi smo ga za PHP že inštalirali preko PEAR instalerja. Selenium RC zaženemo preprosto iz command lina:

java -jar selenium-server.jar -interactive

Še prej pa smo seveda inštalirali Javo. :)

Inštalacija Xdebug-a:
Xdebug je podaljšek za PHP, ki primarno služi za “debugging” – razhroščevanje kode, pri čemer je sposoben navrčt celo paleto koristnih informacij. Zna pa še narediti profil – “profiling” skripte in analizo pokritosti kode – “code coverage analysis”. Prav slednjo zadevo bomo pokazali v našem članku. Velja si zapomniti, da Xdebug ni potreben za izvajanje testov in da ga ne morete imeti naloženega skupaj z Zend Debuggerjem.
Najlažje je Xdebug inštalirati preko PEAR/PECL kanala.

pecl install xdebug

V php.ini dodamo tole klobaso[8] za temeljit izpis informacij, remote debugging ter profiling na triger:

[Xdebug]
zend_extension="/opt/local/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
;General
xdebug.default_enable=On
xdebug.show_exception_trace=Off
xdebug.show_local_vars=1
xdebug.max_nesting_level=50
xdebug.var_display_max_data=3072
xdebug.var_display_max_depth=12
xdebug.dump_once=On
xdebug.dump_globals=On
xdebug.dump_undefined=On
xdebug.dump.REQUEST=*
xdebug.dump.SERVER=REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT
xdebug.collect_params=4
xdebug.collect_includes=On
xdebug.collect_return=On
xdebug.show_mem_delta=On

;Remote debugging
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

;Profiling
; Turns it off by default
xdebug.profiler_enable=0
; Turns xdebug on when ?XDEBUG_PROFILE=true is in GET or POST
xdebug.profiler_enable_trigger=1
; Your output directory - you'll eventually point webgrind at this
xdebug.profiler_output_dir="/tmp"

O samem orodju podrobno kdaj drugič. Gremo nazaj na testiranje.

Pisanje in zagon acceptance testov

Osnovna forma za acceptance test z PHPUnit in Selenium RC je zelo preprosta.

/** PHPUnit_Extensions_SeleniumTestCase */
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class MonetaOrderTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        /**
         * '*firefox' => Firefox 1 or 2
         * '*iexplore' => Internet Explorer (all)
         * '*custom /path/to/browser/binary => Other browsers (incl. Firefox on Linux)
         * '*iehta' => Experimental Embedded IE
         * '*chrome' => Experimental Firefox profile
         */
        $this->setBrowser(*firefox /Applications/Firefox2.app/Contents/MacOS/firefox-bin);
        $this->setBrowserUrl(http://gateway.home.internet-solutions.si);
    }

    /**
     * Test if
     * label First Name exists
     * element firstName exists
     *
     */
    public function testFirstNameExists()
    {
        //open test/moneta
  	$this->open(http://gateway.home.internet-solutions.si/test/moneta');
  	/** First Name */
  	//label exist
        try {
            $this->assertEquals("First Name", $this->getText("//form[@id='moneta']/dl/dt[1]/label"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
        //element present
        $this->assertTrue($this->isElementPresent("firstName"));
    }
}

Metoda setUp() se uporablja za “zagon” testa. Tukaj definiramo kateri brskalnik se naj koristi. Firefox je le ena od možnih opcij. V primeru da Selenium RC ne vsebuje privzete reference za vaš priljubljeni brskalnik[9] lahko uporabite prefix “*custom” pri kateremu določite pot do vašega izbranega brskalnika. Metoda setBrowserUrl() nastavi URL iz katerega potekajo vsi testi.

http://www.internet-solutions.si/wp-content/uploads/2008/09/Order_Form_Acceptance_Tests.flv
http://www.internet-solutions.si/wp-content/uploads/2008/09/Order_Form_Acceptance_Tests_Code_Coverage.flv

Če vas zanima še kaj o test driven developmentu me kontaktirajte.

Happy blogging(coding)!

  1. podrobno bom predtavil testiranje z Selenium RC v današnjem članku []
  2. če je sploh kaj testiranja pred produkcijo []
  3. ponavadi od stranke, katero pa opozorijo uporabniki []
  4. Sedaj vemo od kod ime Test-Driven Development []
  5. uporabnik, brskalnik []
  6. opcijsko – ni pogoj za izvajanje testov []
  7. predvidevajmo da imate PEAR že inštaliran []
  8. v njej prilagodite pot do podaljška []
  9. v kar dvomim ;) []

Sorodni zapisi:

No responses yet

Malce svežine

jun. 29 2009

Končno nekaj svežega na Internet Solutions:

Reblog this post [with Zemanta]

Sorodni zapisi:

No responses yet

Zdaj delam za 3LINE

dec. 19 2008

En hiter post, da povem (za tiste, ki še ne vedo), da sedaj delam za 3LINE d.o.o.

Še vedno bom pri svojem delu uporabljal komponente Zend Frameworka, tako da lahko pričakujete še več stvari povezanih z ZF-jem.

Moja prva naloge je bila nadgraditi komponento za prevode Zend_Translate_Adapter_Gettext da bo podpirala tudi množinsko obliko. (1 datoteka, 2 datoteki, 3 datoteke, 5 datotek…) V kratkem bom napisal nekaj tanačev[1], kako sem se tega lotil.

Do takrat pa:
Happy blogging(coding)!

  1. navodil []

Sorodni zapisi:

No responses yet

Enostavno je težje

sept. 16 2008

Simple Is Hard

Med pucanjem pošte sem naletel na link, ki me je pripeljal do slidov Rasmusa Lerdorfa. Prezentacija je iz avgustovske Drupal konference, ki je potekala pri naših sosedih.
Programerji smo baje čudna bitja. :) Odvisni smo od kompleksnosti in dostikrat ne znamo poiskati enostavno in očitno rešitev danega problema. To potem škodi performansi, skalabilnosti in varnosti aplikacij.[1]

Avtor nam na primeru Laconice[2] nazorno pokaže kako z enostavnimi, preprostimi prijemi izboljšamo performans aplikacije.
Continue Reading »

  1. največ pa živcem nadrejenih []
  2. odprto kodna platforma za mikrobloging []

Sorodni zapisi:

No responses yet

Center Kiron

avg. 23 2008

Sponzorirana spletna stran: Center Kiron

Center KironCenter Kiron je prvi konjesrčni center v Sloveniji, ki se ukvarja z inovativnim, naravnim in celostnim pristopom do konj in jahanja ter z raziskovanjem moči konja, kot asistenta v človeškem razvoju, osebni rasti in zdravljenju.
Continue Reading »

Sorodni zapisi:

No responses yet

The Burning Water Project by Icarus Down

avg. 13 2008

Sponzorirana spletna stran: The Burning Water Project by Icarus Down

The Burning Water Project By Icarus DownStripped down to the dry humming of the strings or ampped up to an oscillation of a voltage form the analog / acoustic and the digital / electronic collide together in an Icarus Down project as two sides of a double album.

analog / acoustic side
Warmth personified and poured into acoustic versions of Icarus Down songs, spanning from the 2005 demo, 2006 EP Soundtrack of a Weekend and to the 2007 debut album Contortions, Mood Swing and The Inevitable Decay of Relationships (CPZ Records), with a few novelties, some Slovenian lyrics, variety of guests on different instruments which make this side of the double album project even more sweeter with the right kind of sugar.

digital / electronic side
All brand new, all different, yet still the same Icarus Down style songs with the electronic twist ever so lightly exposed on the 2007 debut album. With this side Icarus Down explore desired digital territories of ambient or noisy synths, broken beats, the chilling coldness and echoing intoxication wrapped into sequenced structured works.
Continue Reading »

Sorodni zapisi:

No responses yet

Zgodila se je prva slovenska PHP konferenca

jul. 09 2008

Dan D

Skoraj 10 let je od tega odkar sem napisal svojo prvo “aplikacijo” v PHP-ju. Skriptica je bila napisana v verziji 3[1]. Brala je novice iz tekstovne datoteke in jih prikazovala na spletni strani, Amerika ;)
Prav toliko let je minilo da sem jo le dočakal … Koga pa?
Prvo slovensko PHP konferenco, ki se je pripetila 5 julija 2008 v prostorih Instituta Jožef Stefan v Ljubljani. Glavni krivec za njeno splavitev je Anže Žnidaršič, vodja tima razvijalcev na PRO PLUS d.o.o. (POP TV / Kanal A). Posebna zahvala gre še podjetju Domenci, partnerju in glavnemu pokrovitelju konference.
Glavni namen konference je bil vsekakor deliti znanje[2] ter nabirati nova spoznanstva. To je bil vsekakor dober povod za udeležbo, čeprav ste mogoče že stari maček v znanju PHP-ja. Vedno je zanimivo slišati videnja ter način razmišljanja prekaljenih PHP razvojnikov.
Kljub temu, da sem bil z samo vsebino predavanj (Eclipse, Subversion, PHP frameworki, Template sistemi, Mootools, Unit in sistemsko testiranje kode, optimizacijo PHP kode …) že precej seznanjen[3], sem pridno in pozorno poslušal predavatelje :)
Zatopljen v predavanja ...
Zatopljen v predavanja …

Continue Reading »

  1. 4 je bila še v zametkih []
  2. podobno kot se jaz trudim na blogu – za narodov blagor ;) []
  3. trenutno uporabljam, jo uporabljal v preteklosti ali vsaj testiral []

Sorodni zapisi:

No responses yet

Older posts »