-
21. Data: 2012-01-04 09:39:32
Temat: Re: czemu: jeden system + różne kompilatory = problem?
Od: Szyk <s...@o...pl>
W dniu 2012-01-04 08:37, Paweł Kierski pisze:
> W dniu 2012-01-03 18:12, Szyk pisze:
>>
>>>> Czy są takie systemy operacyjne w których programy (i biblioteki
>>>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
>>>> kompatybilne?
>>>
>>> Najlepiej przyjąć, że najmniejszym wspólnym mianownikiem jest interfejs
>>> typu C. Do tego każde zwolnienie zasobów powinno nastąpić w tym module,
>>> w którym zostały zaalokowane. Wtedy ma duże szansę zagrać bez względu
>>> na kompilator.
>>
>> Czyli wzorzec fabryka obiektów się kłania?
>
> Tyle, że oprócz fabryki potrzebna jest zazwyczaj "niszczarka".
Czemu fabryka nie mogła by mieć funkcji niszczącej? Przecież tak było by
chyba najwygodniej.
Przykładowo:
class MyFactory : public QObject
{
protected:
MyFactory();
public:
static MyFactory* instance();
MyObject* createObject(QString aType, int aID);
void deleteObject(MyObject* aMyObject);
// inne funkcje pomocnicze:
void removeObject(MyObject* aMyObject); // do usuwania obiektu
// z bazy
MyObject* cloneObject(MyObject* aMyObject);
void saveObject(MyObject* aMyObject);
signals:
void objectChange(MyObject* aMyObject);
void objectRemoved(MyObject* aMyObject);
};
> Najlepiej
> opakować to po stronie klienta w sprytne uchwyty/wskaźniki (chyba, że
> cały obiekt po stronie klienta jest takim uchwytem na wewnętrzne
> zasoby).
Masz zapewne na myśli dedykowany sprytny wskaźnik, a nie std::auto_ptr?
Czyli chodzi Ci o coś w stylu:
template<class tFactory, class tObject> class MySmartPtr
{
public:
MySmartPtr(QString aType, int aID)
{
mObject = tFactory::instance()->createObject(aType, aID);
}
~MySmartPtr()
{
tFactory::instance()->deleteObject(mObject);
mObject = 0;
}
tObject* operator->()
{
return mObject;
}
protected:
tObject* mObject;
}
void FactoryClient::someFunction()
{
MySmartPtr<MyFactory, MyObject> lPtr("MyType", 100);
}
-
22. Data: 2012-01-04 09:53:55
Temat: Re: czemu: jeden system + r??ne kompilatory = problem?
Od: Adam Przybyla <a...@r...pl>
In pl.comp.programming A.L. <l...@a...com> wrote:
> On Tue, 3 Jan 2012 16:47:11 +0000 (UTC), Adam Przybyla
> <a...@r...pl> wrote:
>
>>In pl.comp.programming Szyk <s...@o...pl> wrote:
>>> Witam
>>>
>>> W systemie Windows można spotkać różne kompilatory C++. Np. Visual i
>>> GNU. Kompilują one programy w postaci exe lub dll. A zatem:
>>>
>>> Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
>>> nie są ze sobą kompatybilne?
>>>
>>> Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
>>> precyzyjny? Czy może standard plików DLL jest nie precyzyjny?
>>>
>>> Czy są takie systemy operacyjne w których programy (i biblioteki
>>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
>>> kompatybilne?
>> ... oczywiscie, pod kazdym Linuksem. Z powazaniem
>> Adam Przybyla
>
> Echem.... Ja uzywam pewnego komercjalnego oprogramwoania. Platne, 5
> cyfrowo w dolarach. Maja 5 roznych wersji binarow na rozne Linuksy. Na
> ten sam pecet
... no i co z tego, o ile tworzysz rozwiazanie otwarte mozesz
to zawsze przekompilowac;-) Z powazaniem
Adam Przybyla
-
23. Data: 2012-01-04 10:01:41
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Bartlomiej Lidke <o...@r...cy.rot13.invalid>
Stachu 'Dozzie' K. <d...@g...eat.some.screws.spammer.invalid> wrote:
> On 2012-01-04, Bartlomiej Lidke <o...@r...cy.rot13.invalid> wrote:
>> po trzecie: porozmawiaj z adobem (libssl, libcurl, itp), autorami bibble
>> (libQT*), blendera (python), googlem (libqt*), ibm-em (libssl, libxml2,
>> i wiele innych), ingresem (libxerces), libreoffice (np. libxml2) i powiedz
>> im ze sa bardzo sredniowieczni (to bo szybkim przeleceniu /opt-a)
>
> Wiesz, też mogę przytoczyć trochę softu robiącego podobny kretynizm.
> Tylko co to ma do rzeczy? To kretynizm i tyle.
ten kretynizm uratowalby mnie przed konfliktem svn vs ssh na jaki wpadlem.
jesli minusy takiego podejscia sa wg Ciebie wieksze od plusow to chetnie
sie czegos nowego dowiem
--
butthead
o 'Niesmiertelnym' (c) Pleciucha:
"Jest to jedyny film, w którym Szkot gra Egipcjanina, który jest Hiszpanem
i Francuz, który gra Szkota, który jest Nowojorczykiem..."
-
24. Data: 2012-01-04 10:08:20
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2012-01-04, Bartlomiej Lidke <o...@r...cy.rot13.invalid> wrote:
> Stachu 'Dozzie' K. <d...@g...eat.some.screws.spammer.invalid> wrote:
>> On 2012-01-04, Bartlomiej Lidke <o...@r...cy.rot13.invalid> wrote:
>>> po trzecie: porozmawiaj z adobem (libssl, libcurl, itp), autorami bibble
>>> (libQT*), blendera (python), googlem (libqt*), ibm-em (libssl, libxml2,
>>> i wiele innych), ingresem (libxerces), libreoffice (np. libxml2) i powiedz
>>> im ze sa bardzo sredniowieczni (to bo szybkim przeleceniu /opt-a)
>>
>> Wiesz, też mogę przytoczyć trochę softu robiącego podobny kretynizm.
>> Tylko co to ma do rzeczy? To kretynizm i tyle.
>
> ten kretynizm uratowalby mnie przed konfliktem svn vs ssh na jaki wpadlem.
> jesli minusy takiego podejscia sa wg Ciebie wieksze od plusow to chetnie
> sie czegos nowego dowiem
To co napotkałeś, to zwykły błąd maintainera. Albo skutek używania
nieoficjalnego repozytorium bez skoordynowanego zarządzania
przyjmowanymi pakietami. Albo skutek używania zestawu nieskoordynowanych
ze sobą nieoficjalnych repozytoriów. To się naprawia w inny sposób,
a nie ładując zależności do wnętrza pakietu.
--
Secunia non olet.
Stanislaw Klekot
-
25. Data: 2012-01-04 10:39:16
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Bartlomiej Lidke <o...@r...cy.rot13.invalid>
Stachu 'Dozzie' K. <d...@g...eat.some.screws.spammer.invalid> wrote:
>> ten kretynizm uratowalby mnie przed konfliktem svn vs ssh na jaki wpadlem.
>> jesli minusy takiego podejscia sa wg Ciebie wieksze od plusow to chetnie
>> sie czegos nowego dowiem
>
> To co napotkałeś, to zwykły błąd maintainera. Albo skutek używania
> nieoficjalnego repozytorium bez skoordynowanego zarządzania
> przyjmowanymi pakietami. Albo skutek używania zestawu nieskoordynowanych
> ze sobą nieoficjalnych repozytoriów. To się naprawia w inny sposób,
> a nie ładując zależności do wnętrza pakietu.
to byly paczki pod aix wiec nie ma tak lekko jak pod linuxem. co wiecej
zrodlo czesci pakietow jest juz od lat zamkniete, a obecnie jest kilka
roznych zrodel (z tych co znam to oss4aix, bullfreeware, ibm). i nie
zawsze paczka ktora chcesz zainstalowac jest w tym ktore uzywasz.
czyli nawet w przypadku paczek systemowych czasem fajnie jest miec
alternatywe w postaci kompletnej paczki z zawartymi w niej zaleznosciami
(a taka kompilacja svn pod aix jest ciekawa bo ma on sporo zaleznosi)
ale wracajac do innego, w szczegolnosci komercyjnego oprogramowania: napisz
cos wiecej o minusach podejscia o ktorym wspomnialem bo plusy sa takie:
- mniejsza liczba paczek
- latwiejsze testy i support (np. lotus notes client zalezy od gtk. ale jesli
w systemie byla zbyt nowa wersja to pojawial sie blad nieaktywnych przyciskow;
blad latalem wrzucajac do katalogu 'krzak' stare biblioteki gtk i ustawiajac
LD_LIBRARY_PATH. czyli gdyby dystrybuowali gtk problem bylby z glowy, a tak
to musza wspierac dzis to co tworcy dystrybucji im jutro wymysla)
- latwiejsza instalacja (poniewaz majac instalke mam komplet)
- mozliwosc rownoleglej instalacji wielu wersji rozniacych sie tylko patchem
- mozliwosc uruchomienia programu na starych bibliotekach uzytkowych
w sytuacji gdy dystrybucja juz z nich zrezygnowala (bo wszystko w dystrybucji
sie zuprgradowalo)
--
butthead
o 'Niesmiertelnym' (c) Pleciucha:
"Jest to jedyny film, w którym Szkot gra Egipcjanina, który jest Hiszpanem
i Francuz, który gra Szkota, który jest Nowojorczykiem..."
-
26. Data: 2012-01-04 10:39:48
Temat: Re: czemu: jeden system + różne kompilatory = problem?
Od: Paweł Kierski <n...@p...net>
W dniu 2012-01-04 10:39, Szyk pisze:
> W dniu 2012-01-04 08:37, Paweł Kierski pisze:
>> W dniu 2012-01-03 18:12, Szyk pisze:
>>>
>>>>> Czy są takie systemy operacyjne w których programy (i biblioteki
>>>>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
>>>>> kompatybilne?
>>>>
>>>> Najlepiej przyjąć, że najmniejszym wspólnym mianownikiem jest interfejs
>>>> typu C. Do tego każde zwolnienie zasobów powinno nastąpić w tym module,
>>>> w którym zostały zaalokowane. Wtedy ma duże szansę zagrać bez względu
>>>> na kompilator.
>>>
>>> Czyli wzorzec fabryka obiektów się kłania?
>>
>> Tyle, że oprócz fabryki potrzebna jest zazwyczaj "niszczarka".
>
> Czemu fabryka nie mogła by mieć funkcji niszczącej? Przecież tak było by
> chyba najwygodniej.
[...]
Może. Przy interfejsie w stylu C to zazwyczaj dwie funkcje, dlatego
pisałem o oddzielnych bytach.
>> Najlepiej
>> opakować to po stronie klienta w sprytne uchwyty/wskaźniki (chyba, że
>> cały obiekt po stronie klienta jest takim uchwytem na wewnętrzne
>> zasoby).
>
> Masz zapewne na myśli dedykowany sprytny wskaźnik, a nie std::auto_ptr?
[...]
Tak - tworzenie obiektu to nie koniecznie new, a usuwanie nie koniecznie
delete.
Alternatywne rozwiązanie (jeśli chodzi o zarządzanie pamięcią), to
dostarczanie bibliotece funkcji alokującej i dealokującej. Wtedy
zarządzanie pamięcią jest tylko po stronie klienta.
--
Paweł Kierski
n...@p...net
-
27. Data: 2012-01-04 11:23:32
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
W dniu 2012-01-04 11:39, Bartlomiej Lidke pisze:
> (np. lotus notes client zalezy od gtk. ale jesli
> w systemie byla zbyt nowa wersja to pojawial sie blad nieaktywnych przyciskow;
> blad latalem wrzucajac do katalogu 'krzak' stare biblioteki gtk i ustawiajac
> LD_LIBRARY_PATH. czyli gdyby dystrybuowali gtk problem bylby z glowy, a tak
> to musza wspierac dzis to co tworcy dystrybucji im jutro wymysla)
> - latwiejsza instalacja (poniewaz majac instalke mam komplet)
> - mozliwosc rownoleglej instalacji wielu wersji rozniacych sie tylko patchem
> - mozliwosc uruchomienia programu na starych bibliotekach uzytkowych
> w sytuacji gdy dystrybucja juz z nich zrezygnowala (bo wszystko w dystrybucji
> sie zuprgradowalo)
to raczej obejście problemu nie dbania przez twórców bibliotek zgodności
w dół. Program powinien sprawdzać jedynie minimalną wersję biblioteki. I
wtedy problemy tu opisane się nie pojawiają.
--
Kaczus
http://kaczus.republika.pl
-
28. Data: 2012-01-04 12:02:57
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Bartlomiej Lidke <o...@r...cy.rot13.invalid>
Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl> wrote:
> W dniu 2012-01-04 11:39, Bartlomiej Lidke pisze:
>> (np. lotus notes client zalezy od gtk. ale jesli
>> w systemie byla zbyt nowa wersja to pojawial sie blad nieaktywnych przyciskow;
>> blad latalem wrzucajac do katalogu 'krzak' stare biblioteki gtk i ustawiajac
>> LD_LIBRARY_PATH. czyli gdyby dystrybuowali gtk problem bylby z glowy, a tak
>> to musza wspierac dzis to co tworcy dystrybucji im jutro wymysla)
>> - latwiejsza instalacja (poniewaz majac instalke mam komplet)
>> - mozliwosc rownoleglej instalacji wielu wersji rozniacych sie tylko patchem
>> - mozliwosc uruchomienia programu na starych bibliotekach uzytkowych
>> w sytuacji gdy dystrybucja juz z nich zrezygnowala (bo wszystko w dystrybucji
>> sie zuprgradowalo)
>
> to raczej obejście problemu nie dbania przez twórców bibliotek zgodności
> w dół. Program powinien sprawdzać jedynie minimalną wersję biblioteki. I
> wtedy problemy tu opisane się nie pojawiają.
to jest kwestia zarowno zgodnosci jak i bledow pojawiajacych sie w tych
bibliotekach. kazdy Twoj koncowy uzytkownik moze miec inna wersje i
jego interesuje to ze mu Twoj program nie dziala i do Ciebie przychodzi
z pretensjami (support). Ty sie go pytasz o biblioteki i potem musisz
sobie taki zestaw skompletowac zeby zweryfikowac blad. powodzenia
i nie mozesz "sprawdzac minimalnej wersji" poniewaz znikasz w ten sposob
problem funkcjonalnosci "deprecated"
popatrz tez z punktu widzenia uzytkownika. chcialbym np. sprawdzic
najnowsza wersje:
http://www.kdenlive.org/user-manual/downloading-and-
installing-kdenlive
i oprocz sredniego pomyslu w postaci virtualbox-ow oraz live-cd moge
jedynie wpasc w bagno kompilacji (patrz wymagania). a ja chce tylko
odpalic program i stwierdzic czy sie do czegos nadaje czy nie. tak w 5-10 minut
--
butthead
o 'Niesmiertelnym' (c) Pleciucha:
"Jest to jedyny film, w którym Szkot gra Egipcjanina, który jest Hiszpanem
i Francuz, który gra Szkota, który jest Nowojorczykiem..."
-
29. Data: 2012-01-04 12:55:30
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
W dniu 2012-01-04 13:02, Bartlomiej Lidke pisze:
> Tomasz Kaczanowski<kaczus@dowyciecia_poczta.onet.pl> wrote:
>> W dniu 2012-01-04 11:39, Bartlomiej Lidke pisze:
>>> (np. lotus notes client zalezy od gtk. ale jesli
>>> w systemie byla zbyt nowa wersja to pojawial sie blad nieaktywnych przyciskow;
>>> blad latalem wrzucajac do katalogu 'krzak' stare biblioteki gtk i ustawiajac
>>> LD_LIBRARY_PATH. czyli gdyby dystrybuowali gtk problem bylby z glowy, a tak
>>> to musza wspierac dzis to co tworcy dystrybucji im jutro wymysla)
>>> - latwiejsza instalacja (poniewaz majac instalke mam komplet)
>>> - mozliwosc rownoleglej instalacji wielu wersji rozniacych sie tylko patchem
>>> - mozliwosc uruchomienia programu na starych bibliotekach uzytkowych
>>> w sytuacji gdy dystrybucja juz z nich zrezygnowala (bo wszystko w dystrybucji
>>> sie zuprgradowalo)
>>
>> to raczej obejście problemu nie dbania przez twórców bibliotek zgodności
>> w dół. Program powinien sprawdzać jedynie minimalną wersję biblioteki. I
>> wtedy problemy tu opisane się nie pojawiają.
>
> to jest kwestia zarowno zgodnosci jak i bledow pojawiajacych sie w tych
> bibliotekach. kazdy Twoj koncowy uzytkownik moze miec inna wersje i
> jego interesuje to ze mu Twoj program nie dziala i do Ciebie przychodzi
> z pretensjami (support). Ty sie go pytasz o biblioteki i potem musisz
> sobie taki zestaw skompletowac zeby zweryfikowac blad. powodzenia
A jednak się da. I to się sprawdza. Oczywiście trzeba ograniczać się do
bibliotek porządnych, a nie bałaganu.
> i nie mozesz "sprawdzac minimalnej wersji" poniewaz znikasz w ten sposob
> problem funkcjonalnosci "deprecated"
Co znaczy znikasz? Dla utrzymania zgodności są preferowane 2 wersje
1) metody nowe i stare różnią się nieznacznie - wtedy wrappujesz i masz
stare i nowe metody
2) zmiany są bardzo duże - tworzysz nową bibliotekę, starą przestajesz
supportować, ew sprzedajesz/oddajesz/cokolwiek kod innym
> popatrz tez z punktu widzenia uzytkownika. chcialbym np. sprawdzic
> najnowsza wersje:
> http://www.kdenlive.org/user-manual/downloading-and-
installing-kdenlive
>
> i oprocz sredniego pomyslu w postaci virtualbox-ow oraz live-cd moge
> jedynie wpasc w bagno kompilacji (patrz wymagania). a ja chce tylko
> odpalic program i stwierdzic czy sie do czegos nadaje czy nie. tak w 5-10 minut
>
Bo całość jest od początku nie przemyslana.
przykład: http://mos.aminet.net/package/misc/math/MathScript32
staroć jak widać, są podane tylko warunki brzegowe i okazuje się, że ja
mając obecnie po wielu latach inny system, biblioteki w dużo nowszych
wersjach z możliwościami na które tamtejszy sprzęt nie pozwalał. Program
rozpakowuję i po prostu uruchamiam i on działa.... Więc można. Ale to
właśnie nie na Linuksie, bo ten niewiele gwarantuje, a twórcy 3rd party
bibliotek dokładają jeszcze dodatkowo, żeby bałagan był jeden wielki.
--
Kaczus
http://kaczus.republika.pl
-
30. Data: 2012-01-04 13:55:19
Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
Od: Bartlomiej Lidke <o...@r...cy.rot13.invalid>
Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl> wrote:
> W dniu 2012-01-04 13:02, Bartlomiej Lidke pisze:
>> Tomasz Kaczanowski<kaczus@dowyciecia_poczta.onet.pl> wrote:
>>> W dniu 2012-01-04 11:39, Bartlomiej Lidke pisze:
[....]
>>> Program powinien sprawdzać jedynie minimalną wersję biblioteki. I
>>> wtedy problemy tu opisane się nie pojawiają.
>>
>> to jest kwestia zarowno zgodnosci jak i bledow pojawiajacych sie w tych
>> bibliotekach. kazdy Twoj koncowy uzytkownik moze miec inna wersje i
>> jego interesuje to ze mu Twoj program nie dziala i do Ciebie przychodzi
>> z pretensjami (support). Ty sie go pytasz o biblioteki i potem musisz
>> sobie taki zestaw skompletowac zeby zweryfikowac blad. powodzenia
>
> A jednak się da. I to się sprawdza. Oczywiście trzeba ograniczać się do
> bibliotek porządnych, a nie bałaganu.
nie rozwiaze Ci to problemu bledow w bibliotekach w innych wersjach
na srodowisku uzytkownika. a w jaki sposob stwierdzasz ze biblioteka jest
porzadna? czy np. gtk jest porzadne?
>> i nie mozesz "sprawdzac minimalnej wersji" poniewaz znikasz w ten sposob
>> problem funkcjonalnosci "deprecated"
>
> Co znaczy znikasz? Dla utrzymania zgodności są preferowane 2 wersje
> 1) metody nowe i stare różnią się nieznacznie - wtedy wrappujesz i masz
> stare i nowe metody
> 2) zmiany są bardzo duże - tworzysz nową bibliotekę, starą przestajesz
> supportować, ew sprzedajesz/oddajesz/cokolwiek kod innym
czyli narobiles sobie roboty. ktos inny wrzuci do swojego google-earth
czy czegostam innego wymagana biblioteke i wogole nie ma tego problemu
>> popatrz tez z punktu widzenia uzytkownika. chcialbym np. sprawdzic
>> najnowsza wersje:
>> http://www.kdenlive.org/user-manual/downloading-and-
installing-kdenlive
>>
>> i oprocz sredniego pomyslu w postaci virtualbox-ow oraz live-cd moge
>> jedynie wpasc w bagno kompilacji (patrz wymagania). a ja chce tylko
>> odpalic program i stwierdzic czy sie do czegos nadaje czy nie. tak w 5-10 minut
>>
>
>
> Bo całość jest od początku nie przemyslana.
acha. a jak rozwiazac ten problem fafnastu wymaganych bibliotek po stronie
uzytkownika i to jeszcze w konkretnych wersjach? inaczej niz wpakowac je
do swojego podkatalogu 'lib' i bez statycznego linkowania?
> przykład: http://mos.aminet.net/package/misc/math/MathScript32
> staroć jak widać, są podane tylko warunki brzegowe i okazuje się, że ja
> mając obecnie po wielu latach inny system, biblioteki w dużo nowszych
> wersjach z możliwościami na które tamtejszy sprzęt nie pozwalał. Program
> rozpakowuję i po prostu uruchamiam i on działa.... Więc można. Ale to
> właśnie nie na Linuksie, bo ten niewiele gwarantuje, a twórcy 3rd party
> bibliotek dokładają jeszcze dodatkowo, żeby bałagan był jeden wielki.
amigowcem nie jestem ale:
- jakich zewnetrznych rozwijajacych sie od 15 lat bibliotek ten program uzywa?
- czym sa fontengine.library oraz post.library?
czy ten program w sensie skomplikowania zaleznosci jest wogole porownaniem
do wspomnianego kdenlive? to jest tylko pierwszy poziom:
Depends: kdebase-runtime, libc6 (>= 2.1.3), libgcc1 (>= 1:4.1.1), libice6
(>= 1:1.0.0), libkdecore5 (>= 4:4.4.0), libkdeui5 (>= 4:4.3.4), libkio5
(>= 4:4.3.4), libknewstuff3-4 (>= 4:4.4.0), libknotifyconfig4 (>= 4:4.3.4),
libkrossui4 (>= 4:4.3.4), libmlt++3, libmlt3, libnepomuk4 (>= 4:4.3.4),
libqt4-dbus (>= 4:4.6), libqt4-network (>= 4:4.6), libqt4-svg (>= 4:4.6),
libqt4-xml (>= 4:4.6), libqtcore4 (>= 4:4.6.1), libqtgui4 (>= 4:4.6.2),
libsm6, libstdc++6 (>= 4.2.1), libx11-6, libxau6, libxdmcp6, libxext6,
libxft2 (>> 2.1.1), libxpm4, kdenlive-data (= 0.7.8-1.2), melt, ffmpeg
--
butthead
o 'Niesmiertelnym' (c) Pleciucha:
"Jest to jedyny film, w którym Szkot gra Egipcjanina, który jest Hiszpanem
i Francuz, który gra Szkota, który jest Nowojorczykiem..."