pronto.ee

Tomorrow will be cancelled due to lack of interest

Magento: SUPEE-10752 v1 breaks Zend_Filter_PregReplace

There’s a chance that after installing SUPEE-10752v1 you might run into following error message:

Warning: substr() expects parameter 1 to be string, array given in /magento_root/app/code/core/Zend/Filter/PregReplace.php on line 173


This file was introduced as a part of SUPEE-10752v1 patch and it adds some deprecation modifier checks:

    /**
     * Perform regexp replacement as filter
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if ($this->_matchPattern == null) {
            #require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
        }
        $firstDilimeter = substr($this->_matchPattern, 0, 1);
        $partsOfRegex = explode($firstDilimeter, $this->_matchPattern);
        $modifiers = array_pop($partsOfRegex);
        if ($modifiers != str_replace('e', '', $modifiers)) {
            throw new Zend_Filter_Exception(get_class($this) . ' uses deprecated modifier "/e".');
        }

        return preg_replace($this->_matchPattern, $this->_replacement, $value);
    }

It’s an override of lib/Zend/Filter/PregReplace.php and the original looks like this:

    /**
     * Perform regexp replacement as filter
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if ($this->_matchPattern == null) {
            #require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
        }

        return preg_replace($this->_matchPattern, $this->_replacement, $value);
    }

As you can see, original method is indeed able to handle arrays while override is not. Objects such as lib/Zend/Filter/Word/CamelCaseToSeparator.php and lib/Zend/Filter/Word/SeparatorToCamelCase.php indeed use arrays for match patterns:

    public function filter($value)
    {
        if (self::isUnicodeSupportEnabled()) {
            parent::setMatchPattern(array('#(?<=(?:\p{Lu}))(\p{Lu}\p{Ll})#','#(?<=(?:\p{Ll}|\p{Nd}))(\p{Lu})#'));
            parent::setReplacement(array($this->_separator . '\1', $this->_separator . '\1'));
        } else {
            parent::setMatchPattern(array('#(?<=(?:[A-Z]))([A-Z]+)([A-Z][A-z])#', '#(?<=(?:[a-z0-9]))([A-Z])#'));
            parent::setReplacement(array('\1' . $this->_separator . '\2', $this->_separator . '\1'));
        }

        return parent::filter($value);
    }

While Magento itself does not use the things above some of the third party extension do, such as Ebizmarts_SagePaySuite (Zend_Filter_Word_CamelCaseToUnderscore extends Zend_Filter_Word_CamelCaseToSeparator), do. Here a sample code from app/code/local/Ebizmarts/SagePaySuite/Helper/Data.php:

    public function cameltounder($str)
    {
        $a = new Zend_Filter_Word_CamelCaseToUnderscore;

        return strtolower($a->filter($str));
    }

Solution:

Easiest way to solve this issue is to copy the file mentioned above (app/code/core/Zend/Filter/PregReplace.php) to app/code/local/Zend/Filter/PregReplace.php and replace the filter method with following:

    /**
     * Perform regexp replacement as filter
     *
     * @param string $value
     * @return string
     */
    public function filter($value)
    {
        if ($this->_matchPattern == null) {
            #require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
        }
        $patterns = array();
        if (is_array($this->_matchPattern)) {
            $patterns = $this->_matchPattern;
        } else {
            $patterns[] = $this->_matchPattern;
        }
        foreach($patterns as $pattern) {
            $firstDilimeter = substr($pattern, 0, 1);
            $partsOfRegex = explode($firstDilimeter, $pattern);
            $modifiers = array_pop($partsOfRegex);
            if ($modifiers != str_replace('e', '', $modifiers)) {
                throw new Zend_Filter_Exception(get_class($this) . ' uses deprecated modifier "/e".');
            }
        }
        return preg_replace($this->_matchPattern, $this->_replacement, $value);
}

I guess eventually there will be SUPEE-10752v2 which hopefully fixes this problem. Make sure to check/remove the local override when you install it.

PS. Everything above applies to Magento OS v1.9.3.9 as well.

iPhone tulevik

Igasugune ennustamine on üsnagi tänamatu tegevus. Ometigi on sellega vaja tegeleda, sest plaane on vaja teha; kas siis investorina, tarbijana või niisama huvilisena, vahel kõigi kolmena korraga. Paraku on ennustamine NII tänamatu tegevus, et targemad inimesed kardavad seda nagu Vanatühi välku ja sestap on internet täis prognoose, mis on kas siis täiesti valed või parimal juhul suurelt osalt ebatäpsed. Järgnev on siis minu panus enese lolliks tegemisse.

Sissejuhatavalt niipalju, et minu investeerimisportfellis on tõepoolest õunafirma osakuid ning mul on majapidamises kokku kolm iPhonet, kolm MacBooki, iPad ja Apple TV. Ning ma olen nende seadmetega rahul. Seega olen ma asjaga seotud nii investori, tarbija kui vähemalt enda arvates ka huvilisena.

Kuid nüüd asja juurde.

iPhone X on juubelimudel

Üks asi mis mind hämmastab on see, et inimestele ei mahu üks asi kuidagi pähe: iPhone X nagu nimigi ütleb, on juubelimudel. Seda pakuti kui kallimat ja rammusamat iPhone 8 alternatiivi inimestele, kelle jaoks raha ei ole probleem. Nagu näha kajastus see Apple äsja ilmunud finantsaruandes, kus suuresti tänu iPhone X-le roobitseti kokku taaskord rekordiline kasum. See tähendab muuhulgas ka seda, et uut iPhone X mudelit ei tule. Sest kui kaua sa seda va aasta otsa tohletanud juubelitorti ikka näsid.

Järgmine mudel ei pruugi enam iPhone nime kanda

Eelmine iPhone mudel oli 7, praegune 8. Traditsiooniliselt on uus number kasutusele võetud igal teisel aastal ning vahepealne mudel on olnud n.ö. S seeria: 4, 4S, 5, 5S, 6 ja 6S. Nagu näha jäi 7S vahele, mis on mõnevõrra üllatav, sest vahe eelmise ja praeguse mudeli vahel pole funktsionaalsuse seisukohalt eriti suur. Enamgi veel, X iPhone X-nimes ei ole mitte “iks” vaid “10”, mis külvab veelgi numeratsiooniloogikasse segadust. See kõik paistab viitavat sellele, et Apple kavatseb loobuda iPhone brändi kasutamisest, mis ei olekski väga üllatav, arvades kaotatud kohtuvaidlusi kaubamärgi üle Hiinas ja seda, et “Apple Watch” ja “Apple Pay” on juba kasutuses. Sestap võib oletada, et kas järgmine või ülejärgmine iPhone kannab juba nime Apple Phone.

Muide kui Apple kavatseb uue nime kasutusele võtta mitte see aasta, vaid järgmine, siis seda on võimalik tuvastada sellega kui nad nimetavad 2018 aasta mudeli iPhone 9-ks. Samas, see aasta on tõenäolisem kui järgmine, sest uue mudeli puhul ei piisa lihtsalt seadme ümber nimetamisest, vaja on uut ja huvitavat funktsionaalsust, uut välimust ja võib-olla veel midagi. Face ID sobiks sellesse patta suurepäraselt. Aga eks näis.

Face ID on liitreaalsuse prillide “killer application”

Selleks, et uus tehnoloogia läbi lööks on vaja midagi, mis muudaks selle tarbijate jaoks ihaldatavaks. PlayStation 3 jaoks oli see Blu-Ray mängija, Nintendo Switchi jaoks oli see “The Legend of Zelda: Breath of the Wild” mäng, jne. Enamasti on selleks mingi tarkvaralahendus, kuid see võib põhimõtteliselt olla ka riistvararakendus. Liitreaalsuse suureks probleemiks on olnud see, et tegemist on rohkem olnud leludega, millegagi, mis ei anna erilist lisaväärtust.

Face ID suure tõenäosusega muudab seda. Tegemist ei ole pelgalt biomeetrilise turvaelemendi või animeeritud emotikonidega, kaugel sellest. Kujutage ette, et te inimesega kohtudes teate ilma spetsiaalselt järgi vaatamata kõike temaga seotud: millal temaga viimati kohtusite, millega ta viimasel ajal sotsiaalmeedias silma on paistnud, mida te olete seoses temaga kokku leppinud, temaga seotud märkmeid ja palju muud. Ning seda täiesti automaatselt. Loomulikult töötab see kõik ka teistpidi, kuid kas te olete valmis selleks, et su vestluspartner teab sinust kõike ja sina temast väga vähe? Seega, killer application.

Ning ärge apelleerige privaatsusele ja sellega seotud seadusandlusele. See lakkas eksisteerimast sel hetkel kui te esimese sotsiaalmeedia konto tegite. Privaatsus on nagu hobune, see võib sind viia edasi või tagasi; kõik sõltub sellest kumba pidi setukas aiste vahele aeti.

Kuigi see aasta ilmselt Apple prille veel oodata ei ole, on täiesti võimalik, et WWDC ’18 raames kuulutatakse välja selle tarkvaraplatvorm rakenduste loojatele.

.exe arhiiv avatud

Agarad töömesilased on viimane nädal aega vilkalt õielt õiele lennanud ja oma töö viljad kokku kogunud veebisaiti nime punktexe.ee. Tegemist on paarikümne aasta taguse projektiga, kus ma sain oma esimesed trükiristsed ajakirjaniku/autorina ja mille legendaarsusega on võrreldav vaid meie tolleaegne naivism ja tahtmine teha midagi tõeliselt ägedat. Tuligi äge, aga tollal oli ajakirja väljaandmine kallis ning vaatamata sellele, et suur osa tööst tehti vabatahtlike kaasautorite poolt jäi asi katki siis kui ajakirja seniajani rahastanud Microlink kukrurauad klõpsuga kinni lõi.

Aga minge vaadake ise, võrrelge ja otsustage kuidas tolleaegne IT maailm erines tänasest. Mina ja Martin Kauber oleme oma töö teinud ja saidi püsti upitanud, nüüd on teie kord tõrvik üle võtta, minna ja lugeda.

Magento CE 1.9.0.1

Vaid kaks päeva pärast eelmise versiooni tulekut sai Magento täiendust ning värskeimaks numbriks tõusis 1.9.0.1. Uuendus parandab kaks väikest kuid väga olulist viga: esiteks ei saa klient enam ostukorvis kasutada mitte aktiivset kupongi ja teiseks väike parandus uuest responive kestas, mis pisemate ekraanide peal ei töötanud päris nii nagu oli plaanitud.

Magento CE 1.9.0

Magento

Magento

Seoses Las Vegases toimuva Imagin konverentsiga lasi Magento välja uue versiooni oma populaarsest e-poe platvormist mille tasuta variant kannab nüüd numbrit 1.9.0. Erinevalt kahest eelmisest versioonist (1.8.0 ja 1.8.1) sisaldas see päris mitut olulist muudatust. Vaatame, mida see uuendus endaga kaasa tõi.

PHP 5.4 tugi

Magento eelmine versioon tuli välja eelmise aasta detsembris. Selle aasta jaanuaris ilmus nendele lehele funktsionaalsuspaik, mis lubas lisada versioonidele alates 1.6.0 PHP 5.4 toe. Spetsialistide hinnangul sisaldab PHP 5.4 täiendusi, mis võivad kuni 28% kiirendada Magento kliendiliidest. Magento CE 1.9.0-le on see uuendus juba sisse ehitatud ning ainuüksi see täiendus võib olla argumendiks, miks korraline uuendustee ette võtta.

Piiriülene kaubandus

Täiendatud funktsionaalsus lihtsustab hindade ja maksude arvutamist piiriülese kabanduse puhul. Tegemist on täiendusega, mida päris mitmed e-poodnikud on nõudnud: võimalus jätta lõpphind kogu Euroopa Liidu sees samaks, kuigi erinevates riikides võivad olla maksumäärad erinevad.

PayPal

Ohtralt on lisandunud PayPaliga seotud uut funktsionaalsust, näiteks toetab Magento nüüd  funkctiooni nimega “Bill Me Later”, ehk maksa hiljem.

Sellega siiski uue funktsionaalsuse nimekiri ei lõppe ning lisaks kaasneb täiendusega hulgaliselt veaparandusi. Täpsemalt saab kõikidest uuendustest lugeda siit.

Mac ja Linux sõbralikult, näe, ulatavad Internet Explorerile käe

Internet Explorer 10

Internet Explorer 10

Suur osa (võimalik, et isegi üle poole) veebiarendusest toimub kas Mac OS X-i või mõne Linuxi distributsiooni rüpes. Ma ei hakka siinkohas seletama miks see nii on, aga kui see postitus tundub relevante, siis ei vajagi see vast täiendavaid kommentaare. Siiski kaasneb sellega üks suure mure — märkimisväärne osa Internetis kasutajatest pruugib endiselt (millegipärast) Internet Explorerit, mis paraku aga neis kahes operatsioonisüsteemis ei toimi. Samas on IE-l läbi aegade olnud tõsiseid probleeme ülejäänud veebibrauseritega ühte sammu astumisega, mis tekitab veebiarendajale vajaduse teha täiendavaid teste. Ehk teisisõnu: mida sina testid kui testi ei ole.

Õnneks pole asi siiski lootusetu ning appi tõttab vana hea virtualiseerimine, kuid paraku on virtualiseerimisel üks võrdlemise ebameeldib kõrvalnähtus — selleks, et jooksutada Internet Explorerit, peab virtuaalmasinas jooksutama Windowsi, mille litsents maksab aga raha. Selleks, et proovida vaid seda, kas veebileht paistab kasutajale normaalne, kaugelt liiga palju raha. Õnneks pole see dilemma (testida või mitte testida) jäänud märkamatuks ka Microsoftile ja nõnda ongi Redmond käivitanud projekti nimega modern.IE.

modern.IE kujutab ette ennast valitud sortimenti virtuaalmasinate tõmmiseid, kuhu on paigaldatud viimase piirini nuditud Windows, mis on mõeldud vaid Internet Exploreri käivitamiseks ning see tõmmis on arendajate jaoks tasuta.

modern.IE koduleht asub siin: www.modern.ie

Praegusel hetkel on tõmmised tehtud valmis kolme virtualiseerija jaoks: tasuta VirtualBoxi ning tasuliste Parallelsi ja VMWare jaoks. Tõmmised leiab kõigi olulisemate Internet Exploreri versioonide ja Windowsite jaoks. Hetkel on sortiment järgnev:

  1. Windows XP – IE6
  2. Windows XP – IE8
  3. Windows Vista – IE7
  4. Windows 7 – IE8
  5. Windows 7 – IE9
  6. Windows 7 – IE10
  7. Windows 7 – IE11 Preview
  8. Windows 8 – IE10
  9. Windows 8.1 – IE11 Preview

Tähelepanuks ka niipalju, et suur osa tõmmistest on allalaadimise hõlbustamiseks jagatud mitmesse faili. Esimene fail on tavaliselt .sfx laiendiga ja kui sellele anda käivitumisõigused (chmod u+x fail.sfx), siis on ta võimeline kogu asja lahti pakkima eeldusel, et kõik failid on samas kataloogis ja loetavad. Seejärel tuleb tegutseda nii nagu tõmmistega ikka tegutsetakse, näiteks VirtualBoxi puhul tuleb lahtipakkimisel tekkinud fail importida. Tähelepanuks veel niipalju, et alates Windows 7-st tuleks virtuaalmasinale eraldada mälu vähemalt 1024MB-i.

Head testimist.

WordPress v3.0.3

Wordpress

Kes arvas, et pääseb enne loetud päevade jooksul saabuvat suuremat versioonimuutust (v3.1) oma WordPressi installatsiooni uuendamisest, see arvaku uuesti. Vaid paar päeva pärast viimase (v3.0.2) veaparanduse ilmumist tõstis pead veel üks turvakonarus, mis seekord lubab mittelokaalsetel pahatahtlikel kasutajatel soovi korral teha asju, milleks neil õigusi ei ole.

Uusima versiooni leiab WordPressi koduleheküljelt ning soovi korral on seda võimalik alla laadida ka administreerimisliidese automaatse paigaldaja abil.

WordPress v3.0.2

Wordpress

Meeldetuletuseks niipalju, et järgmise suurema versiooniuuenduseni (v3.1) on jäänud vaid paar nädalat, on WordPressi tiim väljastanud parandusversiooni v3.0.2. Eelkõige on see uuendus vajalik nendele, kes kasutavad oma keskkonnas rohkem kui ühte sisuautorit ning mitte kõik neist pole samade õigustega. Selgub, et väiksemate õigustega kasutajal on võimalik WordPressi vigu kasutades endale suuremaid õiguseid kaaperdada ja potentsiaalselt sellega kurja teha.

Pages:123