19 grudnia 2013

Perl - język programowania z historycznym 25-letnim garbem

Każdy programista słyszał o zacnym ;-) skryptowym języku programowania Perl. Jego historia sięga 25 lat i doczekała się wersji Perl 5 (przy czym Perl 6 jest w przygotowaniu). Uroczystość świętowania urodzin Pela ;) to tradycja dla kilku wiekowych już fanatyków rozwiązań powstałych w tym języku. Tradycyjnie jak co roku stawiają piwko i tort na stół obgadując nowinki w kolejnych wersjach.
Wszystko byłoby w normie, gdyby nie fakt że grupę programistów języka Perl można policzyć na palcach ... poprawcie mnie jeśli się mylę ?!

Zastanawiam się, czy ta impreza nie powinna być nazywana stypą, kiedy patrzę na statystyki stosowania w nowych projektach oraz wdrażania produkcyjnych rozwiązań. Postanowiłem nieco przyjrzeć się w tym artykule nieco współczesnym wdrożeniom aplikacji w języku Perl.

Zapewne Larry Wall, który jest ojcem tego języka programowania pokładał w swoim projekcie wielkie nadzieje i wierzyny wszyscy, że był to wytwór epokowy. Za co należy oddać szacunek ojcowi Larremu ;-). Tak się składa, że CPAN, jako repozytorium stabilnych modułów do języka Perl utrzymuje się i rozwija w stanie jak 25 lat temu. Aczkolwiek programiści sięgający do tego języka czują jego fenomen a zarazem odrazę patrząc na wiele linii kodu wytworzonego wiele lat temu. Oczywiście nie ma co oceniać algorytmów, które mają swoje pokrycie testami. Na myśli mam zastosowane wzorce architektoniczne w produktach Open Sourcewytworzonych przy pomocy języka Perl. W sumie to ciężko odgadnąć czasmi co autor miał na myśli czytając źródła, ale zastanawiam się często czytają kod Perla, czy musi zawierać nieczytelne komplikacje składniowe. No cóż, okazuje się, że to są właśnie podstawy tego języka: $#, @, $@, &$@ i kilka innych trickow. ...

Chciałbym poruszyć też pewną kwestię historyczną, kiedy ok. 13 lat temu społeczność Perla przegrała z ruchem w językach PHP oraz Python. Tak się skłąda, że obserwowałem jako praktykujący programista ten trend i dzisiaj widzę po wykresach, że czas szykować się na stypę, która może odbędzie się niedługo. Oto zrzut trendów zainteresowania Perlem w porównaniu do alternatywnych języków skryptowych:

Podkreślić należy - bo większość zapomniała - że język PHP wzorował się na Perlu. Dodać trzeba, że jeśli chodzi o przetwarzanie wielkich ilości tekstu oraz stosowanie przy tym wyrażeń regularnych, to inne języki skryptowe mogą się kłaniać, w Perlu działa to na prawdę wydajnie. Znam adminół i devopsów, którzy nie boją się powiedzieć "mamy w du..e pythony, ruby, bash, zsh i inne ... przecież w każdym UNIXie jest Perl i działa od zawsze !". Tutaj nie mogę się kłucić, bo faktycznie od kiedy pamiętam to Perl był zawsze w OSach, od VxWorx, QNX, FreeBSD, UNIX, poporzez Linuxy aż do co ciekawe Androida, których używam na codzień ;-).

Język Perl posiada kilka liczących się na świecie wdrożeń słynnego systemu OTRS, czyli wsparcia dla obsługi klienta (helpdesk). W aktualnej wersji dodano nawet wsparcie dla całego procesu obsługi zgodnego z metodyką ITIL. System wspiera grupy klientów, bazy klientów, obsługę zgłoszeń w systemie kolejkowym z priorytetami i SLA. Od wersji 3.2 posiada skalowalne i konfiigurowalne API, zarówno SOAP jak i REST z bindingami do metod wewnętrznych, dzięki którym w prosty sposób można integrować np: z Call Center, czy obsługą telefoniczną zgłoszeń.

Oto jak autor wypowiada się o swoim ulubionym języku programowania ;-)

Pozdrawiam serdecznie wszystkich z okazji ukończenia 25 rocznicy języka programowania Perl i mam nadzieję, że się nie obrażą na moje wypowiedzi o obumierającej już społeczności tego języka. Z trendów wynika, że pozycja 9 w 2012, 12 w 2013, czyli z pierwszej dwudziestki Perl najpewniej wyleci za kilka lat ... lub stawiam kratę, jeśli okaże się za kilka lat, że jest to język wiecznie żywy;)

Linki:
 * http://adambard.com/blog/top-github-languages-for-2013-so-far/
 * http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html


9 grudnia 2013

Appcelerator Titanium - też możesz napisać aplikacje wieloplatformową w Java Script, PHP, Python

Pamiętam czasy rozkminiania GUI na desktopa, aby napisać swojego klienta poczty POP3. Jak również poznawanie GTK w wersji 1 i 2, borykanie się z brakiem dobrej dokumentacji i przykładów. Pamiętam też, że QT wygrało na dokumentacji i przykładach. Dodatkowo na tym, że jest wieloplatformowe. Ktoś może pamięta, że dla PHP też istniało coś takiego jak PHP-GTK i zestaw narzędzi do desktopa napisanych w PHP ! ... Albo już ludzie zajmująyc się desktopowymi aplikacjami wygineli jak dinosaury, przez co w swojej kanciapie klepią CRM w Delphi lub C++ Builderze :-) i mają z tego np: 10k radości.

Może tyle o wspomnieniach, przedstawiam Wam doczesność składającą się z aplikacji mobilnych i narzędzi do wytwarzania aplikacji na telefony komórkowe.
Isnieje całkiem pokaźny zestaw frameworkóœ i platform, które potrafią więcej niżeli pisać funkcje w kodzie. Są już pełne SaaS platforms, czyli oparte na usługach platformy, w których określamy, czy też wyklikujemy przepływy naszej aplikacji, wgrywamy szablony dla wyglądu, a wyjściem jest kod dla wielu platform mobilnych: Android, iOS, etc.
Chciałby przedstawić nowy koncept Appcelerator Titanium, jest to technologia, która pozwala storzyć apliakcje zarówno dla desktopa, mobilne i jest alternatywną technologią referencyjną do Abode AIR

br /> Mozna np: znając Java Script zaczać pisać na iPhone - bez znajomości Objective C

Cytat ze strony oficjalnej, co można uzyskać w Appcelerator Titanium:
JavaScript-based SDK with over 5,000 APIs for iOS, Android, Windows, Blackberry and HTML5.

Jakie możliwości wymienia dokumentacja:
Features

With Titanium, you use JavaScript to code your application. Titanium's compiler will compile your application code into an efficient native executable for each target mobile platform. Titanium writes native code so you don't have to. :)

Native apps built using JavaScript
Apps are compiled and run locally with full offline support
Support for native platform UI controls
Third-party JavaScript support such as jQuery, Dojo, etc.
Support for Web views incorporating HTML5, CSS etc.
Support for in-application SQL database
Support for Geolocation (compass, geolocation, forward/reverse lookup)
Support for Camera (taking Photos, playing and recording Video)
Support for Photo Album (reading and writing)
Support for Contacts Database / Address Book
Support for Streaming Audio and Recording Audio, Audio Input Levels, Mic etc
Support for Vibration
Support for Social APIs such as Facebook Connect, Twitter, etc
Support for Yahoo YQL
Support for Web Services via REST, SOAP
Support for native Maps
Support for Push Notifications
Support for in-application Email
Support for in-application SMS, Telephone
Support for Filesystem (reading, writing, etc)
Support for Gestures (such as Shake)
Support for Platform and Device capabilities
Support for complex native views such as Coverflow, Image viewers, Table views, Grouped Views, Composites, etc.
Completely extensible via Module API for building your own controls or extending capabilities at compile-time
And much, much more.

Materiały:
http://www.codestrong.com/
https://github.com/appcelerator/titanium_mobile

4 grudnia 2013

Lua + Open Hardware = Mihini

Jak powszechnie wiadomo, każdy nowy standard, framework lub sprzęt potrzebuje wygrzewania. Np: język programowania Lua wygrzewa się w grach sieciowych tj. WOW jako język skryptowy. Skrypt w języku Lua miał swoje kilka minut jako potężny atak na reaktor jądrowy w Iranie. Są współcześnie projekty, które doceniają język Lua bardziej niżeli język Java. Zastanawiająy jest ten fakt powrotu na scenę tego 20-letniego języka programowania. Byćmoże dzięki możliwości bardzo łatwego osadzania Lua na innych platformach stał się on dość ciekawym kompromisem.

Tak się złożyło, że zainteresowali się nim autorzy projektu Mihini, który uznali, że jest to godny język do utworzenia API do komunikacji pomiędzy architekturami Open Hardware a światem zewnętrznym.

Oto główny nurt obrazujący cel projektu Mihini:
The Mihini project delivers an embedded runtime running on top of Linux, that exposes a high-level Lua API for building Machine-to-Machine applications.

Czyżby zabawa w amatorską automatykę np: bnudynków dopiero się rozpoczynała ... ;-)
Tak można obserwując rynek określić, bo minął równy rok, od publikacji przez Google projektu Droid@Home a nadal nowe standardy powstają i mają się dobrze. Można wybierać wśród ulubionych języków programowania: Java, JavaScript, Python, Lua.

Wracając do samego projektu Mihini chciałbym podkreślić, że mamy tutaj wsparcie dla najpopularniejszych i sensowych architektur Open Hardware t.j.:

  • Raspberry Pi
  • BeagleBone

Z niecierpliwością wyczekuje ciekawych aplikacji do pomiaru temperatury i innych robotycznych odkryć na tej platformie. Może przekona mnie to bardziej do użycia języka Lua w praktyce ;-)
Jak na razie doszukalem sie jednego zastosowania - pomiaru temperatury.

Linki: -

2 września 2013

Puppet - automatyzacja gwarantuje utrzymanie oprogramoania

Zdajecie sobie sprawę z tego ilu adminów musi posiadać firma, aby serwery działały. Czasami warto zresetować myślenie o utrzymaniu infrastruktury i nie mnożyć stada adminów w firmie. Dlaczego ? - o tym właśnie jest ten wpis. Przychodzi nam na ratunek szereg rozwiązań zwanych automatyzacją IT.

W sumie istnieje przetestowane i rekomendowane przeze mnie rozwiązanie do zarządzania farmami serwerów, o którym wspominałem kilka lat temu. Nazywa się Puppet. W skrócie to synonim uproszczonej automatyzacji powtarzalnych czynności i procesów, który kojarzy się z szybkim wdrażaniem systemów i aplikacji w dziale infrastrukturyIT.

Warto wspomnieć, że automatyzacja w IT to nie tylko możliwość zdalnego zainstalowania softu, to również szereg zadań na każdym z etapów cyklu życia systemów:

  • wdrażanie (provisioning),
  • odkrywanie (discovery),
  • zarządzanie systemami i aplikacjami,
  • zarządzanie budowaniem i dystrybucją aplikacji,
  • zarządzanie wdrażaniem poprawek (patching),
  • audytowanie i śledzenie zgodności środowisk (audit)

Chciałbym się podzielić kilkoma cennymi i gotowymi materiałami z sieci, które warto znać, gdy podejmuje się decyzję o ułatwieniu życia działowi IT. Oto wartościowe materiały: