Straciłem WSZYSTKIE notatki w OneNote!!!

OneNote to prawdopodobnie jedno z nielicznych narzędzi Microsoftu, które dobrze wyszło. Ten program jest jednym z elementów pakietu Microsoft Office. Możemy z niego także korzystać mając go pobranego ze Sklepu Windows, który jest dostępny od Windows 8. Trzecią opcją jest uruchomienie OneNote z przeglądarki, korzystając ze strony https://www.onenote.com/.

Ja osobiście korzystałem z tej drugiej opcji, bo wydawała mi się najwygodniejsza. Jak wkrótce się okaże zdecydowanie nie najbezpieczniejsza.

Jak udało mi się wszystko stracić?

Wbrew pozorom jest to bardzo proste. Kiedy korzystamy z OneNote ze sklepu Windows oraz z przeglądarki, aplikacja zapisuje notatki na OneDrive, nie robiąc żadnych kopii zapasowych. Wystarczy tylko taka nieświadoma osoba jak ja i chęć posprzątania (czytaj: usunięcia) wszystkiego na OneNote, żeby wszystkie plany, pomysły, informacje itp. bezpowrotnie wyparowały.

Czy można takim wydarzeniom zapobiec?

Pierwsza rzecz, jaka się nasuwa to nie usuwanie niczego z OneNote. Może i jest to jakieś rozwiązanie, ale mimo wszystko z zapomnienia, zaspania, zagapienia, albo innej chwilowej świadomości możemy przez przypadek notatki z OneDrive usunąć. Pasowałoby mieć wtedy kopię zapasową.

Korzystamy z aplikacji ze sklepu lub przez przeglądarkę

W tym przypadku muszę was rozczarować. Nie da się zrobić kopii zapasowej. Jest to spowodowane tym, że:

W menu nie ma żadnej opcji tworzenia kopii zapasowej.

2017-06-15 17_12_15-Notes użytkownika Lukasz — Microsoft OneNote Online

2017-06-15 17_12_51-Store

Z OneDrive nie można pobrać pliku z notatkami.

2017-06-15 17_13_18-Dokumenty — OneDrive

Po zsynchronizowaniu OneDrive z folderem programu w Windowsie powstaje tylko link przekierowujący do notatek na OneDrive.

2017-06-15 17_16_25-F__OneDrive_Dokumenty

Jest jednak druga opcja, która spowodowała, że przesiadłem się na inną wersję OneNote.

Korzystamy z programu z pakietu Microsoft Office

W tym przypadku program pozwala nam na stworzenie kopii zapasowej. Wystarczy wejść w Plik > Opcje > Zapisywanie i kopia zapasowa. Tam można ustawić folder kopii zapasowej oraz częstotliwość jej robienia. Można także wykonać ręcznie kopię zapasową.

2017-06-15 17_14_05-Opcje programu OneNote

Dzięki temu nasze notatki są nieco bezpieczniejsze, bo jeżeli stracimy notatki z OneDrive to możemy je znaleźć na dysku i odwrotnie.

To tyle na dziś. Jeżeli macie jakieś uwagi zachęcam do komentowania. Do następnego wpisu.

Ten ostatni, czyli podsumowanie Daj Się Poznać 2017

Dzisiaj jest ostatni dzień trwania konkursu, więc czas na podsumowanie.

Przez te 3 miesiące wiele się nauczyłem. Zarówno umiejętności czysto technicznych jak i tych związanych z produktywnością i prowadzeniem bloga. Nauczyłem się:

  • podstaw Gimpa
  • animowania ruchu
  • jak działa Rigidbody2D
  • jak działa Collider2D
  • jak stworzyć podstawową mechanikę gry platformowej
  • jak stworzyć AI botów
  • jak stworzyć UI w Unity
  • tego, że „Done is better than perfect”
  • trochę produktywności
  • przekonałem się, że blogowanie nie jest takie straszne jak je malują

Żeby nie było, że wszystko wyszło mi idealnie teraz napiszę gdzie zawiodłem:

  • nie pisałem tak regularnie jak planowałem (każdy wtorek i sobota)
  • reklamowanie mojego bloga, było bardzo skromne
  • nie stworzyłem MVP (Minimum viable product)

Statystyki

Bloga odwiedziło 322 osoby zostawiając 647 wyświetleń. Pod moimi postami pojawiło się 8 polubień i 14 komentarzy. Najczęściej wyświetlanymi wpisami były:

Czy to koniec bloga?

Na pewno nie. Prawdopodobnie będę wrzucać wpisy trochę rzadziej, bo 2 wpisy w tygodniu to trochę dużo. Wpisy będą także znacznie bardziej treściwe, bo będę miał więcej czasu, żeby je napisać.

Co z projektem?

Projekt zamierzam skończyć do takiego poziomu, jaki uznam za zadowalający. Będę także szukał grafika, bo szczerzę to, co nabazgrałem w Gimpie nie podoba mi się. Aktualny stan projektu można zobaczyć tutaj.

Podziękowania

Dziękuję wszystkim, którzy mnie wspierali w tym przedsięwzięciu. Wszystkim tym, którzy czytali moje wpisy, a także tym, którzy je komentowali.

Na koniec pozostaje mi tylko was zaprosić do tego, aby kontynuować czytanie mojego bloga, bo nowe wpisy już wkrótce…

Ten przedostatni

To jest przedostatni wpis, jaki piszę w ramach konkursu Daj Się Poznać 2017. Przedstawię w nim zmiany, jakie poczyniłem w ciągu zeszłego tygodnia.

Menu Główne

2017-05-31 16_10_37-Unity 5.5.0f3 Personal (64bit) - MainMenu.unity - Moon Problem - PC, Mac & Linux

Wzorowałem się na kokpicie modułu dowodzenia programu Apollo. Jedyną rzeczą, jaką tak naprawdę zmieniłem, było to co wyświetla główny wyświetlacz.

Kamienie

2017-05-31 16_15_42-Unity 5.5.0f3 Personal (64bit) - Level1.unity - Moon Problem - PC, Mac & Linux S.png

W Mario zbiera się monety. Na księżycu nie ma monet, ale są kamienie. Czemu więc nie zbierać kamieni? W przyszłości ilość zebranych kamieni będzie uwzględniana w wyniku na koniec poziomu.

Licznik czasu

Na screenie można też zauważyć licznik czasu, który także w będzie uwzględniany w wyniku na koniec poziomu.

Zmiana zachowania Cyklona

Cyklon.gif

Kolejną rzeczą, jaką zmieniłem była zmiana zachowania Cyklona w trybie obronnym, od teraz oprócz tego, że w tym trybie porusza się szybciej, zabija także swoich sojuszników (gracza przeciwników).

Ta zmiana sprawiła mi bardzo dużo problemów, ponieważ okazało się, że OnCollisionStay2D() zaczyna wywoływać się w kolejnej klatce po OnCollisionEnter2D(), gdzie znajdowały się odpowiednie instrukcje zabijające sojuszników. Rozwiązałem ten problem w ten sposób:

2017-05-31 16_32_33-Moon Problem - Microsoft Visual Studio

2017-05-31 16_33_03-Moon Problem - Microsoft Visual Studio

Błędy

Oprócz tego naprawiłem jeszcze parę bugów.

To tyle, jeżeli chodzi o ten wpis. Zachęcam do komentowania. Jeszcze dzisiaj ukaże się wpis podsumowujący moje całe zmagania w Daj Się Poznać 2017.

Praca wre

W ciągu ostatniego tygodnia udało mi się wprowadzić kilka zmian w projekcie.

AI między przeciwnikami

AI

Od teraz przeciwnicy nie będą usiłowali się przepychać tylko odwrócą się i pójdą w drugą stronę. Implementacja tego jest bardzo prosta. Wystarczyło każdy obiekt o tagu Enemy potraktować tak samo jak ścianę:

2017-05-21 14_36_44-Moon Problem - Microsoft Visual Studio

Zmiana poziomów

Od teraz po wejściu na lądownik, przeciwnik nie jest przenoszony na początek tego samego poziomu, tylko na początek następnego. To wszystko się dzieję dzięki kodowi poniżej, który jest umieszczony w klasie LevelManager:

2017-05-21 14_42_27-Moon Problem - Microsoft Visual Studio

Zdecydowałem się przenieść komponent LevelManager do elementu posiadającego Collider2D lądownika, aby uzyskać do niego dostęp wewnątrz skryptu.

Refaktoryzacja kodu

Udało mi się przenieść metody OnCollisionEnter2D() oraz OnCollisionStay2D() do klasy Character. Zawartość tej metody nadpisałem w klasie Player. Po za tym dokonałem parę drobnych zmian w różnych miejscach kodu. Całość można zobaczyć na GitHubie.

Plany na następny tydzień:

  • Menu główne
  • Monety
  • Licznik czasu
  • Tablica wyników
  • Skończyć poziom 1

To tyle, jeżeli chodzi o zmiany, jakie poczyniłem w ostatnim tygodniu. Zachęcam do komentowania. Do następnego wpisu.

„Done is better than perfect”

Jeżeli ktoś kojarzy Marka Zuckerberga to zapewne zna ten cytat, ponieważ jest to jeden z jego najsłynniejszych cytatów. Jednak, co oznaczają te słowa?

Skończone jest lepsze niż perfekcyjne? Ale jak to możliwe? Przecież perfekcja to coś idealnego, coś czemu nie można mieć nic do zarzucenia. Otóż nieprawda. Perfekcja wymaga dodatkowego czasu. Znacznie więcej czasu niż osiągnięcie stanu skończone.

Żeby przedstawić, o co dokładnie chodzi pokuszę się o przykład. Załóżmy, że robimy panel logowania do strony internetowej. Zrobiliśmy go i wygląda on tak:

2017-05-18 17_42_12-index.html

Podstawowa rzecz, jaką mieliśmy zrobić działa. Wszystko jest fajnie, ale kolor napisu „Zaloguj się!” nie pasuje do reszty. Trzeba to natychmiast zmienić!

2017-05-18 17_45_49-index.html

O teraz jest dobrze… Ale trzeba by tu jeszcze dać większy margines górny oddzielający pole hasła od przycisku.

2017-05-18 17_55_15-index.html

Jak pewnie się domyślacie można tak przerabiać ten formularz w nieskończoność, a i tak nie bylibyśmy wstanie powiedzieć, że jest perfekcyjny. A przecież naszym celem było zrobienie po prostu formularza. Użytkownik tego panelu naprawdę nie będzie zwracał wielkiej uwagi na odstęp między polami. On, NIE UWIERZYCIE, ale będzie chciał się tylko i wyłącznie ZALOGOWAĆ!

Ktoś mógłby powiedzieć, że to dotyczy tylko frontendu. Nic bardziej mylnego. W backendzie, głowimy się nad refaktoryzacją każdej pojedynczej funkcji, aby była jak najbardziej optymalna. Owszem, bardzo ważne jest dbanie o optymalizację kodu, ale czasem, kiedy już siedzimy w jednym miejscu przez definitywnie zbyt dużo czasu, trzeba po prostu powiedzieć dość. Kod działa. Trzeba przejść do kolejnego zadania.

Jeżeli rozważmy problem perfekcji w postaci wykresu zależności poziomu perfekcji od czasu wyjdzie nam w dosyć dużym uogólnieniu coś takiego:

Perfekcja od czasu

Jak widać na wykresie perfekcja jest bardzo kosztowna w czasie.

Podsumowując lepiej coś skończyć niż dążyć do perfekcji. Perfekcja jest rzeczą praktycznie nieosiągalną i trzeba sobie ją odpuścić na rzecz wykonania większej ilości zadań.

To tyle na dziś. Zachęcam do wyrażania swojej opinii w tym temacie w komentarzach. Do następnego wpisu.

Czasu coraz mniej, a jeszcze dużo do zrobienia.

Dzisiaj uświadomiłem sobie, że do końca Daj Się Poznać zostało nieco ponad 2 tygodnie. Najprawdopodobniej nie uda mi się, zrobić wszystkiego, co chciałem, więc ograniczę się do kilkupoziomowej wersji demonstracyjnej, a pracę będę kontynuował po konkursie. Nie wiem jeszcze, jaki będzie ostateczny cel, do którego dążę z moją grą, ale myślę, że udami się ją skończyć do końca wakacji. Być może będzie to wcześniej, ale wolę ostrożnie sobie stawiać limity czasowe. Teraz przejdę do zmian, jakie udało mi się dokonać w ciągu ostatniego tygodnia.

Ujednolicenie animacji umierania postaci

Uznałem, że warto ujednolicić umieranie postaci. Zrobiłem to z dwóch powodów. Po pierwsze w ten sposób skróciłem ilość kodu. Po drugie wygląda to nawet estetycznie. Oto przykład na podstawie śmierci gracza.

Player death animation

Implementacja tego wygląda znajduje się w klasie Character i wygląda tak:

2017-05-14 08_47_13-Moon Problem - Microsoft Visual Studio

Dla gracza dodatkowo flaga CanControl zmienia się na fałsz, żeby gracz nie mógł się poruszać po śmierci.

2017-05-14 08_48_21-Moon Problem - Microsoft Visual Studio

LevelManager

Dodałem nową klasę LevelManager, której zadaniem będzie decydowanie, który poziom uruchomić oraz zarządzanie pojawianiem się i znikaniem przeciwników z mapy. Ten element nie jest jeszcze do końca gotowy, ale można go zobaczyć na GitHubie.

Level 1

Ruszyły także pracę nad pierwszym poziomem gry. Jego zadaniem będzie wprowadzenie gracza w mechanikę poruszania się. Nie zobaczymy tam jeszcze żadnych przeciwników, głównie dlatego, że nie skończyłem pracy nad LevelManagerem.

To tyle, jeżeli chodzi o zmiany w tym tygodniu. Zachęcam do komentowania. Do następnego wpisu.

Jak zwiększam swoją produktywność?

Największym problemem, z jakim muszę się mierzyć podczas trwania konkursu to brak czasu. Zdecydowanie nie jestem święty, o czym już kiedyś napisałem, ale dzisiaj napiszę, jakie sztuczki stosuję, aby przynajmniej trochę zwiększyć swoją produktywność.

Drugie konto użytkownika w systemie

Tę sztuczkę stosuję od dosłownie 2 dni i jak na razie genialnie się sprawdza. Niedawno podzielił się nią Maciej Aniserowicz na Snapchacie i wydaje się świetna, więc od razu ją zastosowałem. Wszystko, co tak naprawdę trzeba zrobić to drugie konto w systemie. Na jednym koncie mieć rzeczy rozrywkowe, a na drugim wszystkie rzeczy związane z naszym zajęciem, które chcemy wykonywać produktywniej. W ten sposób, jeśli chcę wejść na Facebooka albo pograć w grę muszę wylogować się z „produktywnego konta” i zalogować się na drugie. Bardzo szybko okazuje się, że nie chce mi się bez powodu tego zrobić, więc zostaję na koncie produktywnym i dalej wykonuję zaplanowaną na dziś pracę.

Wstawanie wcześnie rano

alarm-clock-2116008_960_720

To jest dla mnie bardzo, ale to bardzo trudne do wykonanie, ponieważ bardzo lubię spać, ale prawdą jest fakt, że rano jestem bardziej wydajny niż wieczorem, więc staram się chodzić spać wcześniej, żeby wcześniej wstać i porobić coś rano.

Lista rzeczy do zrobienia

10519508175_f3ced9dfc2_z

Lista rzeczy do zrobienia, a właściwie odhaczanie elementów z tej listy bardzo motywuje mnie do działania, co przekłada się na kopa do pracy. Ja osobiście używam Todoista, ponieważ jest darmowy i jest stworzony do tego rzeczy.

Notification – turn off!

bell-1096280_960_720.png

Powiadomienia to zło. Nic bardziej nie może mnie wybić z rytmu pracy jak dźwięk od Messengera informujący o nowej wiadomości. W telefonie mam wyłączone wszystko, co się da. No prawie. Zostawiłem włączony dźwięk, że ktoś dzwoni, ale to akurat jest uzasadnione, ponieważ zwykle jak ktoś do mnie dzwoni to oczekuje odpowiedzi natychmiast.

To wszystkie praktyki, jakie osobiście staram się stosować. Jeśli chciałbyś się podzielić jakimiś swoimi zachęcam do komentowania. To tyle na dziś. Do następnego wpisu.