Zaprogramuj Życie https://zaprogramujzycie.pl/ Świat IT na wyciągnięcie ręki! Sat, 02 Nov 2024 12:41:31 +0000 pl-PL hourly 1 https://wordpress.org/?v=6.8.5 https://zaprogramujzycie.pl/wp-content/uploads/2020/06/logo-mobile.png Zaprogramuj Życie https://zaprogramujzycie.pl/ 32 32 Własny cloud od kuchni – pomysły i narzędzia https://zaprogramujzycie.pl/cloud-od-kuchni-pomysly-i-narzedzia/ Sat, 02 Nov 2024 12:39:56 +0000 https://zaprogramujzycie.pl/?p=6681 Zaprogramuj Życie
Własny cloud od kuchni – pomysły i narzędzia

W ostatnim odcinku serii opisałem, co rozumiem przez termin cloud. Opisałem także początki mojego własnego systemu…

Własny cloud od kuchni – pomysły i narzędzia
Łukasz Bownik

]]>
Zaprogramuj Życie
Własny cloud od kuchni – pomysły i narzędzia

W ostatnim odcinku serii opisałem, co rozumiem przez termin cloud. Opisałem także początki mojego własnego systemu tego typu. W tym odcinku postaram się przybliżyć trochę więcej detali technicznych. Najpierw chciałbym Ci zaproponować kilka pomysłów na własny cloud. A mając w głowie taką główną ideę, spróbuję pomóc Ci dobrać odpowiedni tech stack. Zapraszam do lektury!

Na początek wybierz pomysł na cloud

Jeśli chodzi o pomysły, to tych może być mnóstwo. Naprawdę całe mnóstwo. Może to być własny prywatny OneDrive czy Google Drive. Mam na myśli klona pod względem funkcjonalności. Może to być system zarządzania wewnętrznymi wydatkami Twojego domostwa, własny TODO board albo np. integracja maili, wiadomości z różnych komunikatorów w jeden system. To wszystko co wymieniłem, wydaje się, że jest to kopiowanie już istniejących pomysłów, prawda? Każdy junior przecież ma listę TODO. Oczywiście, że tak! Z tym że to jest tylko lista TODO. A co z autoryzacją i uwierzytelnieniem? Co z backupami? Kwestia skalowania w poziomie? Monitoring zasobów i logów? I oczywiście można tak wymieniać i wymieniać. Cloud na każdą wąsko określoną funkcjonalność ma co najmniej kilka funkcjonalności infrastrukturalnych.

Wynika to z tego, że cloud to system wysokiej dostępności. W tym momencie rozszerzamy sobie poniekąd definicję terminu cloud. Do definicji z ostatniego odcinka serii możemy dodać, że jest to taki system, który zazwyczaj jest zgodny z podejściem HA, jest redundantny i cechuje go wysoki stopień integracji modułów między sobą. Podsumowując, zwykle chodzi tylko o to, aby spróbować zrobić coś, co będzie służyło Tobie. Zawsze wtedy, gdy będziesz tego potrzebował.

Po burzy mózgów ustal stos technologiczny

Skoro zaproponowałem kilka pomysłów na własny system cloud to mogę przejść do zasugerowania stacków technologicznych. Dobór stacku będzie zazwyczaj zależny od tego, jaki język znasz. Wpływ na ten wybór powinien mieć przede wszystkim typ zadań jakie chcesz, aby cloud wykonywał. Wynika to z tego, że każda technologia nadaje się do innych typów zadań. Przykładowo, jeśli wiesz, że chcesz zbudować modularny monolit zgodnie z architekturą Heksagonalną to wybierzesz ASP.NET bądź Spring. Z drugiej strony zakładając, że chcesz zbudować mikroserwisy lub miniserwisy będzie to zazwyczaj nodejs, Symfony czy Flask. Jeszcze innym przykładem jest aplikacja, która z góry wiesz, że nie urośnie poza kilka prostych CRUDów. Wtedy świetnym wyborem będzie Laravel bądź Django albo Ruby on Rails. Każdy z tych przykładów nadaje się do innego typu systemu ze względu na przewidywaną architekturę. Każda z tych technologii ma inny zestaw cech, który powoduje, że mają różne predyspozycje do różnych zastosowań.

Trochę więcej mięska…

Teraz wytłumaczę sens powyższego akapitu na przykładzie różnic między Symfony, a Laravelem. Patrząc na Symfony, można powiedzieć, że jest to microframework z rodziny Spring-like. Laravel jest z kolei z rodziny frameworków podobnych do Django i RoR. Chodzi głównie o warstwę modelowania logiki biznesowej. Symfony używa wzorca bazującego na Entity. Laravel zaś używa wzorca Active Record. Już tutaj rozstrzał między tymi wzorcami powoduje, że Symfony jest bardziej elastyczne, a Laravel tworzy duży narzut na nasz kod. W związku z tym, jeśli potrzebujemy system, złożony np. z mikroserwisów to dobierzemy Symfony.

Wynika to z tego, że mikroserwis jest bezpośrednio zależny od przyjętego konceptu na architekturę całości rozwiązania, nie ma żadnego „blueprintu„. To z kolei powoduje, że wymagasz by technologia, której użyjesz, pozwalała na dowolne manewry. Z przytoczonych dwóch będzie to Symfony. Jednak jeśli potrzebujemy zmontować coś na szybko, modularnie, ale monolitycznie to Laravel sprosta naszym oczekiwaniom.

Z mojego doświadczenia wynika, że technologie dające większą elastyczność lepiej sprawdzą się w dalszym planie. Oczywiście takie rozwiązania są trudniejsze w utrzymaniu, mając niewielkie doświadczenie w programowaniu. Z tego samego powodu czas rozwoju takiego systemu jest często znacznie dłuższy. Jednakże wiąże się to z bardzo dużymi możliwościami rozwoju w razie, jeśli nagle uznasz, że zmienisz skalę systemu. Zmiana skali systemu, tyczy się zarówno skalowania w górę, jak i w dół.

Personalnie mogę powiedzieć, że wybór ASP.NET był dobry w długiej perspektywie. Na start nauki Web nie był to najlepszy wybór, ale sumarycznie było to bardzo dobre posunięcie. W tym momencie, 3 wersja cloudu rozwija się i pozwala się dobrze skalować w pionie i poziomie. Takie możliwości daje ASP.NET. Jednocześnie bez odpowiedniej infrastruktury i organizacji pracy, której nie mogłem mieć. Z początku praca z tym stosem była po prostu uciążliwa i trudna.

Jakie elementy infrastruktury powinien mieć cloud?

Podsumowując poprzedni akapit, istotnym elementem przy budowaniu własnego rozwiązania typu cloud powinna być dla Ciebie towarzysząca infrastruktura. Poprzez termin infrastruktura mam na myśli głównie usługi typu Jenkins, czyli CI&CD, GitLab lub GitHub, jako solucja do wersjonowania, Grafana czy Kibana do wizualizacji logów, Elasticsearch do ich gromadzenia, Zabbix czy Munin do monitorowania, Docker lub Kubernetes do konteneryzacji itd. Tak naprawdę nie ma żadnych, które by definiowały cloud. Każdy z nich robi co innego, więc poniekąd jest wymagany. Zwykle każdy z nich pomaga w automatyzacji działań, a to jedno z założeń cloudu. To od Ciebie będzie zależeć, co jest istotne, a co nie, jednak zalecam zainwestować w każdy z wymienionych pionów: wersjonowania, CI&CD, wizualizacji i agregacji logów oraz monitorowania. W PikaCloud każdy z tych pionów występuje, nie zawsze w tzw. production grade, ale jest obecny.

Podsumowanie – przykładowa architektura cloudu

W tej sekcji podsumuję Ci oba poprzednie podrozdziały tego odcinka. Zrobię to, posługując się przykładem hipotetycznego projektu, którego domeną biznesową będzie system analizy paragonów na podstawie analizy OCR oraz Machine Learning do kategoryzowania paragonów. Z perspektywy tak zwanego biznesu ten system ma służyć do agregacji zdjęć z paragonami, analizy tych zdjęć w celu ekstrakcji danych dot. zakupów. Będą to informacje dot. kategorii produktów oraz ich cen, a następnie budowanie historii wydatków razem ze statystykami.

Draft architektury

Na sam start musisz przemyśleć, jak chcesz powyższą logikę biznesową opisać, używając architektury. Na dobry początek może to być modularny monolit. Chyba wszyscy przywykliśmy, że właśnie w ten sposób zaczyna swoje życie każdy większy system typu Web, a tym bardziej cloud, który ma być wąsko wyspecjalizowany. Jeśli jednak projektując ten system, uznasz, że preferujesz podejście mikroserwisowe, nie wahaj się go zastosować. Na potrzeby uproszczenia opisu zdecydowałem się pójść dalej z modularnym monolitem.

Skoro zdecydowałeś już jaki ogólny „szablon” architektury przyjmiesz, w moim przypadku jest to wspomniany typ monolitu, możemy przesunąć się krok dalej. Teraz dobierz technologie pomocnicze, czyli technologie infrastrukturalne z kategorii wspomnianych wcześniej. Chodzi o technologie z zakresu: CI&CD, wersjonowania kodu, wizualizacji logów i monitorowania zasobów. Do takiego projektu w tym momencie wybrałbym następujące technologie:

  • Jenkins/TeamCity,
  • Grafana i Loki,
  • Zabbix,
  • GitLab lub GitHub(zależy czy on-premise czy on-cloud).

Dodatkowo to wszystko bym wsparł Terraformem i Ansible’em. Jeśli zaś chodzi o stack technologiczny, to prawdopodobnie wybrałbym znów ASP.NET albo Symfony. Możliwe, że do wyspecjalizowanych service’ów pomocniczych użyłbym czegoś w rodzaju Golanga lub Elixira. Jeśli zaś chodzi o infrastrukturę, użyłbym swojego serwera. W Twoim wypadku dobrą opcją będzie VPS albo serwer dedykowany. Następny i ostatni krok w tej fazie to rozpisanie sobie listy zadań do zrealizowania w ramach każdego obszaru. Może też to być rozrysowanie sobie w formie diagramów UML.

Implementacja architektury cloudu

Od tego momentu możesz już implementować powoli zarówno swoją aplikację, jak i wdrażać rozwiązania poboczne. Pamiętaj, że to nie będzie ani jeden wieczór, ani nawet tydzień. To będą miesiące żmudnej pracy po godzinach, aby to działało tak, jak tego chcemy. Ten punkt będzie tak naprawdę trwał najdłużej, a możliwe, że nigdy się nie zakończy.

Zakończenie

To już koniec tego wpisu. Więcej detali dotyczących implementacji wspomnianych elementów cloudu rozpocznę omawiać od następnego odcinka. A, skoro to czytasz, to znaczy, że dotarłeś do końca tego odcinka, za co Ci szczerze dziękuję i zachęcam do obserwowania dalej mojej serii. W następnym odcinku opowiem Ci o przykładowej, podstawowej konfiguracji repozytorium oraz przykładowej integracji tego z serwerem JetBrains TeamCity. Cześć i do następnego razu!

Własny cloud od kuchni – pomysły i narzędzia
Łukasz Bownik

]]>
Czy IP Box to pułapka na programistów? https://zaprogramujzycie.pl/czy-ipbox-to-pulapka/ https://zaprogramujzycie.pl/czy-ipbox-to-pulapka/#comments Wed, 20 Dec 2023 17:40:53 +0000 https://zaprogramujzycie.pl/?p=6691 Zaprogramuj Życie
Czy IP Box to pułapka na programistów?

Jako programista pewnie słyszałeś wiele opinii na temat IP Box. Niektórzy cieszą się mniejszymi podatkami, a inni boją się kontroli US. Czy słusznie?

Czy IP Box to pułapka na programistów?
Mateusz Michalski

]]>
Zaprogramuj Życie
Czy IP Box to pułapka na programistów?

Jako programista prawdopodobnie spotkałeś się z wieloma opiniami dotyczącymi ulgi podatkowej IP Box. Niektórzy z powodzeniem z niej korzystają i cieszą się mniejszymi podatkami. Inni rezygnują z oszczędności, bo słyszeli mity dotyczące masy formalności i kontroli z Urzędu Skarbowego. Jak to wygląda w rzeczywistości? Wraz z Pravna Group zebraliśmy ponad 30 najczęściej zadawanych pytań o ulgę podatkową dla programistów i odpowiedzieliśmy na nie bez prawniczego języka, niezrozumiałych formułek i zostawiania miejsce na domysły. 

Pravna Group — lider usług online w Polsce, specjalizujący się m.in. w uldze IP Box oraz zastrzeganiu znaków towarowych. Pomogli już ponad 4000 programistom zadbać o ich własne podatki. 

Każdego dnia 57 ekspertów dba o sprawne załatwianie spraw — od A do Z. Obsłużyli już ponad 12540 klientów, a ich skuteczność wynosi 99,8 %. 

W 2013 r. postawili sobie cel, by sprawy skomplikowane dla ich klientów pokazać w prosty sposób. Cel konsekwentnie realizują, dając im możliwość załatwienia spraw od ręki — przez internet.

1. Czym jest ulga IP Box?

IP Box to ulga w prawie podatkowym, która pozwala obniżyć podatek dochodowy do 5% (z 19%, jeśli jesteś na podatku liniowym). Skierowana jest do programistów oraz osób wytwarzających własność intelektualną i sprzedających prawa autorskie do wytworzonego utworu. Prace zakwalifikowane do ulgi muszą mieć charakter innowacyjny. W świetle prawa, do ulgi IP Box zaliczane są wszelkie prace polegające na kodowaniu, dzięki którym wytwarzane są nowe treści.

2. Kto może skorzystać z ulgi IP Box?

Ulga IP Box skierowana jest do osób:

  • fizycznych prowadzących jednoosobową działalność gospodarczą lub spółkę,
  • rozliczających się podatkiem liniowym lub na skali podatkowej,
  • realizujących prace prowadzące do wytworzenia, ulepszenia lub rozwinięcia kwalifikowanego IP,
  • posiadających zestaw umów i faktur za rok podatkowy.

Z ulgi mogą skorzystać m.in.:

  • Programiści IT (backend, frontend, fullstack), 
  • Programiści maszyn, 
  • Devops*, 
  • Testerzy automatyzujący, 
  • Architekci oprogramowania, 
  • Programiści baz danych, 
  • Scrum masterzy*, 
  • Twórcy gier 

*jeśli wykonywane są czynności związane z programowaniem

>> TUTAJ bezpłatnie sprawdzisz, czy kwalifikujesz się do ulgi <<

3. Jakie możliwości podatkowe ma aktualnie branża IT?

Branża IT cieszy się obecnie wyjątkowo korzystnymi możliwościami podatkowymi. Programiści mają szansę skorzystania z ulgi IP Box, co umożliwia obniżenie stawki podatku do zaledwie 5% (w porównaniu do standardowych 19%, jeśli korzystasz z podatku liniowego). Taka ulga może dać programiście nawet 24 000 zł oszczędności rocznie. To znaczące udogodnienie dla przedstawicieli branży IT, pozwalające zredukować obciążenia podatkowe i zwiększyć rentowność ich działalności.

4. Dlaczego warto skorzystać z ulgi IP Box?

Dzięki uldze programiści oraz spółki z obszaru nowych technologii mogą obniżyć podatek dochodowy z 19% do 5%, a tym samym zaoszczędzić nawet 24 000 zł rocznie.

5. Ile konkretnie można zyskać przy danych zarobkach?

Załóżmy, że zarabiasz 15 000 zł netto miesięcznie, a Twoje koszty wynoszą 300 zł. Na 12% ryczałcie, w ujęciu rocznym, zapłacisz 27 494,10 zł. Przy podatku liniowym bez ulgi zapłacisz już 39 865,90 zł.

Teraz porównajmy to z podatkiem liniowym z ulgą IP Box. Kwota do zapłaty maleje do 16 859,99 zł. Dzięki uldze IP Box zaoszczędzisz więc – w porównaniu z ryczałtem – aż 10 634,10 zł w skali roku. Natomiast, gdy zestawimy podatek liniowy bez ulgi i z jej uwzględnieniem, oszczędność wzrasta do ponad 23 000 zł rocznie. Poniżej 2 dodatkowe przykłady.

1. 20 000 zł netto miesięcznie + 300 zł kosztów.

  • Podatek na ryczałcie 12% – około 34 694,10 zł
  • Podatek na podatku liniowy – 54 195,18 zł
  • Podatek na podatku liniowym + IP BOX – 22 797,17 zł
  • Na plus IP BOX+podatek liniowy vs. ryczałt – 11 896,92 zł
  • Zwrot z IP BOX z US – 31 398,01 zł

2. 25 000 zł netto miesięcznie + 300 zł kosztów.

  • Podatek na ryczałcie 12% – około 46 947,54 zł
  • Podatek na podatku liniowy – 68 535,18 zł
  • Podatek na podatku liniowym + IP BOX – 28 737,17 zł
  • Na plus IP BOX+podatek liniowy vs. ryczałt – 18 210,36 zł
  • Zwrot z IP BOX z US – 39 798,01 zł

Więcej przykładów znajdziesz w poniższej tabelce.

6. Czy w 2024 r. ulga IP Box nadal się opłaca?

Ulga IP Box w 2024 r. wciąż będzie atrakcyjną opcją dla programistów i pozwoli wiele zaoszczędzić. Dlatego, jeśli przedsiębiorstwo planuje kontynuować innowacyjne projekty w 2024 roku, warto zwrócić uwagę na potencjał, jaki niesie za sobą ulga.

Zobacz, ile możesz zaoszczędzić korzystając z tego rozwiązania

Ryczałt vs IP Box

*Wyliczenia są dokumentem poglądowym i finalne zwroty, obliczone przez doradcę podatkowego mogą się różnić. Wykonane zostały przy kosztach 300 zł miesięcznie + mały ZUS (uwzględnione zostały stawki obowiązujące w 2023 roku). 

7. Czy to prawda, że możliwy jest zwrot nawet 218 tysięcy złotych?

Tak. Taką kwotę otrzymał jeden z klientów Pravna Group, ponieważ rozliczał kilka lat z ulgą IP Box. 

8. Jak ubiegać się o ulgę IP Box? Jak wygląda procedura?

Wszystko zaczyna się od wniosku. Potrzebujesz do niego przede wszystkim dwóch dokumentów: indywidualnej interpretacji podatkowej i ewidencji IP Box. 

Indywidualna interpretacja podatkowa to dokument wydawany przez KIS w celu potwierdzenia możliwości skorzystania z ulgi. Aby ją uzyskać, musisz zwrócić się do Krajowej Informacji Skarbowej. Udziela ona odpowiedzi, czy prawidłowo stosujesz przepisy podatkowe, na przykład czy zgodnie z prawem korzystasz z ulg podatkowych albo, czy możesz skorzystać z nich w przyszłości. Pozytywna interpretacja zapewnia niemalże 100% ochronę w razie kontroli Urzędu Skarbowego. 

Ewidencja IP Box to dokument, który składa się z dwóch części: wykazu pracy i wykonanych projektów oraz dokumentu przypominającego księgę przychodów i rozchodów. Wskazujesz w nim faktury, które kwalifikują się do Twojej ulgi. 

Na końcu przygotowujesz PIT/IP, czyli rozliczenie ulgi IP Box.

Pokażemy na własnym przykładzie, jak w 5 krokach można uzyskać ulgę IP Box.

  1. Jeśli nawiążemy współpracę, nasz doradca podatkowy skontaktuje się z Tobą w ciągu 2-3 dni roboczych.
  2. Analizujemy dostarczoną dokumentację. Na napisanie wniosku do KIS mamy 7 dni.
  3. Wysyłamy wniosek do KIS. Czas na jego rozpatrzenie wynosi 3-6 miesięcy.
  4. W ciągu 14 dni od otrzymania uzupełnionej ewidencji IP Box przygotowujemy PIT/IP (rozliczenie ulgi IP Box).
  5. Zeznanie podatkowe składamy do urzędu skarbowego. Ma on na wydanie zwrotu maksymalnie 45 dni.

9. Jakie dokumenty dokładnie są wysyłane do US i KIS? Czy ich wypełnienie jest skomplikowane? Kto się tym zajmuje?

Do Dyrektora Krajowej Informacji Skarbowej wysyłamy:

  • formularz ORD-IN, 
  • potwierdzenia wniesienia opłat skarbowych,
  • pełnomocnictwo wraz z drukiem PPS-1. 

Do Urzędu Skarbowego na etapie zwrotu wysyłamy:

  • korekty deklaracji rocznej,
  • interpretację, 
  • ewidencję IP Box,
  • umowy, faktury sprzedaży i kosztów,
  • potwierdzenia wpłat. 

Urząd nie zawsze poprosi o wszystkie z wymienionych dokumentów, wiele zależy od naczelnika i wewnętrznej praktyki danej placówki.

10. Jak prawidłowo prowadzić ewidencję? 

Ewidencja IP Box jest dokumentem niezbędnym do uzyskania ulgi – każdy, kto chce skorzystać z IP Box’a, ma obowiązek ją prowadzić. Zapisujesz w niej między innymi zrealizowane projekty, które można rozliczyć z ulgą oraz czas, jaki nad nimi pracowałeś. Można podzielić go na dwie części. 

  1. Pierwsza to wykaz naszej pracy oraz wykonanych w danych miesiącach projektów. Druga zaś jest typowo księgowa, to dokument podobny do księgi przychodów i rozchodów. Obowiązkowo wpisujemy tutaj – według wzoru – faktury kwalifikujące nas do ulgi. Każda osoba korzystająca z IP Box ma obowiązek prowadzić ewidencję. Zapisujesz w niej zrealizowane projekty, które można rozliczyć z ulgą oraz czas, jaki nad nimi pracowałeś.
  2. W drugiej części wpisujesz faktury kwalifikujące się do ulgi – przypomina ona księgę przychodów i rozchodów.

Prawidłowo prowadzona ewidencja stanowi potwierdzenie, dla jakich obszarów swojej działalności korzystasz z IP Box’a. Wiele osób obawia się przygotowywania ewidencji, ponieważ nigdzie nie wskazano jej urzędowego wzoru. Korzystając z pomocy Pravnej otrzymujesz nasz gotowy – już sprawdzony wzór, co znacznie ułatwia zadanie.

11. Czy KIS może decydować / zakwestionować co będzie kosztem w działalności?

Tak, Krajowa Informacja Skarbowa (KIS) może zanegować kwalifikację kosztu do ulgi IP Box. Na etapie składania wniosku o indywidualną interpretację podatkową należy dokładnie określić, jakie koszty chcemy uwzględnić w ramach ulgi IP Box. Na podstawie przedstawionych danych KIS ocenia, czy te koszty spełniają określone kryteria i kwalifikują się do ulgi.

12. Czy można wliczać do IP Box faktury kosztowe, które nie zostały ujęte w interpretacji?

Tak, nie musisz sztywno trzymać się kosztów, które podałeś we wniosku o indywidualną interpretację podatkową.

13. Czy potrzebuję specjalnej umowy z kontrahentem, aby skorzystać z ulgi?

Tak, aby skorzystać z ulgi konieczne jest zawarcie specjalnej umowy z kontrahentem. Istotne jest, aby umowa zawierała jasne postanowienia dotyczące przekazania praw autorskich związanych z projektem, który podlega uldze podatkowej. 

14. Czy zmiana projektu wymaga nowej interpretacji? 

Konieczność uzyskania nowej interpretacji podatkowej w przypadku zmiany projektu zależy od tego, w jaki sposób pierwotna interpretacja została sformułowana. W przypadku kancelarii PRAVNA Group, wnioski o interpretację są oparte na charakterze świadczonych usług w ramach działalności, a nie są ściśle związane z konkretnymi projektami.

Jeżeli pierwotna interpretacja została wydana w kontekście ogólnego charakteru usług świadczonych przez firmę, a nie dotyczyła bezpośrednio konkretnego projektu, to ewentualne zmiany w projektach niekoniecznie będą wymagały nowej interpretacji. Oczywiście, istotne jest, aby zmiany te były zgodne z zakresem działalności objętym pierwotną interpretacją.

O IP BOX dla programistów w animacji

15. Czy zmiana kontrahenta i nowa umowa wymaga nowej interpretacji? 

Konieczność uzyskania nowej interpretacji podatkowej w przypadku zmiany kontrahenta i zawarcia nowej umowy zależy od treści pierwotnej interpretacji. Jeśli interpretacja nie jest ściśle powiązana z konkretnym klientem, projektem, czy rozliczeniem konkretnych lat podatkowych, to w przypadku zmiany kontrahenta i świadczenia podobnych usług, nie będzie konieczne występowanie o nową interpretację.

W Pravna Group unikamy praktyki pisania interpretacji w sposób zbyt wąski, ograniczając go jedynie do konkretnego klienta lub projektu. Dzięki temu interpretacje są elastyczne i bardziej ogólne, co pozwala na uniknięcie konieczności ich aktualizacji przy każdej zmianie kontrahenta czy projektu.

Ważne jest również, aby przy zmianie kontrahenta zwrócić uwagę na treść nowej umowy B2B. Umowa powinna zawierać zapisy dotyczące przeniesienia na klienta praw autorskich do dzieł stworzonych w ramach otrzymywanego wynagrodzenia. Poprawne sformułowanie tych postanowień może mieć wpływ na kwalifikację kosztów oraz prawidłowe korzystanie z ulgi IP Box.

16. Jak urząd sprawdza, ile czyjejś pracy się kwalifikuje?

Urząd Skarbowy sprawdza, ile pracy kwalifikuje się do ulgi IP Box na podstawie dostarczonej ewidencji IP Box. W ewidencji krótko opisujemy, nad jakim projektem pracujemy w danym miesiącu i jakie koszty związane z projektem ponieśliśmy. Taka forma dokumentacji jest wystarczająca dla Urzędu Skarbowego, ponieważ przepisy nie precyzują konkretnego formatu, czy struktury ewidencji.

Ważne jest również, aby zarejestrować sumy przychodów, kosztów podatkowych, dochodów, strat, które podlegają opodatkowaniu niższą stawką, a także dochodu, który tej stawce nie podlega. Dzięki temu możliwe jest przejrzyste i pełne przedstawienie danych związanych z korzystaniem z ulgi IP Box.

17. Co w przypadku, gdy osoba pracuje wg umowy o współpracę (B2B) jako analityk biz-sys, ale zadania, które wykonuje są wszelakiej maści, począwszy od zbierania wymagań, poprzez rysowanie diagramów BPMN, a na samym przygotowaniu skryptów kończąc? Czy tutaj również ulga obowiązuje?

Jeśli osoba pracuje na umowę o współpracę (B2B) jako analityk biznesowy systemów informatycznych (biz-sys) i wykonywane zadania obejmują kreatywne działania związane z oprogramowaniem, to może skorzystać z ulgi IP Box. Warto jednak podkreślić, że ulga nie obejmuje wszystkich działań, lecz tylko te, które są uznawane za kreatywne i związane z procesem tworzenia nowych technologii. Ponadto, rozliczenie ulgi odbywa się w stopniu, w jakim czas poświęcony na te działania stanowi część ogółu czasu pracy.

Przykładowo, jeśli analityk biznesowy systemów informatycznych poświęca 60% swojego czasu na działania związane z tworzeniem oprogramowania, to ulga IP Box może być zastosowana do tego odsetka czasu. 

18. Czy oprócz ewidencji czasu pracy, konieczne jest gromadzenie innych ,,dowodów” na wykonywaną pracę? 

Nie, ewidencja IP Box to jedyny dokument, w którym należy udokumentować charakter wykonywanej pracy.

19. Jak długo należy trzymać dokumenty, potwierdzające prawo do korzystania z ulgi?

Zgodnie z przepisami podatkowymi przedsiębiorcy w Polsce powinni przechowywać dokumentację przez okres co najmniej pięć lat. Termin liczymy od końca roku kalendarzowego, w którym upłynął termin płatności ostatniego zobowiązania podatkowego. Ta sama zasada obowiązuje również w przypadku dokumentów potwierdzających prawo do korzystania z ulgi IP Box.

20. Jakie codzienne prace nie kwalifikują się do ulgi IP Box?

Do ulgi nie kwalifikują się np. szkolenia. 

21. Czy codzienne spotkania typu “daily” lub prace związane z wypełnianiem dokumentacji kwalifikują się?

Tak, wszystkie rodzaje pracy gdzie dążymy do finalnego produktu się kwalifikują.

22. Czy są wymagane raporty czasu pracy z konkretnym spisem co i kiedy było robione dla kontrahenta? Jeśli tak, jak taki raport wygląda?

Tak, raporty czasu pracy z konkretnym spisem co i kiedy było robione dla kontrahenta są istotne w kontekście korzystania z ulgi IP Box. Takie informacje należy zawrzeć w ewidencji IP Box. Wskazujemy w niej jaki projekt był realizowany w danym przedziale czasowym oraz ile godzin w danym miesiącu poświęciliśmy na pracę twórczą. Przykładowy wpis może wyglądać następująco: „Stworzenie oprogramowania do archiwizowania wyników badań pacjentów w elektronicznych kartach pacjenta”. Należy również precyzyjnie określić okres, w którym usługi były świadczone dla kontrahenta, np. między majem a sierpniem i doprecyzować sumę godzin z danego miesiąca, np. maj 160 godzin, czerwiec 154 godziny.

23. Czy wniosek o zwrot za lata 2019-2022 zwiększa szanse na kontrole?

Nie, wniosek o zwrot za lata 2019-2022 nie zwiększa szans na kontrole. Decyzje dotyczące przeprowadzenia kontroli podatkowej są podejmowane na podstawie różnych czynników, ale okres, który obejmuje wniosek o zwrot, nie jest sam w sobie wyznacznikiem zwiększających się szans na kontrolę.

24. Czy US może zażądać i skontrolować listę programów wytworzonych przez programistę w ramach IP Box?

Nie, Urząd Skarbowy nie ma prawa zażądać i skontrolować listy programów wytworzonych przez programistę w ramach ulgi IP Box. Zgodnie z zasadami tej ulgi, każda osoba ubiegająca się o korzyści z IP Box musi zbyć się praw do stworzonych utworów lub programów komputerowych na rzecz płatnika, czyli podmiotu zlecającego wykonanie danego dzieła. Oznacza to, że programista przekazuje prawa autorskie do swojego dzieła w zamian za wynagrodzenie.

25. Jakie takie kontrole US wyglądają?

Wspomniana kontrola to w rzeczywistości postępowanie podatkowe w sprawie stwierdzenia nadpłaty, inaczej czynności sprawdzającej. Przed wydaniem zwrotu z tytułu ulgi IP Box, w większości spraw urząd przeprowadza czynności sprawdzające. Możemy się ich spodziewać już po złożeniu wszystkich dokumentów i otrzymaniu pozytywnej interpretacji od Krajowej Informacji Skarbowej. Najczęściej cała procedura odbywa się za pośrednictwem rozmowy telefonicznej lub korespondencji mailowej. 

26. Co najczęściej kontroluje i podważa urząd? Na co uważać?

Urzędnicy przyglądają się między innymi umowom z kontrahentami, fakturom sprzedaży i zakupów, ewidencji i interpretacji IP Box i innym dokumentom, w zależności od praktyki danego urzędu. Głównym celem czynności sprawdzających prowadzonych przez Urząd Skarbowy jest sprawdzenie, czy w ramach swojej działalności badawczo-rozwojowej rozwijasz, wytwarzasz lub ulepszasz prawa, które należą do katalogu praw kwalifikowanych. 

W trakcie kontroli szczególnie istotne jest, aby zwrócić uwagę na zapisy umów z kontrahentami. Kluczowym elementem jest posiadanie jasnych i precyzyjnych zapisów dotyczących przekazania praw autorskich do utworów czy programów komputerowych, które są przedmiotem umowy. Pamiętaj o tym, bo US zwraca na ten element szczególną uwagę. 

27. Czy występują w praktyce kontrole „krzyżowe” kontrahentów?

Nie, w praktyce nie występują kontrole „krzyżowe” kontrahentów. Weryfikacja skoncentrowana jest na podatniku, który korzysta z ulgi IP Box. Organ podatkowy może jednak zwrócić się o potwierdzenie przeniesienia praw majątkowych wskazanych przez podatnika w ewidencji IP Box. 

28. Czy Wasi klienci przeszli kontrolę IP Box? 

Tak, zapytaliśmy o to naszych klientów. Większość klientów przeszła już tzw. czynności sprawdzające lub tradycyjną kontrolę skarbową. Wszyscy przeszli ją pozytywnie. Na swoim koncie mamy już ponad 4000+  zrealizowanych ulg IP Box. Każdą z nich realizuje wykwalifikowany Doradca Podatkowy. Patrząc na liczbę interpretacji, to najbardziej doświadczony w Polsce Doradca Podatkowy w temacie IP Box — komentuje Aleksandra Borowska, ekspert ds. IP Box w Pravna Group. 

Pravna - IP Box
Sprawdź bezpłatnie, czy sie kwalifikujesz

29. Czym jest wniosek o ograniczenie poboru zaliczek na podatek dochodowy?

Jest to możliwość wykazania, że zaliczki na podatek dochodowy (czyli podatek płacony w ciągu roku z miesiąca na miesiąc) są zbyt wysokie w stosunku do podatku, jaki będzie do zapłacenia za dany rok podatkowy. Zaliczki na podatek powstają w okresie od stycznia do grudnia danego roku i zmieniają się w zobowiązanie podatkowe. Jeśli chcesz skorzystać z ograniczenia poboru zaliczek, musisz przeprowadzić za każdy rok osobno postępowanie podatkowe w tej sprawie. 

30. Czym są koszty kwalifikowane?

Koszty kwalifikowane to takie, które bezpośrednio przekładają się na uzyskanie przychodu z danego prawa własności intelektualnej. Oznacza to, że są bezpośrednio powiązane z procesem tworzenia, rozwijania, bądź utrzymania danego prawa własności intelektualnej, a ich poniesienie jest niezbędne dla osiągnięcia korzyści finansowych z tego tytułu.

Przykłady kosztów kwalifikowanych obejmują wydatki na badania i rozwój związane z danym projektem, wynagrodzenia pracowników bezpośrednio zaangażowanych w prace nad prawem własności intelektualnej, zakup niezbędnego sprzętu i technologii, czy nawet koszty związane z promocją i wprowadzeniem danego produktu na rynek.

31. Czy zdarzają się przypadki podważenia ewidencji przez US?

Urząd Skarbowy ma prawo podważyć ewidencję IP Box, jeżeli została ona przygotowana w niewłaściwy sposób. Warto jednak podkreślić, że Urząd nie szuka na siłę „haczyka”, aby nie przyznać Ci ulgi. Czynności sprawdzające zazwyczaj ograniczają się do wymiany maili lub rozmowy telefonicznej, podczas której urząd prosi o przesłanie interpretacji indywidualnej oraz ewidencji IP Box, a następnie weryfikuje te dokumenty przed wydaniem zwrotu. Dzięki takim czynnościom masz pewność, że nikt nie cofnie Ci ulgi później – już po wydaniu zwrotu.

IP Box a kontrola z Urzędu Skarbowego

32. Jakie koszty kwalifikują się do IP Box?

Zacznijmy od tego, co możemy nazwać kosztem. Koszty w przypadku IP Box muszą mieć związek z wytworzeniem lub ulepszeniem konkretnego prawa własności intelektualnej i z pracami rozwojowymi/badaniami naukowymi nad nim. Dzielimy je na bezpośrednie i pośrednie.

Koszty bezpośrednie 

To koszty bezpośrednio związane z przychodami, które przedsiębiorca osiąga z danego kwalifikowanego IP. W sytuacji, gdy na przykład prowadziłeś prace nad swoim własnym oprogramowaniem, za koszty bezpośrednie można uznać:

  • zakup sprzętu komputerowego, 
  • zakup licencji na oprogramowanie, 
  • zakup literatury naukowej.

Koszty pośrednie 

To koszty, bez których nie byłoby możliwości wykonywania prac, w których efekcie których można osiągnąć przychód z kwalifikowanego IP. Są to np.:

  • usługa księgowa, 
  • materiały biurowe, 
  • wynajem biura, 
  • telefon, 
  • komputer, 
  • leasing samochodu, 
  • energia, 
  • koszty utrzymania budynku.

33. Czy samochód może być kosztem kwalifikującym się pod IP Box? Jak to rozliczyć?

Tak, samochód może być kosztem kwalifikującym się pod ulgę IP Box pod warunkiem, że można udokumentować, że koszty związane z pojazdem przyczyniły się do procesu tworzenia oprogramowania objętego ulgą. Przykładowo, jeśli programista dojeżdża samochodem do biura klienta, aby pracować nad jego projektem, to koszty związane z tym dojazdem mogą być uwzględnione w ramach ulgi IP Box. W praktyce, w ciągu roku  regularnie wykazujemy wszystkie przychody i koszty zgodnie z obowiązującymi przepisami podatkowymi. Jednocześnie, w ramach ewidencji IP Box konieczne jest szczegółowe udokumentowanie kosztów związanych z projektami, w tym także kosztów samochodu.

34. Jakich kosztów nie można uwzględnić przy IP Box?

Nie możesz uwzględnić kosztów, które nie mają bezpośredniego związku z kwalifikowanym IP, czyli z jego wytworzeniem, rozwinięciem, czy ulepszeniem. Są to m.in.:

  • odsetki,
  • opłaty finansowe np. opłaty za prowadzenie rachunku, za przelewy,
  • koszty związane z nieruchomościami,
  • koszty pracy własnej. 

35. IP Box a kredyt hipoteczny — czy są problemy? 

Na podstawie rozmów z naszymi klientami nie odnotowaliśmy przypadków, w których ulga IP Box miała bezpośredni wpływ na zdolność kredytową. Warto jednak zaznaczyć, że wszystko zależy tutaj od indywidualnego podejścia banku. 

36. Czy programiści pracujący w zespołach kwalifikują się do ulgi IP Box?

Tak, programiści pracujący w zespołach mogą kwalifikować się do ulgi IP Box, o ile spełniają określone kryteria przewidziane przez przepisy podatkowe. Projekty, nad którymi pracują, muszą spełniać określone wymagania, takie jak innowacyjność i rozwijanie nowych rozwiązań technologicznych. Mogą obejmować one tworzenie nowych aplikacji, oprogramowania, algorytmów, czy innych zaawansowanych technologii.

Podsumowanie

Uzyskanie ulgi IP Box nie jest tak skomplikowanym procesem, jak mogłoby się wydawać. IP Box to bezpieczne rozwiązanie podatkowe, dzięki któremu możesz zaoszczędzić nawet 24 tysiące złotych rocznie. W Pravna Group uzyskaliśmy już ponad 4000 ulg IP Box (ze skutecznością 99,8%), dlatego jeśli zależy Ci na jak najprostszym i najmniej stresującym procesie – skorzystaj ze wsparcia naszych specjalistów.

Pravna

>> Sprawdź bezpłatnie, czy kwalifikujesz się do ulgi IP Box <<

* Materiał powstał we współpracy z firmą Pravna – materiał sponsorowany.

Czy IP Box to pułapka na programistów?
Mateusz Michalski

]]>
https://zaprogramujzycie.pl/czy-ipbox-to-pulapka/feed/ 1
Własny cloud od kuchni https://zaprogramujzycie.pl/cloud-od-kuchni/ Sat, 09 Dec 2023 18:00:41 +0000 https://zaprogramujzycie.pl/?p=6656 Zaprogramuj Życie
Własny cloud od kuchni

Cloud to bardzo popularny termin, który przewija się w dzisiejszym Internecie, a w tym dot. branży IT wyjątkowo często. Mimo to natknąć się można na częsty brak zrozumienia tego, czym jest cloud i jak on powstaje. Dlatego w tej serii artykułów wytłumaczę co i jak na bazie własnego doświadczenia.

Własny cloud od kuchni
Łukasz Bownik

]]>
Zaprogramuj Życie
Własny cloud od kuchni

Cloud to bardzo popularny termin, który przewija się w dzisiejszym Internecie, a w tym dot. branży IT wyjątkowo często. Mimo to natknąć się można na częsty brak zrozumienia tego, czym jest cloud i jak on powstaje. Dlatego w tej serii artykułów wytłumaczę co i jak, na bazie własnego doświadczenia.

A na początku nie było nic…

Jak zawsze, wszystko ma swój początek. W moim przypadku nie był to początek specjalnie niezwykły czy interesujący. Ot, zwyczajna potrzeba samorozwoju połączona z potrzebą prywatnego „pojemnika” na bibliotekę mediów i podręczne pliki tekstowe czy multimedialne pod użytek szkolny. Oczywiście, można by zapytać — czemu więc nie Google Drive lub OneDrive. Odpowiedź jest prosta — bo tak, bo mogę. Chciałem zbudować własne rozwiązanie tego typu i to zrobiłem. Nie uzasadniałem tego jakoś sepcjalnie. Wystarczyło mi przekonanie, że w ten sposób się uczę oraz to, że jest to dla mnie i będę tego używał. Tak powstał zalążek projektu, który dziś nosi nazwę Pika Cloud.

Pierwsze kroki są zawsze najtrudniejsze

W tym wypadku oczywiście inaczej nie było. Początki sięgają roku 2017, gdy zaczynałem uczyć się Web developmentu, aby zostać full stackiem. Ze względu na to, że zaczynałem od Javy, a potem przeniosłem się na C# uznałem, że zacznę naukę w ASP.NET Core. Wtedy była to wersja 1.1… czyli już jakiś czas temu.

Już wtedy wiedziałem, że będzie to system webowy, który pozwoli mi na dostęp do plików na moim serwerze. Od samego początku system miał zintegrowane logowanie i listowanie plików ze wskazanego folderu. Oryginalny, utrzymywany aż do wersji 2.x, system kategoryzowania plików był zgodny z podstawowymi założeniami systemu plików. Nie było to oczywiste jednak, że pewnego dnia będzie to coś, co nazwę systemem typu cloud.

Cloud — co to i jak to definiujemy?

W poprzednim paragrafie powiedziałem, że nie podejrzewałem, że pewnego dnia mój system będzie cloudem. Warto jednak sobie wytłumaczyć co ten termin oznacza. Definicja cloudu już wtedy tj. ok. 2015 roku była rozmyta. Zależnie od tego, kogo zapytałeś o opinię, inną odpowiedź mogłeś uzyskać. Zgodnie z Wikipedią system IT typu cloud to nadtyp tzw. intranetu. Idąc za definicją intranetu, system tego typu musi być zamknięty, czyli należy do tzw. Deep Webu, ale powinien być dostępny z zewnątrz. Dodatkowo takie systemy muszą świadczyć usługi w zakresie: dostępu do danych, wspomagania modelowania procesów informacyjnych organizacji, prezentowania informacji publicznych lub chronionych, CRM, CMS itd.

Cloud w tym wszystkim ma bardziej ogólną rolę, jako nadtyp intranetu. Jest systemem, który pozwala na dostęp z zewnątrz, ale zwykle posiada część należącą do Clear Webu i część należącą do Deep Webu. Obie te części mają wpływ na architekturę systemu. Równocześnie, ma to też wpływ na UX czy UI systemu. Wszystkie te składowe — architektura, podział na części, UX i UI — to wynik przeznaczenia danego systemu.

System cloud to jeden z najbardziej generycznych (ogólnych) systemów, jakie istnieją. W zależności od różnych czynników będą one wyglądać i działać inaczej. Przykładowo, systemy cloud jak Azure to są systemy ogólnego przeznaczenia. Oznacza to, że ich część Clear Web nie należy do ich wnętrza, bo zazwyczaj są to:

  • podstrony promujące markę i usługi,
  • dokumentacja,
  • systemy zaprojektowane przez klientów Azure, GCP, AWS itd.

Czy to wszystko w ramach takich systemów? Oczywiście, że nie. Wszystkie takie cloudy posiadają swój wewnętrzny podsystem lub zespół podsystemów. Pełnią one funkcje intranetów, które pozwalają administrować takimi kolosalnymi systemami. Z drugiej strony są systemy takie jak właśnie PikaCloud. Są to systemy wyspecjalizowane. Rolą takich systemów jest realizowanie jednej, konkretnej usługi informatycznej. Cechą podstawową i wspólną dla nich jest to, że również posiadają części widoczne z Clear Web i Deep Web.

Własny cloud — zbyt ambitnie?

Z całego tekstu do tej pory, może więc wynikać, że cloud to bardzo ambitny projekt. Jednak nie jest tak, szczególnie jeśli weźmiemy pod uwagę drugi typ, czyli systemy wyspecjalizowane. Wynika to z tego, że takie systemy nie różnią się de facto od zwyczajnych aplikacji Web. Różnice mogą polegać na tym, jak rozwiążesz pewne kwestie architektoniczne. Żadne rozwiązanie nie będzie jednak definitywnie klasyfikować systemu jako cloudu per se.

Idąc tym tokiem myślenia, każda aplikacja, która coś realizuje, może zostać nazwana cloudem, o ile tylko spełnia wymagania wskazane wcześniej. Oczywiście, są różne podejścia do realizacji dokładnie tych samych funkcjonalności. Jedne będą bardziej dopasowane do zastosowań cloud, a drugie mniej.

Przykładowo wdrażanie cloudu, szczególnie takiego, który ma charakter systemu rozproszonego (ang. distributed system), będzie stanowić wyzwanie. Można to robić ręcznie lub automatycznie. Nie wpływa to na charakter dostępności części systemu czy jego role. Jednak, systemy IT, nawet te małe, łatwiej się wdraża automatycznie. Są do tego specjalnie narzędzia jak Ansible, Docker, Kubernetes czy Podman, Terraform, Jenkins czy TeamCity itd. Wymienione narzędzia stanowią dziś rdzeń narzędzi z zakresu infrastruktury cloud.

To jak zacząć?

Oczywiście, od tego, co zawsze — określ swoje potrzeby, zdefiniuj je jako potrzeby biznesowe, a następnie stwórz szkic projektu. Formą szkicu może być notatka, schematy UML, albo prosty wykres zależności na kartce, może być to cokolwiek, co pomoże Ci projektować. Następnym krokiem będzie dobranie stosu technologicznego tak, by było Ci, jak najprościej zrealizować stworzone założenia. Nigdy nie kieruj się tym, że dana technologia jest popularna czy nie. Kieruj się tym, co w Twoim wypadku będzie opłacalne. Wybierz narzędzia tak, abyś mógł powiedzieć, że są wygodne i łatwe w użyciu.

Przykładowo, chcesz zbudować na sam start prostą platformę CRM, która nie ma zbyt wiele dynamicznych widoków. Dobrym wyborem będzie wtedy nawet najprostszy SSR na bazie Symfony. Jeśli jednak w trakcie projektowania uznasz, że system wymaga np.:

  • dużo dynamicznych danych ładowanych w trakcie interakcji użytkownika z front-endem;
  • częstych zmian danych w tle, aktualizacji;
  • często pobiera te same dane, które są powtarzalne;
  • potrzeba dać dostęp do niektórych widoków offline
  • itd…

To dobrym wyborem może być inna technologia jak np. ASP.NET czy Spring Boot z Vue albo Reactem, a do tego Redis i RabbitMQ. Największym problemem może być z początku dobranie odpowiednich narzędzi do tego czego potrzebujesz. Dlatego też, na początek polecam zacząć od implementacji wprost własnego pomysłu, tak by uzyskać PoC, a następnie rozwijać i przebudowywać cały system.

I co dalej?

Po wykonaniu kroków powyżej wypłyniesz na ocean możliwości, więc musisz ustalić jeden kurs, który pozwoli Ci sprawnie rozwijać taki projekt. Pamiętaj, że najważniejsze jest zarządzanie Twoją własną chęcią do rozwoju takiego projektu. To nie jest projekt, który zbudujesz w jeden wieczór, ani nawet w tydzień. PikaCloud, a właściwie jego „core” rozwijam już od ponad 6 lat i nadal są kwestie do poprawy, ulepszenia lub całkowitej zmiany. W przeciągu 6 lat ten system miał dwie duże rewizje, w trakcie których „przeorałem” większość kodu i zmieniłem diamtralnie pewne koncepcje np. podejście do przechowywania plików. Podobnie zapewne będzie u Ciebie o ile zdecydujesz się coś takiego tworzyć jako swój side-project. Jednak tu Cię pocieszę, bo tak samo jak ewt. Twój przyszły projekt, ten kurs również będzie rozwijany i poprawiany, aby wspomóc Cię w szukaniu kierunku i inspiracji do rozwoju swojego mini-cloudu.

Z tego miejsca, chciałem Ci podziękować za przeczytanie całości tekstu jak również zaprosić na następny wpis z tej serii na blogu Zaprogramuj Życie, w którym będę rozwijać kwestię projektowania oraz doboru stosu technologicznego. Do następnego razu!

Własny cloud od kuchni
Łukasz Bownik

]]>
Jak zacząć programować? https://zaprogramujzycie.pl/jak-zaczac-programowac/ https://zaprogramujzycie.pl/jak-zaczac-programowac/#comments Wed, 15 Nov 2023 18:00:43 +0000 https://zaprogramujzycie.pl/?p=6590 Zaprogramuj Życie
Jak zacząć programować?

Chcesz zostać programistą i zastanawiasz się jak zacząć programować? Nie wiesz czy warto kupować drogie kursy, które "zagwarantują" Ci pracę? Zerknij tutaj!

Jak zacząć programować?
Mateusz Michalski

]]>
Zaprogramuj Życie
Jak zacząć programować?

Hmm… A może by tak zostać programistą? Wszędzie o tym mówią, ponoć jest ogromny niedobór programistów, ogromne zarobki, a w dodatku pół dnia siedzi się przed komputerem. Co może być takiego trudnego w pisaniu na klawiaturze?! Jeśli reklamy nie KŁAMIĄ to nauczę się tego w kilka tygodni i mogę żyć jak pączek w maśle!

Właśnie taki obraz bardzo często próbują wcisnąć nieświadomym osobom sponsorowane media, szkoły programowana i bootcampy… Tylko czy rzeczywiście tak jest? Jak wyglądają początki programowania? Od czego trzeba zacząć? Na co uważać? Jak i czego się uczyć? Wszystkie te pytania można by zastąpić jednym… Jak zacząć programować? 🤔

Technologie… którą wybrać?

No dobrze, podejmujesz decyzję, że chcesz zacząć programować i co teraz? Tutaj możliwe, że Cię zaskoczę ale na pewno nie zaczynasz od kursów za kilka albo kilkanaście tysięcy złotych! Dlaczego? Powody są bardzo proste… Skąd wiesz, że programowanie jest wgl. dla Ciebie? Sprawdziłeś to wcześniej? Wydasz worek pieniędzy albo weźmiesz kredyt lub pożyczkę, a co zrobisz jak okaże się, że nie czujesz się w tym albo chcesz zmienić technologię i odpuszczasz? Kasa przepada, długi zostają i próbujesz odsprzedać kurs starając się odzyskać chociaż część pieniędzy… 😢

Druga sprawa to kwestia technologii i języka programowania. Obecnie jest tak szeroki wachlarz możliwości i opcji, że bez wcześniejszej styczności z nimi, ciężko będzie Ci dokonać odpowiedniego wyboru. A wbrew pozorom to nie taka prosta sprawa! Najlepiej zacząć od poświęcenia chwili i zastanowienia się dlaczego chcesz rozpocząć naukę programowania i co tak naprawdę chcesz w tym IT robić? Strony internetowe, aplikacje mobilne, gry, programy do systemów wbudowanych, itd… Możliwości jest naprawdę bardzo wiele! Dlatego odpowiedzenie sobie na to pytanie jest kluczowe żeby rozsądnie ruszyć dalej i zacząć naukę.

Sprawdź i poznaj technologie programowania

A może znasz już odpowiedź? To teraz czeka Cię mała zabawa w detektywa! Sprawdź i zweryfikuj jakie technologie są wykorzystywane do tworzenia programów, które Ciebie interesują i przejdź z teorii do praktyki. Napisz kilka linii kodu w wybranych językach, sprawdź składnię, poznaj IDE, poczytaj o tym jak pracuje się z kodem, sprawdź czy są dostępne świeże materiały i jakiej są jakości, np. książki lub kursy na YouTube czy Udemy.

Uważaj na porady innych

Musisz też bardzo uważać i brać poprawkę na to co w kwestii pierwszego języka programowania podpowiadają znajomi albo co gorsza nieznajomi na grupach i forach. Jedna osoba powie ucz się Pythona, a inna będzie Cię namawiać na frontend. Miej na uwadze, że to co dla jednych jest łatwe, nie musi być takie dla Ciebie. Każdy z nas jest inny… Lubimy słuchać innej muzyki, oglądamy inne filmy, smakują nam różne potrawy i języki programowania też możemy lubić inne i to jest całkiem normalne! Najlepiej jak sam sprawdzisz i przekonasz się „z czym to się je”, dlatego porady innych traktuj bardziej jako wskazówkę a nie jako jedyną, słuszną opcję.

Porady i podpowiedzi innych

Sporo osób też zastanawia się co w przypadku gdy wybiorą źle? Kiedy ten pierwszy język jednak nie „siądzie”. Pamiętaj, że język programowania to tylko narzędzie programisty do rozwiązania jakiegoś problemu. Przez całą swoją karierę mamy styczność z przeróżnymi technologiami i jest to poniekąd wpisane w nasz zawód. Nie ważne jaki język wybierzesz, ważne żeby ruszyć z miejsca, zacząć ćwiczyć i się rozwijać! Nie spodoba Ci się jeden język? Próbuj swoich sił w innym i tak do skutku aż znajdziesz ten idealny na początek. Nie spodoba Ci się programowanie? To masz wiele innych dróg, które prowadzą do pracy w IT.

Rozumiesz już dlaczego na początku mówiłem o nie wydawaniu walizki pieniędzy na kursy i bootcampy? Dobranie technologii pod siebie wcale nie jest takie trywialne…

Ile czasu mi zajmie nauka?

No dobra, a co z tym czasem nauki. Czy uda Ci się zostać programistą w 2 miesiące? Powiem szczerze, cholernie wkurzają mnie te hasła szkółek programowania, które powielają mit szybkiej pracy i budują wizję firm na rynku IT, które tylko czekają na kolejne osoby bez doświadczenia komercyjnego… Obserwuję wiele grup dla osób początkujących, rozmawiam z wieloma osobami ze społeczności Zaprogramuj Życie i możesz mi wierzyć, że nie jest tak lekko. Aktualnie do firm trafiają ogromne ilości CV! Nierzadko poziom kandydatów jest bardzo wysoki, a i tak mają problem ze znalezieniem pierwszego zatrudnienia albo nawet stażu 😲

Na rynku jest spore zapotrzebowanie to prawda, ale na osoby posiadające już doświadczenie w IT. Dlatego tak istotna jest praca nad portfolio i własnymi projektami już od samego początku nauki. Na pewno zastanawiasz się co wpisywać w puste CV jeśli dopiero zaczynasz (każdy się kiedyś zastanawiał), prawda? Pamiętaj, że projekty własne, niekomercyjne to też jest jakieś doświadczenie, o którym warto mówić i którym wręcz trzeba się chwalić. Buduj swój profil na GitHubie, ucz się i korzystaj z gita, współpracuj z innymi przy projektach grupowych. Opcji jest wiele!

Nauka samemu… Czy ma to sens?

A jak to jest z nauką samemu? Dasz radę? Znajdziesz po tym pracę? Często widzę na grupach pytanie czy samouk może zostać programistą. Oczywiście, że tak! Kilka lat temu, ogromna część z nas (programistów), tak właśnie zaczynała. W tym zawodzie najważniejsza jest wiedza i umiejętności, a sposób w jaki zostały zdobyte no powiedzmy, że jest drugorzędny.

Jak się zatem uczyć? Googlać! Google nie służy tylko do wyszukiwania memów, czy odpalania social mediów. Jest to ogromne źródło wiedzy, gdzie wszystko jest na wyciągnięcie ręki, tylko trzeba poszukać i wiedzieć co wpisywać… W sumie powiedziałbym, że jest to bardzo ważne narzędzie pracy każdego programisty.

Co? Ale jak to?!

Tak jest, dobrze przeczytałeś! Doświadczeni programiści też z niego korzystają i to bardzo często. A jak się okazuje, umiejętność „googlania” wcale nie jest tak oczywista i wiele osób ma z tym spory problem.

Czy da się nauczyć programowania samemu?

Gdzie więc szukać informacji i z czego się uczyć? YouTube, StackOverflow, książki, blogi techniczne, Udemy, grupy FB / Discord / Slack, newslettery, a od kilku miesięcy świetnym partnerem jest też ChatGPT. Dołączaj do społeczności IT, obserwuj o czym rozmawiają osoby bardziej doświadczone, podpytuj ich o porady, proś o code review i CV review. Jest wiele osób, które bardzo chętnie podzielą się swoją wiedzą!

Wejdź między wrony i kracz jak one, uważam że jest to świetny sposób na rozwój i naukę 😊

Ale skąd brać na to wszystko motywację?

Domyślam się co jeszcze może chodzić Ci po głowie… Nauka samemu szybko się nudzi, motywacja spada i nie wiadomo w co włożyć ręce, bo tyle tego wszystkiego jest. Doskonale wiem, że robienie projektów do szuflady i powielanie tych samych programów w różnych wariantach nie jest zbyt ekscytujące, przez co ciężko pobudzić w sobie chęci, zajawkę i pasję.

Takie „proste” programy nie dają pełnego obrazu na to jak wygląda praca programisty i co można zaprogramować. Jak więc z tym walczyć? Moim zdaniem najlepiej sprawdza się forma nauki przez robienie projektów i rozwiązywanie realnych problemów. Dzięki temu nauka jest dużo bardziej efektywna i co ważniejsze – przyjemniejsza! Zadaj sobie jedno bardzo proste ale ważne pytanie:

Kiedy nauka sprawia mi przyjemność?

  • Kiedy widzisz efekty starań?
  • Kiedy robisz coś co Cię interesuje, coś co jest Twoją pasją?
  • A może kiedy masz z tego korzyści, np. finansowe?

Szczególnie na początku nauki, odpowiednia motywacja jest ogromnie ważna! Bez niej bardzo szybko można się wypalić, zniechęcić i stracić cały zapał. Zamiast wkuwać składnię danego języka na pamięć (którą i tak pewnie zapomnisz), zastanów się czy widzisz wokół siebie jakąś opcję na realny projekt? Świat idzie do przodu, może ktoś z Twojego otoczenia czegoś potrzebuje?

  • Prosta strona internetowa dla kogoś z rodziny?
  • System do zarządzania grafikami pracowników dla firmy, w której pracujesz?
  • Kontrolowanie stanu magazynowego w Twoim sklepie?
  • Aplikacja mobilna, której używasz ale wiesz, że mogłaby działać lepiej?

Jasno określony cel i wizja projektu, który jest potrzebny i będzie używany zdecydowanie podnosi poziom motywacji i chęci.

Podsumowanie

Jak moglibyśmy to wszystko podsumować?

  • Nie wydawaj dużych pieniędzy na samym starcie. YouTube wręcz kipi od dobrych, darmowych materiałów, które poprowadzą Cię za rączkę i pokażą podstawy.
  • Nie daj się złapać na pięknie brzmiące hasła z „gwarancją pracy”!
  • Przygotuj się i nastaw na to, że nauka może trwać wiele miesięcy. Pamiętaj, że programowanie nie jest łatwe, gdyby tak było wszyscy pracowaliby w IT 😅
  • Buduj swoje portfolio i „zbieraj” projekty w repozytorium (np. GitHub), którymi będziesz się mógł chwalić na rozmowach rekrutacyjnych.
  • Dołączaj do społeczności IT, sprawdź o czym i jak rozmawiają, może zapytaj o wskazówki? Bądź aktywny.
  • Nie martw się, że zapominasz składnię albo część teorii. Ucz się przez robienie projektów! Wymyśl tematykę, która Cię interesuje, zainspiruje i napędzi do działania.

Na pewno czeka Cię dużo nauki i wiele chwil zwątpienia. Będziesz musiał się zmierzyć ze sporą konkurencją, ponieważ IT stało się bardzo „modne” ale trzymam za Ciebie kciuki, dasz radę! W razie pytań wiesz gdzie mnie znaleźć i jak się ze mną skontaktować 😉

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na moim profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub tutoriale i poradnik na moim kanale YouTube!

Dzięki za Twój czas, widzimy się niebawem! 🫡

Jak zacząć programować?
Mateusz Michalski

]]>
https://zaprogramujzycie.pl/jak-zaczac-programowac/feed/ 3
Programowanie w Javie. Czym jest Java? https://zaprogramujzycie.pl/programowanie-w-javie/ https://zaprogramujzycie.pl/programowanie-w-javie/#comments Fri, 01 Sep 2023 15:45:27 +0000 https://zaprogramujzycie.pl/?p=6444 Zaprogramuj Życie
Programowanie w Javie. Czym jest Java?

Java to technologia, która sprawdza się w wielu obszarach! Gry, apki WWW, mobilne, desktop, itd... Sprawdź jak wygląda programowanie w Javie!

Programowanie w Javie. Czym jest Java?
Mateusz Michalski

]]>
Zaprogramuj Życie
Programowanie w Javie. Czym jest Java?

Java… język programowania, który podobnie jak PHP od wielu lat i przez wiele osób jest sukcesywnie uśmiercany. Pytanie brzmi, czy słusznie? Java jest technologią, która może mieć zastosowanie w wielu obszarach! Aplikacje WWW, gry, programy desktopowe, apki terminalowe, no i kilka lat temu mieliśmy jeszcze applety. Java ma się bardzo dobrze, dla wielu firm jest solidnym fundamentem w powstających systemach i osobiście uważam, że trend jej popularności utrzyma się przez kolejne lata. Chyba warto poświęcić chwilę na programowanie w Javie i sprawdzić w jaki sposób działa? 🤨

Całość podzieliłem na kilka artykułów i filmów na moim kanale YouTube. Dzięki temu materiał będzie łatwiej przyswajalny, każdy z ważniejszych tematów będzie mógł być dokładniej opisany/omówiony, a ja będe miał więc wpisów na blogu 😉

Czym jest Java?

Jak już wiesz po krótkim wstępie, Java jest wszechstronnym językiem programowania, który od lat cieszy się dużym zainteresowaniem programistów. Stworzona przez firmę Sun Microsystems (aktualnie Oracle Corporation) w 1995 roku wraz z Patrickiem Naughtonem i Jamesem Goslingiem, Java szybko zdobyła popularność dzięki swojej niezawodności, przenośności i obszernej społeczności programistycznej.

Co ją wyróżniało na tle innych języków programowania? Java powstała z myślą o tworzeniu aplikacji, które mogą działać na różnych platformach, niezależnie od architektury sprzętowej. Jak to możliwe? Dzięki idei „Write Once, Run Anywhere” (WORA), która oznacza, że kod napisany w Javie może być skompilowany raz i uruchamiany na wielu platformach, które mają zainstalowaną maszynę wirtualną Javy (JVM), np. Windows, Linux, MacOS, itd.

Hmm… A jeszcze bardziej w skrócie?

Jeśli napiszesz i skompilujesz program na Windowsie, bez problemu uruchomisz go na innym systemie. Wystarczy, że przeniesiesz bytecode – pliki z rozszerzeniem .class (wynik kompilacji) – na inny system i uruchomisz JVM, który przetłumaczy je na kod maszynowy dostosowany do danej platformy, tyle!

Kompilacja, JVM, bytecode, interpreter… Ale o co w tym wszystkim chodzi?!

Spokojnie, prędzej czy później przejdziemy przez każde z tych pojęć 🫡

Jak uruchomić programy napisane w Javie?

Co takiego wyjątkowego i oryginalnego ma w sobie Java? Wspomniany już JVM, który zdjął z programistów ciężar dedykowanego kompilowania programów pod różne systemy i ich architektury. Twórcy Javy stwierdzili, że dostarczą rozwiązanie, które będzie służyć za pewnego rodzaju most łączący programy Javy ze środowiskiem uruchomieniowym.

Jak już wiesz, JVM odpowiada za interpretację i wykonanie bajtkodu ale to nie jedyne jego zadanie! Zarządza też np. pamięcią, automatycznie usuwając nieużywane obiekty, poprzez mechanizm zwany „garbage collectorem”. Oprócz tego, dostarcza m.in. mechanizmy do obsługi wielowątkowości, synchronizacji i zarządzania wyjątkami, co pomaga programistom tworzyć bezpieczne oraz wydajne aplikacje.

Przy okazji mała ciekawostka! Powstało więcej języków wykorzystujących JVM! Java, Kotlin, Scala, Groovy, Jython, JRuby to tylko kilka z nich (po więcej przykładów możesz zerknąć TUTAJ).

Nie chciałbym teraz wchodzić w szczegóły działania kompilacji… Uważam, że opowiadanie o tym na konkretnych przykładach sprawdzi się dużo lepiej ale zapamiętaj proszę dwie rzeczy:

  1. Kod Javy piszemy w plikach z rozszerzeniem .java. Zadaniem kompilatora jest przetłumaczenie ich na bytecode, który umieszczany jest w plikach z rozszerzeniem .class.
  2. Pliki .class są w pewnym sensie pakowane i kompresowane poprzez umieszczanie ich w plikach wykonywalnych z rozszerzeniem .jar.

I to właśnie plik .jar jest kluczem do uruchomienia aplikacji! Jeżeli nie korzystamy z żadnego IDE (Integrated Development Environment), program możemy uruchomić ręcznie z poziomu terminala/konsoli. Wystarczy wykonać poniższe polecenie z poziomu katalogu, w którym znajduje się jar’ek:

java -jar app-name.jar

Po wykonaniu tego polecenia stery przejmuje JVM zainstalowany na komputerze, który m.in. tłumaczy bytecode (pliki .class), na kod zrozumiały dla maszyny.

A czy za każdym razem trzeba uruchamiać program z poziomu „czarnego okienka”?

Oczywiście, że nie! IDE typu IntelliJ IDEA, Eclipse czy Netbeans posiadają wbudowane mechanizmy, które całkowicie automatyzują ten proces. Wystarczy jedno kliknięcie, które startuje kompilację, budowanie .jar’a i aplikację.

Kod w Javie

Jak każdy język programowania, Java ma swoją strukturę, składnię, styl pisania, itd. Poniżej znajduje się kilka prostych linii kodu, których zadaniem jest wyświetlenie napisu „Hello” w konsoli. Niewiele ale myślę, że tyle wystarczy aby zrozumieć podstawy podstaw.

Przykładowy program w Javie

1. package pl.zz

Deklaracja paczki tworzącej pewną przestrzeń nazw, w której przechowywane są klasy. Paczki pomagają zorganizować kod, zapanować nad dużą ilością klas i dużym projektem. Co ciekawe, słowo package może być pierwszą linią w pliku .java lecz nie musi! Jeżeli go brakuje oznacza to, że klasy są umieszczane w domyślnym pakiecie.

2. public class Main

  • public – modyfikator dostępu, który mówi kompilatorowi jaki jest poziom dostępności do danej klasy. Jest to jedna z podstaw koncepcji programowania obiektowego – hermetyzacja / enkapsulacja. Mamy do dyspozycji cztery typy: publiczne (public), chronione (protected), prywatne (private) lub domyślne;
  • class – słowo kluczowe wykorzystywane do deklarowania klasy;
  • Main – nazwa klasy (zaczynamy z wielkiej litery).

3. /** */ i //

Komentarze są sposobem np. na opisanie konkretnej funkcjonalności czy fragmentu kodu bezpośrednio w plikach .java. Mogą mieć postać jednej lub wielu linii tekstu.
Przy okazji warto zaznaczyć, iż używanie komentarzy w kodzie jest powszechnie oceniane jako jedna ze złych praktyk. Kod powinien być jak książka, czytając go od góry do dołu wszystko powinno być jasne i zrozumiałe 😉 Mogą jednak zdarzyć się przypadki, w których możliwość ich pisania jest przydatna.

4. public static void main (String [ ] args)

  • public – publiczny modyfikator dostępu;
  • static – oznacza, iż metoda może być użyta, nawet jeśli nie istnieją żadne obiekty klasy, w której została zdefiniowana;
  • void – deklaracja typu jaki zwraca metoda. Metody mogą zwracać przeróżne typy danych, np.: tekst, liczbę, znak, tablicę, listę, itd., itd. A wszystko zależy od potrzeb i sytuacji. W tym konkretnym przypadku metoda nie zwraca nic, kod się wykona i tyle, koniec;
  • main – nazwa metody (zaczynamy z małej litery);
  • String[] args – parametry jakie metoda może przyjąć podczas wywołania. W tym przypadku jest to tablica stringów (ciągów znaków), np.: „test1”, „test2”, „test3”.

5. System.out.println(„Hello”);

Wyświetlenie „Hello”, przekazywanego w postaci tekstu (stringa) jako argument metody println.

Choć wszystko może się wydawać trudne, niezrozumiałe i kosmiczne, to tak naprawdę są podstawy. Przejdziemy sobie przez to wszystko w tutorialu na YT i sam się przekonasz, że to łatwizna! Dodamy do tego bazy danych i finalnie zrobimy jakiś projekcik 💪

Popularność Javy

No dobrze, a jak możemy sprawdzić czy rzeczywiście w tej Javie jest tyle projektów, a co za tym idzie… ofert pracy? Aktualnie branża IT w Polsce (i nie tylko) przechodzi mocne zawirowanie, przez co ciężko wprost powiedzieć, że technologia A da większe szanse na znalezienie pracy niż technologia B. Ale zerknijmy na statystyki za rok 2022 🤔

Według raportu wynagrodzeń od Just Join IT, Java jest w top 3 technologii, do których poszukiwani byli specjaliści.

Najbardziej pożądane specjalizacje IT w 2022 roku

I pozornie mogłoby się wydawać, że Java wypada dość słabo w porównaniu chociażby z JavaScriptem, lecz po głębszej analizie raportu możemy zauważyć coś bardzo interesującego! Okazuje się, że na JS rzeczywiście było najwięcej ofert pracy ale jednocześnie było też najwięcej złożonych CV. Java w analogicznym zestawieniu wypadła zdecydowanie lepiej. Co to oznacza? Że jeszcze kilka miesięcy temu, dzięki odpowiedniej analizie rynku można było zwiększyć swoje szanse na wejście do branży IT. Teraz to już nie jest takie proste…

Kto najczęściej szukał pracy w 2022 roku?

Cały raport od JJIT został omówiony w pierwszym odcinku CodeCast’u 😉

Kilka słów na koniec

Oby tych kilka akapitów wstępniaka do Javy nie odstraszyło Cię… A może jest właśnie wręcz przeciwnie? Może wzbudziłem w Tobie ciekawość, dzięki której wspólnie przejdziemy przez podstawy, kończąc naukę jakimś fajnym projektem? 🤜🤛

Co warto warto zapamiętać z tego artykułu?

  1. Java nie umiera, ma się bardzo dobrze i myślę, że przez wiele kolejnych lat utrzyma się w topce języków programowania.
  2. W Javie można tworzyć aplikacje WWW, desktopowe, gry, apki mobilne, itd.
  3. Java zyskała ogromną popularność m.in. dzięki niezależności od architektury i sprzętu.
  4. Programy kompilowane są do bajtkodu (.java -> .class), które następnie są interpretowane i tłumaczone na język maszynowy przez JVM.
  5. Programy gotowe do uruchomienia, „pakowane” są do plików .jar, które można wystartować z poziomu IDE lub polecenia w terminalu.
  6. JVM to program, który instalujemy na komputerze. To właśnie JVM odpowiada m.in. za interpretowanie bajtkodu na język maszynowy, zarządzanie pamięcią, wielowątkowość, itd.
  7. Programowanie w Javie nie jest tak trudne jak się wydaje!

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na moim profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub tutoriale i poradnik na moim kanale YouTube!

Dzięki za Twój czas, widzimy się niebawem! 🫡

Programowanie w Javie. Czym jest Java?
Mateusz Michalski

]]>
https://zaprogramujzycie.pl/programowanie-w-javie/feed/ 4
git merge vs git rebase https://zaprogramujzycie.pl/git-merge-vs-git-rebase/ Mon, 08 May 2023 18:55:00 +0000 https://zaprogramujzycie.pl/?p=6424 Zaprogramuj Życie
git merge vs git rebase

Pytanie, które stawia sobie wiele osób pracujących z gitem. Zarówno początkujący jak i bardziej doświadczeni programiści nie zawsze „czują” różnicę w git merge vs git rebase. Dlaczego?

git merge vs git rebase
Mateusz Michalski

]]>
Zaprogramuj Życie
git merge vs git rebase

Pytanie, które stawia sobie wiele osób pracujących z gitem. Zarówno początkujący jak i bardziej doświadczeni programiści nie zawsze „czują” różnicę w git merge vs git rebase. Dlatego dziś przy pomocy moich autorskich grafik postaram się rozwiać wątpliwości raz na zawsze 🤨

O co całe to zamieszanie? 

Głównym „problemem” jest to, że zarówno polecenie merge jak i rebase można wykorzystywać do łączenia zmian z różnych gałęzi. Oczywiście rebase w trybie interactive daje nam szerszy zakres możliwości ale myślę, że to materiał na osobny wpis. Choć oba polecenia dają podobny wynik (przeniesienie kodu z gałęzi A do gałęzi B), to robią to zupełnie inaczej. Jeden bardziej bezpieczny, a drugi hmm… mniej. Który jest który? Przyjrzyjmy się im bliżej!

Jak działa git merge?

W poleceniu merge możemy wyszczególnić dwa tryby działania: fast-forward oraz 3-way merge (no-fast-forward). Uruchomienie jednego bądź drugiego algorytmu jest zależne od stanu w jakim znajdują się „mergowane” gałęzie lub w wyniku dodatkowego parametru, który podamy przy poleceniu (git merge —no-ff).

Fast-forward

Najprzyjemniejsza sytuacja podczas przenoszenia zmian pomiędzy branchami. Występuje w momencie gdy kod gałęzi bazowej – main, która była źródłem dla nowej gałęzi – feature, nie zmienił się. Podsumowując, kod z gałęzi main nadal znajduje się w feature, przez co wskaźnik HEAD może „przesunąć się” do najnowszego commita. W rezultacie uzyskujemy liniową historię projektu, a cała operacja jest „bezbolesna” i nie pozostawia po sobie śladu.

3-ways merge

git merge: 3-ways Merge

Przypadek bardziej „skomplikowany”, w którym zwykłe przejście wskaźnika HEAD do najnowszego commita nie jest możliwe, gdyż stan bazowej gałęzi main zmienił się od momentu powstania gałęzi feature (commit M4). Git w jakiś sposób musi uzupełnić brakujące informacje, dlatego tworzy tzw. merge commit = commit pomocniczy, w którym łączy zmiany z obu gałęzi (M5 = F1 + F2 + M4).

WAŻNE! Jeżeli na obu gałęziach kod projektu był modyfikowany w tym samym obszarze pliku, mogą pojawić się konflikty, które należy rozwiązać. Dlaczego? Ponieważ git nie wie, która wersja kodu jest aktualna i konieczne jest ręczne wskazanie zmian nadających się do przeniesienia – z gałęzi main, feature, a może z obu?

Jak działa git rebase?

Dodatkowy commit, który powstaje przy operacji merge nie zawsze jest mile widziany w historii projektu. Są osoby/zespoły, którym zależy aby po połączeniu zmian zachować nieprzerwaną liniowość w historii, która może dawać większe możliwości w zakresie analizy, testów czu debuggowania błędów. W takiej sytuacji bardzo często jako alternatywa dla merge używany jest właśnie rebase. Dzięki niemu kod na gałęzi jest wyrównywany do „wspólnej bazy”, a nowe commity trafiają na samą górę drzewa. Niestety… jest tutaj pewien haczyk, na który trzeba bardzo uważać!

Podstawową zasadą, o której należy pamiętać jest fakt, iż rebase modyfikuje historię projektu. Commity, które są tymczasowo odłączane i finalnie trafiają na górę drzewa otrzymują zupełnie nowe identyfikatory, gdyż zmieniają się ich „rodzice”. Jeżeli gałęzie są „prywatne” – tylko do własnego użytku, nie stanowi to większego problemu. Ale w sytuacji gdy branche są „publiczne” i inni developerzy z nich korzystają, może to wygenerować sporo problemów…

Jak nie korzystać z rebase?

Powyższy przykład obrazuje sytuację, której powinniśmy unikać, tzn. wykonywać rebase na gałęziach publicznych – w tym przypadku main. Na grafice widzimy, że polecenie sprowadza do „wspólnej bazy” kod z gałęzi main na podstawie feature. Commit M4 zostaje chwilowo odłączony, F1 oraz F2 trafiają do main z tymi samymi ID, a na końcu do historii ponownie zostaje dołączony commit M4. Niestety… tym razem z nowym ID, ponieważ jego rodzicem nie jest już commit M3, tylko F2. Jeżeli ktoś z zespołu bazował na commicie M4 przed wykonaniem polecenia rebase, myślę że po tej operacji przeżyje mini zawał 😉

Lepsze rozwiązanie 

To jak można poradzić sobie z tym problemem? Wykonywać rebase na gałęziach prywatnych! Musimy odwrócić sytuację i to gałąź feature (prywatna) sprowadzić do wspólnej bazy z main. Dzięki temu, publiczne commity nie zmienią swoich ID, a commity z gałęzi feature trafią na górę drzewa z nowymi identyfikatorami.

No tak ale zmiany nie trafiły na gałąź main, tylko cały czas są na gałęzi feature. Co z tym można teraz zrobić?

Jest to bardzo dobra sytuacja! Można w ten sposób przetestować całość przed wysłaniem kodu na publiczną gałąź – zyskaliśmy tym samym dodatkową formę zabezpieczenia i utrzymania stabilności projektu. 

Pamiętasz początek tego wpisu? Zerknij jeszcze raz na drzewo „After rebase”, przypomina Ci coś? Bardzo podobna sytuacja była w pierwszej grafice. Jeżeli w gałęzi feature jest aktualny stan gałęzi bazowej (main), po wykonaniu polecenia merge zadziała algorytm fast-forward, który zachowa liniowość w historii projektu i nie pozostawi po sobie śladu w formie dodatkowych commitów.

Słowem końca, jakie są różnice?

  • merge nie modyfikuje historii projektu, rebase tak – nadaje zupełnie nowe ID commitom
  • merge przesuwa wskaźnik HEAD lub tworzy dodatkowy commit wynikowy, rebase tymczasowo odłącza nadmiarowe commity -> wyrównuje kod do wspólnej bazy -> przywraca odłączone commity
  • rebase w trybie interactive posiada szerszy wachlarz możliwości
  • nieuważne użycie rebase może wygenerować sporo problemów 
  • merge jest bardzo dobrym uzupełnieniem polecenia rebase

Więcej informacji wraz z przykładami znajdziesz w poniższym video na moim kanale YT 😊

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na moim profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub filmy na kanale YT!

Dzięki za Twój czas, widzimy się niebawem! 🫡

git merge vs git rebase
Mateusz Michalski

]]>
Życie codzienne jako klucz do zrozumienia sztucznej inteligencji https://zaprogramujzycie.pl/klucz-do-zrozumienia-sztucznej-inteligencji/ Wed, 22 Mar 2023 11:15:24 +0000 https://zaprogramujzycie.pl/?p=6431 Zaprogramuj Życie
Życie codzienne jako klucz do zrozumienia sztucznej inteligencji

Czy życie to klucz do zrozumienia sztucznej inteligencji? Czy zrozumienie naszych (ludzkich) postępowań i decyzji może nam to ułatwić?

Życie codzienne jako klucz do zrozumienia sztucznej inteligencji
Mateusz Michalski

]]>
Zaprogramuj Życie
Życie codzienne jako klucz do zrozumienia sztucznej inteligencji

Waga, bias, operator nabla, spadek gradientowy, iloczyn skalarny i inne zagmatwane słowa bardzo często wprowadzają spore zakłopotanie do umysłu osoby, próbującej postawić pierwsze kroki w dziedzinie nauczania maszynowego. Czy powinniśmy jednak rozpoczynać naukę, podejmując się rozszyfrowywania znaczenia tych słów? Prawdopodobnie tak, aczkolwiek nie bezpośrednio. Wzorce zauważalne w naszych prostolinijnych zachowaniach są tymi samymi schematami, które staramy się odwzorować, wydając polecenia procesorowi. Z tego powodu chcę, aby fundamentem wykorzystanym do opanowania sztuki uczenia maszyny, było zrozumienie naszych – ludzkich – postępowań i decyzji. Czy życie codzienne to klucz do zrozumienia sztucznej inteligencji?

Jak podejmujemy decyzję?

Każdego dnia musimy dokonywać wyborów – większych, lub mniejszych. Rozmyślając nad tymi pierwszymi, z reguły posiłkujemy się doświadczeniami innych ludzi. To, jak zapamiętale potraktujemy czyjąś opinię, zależy głównie od tego jak trafnie pomogła nam ta osoba w przeszłości. W szkole, po skorzystaniu kilkukrotnie z podpowiedzi kolegi, za każdym razem dostając ocenę negatywną, kolejnym razem prawdopodobnie zaufamy własnej wiedzy. Właśnie. Wiedza własna i zaufanie do samego siebie – jaki ma to wpływ? Wszyscy na pewno nie raz spotkaliśmy się z określeniem: Jak grochem o ścianę. Niekiedy, mimo stu procentowej zgodności znajomych, doradzających abyśmy czegoś nie robili, podejmiemy się tego. Po tym akapicie z pewnością dużo łatwiej będzie zrozumieć znaczenie bias’u, który nadaje m.in. elastyczności.

Jak utwierdzamy się w swoich przekonaniach?

Nie wydaje się to arcytrudne pytanie, ale prawdopodobnie niewielu z nas sobie je wcześniej zadało. W wieku nastoletnim rozmyślaliśmy co zrobić, aby przypodobać się tej jednej osobie. Podróżując myślami w dalekiej przeszłości dostrzegaliśmy schematy, których rezultat ocenialiśmy bardziej lub mniej pozytywnie. Jednym z bezwzględnie pozytywnych czynników jest na pewno uśmiech – jeśli promieniuje on na naszej twarzy, nasze szanse diametralnie się zwiększają. Niestety nie zawsze on wystarczy. W przypadku, w którym przed wyjściem z domu nie zdążyliśmy uczesać włosów, uśmiech ten na niewiele może się zdać, mimo że wcześniej działał za każdym razem!

W międzyczasie, prawdopodobnie do głowy nam przyjdzie także wiele nieznaczących rzeczy, które nam wtedy towarzyszyły, aczkolwiek nie odegrały znaczącej roli.

Im więcej było takich sytuacji w naszym życiu, tym bardziej wierzymy w ich powiązanie.

Co ciekawe, ma to także podłoże w neurobiologii. W pewnym stopniu opisuje to teoria Hebba, często podsumowywana słowami: Cells that fire together wire together (Komórki, które razem się aktywują, łączą się ze sobą). W piękny sposób przedstawia to sytuacja, w której byliśmy nadzwyczaj szczęśliwi, na przykład podczas tańca z pierwszą miłością na dyskotece szkolnej. Na samą myśl o tamtej chwili, przez nasz umysł zaczyna przepływać rwący strumień obrazów impresjonistycznych, których nie powstydziłby się żaden malarz. Ukazują one zarówno rytm piosenki, która wtedy wybrzmiewała, jak i czerwoną suknię naszej partnerki. Wszystkie te elementy zostały połączone w naszym mózgu a ich więź umacnia się, wraz z każdą myślą o tamtym wieczorze.

A co z tymi porzuconymi, nieznaczącymi cechami? 

Nie sztuką jest zamartwiać się milionem rzeczy, przed wyjściem zadbać nawet o jakość koncówki od sznurówek. Nie jest to gra warta świeczki. Komputer też tak uważa.

W wieku 2 lat posiadaliśmy znacząco więcej połączen między neuronami niż posiadamy teraz, lub kiedykolwiek będziemy posiadać.

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint-Exupéry

Dobry dobór cech pomagających w decyzji, jest zatem bardzo ważny.

Przeklęta matematyka…

Niestety, lub dla niektórych stety, matematyka jest nieodłącznym elementem sztucznej inteligencji. 

Jednakże, moim zdaniem – matematyka występująca na początku tej przygody jest wyjątkowo intuicyjna i ciekawa. Jedną z pierwszych rzeczy, które na nas czekają – są pochodne, umożliwiające zbadanie funkcji. 

Zamierzając kupić prezent urodzinowy dla nowego przyjaciela, nie próbujemy znaleźć czegoś na ślepo. Przeprowadzamy małe dochodzenie, badając jego zainteresowania. Po dowiedzeniu się, że rok temu dostał od mamy sweter, którego nigdy nie założył, z pewnością zaczniemy szukać w innym kierunku.

Powyższa niesamowita grafika Alexander’a Amini na początku może być bardzo przytłaczająca. Jest jednak niemal dokładnie tym co abstrakcyjnie opisałem w przykładzie dotyczącym kupna prezentu. Schodząc z górki – kolor czerwony, badamy najbliższy obszar, żeby dowiedzieć się, w którym kierunku postawić krok, aby przyniósł on jak najlepszy rezultat! Brzmi logicznie, prawda?

Podsumowując

Zaczynając rozwój w kierunku nauczania maszynowego nie ma się czego bać. 

Przerażająco wyglądające grafiki i wzory bardzo często są zrozumiałe i ciekawe, trzeba je tylko ugryźć od dobrej strony, która mimo wszystko, czasem jest ciężka do odkrycia. Aczkolwiek nic nie jest usłane tylko i wyłącznie różami. Bardzo często odpowiedzi na pytania kryją się w rzeczach na pozór niepowiązanych – ciekawość świata, analizowanie schematów i chęć rozkładania rzeczy na czynniki pierwsze, na pewno nie okaże się wadą. Wystarczy tylko zacząć!

Autor artykułu:

Wiktor Zając, choć młody to niewzykle zdolny Software Engineer, rozwijający się w technologiach: Flutter, Cloud, Golang. Wiktor posiada szeroki zakres wiedzy z branży IT, lekkie pióro i jest Moderatorem w naszej społeczności Zaprogramuj Życie!

Profil Wiktora, na LinkedIn: https://www.linkedin.com/in/wiktor-zajac

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na moim profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub filmy na kanale YT!

Dzięki za Twój czas, widzimy się niebawem! 🫡

Życie codzienne jako klucz do zrozumienia sztucznej inteligencji
Mateusz Michalski

]]>
Jak wygląda pierwszy dzień pracy programisty? https://zaprogramujzycie.pl/pierwszy-dzien-pracy-programisty/ Sun, 05 Mar 2023 13:36:45 +0000 https://zaprogramujzycie.pl/?p=6381 Zaprogramuj Życie
Jak wygląda pierwszy dzień pracy programisty?

Pierwszy dzień pracy programisty potrafi być bardzo stresujący i intensywny! Jak taki dzień wygląda i co warto wiedzieć? Nie czekaj, sprawdź!

Jak wygląda pierwszy dzień pracy programisty?
Mateusz Michalski

]]>
Zaprogramuj Życie
Jak wygląda pierwszy dzień pracy programisty?

Starasz się o pierwszą pracę w IT lub planujesz w niedalekiej przyszłości przebranżowienie? Zapewne wysyłasz sporą ilość CV i bierzesz udział w wielu rozmowach rekrutacyjnych. Ale czy zastanawiałeś się, co będzie kiedy przyjdzie w końcu ten moment i osiągniesz sukces? Myślałeś kiedyś o tym jak wygląda pierwszy dzień pracy programisty? 🤔

Junior na proda!

Po pozytywnym przejściu testów i rozmów, ustala się szczegóły umowy i negocjuje warunki finansowe, a podpisy na dokumentach są namacalnym dowodem tego, że marzenia jednak się spełniają. Tylko co dalej? Początkowa ekscytacja i optymizm mogą powoli przygasać – przynajmniej u mnie tak było. Radość zamieniała się w stres, a może nawet strach? Różne, dziwne uczucia towarzyszyły mi przez następne dni i noce. W głowie kłębiło się milion myśli i pytań, które były bez odpowiedzi… No bo skąd mam wiedzieć, czy poradzę sobie z nowymi wyzwaniami, skoro nie wiem nawet jak wygląda taki pierwszy dzień pracy programisty?

W Internecie krąży wiele memów i historii o tym jak stażyści czy juniorzy dostają z marszu, na start zadania, które kończą się katastrofą… Przypadkowe usunięcie bazy danych albo wysadzenie w powietrze aplikacji produkcyjnej… Czy to prawda? 😳

W praktyce nie spotkałem się z czymś takim. Pamiętaj, że praca nad „prawdziwym” systemem, z którego korzystają setki, tysiące a nawet miliony użytkowników to ogromna odpowiedzialność. Firma, z którą rozpoczynasz współpracę nie może sobie pozwolić na incydenty związane ze stabilnością lub dostępnością systemu. W zależności od rodzaju programu czy aplikacji, błędy w kodzie mogą narazić kogoś na utratę życia, dochodu albo na przykład spowodować opóźnienia i spadki w produkcji. Dlatego do pracy powinieneś zostać odpowiednio przygotowany i to na wielu płaszczyznach projektu. Za to zazwyczaj odpowiada Team Leader. To jego zadaniem jest przeprowadznie Cię przez trudne początki i dobieranie zadań adekwatnych do Twojej wiedzy i umiejętności. To on staje się Twoim opiekunem i mentorem.

Junior na proda!

Jak więc wygląda ten pierwszy dzień?

Jednym słowem – intensywnie… Nowe osoby, nowe środowisko, nowy sprzęt. W pierwszym dniu najpewniej uruchomią się procedury, dzięki którym wogóle otrzymasz dostępy do wewnętrznych systemów i zasobów firmy. Email, komunikatory, projekty… Trochę tego będzie. A co za tym idzie? Papierkologia, podpisy i oczekiwanie na to aż wszystko zacznie po prostu działać. Pamiętaj też, że musisz na czymś pracować, więc komputer i sprzęt, który otrzymasz powinien zostać odpowiednio skonfigurowany. Instalacja programów, z których nacodzień będziesz korzystać, zajmie chwilę czasu i tak upłyną kolejne minuty.

Oprócz tego poznaje się członków zespołu oraz ich przyzwyczajenia, takie pewnego rodzaju rytułały. Może to być wspólne wyjście do sklepu, wyjście na kawę, na obiad czy szybkie rozmowy statusowe dotyczące projektów, nad którymi pracują (daily). Opowiadają czym się aktualnie zajmują i czy mają z czymś problemy 🤔

Wejście w projekt

Kiedy komputer będzie już gotowy, a formalności za Tobą, przyjdzie czas na wdrożenie Cię do projektu. I z tym bywa różnie… Bo forma przekazania wiedzy bardzo mocno zależy od firmy, Team Leadera i zespołu. Za czasów pracy stacjonarnej w moim zespole wyglądało to tak, że zbieraliśmy się przy tablicy, z kubkiem kawy i po prostu rozmawialiśmy. Teraz pracujemy zdalnie, więc łączymy się przez Teams’a i również z kubkiem kawy opowiadam o wszystkim co istotne. Nowy członek zespołu powinien poznać projekt od strony biznesowej. Dlaczego w ogóle powstał, kto jest klientem i kto z niego korzysta. Określam jaki problem ten system rozwiązuje oraz w jakim kierunku zmierzamy, definiując najbliższe plany i cele.

DevLog - newsletter dla programistów

Następnie tłumaczę flow pracy, czyli przyjęty przez zespół sposób wytwarzania oprogramowania. Mówię o systemach z których korzystamy, opisuję jak sprawdzamy kod, jak go testujemy oraz jak wdrażamy aplikację u klienta. Nie przesadzam z nadmierną ilością informacji. Doskonale wiem, że przez stres i tak część wiadomości nie będzie zapamiętana.

Kiedy część teoretyczną mamy już za sobą, siadamy do kodu i opowiadam co oraz jak działa. Uruchamiamy wspólnie lokalne środowisko developerskie i tłumaczę jak pracować z kodem. Setki a nawet tysiące plików w jednym projekcie, mogą szokować – szczególnie osoby mniej doświadczone. Dobrze wiem jak to jest, dlatego właśnie pierwsze kroki stawiamy wspólnie. Omawiam strukturę kodu, mówię co jest od czego, na co uważać i jak pisać kod tak żeby był zgodny z naszymi standardami. Daję pierwsze, proste zadanie do zrealizowania i podpowiadam od czego zacząć. Zazwyczaj są to banalne z mojego punktu widzenia tematy, jak zmiana nazwy albo dołożenie nowego pola na formularzu. Ale to właśnie dzięki nim, młody programista zaczyna poznawać kod, szukać, nabierać nawyków i oswajać się z pracą.

Jak wejść w projekt IT?

Kto pyta, nie błądzi!

Pamiętaj żeby w razie problemów szukać odpowiedzi w internecie i nie bać się pytać! Na tym etapie masz prawo czegoś nie wiedzieć, a potrzebne informacje często uzyskasz tylko od zespołu albo lidera, gdyż mogą być ściśle powiązane z projektem. Oczywiste jest, że nie można wymagać cudów na starcie i każdy powinien mieć czas żeby wdrożyć się w projekt oraz nauczyć się swobodnie po nim poruszać.

Każde kolejne zadanie powinno pokazywać inny obszar kodu, dzięki czemu po jakimś czasie nowa osoba pozna cały system i będzie spokojnie pracować nad kolejnymi zadaniami. 

Na tym etapie zazwyczaj kończy się pierwszy dzień pracy. Jeżeli powyższy scenariusz się sprawdzi i zobaczysz projekt z kodem, to wierz mi… będzie w tym szczypta szczęścia. Często początkujące osoby nie widzą linijki kodu przez kilka pierwszych dni. Załatwianie sprzętu, szkoleń, papierkologii i dostępów potrafi zająć bardzo dużo czasu 😴

Mój przepis na sukces

Na koniec podzielę się jeszcze z Tobą, moim przepisem na sukces. Kiedy ja stawiałem pierwsze kroki w pierwszej pracy, bardzo zależało mi na tym żeby pokazać się z jak najlepszej strony. Starałem się pracować za dwóch i każdą wolną chwilę poświęcać na rozwój. Po powrocie do domu, odpoczywałem, jadłem obiad, robiłem trening i siadałem do dalszej nauki.

Mój przepis na sukces

Zgłębiałem tematy, które były mi potrzebne do zadań, czekających na mnie następnego dnia. Czytałem artykuły i książki, oglądałem tutoriale, pisałem kod. Dzięki temu, zawsze byłem krok do przodu i byłem przygotowany na kolejne wyzwania. Tak wyglądały moje początki… Wiem, może się to wydawać szalone. Jak to z pracy do pracy? Ale wierz mi… Bardzo szybko widać tego efekty, chociażby w postaci pierwszych sukcesów w projekcie, zdobytej wiedzy i doświadczenia, a co za tym idzie – pieniędzy.

Dla wielu osób to może być szaleństwo ale jeśli masz wieczorem trochę wolnego czasu, warto poświęcić je na naukę… Niech fakt zdobycia pierwszej pracy Cię nie rozleniwi, to dopiero początek Twojej przygody!

Jak to wszystko podsumować?

  1. Nie stresuj się na zapas! Wiem, że łatwo się to mówi ale skoro niebawem zaczynasz pracę, to znaczy, że ktoś przeanalizował Twoje umiejętności i wie, że dasz sobie radę. Po prostu uwierz w siebie!
  2. Dobry Team Leader wspiera, pomaga i pamięta jakie to uczucie, gdy zaczyna się pracę. Nie bój się pytać! Kto pyta nie błądzi, szczególnie na początku 😉
  3. Forma przekazywania wiedzy jest różna i wszystko zależy od tego do jakiego zespołu trafisz. Niestety… nie ma na to pisanej reguły i możliwe, że pierwszego dnia nie napiszesz nawet linijki kodu. Procedury i formalności potrafią zajmować wieczność.
  4. Nie nastawiaj się na naukę nowych rzeczy tylko w pracy. Staraj się poświęcać na to chwilę czasu w domu i systematycznie nadrabiać braki w wiedzy. Na pewno będzie to docenione!

Na koniec zdradzę Ci mały sekret! Niezależnie od tego czy jest się juniorem czy seniorem, czas na wejście w projekt zawsze jest potrzebny. Projekty mogą znacznie się od siebie różnić, nawet jeżeli są realizowane w podobnych technologiach. Oczywiście seniorzy z racji swojego doświadczenia i wiedzy, przechodzą przez ten proces szybciej ale nie zmienia to faktu, że też potrzebują do tego chwili czasu 🤫

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na moim profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub filmy na kanale YT!

Dzięki za Twój czas, widzimy się niebawem! 🫡

Jak wygląda pierwszy dzień pracy programisty?
Mateusz Michalski

]]>
IP Box dla programistów https://zaprogramujzycie.pl/ip-box-dla-programistow/ https://zaprogramujzycie.pl/ip-box-dla-programistow/#comments Mon, 12 Dec 2022 15:25:40 +0000 https://zaprogramujzycie.pl/?p=6343 Zaprogramuj Życie
IP Box dla programistów

Słyszałeś o IP Box ale nie wiesz jak działa, czy się opłaca i czy grozi kontrolą US? Sprawdź czym jest ulga IP Box dla programistów!

IP Box dla programistów
Mateusz Michalski

]]>
Zaprogramuj Życie
IP Box dla programistów

Słyszałeś o uldze IP Box dla programistów, ale obawiasz się z niej skorzystać? Nie wiesz, jak działa i czy faktycznie się opłaca? Wspólnie z firmą Pravna zapytaliśmy Was o główne dylematy związane z ulgą podatkową. Okazało się, że najczęściej obawiacie się dokumentacji, jak i kontroli ze strony urzędu. Czy słusznie? 

Eksperci z Pravna spieszą z wyjaśnieniami, opierając się na własnym doświadczeniu, jak i 2850+ uzyskanych IP Box dla branży IT (ze skutecznością na poziomie 99,8%). Obniżanie podatków programistom to ich codzienność, więc sprawdźmy, jak to jest naprawdę z tym IP Box’em.

1. Czym jest IP Box? Kto może z niego skorzystać?

IP Box to optymalizacja podatku dla programistów i osób wytwarzających własność intelektualną (IP-intellectual property). Ulga ta obniża podatek dochodowy z 19% do zaledwie 5%. Można ją rozliczyć wstecznie, co zwiększa nasze potencjalne oszczędności. Ulga ma zachęcać do tworzenia nowych miejsc pracy oraz doprowadzić do wzrostu zainteresowania branżą IT. Prace zakwalifikowane do preferencji IP BOX muszą mieć charakter innowacyjny. W świetle prawa zaliczane są do niej wszelkie prace polegające na kodowaniu, dzięki którym wytwarzane są nowe treści. 

Z ulgi skorzystają osoby działające na takich stanowiskach jak: 

  • Programiści IT (backend, frontend, fullstack), 
  • Programiści maszyn, 
  • DevOps, 
  • Tester automatyzujący, 
  • Architekt oprogramowania, 
  • Programista baz danych, 
  • Scrum master, 
  • Twórcy gier i inni.

Nie masz pewności, czy kwalifikujesz się do ulgi?
>> Tutaj bezpłatnie sprawdzisz, czy możesz skorzystać z ulgi IP Box <<

2. Czym jest wskaźnik Nexus?

Wskaźnik Nexus jest niezbędny do wyliczenia zwrotu przy uldze IP Box. Pomaga obliczyć dochód dla celów tej ulgi, który podlega 5% opodatkowaniu. Wysokość tego dochodu to iloczyn dochodu kwalifikowanego prawa własności intelektualnej (z danego roku podatkowego) oraz wskaźnika Nexus obliczanego według specjalnego wzoru. Każda litera we wzorze oznacza grupę kosztów związanych z kwalifikowanym prawem własności intelektualnej. Wskaźnik Nexus obliczamy dla każdego kwalifikowanego IP oddzielnie. Zatem, aby prawidłowo rozliczyć ulgę IP Box, musisz najpierw obliczyć wskaźnik Nexus. To on decyduje, jak wysoki zwrot z ulgi IP Box otrzymasz.

3. Jak wygląda procedura ubiegania się o IP Box?

Formalności. Jak wiemy, nie da się ich przeskoczyć. Do złożenia wniosku o przyznanie preferencji IP Box potrzebujesz poniższych dokumentów: 

  • Indywidualna interpretacja podatkowa, czyli dokument wydawany przez KIS w celu potwierdzenia możliwości skorzystania z ulgi.
  • Ewidencja IP Box — dokument podzielony na dwie części, typowo księgową oraz wykaz zadań. Pozwala ustalić nasze przychody oraz koszty przypadające na każde kwalifikowane prawo własności intelektualnej, co umożliwia określenie kwalifikowanego dochodu. 

Aby uzyskać indywidualną interpretację podatkową, musisz złożyć wniosek do Krajowej Informacji Skarbowej. Udziela ona odpowiedzi, czy prawidłowo stosujesz przepisy podatkowe, na przykład czy zgodnie z prawem korzystasz z ulg podatkowych albo, czy możesz skorzystać z nich w przyszłości. Pozytywna interpretacja chroni także przed ewentualnymi konsekwencjami błędnego zinterpretowania przepisów podatkowych. 

Natomiast ewidencja IP Box to dokument zawierający wykaz naszej pracy, wykonanych projektów oraz faktury kwalifikujące nas do ulgi. Te dwa dokumenty są kluczowe w drodze do uzyskania ulgi IP Box. Urzędy Skarbowe przed wydaniem zwrotu weryfikują je podczas czynności sprawdzających. Są to rutynowe działania, które sprawdzają, czy informacje zawarte w rozliczeniu są zgodne z rzeczywistością. 

5 kroków do uzyskania ulgi IP Box

  1. Jeśli nawiążemy współpracę, nasz doradca podatkowy skontaktuje się z Tobą w ciągu 2-3 dni roboczych. 
  2. Po analizie dokumentacji mamy 7 dni na napisanie wniosku do KIS.
  3. Wysyłamy wniosek do KIS. Czas rozpatrzenia wniosku wynosi około 3-6 miesięcy.
  4. W ciągu 14 dni od otrzymania uzupełnionej ewidencji IP BOX przygotowujemy PIT/IP (rozliczenie ulgi IP BOX).
  5. Zeznanie podatkowe składamy do urzędu skarbowego. Ma on na wydanie zwrotu maksymalnie 45 dni.

4. Ile czasu trwa proces ubiegania się o pozytywną interpretację?

KIS ma od 3 do 6 miesięcy na rozpatrzenie wniosku i wydanie interpretacji, ale z reguły trwa to średnio 4-5 miesięcy. Czas ten liczony jest od momentu złożenia przez nas wniosku. Jeżeli w ciągu tego czasu nie dostaniemy interpretacji indywidualnej, nasz wniosek automatycznie jest rozpatrywany pozytywnie. W przypadku niepełnego wniosku, mamy 7 dni kalendarzowych na jego uzupełnienie. Nie zgadzasz się z otrzymaną interpretacją? Masz 30 dni na złożenie skargi do wojewódzkiego sądu administracyjnego. 

Im bardziej szczegółowo wypełnimy wniosek, tym mniejsze ryzyko, że KIS odeśle go w celu uzupełnienia braków, co wydłuża cały proces. Jeśli nasz wniosek nie zawiera błędów, otrzymujemy pozytywną interpretację. A jak już wiesz, to jeden z podstawowych elementów ubiegania się o ulgę podatkową IP Box.

5. Co w przypadku, gdy otrzymasz odmowę?

Twój wniosek o interpretację indywidualną został odrzucony? Jeśli nie zgadzasz się z otrzymaną odpowiedzią KIS, masz 30 dni kalendarzowych na złożenie skargi do wojewódzkiego sądu administracyjnego. Możesz to zrobić za pośrednictwem Krajowej Informacji Skarbowej. Nie musisz obawiać się negatywnej interpretacji. Odpowiedź była neutralna? Pamiętaj, że możesz ponownie złożyć wniosek.

6. Czy po negatywnej interpretacji z US, można się odwoływać?

Od każdej negatywnej interpretacji indywidualnej możesz się odwołać poprzez złożenie skargi do Wojewódzkiego Sądu Administracyjnego za pośrednictwem organu, który wydał daną interpretację. Masz na to 30 dni od dnia doręczenia interpretacji. W wyniku uwzględnienia skargi do sądu, dyrektor KIS może zmienić interpretację.

7. Co jest kluczowe podczas starania się o pozytywną interpretację?

Kluczem do uzyskania pozytywnej interpretacji indywidualnej są:

  • Skutecznie sformułowany wniosek,
  • Odpowiednie umowy z kontrahentami,
  • Odpowiedzi na pytania KIS w trakcie procesu.

We wniosku należy dokładnie opisać swoją sytuację, zadać pytania i przedstawić własne stanowisko. Następnie sprawdza go urząd. Jeżeli nie odkryje żadnych błędów czy braków, otrzymujemy pozytywną interpretację. 

Z zasady nie trzeba dołączać umowy z kontrahentem, ale istnieje cień szansy, że Urząd Skarbowy może o nią poprosić, więc lepiej ją dostarczyć. W umowie powinien znaleźć się zapis, że prawa autorskie do wytworzonego programu komputerowego lub jego części zostaną przeniesione na kontrahenta. Przeniesienie tych praw jest jednym z warunków, jakie należy spełnić, by móc uzyskane ze zbycia tych praw dochody objąć preferencyjną stawką podatku dochodowego (5% IP Box).

Na etapie starania się o pozytywną interpretację, warto skorzystać ze wsparcia profesjonalisty, który pomoże nam odpowiednio się przygotować. W ten sposób dodatkowo zwiększamy swoje szanse.

>> Kliknij tutaj, a pomożemy Ci w uzyskaniu pozytywnej interpretacji<<

8. Czy po przejściu przez cały proces, po uzyskaniu pozytywnej interpretacji, US może nas skontrolować i cofnąć zgodę?

Uzyskanie interpretacji jest pierwszą częścią całego procesu. Następnie, po złożeniu dokumentów do US mogą wystąpić tzw. czynności sprawdzające, potocznie zwane kontrolami. Kontrola skarbowa zawsze budzi lęk. Zupełnie niepotrzebnie. Jest to typowy proces, który pozwala na sprawdzenie naszej działalności przez US jeszcze przed wydaniem zwrotu, co zabezpiecza nas przed późniejszym cofnięciem przyznania ulgi. Ich celem nie jest przyłapanie nas na błędzie i odebranie ulgi. Najczęściej odbywają się zdalnie. Urzędnicy chcą jedynie sprawdzić, czy informacje, które zawarliśmy w rozliczeniu, są zgodne z rzeczywistością. Proszą nas o przesłanie interpretacji indywidualnej i ewidencji IP Box. Następnie, weryfikują dokumenty przed udzieleniem ulgi. Jeżeli prowadzimy rzetelną dokumentację, nie musimy obawiać się cofnięcia zgody.

9. Jak takie kontrole US wyglądają?

Kontrola to za duże słowo. Urzędy Skarbowe przeprowadzają czynności sprawdzające. Ich zadaniem jest formalna ocena poprawności dokumentów rozliczeniowych oraz weryfikacja poniesionych przez nas wydatków i osiągniętych dochodów. Urzędnicy chcą sprawdzić, czy w ramach prowadzonej działalności badawczo-rozwojowej wytwarzamy, rozwijamy lub ulepszamy prawa należące do katalogu praw kwalifikowanych oraz czy 5% stawkę stosujemy jedynie do dochodu z tych praw.

Czynności sprawdzające rzadko odbywają się w formie osobistej wizyty, najczęściej kontakt ogranicza się do rozmowy telefonicznej lub wymiany maili. Urząd Skarbowy prosi nas o przesłanie interpretacji indywidualnej i ewidencji IP Box, a następnie weryfikuje te dokumenty przed wydaniem zwrotu. Na tym kończy się ,,kontrola”.

10. Jakie są konsekwencje cofnięcia pozytywnej interpretacji?

Spokojnie, nie ma możliwości cofnięcia pozytywnej interpretacji.

11. Czy można najpierw przejść kontrolę, a dopiero później uzyskać zwrot podatku?

Tak, zwrot podatku może nastąpić już po przejściu kontroli.

12. Czy ryczałtowcy mogą ubiegać się o IP BOX? Jeśli nie, to jak zmienić formę opodatkowania, aby było to możliwe?

Rozliczając się ryczałtem, nie masz możliwości korzystania z ulgi IP Box. Preferencja ta działa tylko w połączeniu z podatkiem liniowym lub skalą podatkową. Wybrałeś ryczałt, ale chcesz ubiegać się o IP Box? Możesz jeszcze zmienić zdanie. Polski Ład umożliwia zmianę formy opodatkowania na cały rok podatkowy lub jego drugą połowę. Można to zrobić w okresie od lipca do grudnia 2022 roku. Wystarczy poinformować o tym fakcie urząd skarbowy za pomocą specjalnego oświadczenia.

13. Czy można uzyskać zwrot za kilka lat wstecz?

Mamy dla Ciebie dobre wieści. Ulgę IP Box możesz rozliczyć wstecz. Co więcej, działa ona nawet wtedy, gdy wybrałeś ryczałt i chcesz przy nim pozostać. Jeśli przez ostatnie 3 lata rozliczałeś się podatkiem liniowym lub na skali podatkowej, masz prawo skorzystać z ulgi za tamten okres. Zgodnie z polskim prawem, możemy rozliczać się do 5 lat wstecz. IP Box działa od 2019 roku, więc warto to wykorzystać i sporo zyskać.

14. Czy są pewne, powtarzalne punkty, które US sprawdza i ”lubi” podważać? Na co najbardziej uważać?

Głównym celem czynności sprawdzających prowadzonych przez Urząd Skarbowy jest sprawdzenie, czy w ramach swojej działalności badawczo-rozwojowe rozwijasz, wytwarzasz lub ulepszasz prawa, które należą do katalogu praw kwalifikowanych. Zanim zaczniesz korzystać z ulgi IP Box, postaraj się o indywidualną interpretację od Krajowej Informacji Skarbowej. Daje Ci ona niemal 100% ochronę i jest podstawowym dokumentem sprawdzanym przez US. Jeśli KIS stwierdził, że kwalifikujesz się do ulgi, kontrola to czysta formalność. 

Podczas czynności sprawdzających, Urząd Skarbowy może też poprosić Cię o wgląd do ewidencji IP Box. Zapisujesz w niej zrealizowane projekty, które można rozliczyć z ulgą oraz czas, jaki nad nimi pracowałeś. W drugiej części wpisujesz faktury kwalifikujące się do ulgi. Prawidłowo prowadzona ewidencja stanowi potwierdzenie, dla jakich obszarów swojej działalności korzystasz z IP Box’a. Urzędnicy mają możliwość zweryfikować, czy dane w niej zawarte zgadzają się z zeznaniem podatkowym. Czynności sprawdzające potwierdzają, czy ulga jest właściwie rozliczana, a Ty otrzymujesz zwrot nadpłaty podatku. Kontrola US to rutynowe działania, więc nie bój się, nie chodzi o to, by Cię na czymś przyłapać. 

Na co uważać? Bardzo ważny jest zapis o przekazaniu praw autorskich w umowie. Nie zapomnij o tym.

15. Czy jest możliwe, że US rozpocznie kontrole na granicy przedawnienia?

Wszystko zależy od Urzędu Skarbowego. Jest to możliwe, jednak po przeprowadzeniu czynności sprawdzających, kontrola na granicy przedawnienia raczej nam nie grozi.

16. Czy może być przeprowadzonych wiele kontroli? Czy druga, trzecia, n-ta może podważyć wcześniejsze pozytywne?

Teoretycznie, może się tak zdarzyć. Jednak, szanse na to są równie prawdopodobne, co wygrana na loterii.

17. Czy w przypadku wielu projektów, konieczne jest posiadanie kilku wniosków?

Nie, wszystkie projekty można opisać w jednym wniosku.

18. Dlaczego biura księgowe odradzają IP BOX?

Biura księgowe bardzo często wybierają ryczałt, ponieważ jest to dla nich łatwiejsza forma rozliczenia. Po prostu. Czasem też to kwestia braku wystarczającej wiedzy. Sami wspieramy księgowych w realizacji ulgi IP Box.

19. Czy IP BOX jest pułapką na informatyków?

IP Box jest zawarty w ustawie o podatkach, co oznacza, że stanowi całkowicie legalne rozwiązanie podatkowe i nie warto węszyć w nim żadnego podstępu. Dodatkowo uzyskanie ulgi wymaga pozytywnej interpretacji podatkowej, która potwierdza, że wszystkie działania są w pełni zgodne z prawem. IP Box to nie pułapka, a realna oszczędność. W skali roku możesz zyskać nawet 24 tysiące złotych.

20. Jak wygląda współpraca z Pravną? Od czego zacząć i jakie dokumenty przygotować?

Jeśli chcesz rozpocząć współpracę z Pravną, kliknij tutaj i wypełnij formularz na stronie WWW. Możesz umówić się na bezpłatną konsultację z doradcą/ekspertem ds. ulgi IP Box. W czasie rozmowy otrzymasz informację, czy kwalifikujesz się do IP Box, a także bezpłatną kalkulację rocznych oszczędności w zależności od danej formy opodatkowania. Dzięki temu wybierzesz opcję podatkową, która przyniesie Ci najwięcej oszczędności. 

Wskazówka przed rozmową: koniecznie sprawdź, czy w umowie masz zapis odnośnie przekazywania praw autorskich.

Pravna IP Box

21. Jak można się z Wami skontaktować?

Wystarczy, że zajrzysz na naszą stronę WWW i wypełnisz krótką ankietę. Nasi doradcy skontaktują się z Tobą w ciągu 24h.

22. Czy okres rozliczenia wpływa na wysokość Państwa prowizji?

Cena naszych usług jest zależna od ilości lat, które rozliczamy z ulgą.

23. Czy pierwsze konsultacje są płatne?

Pierwsza konsultacja jest zawsze bezpłatna. Dowiesz się, czy kwalifikujesz się do ulgi IP Box, a także otrzymasz kalkulację rocznych oszczędności na poszczególnych formach opodatkowania. Robimy to, bo lubimy być fair i chcemy, abyś podjął świadomą decyzję na podstawie konkretnych liczb.

24. Czy jest możliwość uzyskania przykładowego, pełnego kosztorysu?

Oczywiście, daj znać, a wszystko prześlemy Ci mailowo.

25. Czy posiadacie w swojej historii przypadki, gdy US zażądał zwrotu i doliczył odsetki?

Nie, w całej naszej historii nie spotkaliśmy się z podobnym przypadkiem. Stwierdzamy to na przykładzie 2850+ zrealizowanych IP Box’ów.

26. Czy osoba, która korzysta z Waszych usług, może oczekiwać pomocy w razie kontroli? Czy jest to pomoc odpłatna?

Podstawowa pomoc przy czynnościach sprawdzających jest zawsze bezpłatna. Jeśli urząd poprosi Cię o przesłanie dodatkowych dokumentów, my wskażemy, co trzeba wysłać. Masz nasze wsparcie na każdym etapie.

27. Co wyróżnia Was na tle konkurencyjnych firm?

Mamy na swoim koncie ponad 2850+ IP Box’ów ze skutecznością na poziomie 99,8%. Po naszym researchu ilości zrealizowanych usług w pozostałych kancelariach możemy stwierdzić, że jesteśmy TOP#1 w Polsce w tym zakresie. Wnioski naszych doradców rzadko wracają nierozpatrzone, tym bardziej odrzucone, więc mają już swoją renomę. 

Wyróżnia nas także wstępna, bezpłatna konsultacja wraz z kalkulacją oszczędności. Inne kancelarie wyceniają sobie ten etap nawet na 738 zł i jest to kolejny efekt naszego rozpoznania rynku. 😉 

I najważniejsza rzecz. Gwarantujemy 100% zwrotu pieniędzy w przypadku, gdy KIS nie rozpatrzy wniosku pozytywnie.

Podsumowanie

Jak widzisz, IP Box nie taki straszny, jak go opisują. Wręcz przeciwnie. To realna oszczędność, dzięki której w Twojej programistycznej kieszeni zostanie jeszcze więcej pieniędzy. Walczyłeś przecież o dobrą stawkę, prawda? To teraz zadbaj o to, by w rozliczeniu podatkowym zostało Ci z niej jak najwięcej. 😉 

O IP BOX dla programistów w animacji

Gdy ubiegasz się o podwyżkę, musisz oddać ważne projekty na czas, argumentować, spełniać KPI. Z IP Box zapewniasz sobie dodatkowe 2 tysiące złotych miesięcznie. I nie musisz nic robić, bo możesz oddać wszystkie formalności w ręce Pravna.pl. Tutaj nie ryzykujesz, że coś pójdzie nie tak. Pamiętasz co mówiliśmy o naszej skuteczności? 😉 

To, jak? Działamy z IP Box’em?
>> Umów się na bezpłatną konsultacją i zamień wysokie podatki na wysokie oszczędności <<

Pravna IP Box

* Materiał powstał we współpracy z firmą Pravna – materiał sponsorowany.

IP Box dla programistów
Mateusz Michalski

]]>
https://zaprogramujzycie.pl/ip-box-dla-programistow/feed/ 2
Jak uruchomić aplikację Laravel na hostingu? https://zaprogramujzycie.pl/jak-uruchomic-aplikacje-laravel-na-hostingu/ https://zaprogramujzycie.pl/jak-uruchomic-aplikacje-laravel-na-hostingu/#comments Mon, 20 Dec 2021 11:00:00 +0000 https://zaprogramujzycie.pl/?p=6235 Zaprogramuj Życie
Jak uruchomić aplikację Laravel na hostingu?

VPS, serwer, hosting... Tyle możliwości ale co wybrać dla projektu z Laravelem? Pokażę Ci jak szybko uruchomić aplikację Laravel na hostingu!

Jak uruchomić aplikację Laravel na hostingu?
Mateusz Michalski

]]>
Zaprogramuj Życie
Jak uruchomić aplikację Laravel na hostingu?

Możliwości na postawienie aplikacji korzystającej z frameworka Laravel jest wiele. Hosting, CloudHosting, VPS, serwer dedykowany… To, na którą opcję się decydujemy, bardzo często zależy od budżetu, przewidywanego ruchu, możliwości administracyjnych itd. Każdy z tych punktów może być kluczowy w podjęciu odpowiedniej decyzji. W tym artykule zaprezentuję Ci jedną z możliwości i opiszę, jak uruchomić aplikację Laravel na hostingu 🤨

Współpraca

Na wstępie zaznaczę, że artykuł powstał we współpracy z firmą nazwa.pl, która na potrzeby przygotowania artykułu, wdrożenia konfiguracji i przeprowadzenia testów, dostarczyła CloudHosting w opcji Start.

Dostępne warianty wraz z opisami i cennikiem umieszczam w podlinkowanej grafice poniżej.

nazwa.pl - oferta CloudHosting
Źródło: https://www.nazwa.pl/hosting

Na co zwrócić uwagę?

Przed wykupieniem oferty hostingowej dobrze jest sprawdzić, jakie możliwości i opcje dostarcza usługodawca w ramach wybranego pakietu. Od tego bowiem zależy sposób konfiguracji aplikacji, jej utrzymanie i późniejsza administracja. Ogromną zaletą, na którą warto zwracać uwagę, jest dostęp do powłoki SSH – co nie każdy hosting wspiera. Dzięki niemu uruchomienie aplikacji można przeprowadzić z poziomu terminala, co daje zdecydowanie większe możliwości niż dostęp przez FTP!

Oczywiście należy też upewnić się, czy hosting w ogóle wspiera technologie, z których korzysta Twoja aplikacja. Jeżeli posiadasz system oparty na PHP, hosting musi posiadać interpreter tego języka. Jeśli potrzebujesz node.js, hosting również musi mieć tę technologię w swojej ofercie (co nie zawsze się zdarza).

W tym tutorialu skupię się na konfiguracji z wykorzystaniem połączenia SSH, która jest zdecydowanie bardziej przyjemną opcją… Dlaczego? Ponieważ mamy tutaj dostęp do powłoki, dzięki której możliwe jest chociażby wykonywanie poleceń artisanowych. W przypadku hostingu od nazwa.pl jest wszystko co potrzebne do postawienia aplikacji z Laravelem, można więc brać się do pracy. 😎

Pobranie aplikacji

Jak sprawić, żeby aplikacja „magicznie” znalazła się na hostingu? Można przenosić wymagane pliki ręcznie, na przykład poprzez klienta FTP (WinSCP, FileZilla, itp.) lub skorzystać z gita – o ile jest dostępny – i sklonować projekt z jakiegoś zdalnego repozytorium. Ja skorzystam z tej drugiej opcji i pobiorę bezpośrednio z GitHuba projekt, który tworzę w serii z nauką Laravela na YouTube 👈

git clone https://github.com/zaprogramujzycie/shop-yt.git
Pobranie projektu shop-yt z GitHuba
Pobranie projektu shop-yt z GitHuba

Dzięki temu, że projekt jest publiczny, można pobrać go bez podawania danych uwierzytelniających. Po wykonaniu polecenia kod aplikacji pojawi się na hostingu. Niestety nie oznacza to, że wszystko już będzie działać… Przed nami jeszcze trochę konfiguracji i najważniejsze – podłączenie bazy danych!

Konfiguracja aplikacji

Podczas konfigurownia projektu z Laravelem jest kilka podstawowych punktów, o których należy pamiętać 🤨

Podstawa podstaw, bez której nic nam nie zadziała… Musimy zainstalować biblioteki, z których korzysta aplikacja! Pewnie zauważyłeś, że pobrany projekt nie posiada katalogu vendor. Jest to jedną z dobrych praktyk, zakładająca niewysyłanie na repozytorium plików, które są wynikiem kompilacji lub które można pobrać przez package manager – w tym przypadku composer.

Dzięki temu, że composer jest dostarczany przez hostingodawcę, możemy bez przeszkód z niego skorzystać.

composer install

Kolejny krok to utworzenie pliku konfiguracyjnego .env na podstawie .env.example. Tutaj trzeba pamiętać, że samo dodanie pliku nic nie da, konieczne jest uzupełnienie go odpowiednimi ustawieniami, z których będzie korzystać aplikacja.

cp .env.example .env

Gdy mamy już przygotowany plik, należy wygenerować klucz, który pojawi się pod wartością APP_KEY. Przypomnę tylko, że jest on niezbędny do poprawnego działania aplikacji, gdyż odpowiada za szyfrowanie i zabezpieczanie ciasteczek (cookies).

php artisan key:generate

Biblioteki związane z częścią backendową (PHP) są już gotowe, ale w dalszym ciągu brakuje nam plików związanych z warstwą frontendową, a i w tym przypadku są różne praktyki. Niektórzy pobierają wszystkie biblioteki przez npm i na ich podstawie kompilują pliki, które trafiają docelowo do katalogu public. Inni tworzą paczkę plików lokalnie i przerzucają je na hosting. Ja nie jestem fanem tego rozwiązania, gdyż generuje ryzyko zbudowania frontu rozbieżnego z wersją backendu… Skorzystamy z opcji nr 1. W pierwszej kolejności pobieramy biblioteki na hosting poleceniem npm.

npm install

Kiedy proces pobierania dobiegnie końca, a biblioteki pojawią się w katalogu node_modules, projekt będzie gotowy na skompilowanie plików, które trafią finalnie do katalogu public.

npm run prod

Jeżeli aplikacja umożliwia użytkownikom upload plików, nie można zapomnieć o linku symbolicznym, kierującym do katalogu storage!

php artisan storage:link

Wskazanie katalogu public

Aby strona czy aplikacja wyświetliła się poprawnie, żądania przeglądarki muszą być kierowane w odpowiednie miejsce, którym w przypadku Laravela jest katalog public. Przez to bardzo często w podobnych poradnikach przerabiane są ścieżki umieszczone w pliku index.php, a zawartość folderu public jest przenoszona do głównego katalogu. Na szczęście w przypadku CloudHostingu od nazwa.pl można zadecydować i ustawić, z którego katalogu mają być pobierane pliki naszej aplikacji.

Ustawienie DOCUMENT_ROOT
Ustawienie DOCUMENT_ROOT

W moim przypadku katalog z projektem wskazuje domena i jest to: /shop-yt/public.

CloudHosting ustawienie domeny
CloudHosting ustawienie domeny

Warto również pamiętać, że w pobranym projekcie z repozytorium nie ma plików i grafik, które zostały wgrane przez użytkowników do aplikacji lokalnej. Jeśli chcemy mieć je również na hostingu, muszą zostać przeniesione ręcznie, np. z wykorzystaniem klienta FTP:

Wysłanie plików przez klienta FTP
Wysłanie plików przez klienta FTP

Baza danych

Zanim wgl. zaczniemy zastanawiać się, w jaki sposób zaimportować kopię danych z aplikacji lokalnej, zadbajmy o pojawienie się bazy na hostingu. W panelu nazwa.pl można to zrobić poprzez zakładkę „Bazy danych”.

Bazy danych w CloudHostingu
Lista baz danych w CloudHosting Panel

W tym momencie lista jest pusta, więc dodajemy nową, w której uzupełniamy podstawowe informacje związane z rozmiarem, typem, nazwą i danymi logowania. Ważne, aby zapamiętać wpisane dane uwierzytelniające, gdyż będą potrzebne w momencie łączenia aplikacji z bazą!

Dodawanie nowej bazy w CloudHostingu
Dodawanie bazy danych w CloudHosting Panel

Niestety, jak można zauważyć, po utworzeniu jest mały „problem” – baza jest pusta… Na szczęście można ją zasilić danymi i to nawet na dwa sposoby! Wszystko zależy oczywiście od możliwości, jakie daje hosting, ale kluczowa jest też informacja, czy w bazie lokalnej znajdują się dane, które powinny znaleźć się na hostingu.

Eksport / Import z phpMyAdmina

W przypadku odtworzenia bazy 1:1 musimy zrobić tzw. „dumpa” jej lokalnej wersji, który zostanie zaimportowany (wgrany) na hosting. Jak to zrobić? Na przykład poprzez eksport z phpMyAdmina.

Eksport bazy danych w phpMyAdmin
Eksport bazy lokalnej bazy danych do pliku .sql

Przejście przez proces eksportowania danych powinno w rezultacie wygenerować plik z rozszerzeniem .sql. Po jego pobraniu należy zalogować się do bazy zdalnej (np. poprzez phpMyAdmina), przejść do zakładki „Import”, wybrać plik i potwierdzić akcję przyciskiem „Wykonaj”.

Import bazy danych w phpMyAdmin
Import pliku .sql do hostingowej bazy danych

W efekcie baza będzie zawierać wszystkie wyeksportowane dane i jest gotowa do podłączenia z aplikacją.

Artisanowe tworzenie bazy

Może mieć miejsce również taka sytuacja, w której baza danych dla hostingu będzie zawierać tylko tabele + ewentualne dane startowe, bez żadnych dodatkowych rekordów wygenerowanych przez użytkownika. W takim przypadku nie trzeba generować „dumpa” z lokalnej wersji aplikacji, tylko wystarczy użyć mechanizmów dostarczonych przez framework. Za utworzenie tabel i struktury bazy odpowiada migracja:

php artisan migrate

Jeśli w projekcie są tzw. „seedery”, które zasilają bazę danymi, można je wywołać poniższym poleceniem:

php artisan migrate:fresh --seed

Konfiguracja połączenia z bazą w pliku .env

Skoro baza danych jest już gotowa, czas najwyższy połączyć ją z aplikacją. W tym celu należy edytować plik .env i uzupełnić poniższe parametry:

Baza danych w pliku .env
Parametry bazy danych w pliku .env

W miejsca „XXX” należy podać dane uwierzytelniające ustawione podczas definiowania bazy danych.

Zabezpieczenia

W ostatnim kroku zadbamy troszkę o bezpieczeństwo plików. Bardzo często spotykany jest „atak”, w którym skanowane są strony w poszukiwaniu plików .env i umieszczonych w nich wrażliwych danych, np. do bazy albo serwera pocztowego. Warto zabezpieczyć się przed taką sytuacją i do .htaccess dodać reguły (na koniec pliku), które zablokują podejrzaną aktywność.

#disable directory browsing
Options -Indexes

#PROTECT env file
<Files .env>
order allow,deny
Deny from all
</Files>

#PROTECT htaccess file
<Files .htaccess>
order allow,deny
Deny from all
</Files>

Powyższy kod blokuje dostęp z poziomu przeglądarki do plików .env oraz .htaccess oraz wyłącza możliwość przeszukiwania katalogów.

Podsumowanie

Dobrnąłeś do końca? Brawo! W rezultacie powinieneś uzyskać działającą aplikację. W moim przypadku efektem końcowym jest apliakcja sklepu, którą realizowałem w ramach darmowego kursu na YouTube.

Projekt Shop YT
Projekt Shop YT

Podsumowując, o czym należy pamiętać i na co zwracać uwagę przy wyborze hostingu?

  • Upewnij się, że wspiera technologie wykorzystywane przez Twoją aplikację.
  • Dostęp do powłoki SSH.
  • Sprawdź dostępną przestrzeń dyskową.
  • Lokalizację hostingu.
  • Wykorzystane mechanizmy ochronne (WAF, IPS, anty-DDOS).
  • Automatyczna integracja z siecią CDN, która przyśpiesza dostęp do plików aplikacji/strony.

Możliwości uruchomienia i konfiguracji aplikacji jest wiele, a CloudHosting oferowany przez nazwa.pl jest z pewnością ciekawą opcją, kiedy mamy do postawienia projekt, a nie chcemy koniecznie zajmować się samodzielną administracją serwerem. Konfiguracja jest dość szybka, łatwa i przyjemna – o ile posiadamy dostęp do SSH i możliwość pobrania projektu. Jeżeli FTP byłoby jedyną opcją na uruchomienie projektu, to samo wgrywanie plików zajęłoby nawet kilkadziesiąt minut…

W sytuacji kiedy spodziewamy się większego ruchu lub aplikacja wymaga większych zasobów sprzętowych, zdecydowanie lepszą opcją będzie VPS, co mam nadzieję zaprezentuję już niebawem.

Daj lajka i czytaj dalej!

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy, co będzie dalej, daj lajka na profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Z pewnością zaciekawią Cię inne wpisy na blogu lub filmy na kanale YT!

Dzięki za Twój czas, widzimy się niebawem! 🙂

Jak uruchomić aplikację Laravel na hostingu?
Mateusz Michalski

]]>
https://zaprogramujzycie.pl/jak-uruchomic-aplikacje-laravel-na-hostingu/feed/ 1