středa 21. prosince 2011

Jiné typy souborů v MediaBowseru Magenta

Našel jsem super příspěvek, jak managovat typy souborů v MediaBrowseru ve Wysiwyg editoru Magenta.
http://prattski.com/2011/01/10/magento-allow-other-file-types-in-wysiwyg-editor/
Jedná se o vytvoření modulu, který definuje konfiguraci app/code/local/Prattski/WysiwygFiles/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Prattski_WysiwygFiles>
      <version>1.0.0</version>
    </Prattski_WysiwygFiles>
  </modules>
  <adminhtml>
    <cms>
      <browser>
        <extensions>
          <allowed>
            <jpg>1</jpg>
            <jpeg>1</jpeg>
            <png>1</png>
            <gif>1</gif>
            <pdf>1</pdf>
          </allowed>
        </extensions>
      </browser>
    </cms>
  </adminhtml>
</config>

 a jeho zařazení do Magenta app/etc/modules/Prattski_WysiwygFiles.xml
 
<?xml version="1.0"?>
<config>
  <modules>
    <Prattski_WysiwygFiles>
      <active>true</active>
      <codePool>local</codePool>
    </Prattski_WysiwygFiles>
  </modules>
</config>





neděle 11. prosince 2011

Android aplikace jsou úžasné dobrodružství

Po prořízení Samsung Galaxy SII vidím vývoj Android aplikací pomocí Eclipse s ADK v úplně novém světle. Google udělal obrovský pokrok pro podporu vývoje aplikací. Počínaje dnešním dnem zde budu publikovat moje poznatky získané při programování na této platformě.

Statistika prohlížečů

Dnes mohu vyhodnotit naprosto bezvadné výsledky z GA. Za 10 dní navštívilo jednu ze zákazníkovo stránek cca 210.000 lidí. A výsledky jsou zajímavé především pro vývojáře:
1.Firefox38,24 %
2.Internet Explorer30,45 %
3.Chrome23,92 %
4.Opera5,78 %
Firefox verze
1.8.042,94 %
2.8.0.117,26 %
3.3.6.2414,04 %
4.7.0.15,40 %
5.6.0.23,21 %
6.5.02,70 %
7.4.0.11,91 %
8.6.01,75 %
9.4.01,16 %
Internet Explorer verze
1.8.061,92 %
2.9.027,31 %
3.7.09,46 %
4.6.01,29 %
Uvádím pouze hodnoty nad 1%
Zajímavé, že?
Jako bonus mám ještě rozlišení obrazovky

1.1366x76818,28 %
2.1024x76816,37 %
3.1280x80014,71 %
4.1280x102413,51 %
5.1440x9005,93 %
6.1680x10505,58 %

neděle 30. října 2011

Volvo Ocean Race Live stream

Tak letos konečně bude všechno vidět online. Na http://new.livestream.com/volvooceanrace bude letos možno vidět všechny in-port race, starty etap a live satelitní přenosy z palub lodí a všechno i v HD. Už se moc těším - včera testovací in-port race v Alicante a v sobotu 5.11.2011 to začíná naplno.

čtvrtek 6. října 2011

Magento XML feed pro agregátory

Přišel jsem na nejrychlejší způsob generování feedu. Mám v magentu 29000 aktivních produktů z toho cca 10000 viditelných na frontendu = exportovaných do feedu.
Použití v Nostress modulu je nepoužitelné - na samostatném serveru, kde běží jen shop (úplně nový server) to trvá cca 6h
Vytvoření skriptu, který používá objekty modelu Catalog/Product ve spojení s direct načítáním atributů z eav tabulek bylo jen o malinko rychlejší
Našel jsem způsob jak to lítá jako vítr
1) je třeba nastavit u atributů jako EAN, orig. kód výrobce - pokud se liší od SKU, a dalších které chceme do feedu poslat hodnotu zobrazit v seznamu na Ano
2) poté se musí přegenerovat Flat catalog produtků v Index managementu
3) ceny jsou třeba před zápisem porovnat a zapsat tu správnou -> nicméně jsou v nich aplikovány Catalog price rules
4) pak jen přidám skript do cronu
Úryvky skriptu přikládám, je třeba si je upravit dle konkrétních požadavků. Za chyby neručím, ještě to mám ve fázi ověřování - možná z toho udělám časem modul.

$r = Mage::getSingleton('core/resource')->getConnection('core_read');
$res = $r->fetchAll("SELECT p . * , r.price AS reg_price, r.final_price, r.min_price
FROM catalog_product_flat_2 p
LEFT OUTER JOIN catalog_product_index_price r ON ( p.entity_id = r.entity_id
AND customer_group_id =0 )
WHERE p.visibility
IN ( 2, 4 )");

foreach ($res as $row) {
.....
.....
//načtu si popis (attribute_id dle konkrétní instalace)
"SELECT value FROM catalog_product_entity_text where attribute_id = 57 AND entity_id = ".$row["entity_id"]
//tady si načítám kategorie - beru pouze jednu - z jednoho stromu
$cat = $r->fetchAll("SELECT cf.*
FROM catalog_category_product_index cp
LEFT OUTER JOIN catalog_category_entity cf ON ( cf.entity_id = cp.category_id )
WHERE cp.is_parent =1
and cf.entity_id is not null
and cf.path LIKE CONCAT( '1/3/3877/%/', cp.category_id)
AND cp.product_id = ".$row["entity_id"]." LIMIT 1");
$category = array();
if (sizeOf($cat)>0) {
    $categories = array_slice(explode('/',$cat[0]["path"]),3);
    $categories = $r->fetchAll("SELECT * FROM catalog_category_entity_varchar WHERE store_id = 0 and attribute_id=31 and entity_id in (".implode(',',$categories).")");
    foreach ($categories as $c) $category[]=$c['value']; 
}
.....
// takhle to vyplivnu do XML
$xml .= "  <CATEGORYTEXT>".implode(' | ',$category)."</CATEGORYTEXT>\n";

úterý 15. února 2011

qmail repair queue

Dneska jsem řešil problém s nabořeným qmailem (na dev serveru), nešla odesílat pošta, fronta byla zaseklá. Nic nepomáhalo, tak jsem vygooglil utilitku queue-repair. Je naprosto super, vytvoří i opraví obsah /var/qmail/queue adresáře.
#/etc/init.d/qmail stop
#./queue_repair.py -crn -s 23
#/etc/init.d/qmail start
No a pošta běhá jako dříve
#tail -f /var/log/qmail/current
#/var/qmail/bin/qmail-qstat
#mail -s "Hello world" mbox@domain.tld
telo zpravy
.

neděle 6. února 2011

Magento - optimalizace rychlosti

Na našem novém serveru jsem se rozhodl zrychlit e-shopy klientů. Strávil jsem tedy několik dní googlováním, testováním a kompilací různých cache systémů pro php. Zkoušel jsem XCache, APC, Memcached, Zend Optimizer a eAccelerator. Memcached jsem zavrhl pro nestabilitu při použití s Magentem (občas to žuchlo) ačkoli jí používám pro jiné ZF aplikace bez problémů. Na eAccelerator jsem našel na netu spoustu negativních reakcí. XCache byla ok, ale po 2dnech provozu se mi kousla (nevím proč). Zend Optimizer ok, ale málo výkonný a tak zbylo APC.
Pro backend cache jsem v magnetu nastavil v /app/etc/local.xml
<config>
    <global>
.....
    <cache>
        <backend>apc</backend>
        <prefix>mujprefix_</prefix>
    </cache>

.....
mujprefix_ měním pro každý magento shop, jinak by se mi data jednotlivých shopů míchala (než jsem na to přišel, stálo mě to dost trápení >:-)))
Druhá akce byla vytvoření  tmpfs adresáře pro ukládání sesions apod.
Do fstab jsem si doplnil  
tmpfs /var/vhosttmp tmpfs size=500M,mode=0777 0 0 
a poté adresář namountoval, v něm jsem potom vytvořil samostatný adresář pro každý shop a na tento potom link z root adresáře prezentace místo fyzického var. Sessions se tedy handlujou v paměti místo na disku.
Nárůst výkonu je opravdu fantastický homepage se z původních průměrných 964ms generuje za 325ms. Na dalších stránkách je to podobné, nebo ještě lepší.
Konečně jsem s Magentem spokojen, s takovýmhle nastavením je to bezkonkurenční shop. Právě se chystám rozjet v něm aukční prodej >:-))....