Dodany: 11 stycznia, 2013 | Kategoria: JavaScript
Musiałem poprawić pewien skrypt, a ponieważ część elementów była tworzona dynamicznie i wtedy musiałem do nich podpiąć event, najprościej było użyć .live() z jQuery – niestety od wersji 1.7+ .live() ma status deprecated. Tak samo jak .delegate(), które działało podobnie. Zaleca się używanie .on(), które działa podobnie do .bind().
Niestety i tutaj miałem problemy… użycie .on() na konkretnych elementach przypinało event tylko jeśli istniały one w momencie wykonania, a już nie dodawało i nie obserwowało powstawania nowych takich elementów. Po chwili googlania po sieci, znalazłem rozwiązanie – element dla którego trzeba wykonać .on(), to document, natomiast jako drugi parametr podaje się którego elementu .on() ma dotyczyć:
//wersja z live - deprecated
$('.class a').live(function(){ /* xxx */ });
//poprawnie
$(document).on('click', '.class a', function(){ /* xxx */ });
I teraz dodane dynamicznie elementy będą event click wykonywać.
Tagi: bind, delegate, deprecated, jquery, live, on 1 Komentarz »
Dodany: 9 października, 2012 | Kategoria: Magento, PHP
Potrzebowałem znaleźć, gdzie jest ograniczana kolekcja produktów w widoku kategorii, przez co zamiast X produktów wyświetla się np. 9.
1 2
| class Mage_Catalog_Block_Product_List {
... |
162 163
| // set collection to toolbar and apply sort
$toolbar->setCollection($collection); |
Tagi: apply, category, filter, magento, page, pagination, toolbar Brak komentarzy »
Dodany: 26 września, 2012 | Kategoria: Apache
Trochę sie nad tym męczyłem, bo nie działało mi
AddType text/x-component .htc
w .htaccess
Tymczasem okazało się, że w Apache 2.x używa się
AddHandler text/x-component .htc
A wszędzie proponują to pierwsze…
Tagi: addhandler, addtype, apache, htaccess Brak komentarzy »
Dodany: 5 listopada, 2011 | Kategoria: PHP
Miniaturka obrazków do youtube:
http://img.youtube.com/vi/VIDEO_ID/1.jpg
Tagi: php, thumbnail, youtube Brak komentarzy »
Dodany: 14 sierpnia, 2011 | Kategoria: Ubuntu
Wczoraj przywitał mnie niemiły komunikat na ekranie laptopa:
GRUB error: unknown filesystem
grub> rescue
Trochę się zdenerwowałem, bo pal licho już Ubuntu, mogę zainstalować nowe, ale Windowsa wcale nie chciało mi się stawiać na nowo. Wyjściem z sytuacji byłoby zapuszczenie płyty z Windowsem i uruchomienie fixmbr, ale postanowiłem poszukać, czy samego gruba nie da się jakoś inaczej przywrócić do działania tak aby nie tracić żadnego z systemów. Po godzinie szukania znalazłem w końcu na polskim forum Ubuntu odnośnik do pewnego blogu, a tam pełne rozwiązanie wymagające płyty Ubuntu Live oraz 2 minut na przepisanie tekstu do terminala. Przekopiuję rozwiązanie tutaj, bo może jeszcze będę go kiedyś potrzebował. OFC ext4 i sda9 należy podmienić na własne wartości (partycję z ubuntu (sdaX) i jej typ (ext3/4) znajdziemy za pomocą sudo fdisk -l)
sudo mkdir /mnt/temp
sudo mount -t ext4 /dev/sda9 /mnt/temp
sudo mount -o bind /dev /mnt/temp/dev
sudo mount proc /mnt/temp/proc -t proc
sudo mount sysfs /mnt/temp/sys -t sysfs
sudo chroot /mnt/temp
sudo grub-install /dev/sda
sudo update-grub2
Źródło: http://tweetless.wordpress.com/2009/12/05/przywracanie-gruba-2-na-ubuntu-9-10/
Tagi: bash, error, filesystem, grub, grub2, rescue, ubuntu, unknown 1 Komentarz »
Dodany: 27 lipca, 2011 | Kategoria: Magento, PHP
Gdy wstawimy blok do pliku layoutu, będzie on wczytany przy generowaniu strony (nawet jeśli go nie wyświetlamy w templatce) i sprawdza cache. Dzisiaj miałem taki problem, ze aby nie nadpisywać całego magento i wyswietlania kategorii, najprościej było po prostu ustawić pewien parametr w templatce a potem ten drugi blok miał go odczytywać aby utworzyć klucz dla cache. Tu pojawił się problem, bowiem aby skorzystac z getChildHtml() musiałem ustawić blok w layoucie, co powodowało, ze generował się klucz do cache z parametru, którego jeszcze nie było i sypało błędem.
Poszukałem rozwiazania w googlach i było prawie dobre – niestety okazało się, że metoda setData wcale nie ustawi zmiennej $this->_template, a $this->_data[’template’] dla bloku, przez co output HTMLowy się nie wykonywał ($this->getTemplate() zwracało NULL).
Zatem prawidłowe rozwiązanie to:
echo $this->getLayout()
->createBlock('Name_Module_Block_Type', 'name')
->setTemplate('name/module/type.phtml')
->toHtml();
Tagi: block, createBlock, include, layout, magento, module, setTemplate, toHtml Brak komentarzy »
Dodany: 16 lipca, 2011 | Kategoria: PHP
Ostatnio przy okazji szukania pewnego błędu w kodzie byłego pracownika w pracy natknęliśmy się na ciekawą rzecz. Mianowicie w pewnej pętli foreach definiowana była zmienna tekstowa, a kawałek dalej sprawdzane było czy jest zdefiniowany w tej zmiennej pewien klucz tablicy – jeśli nie, przeskakujemy do kolejnej iteracji. W pierwszej chwili oczywistym wydało się, że skoro zmienna jest stringiem, a sprawdzamy czy istnieje klucz tablicy, to isset zwróci false i tak naprawdę pętla zawsze skacze do kolejnej iteracji.
Otóż nie. Ponieważ string jest tablicą zawierającą kolejne znaki tekstu, okazało się, że użycie klucza nieliczbowego rzutowane jest na 0, zatem funkcja isset nie sprawdza, czy istnieje klucz, ale czy istnieje pierwszy znak w owym stringu. Zatem:
1 2 3 4 5 6 7 8
| $var = 'foobar';
var_dump( $var );
var_dump( isset($var) );
var_dump( $var['test'] );
var_dump( isset($var['test']) );
var_dump( isset($var[0]['test']) );
var_dump( empty($var['test']) ); |
drukuje
1 2 3 4 5 6
| string(6) "foobar"
bool(true)
string(1) "f"
bool(true)
bool(false)
bool(false) |
Ach to typowanie dynamiczne w PHP :)
Tagi: array_key_exists, in_array, isset 1 Komentarz »
Dodany: 13 czerwca, 2011 | Kategoria: Inne
Otwieramy rejestr i dochodzimy do klucza
1
| HKEY_CURRENT_USER\ControlPanel\Desktop\WindowMetrics |
Następnie dodajemy nową wartość ciągu MinWidth o wartości 54 dla dużego paska, 40 dla małego.
Tagi: combine, etykiety, hide, labels, never, nie, nigdy, scalaj, ukrywaj, win7, windows, windows7 Brak komentarzy »
Dodany: 12 maja, 2011 | Kategoria: JavaScript
Szukałem tego dość długo, bo potrzebowałem zmieniać BBCode tabelek nawet, gdy tag otwierający i zamykający są w różnych liniach. W końcu trafiłem na rozwiązanie, jak dobrać taki ciąg…
Równie krótkie co (.*?), a łapie znacznie więcej ;) Teraz mogę bez problemu zaczynać [/table] kilkanaście linijek niżej, niż otworzyłem. Uf.
via http://siphon9.net/loune/2011/02/match-any-character-including-new-line-in-javascript-regexp/
Tagi: javascript, match, newline, regexp Brak komentarzy »
Dodany: 5 marca, 2011 | Kategoria: Game Maker
Dzisiaj znalazłem buga w GM 8.0.
http://bugs.yoyogames.com/view.php?id=596
Chodzi o to, iż drugi parametr funkcji sprite_add, to liczba klatek w obrazku. Pozwala to na wczytywanie tzw. stripów – kolejno ułożonych obok siebie poziomo grafik w postaci jednego obrazka, jako kolejnych klatek sprite’a w GM. Wszystko działa dobrze do czasu, gdy wczytujemy GIFa. Jak czytamy w helpie, dla animowanych gifów, GM bierze jako parametr imgnum liczbę klatek GIFa. Okazuje się jednak, że nie tylko dla animowanych, ale ogólnie dla gifów – zatem GIF nieanimowany ma zawsze jedną klatkę, nie ważne ile byśmy podali w funkcji sprite_add.
Wniosek – gifów nie można używać jako stripów w trakcie działania gry. JPG, PNG, lub animowany gif.
Tagi: bug, game, gif, jpg, maker, png, sprite_add Brak komentarzy »