DSP – Progresu brak

Pisanie dwóch postów tygodniowo jest jak widzę sporym wyzwaniem. Przede wszystkim czasowym. Do tego realizacja projektu, to już doby za mało. No cóż, nie ma co narzekać. Każdy z Nas ma 24 godziny. Ja, Ty, Bill Gates czy Mark Zuckerberg. Kwestia jak je wykorzystamy. Ja najwyraźniej nie za dobrze, bo poza myśleniem nie zacząłem jeszcze kodować. A to już chyba mój czwarty tydzień bez progresu. Może niewłaściwie się do tego zabieram. Tak jak pisałem wcześniej zaczynam od RestAPI we Flasku. Ponieważ, już coś takiego robiłem uznałem, że będzie dobre na rozgrzewkę. Ale to już chyba za długa trwa. Kiedyś ktoś, gdzieś powiedział, że jak dobrze zaprojektujemy API to potem już z górki. Ale u mnie cały czas pod. Może się do tego źle zabieram. Jeśli, masz jakieś zdanie w tym temacie chętnie poczytam Czytelniku.

A tymczasem przed nami długi majowy weekend, pogoda za oknem raczej bliżej zimy, więc w końcu muszę znaleźć ten czas i odpowiednio go wykorzystać.

Pisanie na sterydach

Po świątecznej przerwie, czas zmobilizować się do pisania bloga. Trochę zardzewiałem. Pomyślałem więc, trzeba przyspieszyć pisanie artykułów. W moim przypadku to bardziej szkiców na artykuły. Pomysłów jest znacznie więcej niż czasu, który można poświęcić na pisanie. Ad rem, czyli do rzeczy.

Obiecałem o sterydach. Niestety nie dowieźli. Dealer znowu się spóźnia. No dobra, nie o takich sterydach miałem pisać. Miałem na myśli legalne wspomaganie pisania za pomocą narzędzi typu TextExpander.

Na co dzień używam macOS. System, który jak każdy unixopochodny automatyzację ma we krwi. Poczynając na terminalu, poprzez narzędzia do automatyzacji czynności typu Automator, Keyboard Maestro, Hazel, Alfred a na przyspieszających używanie fragmentów tekstu kończąc. To są narzędzia, które z mniejszym lub większym skutkiem używam w codziennej pracy. Dziś skupię się na tych ostatnich, czyli przyspieszających pisanie.

To snippet or not to snippet

Zapewne większość z moich czytelników używa snippetów, czyli fragmentów kodu, tekstu czy innej twórczości, którą wielokrotnie możemy wykorzystać. Zamiast tworzyć coś od początku sięgamy po gotowe rozwiązania. Znalazłem nawet narzędzie dedykowane o nazwie Snippets. Niestety nie używałem, więc nie wiem na ile użyteczne.

Innym sposobem na przyspieszenie jest korzystanie z wbudowanych w IDE mechanizmów autouzupełniania typu IntelliSense. Na co dzień używam Pycharm’a. Gdzie te mechanizmy podpowiedzi i uzupełnienia działają naprawdę świetnie. Drugim moim edytorem jest Sublime, który po dołożeniu mu kilku dodatków, również obsługuje te mechanizmy. Ma on też swój system tworzenia snippetów.

Dobrym przykładem na produktywne wykorzystanie idei snipettów jest, znany szczególnie wśród webdeveloperów, Emmet. Jest to plugin do wielu edytorów i IDE wykraczający daleko poza zwykłe kopiuj-wklej gotowych fragmentów. W rękach sprawnego frontendowca, może znacznie zredukować liczbę naciśnięć klawiszy w celu uzyskania tego samego kodu.

Wymienione wyżej przykłady pozwalają na sprawną pracę z dedykowanymi programami. Jednakże w pracy zazwyczaj nie ograniczamy się do jednego narzędzia, które służy nam do wprowadzania tekstu. Idealne byłoby narzędzie ogólnosystemowe. I tu z pomocą przychodzi nam TextExpander i tym podobne.

TextExpander, niech żyje król?

Ponieważ narzędziami do zwiększenia produktywności jeśli chodzi o pisanie zaraziłem się słuchając Mac Power Users , to długo jedynym znanym mi był TextExpander. Ponieważ nie czułem potrzeby korzystania z dodatkowych programów, a przy tym kosztujących powyżej 40$, nie miałem zamiaru korzystać z jego funkcjonalności. Jednakże, słuchając Macgadki dowiedziałem się o taniej alternatywie, kosztującym 5$ programie aText.

Postanowiłem sprawdzić na ile przydatny jest to program. Utworzyłem kilka rozszerzeń typu adresy email, najczęściej używane zwroty i starałem się pamiętać o ich użyciu. Na dodatek, przyznaję się bez bicia, korzystałem z niego dosyć chaotycznie. Dopiero teraz zaczynam porządkować sposób w jaki go wykorzystuję.

To be continued

NaRESTcie czas odpocząć

Chciałoby się rzec. Niestety, nie będzie mi to dane. Miałem rozpocząć kodowanie projektu w tym tygodniu, jednakże ból zęba skutecznie storpedował moje zamiary. Człowiekowi wydaje się, że może dużo wytrzymać, dopóki nie doświadczy bólu zęba. Zapewne inne bóle też nie są przyjemne, ale na szczęście znam tylko ten.

Plan był następujący – napisać szkielet REST API dla mojej aplikacji. Zostanie przeniesiony na następny tydzień, choć w związku ze zbliżającymi się świętami Wielkanocnymi nie będzie łatwiej go wdrożyć. Pożyjemy, zobaczymy.

Póki co ósemka nie daje znać o sobie. Trzeba podjąć decyzję, czy rwać czy leczyć kanałowo. Dentyście nie uśmiecha się żadna z tych opcji. Najważniejsze, że już nie boli.

Zaprzyjaźnij się z Processingiem

Jak zapewne część z Was słyszała do szkół wraca stare tzn. nowe. Nowa reforma edukacji. Obecni szóstoklasiści zamiast iść do gimnazjum, zostaną w 7 klasie szkoły podstawowej. Ci, którzy zostaną promowani, oczywiście 🙂

W związku z reformą jest nowa podstawa programowa, w tym również dla informatyki. Tak będą nazywać się dotychczasowe zajęcia komputerowe w szkole podstawowej.

W nowej reformie duży nacisk kładzie się na naukę programowania. Co w różnych środowiskach wywołuje spore emocje. Maciej Aniserowicz na swoim blogu również popełnił felieton.

Jako nauczyciel wyżej wymienionych przedmiotów mam mieszane uczucia. Ale to temat na inny wpis.

Staram się przygotować do tej zmiany, uczestnicząc w różnego rodzaju aktywnościach. Ostatniej środy miałem okazję wziąć udział w warsztatach poświeconych temu zagadnieniu.

Były to warsztaty przeznaczone dla nauczycieli przyszłych klas 7-8 i poświęcone były narzędziu do nauki programowania – Processing.

Edukacja informatyczna ma do swej dyspozycji wiele różnych narzędzi. Dominujący ostatnio Scratch, trochę zaniedbywany język Logo czy coraz popularniejszy Python. Każde z nich ma swoje plusy, a chodzi o to żeby te plusy nie przysłoniły nam minusów – jak mawiał prezes Ochódzki.

Wracając do Processingu jest to jednocześnie język i środowisko do nauki programowania przeznaczone dla osób, które oczekują szybkich efektów wizualnych swojej pracy. Np. nie musimy implementować animacji, gdyż dostajemy ją już domyślnie włączoną w funkcji draw().

Środowisko jest darmowe. Wystarczy je pobrać i rozpakować archiwum, aby rozpocząć pracę. Nie ma potrzeby instalacji. Domyślnym językiem w jakim programujemy jest Java. Można doinstalować jednak inne moduły, które pozwolą na pracę m.in. w javascript, pythonie.

Dostajemy prosty edytor tekstu wraz z przyciskiem uruchom. Napisany program możemy wyeksportować do pliku wykonywalnego działającego na platformie Windows, Linux czy MacOS. Załączony podręcznik pozwala zapoznać się ze składnią języka i jego wykorzystaniem na dołączonych przykładach.

Poniżej prosty program, który wykonaliśmy na zajęciach. Odbijamy poruszającą się piłeczkę i zbieramy za to punkty. Program nie jest doskonały, ale pokazuje jak przy pomocy niewielkiej ilości kodu można uzyskać szybkie i atrakcyjne dla uczniów efekty pracy.



int x = 400;
int y = 250;
int delta_x = 5;
int delta_y = 5;
int ball_diameter = 30;
int rectangle_x = 400;
int points = 0;


void setup()
{
  size(800, 500);
  textSize(30);
}

void draw()
{
  background(255, 0, 0);
  fill(255, 255, 255);
  ellipse(x, y, ball_diameter, ball_diameter);
  fill(0, 255, 0);
  rect(rectangle_x, 450, 200, 30);
  x = x + delta_x; 
  y = y + delta_y;
  if (x > rectangle_x && x < rectangle_x + 200 && y > 450 - ball_diameter / 2) 
    {delta_y = -delta_y; points++;}
  if (y > height - ball_diameter / 2) points = 0;
  if (x > width - ball_diameter / 2 || x < ball_diameter / 2) 
    delta_x =  -delta_x;
  if (y > height - ball_diameter / 2 || y < ball_diameter / 2) 
    delta_y =  -delta_y;
  fill(0, 0, 0);
  text("Points: " + str(points), 50, 50);
}

void  mouseDragged()
{
  rectangle_x = mouseX;
}

Ludzie posty piszą

Mija trzeci tydzień blogowaia. No dobra, trochę się rozpędziłem. Coś tam sobie piszę. Blogerzy to są Michał Szafrański z Jak Oszczędzać Pieniądze, Maciej Aniserowicz z Devstyle czy Kasia Tusk z Makelifeeasier.

Ten post powinien być o moich postępach w pracy nad projektem, ale znowu będzie nie na temat 🙁

O postępach krótko. W tym tygodniu za długo zastanawiałem się od czego zacząć. Czy REST API to dobry start, czy zacząć od bazy, czy może przemyśleć wygląd strony www. No cóż, rozterki początkującego i niedoświadczonego programisty. Postanowiłem zacząć od API, ponieważ stworzyłem już JEDNO w ramach nauki. Więc wydawało mi się to najprostsze do wdrożenia. A jak wiadomo wyobrażenia to jedno a rzeczywistość drugie. Czas spędzony w tym tygodniu uważam, za niezbyt produktywny w tym obszarze. Mam nadzieję, że przyszły tydzień przyniesie już jakiś konkretny efekt w postaci kodu.

A propos pisania. Przejrzałem pobieżnie kilka blogów biorących udział w konkursie. Na szczęście większość z nich nie przytłacza ogromem treści. Choć ilości pracy zaczynam już niektórym zazdrościć, pozytywnie znaczy się. Z podziwem patrzę jak ludzie są w stanie ogarniać kod, pisanie i życie, które też musi się toczyć.

Dzięki pierwszemu komentarzowi, który pojawił się na moim blogu trafiłem na twórczość kolegi Buliego – Prosto do celu. Jestem pod wrażeniem Twoich wpisów. Ich długości i merytoryczności. Szacun.

Automatyzuj co się da, mówili …

Dziś próbowałem ułatwić sobie życie. Pewnie coś, co dla osób zajmujących się blogowaniem jest sprawą normalną. Postanowiłem zautomatyzować zmianę rozmiaru grafik przygotowywanych na stronę.

Ponieważ od ponad dwóch lat korzystam z macOS postanowiłem wykorzystać narzędzie o nazwie Keyboard Maestro. Z predefiniowanych klocków możemy tworzyć własne kompozycje, które usprawniają powtarzalne czynności wykonywane na komputerze. Uruchamiamy je za pomocą różnego rodzaju wyzwalaczy, z których kombinacja klawiszy jest jednym z najprostszych.

Mój skrypt, nie do końca działał jak należy. Od czego jednak community skupiona wokół tego genialnego narzędzia. Na stronie forum, znalazłem gotowe makro.

Pierwsze testy okazały się pomyślne. Postanowiłem zdezaktywować moje makro i przypisać używany dotychczas skrót klawiaturowy do nowego. So far so good.

Minęła godzina, podczas której niezbyt intensywnie korzystałem z komputera. Przyszła pora na napisanie tego posta. Ku mojemu zdziwieniu nie działa klawisz backspace. Naciskanie nie powoduje żadnej reakcji. Sprawdzam w innych programach – nie działa. Sprawdzam inne klawisze – działają. Sprawdzam kombinację CMD + backspace, o dziwo działa. Czyli moje przypuszczenia o fizycznym uszkodzeniu klawisza – obalone. Na stronach Apple piszą o resecie SMC. Zwykły reset macbooka. Jest gorzej, touchpad nie reaguje na nacisk. Brak sterowania kursorem. Nie mam pod ręką myszki. Wyłączam laptopa przyciskim. Ponowny start. Touchpad reaguje. Logowanie. Wpisuję kilka słów, kasuję je. Backspace działa. Hura, hura, hura…

Ma radość była jednak przedwczesna. Uruchamiam iA Writera celem kontynuacji pisania. Backspace dead. I tu powinienem zaprosić do następnego odcinka za tydzień 🙂 Ale do północy jeszcze 15 minut, więc skończę.

W telegraficznym skrócie. Po przypisaniu skrótu w Keyboard Maestro do nowego makra, zamiast zdezaktywować stare, postanowiłem usunąć skrót. No jak usuwanie to backspace. Z kolei naciśnięcie jakiegokolwiek klawisza powoduje utworzenie nowego skrótu. Tym samym backspace stał się nowym skrótem dla starego makra. Jakby to powiedział prezydent Clinton – „Konfiguracja, głupcze”.

I tak półgodziny póżniej zamiast opisywać postępy w projekcie piszę o wyższości automatyzacji nad ręczną modyfikacją konfiguracji wszelakich.

A jak Ty ułatwiasz sobie życie Czytelniku?