Miniaturka obrazków youtube
Dodany: Listopad 5th, 2011 | Kategoria: PHPMiniaturka obrazków do youtube:
1 | http://img.youtube.com/vi/VIDEO_ID/1.jpg |
Miniaturka obrazków do youtube:
1 | http://img.youtube.com/vi/VIDEO_ID/1.jpg |
Wczoraj przywitał mnie niemiły komunikat na ekranie laptopa:
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)
Ź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 »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:
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 Brak komentarzy »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 »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…
1 | [^]+ |
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 »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 »W GM jest dość ciekawy byk. Stworzyłem tablicę w której zapisuję id obiektów i założyłem, że brak obiektu oznaczę poprzez cyfrę -1. Niestety coś nie chciało działać jak powinno i skrypt który miał owe obiekty z listy niszczyć tylko gdy istnieją, usuwał totalnie inny obiekt niż powinien. Szukałem zatem kilkadziesiąt minut i… okazało się, że oba zapisy są równoważne:
1 | instance_exists(-1) == instance_exists(self) |
Poszukałem więc jeszcze trochę, i tym oto sposobem wyszło, ze każda z super zmiennych ma przypisaną ujemną wartość:
1 2 3 4 5 | self == -1; other == -2; all == -3; noone == -4; global == -5; |
Uważajcie więc tworząc gry, żeby się nie nadziać :)
Tagi: all, array, bug, global, gml, instance_exists, none, other, self, super, tablice Brak komentarzy »Ostatnio w ramach metod obliczeniowych robiłem pewne zadanko, które skojarzyło mi się z artykułem Platyny zamieszczonym na GMCLANie dotyczącym przeszukiwania binarnego i znajdywania pierwiastka danej liczby. W tym przypadku szukamy co prawda zupełnie innych pierwiastków, bo tych z równań, ale też zwiększamy dokładność wraz z każdym przejściem.
Samo zadanie:
Równanie x5 + 6x4 – 20x3 + 2x3 + 7x – 2 = 0 ma dwa pierwiastki bliskie 0.42. Wyznaczyć je Metodą Newtona oraz Metodą Siecznych.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <stdio.h> #include <math.h> // funkcja z A2 double f(double x) { return pow(x,5) + 6*pow(x,4) - 20*pow(x,3) + 2 * pow(x,2) + 7 * x - 2; } // metoda siecznych double Sieczne(double xn_1, double xn, double e, int m) { int n; double d; for (n = 1; n <= m; n++) { d = (xn - xn_1) / (f(xn) - f(xn_1)) * f(xn); if (fabs(d) < e) return xn; xn_1 = xn; xn = xn - d; } return xn; } // pochodna double p(double x) { return 5*pow(x,4)+24*pow(x,3)-60*pow(x,2)+4*x+7; } double Newton(double x, double e, double m) { double h; int n; for (n = 1; n<=m; n++) { h = - (f(x) / p(x)); if (fabs(h)<5E-11) { return x; } x = x + h; } return x; } int main(void) { /* 5E-11 to różnica poniżej której przestajemy szukać, w przeciwnym wypadku próbujemy max. 100 razy i ten wynik uznajemy za najdokładniejszy */ printf("%0.15f\n", Sieczne(0.30, 0.42, 5E-11, 100)); printf("%0.15f\n", Sieczne(0.42, 0.50, 5E-11, 100)); printf("%0.15f\n", Newton(0.30,5E-11,100)); printf("%0.15f\n", Newton(0.50,5E-11,100)); return 0; } |
Wyświetlanie widoku z innego kontrolera/folderu/ścieżki w tym obecnym.
Sprawiło mi to trochę problemu, a sprawa taka prosta…
$this->render('/index'); – wyrenderuje nazwaKontrolera/index.php
$this->render('//index'); – wyrenderuje views/index.php
$this->render('//folder/plik'); – wyrenderuje views/folder/plik.php