Tag: tools

  • 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 #50 Glide Jak zrobić kontent slider?

    Post #50 Glide Jak zrobić kontent slider?

    Kontent slider czy w innej nazwie karuzela to treść osadzona i serwująca różny kontent po przesunięciu strzałki lub automatycznie w wyznaczonym czasie.

    Jak Stworzyłem kontent slider za pomocą Glide.js

    W mojej ostatniej przygodzie z frontendem postanowiłem zagłębić się w Glide.js i nauczyć się, jak zbudować slider, który będzie responsywny i prosty w implementacji. W tym wpisie podzielę się, jak dodałem zdjęcia, skonfigurowałem responsywność za pomocą @media, oraz jakie kroki pomogły mi zrozumieć tę bibliotekę.

    Co to Jest Glide.js?

    Glide.js to lekka i szybka biblioteka JavaScript do tworzenia sliderów i karuzeli. Jest bardzo elastyczna, co oznacza, że możemy ją łatwo dostosować do własnych potrzeb – idealna do sliderów, które mają dobrze działać na różnych urządzeniach i ekranach.

    Przygotowanie Plików

    Najpierw stworzyłem strukturę plików, która wyglądała następująco:

    • index.html – główny plik HTML.
    • css/glide.core.css oraz css/glide.theme.css – style biblioteki Glide.js.
    • glide.js – główny plik JavaScript dla biblioteki.
    • Folder img – zawierający zdjęcia, które chciałem dodać do slidera.

    Krok po Kroku: Tworzenie Slidera

    Krok 1: Dodanie HTML

    W pliku index.html dodajemy podstawową strukturę slidera zgodnie z dokumentacją Glide.js. Wygląda to tak:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Slider glide.js</title>
      <link rel="stylesheet" href="./css/glide.core.css">
      <link rel="stylesheet" href="./css/glide.theme.css">
    </head>
    <body>
      <div class="glide">
        <div class="glide__track" data-glide-el="track">
          <ul class="glide__slides">
            <li class="glide__slide"><img src="./img/20-superfoods-640.webp" alt="20 superfoods"></li>
            <li class="glide__slide"><img src="./img/3-domowe-naturalne-przeziebienie-640.webp" alt="Przeziębienie"></li>
            <li class="glide__slide"><img src="./img/ashwaganda-telomers-640.webp" alt="Ashwaganda"></li>
            <!-- Dodaj więcej zdjęć tutaj -->
          </ul>
        </div>
        <div class="glide__arrows" data-glide-el="controls">
          <button class="glide__arrow glide__arrow--left" data-glide-dir="<">Previous</button>
          <button class="glide__arrow glide__arrow--right" data-glide-dir=">">Next</button>
        </div>
        <div class="glide__bullets" data-glide-el="controls[nav]">
          <button class="glide__bullet" data-glide-dir="=0"></button>
          <button class="glide__bullet" data-glide-dir="=1"></button>
          <!-- Dodaj więcej przycisków w zależności od liczby slajdów -->
        </div>
      </div>
    </body>
    </html>
    
    
    
    

    W tym miejscu każdy li to pojedynczy slajd. Dodałem kilka zdjęć i dostosowałem ich alt, by były bardziej opisowe

    • Krok 2: Konfiguracja JavaScript
    • Podpięcie Glide.js jest proste
    • Na końcu pliku index.html dodałem skrypt inicjujący slider:
    <script src="./glide.js"></script>
    <script>
      new Glide('.glide', {
        type: 'carousel',
        startAt: 0,
        perView: 4,
        breakpoints: {
          1200: { perView: 3 },
          800: { perView: 2 },
          480: { perView: 1 }
        }
      }).mount();
    </script>
    
    

    W tej konfiguracji slider jest ustawiony jako karuzela (czyli po przewinięciu ostatniego zdjęcia wraca do pierwszego)

    Ustawiłem również startAt na 0, co oznacza, że slider zaczyna od pierwszego zdjęcia. Najważniejsza część to breakpoints – dzięki nim slider dostosowuje się do szerokości ekranu:

    • 1200px i więcej – wyświetlane są 4 slajdy.
    • 800px do 1200px – wyświetlane są 3 slajdy.
    • 480px do 800px – wyświetlane są 2 slajdy.
    • poniżej 480px – wyświetlany jest 1 slajd.

    Krok 3: Responsywność i ustawienie CSS @media

    Glide.js samo w sobie obsługuje breakpoints, ale dodałem też własne style CSS dla img, by zdjęcia zachowywały odpowiednie proporcje i były responsywne:

    Skopiuj kod
    .glide__slide img {
      width: 100%;
      height: auto;
    }
    
    

    Dzięki temu zdjęcia dopasowują się do rozmiaru kontenera, niezależnie od szerokości ekranu

    Co Nauczyłem się Pracując z Glide.js?

    • Prostota – Glide.js jest bardzo prosty w obsłudze, ale jednocześnie oferuje dużo możliwości konfiguracyjnych.
    • Responsywność – dzięki breakpoints i CSS łatwo stworzyć slider, który świetnie wygląda zarówno na komputerze, jak i na telefonie. Łatwość rozbudowy – Glide.js pozwala na dodawanie różnych komponentów (np. przyciski nawigacyjne, wskaźniki), co sprawia, że jest wszechstronny.

    Podsumowanie

    Stworzenie slidera za pomocą Glide.js to świetne doświadczenie dla każdego, kto dopiero uczy się frontendu i chce osiągnąć profesjonalne rezultaty przy minimalnym wysiłku. Cieszę się, że mogłem zrozumieć, jak działa ta biblioteka, i mam nadzieję, że ten przewodnik pomoże Wam stworzyć własny, responsywny slider.

    Dajcie znać, jeśli macie pytania lub potrzebujecie pomocy – chętnie pomogę! Kliknijcie na Facebook OpenGateweb

  • Post #48 proste filtrowanie Istotope

    Post #48 proste filtrowanie Istotope

    Isotope.js

    Isotope.js to biblioteka JavaScript, która umożliwia dynamiczne układanie i filtrowanie elementów na stronie internetowej. Dzięki niej można łatwo tworzyć interaktywne galerie obrazów, portfolio, czy listy produktów. Isotope.js oferuje wiele opcji konfiguracji, co pozwala na dostosowanie układu do indywidualnych potrzeb projektu.

    Kluczowe funkcje Isotope.js

    • Dynamiczne układanie: Elementy są automatycznie układane w optymalny sposób, aby wypełnić dostępne miejsce.
    • Filtrowanie: Możliwość filtrowania elementów na podstawie określonych kryteriów.
    • Sortowanie: Elementy mogą być sortowane według różnych parametrów, takich jak data, nazwa, czy kategoria.
    • Animacje: Płynne animacje podczas zmiany układu, filtrowania czy sortowania elementów.

    Więcej informacji na temat Isotope.js można znaleźć na oficjalnej stronie biblioteki.

    Isotope

    Isotope to potężna biblioteka do tworzenia dynamicznych i responsywnych układów, umożliwiająca filtrowanie, sortowanie i piękne aranżowanie elementów. Poniżej znajdziesz prosty przykład, jak używać Isotope do filtrowania elementów, sortowania ich oraz wyjaśnienia.

    &lt;!DOCTYPE html>
    &lt;html lang="en">
    &lt;head>
        &lt;meta charset="UTF-8">
        &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
        &lt;title>Isotope Example&lt;/title>
        &lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js">
        &lt;link rel="stylesheet" href="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js">
        &lt;style>
            .grid {
                display: flex;
                flex-wrap: wrap;
            }
            .grid-item {
                width: 30%;
                margin: 5px;
                height: 100px;
                background-color: lightblue;
                text-align: center;
                line-height: 100px;
            }
        &lt;/style>
    &lt;/head>
    &lt;body>
        &lt;div>
            &lt;button id="filter-all">Show All&lt;/button>
            &lt;button id="filter-one">Filter One&lt;/button>
            &lt;button id="filter-two">Filter Two&lt;/button>
            &lt;button id="sort-asc">Sort Ascending&lt;/button>
            &lt;button id="sort-desc">Sort Descending&lt;/button>
        &lt;/div>
        &lt;div class="grid">
            &lt;div class="grid-item" data-category="one">Item 1&lt;/div>
            &lt;div class="grid-item" data-category="two">Item 2&lt;/div>
            &lt;div class="grid-item" data-category="one">Item 3&lt;/div>
            &lt;div class="grid-item" data-category="two">Item 4&lt;/div>
            &lt;div class="grid-item" data-category="one">Item 5&lt;/div>
        &lt;/div>
    
        &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js">&lt;/script>
        &lt;script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js">&lt;/script>
        &lt;script>
            $(document).ready(function () {
                var $grid = $('.grid').isotope({
                    itemSelector: '.grid-item',
                    layoutMode: 'fitRows',
                    getSortData: {
                        name: function (itemElem) {
                            return $(itemElem).text();
                        }
                    }
                });
    
                $('#filter-all').on('click', function () {
                    $grid.isotope({ filter: '*' });
                });
                $('#filter-one').on('click', function () {
                    $grid.isotope({ filter: '[data-category="one"]' });
                });
                $('#filter-two').on('click', function () {
                    $grid.isotope({ filter: '[data-category="two"]' });
                });
    
                $('#sort-asc').on('click', function () {
                    $grid.isotope({ sortBy: 'name', sortAscending: true });
                });
                $('#sort-desc').on('click', function () {
                    $grid.isotope({ sortBy: 'name', sortAscending: false });
                });
            });
        &lt;/script>
    &lt;/body>
    &lt;/html>
    
    

    Code Review

    Language Adjustments: Wszystkie etykiety przycisków i teksty elementów siatki zostały zmienione na język polski.

    „Show All” to teraz „Pokaż Wszystko”. „Filter One” to teraz „Filtruj Kategoria 1”. „Filter Two” to teraz „Filtruj Kategoria 2”. „Sort Ascending” to teraz „Sortuj Rosnąco”. „Sort Descending” to teraz „Sortuj Malejąco”. Elementy siatki: Tekst wewnątrz elementów siatki został przetłumaczony na język polski, zmieniając „Item X” na „Element X” dla jasności.

    Możesz teraz użyć tego fragmentu kodu, aby stworzyć interfejs filtrowania i sortowania dostosowany do polskojęzycznych użytkowników! Daj mi znać, jeśli potrzebujesz dalszych modyfikacji lub wyjaśnień.

  • Post #32 Przykłady Audytu SEO

    Post #32 Przykłady Audytu SEO

    Przykłady Audytu SEO, Audyt ruchu(traffic) na stronie oraz omówienie podstawowych parametrów.

    Data publikacji to 3 Lipca 2024 zatem mówimy o GA4

    • Dane z Google Analitics
    • Liczba użytkowników sesji
    • Wyświetlenia strony
    • Współczynnik odrzuceń
    • Średni czas spędzony na stronie
    • Żródła ruchu
    • Konwersje

    Audyt wyników strony w odróżnieniu od audytu technicznego

    Do przeprowadzenia dokładnej analizy SEO potrzebujemy różnych danych

    • Można się pogubić początkowo ale zawsze warto myśleć że strony to tylko LINK TEXT i IMG
    • Dlatego podkreślami dużymi literami link bo on ma duże znaczenie dla SEO
    • Można także koncentrować się na mniejszej liczbie współczynników jeśli wiemy w jakiej fazie jesteśmy

    Dane z Google Analytics

    Liczba użytkowników sesji, wyświetleń stron, współczynnik odrzuceń, średni czas spędzony na stronie, źródła ruchu, konwersje

    Dane te pozwolą nam zrozumieć, jak użytkownicy wchodzą na stronę, co robią na niej i jak długo z niej korzystają.

    Dane z Google Search Console

    Pozycje strony w wynikach wyszukiwania, widoczność w wyszukiwarce, kliknięcia, współczynnik kliknięć (CTR), błędy indeksowania. Dane te pokażą nam, jak dobrze strona jest widoczna w wyszukiwarce Google i jakie są potencjalne problemy z indeksowaniem.

    Badania słów kluczowych

    Określenie fraz kluczowych, na które strona chce się pozycjonować. Należy sprawdzić objętość wyszukiwania, konkurencyjność i trafność fraz kluczowych.

    Analiza konkurencji

    Zidentyfikowanie głównych konkurentów i analiza ich stron internetowych pod kątem SEO. Należy sprawdzić, jakie frazy kluczowe pozycjonują konkurenci, jakie treści publikują i jakie mają linki zewnętrzne.

    Analiza techniczna strony Sprawdzenie strony pod kątem błędów technicznych, takich jak wolne ładowanie strony, brak responsywności, błędy 404.

    Należy również sprawdzić strukturę strony, adresy URL i metadane.

    Rozpoczynamy analize i sprawdzamy Telomers.pl

    Liczba użytkowników sesji na stronie telomers.pl

    Czym jest „Liczba użytkowników sesji”?

    Liczba użytkowników to wskaźnik w Google Analytics, który informuje o liczbie wszystkich użytkowników, którzy odwiedzili Twoją stronę internetową w danym okresie czasu (np. dzień, miesiąc). Następnie mamy parametr Nowi Użytkownikownicy i Sesje. Każdy użytkownik jest unikalny ale nie do końca co jest dla mnie zabawne. Kiedyś w poprzednich wersja UU był liczony tylko raz, niezależnie od tego, ile razy odwiedził stronę w tym okresie. Dodatkowo w obecnym GA4 nie podaje dokładnej ilości unikalnych użytkowników, wytłumaczenie pomocy Google:

    Użytkownik po wejściu np na stronę główną HOME zazwyczaj klika dalej w podstronę np ABOUT a kiedy wróci do HOME jego unikalne odwiedziny będą liczone jako 2

    Aby zrozumieć, dlaczego odwiedziny strony głównej, a następnie strony o nas i powrót na stronę główną są liczone jako 2 unikalne odwiedziny, musimy wziąć pod uwagę sposób, w jaki Google Analytics śledzi sesje użytkowników.

    W Google Analytics sesja jest definiowana jako grupa interakcji, które użytkownik podejmuje w określonym przedziale czasowym na Twojej stronie internetowej. Domyślnie sesja kończy się po 30 minutach braku aktywności lub o północy.

    Kiedy użytkownik odwiedza stronę główną, a następnie przechodzi do strony o nas, jest to uważane za jedną sesję. Jednak gdy użytkownik wraca na stronę główną, jest to liczone jako nowa sesja, ponieważ wystąpiła przerwa w aktywności trwająca ponad 30 minut.

    Dlatego w tym scenariuszu wizyta na stronie głównej, a następnie na stronie o nas i powrót na stronę główną jest liczone jako 2 unikalne odwiedziny.

    Warto zauważyć, że to zachowanie jest specyficzne dla sposobu, w jaki Google Analytics śledzi sesje i może się różnić w zależności od używanego narzędzia analitycznego.

    Tabela z Pomocy Google jakie dane użytkowników możesz filtrować w GA4

    • ALL Users lub Użytkownicy łącznie
    • Nowi Użytkownicy
    • Aktywni Użytkownicy (w raportach także jako „Użytkownicy”)
    • Powracający Użytkownicy

    Tabela poniżej zawiera definicje poszczególnych danych o użytkownikach:

    DaneCo to jest ?Metoda i atrybut danych
    Użytkownicy łącznie wybranym zakresie dat.Liczba unikalnych użytkowników, którzy wywołali użytkowników, którzy wywołali użytkowników, którzy wywołali dowolne zdarzenie w wybranym zakresie datDane generowane automatyczne
    Nowi użytkownicyLiczba nowych unikalnych użytkowników powiązanych z zarejestrowanym zdarzeniem first_open lub first_visit w zakresie dat.Dane generowane automatycznie
    Aktywni użytkownicy (w raportach także jako „Użytkownicy”)*Liczba unikalnych użytkowników, którzy weszli w użytkowników, którzy weszli w interakcję z Twoja witryną w wybranym zakresie dat.Dane generowane automatyczne

    Aktywny użytkownik to każdy użytkownik, który ma rozpoczętą sesję z zaangażowaniem, czyli taką, podczas której Analytics rejestruje zdarzenia

    Rejestracja zdarzeń:

    • w witrynie zdarzenie first_visit lub parametr engagement_time_msec,
    • w aplikacji na Androida zdarzenie first_open lub parametr engagement_time_msec,
    • w aplikacji na iOS zdarzenie first_open lub user_engagement.

    Dodatkowe informacje: W Google Analytics możesz przeglądać raporty dotyczące liczby użytkowników sesji dla różnych przedziałów czasowych, stron, źródeł ruchu i innych parametrów. Możesz również ustawić cele i śledzić liczbę użytkowników sesji, którzy osiągnęli te cele.

    Jeśli chcesz dowiedzieć się więcej napisz lub samodzielnie poszperaj w Google Pomoc oto Linki-Omówieninie-Uzytkowników

  • Post #17 Przegląd JS Html CSS

    Post #17 Przegląd JS Html CSS

    Przegląd projektów ćwiczeń i nauki JS Html CSS

    Kilka projektów

    Przegląd projektów głównie w których jest praktyczne zastosowanie JavaScript. Tych projektów jest oczywiście dużo więcej ale wybrałem do prezentacji tylko kilka i ich pliki są w portfolio. Zobacz Portfolio

    Tabs Snippets

    Zastosowanie tab z wyborem po id treści. Dla każdej tab jest wyświetlana inna treść.

    Transition BarbaJS

    Efekt przejścia stron po przeniesieniu do innego URL bardzo przyjemne użycie BarbaJS

    Typed

    Efekt Typed Java Script wypisujący w zaprogramowanej kolejności słowa. Cyfrowy Banner

    TabSnippet MultipahseFrom Select 100 h

    Kilka innych zebranych ciekawych wraz z Sliderem tylko CSS

    28 kwietnia 2024 Dodanie 100 h jako uznanie ćwiczeń i nauki Vanilla Java Script Katalog z JavaScript zawiera 88 folderów o różnym poziomie trudności i śmiało można doliczyć że wszystkie zajęły po około godzinie co jest czasem zaniżonym. Niektóre z zadań były związane z wyszukiwaniem rozwiązania konkretnego problemu.

    W następnym materiale przegląd skończonych kursów 300 h

  • Post #16 Docker konteneryzacja

    Post #16 Docker konteneryzacja

    Docker narzędzie do konteneryzacji ?

    Czym jest Docker ?

    Docker jest jak magiczna skrzynka, która pomaga Ci zapanować nad aplikacjami i ich środowiskami. Teraz, wyobraź sobie, że Docker to taka magiczna walizka 🧳, w której możesz trzymać wszystko, czego potrzebujesz do swoich aplikacji: kod, zależności, ustawienia środowiska, wszystko!

    Teraz, ta magiczna walizka ma specjalne pojemniki, nazywane kontenerami 📦. W tych kontenerach trzymasz poszczególne elementy Twojej aplikacji. Ciekawe jest to, że każdy kontener jest jak mały świat dla Twojej aplikacji, mający wszystko, czego potrzebuje do pracy, bez wpływu na resztę środowiska. To oznacza, że możesz mieć kontener dla swojej aplikacji internetowej, inny dla bazy danych, a nawet kolejny dla usługi cachowania – każdy z nich działa niezależnie!

    No dobrze, a teraz, jak to wszystko używać? Docker Desktop jest Twoim magicznym miejscem, gdzie zarządzasz wszystkimi tymi kontenerami. Po zainstalowaniu wystarczy, że uruchomisz Docker Desktop, i będziesz mógł tworzyć, uruchamiać, zatrzymywać i usuwać kontenery za pomocą kilku kliknięć myszką lub poleceń w terminalu. To takie proste, jak wrzucenie rzeczy do magicznej walizki i powiedzenie jej, aby działała!

    I to wszystko! Teraz, gdy znasz trochę teori o konteneryzacji i używaniu Docker Desktop, możesz zacząć swoją przygodę z zarządzaniem aplikacjami jak prawdziwy magik! ✨

    Co jest najważniejsze do stworzenie kontenera ?

    Kontener wie, co jest potrzebne z pliku package.json dzięki Dockerfile’owi. Dockerfile to taki magiczny przepis 📜, który mówi Dockerowi, jak zbudować kontener dla Twojej aplikacji. W Dockerfile’u określasz wszystko, czego Docker potrzebuje, aby zbudować środowisko dla Twojej aplikacji, włączając w to zależności zdefiniowane w pliku package.json.

    W typowym środowisku Node.js, na przykład, gdy budujesz kontener, kopiujesz plik package.json do kontenera i uruchamiasz komendę npm install. To spowoduje, że Docker pobierze i zainstaluje wszystkie zależności wymienione w pliku package.json, umożliwiając Twojej aplikacji działać w izolowanym i spójnym środowisku.

    Dzięki temu, gdy Twój kontener zostanie uruchomiony, będzie miał wszystkie zależności, których Twoja aplikacja potrzebuje, aby działać poprawnie, dzięki czemu możesz być pewny, że działa ona tak, jak powinna, niezależnie od otoczenia, w którym jest uruchomiona.

    Oto prosty przepis w formie Dockerfile’a

    Załóżmy że chcemy uruchomić na hostingu App opartą działającą w Node.js i Express a nie mamy zainstalowanych zależności na naszym serwerze. Docelowo nie wiemy jakie środowiska będą w przyszłości. Uruchamiamy Dockefile, który wykonuje polecenie npm install:

    # Użyj oficjalny obraz Node.js jako bazowy
    FROM node:alpine
    
    # Utwórz katalog aplikacji w kontenerze
    WORKDIR /app
    
    # Skopiuj pliki package.json i package-lock.json do katalogu /app w kontenerze
    COPY package*.json ./
    
    # Zainstaluj zależności przy użyciu npm install
    RUN npm install
    
    # Skopiuj resztę plików aplikacji do katalogu /app w kontenerze
    COPY . .
    
    # Domyślnie uruchom aplikację po uruchomieniu kontenera
    CMD ["npm", "start"]
    
    

    Popularny obraz Docker Alpine

    Docker „alpine”! Obraz ten jest jednym z najpopularniejszych obrazów bazowych używanych do tworzenia kontenerów Docker. Oferuje on minimalistyczną dystrybucję Linuxa opartą na musl libc i BusyBox, zajmującą zaledwie 5 MB miejsca. To sprawia, że jest świetnym wyborem do budowy lekkich i wydajnych kontenerów.

    Oto kilka kluczowych informacji na temat Docker Alpine:

    Rozmiar: Tylko 5 MB, co czyni go jednym z najlżejszych dostępnych obrazów. Repozytorium pakietów: Posiada dostęp do kompletnego repozytorium pakietów, co ułatwia instalację potrzebnych narzędzi i aplikacji. Obsługiwane architektury: Dostępny dla wielu różnych architektur, w tym amd64, arm, i386, ppc64le, s390x, itp. Użycie: Można go używać podobnie do innych obrazów bazowych. Przykładowo, można dodać dodatkowe narzędzia za pomocą apk add –no-cache lub wykonać inne konfiguracje w Dockerfile’u. Poniżej znajduje się prosty przykład użycia obrazu „alpine” w pliku Dockerfile:

    FROM alpine:3.14
    
    # Instalacja klienta MySQL
    RUN apk add --no-cache mysql-client
    
    # Definicja punktu wejścia (ENTRYPOINT)
    ENTRYPOINT ["mysql"]
    
    
    

    Czym jest Docker kontener ?

    Kontener to izolowane środowisko dla Twojego kodu. Oznacza to, że kontener nie ma wiedzy o Twoim systemie operacyjnym ani Twoich plikach. Działa w środowisku dostarczonym przez Docker Desktop. Kontenery posiadają wszystko, czego potrzebuje Twój kod do działania, łącznie z bazowym systemem operacyjnym. Możesz używać Docker Desktop do zarządzania i eksplorowania swoich kontenerów.

    Zasoby

    Docker Docs Guid