Technologie

Po które sięgamy z nieskrywaną przyjemnością

Kim Jest Król?

Społeczność programistów wytwarza niezliczone ilości narzędzi, języków, systemów i sposobów rozwiązania tego samego problemu. Mówi się, że każdego dnia powstaje jakiś nowy framework. W zasadzie na nauce o frameworkach, zakładając zwłaszcza, że towarzyszy temu również próba ich użycia, można spędzić życie nie znajdując czasu na pracę. Wśród osób młodszego pokolenia dominuje przekonanie, że wyznacznikiem poziomu kwalifikacji jest znajomość jak największej ich liczby. Pośród starszych podnoszą się sceptyczne głosy - to jedynie nakładki na stare, sprawdzone i dobrze znane technologie. 

Prawda leży tam, gdzie leży!

Gotowe recepty systematyzują pracę i pozwalają nie wyważać drzwi setki razy już otwieranych. Często jednak zastępują wiedzę o tym co tak naprawdę ułatwiają.

Nadmiernemu przywiązaniu do dużej ilości technologii towarzyszy często niezdolność do czynienia z nich praktycznego użytku, nadmierne ich unikanie natomiast skazuje programistę na wykonywanie mrówczej i łatwej do zautomatyzowania pracy - jest domeną osób zakładających, że same zrobią wszystko najlepiej i niezdolnych przez to do pracy w grupie.

Podobnie rzecz się ma z dylematami dotyczącymi oprogramowania open source. Popularne dyskusje - Linux czy Windows - są w dużym stopniu pozbawione sensu zarówno w odniesieniu do serwerów, jak i coraz bardziej w kontekście stacji roboczych. Zwykle prowadzi się je w oderwaniu od potrzeb, planów, skali projektu i przewidywanego sposobu zarządzania infrastrukturą. Takie debaty stają się bardziej plebiscytem uczestników dyskusji niż rozwiązań problemu użytkownika końcowego.

Informatyka stała się sztuką twórczego łączenia w całość myśli i pracy wielu ludzi z najodleglejszych zakątków Świata oraz technologii wywodzących się z zaciekle rywalizujących ze sobą środowisk.

Nie istnieje jedna technologia na wszystko. Ważne jest jednak aby w odniesieniu do stawianego wyzwania wybrane zostało to rozwiązanie, które stwarza szanse na zachowanie prostoty i spójności zarówno na etapie implementacji jak i późniejszych cykli życia systemu.

Większość spotkanych przez nas zadań dawało się rozwiązać przy użyciu każdej niemal z dostępnych powszechnie technologii. O sukcesie lub porażce decydowało zawsze dobre zrozumienie problemu (lub jego brak), nie technologia.


;
Image
Image

Back-end

Dusza Twojego Systemu

Architektura współczesnych systemów pozostawia inwestorowi i programistom bardzo dużą swobodę w doborze platformy, na której oparte będzie serce systemu - zwykle serwer z danymi odpowiadający również za uwierzytelnienie użytkowników.

Podstawowe kryteria:
- dojrzałość technologii
- stabilność pracy
- szybkość i koszt uruchomienia
- generowane obciążenia
- koszty administracji
- skalowalność
- niezależność od systemu operacyjnego serwera
- dostępność i koszty wynagrodzeń wyspecjalizowanych programistów.

O ostatecznym wyborze rozwiązania decyduje przede wszystkim specyfika projektu oraz rodzaje aplikacji stanowiących front-end systemu.

Nasze preferencje: PHP, Node.js, .NET

 

 

Image
Image

Front-end

Nie szata zdobi człowieka

Za to Twoją ofertę jak najbardziej tak!

Danymi nie zarządzamy - mamy je rozumieć, muszą być więc podane w czytelnej i przyjaznej formie. Twoje produkty i informacje o firmie zasługują na to aby je prezentować ergonomicznie. Najwspanialsza oferta zostanie odrzucona, gdy będzie nieestetyczna, wyda się niewiarygodną, jeśli będzie ponura i archaiczna.

Chcemy aby warstwa prezentacji Twojej firmy w każdym obszarze aktywności odpowiadała w swojej formie i funkcjonalności współczesnym wymogom - wymogom technologicznym, estetycznym, a także gustom, trendom i przyzwyczajeniom użytkowników.

Proponujemy:
- responsywne strony i aplikacje www (Bootstrap, Kickstart, Semantec UI)
- natywne aplikacje desktop
- natywne aplikacje dla urządzeń mobilnych z interfejsem dotykowym.

Większość funkcjonalności, zwłaszcza operacji na danych, można zrealizować w oknie przeglądarki internetowej. Do dyspozycji mamy coraz więcej bibliotek i frameworków o różnym stopniu skomplikowania - aplikacje webowe,  hybrydowe itp. Takie rozwiązania są zwykle tańsze w wykonaniu, wdrożeniu i rozwoju, szczególnie jeśli nasz system ma zapewniać interfejs uruchamiany na wielu platformach systemowych i sprzętowych, włączając w to urządzenia mobilne. 

Odpowiednia architektura i szybkie łącza (nie wspominając o pracy w sieci lokalnej) dają szansę całkowitego wyeliminowania wad związanych z pracą w oknie przeglądarki. Dla wielu wręcz tego typu aplikacje stanowią w sposób oczywisty przyszłość, redukując stację roboczą do funkcji terminala. Tę funkcjonalność zapewnić mógłby każdy monitor, o ile tylko upchnąć w nim odchudzonego Linuxa, podłączyć klawiaturę i mysz.

W dobie minikomputerów, np. Raspberry PI, których ceny zaczynają się od kilku lub kilkudziesięciu dolarów, szaleńczego wręcz rozwoju technologii web czy też używając serwerów terminali działających w chmurze mamy możliwość całkowitej zmiany rozumienia problematyki kosztów budowy i utrzymania infrastruktury IT. Paradoksalnie sprowadzenie stacji roboczej do roli "wyświetlacza" nie jest niczym nowym. To jedynie kolejna fala na dobrze znanym akwenie - wystarczy odrobina refleksji nad historią systemu X Window (znanego większości współczesnych z Linuxa) albo jego odmiany z Mac OS.

Nasze preferencje: Ract.js, Backbone.js, Angular.js

Image
Image

CMS i e-commerce

Zarządzanie Treścią

Systemów CMS (Content Management System) powstała taka masa, że aby je opisać można by stworzyć specjalny serwis. Oczywiście nie ma to sensu ponieważ każdy z nich sam dla siebie jest rozwiązaniem do tego celu najlepszym. W codziennej pracy spotykamy kilka rozwiązań zasługujących na wyróżnienie:

1. Wordpress
Powstał jako platforma przeznaczona do prowadzenia blogów, napisany w PHP. Przez lata dynamicznie rozwijany. Do dyspozycji mamy pulę szablonów graficznych ograniczoną niemal wyłącznie czasem potrzebnym na ich oglądanie, ponadto zestaw pluginów niemal na wszystko. Zaletą, ale niestety i wadą, staje się liczne grono wytwórców dodatków, efektem czego jest częsta niekompatybilność tych składników. Często okazuje się, iż prościej byłoby wytworzyć je w formie być może mniej uniwersalnej, ale realizującej w sposób kompletny konkretne zadanie.
System został wzbogacony o dostępne w aktualnych wersjach Rest API, co co znacznie poszerza pola jego zastosowań. Plugin WooCommerce, umożliwiający prowadzenie sklepu internetowego, łatwość instalacji i możliwość instalacji w ramach niemal każdej usługi hostingowej czyni go najpopularniejszym CMS na świecie.

2. Drupal

W przypadku bardziej wyszukanych potrzeb Drupal okazuje się świetną alternatywą, zwłaszcza jeśli chcemy zachować wszelkie atuty PHP. Trudniejszy od Wordpress-a w opanowaniu, odpłaca jednak trudy nauki z nawiązką.

3. Umbraco

Nasz ulubieniec.

System napisany w C#, w pełni trzymający się modelu MVC. Elastyczny i wydajny, nadaje się zarówno do prowadzenia niewielkich serwisów, jak i większych aplikacji. System o otwartych źródłach, rozwijany oraz stosowany przez przyjazne i aktywne grono programistów. Świetnie nadaje się do pracy z Visual Studio - narzędzia zaliczanego do absolutnej światowej czołówki.

Z Umbraco skorzystały takie potęgi jak choćby Heinz, Toyota, Warner Bros, Peugeot, czy Microsoft - asp.net. 

 

Image
Image

Aplikacje natywne

Wolnoć Tomku w swoim domku

W przypadku aplikacji, które po stronie stacji roboczej powinny dokonać dużej ilości obliczeń albo pracy z dużą ilością danych, gdy ponadto plastyczna atrakcyjność i oryginalność  zgodnie z wymaganiami ustąpić ma miejsca zunifikowanemu interfejsowi, zbieżnemu z systemem operacyjnym, sięgamy po technologie pozwalające na budowę aplikacji natywnych - w dużym uproszczeniu, wszystkich tych programów, które instalujemy na komputerze lub smartfonie. 

Użytkownika - takiego oczywiście, który przywiązuje jakąkolwiek wagę do wyglądu - nie może spotkać nic gorszego niż np. uruchamianie na Windows 10 aplikacji rodem z Windows XP. Nie jest to kwestia wyłącznie estetyki. Interfejs systemu operacyjnego i jego ergonomia nie jest dziełem przypadkowych twórców, tylko efektem pracy ponadprzeciętnych fachowców i pasjonatów. Dlaczego więc z tego nie korzystać męcząc się przy rozwiązaniach archaicznych, albo zastępować je (bo moda) rozwiązaniami front-end działającymi w przeglądarce wedle zasady, że jeden musi być piękniejszy od drugiego, tylko każdy jednocześnie inaczej realizuje tę samą funkcję?

Świetny kompromis polega na tym, aby korzystać w pełni z tego co oferuje system operacyjny w aktualnej wersji, przy założeniu, że aplikacja budowana jest zgodnie z wzorcem umożliwiającym jej nadążanie za kolejnymi wersjami systemu operacyjnego, np. MVC lub MVVC.

Największą zaletą budowy aplikacji natywnej jest pełna interakcja z systemem operacyjnym. Szukając analogii do życia codziennego można by powiedzieć, że różnica między aplikacją web a natywną jest taka, że ta pierwsza działając w przeglądarce jest jak gość, któremu mówimy "czuj się jak u siebie", aplikacja natywna jest po prostu u siebie. Aplikacja natywna będzie potrzebowała większych nakładów pracy. Jeśli będzie tworzona dla różnych systemów, w praktyce powstanie ich kilka. Będzie miała swobodny dostęp do zasobów systemowych i sprzętowych, powinna działać szybciej, interfejs powinien również działać bardziej płynnie. Oczywiście bardzo wiele zależy od sposobu jej zaimplementowania.

Absolutna większość stacji roboczych w przedsiębiorstwach pracuje z systemem Windows, dlatego też w przypadku aplikacji desktop preferujemy dość oczywisty wybór - narzędzia firmy Microsoft, mając w zanadrzu Mono (Linux) i Xamarin (urządzenia mobilne). 

W rzadkich sytuacjach, raczej w przypadku aplikacji zastanych, zdarza się nam sięgać po starego druha - Pascala (Delphi i Lazarus). Język mocno dziś niedoceniany (bardzo krzywdzące, ale ma to też pewne logiczne uzasadnienie).

Image
Image

Dane

Serwery baz danych

Rodowód rozwiązań takich jak SQL Server czy PostgreSQL sięga roku 1989. Przynajmniej w informatyce wystarcza to na osiągnięcie dojrzałości. Preferowane przez nas systemy dostępne są w wersjach dla Linuxa i Windows. SQL Server jest zaawansowanym produktem komercyjnym, dostępnym jednak w wersjach darmowych z czego korzysta w swoich realizacjach wielu dostawców oprogramowania dla biznesu. Dodatkowo wersja Compact, jako odmiana plikowa, nadaje się świetnie do użycia w stosunkowo niewielkich systemach jako rozwiązanie nie wymagające instalacji, podobnie jak SQLite

O wyborze technologii zdecyduje przede wszystkim skala projektu, zakładany budżet, ewentualnie system serwera. Dla użytkownika końcowego jednak nie powinno to mieć żadnego znaczenia.

W przypadku rozwiązań uruchamianych w ramach usług hostingowych króluje MySQL - system dostępny właściwie w każdej tego typu ofercie.

Image
Image

serwery i stacje robocze

Systemy operacyjne

Windows czy Linux - cóż to za pytanie? A właściwie do czego?

Przez wiele lat środowisko graficzne Linuxa oraz aplikacje na nim dostępne pozostawiały wiele do życzenia. Dodatkowo system edukacji w Polsce wydaje się wyróżniać i przyzwyczajać nas od najmłodszych lat do Windows. Większość stacji roboczych i oprogramowania dla firm oparte jest o Windows i MS Office.

Linux jest mocnym graczem jako system operacyjny serwerów, często też spotkać go można jako system operacyjny wielu urządzeń, których nie nazwiemy komputerem, a które nim w pełni są  - tunery telewizyjne, macierze dysków, routery, centrale telefoniczne itp.

Linux stawia przed instalującym trochę więcej wyzwań, jego właściwa konfiguracja wymaga większej wiedzy, która na późniejszym etapie owocuje lepszą zaradnością administratora. Windows jest relatywnie prostszym systemem w uruchomieniu, przez w przypadku występowania na późniejszym etapie problemów pada ofiarą wielu zarzutów. 

Linux jest systemem o otwartych źródłach, zdaniem wielu napisany został w sposób wręcz wzorcowy. Rozwijany i testowany przez tysiące wolontariuszy stanowi swego rodzaju uosobienie potęgi jaką niesie za sobą współpracująca grupa ludzi o otwartych umysłach.

Windows, jako produkt na wskroś komercyjny, wraz z całą technologię stajni Microsoft jest potęgą, która przedsiębiorstwom dostarcza kompletne i spójne rozwiązania IT.

W ostatnich latach technologie przestają ze sobą zaciekle rywalizować. Dokonało się coś, co jeszcze dekadę temu wydawało się niemożliwe - Microsoft otworzył się na świat open source, inwestuje w Linux, ostatnie wersje .NET Framework dostępne są również dla tego systemu (włączając nawet SQL Server dla Linux).

W naszej ofercie usług programistycznych oraz outsourcingu IT jest miejsce dla obu systemów, bez szczególnego wartościowania. Szanujemy oba rozwiązania w równym stopniu.  

Pośród licznych narzędzi mamy zarówno swoich ulubieńców jak i szereg doświadczeń wynikających z "konfrontacji" z zastaną infrastrukturą.
O stosowanych rozwiązaniach decyduje każdorazowo indywidualna analiza potrzeb, zasobów, celów i zakładany model biznesowy Klienta. Powyższe nie jest próbą przedstawienia granic, a jedynie listą naszych preferencji i faworytów.
Granice wyznacza wyłącznie zdrowy rozsądek.