SkładQA 2017 – jak było?

Jakiś czas temu, bo 20 marca 2017, udało mi się zajrzeć na tegoroczną edycję testerskiej konferencji SkładQA. O samej SkładQA pisałam przy okazji omawiania wiosennych wydarzeń w IT.

Zespół KraQA nie zawiódł i tym razem. Profesjonalne prowadzenie konferencji, świetnie wybrana lokalizacja (obszerna hala Starej Zajezdni, która pomieści naprawdę sporo osób), dobre zaplecze techniczne (nagłośnienie itd.), ciekawi prelegenci i przekrój  różnorodnych tematów. Organizatorzy to profesjonaliści i to widać.

Merytorycznie mogę odnieść się jedynie do trzech ostatnich prezentacji:

  • Marcin Żołna & Karol Pękała – How to become a cybersecurity hero. Z początku myślałam, że ta prezentacja skierowana jest raczej do początkujących. Ale na szczęście nie tylko. Wyniosłam z niej coś dla siebie – wymienione zostało narzędzie OWASP, któremu z pewnością przyjrzę się bliżej.
  • Wiktor Żołnowski – Pragmatyczny QA. Na którejś edycji Quality Excites miałam możliwość wysłuchania prelekcji Wiktora, kiedy jeszcze zajmował się wdrożeniami Agile. Tym razem zaprezentował model CYNEFIN. Nawet nie wiedziałam, że tak nazywa się ten diagram (o którym pisałam zresztą we wpisie Dla kogo Scrum?, lecz w formie dużo bardziej uproszczonej). Warto zatem chodzić na konferencje, zawsze można się czegoś ciekawego dowiedzieć:)
  • Michał Sajdak – Hackowanie aplikacji webowych na żywo – wybrane przypadki. Ta prezentacja totalnie mnie zachwyciła. Prawdziwy show. Niektóre „sztuczki” pobieżnie znałam z artykułów na Sekuraku czy Niebezpieczniku, ale zobaczenie jak to wygląda na żywo – naprawdę robi wrażenie.

Podsumowując, było to naprawdę dobrze spędzone, INSPIRUJĄCE popołudnie. Chcę więcej i polecam wszystkim:)

Dla kogo Scrum?

Niedawno podawałam garść ciekawych informacji na temat Scruma.

Często słyszy się, że ta metodologia pracy nie jest dla każdego zespołu. Pewnie tak. Na jednym ze szkoleń widziałam ciekawy wykres „obszarów złożoności pracy”:

complexity

  1. Simple – dziedzina dobrze znana – tu sprawdzają się tzw. najlepsze praktyki, zalecenia z poradników itd.
  2. Complicated – dziedzina znana, ale trudna. Sprawdzają się dobre praktyki, ogólne „zalecenia”.
  3. Complex – dziedzina bardzo złożona, nie można powiedzieć, czy dane działania odniosą sukces czy nie. Metodą pracy są głównie eksperymenty – właśnie tutaj najlepiej działa Scrum!
  4. Chaos.

I dodatkowo wykres uczenia się w zależności od złożoności problematyki:

complexity2

  1. Simple – continuous improvement. Wystarczy po prostu działać, powtarzać – uczenie się jest proste, bez większych problemów.
  2. Complicated – continuous improvement – powiedziałabym: wzloty i upadki.
  3. Complex – continuous adaptive – błądzenie jak we mgle 😉 Jeden eksperyment zbliży nas do rozwiązania, inny oddali. Pamiętajmy, że adaptacja leży w głównych założeniach Scruma 🙂

Instalacja ROOT

ROOT jest biblioteką do analizy danych, statystyk, wizualizacji danych. Używany jest najczęściej w jednostkach naukowych (CERN, uczelnie itd.). Świetny opis instalacji tego frameworka znalazłam tu:
https://yannisflou.wordpress.com/2012/06/05/root-data-analysis-framework-on-ubuntu-12-04/.

Poniżej przedstawiam opis instalacji pod systemem Ubuntu 12.04, w języku polskim – dla absolutnych początkujących, nie znających systemu Linux.

  1. Download
    Ściągnęłam wersję ROOT 5.34/36 wybierając typ: „Source” na podstronie wersji: https://root.cern.ch/content/release-53436. (Po instalacji przedstawia się jako:
    v5-34-36@v5-34-36, Apr 05 2016, 10:25:45 on linuxx8664gcc)
  2. Rozpakowanie
    d9k@Nihilia:~$ cd rootSOURCE
    d9k@Nihilia:~/rootSOURCE$ gunzip root_v5.34.36.source.tar.gz
    d9k@Nihilia:~/rootSOURCE$ tar xvf root_v5.34.36.source.tar
    
  3. Miejsce docelowe instalacji
    ROOT-a installować będziemy w folderze /opt/ROOT/. Folder „opt” był używany niegdyś do instalowania oprogramowania niezwiązanego z systemem (coś jak windowsowe „Program files”). Obecnie zaleca się używać ścieżki /usr/local, w mojej instrukcji użyję jednak „starodawnych” rozwiązań :)Stworzenie folderu:

    d9k@Nihilia:~/rootSOURCE$ sudo mkdir /opt/ROOT/
    

    Stworzenie tymczasowej zmiennej globalnej (w następnych krokach „utrwalimy” ją, aby była dostępna także po zamknięciu tej sesji terminala):

    d9k@Nihilia:~/rootSOURCE$ export ROOTSYS=/opt/ROOT
    

    Możemy sprawdzić, czy się utworzyła:

    d9k@Nihilia:~/rootSOURCE$ echo $ROOTSYS
    /opt/ROOT
    

    Ok.

  4. Configure
    Configure to pierwszy krok instalacji. W skrócie Configure jest to skrypt, który na bazie podanych mu opcji (i zmiennych, uwarunkowań i zależności istniejących w systemie) tworzy plik Makefile, który z kolei zostanie użyty w kolejnych krokach.Można wyświetlić sobie helpa polecenia Configure – najlepiej zrzucając go do pliku, bo opcji konfiguracji ROOT-a jest ogólnie bardzo dużo. Instalować będziemy w opcjach domyślnych, wskazując jedynie miejsce instalacji.

    d9k@Nihilia:~/rootSOURCE$ cd root
    d9k@Nihilia:~/rootSOURCE/root$ ./configure --help > ../configure_help.txt
    

    I wywołanie samego polecenia – ze wskazaniem mu ścieżki, gdzie ROOT ma zostać zainstalowany:

    d9k@Nihilia:~/rootSOURCE/root$ ./configure --prefix=/opt/ROOT
    
  5. Make
    Wykonanie tego kroku trwało dość długo. Podczas tego etapu źródła są budowane za pomocą pliku Makefile, zawierającego instrukcje budowania.

    d9k@Nihilia:~/rootSOURCE/root$ make
    
  6. Make install
    Wreszcie ostatni krok. Na tym etapie skompilowany program jest kopiowany do miejsca docelowego (podanego w parametrze „prefix” na etapie konfiguracji).

    d9k@Nihilia:~/rootSOURCE/root$ sudo make install
    [sudo] password for d9k:
    ============================================================
    === ROOT BUILD SUCCESSFUL. ===
    === Run 'make install' now. ===
    ============================================================
    Installing binaries in /opt/ROOT/bin
    Installing libraries in /opt/ROOT/lib/root
    Installing headers in /opt/ROOT/include/root
    Installing /home/d9k/rootSOURCE/root/main/src/rmain.cxx in /opt/ROOT/include/root
    Installing cint/cint/include cint/cint/lib and cint/cint/stl in /opt/ROOT/lib/root/cint
    Installing icons in /opt/ROOT/share/root/icons
    Installing fonts in /opt/ROOT/share/root/fonts
    Installing misc docs in /opt/ROOT/share/doc/root
    Installing tutorials in /opt/ROOT/share/doc/root/tutorials
    Installing tests in /opt/ROOT/share/doc/root/test
    Installing macros in /opt/ROOT/share/root/macros
    Installing man(1) pages in /opt/ROOT/share/man/man1
    Installing config files in /etc/root
    Installing Autoconf macro in /opt/ROOT/share/aclocal
    Installing Emacs Lisp library in /opt/ROOT/share/emacs/site-lisp
    Installing GDML conversion scripts in /opt/ROOT/lib/root
    d9k@Nihilia:~/rootSOURCE/root$
    

    Udało się.

  7. Source
    Krok wymagany przez program ROOT – uruchomienie skryptu „thisroot.sh„, ustawiającego ścieżki używane przez program ROOT, takie jak $ROOTSYS, $LD_LIBRARY_PATH, $DYLD_LIBRARY_PATH, $PATH, $LIBPATH i wiele innych. Jego treść można oczywiście podejrzeć dowolnym edytorem:

    d9k@Nihilia:~$ cat /opt/ROOT/bin/thisroot.sh
    

    Ok, czas na wykonanie tego skryptu:

    d9k@Nihilia:~$ source /opt/ROOT/bin/thisroot.sh
    
  8. Uruchomienie
    Nareszcie możemy uruchomić program ROOT:

    d9k@Nihilia:~$ root
    *******************************************
    * *
    * W E L C O M E to R O O T *
    * *
    * Version 5.34/36 5 April 2016 *
    * *
    * You are welcome to visit our Web site *
    * http://root.cern.ch *
    * *
    *******************************************ROOT 5.34/36 (v5-34-36@v5-34-36, Apr 05 2016, 10:25:45 on linuxx8664gcc)CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
    Type ? for help. Commands must be C++ statements.
    Enclose multiple statements between { }.
    root [0]
    
  9. Utrwalenie zmiennych
    Po wyłączeniu terminala, ustawiona w poprzednich punktach zmienna ROOTSYS zniknie. Można ją utrwalić.Jak czytamy w helpie Ubuntu:
    „A suitable file for environment variable settings that affect the system is /etc/environment.
    An alternative is to create a file for the purpose in the /etc/profile.d directory.”Modyfikujemy zatem plik:

     d9k@Nihilia:~$ sudo gedit /etc/environment
    

    Dodając na koniec:

    ROOTSYS="/opt/ROOT"
    

    Aby nie trzeba było za każdym włączeniem terminala uruchamiać na nowo skryptu thisroot, można ustawić, aby skrypt był uruchamiany przy starcie systemu:

    d9k@Nihilia:~$ sudo gedit .bashrc
    

    Na końcu dodając linijkę:

    source /opt/ROOT/bin/thisroot.sh
    
  10. Gotowe 🙂

Jeśli chcesz natomiast przeczytać, jak zainstalować moduł LHAPDF, pisałam o tym tutaj.

Pascal – funkcja kwadratora, tablice i układ trzech równań

Kolejny po Proste programy-gotowce w Pascalu i Pascal – rekurencja wpis na temat programów w Pascalu. Dziś nieco bardziej „matematycznie”, choć nadal na poziomie licealnym.

Spis treści:

  1. Funkcja kwadratowa – klasyka.
  2. Operacje na tablicach – tablice przydatne są w rozwiązywaniu wielu różnych problemów. Warto wiedzieć, jak się nimi posługiwać. Krótkie demo.
  3. Układ trzech równań

Jedziemy:

Czytaj dalej

Google się obraziło

Google Analytics powiedziało mi, że już mnie nie lubicie. A przynajmniej mojego blogaska.

Statystyki bloga od lata 2016 do stycznia 2017. Żólte: wejścia z wyszukiwarki. Niebieskie: wszystkie wejścia.

W zasadzie to kompletnie nie ma się czym chwalić. Ale bardziej niż przyczyna, zainteresował mnie sam fakt. Powodów upatruję w zmianie algorytmów Google. Jak donoszą niektóre źródła nt. SEO, 14/15 grudnia 2016 miało miejsce uaktualnienie algorytmu. Jak widać na wykresie w Algroo (strona śledząca różne słowa kluczowe i zmiany pozycji stron w wynikach wyszukiwarki) istotnie „coś” się wtedy wydarzyło:

Wykres „stabilności” wyników w Google w Algroo. Czerwony pik: zawirowania 15/16 grudnia 2017

Na szczęście w tym miesiącu ponownie odbijamy się od dna;) Mam nadzieję, że moje przeboje z WordPressem nie wpłyną negatywnie na wyniki, a zmiana hostingu będzie tylko na plus.

Aktualne statystyki. Żółte: wejścia z wyszukiwarki, niebieskie: wszystkie wejścia.

Suma summarum bardzo cieszę się, że w swojej zawodowej pracy zboczyłam ze ścieżki „SEO” i udałam się w stronę, gdzie wyniki w większej mierze zależą od zaangażowania i włożonego wysiłku 😉

Ciekawe (i darmowe!) konferencje – wiosna 2017

Pracując w branży informatycznej warto być na bieżąco. Trendy zmieniają się jak w kalejdoskopie, co rusz na rynek wchodzą nowe frameworki i narzędzia. Całkiem niezłym sposobem na trzymanie ręki na pulsie jest uczestnictwo w konferencjach i wykładach. Wiele z nich jest darmowych!

Gdzie zatem warto zawitać wiosną 2017?

Marzec:

  • 16 – 18 marca (czwartek – sobota) – Studencki Festiwal Informatyczny, Kraków. Wstęp: free. Trzy dni najróżniejszych wykładów i warsztatów.
  • 17 marca (piątek)IT Academic Day 2017, Bielsko-Biała. Wstęp: free.
  • 20 marca (poniedziałek)SkładQA, Kraków. Wstęp: free. Niezależna konferencja testerska organizowana przez KraQA. Wielokrotnie bywałam na prelekcjach w ramach KraQA, toteż myślę, że z czystym sumieniem mogę polecić. Nie tylko testerom 🙂

Kwiecień:

  • 3 kwietnia (poniedziałek) – 4Developers 2017, Warszawa. Wstęp: 75zł (studenci) / 400zł / 450zł. Mnóstwo ścieżek tematycznych, od architektury aplikacji po gamedev i front-end.
  • 22 kwietnia (sobota)Lubelskie Dni Informatyki, Lublin. Wstęp: free.
  • 22 kwietnia (sobota)DEVCROWD, Szczecin. Wstęp: free. Dla entuzjastów Javy. Szczegółowego programu jeszcze brak.

Maj:

  • 11 maj (czwartek) – WeBB MeetUp, Bielsko-Biała. Wstęp: free. Studencka mini-konferencja, kilka całkiem ciekawych tematów, raczej dla początkujących.
  • 13 maj (sobota) – Kernel: Don’t panic, Kraków. Wstęp: free. Nieduża konferencja studencka poświęcona w tym roku tematyce bezpieczeństwa w IT.
  • 16 maj (wtorek), Kongres Bezpieczeństwa Sieci, Wrocław. Wstęp: free.
  • 17-19 maj (środa – piątek)InfoShare, Gdańsk. Wstęp: free. Kilka ścieżek tematycznych, nie tylko technicznych, ale także odnośnie tworzenia własnej firmy.
  • 26-27 maj (piątek – sobota) – BEST IT Festival 2017, Wrocław. Wstęp: free. Studencki festiwal poświęcony tematyce gier.
  • 27 maj (sobota), ngSummit 2017, Wrocław. Wstęp: free. Dla entuzjastów Angulara!

Czerwiec:

  • 23-24 czerwca (piątek – sobota) – Quality Excites 2017, Gliwice. Wstęp: free. Agendy jeszcze brak, niemniej konferencję bardzo polecam, nie tylko testerom!

Skąd natomiast czerpać informacje o wydarzeniach? Niezłym źródłem jest Facebook, blogi, LinkedIn. Jest również kilka aplikacji dedykowanych: Meetup, który uczy się polecać wydarzenia na podstawie historii użytkownika, Evenea umożliwiająca także zapisy albo kalendarz Crossweb.

Jak (nie) przenosić bloga WordPress na inny serwer

Wraz z początkiem marca postanowiłam ruszyć nieco ze sprawami.

Na pierwszy ogień poszedł blogasek. Przeniosłam się na inny hosting. Migracji dokonałam w sposób – jak to się niegdyś mówiło – lamerski, a wszystko to z racji braku dostępu do swojego komputera. Dla chcącego nic trudnego. Cały proces udał się, chociaż wszystko musiałam wyklikać w panelu WordPressa, a parę rzeczy nastręczyło mi problemów…:

  1. Przepięcie domeny – u rejestratora wpisanie adresów DNS nowego hostingu, w hostingu dodanie nowej domeny.
  2. Eksport treści ze starego bloga, za pomocą domyślnego narzędzia wbudowanego w platformę:
    Narzędzia –> Eksport.

    Jako wynik otrzymujemy plik XML ze wszystkimi wpisami i komentarzami.
  3. Instalacja WordPressa za pomocą pakietu Installatron – parę kliknięć i gotowe.
  4. Import – w ten sam sposób, co eksport:
    Narzędzia –> Import.
  5. Konfiguracja WordPressa – z poziomu panelu administracyjnego. Moje niezbędne minimum:
    • Dodanie tej samej templatki, co na starym blogu (Sparkling). Może nie jest szałowa i nowoczesna, ale w miarę mi wystarcza. W oko wpadła mi jeszcze Moesia, chociaż jest zbyt… designerska, Simple Live, które z kolei jest ciut staroświeckie i Twenty Twelve, które byłoby idealne, gdyby poszczególne wpisy były od siebie lepiej oddzielone. Kwestia zabawy CSS-em – do przemyślenia.
    • Instalacja wtyczek – Akismet (antyspam), Who Stole the Text Justify Button (guziczek justowania treści wpisu;)), SyntaxHighlighter (obsługa kodów źródłowych – oficjalnie nie jest wspierany w wersji  4.7.2 WordPressa, jednak z tego co widzę zadziałał – cóż, mam nadzieję, że nic się nie posypie).
    • Dodanie kodu Google Analytics.
    • Parę zmian konfiguracyjnych.
  6. Problemy – czyli co zostało mi do zrobienia (o ile znajdę czas):
    • Brak obrazków we wpisach.
    • Brak wpisów z lutego. Hihihi…
    • Brak formatowania wpisów 🙁
    • Brak wypisów (excerpt). Wszystkie wpisy są wyświetlane w całej swej długości.
    • Brak obrazków Gravatar komentatorów.
    • Wszystkie wpisy wylądowały w kategorii Uncategorized.

Czeka mnie zatem jeszcze trochę pracy. Jak to się mówi – „mądry Polak po szkodzie„. Można było nie śpieszyć się tak z przenosinami i po prostu przerzucić dane przez FTP, po czym dokonać aktualizacji całego WordPressa. Albo zainstalować którąś ze wtyczek wspomagających import/eksport. Cenne doświadczenie 🙂

Pascal – rekurencja

Dziś kontynuacja tematu „edukacyjnych” programów w języku Pascal – zastosowanie rekurencji.

Rekurencja jest to odwołanie się funkcji do samej siebie. Ale np. wywołując funkcję z innym parametrem (mniejszym/większym). Korzystając z rekurencji trzeba uważać, aby program nie wpadł w pętlę nieskończoną – zawsze trzeba przemyśleć warunek zakończenia programu.

Rekurencję można wykorzystać np. do obliczania silni, wartości ciągu Fibonacciego albo wartości wielomianu (schemat Hornera).

Oto kompletny kod, prezentujący wszystkie te przykładowe zastosowania rekurencji: https://gist.github.com/d9kgit/1a31b8cc4e96529ffb6961df6d1bc11f

Kod:

Proste programy-gotowce w Pascalu

Pascal, któż nie pamięta tego języka z czasów np. licealnych 😉 Do dziś w wielu szkołach jest traktowany jako język edukacyjny.

Podczas porządkowania dysku znalazłam kilka programików pisanych właśnie na lekcjach. Sporo czasu upłynęło – liczę że i dziś może komuś się przydają, zainspirują, a może tylko… poprawią nastrój 😉

  1. Kalkulator
  2. Średnia arytmetyczna

Oto i one:

Czytaj dalej