Tag: programming

  • Post #53 Angular Podstawy kompleksowy przewodnik dla początkujących

    Post #53 Angular Podstawy kompleksowy przewodnik dla początkujących

    Angular to jeden z najpopularniejszych frameworków do tworzenia aplikacji webowych. Jeśli dopiero zaczynasz swoją przygodę z programowaniem front-endowym, ten przewodnik pomoże Ci zrozumieć podstawowe koncepcje Angulara i rozpocząć tworzenie własnych aplikacji. Angular Podstawy

    Dowiedz się jakie były moje początki z Angular Angular Podstawy

    Dlaczego warto uczyć się Angulara?

    Angular wyróżnia się:

    • Kompleksowością: Wszystko, czego potrzebujesz do tworzenia aplikacji webowych, znajdziesz w jednym miejscu.
    • Stabilnością: Framework jest wspierany przez Google i rozwijany z myślą o dużych projektach.
    • Wszechstronnością: Możesz tworzyć aplikacje SPA (Single Page Application) oraz aplikacje progresywne (PWA).

    Jak zacząć z Angular?

    Instalacja Angular CLI

    CLI (Command Line Interface) to narzędzie, które ułatwia tworzenie i zarządzanie projektami w Angularze. Oto jak je zainstalować:

    npm install -g @angular/cli
    
    
    

    Po instalacji możesz utworzyć nowy projekt za pomocą polecenia:

    ng new my-first-app
    
    
    

    Uruchomienie projektu

    Przejdź do folderu projektu:

    cd my-first-app
    
    
    

    Uruchom serwer deweloperski:

    ng serve
    
    
    

    Twoja aplikacja będzie dostępna pod adresem http://localhost:4200.

    Podstawowe elementy Angulara

    Angular opiera się na kilku kluczowych koncepcjach. Oto najważniejsze z nich:

    Komponenty – Kluczowe Elementy Angular

    Komponenty w Angularze to kluczowe elementy aplikacji, które odpowiadają za modularność i organizację kodu. Są to podstawowe bloki funkcjonalne, które łączą logikę z interfejsem użytkownika (UI).

    Czym jest komponent?

    Komponent to zestaw plików odpowiedzialny za konkretną funkcjonalność aplikacji. Składa się z:

    • HTML – Określa strukturę widoku.
    • CSS – Stylizuje elementy widoczne w komponencie.
    • TypeScript – Zawiera logikę komponentu (np. metody, zmienne).
    • Spec.ts (testowy) – Obsługuje testy jednostkowe, co zapewnia jakość kodu.

    Przykładowo, komponent nawigacji może składać się z plików navbar.component.html, navbar.component.css, navbar.component.ts i navbar.component.spec.ts

    Dwie główne role komponentów

    Komponenty funkcyjne (z logiką):

    Posiadają metody i właściwości, które pozwalają na obsługę danych, zdarzeń i interakcji użytkownika. Przykład: Formularz logowania, który waliduje dane i wysyła je do serwera. Przykładowa metoda w komponencie:

    export class NavbarComponent {
      isLoggedIn: boolean = false;
    
      toggleLogin() {
        this.isLoggedIn = !this.isLoggedIn;
      }
    }
    
    
    

    Komponenty wizualne (UI-only)

    Odpowiadają jedynie za wyświetlanie elementów interfejsu użytkownika, bez dodatkowej logiki. Przykład: Karta z obrazkiem i tekstem w galerii zdjęć. Przykład prostego komponentu wizualnego:

    export class GalleryCardComponent {
      @Input() title: string = '';
      @Input() imageUrl: string = '';
    }
    
    
    

    Dobre praktyki dla początkujących

    Organizacja komponentów w folderach:

    Umieszczaj każdy komponent w osobnym folderze. To ułatwia nawigację i zarządzanie projektem.

    Przykład struktury:

    src/
      app/
        components/
          navbar/
            navbar.component.html
            navbar.component.css
            navbar.component.ts
            navbar.component.spec.ts
    
    

    Zagnieżdżanie komponentów

    W Angularze możesz „zagnieżdżać” komponenty, czyli umieszczać jeden komponent wewnątrz innego. Jest to kluczowa cecha pozwalająca na tworzenie złożonych interfejsów użytkownika. Przykład: Komponent navbar może zawierać komponent user-menu w swoim widoku: Kod HTML komponentu navbar:

    <nav class="navbar">
      <app-user-menu></app-user-menu>
    </nav>
    
    
    

    Czy komponent jest tylko wizualny?

    Decyduj, czy komponent ma pełnić jedynie rolę wizualną (np. karta, przycisk), czy też będzie posiadał logikę (np. obsługa zdarzeń, walidacja danych). To pozwala na lepsze zarządzanie kodem.

    Unikaj nadmiernego zagnieżdżania

    Mimo że Angular pozwala na zagnieżdżanie komponentów, staraj się nie tworzyć zbyt głębokiej hierarchii. Ułatwi to debugowanie i utrzymanie projektu.

    Poniżej ilustracja przedstawiająca przykładową organizację plików w Angularze 

    Dodając taką sekcję z obrazem i szczegółami, wyjaśnimy w prosty sposób, jak zarządzać komponentami w Angularze.

    Przykład prostego komponentu:

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-hello',
      template: `<h1>Witaj w Angularze!</h1>`,
      styles: [`h1 { color: blue; }`]
    })
    export class HelloComponent {}
    
    

    Moduły

    Angular używa modułów do organizacji aplikacji. Każda aplikacja zaczyna się od modułu AppModule.

    Przykład definicji modułu:

    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { AppComponent } from './app.component';
    
    @NgModule({
      declarations: [AppComponent],
      imports: [BrowserModule],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    
    

    Routing

    Routing pozwala nawigować pomiędzy różnymi widokami w aplikacji SPA. Oto jak skonfigurować prosty router:

    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    import { HomeComponent } from './home/home.component';
    import { AboutComponent } from './about/about.component';
    
    const routes: Routes = [
      { path: '', component: HomeComponent },
      { path: 'about', component: AboutComponent }
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule {}
    
    

    Tworzenie pierwszego formularza

    Dynamiczne formularze są jedną z najważniejszych funkcji Angulara. Oto prosty przykład:

    HTML:

    <form (ngSubmit)="onSubmit()" #form="ngForm">
      <label for="name">Imię:</label>
      <input type="text" id="name" name="name" ngModel required>
      <button type="submit" [disabled]="!form.valid">Wyślij</button>
    </form>
    
    

    TypeScript:

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-form',
      templateUrl: './form.component.html'
    })
    export class FormComponent {
      onSubmit() {
        console.log('Formularz został wysłany!');
      }
    }
    
    

    Podsumowanie

    Angular to potężne narzędzie dla programistów, którzy chcą tworzyć zaawansowane aplikacje webowe. W tym artykule zapoznaliśmy się z podstawowymi koncepcjami i przykładami kodu. Teraz czas na praktykę! Możesz także odwiedzić wpis #36 gdzie przedstawiam dobry praktyczny kurs Angular z Udemy podczas którego możesz poznać praktyczne zastosowania.

  • Post #52 Jakie są PHP i Python

    Post #52 Jakie są PHP i Python

    Jeżeli chcesz się dowiedzieć jakie są różnice i podobieństwa PHP vs. Python ten post jest dla Ciebie.

    Zacznijmy jakie są podobieństwa:

    Dynamiczne typowanie

    Zarówno PHP, jak i Python mają obszerne biblioteki standardowe, które ułatwiają wykonywanie typowych zadań, takich jak operacje na plikach, manipulacje stringami czy obsługa baz danych.

    Obiektowość Oba języki wspierają programowanie obiektowe, umożliwiając pisanie kodu zorientowanego na klasy i obiekty.

    Społeczność i dokumentacja Zarówno PHP, jak i Python mają dużą społeczność programistów, co oznacza, że dostępnych jest wiele zasobów edukacyjnych, wtyczek i wsparcia.

    $x = 10; // PHP
    
    
    
    x = 10  # Python
    
    
    

    Wszechstronność Oba języki są szeroko stosowane w różnych dziedzinach:

    PHP jest głównie używany w aplikacjach webowych po stronie serwera.

    Python ma szerokie zastosowanie, od tworzenia aplikacji webowych po uczenie maszynowe i analizę danych.

    Bogata biblioteka standardowa

    Zarówno PHP, jak i Python mają obszerne biblioteki standardowe, które ułatwiają wykonywanie typowych zadań, takich jak operacje na plikach, manipulacje stringami czy obsługa baz danych.

    Obiektowość

    Oba języki wspierają programowanie obiektowe, umożliwiając pisanie kodu zorientowanego na klasy i obiekty.

    Społeczność i dokumentacja

    Zarówno PHP, jak i Python mają dużą społeczność programistów, co oznacza, że dostępnych jest wiele zasobów edukacyjnych, wtyczek i wsparcia.

    Różnice miedzy PHP i Pythonem

    Kategoria PHP Python

    Cel projektowy PHP został stworzony z myślą o aplikacjach webowych. Python jest językiem ogólnego przeznaczenia (web, AI, analiza danych, automatyzacja). Składnia PHP ma bardziej złożoną składnię, czasem przypominającą C. Python stawia na prostotę i czytelność dzięki znaczeniom wcięć i minimalizacji nawiasów.

    Prędkość rozwoju PHP jest mniej intuicyjny w projektach wieloplatformowych i bardziej skomplikowanych. Python pozwala na szybki rozwój aplikacji dzięki przejrzystości i wszechstronności.

    PHP jest mniej intuicyjny w projektach wieloplatformowych i bardziej skomplikowanych. Python pozwala na szybki rozwój aplikacji dzięki przejrzystości i wszechstronności.

    Frameworki Popularne frameworki PHP to Laravel, Symfony i WordPress. Popularne frameworki Python to Django, Flask.

    Deklaracja zmiennych W PHP zmienne zawsze zaczynają się od znaku $. W Pythonie zmienne są deklarowane bez specjalnych znaków. Hosting PHP jest bardziej rozpowszechniony w klasycznych hostingach webowych. Python wymaga bardziej zaawansowanego hostingu (np. VPS, chmur).

    Asynchroniczność PHP ma ograniczone wsparcie dla asynchroniczności (np. w Swoole). Python ma wbudowane wsparcie dla asynchroniczności w bibliotece asyncio.

    Środowisko uruchomieniowe Najczęściej uruchamiany jako moduł serwera (np. Apache, Nginx). Python może być uruchamiany jako skrypt, aplikacja standalone lub w środowisku serwerowym.

    Popularność w AI PHP nie jest szeroko stosowany w AI ani analizie danych. Python jest liderem w AI, uczeniu maszynowym, analizie danych i automatyzacji.

    Przykłady kodu

    PHP – Tworzenie prostego endpointu w aplikacji webowej:

    &lt;?php
    header("Content-Type: application/json");
    echo json_encode(["message" => "Hello, world!"]);
    ?>
    
    
    

    Python – Tworzenie prostego endpointu w Flask:

    from flask import Flask, jsonify
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return jsonify({"message": "Hello, world!"})
    
    if __name__ == "__main__":
        app.run()
    
    
    

    Kiedy używać PHP, a kiedy Pythona?

    PHP: Idealny do prostych i średnio zaawansowanych aplikacji webowych, szczególnie gdy hosting wymaga prostych technologii. Doskonale nadaje się do projektów opartych na CMS-ach, takich jak WordPress czy Joomla.

    Python: Najlepszy wybór, gdy projekt wymaga analiz danych, uczenia maszynowego, automatyzacji lub zaawansowanych aplikacji webowych. Oba języki mają swoje mocne strony, a wybór zależy od specyfiki projektu, doświadczenia zespołu i środowiska pracy.

    Najczęściej używane słowa kluczowe w PHP

    if, else, elseif – instrukcje warunkowe for, foreach, while, do – pętle function – definicja funkcji class, extends, implements – definicja i dziedziczenie klas public, protected, private – modyfikatory dostępu return – zwracanie wartości z funkcji echo, print – wyświetlanie danych include, require – dołączanie plików

    Najczęściej używane słowa kluczowe w Pythonie

    if, elif, else – instrukcje warunkowe for, while – pętle def – definicja funkcji class – definicja klasy try, except, finally – obsługa wyjątków import, from – importowanie modułów return – zwracanie wartości z funkcji print – wyświetlanie danych with – zarządzanie kontekstem

    Pełne listy słów kluczowych można znaleźć w oficjalnej dokumentacji PHP i Pythona.

    Jeśli jesteś zainteresowany frameworkami, odwiedź post Frameworki PHP i Python

  • Post #51 DB Test PHP MySql Apps

    Post #51 DB Test PHP MySql Apps

    DB Test PHP MySql Apps to prosta aplikacja z zapisem do bazy w środowisku lokalnym. Tworzę projekt edukacujnie i do portfolio. Będzie zawierał dobrą dokumentację jak to przećwiczyć na swoim środowisku lokalnym.

    Fukcjonalność jeszcze nieokkreślona

    Obecnie zawiera tablicę users służącą do logowania – uproszonego bez potwierdzania mailowego. Pole Bio użytkownika do edycji oraz sesję i drobny feauture pokazujący w Toast ile jest zalogowanych użytkowników.

    Dokumentacja Techniczna

    1. Konfiguracja Projektu

    Aby uruchomić projekt lokalnie, wykonałem następujące kroki:

    • Pobrałem i zainstalowałem XAMPP (lub inny lokalny serwer) na swoim komputerze.
    • Utworzyłem folder dla swojego projektu w katalogu htdocs (np. phpsandbox/test-baza).
    • Skopiowałem wszystkie pliki projektu, w tym index.php, register.php, login.php i about.php, do tego folderu.
    • Uruchomiłem Apache i MySQL w panelu sterowania XAMPP.
    • W przeglądarce przeszedłem do //localhost:3000/phpmyadmin, aby skonfigurować bazę danych.

    Konfiguracja Bazy Danych

    Aby skonfigurować bazę danych MySQL i utworzyć niezbędne tabele, wykonałem następujące kroki:

    Utworzyłem nową bazę danych o nazwie baza_test_login_data. W tej bazie danych utworzyłem tabelę o nazwie users z następującymi kolumnami: id – INT, klucz główny, autoinkrementacja firstName – VARCHAR(50), imię użytkownika secondName – VARCHAR(50), nazwisko użytkownika email – VARCHAR(100), unikalny, adres e-mail użytkownika password – VARCHAR(255), hasło bio – TEXT, opcjonalne pole na biografię użytkownika

    Rejestracja Użytkownika

    Plik register.php obsługuje rejestrację użytkownika. Działa w następujący sposób:

    Gdy użytkownik przesyła formularz rejestracyjny, jego dane wejściowe są walidowane, aby upewnić się, że wszystkie pola są wypełnione. Skrypt sprawdza, czy adres e-mail już istnieje w bazie danych. Jeśli tak, wyświetlane jest ostrzeżenie. Jeśli adres e-mail jest unikalny, dane użytkownika są zapisywane, a wyświetlany jest komunikat o sukcesie. Hasło jest przechowywane w postaci haszowanej dla bezpieczeństwa, przy użyciu funkcji password_hash().

    Logowanie Użytkownika

    Plik login.php umożliwia zalogowanie zarejestrowanym użytkownikom:

    Po przesłaniu formularza, adres e-mail i hasło są walidowane względem bazy danych. Jeśli dane uwierzytelniające są poprawne, użytkownik otrzymuje dostęp. Dla bezpieczeństwa funkcja password_verify() jest używana do porównania hasła haszowanego z bazą danych.

    Walidacja i Alerty

    Aby poprawić doświadczenie użytkownika, dodałem alerty Bootstrap dla komunikatów zwrotnych:

    Alert sukcesu: Wyświetlany, gdy użytkownik pomyślnie się zarejestruje. Alert ostrzeżenia: Wskazuje, że adres e-mail jest już używany podczas rejestracji. Alert błędu: Wyświetlany, jeśli wystąpi błąd podczas rejestracji.

    Pliki Kodu i Ich Funkcje

    index.php – Strona główna aplikacji. register.php – Zawiera formularz rejestracyjny i logikę PHP do dodawania użytkowników do bazy danych. login.php – Obsługuje logowanie użytkownika i uwierzytelnianie. about.php – Strona dokumentacji technicznej (ta strona). db.php – Zawiera kod połączenia z bazą danych przy użyciu mysqli. menu.php – Pasek nawigacyjny zawarty na każdej stronie dla łatwej nawigacji.

    Przykładowy Kod Połączenia z Bazą Danych

    Poniżej znajduje się przykład kodu używanego do połączenia z bazą danych w db.php:

    // ...
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    // ...
    
    
    1. Bezpieczeństwo i Najlepsze Praktyki

    Hasła są haszowane przed przechowywaniem w bazie danych dla bezpieczeństwa. Pole e-mail jest unikalne w bazie danych, zapobiegając duplikatom rejestracji. Używane są przygotowane zapytania, aby zapobiec iniekcji SQL. Dla dodatkowego bezpieczeństwa należy rozważyć implementację SSL i zarządzania sesjami użytkowników.

  • Post #44 co nowego, podsumowanie oraz Portfolio

    Post #44 co nowego, podsumowanie oraz Portfolio

    Nowe Series – chcę zrobić więcej o JavaScript fundamentals, CSS Tips and Tricks, chciałbym więcej omawiać przypadków Case Study, dla poszerzania wiedzy. Blog chcę po uporządkowaniu i nadaniu efektywności nauce tłumaczyć i prowadzić także w języku angielskim.

    Portfolio to będzie dopieszczane oraz często uzupełniane.

    Spersonalizowana ścieżka nauki wspierana przez AI

    Aby stworzyć spersonalizowaną ścieżkę nauki programowania, która obejmie również naukę Mobile Dev z użyciem Flutter oraz sztuczną inteligencję (AI) z automatyzacją zadań, wdrażam następujący plan rozłożony na 1200 godzin:

    Sposoby efektywniejszej nauki dzięki wsparciu AI

    Aby przyspieszyć naukę programowania w obszarze mid z wykorzystaniem AI, takich jak GitHub Copilot czy ChatGPT, warto zastosować następujące metody

    Interaktywne Kodowanie AI, takie jak GitHub Copilot, oferuje sugestie kodu w czasie rzeczywistym. Umożliwia to szybkie pisanie i testowanie kodu, co przyspiesza naukę poprzez praktykę.

    Generowanie Kodu Narzędzia AI potrafią generować boilerplate code oraz automatyzować rutynowe zadania, co pozwala skupić się na bardziej złożonych problemach i koncepcjach programistycznych.

    Debugging i Analiza Błędów AI może pomóc w identyfikacji błędów i sugerować poprawki, co ułatwia zrozumienie, jak poprawnie pisać kod i unikać powszechnych pułapek.

    Personalizowane Ścieżki Nauki AI dostosowuje wsparcie do poziomu zaawansowania użytkownika, co pozwala na bardziej efektywne przyswajanie wiedzy.

    Eksperymentowanie i Uczenie się na Błędach Używanie AI jako wsparcia do eksperymentowania z różnymi podejściami do problemów umożliwia naukę poprzez próbę i błąd, co jest kluczowe w programowaniu.

    Integracja tych narzędzi w codzienną praktykę programistyczną może znacznie przyspieszyć rozwój umiejętności i zrozumienie złożonych koncepcji programistycznych.

    Dodatkowe możliwości przyspieszenie kodowania z AI

    Codzienne wsparcie przy kodowaniu

    • Automatyzacja rutynowych zadań: Zamiast ręcznie pisać powtarzalny kod, pozwól Copilotowi generować szablony komponentów, hooki lub inne często powtarzające się fragmenty kodu. Na przykład: Generowanie typowych funkcji (np. parsowanie danych, walidacja formularzy).
    • Tworzenie podstawowych komponentów UI na bazie krótkich opisów, zamiast ręcznego pisania ich od zera.
    • Szybkie tworzenie testów jednostkowych (np. w Jest) dla komponentów czy funkcji.
    • Uzupełnianie dokumentacji: Wykorzystaj Copilota do pisania automatycznych komentarzy czy dokumentacji API dla funkcji, które tworzysz.
    • Refaktoryzacja kodu
      • Analiza i optymalizacja: GPT lub Copilot mogą podpowiedzieć lepsze wzorce projektowe (np. stosowanie wzorców jak HOC, hooki, Context API zamiast nadmiaru props drilling). Wystarczy opisać problem, a narzędzie może zasugerować efektywniejsze rozwiązanie.
      • Skracanie i upraszczanie kodu: Poproś GPT o analizę Twojego kodu pod kątem refaktoryzacji i upraszczania.
      • W przypadku złożonych funkcji GPT może zasugerować bardziej zwięzłe podejście.

    Przyspieszona nauka nowych technologii

    Zastosowanie w realnych projektach: Gdy chcesz nauczyć się nowej technologii (np. React Query, Zustand, czy Next.js), zamiast czytać dokumentację od deski do deski, możesz poprosić GPT o wyjaśnienie podstaw w kontekście Twojego projektu. W ten sposób AI dostosuje swoje wyjaśnienia do Twojego aktualnego kontekstu. Rozwiązywanie problemów w locie: Zamiast przeszukiwać Stack Overflow, możesz zadać pytanie AI dotyczące błędów lub wyzwań, jakie napotykasz w trakcie implementacji nowych technologii. GPT wyjaśni, jak rozwiązać problem krok po kroku.

    Tworzenie zadań złożonych

    Automatyczne generowanie kodu na podstawie opisu: Możesz opisać złożony komponent, a Copilot wygeneruje jego kod na podstawie Twojego opisu, co przyspieszy tworzenie nowych funkcjonalności. Iteracyjny rozwój: GPT może być pomocny przy szybkim tworzeniu prototypów aplikacji. Możesz opisać, co chcesz osiągnąć, a AI wygeneruje podstawowe komponenty, które możesz iteracyjnie rozwijać.

    Code Review z AI

    Analiza kodu pod kątem optymalizacji i błędów: Copilot lub GPT mogą pełnić rolę „recenzenta” kodu. Możesz poprosić AI o przeanalizowanie Twojego kodu pod kątem potencjalnych problemów (np. wydajność, bezpieczeństwo, dobre praktyki).

    Sugestie ulepszeń: AI może podsunąć rozwiązania optymalizujące wydajność (np. zmniejszenie liczby renderów komponentów, lepsze zarządzanie stanem).

    • Tworzenie testów jednostkowych
      • Generowanie testów: Copilot jest świetny do generowania podstawowych testów jednostkowych. Możesz opisać, co dana funkcja powinna robić, a narzędzie automatycznie wygeneruje podstawowe testy.
      • Testy E2E: W przypadku projektów front-endowych możesz użyć Copilota do szybkiego tworzenia testów e2e z użyciem narzędzi takich jak Cypress lub Playwright.

    Learning by Doing – Przyspieszenie nauki frameworków

    • Projekty naukowe: Zamiast korzystać z nudnych przykładów z dokumentacji, twórz projekty w oparciu o realne wyzwania, a Copilot pomoże Ci na bieżąco implementować kolejne funkcjonalności. Przykładowo, próbując wdrożyć Next.js, możesz opisać architekturę swojej aplikacji i poprosić Copilota o sugestie dotyczące struktury folderów, nawigacji, a nawet optymalizacji renderowania.

    Personalizowane ścieżki nauki

    Tworzenie spersonalizowanych materiałów edukacyjnych: Możesz poprosić GPT o stworzenie planu nauki w oparciu o Twoje aktualne umiejętności i cele. Na przykład, jeśli chcesz przejść z Reacta do Next.js, GPT może stworzyć krok po kroku ścieżkę, która uwzględnia Twoje mocne i słabe strony.

    • Wyszukiwanie błędów i debugowanie Debugowanie na poziomie wysokim: AI może analizować Twój kod, sugerować przyczyny problemów oraz proponować potencjalne rozwiązania, co znacznie przyspiesza proces debugowania. Podpowiedzi kontekstowe: Kiedy napotkasz błąd w kodzie, zamiast czytać długie opisy w dokumentacji, możesz szybko otrzymać skrótowy i trafny opis przyczyny problemu oraz potencjalne poprawki.
    • Tworzenie template’ów i boilerplate’ów Gotowe szablony projektów: Możesz poprosić AI o wygenerowanie template’u projektu na bazie Twoich preferencji, np. konfiguracja Webpacka, setup TypeScripta, konfiguracja TailwindCSS czy Redux.

    Przykłady użycia Copilota i GPT:

    • Refaktoryzacja istniejącego kodu: „Przepisz ten komponent Reacta na hooki”.
    • Optymalizacja kodu: „Zoptymalizuj tę funkcję pod kątem wydajności”.
    • Debugowanie: „Dlaczego ten kod powoduje memory leak w przeglądarce?”.
    • Szybka nauka nowych technologii: „Wytłumacz, jak działa React Suspense i jak mogę go użyć w swoim projekcie”.

    Kluczowe porady:

    • Dostosowanie promptów: Im lepiej opiszesz problem lub zadanie, tym trafniejsze będą odpowiedzi AI.
    • Używaj AI iteracyjnie: Zacznij od prostych zapytań i z czasem rozwijaj je, dodając więcej kontekstu.
    • Narzędzia AI, które warto zintegrować:
    • GitHub Copilot: Do automatycznego generowania kodu.
      • ChatGPT z API (wersja z GPT-4): Do bardziej zaawansowanych zapytań, rozwiązywania problemów oraz nauki nowych technologii.
      • Tabnine: AI-driven autocompletion z zaawansowanymi predykcjami.

    Jakie są najbardziej skuteczne narzędzia AI do programowania

    Najbardziej skuteczne narzędzia AI do programowania, które mogą znacznie zwiększyć efektywność pracy programistów, to:

    GitHub Copilot Oparty na modelu OpenAI Codex, Copilot wspiera programistów poprzez autouzupełnianie kodu oraz sugerowanie fragmentów i funkcji w czasie rzeczywistym. Jest szczególnie przydatny w przyspieszaniu pisania kodu i poprawianiu jego jakości.

    ChatGPT Używany do generowania kodu, odpowiadania na pytania dotyczące technologii oraz tłumaczenia pomiędzy różnymi językami programowania. Może być również wykorzystywany do przeglądania kodu i udzielania wskazówek.

    OpenAI Codex: To model AI, który potrafi interpretować polecenia w języku naturalnym i generować odpowiedni kod. Jest używany w różnych narzędziach, w tym GitHub Copilot.

    CodeClimate Narzędzie do analizy jakości kodu, które wykorzystuje AI do identyfikacji błędów oraz zduplikowanego kodu. Udziela rekomendacji dotyczących optymalizacji.

    Snyk Narzędzie skupiające się na bezpieczeństwie, które skanuje bazy kodu w poszukiwaniu luk w zabezpieczeniach i błędów w zależnościach oprogramowania open-source, oferując rekomendacje naprawy.

    DeepCode Narzędzie analizujące kod pod kątem błędów i luk w zabezpieczeniach, pomagające programistom poprawić jakość aplikacji.

    Tabnine Asystent kodowania oparty na AI, który uczy się z kodu zespołu i dostosowuje swoje sugestie do stylu programowania danego zespołu.

    Te narzędzia nie tylko automatyzują rutynowe zadania, ale również poprawiają jakość kodu i przyspieszają proces nauki nowych technologii.

    Najlepsze narzędzia AI do analizy kodu, które wspierają programistów w identyfikacji błędów, optymalizacji i poprawie jakości kodu, to:

    CodeQL Narzędzie od GitHub, które umożliwia semantyczną analizę kodu. Pomaga programistom zrozumieć zachowanie ich kodu oraz identyfikować potencjalne zagrożenia i błędy.

    SonarQube Platforma do analizy jakości kodu, która automatycznie skanuje kod źródłowy w poszukiwaniu błędów, luk bezpieczeństwa oraz problemów z jakością. Oferuje szczegółowe raporty i rekomendacje dotyczące poprawy.

    DeepCode Narzędzie do analizy statycznej, które wykorzystuje AI do wykrywania błędów i luk w zabezpieczeniach. Przeprowadza dogłębną analizę kodu, co pozwala na zwiększenie bezpieczeństwa aplikacji.

    Codacy Umożliwia automatyczną analizę kodu i dostarcza wskazówki dotyczące poprawy jakości oraz zgodności z najlepszymi praktykami programistycznymi.

    Snyk Narzędzie skoncentrowane na bezpieczeństwie, które skanuje bazy kodu w poszukiwaniu słabości i udziela rekomendacji dotyczących ich naprawy. Integruje AI z uczeniem maszynowym w celu detekcji błędów.

    LGTM Narzędzie do analizy kodu, które identyfikuje problemy w kodzie i sugeruje poprawki. Umożliwia również integrację z systemami CI/CD. Semgrep Narzędzie do analizy statycznej, które pozwala na definiowanie reguł w celu wykrywania wzorców w kodzie źródłowym, co ułatwia identyfikację potencjalnych problemów.

    Te narzędzia wspierają programistów w utrzymaniu wysokiej jakości kodu oraz przyspieszają proces wykrywania i naprawy błędów.

  • Post #28 Angular Api

    Post #28 Angular Api

    Odświeżenie wiadomości i kodu Angular. Dowiedziałem się że właśnie jest stabilna v 18 wprowadzająca dużo zmian.

    Treść zadania do Aplikacji Angular

    Job Task Używając modułu HttpModule w Angular 2+, napisz fragment kodu, który z poniższego API pobierze drugi element o statusie 'pending’. Ocenimy także jakość i wydajność Twojego rozwiązania. Link do API: API To Do

    Realizacja

    Stworzyłem nową Aplikację Angular w wersji 14 i metodę fetch wraz z filtrem wyników. Dodatkowo stworzę rozwiązanie z Service i Subscribe,

    Kod Obecnej aplikacji

    Dodany jest Bootstrap jako UI oraz Component Api wraz z routerem

    // Router
    
    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    import { HomeComponent } from './components/home/home.component';
    import { ApiComponent } from './components/api/api.component';
    
    const routes: Routes = [
      { path: 'home', component: HomeComponent },
      { path: 'api', component: ApiComponent }
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }
    
    // App Module
    
    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { HttpClientModule } from '@angular/common/http';
    
    import { AppRoutingModule } from './app-routing.module';
    import { AppComponent } from './app.component';
    import { HomeComponent } from './components/home/home.component';
    import { ApiComponent } from './components/api/api.component';
    import { NavComponent } from './components/nav/nav.component';
    
    @NgModule({
      declarations: [
        AppComponent,
        HomeComponent,
        ApiComponent,
        NavComponent
      ],
      imports: [
        BrowserModule,
        AppRoutingModule,
        HttpClientModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    
    // API-Components
    
    import { HttpClient } from '@angular/common/http';
    import { Component, OnInit } from '@angular/core';
    import { Observable } from 'rxjs';
    import { filter, map, tap } from 'rxjs/operators';
    
    interface Task {
      id: number;
      user_id: number;
      title: string;
      due_on: string;
      status: string;
    }
    
    @Component({
      selector: 'app-api',
      templateUrl: './api.component.html',
      styleUrls: ['./api.component.css']
    })
    export class ApiComponent implements OnInit {
    
      tasks: Task[] = [];
      secondPendingTask: Task | undefined;
    
      constructor(private http: HttpClient) { }
    
      ngOnInit(): void {
        this.getSecondPendingTask()
          .subscribe(task => {
            this.secondPendingTask = task;
          }, error => {
            console.error('Error fetching task:', error);
          });
      }
    
      getSecondPendingTask(): Observable<Task> {
        return this.http.get<Task[]>('https://gorest.co.in/public/v2/todos')
          .pipe(
            // Filter tasks with status 'pending'
            filter(tasks => tasks.length > 1 && tasks[1].status === 'pending'),
            // Map to the second pending task (if found)
            map(tasks => tasks[1]),
            // Handle the case where no second pending task exists
            tap(task => {
              if (!task) {
                console.log('No second pending task found');
              }
            })
          );
      }
    }
    
    
    
    

    Kod Html Api-component

    <h1 class="display-4">API</h1>
    <p class="lead">Api works!</p>
    
    <div class="bg-light">
      <ul class="list-unstyled">
        <li *ngIf="secondPendingTask">
          (task Id: {{ secondPendingTask.id}}) **Second Pending Task:** <span>{{ secondPendingTask.title }} </span> (status:
          {{ secondPendingTask.status }})
        </li>
        <li *ngIf="!secondPendingTask">
          No second pending task found.
        </li>
      </ul>
    </div>
    
    
    

    Krótka instrukcja krok po kroku

    1. Importuj moduł HttpClient z @angular/common/http w pliku api.component.ts.
    2. Wstrzyknij HttpClient do konstruktora komponentu.
    3. Stwórz metodę, która będzie wywoływać API za pomocą metody get() z HttpClient.
    4. Wywołaj tę metodę w cyklu życia komponentu, np. ngOnInit().
    5. Przechowaj odpowiedź z API w zmiennej w komponencie.
    6. Wyświetl dane w szablonie komponentu za pomocą dyrektywy *ngFor.

  • Post #27 Update Fin Planner

    Post #27 Update Fin Planner

    Dodanie skryptu do tworzenia grup(kategorii) plan na mięsiąc. Utworzenie Ui. Obecna obsługa nie odświeża strony po dodaniu danych.

    Dodanie accordion i poprawa Ui

    Poprawienie i ujednolicenie Ui oraz dodanie Accordion dla poprawy przeglądanie następnych miesięcy.

    Dodanie do Github oraz do Glitch

    Aplikacja w obecnym rozwinięciu została dodana go Giithub i do Glich. Na GH jest pod repo o nazwie Financial Doctor

    PlannerF-Glitch

    PlannerF-GH

    Dalsze funkcjonalności

    Stworzyłem stronę statystyki. Będą na niej różne dane z dokonywanych zakupów i będzie to przećwiczenie filtrowania selekcji i innych funkcji np Express Api Search.

    Dodatkowo planuję dodać Chart.js oraz stworzyć salda po dodaniu wpływów.

    Todo

    • Zrobić odświeżanie dodanych danych.
    • Statystyki
    • Chart.js