Miesięczne archiwum: Maj 2017

Coś się kończy, a coś zaczyna…

Witaj!

Tak, dokładnie jak w tytule. Coś się kończy, a coś nowego zacznie.
#DSP2017 powoli się kończy. Zostało kilka dni do końca maja.

Co się udało, zrobić, na co zabrakło czasu, a czego się dotknąć nie chciało i czuło, że to jednak nie to?
HTML i CSS – troszkę poznane, pouczone, rozwiązanie pewne niejasności, obejrzane kilka materiałów dotyczące powyższych, przeczytane i przepracowane dwie książki – tu jestem z siebie zadowolony, bo poza częścią projektową zrobiłem jeszcze kilka innych rzeczy poza konkursowych, które nauczyły mnie jak się tymi dwoma rzeczami do tworzenia podstawowych stron posługiwać. Do tego poznałem odrobinę bootstrapa.

Baza danych – tutaj udało się zrealizować wszystko w komplecie – całość danych jakie chciałem, żeby się znalazły w bazie wraz z powiązaniami tam się znalazły (commit całości do zakończenia konkursu będzie).

PHP – tu działa wszystko (chyba). Malutki skrypt do pobierania danych z bazy i przerzucania dalej do jQuery jest, śmiga i daje rade. Nie musi być mega optymalny ze względów pojemności bazy danych – zaledwie kilkaset rekordów. Starałem się żeby jednak nie przesadzić.

jQuery i JavaScript – tu leże. Pomimo wyłożenia sobie jak działa ajax, jak to wszystko powinno działać no nie mogę – nie czuje tego nadal. Dziwnie tak, ale chyba będę musiał przysiąść nad samym JavaScriptem, poznać jego a dopiero później jQuery. Mam nadzieję, że do końca konkursu jednak uda się to odpalić – coś się gdzieś „wykrzacza” i „nie robi” tak jak bym chciał. Jeśli się nie uda – poddać się nie poddam. Dokończę projekt choćby miałby skończony dopiero 1 czerwca o godz 0:05, czyli już po konkursie. Będzie działał i będzie w sieci 🙂

To wyżej to jakieś osiągnięcia związane z technologiami za którymi nigdy nie przepadałem i żebym je polubił to nie powiem, ale zacząłem mieć o nich jakieś większe pojęcie i powoli rozumiem jak ich używać. Jednak czuje, że bycie frontendowcem to jak przebywanie w baśni „tysiąca frameworków i miliona technologii”. To jak walka z hydrą. Jednego frameworka się uczysz, poznasz go ledwo co a już pojawiły się dwa nowe, które są podobno od niego o lata świetlne lepsze – wg mnie… DżawoSkrypcie nie tędy droga – panie tego nie ogarniesz. Ale co kto lubi.
Brakło też czasu. Wiem, że jak ktoś chce, to nie będzie spał po nocach i da rade. Ale konkurs nie był dla mnie priorytetem numer jeden. Mam jeszcze do tego życie prywatne i zawodowe. Chciałem pojechać na wakacje, jeździć na rowerze, rolkach, pójść w góry, obejrzeć film, poczytać książkę, schudnąć, przemalować ścianę, zrobić ciasto, albo najzwyczajniej o 21:00 pójść spać. Więc – ile zdążyłem tyle zdążyłem. Poświeciłem na to sporo czasu z czego jestem zadowolony. Udało mi się (chyba) doprowadzić bloga do końca, projekt do jakiego takiego końca (jeszcze te trzy dni powalczę z tym jQuery – może akurat ruszy) i poznać kilka nowych rzeczy.
Czytanie blogów współuczestników uważam za czas poświęcony na poznanie nowych rzeczy i ich podejścia do nich – zrobiliście na prawdę dużo i włożyliście w to całą masę pracy!

Czy mam szansę na wygraną? Uważam że absolutnie nie 🙂
W porównaniu do innych podejście miałem luźne, ale i założenie zupełnie inne.
Chcę życzyć wszystkim, którzy dowieźli swoje projekty i blogi do końca konkursu – sukcesu i chęci do dalszych prac nad rozwojem waszych projektów.
Bądźcie dobrzy w tym co robicie i rozwijajcie się dalej.

Pozdrawiam,
Romek

 

Darmowy e-book.

Witaj!

Jak codziennie tak i dzisiaj na www.pucktpub.com dostępna jest kolejna darmowa książka w wersji elektronicznej.

Dzisiaj (jeszcze przez ok 2 godziny) można za darmo pobrać PDFa, ePub i Mobi z książką „Effective Python Penetration Testing”. Jeśli ktoś jest zainteresowany to polecam.
Po przeglądnięciu w/w pozycji uważam że warto 🙂

Skrócony spis treści:

Chapter 1: Python Scripting Essentials
Chapter 2: Analyzing Network Traffic with Scapy
Chapter 3: Application Fingerprinting with Python
Chapter 4: Attack Scripting with Python
Chapter 5: Fuzzing and Brute-Forcing
Chapter 6: Debugging and Reverse Engineering
Chapter 7: Crypto, Hash, and Conversion Functions
Chapter 8: Keylogging and Screen Grabbing
Chapter 9: Attack Automation
Chapter 10: Looking Forward

Boli jedynie to, że całość opisana jest w Pythonie 2.7, a nie w którejś kolejnej wersji Pythona 3.x. Cóż – nie można mieć wszystkiego. Jednak dla chcącego nic trudnego (może ciut). Zawsze można samemu opisane techniki i skrypty przełożyć na wersje 3.x, dopisać trochę treści i mieć świetne publikacje 🙂
Jeśli ktoś się spóźni na pobranie z Packt’u a chciałby tą książkę to niech pisze – podeślę.

Pozdrawiam,
Romek

 

Jaki język na początek…?

Witaj!

Też zastanawiasz się jaki język wybrać na początek? Od czego zacząć naukę, co wziąć na warsztat jako pierwsze? Nie, nie Python, nie Java, nie C#, nawet nie Perl… weź po prostu język angielski!

Boli, wiem – nie ma lekko. Sam przez niego cierpię. Młode lata gdzie wiedza i umiejętności językowe przychodzą łatwiej dawno mi odeszły. Obijanie się i lenistwo wygrały. Dziś walczę zacięcie. Mam kibiców który mi w tym pomagają, napędzają, gonią i wspierają – dziękuję wam!

Język angielski w całej strukturze IT jest bardzo ważny. Dokumentacje, tutoriale, opisy, książki itd. Wszyscy wszystko piszą po angielsku – jest to język wiodący i ważny podczas rozwoju kariery, nauki, ale też w życiu codziennym. Wyjazdy w delegacje zagraniczne, rozmowy z kontrahentami, czy chociażby wakacje za granicą. Wszędzie tam on się przydaje, otwiera nam drzwi do poznania innych, nawiązania kontaktu czy zapytania o drogę do najbliższego sklepu z jakimś jedzeniem.

Czego ja używam do nauki?

  • etutor.pl – portal z kursem języka angielskiego – płatny
  • diki.pl – podpięty pod w/w portal słownik języka angielskiego – wg mnie jeden z najlepszych
  • shebang.pl – godny polecenia, rozwijany, angielski dla programistów
  • ang.pl – darmowy serwis z całym mnóstwem słówek i wytłumaczeniem gramatyki
  • British Council – podcasty i gramatyka
  • Podcasty Diki.pl – podcasty z dołączone do słownika
  • Study English Online – kanał na YT wg mnie godny polecenia

Poza tym książką do gramatyki English Grammar in use – granatowa i bordowa – wg mnie jedne z najlepszych.
Ostatnio też przeglądam English 4 IT z wydawnictwa Helion – przystępna i godna polecenia 🙂

A Ty z czego korzystasz podczas nauki języka angielskiego?

Pozdrawiam,
Romek

 

jQuery i Ajax – pobieranie danych z bazy

Witaj!

Czas leci. Szybko. Za szybko. Ledwo tydzień się zaczął, a tu już czwartek… i to wieczór. Padło też pytanie – „A wpis na bloga już zrobiłeś?”. Zrobię…

Dziś o tym jak pobrać dane z bazy przy pomocy jQuery i Ajaxa.

Wygląda to wszystko niby prosto i przyjemnie. Proste i przyjemne jest na pewno przy dłuższej współpracy, ale zacząć z tym nie jest jakoś specjalnie trudno. Ajax ze zwykłym JavaScriptem przynosił wiele problemów i czytając wątki na forach widziałem jak ludzie rwali sobie włosy z głowy, że coś w jakiś sposób im ruszyło i działało – ale nie, nie chciało i już.
Przy jQuery sprawa wydaje się dużo prostsza.

Przydatny podczas całych manewrów będzie nam PHP (aktualnie już jest w wersji 7) – coś musi obsługiwać zapytania do bazy i zwracać w jakiś sposób pobrane elementy.

Ale do rzeczy. W jQuery mamy kilka metod służących do obsługi ajaxa. Należą do nich: $.get, $.post, $.ajax oraz $.ajax z zastosowaniem typu danych.
Dwie pierwsze, chociaż proste, nie dają pełnej kontroli nad połączeniem. Ustawić w nich możemy w jaki sposób będą przekazywane dane poprzez wybór metody (get, post), skrypt który będziemy wywoływali, dane jakie będziemy przekazywali do skryptu, a także jedną funkcję w której określić możemy co robimy z danymi gdy już do nas wrócą. Wystarczy jednak tylko odwołanie do samego skryptu który chcemy wykonać – pozostałe parametry są opcjonalne. Może to wyglądać na przykład tak:

$.get(
    "pobierz_pierwiastek.php",
    {
        masa_atomowa: "1"
    },
    function(data){
        alert("Pobrałem: " + data);
    }
);

// w przypadku metody POST wystarczy zamienić $.get na $.post - tyle wystarczy.

Metoda $.ajax pozwala nam już troszkę rozwinąć skrzydła. Co prawda podobnie jak dwie powyższe metody wymaga podania jedynie adresu URL do skryptu działającego po stronie serwera, ale mamy do dyspozycji jeszcze kilka innych atrybutów.

Type – wybieramy typ połączenia: POST lub GET. Jako domyślne jest GET.
Data – przekazywane dane w formie klucz: ‚warość’.
DataType – typ danych jaki oczekujemy. Może to być xml, html, script, json, jsnop, text oraz inne „oddzielone spacją zmienne”.
Zdarzenia – zdarzenia związane z połączeniem. Jest ich całe mnóstwo. Podstawowe do wykorzystania to success, complete i error. Więcej funkcji można znaleźć bezpośrednio w dokumentacji http://api.jquery.com/jQuery.ajax/

Przykładowy wygląd zapytania typu $.ajax wraz z ustawionym typem danych json:
(Jeśli chcemy użyć bez konkretnego typowania danych wystarczy usunąć linijkę z dataType i odpowiednio typować dane w PHP.

$.ajax({
    type : "POST",
    url : "pobierz_pierwiastek.php",
    dataType : 'json',
    data : {
        masa_atomowa : 1,
        nazwa_pierwiastka: 'Hel'
    },
    success: function(ret) {
        // Funkcja, która ma zostać wywołana, jeśli żądanie się powiedzie. 
        // Funkcja przeszukuje trzy argumenty: 
        // Dane zwrócone z serwera, sformatowane zgodnie z parametrem dataType; 
        // Ciąg opisujący status; 
        // Obiekt jqXHR (w jQuery 1.4.x, XMLHttpRequest).
    },
    complete: function() {
        // Funkcja, która ma być wywołana, gdy żądanie zostanie zakończone (po wykonaniu pomyślnego i wywołania zwrotnego błędu).
        // Funkcja pobiera dwa argumenty: obiekt jqXHR oraz ciąg klasyfikujący stan żądania ("sukces", "niezmodyfikowany", "błąd", "czas oczekiwania", "przerwanie" lub "Parsererror").
    },
    error: function(jqXHR, errorText, errorThrown) {
        // Funkcja, która ma zostać wywołana, jeśli żądanie nie powiedzie się. 
        // Funkcja odbiera trzy argumenty: obiekt jqXHR, ciąg opisujący typ błędu, który wystąpił i opcjonalny obiekt wyjątku, jeśli wystąpił. 
        // Możliwe wartości drugiego argumentu (oprócz null) to "timeout", "error", "abort" i "parsererror". 
        // Po wystąpieniu błędu HTTP errorThrown odbiera tekstową część stanu protokołu HTTP, na przykład "Nie znaleziono" lub "Błąd serwera wewnętrznego".
    }
});

Po wywołaniu powyższego zostaną do skryptu PHP przesłane metodą POST dwie zmienne, które będą dostępne odpowiednio jako:

$_POST['masa_atomowa']

$_POST['nazwa_pierwiastka']

Następnie aby dane zwracane zostały przesłane do skryptu w postaci json musimy je umieścić w tablicy i zwrócić poprzez:

<?php
    $masa_atomowa = (int)$_POST['masa_atomowa'];
    $nazwa_pierwiastka = (string)$_POST['nazwa_pierwiastka'];

    $data = array();
    $data['wynik_1'] = 'Moja masa atomowa to: ' + $masa_atomowa; //przykładowe działanie na zmiennej
    $data['wynik_2'] = 'Nazywam się: ' + $nazwa_pierwiastka;

    return json_encode($data);
?>

Aby wyciągnąć powyższe dane które zostaną przesłane przez serwer i coś z nimi zrobić, posłużymy się obsługą zdarzenia success.

success: function(json) {
    jQuery.each(json, function(i, val) {
        console.log(i, val);
    });
}

Tym oto sposobem, dane trafią do naszej konsoli, gdzie zostaną wyświetlone.

Na dzisiaj to tyle.

Pozdrawiam,
Romek

Wakacyjny czas.

Witaj!

Tak, zdarzyły mi się wakacje w maju. Miały być później, miałem pisać i pracować, ale jednak. Spakowałem walizkę, zamówiłem hotel i lot (tak, oczywiście że biuro podróży i last minute).

Każdemu potrzebne jest wolne, a przedłużony weekend majowy to jednak dobra sprawa.
Przydało by się więcej. Poleżeć, odpocząć, przytyć… a nie, to ostatnie jednak nie.

Więc te ostatnie dwa tygodnie to był mój urlop. Pierwszy w tym roku – mam nadzieje, że nie ostatni. Już niestety wróciłem, czas od pojutrze wrócić do biura.
To może jeszcze ze trzy zdjęcia… Fuerteventura i Lanzarota to na prawdę piękne miejsca. Jeśli ktoś będzie chciał gdzieś polecieć odpocząć i coś zobaczyć – to tą część Wysp Kanaryjskich bardzo gorąco polecam.


Pozdrawiam,
Romek