Maciej Aniserowicz's Blog, page 15

August 24, 2019

August 23, 2019

August 20, 2019

August 19, 2019

August 14, 2019

August 13, 2019

Lipiec 2019. Tylko spokój może nas uratować. Podsumowanie i raport finansowy.

Na swoim (nieaktywnym już) profilu na Patronite obiecałem publikować co miesiąc “raport finansowy”. Dodatkowo zamieszczam podsumowanie tego, co działo się w imperium devstyle w ostatnim miesiącu. Pokazuję… wszystko. Bez tajemnic. Enjoy!


Lipiec 2019 to – jak każdy lipiec – wakacje. Więc dzisiejszy tekst – i liczby – tak bardzo “na spokojnie”. WOLMO.


Tydzień spędziliśmy w Danii, gdzie odwiedziliśmy Legoland. Bardzo chciałem pokazać go Córeczce. No to pokazałem :). I git.


Wystartował #slowbiz, tak na poważnie. I git. Spotkaliśmy się online (w sumie już 2x), a wkrótce spotykamy się też offline.


Na pełnej petardzie pracę rozpoczęła Magda, nasz najnowszy członek zespołu. Ruszyła z kopyta i działa tak zajebiście, że jesteśmy niezmiernie (i niezmiennie) wdzięczni losowi, że nam ją zesłał podczas rekrutacji :). Magda rewelacyjnie uzupełnia świetną Anię, która w ciągu ostatniego roku wielokrotnie już pojawiała się w moich materiałach. Bez niej teraz to wszystko by się chyba zawaliło ;).

Gr8 job, girlz!!


No a poza tym… luz, blues i wolmo.



 


A teraz, jak zwykle: kasa -> podsumowanie -> linki.


Raport finansowy: przychody

Założenia:



pieniądze (brutto) wpływające na konto w bieżącym miesiącu
usługa mogła być zrealizowana w innym terminie

Pozycje:



książka “Zawód: Programista”: 7 507,71 zł
Program “DNA: Droga Nowoczesnego Architekta”: 98 990,75 zł
afiliacja LeadPages: 325,22 zł

W sumie: 106 823,68 zł



Raport finansowy: wydatki

Założenia:



kwota brutto, znikająca z konta, bez uwzględnienia odliczeń od podatków

Pozycje (linki afiliacyjne):



ZUS: 1 500,53 zł
stały zespół: 5 817,30 zł

Ania (asystentka / PM)
Julita (księgowa)
Andrzej (montaż video)
Krzysiek (montaż audio)
Agnieszka (korekta tekstów)
Magda (slowbiz & gitmastery & copyrighting)


PIT-4: 190,00 zł
usługi prawnicze: 430,50 zł
DNA Droga Nowoczesnego Architekta:

zwroty: 1 299,00 zł
fundusz zwrotów: 98 990,75 zł
programowanie dodatkowych stron: 430,50 zł
próbne rysunki slajdów: 120,00 zł


biuro

czynsz: 554,03 zł


narzędzia i usługi

Obsługa Klienta (IMKER): 281,67 zł
LibSyn: 56,21 zł
Shoplo: 60,27 zł
obsługa płatności online (BlueMedia): 227,09 zł
telefon Orange: 50,00 zł
XMind Zen: 0 zł (opłacone do 09/2019)
MailTrack: 0 zł (opłacone do 05/2020)
Vimeo: 0 zł (opłacone do 10/2019)
ConvertKit: 0 zł (opłacone do 09/2019)
LeadPages: 0 zł (opłacone do 10/2019)
CoSchedule: 0 zł (opłacone do 09/2019)
Google Storage: 0 zł (opłacone do 11/2019)
DropBox: 0 zł (opłacone do 02/2020)
DropBox (dla Ani): 0 zł (opłacone do 06/2020)
infakt: 0 zł (opłacone do 01/2020)
wFirma: 0 zł (opłacone do 09/2019)
ToDoist: 0 zł (opłacone do 11/2019)
Headspace: 0 zł (anulowane)
Bonjoro: 95,21 zł
SleepCycle: 0 zł (opłacone do 06/2020)
ActiveCampaign: 1 198,86 zł (na slowbiz; 3 miesiące, opłacone do 09/2019)
Grammarly (dla Magdy): 227,71 zł (opłacone do 01/2020)


edukacja

kurs Google Analytics (x3): 900,00 zł


projekt gitmastery

koszulka Programistok PushPull: 69,00 zł
bluza Programistok GIT PULL: 133,00 zł


slowbiz

koszulka “Ja lubię WOLMO”: 45,00 zł


 zdrowie

psychoterapia: 1 100,00 zł


marketing

reklama Facebook: 1 512,15 zł
reklama Google: 0 zł


domeny

antyhustle.pl: 12,18 zł


książki

Yvon Chouinard “Let My People Go Surfing”: 66,15 zł
Jordan B. Peterson “12 życiowych zasad”: 46,90 zł
Bishop Gary John “Unf*ck yourself. Napraw się!”: 27,99 zł


wsparcie 1 autora na Patronite: 16,00 zł
bilet na spotkanie MiroBurn Mafia: 65,00 zł
książka “Zawód: Programista” (obsługuje firma IMKER)

wysyłka: 1 963,08 zł
magazynowanie: 301,35 zł


samochód:

leasing: 1 774,56 zł
benzyna: 721,57 zł
parking: 101,90 zł



W sumie: 122 163,00 zł


Podsumowanie i plany

Kilkanaście tysi na minusie. Ale zdupy biznesmen! Jest oj jak bardzo bardzo źle! Niekoniecznie wbrew pozorom :).


W wakacje z założenia nie zarabiam, bo wakacje to czas na inne działania. Takie jak wyjazdy, relax i prace administracyjno-porządkowe.


Trwa teraz wiele ustaleń i rozmów na przyszłość. Pojawiają się pomysły. Wdrożyliśmy nowy szablon devstyle. Pracujemy nad poprawieniem kanału YT. Migrujemy z jednego sklepu do drugiego. Z płatności jednych do drugich. Docieramy się i szykujemy do jesieni. Jak jeżyki i wiewióreczki :).


No dobra, co ja plotę.


W sumie pod względem finansów to strasznie nudny miesiąc. Prawie cały przychód to nadal spływające płatności za przedsprzedaż DNA. I całość wpada na specjalny “fundusz potencjalnych zwrotów”. I tyle.


Moja książka “Zawód: Programista” sprzedała się lepiej niż zwykle (w sumie to bardzo dobrze nawet!): zrobiłem krótką akcję promocyjną, obniżając ceny pakietów o parę złotych.


A ciekawe wydatki? Będziemy się uczyć Google Analytics, więc zarówno sobie jak i Dziewczynom kupiłem kurs z tego tematu. U jego autora zamawiamy też audyt i wewnętrzne szkolenie, ale to jakoś jesienią. Kupiłem trochę ciuchów “byznesowych” (bluza i koszulka z GITem na potrzeby gitmastery, koszulkę z Kucami i WOLMO na potrzeby SLOWBIZ), ale to w sumie grosze. Kupiliśmy też trochę narzędzi: Grammarly, żeby angielskie teksty się Magdzie łatwiej pisało. I ActiveCampaign, coby je przetestować (i całkowicie odseparować mailingi devstyle od slowbiz).


I to tyle. Nudy.


Sierpień równie “biedny” względem finansowym (a nawet jeszcze bardziej!). I tak ma być. Wakacje!


ALE! Już wkrótce odbędzie się moja pierwsza “autorska” konferencja offline, w moim kochanym Białymstoku. #slowbiz rozwija skrzydła. Wygląda na to, że pojawi się ponad setka osób, i to z różnych miast. Fajnie! Ciebie też zapraszam, jeśli masz chęć się spotkać :). Oooo tutaj kliknąć można:



Pojawiają się też pytania o kolejne miasta. Fajnie, pomyślimy, zobaczymy!


Póki co – dzięki za wszystko :). Jest fajnie.



I cóż… dzięki wielkie za zainteresowanie i przemierzanie tych ciekawych, dzikich ścieżek wraz ze mną!


A żeby nie było tak słodko to:


A teraz:


Podsumowanie aktywności devstyle 07/2019

Jak wspomniałem wcześniej: wakacje w pełni! Więc i treści mało.


Bartek niestrudzenie kontynuuje swój cykl fajny o GO, a poza tym tylko kilka VLOGów i cisza :). I dobsz.


Teksty:



Czerwiec 2019. Idziemy w miliony. Podsumowanie i raport finansowy.
Golang #3 – funkcje, struktury oraz własne typyBartłomiej Klimczak

Podcasty (i inne audio):



[brak]

VLOGi:



KONKURENCJA w moim BIZNESIE [vlog #289]
Tylko JEDEN ROK [vlog #290]
SLOWBIZ. Czym to jest i czym będzie? [vlog #291]
Dlaczego JUŻ nie robię PLANÓW BIZNESOWYCH? (i co z tego wynika) [vlog #292]
Za WCZEŚNIE na WNIOSKI [vlog #293]
Ciemna strona INSPIRACJI! [vlog #294]
Malutki. Smutny. Przerażony. Ja. [vlog #295]
Trzy Niebezpieczne Cytaty Motywacyjne [vlog #296]

Video:



[brak]

Wyjazdy / konferencje:



[brak]


====


Dzięki za uwagę i pozdro!


P.S. Jak zwykle, jeśli masz jakiekolwiek pytania: nie wahaj się, tylko je zadawaj! Na co mogę, na to odpowiem :).


The post Lipiec 2019. Tylko spokój może nas uratować. Podsumowanie i raport finansowy. appeared first on devstyle.pl.

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on August 13, 2019 21:55

August 12, 2019

July 23, 2019

Golang #3 – funkcje, struktury oraz własne typy

Przedstawiam trzeci odcinek tutoriala GO. Poprzednie znajdziesz pod tym linkiem!


Funkcje

Deklaracja funkcji zaczyna się od słowa kluczowego „func”, po którym występuje nazwa funkcji. Najczęściej. :) Są wyjątki od tej reguły, ale o tym za chwilę. Funkcja main() jest doskonałym przykładem funkcji, która nie przyjmuje żadnych parametrów oraz nic nie zwraca. Przyjrzyjmy się więc funkcji main() oraz funkcji, która zarówno zwraca wynik, jak i przyjmuje parametry wejściowe.



func favoriteNumber(i int) string {
return fmt.Sprintf("my favorite number is %d", i)
}

func main() {
fmt.Printf("Here is what the function returns: %s", favoriteNumber(13))
}

Jak widać, parametry wejściowe są podawane w nawiasach, natomiast typ zwracany jest umieszczony po owym nawiasie, przed klamrą otwierającą. Spójrzmy teraz na parametry.


To, co jest na wejściu funkcji

Kolejne parametry funkcji są wymieniane po przecinkach, tak jak pokazano poniżej.



func twoFavoriteNumbers(i int, j int) string {
return fmt.Sprintf("my favorite numbers are %d and %d", i, j)
}

I tutaj możemy skorzystać z ułatwienia: jeśli dwie zmienne (lub więcej) są tego samego typu oraz następują po sobie, to wystarczy podać typ tylko raz.



func favoriteNumbers(a1, a2, a3, a4, a5 int) string {
}

Jeśli podamy po nazwie, lecz przed typem zmiennej wielokropek ..., to otrzymamy tablicę elementów danego typu. Dokładniejsze omówienie map oraz tablic zostawmy sobie na później.



func favoriteNumbers(numbers... int) string {
return fmt.Sprintf("my favorite numbers are: % v", numbers)
}

func main() {
fmt.Printf("Here is what the function returns: %s\n", favoriteNumbers(7, 13))
fmt.Printf("Here is what the function returns: %s", favoriteNumbers(1,2,3,4,5,6,7,8))
}

Co możemy podać jako parametr funkcji? Praktycznie wszystko, nawet wskaźnik do innej funkcji. Możliwe, że brzmi to dziwnie, jednak czasami taką technikę się stosuje. Golang podczas kompilacji rozpozna, czy dana funkcja pasuje do deklaracji z funkcji `runAnotherFunction`, i jeśli definicje nie będą zgodne, to zgłosi błąd.



func runAnotherFunction(f func()string) string {
return fmt.Sprintf("the function returned: %s", f())
}

func hello()string {
return "Hello"
}

func world()string {
return "World!"
}

func anotherFunction(int i)string {
return "I do not fit:( "
}

func main() {
fmt.Println(runAnotherFunction(hello))
fmt.Println(runAnotherFunction(world))
//fmt.Println(runAnotherFunction(anotherFunction)) // won't compile
}

Omawiając parametry funkcji, należy powiedzieć o jeszcze jednej rzeczy. Otóż nie trzeba podawać nazwy parametru, lecz można zostawić tylko typ.



func funcWithoutNameInParams(string)string {
return "I have no idea how to get the parameter's value"
}

func main() {
fmt.Println(funcWithoutNameInParams("it does not matter"))
}

Korzysta się z tej możliwości, gdy – przykładowo – implementuje się interfejs, w którym nie wszystkie parametry są nam potrzebne. Nie otrzymujemy wtedy ostrzeżenia, że dana zmienna jest nieużywana.


Return, czyli to, co funkcja zwraca

Wartości zwracane w Go mają kilka ciekawych właściwości. Przede wszystkim może być ich więcej niż jedna. Rozdziela się je wtedy przecinkami oraz zamyka w nawiasach.



func multipleReturnValues() (int, string) {
return 4321, "I am second!"
}

func main() {
first, second := multipleReturnValues()

fmt.Printf("Hello, the multipleReturnValues() returned number %d and text '%s'", first, second)
}

Inną, nie wszędzie spotykaną cechą są tak zwane named return values, czyli nazwane wartości zwracane. Na początku wykonywania funkcji tworzone są zmienne o zdefiniowanych przez nas typach i nazwach, które możemy modyfikować. Dzięki temu na samym końcu nie musimy po słówku „return” podawać nic – funkcja zwróci właśnie te wartości jako wynik funkcji.



func namedReturnValues() (myDigit int, coolString string) {
myDigit = 123
coolString = "here I am!"

return
}

Oczywiście w takich wypadkach można po słówku „return” podać wprost to, co chcemy zwrócić, i wszystko zadziała, jak należy. W oficjalnym tourze znajdziemy informację, że powinno się używać tego mechanizmu tylko przy małych funkcjach. Zauważyłem jednak, że i w takich sytuacjach rzadko się korzysta z tej możliwości, ponieważ wiele osób uznaje ten sposób pisania funkcji za trochę mylący. Dlatego preferują (w tym również ja) podawanie explicit wartości zwracanych. Jak wszystko – ma to swoje plusy i minusy. Jeśli uważasz, że zwiększa to czytelność kodu – droga wolna!


Struktury

Składnię deklaracji struktury definiuje się podobnie jak w innych językach programowania. Krótko mówiąc – struktura jest to jakaś dana plus informacja o ewentualnym jej zachowaniu. Aby stworzyć strukturę, należy stworzyć nowy typ – strukturalny. Poniżej znajduje się przykład jednej z nich:



type Order struct {
ID int
User user.User
}

Pola w strukturze podaje się w klamrach, zaczynając od nazwy pola, po czym wskazuje się typ. Kropka jest operatorem (podobnie jak np. w Javie), który pozwala nam odwołać się do pól.


Nie zawsze mamy dostęp do wszystkich pól oraz metod w strukturze. Opowiem o tym więcej przy okazji pakietów oraz widoczności.


Nową instancję struktury tworzymy tak jak zwykłe zmienne, tylko że po nazwie struktury dodajemy klamry. W tych klamrach możemy (ale nie musimy) podać wartości dla naszej struktury. W przeciwnym wypadku zostaną one wypełnione wartościami domyślnymi (dla string będzie to pusty tekst, a dla wartości liczbowych – 0 i tak dalej).

Podajemy wartości pól analogicznie jak przy tworzeniu struktury – z tą różnicą, że zamiast typu wpisujemy interesującą nas wartość oraz oddzielamy nazwę pola od owej wartości dwukropkiem. Na końcu stawiamy zawsze przecinek.



order := Order{
ID: 123,
}

Nie musimy podawać wszystkich wartości oraz nie musimy tego robić w kolejności, w jakiej definiowaliśmy pola. Co ciekawe, jeśli będziemy podawać te wartości właśnie w takiej kolejności, to możemy pominąć typ.


order := Order{123}

Należy pamiętać, że musisz podać wszystkie pola dostępne w tej strukturze. Osobiście nie przepadam za tym rozwiązaniem, ale o gustach się nie dyskutuje. :)


Zachowanie (metodę) dodajemy do struktury oddzielnie, czyli poza opisem struktury.


Dla przykładu – klasa Order w Javie będzie wyglądać tak:



class Order {
int ID;
String firstName;
String LastName;

int getID() {
return this.ID;
}
}

natomiast w Go zapiszemy tak:


type Order struct {
ID int
firstName string
lastName string
}

func (o Order) GetID() int {
return o.ID
}

Konwencja jest następująca: na początku używamy słowa kluczowgo func, później w nawiasach podajemy obiekt naszej klasy, a następnie musimy podać funkcję, tak jak jest to opisane na początku tego artykułu.



func (o Order) FullName() int {
return o.firstName " " o.lastName
}

To by było na razie wszystko. Jeśli masz jakieś pytania – poniżej jest sekcja z komentarzami. :) Zamierzam nagrać tutorial (po polsku) o Go. Jeśli jesteś zainteresowany, to tutaj podaję link: Go wideotutorial. Widzimy się już wkrótce!


The post Golang #3 – funkcje, struktury oraz własne typy appeared first on devstyle.pl.

 •  0 comments  •  flag
Share on Twitter
Published on July 23, 2019 21:55

Maciej Aniserowicz's Blog

Maciej Aniserowicz
Maciej Aniserowicz isn't a Goodreads Author (yet), but they do have a blog, so here are some recent posts imported from their feed.
Follow Maciej Aniserowicz's blog with rss.