Programista 5/2015 (36)
Programista 5/2015 (36)
Hazelcast jest ciekawą biblioteką dla języka Java, umożliwiającą niemal przezroczyste poziome skalowanie aplikacji. Zasada działania biblioteki jest zadziwiająco prosta: Hazelcast sprawia, że zmiany w wybranych kolekcjach (mapach, kolejkach) dokonane w jednej instancji naszej aplikacji są automatycznie widoczne w pozostałych instancjach tej samej aplikacji. Dzięki temu implementacja rozproszonego cachowania czy wzorca producent-konsument staje się dziecinnie prosta.
Dziś na łamach „Programisty” inauguruje nowa stała kolumna: Boost.Corner. W kolejnych artykułach wchodzących w skład tego cyklu przedstawiać będziemy najciekawsze biblioteki wchodzące w skład pakietu Boost: tym razem na warsztat trafi Boost.Date_Time. Wszystkich czytelników zainteresowanych nowoczesnymi technikami programowania w języku C++ serdecznie zapraszamy do lektury!
Drogi programisto C++, czy nie zdarza Ci się z zazdrością spoglądać na kolegów programujących w Javie, Perlu, Pythonie, Rubym (i w wielu innych językach), którzy mają do dyspozycji szereg wygodnych narzędzi wspomagających zarządzanie zewnętrznymi bibliotekami, modułami czy pakietami oprogramowania? Czy zgrzytasz zębami, tracąc czas na zbudowanie tudzież konfigurację potrzebnej Ci biblioteki 3rd party? Jeśli tak, to mam dobrą wiadomość: biicode przybywa na ratunek! Jeśli chcesz dowiedzieć się więcej o tym, co oferuje to pożyteczne narzędzie, zapraszam do lektury poniższego artykułu.
Tworząc aplikacje internetowe, jakość na poziomie klas weryfikujemy za pomocą testów jednostkowych. Jednak aby przetestować interfejs użytkownika i zapewnić prawidłowe działanie systemu na wielu przeglądarkach, potrzebujemy testów funkcjonalnych. W niniejszym artykule zapoznamy się z możliwościami biblioteki Specflow, która pozwala na tworzenie automatycznych testów funkcjonalnych z wykorzystaniem języka C#.
Go jest kompilowanym, współbieżnym, statycznie typowanym językiem programowania z automatycznym odśmiecaniem pamięci. Powstał pod szyldem firmy Google. Autorzy projektu są między innymi odpowiedzialni za powstanie UTF-8, systemu Unix, plan9 oraz wielu narzędzi, z których większość z nas korzysta do dzisiaj.
W dwóch poprzednich artykułach z niniejszego cyklu omówiliśmy budowę i mechanizmy działania Wirtualnej Maszyny Javy. Dzięki temu wiemy, czego teoretycznie możemy się spodziewać w poszczególnych fazach uruchamiania naszych aplikacji. Ostatnia rzecz, jakiej nam brakuje, to narzędzia, które pozwolą praktycznie zastosować zdobytą wiedzę. Tu bardzo często pojawia się wymówka o braku dostępu do (bardzo drogich) narzędzi, które są przecież niezbędne do analizy wydajności JVM. W tym artykule zobaczymy przegląd narzędzi, które wykorzystuję w swojej codziennej pracy i które mają dwie bardzo istotne zalety. Po pierwsze, są całkowicie bezpłatne, a po drugie, każdy z nas ma je już zainstalowane na swoich serwerach i stacjach roboczych.
W poprzednim artykule (Programista 3/2015) omówiłem technologię Xamarin.Forms, która umożliwia programowanie uniwersalnych aplikacji mobilnych z wykorzystaniem zunifikowanego interfejsu programistycznego oraz jednolitego zestawu komponentów wizualnych. W tym artykule zaprezentuję możliwości bibliotek WatchKit z Xamarin.iOS w kontekście tworzenia aplikacji dla Apple Watch.
Zapoznając się z programowaniem w jądrze systemu operacyjnego, dobrze jest zacząć od łagodnego wprowadzenia w kolejne podsystemy, bez zaczynania od inwazyjnego konfigurowania opcji i przeładowywania systemu operacyjnego w oczekiwaniu, czy całość wstanie czy nie. Taką możliwość dają moduły dynamiczne, którym to jest poświęcony niniejszy artykuł.
Epoka informacyjna każdego dnia generuje niezliczone ilości informacji gromadzonych w ogromnych zbiorach danych, tzw. Big Data. Skala tego zjawiska sprawia, że uzyskanie użytecznej wiedzy z tak powstałych zbiorów wymaga znajdowania zależności w wielowymiarowych przestrzeniach danych. Z pomocą ku temu przychodzi narzędzie nazywane eksploracją danych (z ang. data mining), którego podstawowym celem jest badanie charakteru i składu zbiorów danych. Analiza skupień zaś należy do jej podstawowych technik.
Wiele publikacji dotyczących programowania obiektowego posługuje się przykładem „edytora figur geometrycznych”, w którym polimorfizm wykorzystywany jest do rysowania w specyficzny sposób różnego rodzaju figur. Prosty polimorfizm pojawiający się w powyższym przykładzie zdaje się mieć dużą siłę oddziaływania na rzeczywiste systemy informatyczne. Artykuł omawia problemy związane ze zbyt dosłownym naśladowaniem opisanego rozwiązania oraz przedstawia propozycje przełamania niektórych trudności.
Artykuł ten jest drugą i ostatnią częścią minicyklu poświęconego sposobom sterowania platformą Arduino przy pomocy języka Python. W niniejszym tekście omówione zostaną trochę bardziej zaawanswane przypadki użycia owej platformy.
Część VI: Testowanie modułowe vs jednostkowe
W kolejnych artykułach przedstawiałem kolejne wzorce, które znacznie porządkują i upraszczają implementację silników obsługi zdarzeń, a w ostatnim przedstawiłem rozwiązanie integrujące wszystkie wcześniej omawiane wzorce w jedną konfigurowalną aplikację. Dotychczas temat testowania przewijał się jedynie w ocenie poszczególnych rozwiązań. W tej części te proste sformułowania nabiorą głębszego sensu, a przy tym przedstawię jeden z ciekawszych frameworków dedykowany do tego typu testów w języku C++.
Bezpieczne połączenia przy użyciu protokołu HTTPS stanowią jeden z podstawowych budulców dzisiejszego Internetu. HTTPS zapewnia poufność, integralność oraz autentyczność komunikacji. Ten ostatni cel jest realizowany dzięki standardowi X.509, który definiuje infrastrukturę klucza publicznego. Model zaufania oparty na X.509 ma jednak pewną fundamentalną wadę, której rozwiązaniem ma być mechanizm HTTP Public Key Pinning (HPKP).
Każdy program można napisać w niemal nieskończonej liczbie wariantów. Jak często przekonujemy się, tworząc oprogramowanie, różnorodność w projekcie może stać się poważnym problemem. Potrzebny jest zbiór ścisłych zasad definiujących sposoby pisania programów: styl kodowania. Z jednej strony jest on specyficzny dla danego developera, z drugiej zaś bywa zdefiniowany przez organizację na potrzeby konkretnego projektu. Jak pogodzić te dwie perspektywy?
Praktycznie każdy z użytkowników poczty elektronicznej chociaż raz spotkał się w swoim życiu z niechcianą korespondencją e-mailową pochodzącą od nieznanego adresata. Zazwyczaj są to wiadomości zawierające oferty handlowe, zaproszenia do udziału w badaniu, wypełnienia ankiety bądź też zaproszenie na określone wydarzenie.
CONFidence CTF 2015 to już druga edycja offline’owych zawodów typu Capture The Flag organizowanych przez polski zespół Dragon Sector. Zadania przygotowane przez mistrzów świata (wg rankingu ctftime.org) były wymagające, a niektóre z nich pozostały nierozwiązane mimo obecności nawet najbardziej doświadczonych drużyn. Warto wspomnieć, że w tegorocznej edycji po raz pierwszy pojawiły się nagrody pieniężne, o które pod koniec maja do Krakowa na konferencję Confidence przyjechało walczyć kilkanaście zespołów z całej Europy