Windows CE vs Embedded Linux [zamknięty]

Teraz jestem pewien, że wszyscy jesteśmy świadomi względnych zalet pulpitu Linux vs Windows. O świecie embedded development słyszałem jednak znacznie mniej. Interesują mnie głównie rozwiązania dla przemysłu i dlatego nie interesują mnie IPhone czy Android i bardziej interesują mnie te dwa osy.

Jakie są względne kompromisy między dwiema platformami w świecie wbudowanym? Jeśli rozważasz zbudowanie pudełka dla konkretnego projektu z niestandardowym sprzętem, częściowo spersonalizowany system operacyjny i niestandardowa aplikacja, którą wybrać i dlaczego?

Zakładam, że Windows CE wygrywa na narzędziach, a Linux wygrywa zarówno pod względem kosztów, jak i ewentualnie wydajności. Jednak to tylko spekulacje. Czy ktoś ma jakieś fakty lub doświadczenia z tych dwóch?

Author: ctacke, 2008-11-28

8 answers

Pracowałem przez kilka lat w firmie, która dostarczała zarówno CE, jak i Linux dla całego ich sprzętu, więc jestem dość zaznajomiony z obiema stronami tego równania.

  • Narzędzia: Narzędzia Windows CE z pewnością są lepsze niż te dostarczane przez Linuksa, chociaż narzędzia linuksowe są z pewnością coraz lepsze.
  • Wydajność: Windows CE jest w czasie rzeczywistym. Linux nie jest. Jądro Linuksa w ogóle nie jest przeznaczone do determinizmu. Istnieją rozszerzenia, które można dodać, aby uzyskać tak jakby w czasie rzeczywistym, ale CE to przebija.
  • koszt: jest to obszar Wielkiego nieporozumienia. Moje ogólne doświadczenie jest takie, że CE jest niższy koszt po wyjęciu z pudełka ($1k dla Platform Builder i tak niskie, jak $3 na urządzenie dla środowiska wysyłkowego. "Co?"pytasz? "Linux jest darmowy."Cóż, nie za bardzo, szczególnie na wbudowanej arenie. Tak, istnieją wolne dystrybucje takie jak Debian. Ale jest mnóstwo kawałków, których możesz potrzebować, a których nie ma w tej darmowej kategorii. Frameworki UI jak QT, Java runtimes i media codecs tylko na początek. Ponadto większość dystrybucji Linuksa z komercyjnie wspieranym systemem wsparcia (np. MontaVista) jest daleka od wolności.
  • dostępność źródeł: zwolennicy Linuksa mogą powiedzieć, że CE jest złym wyborem ze względu na brak kodu źródłowego. Wszystko, co mogę powiedzieć, to to, że w ciągu ponad dekady pracy z CE, z których połowa spędzała na pracy z niestandardowym jądrem i sterownikami dla niestandardowych płyt, potrzebowałem tylko źródła, które nie dostarczało się z CE (wysyłają zdecydowana większość) raz. Ja też lubię mieć source, ale Microsoft zapewnia wsparcie, więc w rzadkich przypadkach możesz pomyśleć, że potrzebujesz tego źródła, możesz zmusić ich do rozwiązania problemu (kiedyś potrzebowaliśmy source, Microsoft dostarczył poprawkę i za darmo - co jest ich modelem pod CE.

Czy to oznacza, że CE wygrywa za każdym razem? Nie. Nie sugerowałbym tego. Jeśli jesteś Linux shop i masz dużo doświadczenia w Linuksie i zasobów kodu, byłoby głupie, aby zabraknąć i przejść CE. Jednak, jeśli idziesz do niego od podstaw CE zwykle ma niższy TCO. Programiści z doświadczeniem w Win32 / C# są bardziej rozpowszechnieni, a co za tym idzie tańsi. Otrzymujesz również o wiele więcej "w pudełku" z CE niż większość innych dystrybucji, co oznacza szybszy czas wprowadzenia na rynek, jeśli nie masz jeszcze tych rzeczy zrobionych we własnym zakresie.

 46
Author: ctacke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 20:00:26

Będę mówił po stronie Linuksa, przynajmniej dla kategorii oprogramowania, które znam (czyli sprzętu do gromadzenia danych RF). Lub aplikacje przemysłowe a aplikacje konsumenckie.

Windows CE (i powiązane z nim narzędzia) jest silnie tendencyjny w tworzeniu "Windows Experience" na małym ekranie. Tryb wprowadzania przez użytkownika podkreśla działania podobne do myszy. Loginy, wybór aplikacji itp. wszystkie starają się być jak najbardziej podobne do standardowych okien.

Jeśli użytkownik prowadzi Wózek podnośnikowy, napełnianie wózka do kompletacji lub przenoszenie materiału z jednego miejsca do drugiego, jest problem.

I jest ruchomym celem-szczególnie po stronie. NET. Kompaktowe środowisko uruchomieniowe. NET jest poważnie upośledzone, a ważne biblioteki (takie jak sieć, obsługa danych i interfejs użytkownika) są niekompletne, a wersje zbyt często dezaktualizują poprzednią wersję. . CE wydaje się być pasierbem w rodzinie Windows (prawdopodobnie dlatego, że nie ma wielu aktywnych konkurencji sprzedających sprzęt integratorzy.)

Fajna stabilna konsola Linuksa w wierszach i kolumnach jest dość poręcznym kontekstem dla wielu (z mojego doświadczenia większość) aplikacji o wysokim użyciu na małym ekranie.

Nie bardzo dobre dla gier na komórkę lub Zune, choć.

Uwaga:

Myślę, że ctacke prawdopodobnie mówi dokładnie po stronie integratora sprzętu. Jestem bardziej dopasowany do graczy w dół rury-integratorów oprogramowania i użytkowników.

 26
Author: dkretz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 22:26:47

Wybór jest często dokonywany głównie na podstawie percepcji i Kultury, a nie konkretnych danych. Wybór na podstawie konkretnych danych jest trudny, jeśli wziąć pod uwagę złożoność nowoczesnego systemu operacyjnego, wszystkie problemy związane z przeniesieniem go na niestandardowy sprzęt i nieznane przyszłe wymagania. Nawet z punktu widzenia aplikacji, rzeczy zmieniają się w ciągu życia projektu. Wymagania przychodzą i odchodzą. Robisz rzeczy, o których nigdy nie myślałeś, zwłaszcza jeśli są one możliwe. Na wszechobecne porty USB i sieciowe otwierają wiele możliwości - na przykład dodanie obsługi modemu komórkowego lub obsługi drukarki. Pamięć Flash sprawia, że aktualizacje oprogramowania w terenie są standardowym trybem pracy. W końcu każde rozwiązanie ma swoje mocne i słabe strony-nie ma magicznej kuli, która jest najlepsza we wszystkich przypadkach.

Rozważając rozwój wbudowanego Linuksa, często używam analogii góry lodowej; to, co widzisz w projekcie, to część nad wodą. Są to elementy, z którymi współdziała Twoja aplikacja, sterowniki, które musisz dostosować, część, którą rozumiesz. Pozostałe 90% Znajduje się pod wodą, a tutaj leży duża zmienność. Problemy z jakością ze sterownikami lub brak możliwości znalezienia sterownika dla czegoś, co możesz chcieć wesprzeć w przyszłości, mogą łatwo bagno znanych części projektu. Jest bardzo mało osób, które mają duże doświadczenie zarówno z WinCE jak i linuksowymi rozwiązaniami, stąd tendencja do pójścia z tym, co jest wygodne (lub czym są menedżerowie komfortowe), lub z czym mamy doświadczenie. Poniżej znajdują się przemyślenia na temat wielu aspektów do rozważenia:

TWORZENIE OPROGRAMOWANIA SYSTEMOWEGO

Pytania w tym zakresie obejmują obsługę procesora, jakość sterowników, aktualizacje oprogramowania w terenie, wsparcie systemu plików, dostępność sterowników itp. Jedną ze zmian, które zaszły w ciągu ostatnich dwóch lat, jest to, że dostawcy CPU przenoszą teraz Linuksa na swoje nowe układy jako pierwszy system operacyjny. Wcześniej portowanie systemu operacyjnego było zazwyczaj wykonywane przez oprogramowanie Linux firmy takie jak MontaVista, czy wysiłki społeczności. W rezultacie jądro Linuksa obsługuje obecnie większość głównych wbudowanych procesorów z kilkoma dodatkowymi łatkami. Jest to zupełnie inna sytuacja niż 5 lat temu. Ponieważ wiele osób używa tego samego kodu źródłowego, problemy zostają naprawione i często są przekazywane z powrotem do głównego nurtu. W WinCE obsługa BSP / sterowników wydaje się być bardziej referencyjną implementacją,a następnie użytkownicy OEM / biorą ją, naprawiają wszelkie problemy i to jest miejsce, w którym poprawki Zwykle zostają.

Z punktu widzenia systemu, bardzo ważne jest, aby rozważyć elastyczność dla przyszłych potrzeb. To, że nie jest to wymóg teraz, nie oznacza, że nie będzie to wymóg w przyszłości. Uzyskanie wsparcia sterownika dla urządzenia peryferyjnego może być prawie niemożliwe lub być zbyt dużym wysiłkiem, aby uczynić go praktycznym.

Większość ludzi poświęca bardzo mało uwagi systemowi budowania lub nigdy nie wychodzi poza myśl, że " jeśli jest ładny gui owinięty wokół narzędzie, to musi być łatwe". OpenEmbedded jest bardzo popularnym sposobem budowania wbudowanych produktów Linux, a ostatnio został zatwierdzony jako baza technologiczna MontaVista Linux 6 produktu i jest ogólnie uważany za "trudny w użyciu" przez nowych użytkowników. Podczas Gdy narzędzia do budowania WinCE wyglądają prostiej na powierzchni (10% nad wodą), nadal masz problem z tym, co się dzieje, gdy muszę coś dostosować, zaimplementować złożone funkcje, takie jak aktualizacje oprogramowania itp. Zbudowanie systemu produkcyjnego z produkcją funkcje klasy nadal potrzebujesz kogoś w zespole, kto rozumie system operacyjny i może pracować na poziomie szczegółowości zarówno systemu operacyjnego, jak i systemu kompilacji. W przypadku WinCE lub wbudowanego Linuksa oznacza to zazwyczaj, że firmy muszą mieć doświadczonych programistów w domu lub zatrudniać ekspertów do tworzenia części oprogramowania systemowego. Tworzenie oprogramowania systemowego nie jest tym samym, co tworzenie aplikacji i generalnie nie jest czymś, co chcesz podjąć bez doświadczenia, chyba że masz dużo czasu. Jest to dość powszechne dla firm, aby zatrudnić pomoc eksperta dla pierwszych kilku projektów, a następnie wykonać projekty kontynuacyjne w domu. Inną cechą do rozważenia jest równoległe wsparcie budowania. Z czterordzeniowymi stacjami roboczymi staje się standardem, czy to wielka sprawa, że pełną kompilację można zrobić w 1,2 godziny w porównaniu do 8? Jak elastyczny jest system budowania pod kątem pobierania i budowania kodu źródłowego z różnych źródeł, takich jak różne systemy kontroli wersji itp.

Wbudowane procesory stają się coraz bardziej złożone. Nie jest już wystarczająco dobre, aby po prostu mieć uruchomiony procesor. Jeśli weźmiemy pod uwagę rodzinę procesorów OMAP3 od TI, to musisz zadać następujące pytania: czy są dostępne biblioteki dla silnika akceleracji 3D i czy mogę je nawet zdobyć bez angażowania milionów jednostek rocznie? Czy istnieje wsparcie dla mostu DSP? Jaki jest koszt tego wszystkiego? W ostatnim projekcie, w którym brałem udział, podstawowy WinCE Bsp dla Atmel AT91SAM9260 kosztował $7000. W warunki czasu dewelopera, to niewiele, ale trzeba również wziąć pod uwagę bieżące koszty utrzymania, aktualizacji do nowych wersji systemu operacyjnego, itp.

TWORZENIE APLIKACJI

Zarówno wbudowany Linux, jak i WinCE obsługują szereg bibliotek aplikacji i języków programowania. C i C++ są dobrze obsługiwane. Większość aplikacji typu business przenosi się do C# w świecie WinCE. Linux ma Mono, które zapewnia szerokie wsparcie dla technologii. NET i działa bardzo dobrze w systemach wbudowanych Linux. Istnieje wiele środowisk programistycznych Java dostępnych dla osadzonego Linuksa. Jednym z obszarów, w którym występują różnice, są biblioteki graficzne. Generalnie graficzne interfejsy API Microsoft nie są dobrze obsługiwane w Linuksie, więc jeśli masz duży zespół programistów, którzy są zagorzałymi programistami GUI systemu windows, Być może WinCE ma sens. Istnieje jednak wiele opcji dla zestawów narzędzi GUI, które działają zarówno na komputerach z systemem Windows, jak i na urządzeniach z wbudowanym systemem Linux. Kilka przykładów zawierają GTK+, Qt, wxWidgets, itp. Gimp jest przykładem aplikacji GTK+, która działa na windows, plus jest wiele innych. Są to wiązania C # do GTK+ i Qt. Inną funkcją, która wydaje się być coraz silniejszy w przestrzeni WinCE jest Windows Communication Foundation (WCF). Ale znowu, istnieją projekty, aby doprowadzić WCF do Mono, w zależności od porcji trzeba. Wbudowana obsługa Linuksa dla języków skryptowych takich jak Python jest bardzo dobra, a Python działa bardzo dobrze na procesorach ARM 200MHz.

Często panuje przekonanie, że WinCE jest w czasie rzeczywistym, a Linux nie. Obsługa czasu rzeczywistego Linuksa jest przyzwoita w jądrach giełdowych z opcją PREEMPT, a obsługa czasu rzeczywistego jest doskonała z dodatkiem stosunkowo małej poprawki czasu rzeczywistego. Z Linuksem można łatwo osiągnąć sub milisekundowy czas. Jest to coś, co zmieniło się w ciągu ostatnich kilku lat wraz z połączeniem funkcjonalności w czasie rzeczywistym z jądrem giełdowym.

PRZEPŁYW ROZWOJU

In a wydajne środowisko, najbardziej zaawansowane aplikacje wbudowane są opracowywane i debugowane na komputerze PC, a nie na docelowym sprzęcie. Nawet w konfiguracjach, w których zdalne debugowanie na systemie docelowym działa dobrze, debugowanie aplikacji na stacji roboczej działa lepiej. Tak więc fakt, że jedno rozwiązanie ma ładne debugowanie na docelowym, gdzie drugie nie jest tak naprawdę istotne. W przypadku systemów centrycznych danych powszechne są tryby symulacji, w których aplikacja może być testowana bez połączenia z rzeczywistymi We/Wy. Aplikacje Linux i WinCE, programowanie aplikacji dla urządzenia wbudowanego jest podobne do programowania dla komputera PC. Embedded Linux idzie o krok dalej. Ponieważ technologia embedded Linux jest taka sama jak desktop, a technologia server Linux, prawie wszystko opracowane dla desktopów/serwerów (w tym oprogramowanie systemowe) jest dostępne dla embedded za darmo. Oznacza to bardzo kompletną obsługę sterowników (patrz przykłady modemu USB i drukarki powyżej), solidną obsługę systemu plików, zarządzanie pamięcią itp. Szeroki wachlarz opcji dla Linuksa jest zdumiewający, ale niektórzy mogą uznać to za punkt ujemny i woleliby bardziej zintegrowane rozwiązanie, takie jak Windows CE, gdzie wszystko pochodzi z jednego miejsca. Jest utrata elastyczności, ale w niektórych przypadkach może być warto. Przykład liczby pakietów, które można zbudować dla osadzonych Systemów Linux za pomocą Openembedded, zobacz.

GUI TRENDS

Ważne jest, aby wziąć pod uwagę trendy dla urządzeń wbudowanych o małych wyświetlacze są napędzane przez telefony komórkowe (iPhone, Palm Pre itp.). Standardowe widżety GUI, które są powszechne w systemach desktopowych (okna dialogowe, pola wyboru, rozwijane listy itp.) nie przycinają go dla nowoczesnych systemów wbudowanych. Dlatego ważne będzie rozważenie wsparcia dla efektów 3D i bibliotek widżetów przeznaczonych do użytku przez urządzenia z Ekranem dotykowym. Przykładem tego typu wsparcia jest biblioteka Clutter.

ZDALNE WSPARCIE

Wracając do kwestii narzędzi debugujących, większość ludzie zatrzymują się przy scenariuszu, w którym urządzenie ustawia się obok stacji roboczej w laboratorium. Ale co z rozwiązaniem problemu z urządzeniem, które jest testowane w wersji beta na całym świecie? W tym przypadku debugger wiersza poleceń, taki jak Gdb, jest zaletą, a nie wadą. Jak połączyć się z urządzeniem, jeśli nie masz obsługi modemów komórkowych w Nowej Zelandii lub wydajnego mechanizmu połączenia, takiego jak ssh do dostępu i przesyłania powłoki akta?

Podsumowanie

Wybór dowolnej zaawansowanej technologii nie jest prostym zadaniem i jest dość trudny do wykonania nawet z doświadczeniem. Dlatego ważne jest, aby zadawać właściwe pytania i patrzeć na decyzję z wielu stron. Mam nadzieję, że ten artykuł może w tym pomóc.

 21
Author: Keshava GN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-24 03:34:39

Pracowałem w projektach, które polegały na dostosowywaniu Oprogramowania PŁYTY OEM i nie powiedziałbym, że Linux jest tańszy. Przy zakupie płyty trzeba również kupić SDK. Nadal musisz zapłacić nawet za wersję Linux. Niektórzy producenci oferują zarówno rozwiązania Windows CE, jak i Linux dla swoich płyt i nie ma różnicy w cenie. W przypadku systemu Windows CE potrzebujesz również Kreatora platformy i płacisz za licencje,ale łatwiej jest przejść bez wsparcia.

Kolejną ważną kwestią jest jeśli budujesz interfejs użytkownika lub urządzenie bezgłowe. W przypadku urządzeń, które wymagają ekranu LCD i interakcji z ludźmi, o wiele łatwiej jest przejść z systemem Windows CE. Z drugiej strony, jeśli budujesz urządzenie bezgłowe, Linux może być lepszą opcją-zwłaszcza jeśli zaangażowane są protokoły sieciowe. Uważam, że implementacje Linuksa są bardziej niezawodne i łatwiejsze do poprawienia.

 13
Author: kgiannakakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 21:45:16

W Linuksie nie jesteś nigdy sam na Sam i nigdy nie jesteś zależny od jednej jednostki, która zapewni uprawnienia. Istnieje wiele opcji wsparcia i masz swobodę wyboru opcji wsparcia dla dowolnej części systemu za pośrednictwem wielu konkurencyjnych źródeł.

W systemie Windows CE należy przestrzegać licencji i ograniczeń określonych w złożonych umowach licencyjnych, na które należy się zgodzić. Wezwij prawnika. Z windows CE masz tylko jedno własne źródło dla systemu operacyjnego wsparcie i będziesz postępować tylko tak, jak uznają za stosowne, aby wspierać i dostarczać to, czego potrzebujesz. Możesz nie zgadzać się z ich stanowiskiem, ale nie będzie miał żadnego odwołania, ale nagiąć się do tego, co przepisują. Koszty przyrostowych komponentów, modułów, zestawów programistycznych, licencjonowania i wsparcia zwykle rosną wraz z platformami zastrzeżonymi. Co się stanie w dłuższej perspektywie, gdy sprzedawca nie będzie już chciał wspierać platformy, a ty nie masz prawa do jej samodzielnego wspierania i dystrybucji? Co się dzieje kiedy sprzedawca przechodzi na nowszą technologię i chce, abyś poszedł z nimi, mimo że możesz nie być gotowy, aby wykonać ruch? $$$

Nasze doświadczenie z rozwiązaniami Windows w ogóle polega na tym, że z czasem stają się one coraz droższe. To, co pierwotnie uważano za najniższy TCO, szybko zmierza w kierunku rozwiązania obciążonego i kosztownego w utrzymaniu i wsparciu. Licencje muszą być z czasem ponownie negocjowane, a nowe technologie, często niepotrzebne, są zmuszane do obraz na kaprys dostawcy ze względu na ich potrzeby biznesowe. Poza tym umowy licencyjne ciągle się zmieniają. znajdź prawnika.

Dzięki Linuksowi masz swobodę w zapewnianiu wewnętrznego wsparcia i wiedzy specjalistycznej, bez obciążania dystrybucją rozwiązania zgodnie z potrzebami. Masz również swobodę dalszego korzystania i wspierania technologii, których oryginalni dostawcy nie chcą już wspierać. Posiadanie kodu źródłowego i prawa do robienia z nim tego, co chcesz (GPL, LGPL) jest potężnym atraktorem, jeśli chodzi o ciągłość działania i ograniczanie kosztów, zapewniając jednocześnie dostęp do najnowszych technologii lub technologii, które pasują do Twoich potrzeb.

 8
Author: zman58,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-02 15:09:59

Opracowałem sterowniki sieciowe, które działają zarówno na Rt Linux (mówiąc dokładniej, Linux preemptive kernel z łatką RT) jak i Windows CE. Moje doświadczenie polegało na tym, że windows CE był bardziej stabilny pod względem reakcji w czasie rzeczywistym. Czasy ramek pokazały również, że windows CE miał mniej jitter.

Na RT Linux mieliśmy różnego rodzaju problemy. Na przykład, gdy użytkownik przesunął mysz; nasze klatki były opóźnione. Niektóre warianty X-windows wyłączają przerwania. Możesz również czuć, że jesteś bezpieczniej tylko na ekranie konsoli. Jeśli masz włączone bufory ramek VGA, jesteś skazany ponownie. Mieliśmy tylko jeden problem z windows CE pod względem jittera ponownie. Problem pojawił się, gdy kontroler USB został ustawiony na nieprawidłowy tryb w BIOSie, a windows CE używał dużo czasu na sondowanie.

Szczerze mówiąc, windows CE miał więcej wsparcia. Na Linuksie jesteś zdany na siebie. Musisz przeczytać każdą możliwą listę mailingową, aby zrozumieć, jakie problemy możesz mieć.

 7
Author: user108570,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-20 22:01:01

A partially Customized OS

Jest znacznie łatwiejsze do osiągnięcia, jeśli System Operacyjny jest open source(i masz wiedzę).

 5
Author: Ali Afshar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 19:55:01

Android jest dobrym rozwiązaniem dla niektórych systemów wbudowanych.(jest oparty na Linuksie)

  • Masz wielu ekspertów, którzy są w stanie rozwijać się na tym systemie.

  • Masz dostęp do wielu bibliotek w Javie lub C.

Ale zużywa dużo pamięci i energii.

To, o czym często zapominamy w przypadku płatnego / licencjonowanego oprogramowania, to to, że musisz radzić sobie z licencjami. To wymaga czasu i energii! Następnie musisz śledzić, Jeśli płacisz prawidłowo. Wiąże się z wieloma różnymi ludzie o różnych umiejętnościach i to kosztuje w decyzji.

Ten koszt często nie jest uwzględniony w badaniach, które pokazują, że open-source / free jest droższy niż płatne oprogramowanie.

Z "wolnym oprogramowaniem" jest o wiele łatwiej radzić sobie z licencjami i spędza się mniej czasu na radzeniu sobie z tymi problemami. Osobiście wolę unikać niepotrzebnej komunikacji z zespołem prawnym / finansowym za każdym razem, gdy zmieniasz niektóre fragmenty oprogramowania.

 2
Author: Gabriel Klein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 08:45:54