Programista 6/2015 (37)
Programista 6/2015 (37)
DSL to skrót od angielskiego wyrażenia Domain Specific Languages, czyli w wolnym tłumaczeniu wyspecjalizowane/specjalizowane języki dziedzinowe. Realizując różnego typu projekty, często się okazuje, iż warto byłoby utworzyć niewielki program czy skrypt realizujący zadania związane ściśle z projektem, jednakże o składni innej niż typowe uniwersalne języki programowania (zwane też językami GPL – ang. General Purpose Languages). Budowa analizatora, a później interpretera czy nawet własnego edytora to niewątpliwie zadanie, które wymaga poświęcenia sporej ilości czasu.
Czemu służy synchronizacja w jądrze systemu operacyjnego? Realizuje ona mechanizmy zabezpieczające współdzielone zasoby przed uszkodzeniem na skutek niekontrolowanego dostępu. Synchronizacji nie można rozpatrywać w oderwaniu od architektury jądra i szerszego pojęcia mechanizmów sterowania, w tym szczególnie kontroli przerwań, które to dają pełniejszy obraz poprawnego wykorzystania interfejsów oferowanych przez jądro NetBSD.
Obecnie pracuję nad projektem, który wymaga integracji istniejącej aplikacji ASP.NET MVC z pewną liczbą nowych systemów, zarówno back-office, jak i front-office. Oczekiwaniem klienta jest, aby wszystkie systemy działały razem tak, jak gdyby były jedną zintegrowaną aplikacją. W związku z tym kluczowym wymaganiem jest wprowadzenie mechanizmu pojedynczego logowania (SSO – Single Sign On). Dzięki niemu użytkownicy będą mieli możliwość nawigacji pomiędzy stronami tych aplikacji bez konieczności powtarzania żmudnej procedury uwierzytelnienia…
Pewną ciekawą prawidłowością, którą kiedyś zauważyłem, jest fakt, iż programiści-pasjonaci wyjątkowo często przejawiają również uzdolnienia muzyczne. Wielu spośród moich znajomych po fachu gra na jakimś instrumencie, współtworzy zespół muzyczny lub – na przykład – zajmuje się restaurowaniem starych gitar. Na pierwszy rzut oka mogłoby się wydawać, że programowanie i muzyka to dziedziny bardzo odległe, a jednak okazuje się, że pięciolinią rządzą wyjątkowo ścisłe prawa i również w tym świecie programista może kreatywnie skorzystać ze swoich umiejętności. To nie będzie kolejny artykuł przekazujący suchą, teoretyczną wiedzę. Chcę opowiedzieć o pewnej przygodzie, której akcja rozegrała się zarówno wewnątrz środowiska programistycznego, jak i na pięciolinii.
Na problem okien dialogowych w WPF natknie się prędzej czy później każdy programista próbujący pisać aplikacje zgodne ze wzorcem MVVM. My skupimy się na najczęstszej sytuacji, w której model widoku jest pasywny, zmiany jego stanu w całości zależą od akcji użytkownika. Istotą problemu jest to, że z punktu widzenia programisty często najwygodniejszym miejscem do wywoływania okien dialogowych (np. zadawania z ich użyciem pytań użytkownikowi lub powiadamianie go o zdarzeniach), a miejmy na uwadze, że okna dialogowe ewidentnie przynależą do warstwy widoku, są klasy modelu widoku, a czasem nawet klasy samego modelu. Ulegając pokusie, naruszamy ścisły podział na warstwy, będący jedną z głównych zalet wzorca MVVM.
Metoda pull requests (PR) jest funkcjonalnością, która ułatwia współpracę programistom pracującym w serwisach internetowych pozwalających na przechowywanie projektów, wykorzystujących Git jako system kontroli wersji jak Bitbucket czy GitHub. Dostarczają one webowy interfejs przyjazny dla użytkownika w celu umożliwienia dyskusji na temat proponowanych zmian przed ich integracją do oficjalnego projektu.
Testowanie mutacyjne polega na wprowadzaniu do programu tzw. mutacji, czyli drobnych zmian w kodzie. Mutacje są definiowane za pomocą tzw. operatorów mutacyjnych, czyli zestawów reguł przekształcających składnię kodu źródłowego. Następnie zmodyfikowane programy, zwane mutantami, uruchamia się za pomocą posiadanych przypadków testowych i sprawdza, czy testy wykryły daną zmianę.
Python to już z założenia język wieloparadygmatowy. Mimo że jest językiem obiektowym, to nie zrywa, tak jak Smalltalk albo Java, z programowaniem strukturalnym i pozwala na pisanie kodu niezawierającego jawnie deklarowanych klas. Z drugiej strony, sięga on po dużo bardziej specyficzny paradygmat funkcyjny. Nie jest to co prawda taka funkcyjność, jak w Haskellu albo chociaż Ocamlu, ale wystarczająca, aby dodać Pythonowi trochę egzotyki oraz znacznie rozszerzyć jego możliwości.
Upload plików zalicza się do najczęściej występujących funkcjonalności w webaplikacjach i zazwyczaj wiąże się z wgrywaniem na serwer obrazków bądź dokumentów. Jest zarazem miejscem, na które bardzo chętnie patrzą pentesterzy ze względu na liczne błędy bezpieczeństwa w implementacjach. W tym artykule przedstawimy najczęściej występujące błędy oraz pokażemy, w jaki sposób mogą zostać wykorzystane. Omówimy także sposoby obrony.
Czym z perspektywy programisty jest projekt? Kiedy należy uznać, iż zakończył się sukcesem? Czy wszystkie przedsięwzięcia polegające na stworzeniu programu powinny być uznane za projekty? Jaka jest różnica pomiędzy projektem a procesem? Na te pytania spróbujemy odpowiedzieć przy użyciu metody Five Why. Czy odpowiedź udzielana z perspektywy developera będzie inna, niż zwykle widzą to menadżerowie?
Chyba można zaryzykować stwierdzenie, iż absolutnie każdy z nas codziennie korzysta z Internetu. Za jego pomocą pracujemy, załatwiamy sprawy biznesowe, szukamy potrzebnych nam informacji, szukamy pracy, kontaktujemy się ze znajomymi, a nawet robimy zakupy. Zakres możliwości, jakie daje nam sieć, jest naprawdę nieograniczony. Internet to również miejsce, w którym możemy znaleźć informacje o nas samych.
W dniach 25-26 maja 2015 roku podczas konferencji CONFidence w Krakowie odbyły się zawody CTF zorganizowane przez polską drużynę Dragon Sector. W zawodach mogły wystartować maksymalnie czteroosobowe zespoły uformowane przez uczestników konferencji. Dostęp do około 20 zadań z różnych kategorii był możliwy jedynie przez lokalną sieć, a pod koniec pierwszego dnia zawodów zostało odblokowanych kilka zadań, które nie wymagały interakcji z infrastrukturą zawodów, co pozwalało uczestnikom na rozwiązywanie ich podczas nocnej przerwy. Wśród udostępnionych zadań znalazły się kryptograficzne problemy o nazwach rsa1 i rsa2, które różniły się zaledwie jedną linijką kodu, jednak sposób ich rozwiązania był zupełnie inny. My zajmiemy się tutaj trudniejszym wariantem, czyli rsa2.
Wszystkie przedstawione do tej pory techniki rozmowy z klientem można nazwać mechaniką konwersacji. Skorzystanie z nich da jednoznaczny efekt. Lecz jeśli jednocześnie brak jest chemii w trakcie konwersacji, sama mechanika nie będzie działać. Po prostu rozmówca nie będzie miał ochoty współpracować.