Jeszcze jeden blog o programowaniu

Radosne twórczości leniwego programisty

Archive for the ‘Dobre praktyki’ Category

Szkolenie pod tytułem „Atakowanie i Ochrona Webaplikacji” od Niebezpiecznika

leave a comment »

Dzięki współpracy z STXNext, w dniach 01-02.06 miałem możliwość uczestnictwa w szkoleniu pod tytułem: „Atakowanie i Ochrona Webaplikacji” prowadzonego przez Piotra Koniecznego z serwisu niebezpiecznik.pl.

Co w ramach szkolenia?

Ogromna wiedza prowadzącego, zadania praktyczne, świetna atmosfera i bardzo swobodne podejście Piotra do uczestników oraz (często) zabawne anegdotki z życia pentestera.

Czego się nauczyłem?

Między innymi tego, że 2 dni to zdecydowanie za mało, żeby zmienić swój sposób myślenia. Jak mówił prowadzący – poświęcając na rozwój ok. 3 godziny dziennie przez najbliższe 2 lata możemy dojść do momentu, w którym nasza wiedza pozwoli nam przekwalifikować się z programisty na pentestera. To była ta przykra informacja – oczywiście może ona być różna dla różnych ludzi :). Natomiast samo uczestnictwo w takim szkoleniu bardzo pozytywnie nakręca do działania i dalszej edukacji w tym kierunku.

W międzyczasie, oprócz ogromnej ilości teorii – od której głowa parowała – była możliwość spróbowania swoich umiejętności manualnych w otwieraniu kłódki z użyciem wytrychów 🙂

Czy szkolenie mogę polecić?

Zdecydowanie tak. Można sobie uświadomić, jak niewiele wiemy o bezpieczeństwie.

Written by filipgorczynski

2017.06.10 at 18:15:59

PyCode Carrots w Poznaniu

with one comment

PyCode Carrots logo

W dniach 27.11.2015-29.11.2015 w Instytucie Matematyki i Informatyki Uniwersytetu im. Adama Mickiewicza w Poznaniu odbyły się warsztaty PyCode Carrots. Z 500 zgłoszeń zostało wybranych 48 osób. Na 3 uczestników warsztatów przypadał 1 mentor + organizatorzy, więc wydarzenie całkiem udane. Miałem przyjemność bycia jednym z mentorów.

12274350_1070684122950778_2519210851228097787_n

Na Twittera spływały na bieżąco różności z imprezy – co można w większości znaleźć pod #goCarrots, #PyCode oraz @ggCarrots.

Oczywiście nie brakowało przerw od programowania w postaci prezentacji robotów Lego oraz zawodów sumo dla robotów, prezentacji Oculus oraz Sphero, szkolenia z umiejętności miękkich (głównie nt. Elevator Pitch), prezentacji firm oraz projektów oraz wystąpienia przedstawiającego możliwość przenoszenia jedzenia z gier do świata rzeczywistego.

Warto wspomnieć także o konkursach, w których do wygrania były m.in książki związane z Pythonem.

Dziękuję wszystkim uczestnikom, organizatorom i mentorom za wspólnie spędzony czas i wszystko, czego się od siebie nauczyliśmy.

Written by filipgorczynski

2015.12.01 at 09:22:55

PyTrening z PyLadies vol. 2 – Poznań

leave a comment »

pyladies

Cześć wszystkim,

ponieważ już jutro w Poznaniu rusza druga edycja nauki programowania w Pythonie pod szyldem PyLadies chciałbym serdecznie zaprosić wszystkich, którzy nie wiedzą gdzie lub boją się wystartować z nauką programowania.

Start: 21.10.2015 r., godzina 18:30, Politechnika Poznańska, Centrum Wykładowe – Piotrowo 2, Sala L 1.121.

 

Harmonogram (wstępny plan z możliwymi zmianami w przyszłości):

21.10 PyTrening 2.0 # 0 Spotkanie organizacyjne.
28.10 PyTrening 2.0 # 1 Wprowadzenie. Instalacja Pythona. Wstęp do konsoli. windowsowej/basha. „Hello World”.
04.11 PyTrening 2.0 # 2 Linux.
18.11 PyTrening 2.0 # 3 Wstęp do algorytmiki
25.11 PyTrening 2.0 # 3.1 Scratch
02.12 PyTrening 2.0 # 4 Typy danych
09.12 PyTrening 2.0 # 5 Słowniki, sety
16.12 PyTrening 2.0 # 6 Pętle
13.01 PyTrening 2.0 # 7 Praca z plikami
20.01 PyTrening 2.0 # 8 Funkcje, moduły
27.01 PyTrening 2.0 # 9 PODSUMOWANIE
02.03 PyTrening 2.0 # 10 List comprehension, map, zip, lambda
09.03 PyTrening 2.0 # 11.0 Klasy
16.03 PyTrening 2.0 # 11.1 Dziedziczenie
06.04 PyTrening 2.0 # 12 Web scraping
13.04 PyTrening 2.0 # 13 Flask
20.04 PyTrening 2.0 # 14 Alchemy
27.04 PyTrening 2.0 # 15 Okienka – GUI
11.05 PyTrening 2.0 # 16 Unit testing, TDD
18.05 PyTrening 2.0 # 17.0 Zadania z całego roku. Utrwalenie wiedzy – część I
01.06 PyTrening 2.0 # 17.1 Zadania z całego roku. Utrwalenie wiedzy – część II
08.06 PyTrening 2.0 # 18 PODSUMOWANIE

O ile wiem to oprócz uczestników bardzo mile widziani są także mentorzy.

Więcej szczegółów:
Twitter
Facebook

Serdecznie zapraszam.

Written by filipgorczynski

2015.10.20 at 09:34:11

Poważne zmiany – migracja do Pythona

2 komentarze

Python logo

Dzięki zaproszeniu na warsztaty Python Has Power organizowanym przez firmę STX Next dla programistów PHP udało mi się wstępnie zapoznać z praktykami wytwarzania oprogramowania panującymi w tej firmie.

I co z tego?

A to, że po upływie kilku miesięcy od warsztatów dojrzałem do poważnej decyzji – migracja do Pythona. Postanowiłem wziąć udział w rekrutacji. W stosunku do dotychczasowych rekrutacji (na programistę PHP), w których brałem udział ta trwała dość długo i oczywiście każde spotkanie to jednak był jakiś dodatkowy stres.

Co z tego wynikło?

Udało się i jestem szczęśliwym Pythonowcem. Pracuję w świetnym zespole, w jednym z największych Software House w Europie. Używam przyjemnego języka programowania. Wykorzystuję Scrum. Codziennie uczę się nowych rzeczy. Jestem pod wrażeniem, jak bardzo klient może być zadowolony z otrzymanego produktu. Zmieniło się też spojrzenie na pracę – znacznie przyjemniej rano otwiera się oczy.

Zmienia się także kierunek bloga. Zacznie się pojawiać więcej wpisów dotyczących Pythona kosztem PHP.

Written by filipgorczynski

2015.05.19 at 20:18:10

Napisane w Dobre praktyki, Luźne, Python

Tagged with

cd na sterydach – narzędzie do szybkiej zmiany katalogów w konsoli

leave a comment »

Przeglądając dziś RSSy natrafiłem na genialne w swej prostocie narzędzie – przydatne szczególnie dla osób spędzających dużo czasu w konsoli. Narzędzie to nosi prostą nazwę „go-tool” i dostępne jest pod adresem http://code.google.com/p/go-tool/, a jego jedynym zadaniem jest skrócić czas dostępu do najczęściej odwiedzanych katalogów poprzez tworzenie skrótów.

Instalacja narzędzia jest dość prosta – o ile posiadamy zainstalowanego Pythona:
1. Pobranie archiwum.
2. Rozpakowanie.
3. Przejście do rozpakowanego katalogu z poziomu konsoli.
4. Uruchomienie polecenia: python setup.py install.
5. Uruchomienie pliku go.py w nowo utworzonym katalogu: build/lib/go.py.
6. Wybranie lokalizacji umieszczenia pliku go.bat poprzez wybranie z listy ścieżek.
7. Konfiguracja skrótów już w trakcie korzystania z narzędzia.

Instrukcja obsługi dostępna jest po wywołaniu (http://code.google.com/p/go-tool/wiki/GettingStarted):

$ go --help
Quick directory changing.

Usage:
go <shortcut>[/sub/dir/path]    # change directories
# same as "go -c ..."
go -c|-o|-a|-d|-s ...           # cd, open, add, delete, set
go --list [<pattern>]           # list matching shortcuts

Options:
-h, --help                      print this help and exit
-V, --version                   print verion info and exit

-c, --cd <path>                 cd to shortcut path in shell
-s, --set <shortcut> <dir>      set a shortcut to <dir>
-a, --add-current <shortcut>    add shortcut to current directory
-d, --delete <shortcut>         delete the named shortcut
-o, --open <path>               open the given shortcut path in
explorer (Windows only)
-l, --list [<pattern>]          list current shortcuts

Ciekawą opcją – dostępną tylko w Windows – jest przełącznik -o, który w momencie użycia:

go -o <SKRÓT>

powoduje otwarcie okna w Eksplorerze Windows z katalogiem wskazywanym na <SKRÓT>.

Written by filipgorczynski

2013.02.28 at 23:43:11

Napisane w Dobre praktyki, Narzędzia, Python, Rozwiązania

Tagged with , ,

Drupal 7 – instalacja w języku polskim

leave a comment »

System Drupal sprowadza proces instalacji do możliwie najprostszych kroków i instalacja w języku angielskim jest bardzo intuicyjna, jednak czasem może zaistnieć potrzeba wprowadzenia instalacji w języku ojczystym.

Podczas uruchomienia procesu instalacyjnego Drupala drugi krok prosi nas o wybranie języka instalacji.

Jeśli potrzebujemy innego języka niż angielski dostajemy link prowadzący do opisu jak zrealizować instalację we własnym języku (Learn how to install Drupal in other languages – Naucz się jak zainstalować Drupala w innych językach). Jeśli ktoś nie poradziłby sobie z instalacją Drupala w języku angielskim, to zapewne także niewiele zrozumie z tego opisu.

Zgodnie z tym opisem przechodzimy na stronę z tłumaczeniem projektu Drupal (http://localize.drupal.org/translate/downloads) i wyszukujemy interesujący nas język. W naszym przypadku pobieramy język Polski

a ponieważ instalujemy Drupala w wersji 7 pobieramy najaktualniejsze tłumaczenie – dla wersji 7.15.
Zgodnie z krokiem drugim poradnika pobrany plik musimy skopiować do katalogu w którym przechowujemy Drupala – dokładnie do katalogu /profiles/standard/translations/.

Ostatni krok to kliknięcie linka „Reload the language selection page after adding translations” lub najzwyklejsze odświeżenie strony co przeniesie nas do kroku drugiego naszej instalacji:

Wybieramy język Polski i cieszymy się instalacją w rodzimym języku.

Written by filipgorczynski

2012.09.08 at 21:22:46

Przenoszenie linii lub zaznaczonego bloku w górę i w dół w Komodo Edit

leave a comment »

Komodo Edit jako jeden z ciekawszych edytorów pozwala pisać własne makra w językach JavaScript i Python. Mimo ogromnej ilości przydatnych funkcji nie posiada wbudowanego przenoszenia bloków oraz zaznaczenia w górę i w dół. Poniżej makra, które dodają takie działanie do Komodo Edit. Aby wszystko działało jak należy w Views | Tabs & Sidebars | Toolbox klikamy prawym przyciskiem myszy i wybieramy Add > New macro. Podajemy opisowe nazwy, np: Move Line or Move Selection Up, Move Line or Move Selection Down, jako język wybieramy JavaScript i w pole tekstowe wprowadzamy poniższe bloki kodu – otrzymujemy 2 makra. Aby korzystanie było wygodne podpinamy w drugiej zakładce (Key Bindings) skróty klawiaturowe, u mnie Ctrl+Shift+Up oraz Ctrl+Shift+Down.

Przenoszenie linii lub zaznaczonego bloku w dół:

komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus() };

var ke = komodo.editor;

if( ke.lineFromPosition( ke.currentPos ) == (ke.lineCount - 1) )
     return;

if (ke.selText){

     // Extend selection to beg of line at front and end of line at back
     var selStartLine     = ke.lineFromPosition(ke.selectionStart);
     var selEndLine       = ke.lineFromPosition(ke.selectionEnd);
     var numLinesSelected = selEndLine - selStartLine;

     var selStart = ke.positionFromLine(selStartLine);
     var selEnd   = ke.getLineEndPosition(selEndLine);

     ke.setSel(selStart, selEnd);

     // Copy the selected text and remove it
     var text =  komodo.interpolate('%s');
     komodo.doCommand('cmd_delete'); // This leaves a blank line in place of selection

     // Move our selection to a new place
     // First move our blank line up
     komodo.doCommand('cmd_lineNext')
     ke.lineTranspose();

     // Insert our text
     ke.insertText(ke.currentPos, text);

     // Restore selection
     var newSelStartLine = ke.lineFromPosition( ke.currentPos );
     var newSelEndLine   = newSelStartLine + numLinesSelected;

     var newSelStart = ke.currentPos;
     var newSelEnd   = ke.getLineEndPosition(newSelEndLine);

     ke.setSel(newSelStart, newSelEnd);

} else {

     komodo.doCommand( 'cmd_lineNext' );
     ke.lineTranspose();
}

Przenoszenie linii lub zaznaczonego bloku w górę

komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus() };

var ke = komodo.editor;

if( ke.lineFromPosition( ke.currentPos ) == 0 )
     return;

if (ke.selText){

     // Extend selection to beg of line at front and end of line at back
     var selStartLine     = ke.lineFromPosition(ke.selectionStart);
     var selEndLine       = ke.lineFromPosition(ke.selectionEnd);
     var numLinesSelected = selEndLine - selStartLine;

     var selStart = ke.positionFromLine(selStartLine);
     var selEnd   = ke.getLineEndPosition(selEndLine);

     ke.setSel(selStart, selEnd);

     // Copy the selected text and remove it
     var text =  komodo.interpolate('%s');
     komodo.doCommand('cmd_delete'); // This leaves a blank line in place of selection

     // Move our selection to a new place
     // First move our blank line up
     ke.lineTranspose();
     komodo.doCommand('cmd_linePrevious')

     // Insert our text
     ke.insertText(ke.currentPos, text);

     // Restore selection
     var newSelStartLine = ke.lineFromPosition( ke.currentPos );
     var newSelEndLine   = newSelStartLine + numLinesSelected;

     var newSelStart = ke.currentPos;
     var newSelEnd   = ke.getLineEndPosition(newSelEndLine);

     ke.setSel(newSelStart, newSelEnd);

} else {

     ke.lineTranspose();
     komodo.doCommand( 'cmd_linePrevious' );
}

Jeśli dobrze pamiętam to rozwiązanie pochodzi z forum ActiveState dotyczącego Komodo.

Written by filipgorczynski

2012.09.08 at 21:01:22

%d blogerów lubi to: