Miniaturka obrazków youtube

Dodany: Listopad 5th, 2011 | Kategoria: PHP

Miniaturka obrazków do youtube:

1
http://img.youtube.com/vi/VIDEO_ID/1.jpg
Tagi: , , Brak komentarzy »

Grub rescue – unknown filesystem

Dodany: Sierpień 14th, 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: , , , , , , , 1 Komentarz »

Includowanie bloku Magento bezpośrednio w templatce

Dodany: Lipiec 27th, 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: , , , , , , , Brak komentarzy »

isset – nieistniejąca tablica w stringu

Dodany: Lipiec 16th, 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: , , Brak komentarzy »

Nigdy nie scalaj, ukrywaj etykiety

Dodany: Czerwiec 13th, 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: , , , , , , , , , , , Brak komentarzy »

JavaScript: dowolny znak włącznie ze znakiem nowej linii

Dodany: Maj 12th, 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…

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: , , , Brak komentarzy »

Bug GM – liczba klatek w sprite_add dla GIFów

Dodany: Marzec 5th, 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: , , , , , , Brak komentarzy »

Instance exists – problem z ujemnymi wartościami

Dodany: Styczeń 28th, 2011 | Kategoria: Game Maker

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: , , , , , , , , , , Brak komentarzy »

Metoda siecznych, Metoda Newtona

Dodany: Styczeń 24th, 2011 | Kategoria: Inne

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;
}
Tagi: , , , , , , , , , , , , Brak komentarzy »

Yii – renderowanie widoków z dowolnego folderu

Dodany: Styczeń 22nd, 2011 | Kategoria: Yii

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

Tagi: , , , , , Brak komentarzy »