Skip to content

Instantly share code, notes, and snippets.

View sunmeat's full-sized avatar
🐈
MEOW

Oleksandr Zahoruiko sunmeat

🐈
MEOW
View GitHub Profile
@sunmeat
sunmeat / task.md
Created January 23, 2026 13:02
ДЗ / практика на використання Blazor

«Котик-генератор настрою з базою даних»

Мета:
Розробити інтерактивний Blazor-додаток, який допомагає підняти настрій за допомогою милих котиків. Користувач обирає свій настрій, отримує випадкового котика з фразою, може проголосувати за нього, а всі дані (котики та голоси) зберігаються в базі даних.

Технології, які необхідно використати:

  • Компоненти Blazor (.razor-файли, параметри, події, вкладені компоненти)
  • EditForm + DataAnnotations для валідації
  • Ін'єкція залежностей (@inject, scoped-сервіс)
  • Entity Framework Core + міграції
@sunmeat
sunmeat / task.md
Last active January 22, 2026 17:59
ДЗ1 entity framework
  • створити новий проєкт (консольний додаток дот нет)
  • виконати команди в терміналі (View > Terminal): dotnet add package Microsoft.EntityFrameworkCore dotnet add package Microsoft.EntityFrameworkCore.SqlServer (!!! якщо у вас скл сервер!) dotnet add package Microsoft.EntityFrameworkCore.Tools dotnet tool install --global dotnet-ef dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.Json
    dotnet add package Microsoft.Extensions.Configuration.FileExtensions
@sunmeat
sunmeat / ContactInfo.razor
Created January 22, 2026 12:36
обробка форм з EditForm + DataAnnotations валідація
@using System.ComponentModel.DataAnnotations
@using Microsoft.AspNetCore.Components.Forms
@* ContactInfo.razor — обробка форм з EditForm + DataAnnotations валідація *@
<div class="contacts-wrapper">
<div class="contacts-container">
<div class="header-section">
<h3 class="title">Контактна інформація</h3>
<div class="title-underline"></div>
@sunmeat
sunmeat / ContactInfo.razor
Created January 22, 2026 11:49
приклад вбудованих компонентів + скоуп цсс
@* ContactInfo.razor — демонстрація всіх основних вбудованих Blazor input-компонентів *@
<div class="contacts-wrapper">
<div class="contacts-container">
<div class="header-section">
<h3 class="title">Контактна інформація</h3>
<div class="title-underline"></div>
</div>
<div class="contact-display">
@sunmeat
sunmeat / task.md
Created January 20, 2026 17:45
ДЗ на багатотабличні запити

INNER JOIN:

  1. Показати назви та категорії товарів, постачальниками яких є ООО "Паньки" або ООО «Які люди».

  2. Вибрати всі товари з вказівкою їх постачальника, ім'я виробника яких не містить літер [АКМ], і категорія яких не "Крупи".

  3. Показати назви та категорії товарів з вказівкою постачальника та країни виробника. Умова: країна виробника не Україна, не Молдова і не Польща, ціна поставки менше 50 гривень, а дата поставки з 10.02.2025 і до сьогодні.

  4. Показати всі кондитерські та безалкогольні товари, яких було продано більше 100. Показати інформацію про постачальника та виробника.

@sunmeat
sunmeat / task.md
Created January 19, 2026 13:58
ДЗ: dependency injection in razor pages

Сервіси. Впровадження залежностей в ASP.NET Core Razor Pages

Валідація моделі. Web-додаток «Гостьова книга»

Завдання: Перенести на платформу ASP.NET Core Razor Pages раніше розроблений Web-додаток «Гостьова книга».

Архітектура

  • Спроектувати архітектуру таким чином, щоб взаємодія з базою даних здійснювалась через сервіс Repository, а не напряму через контекст даних.
@sunmeat
sunmeat / task.md
Created January 19, 2026 12:01
ДЗ: razor pages

Вступ до ASP.NET Core Razor Pages

Розробити вебзастосунок ASP.NET Core з використанням платформи
Razor Pages.

На стартовій сторінці застосунку необхідно відображати інформацію про
десять найкращих фільмів на Вашу думку.

Інформація, яку потрібно зберігати в базі даних:

  • назва фільму;
@sunmeat
sunmeat / task.md
Created January 18, 2026 19:55
ДЗ на захист від вразливостей

Модифікувати веб-додаток «Музичний портал» наступним чином:

Реалізувати клієнтський веб-інтерфейс адміністратора порталу як односторінковий веб-додаток (Single Page Application — SPA).

Для взаємодії веб-клієнта з веб-сервісом у рамках REST-архітектури використовувати технологію AJAX та методи протоколу HTTP (GET, POST, PUT, DELETE).

Важливо, щоб:

  • веб-клієнт (SPA) та веб-сервіс (backend API) розміщувалися на різних доменах (або субдоменах / різних портах);
  • для дозволу AJAX-запитів між різними джерелами (cross-origin) використовувати механізм CORS (Cross-Origin Resource Sharing).
@sunmeat
sunmeat / checklist.md
Last active January 18, 2026 19:48
secure-by-default чеклист для ASP.NET Core

🔐 Secure-by-Default Checklist для ASP.NET Core

Повний чекліст для проєктів, які мають бути захищеними з коробки.

Категорія Рекомендації Чому це важливо
1 HTTP/HTTPS - Вимагати HTTPS: app.UseHttpsRedirection() + HSTS в production Захист від Man-in-the-Middle атак, перехоплення даних
2 Аутентифікація & Авторизація - Використовувати ASP.NET Core Identity / OAuth2 / OpenID Connect
- Рольова + політика: [Authorize(Policy = "...")]
- MFA для критичних дій
- Для API: JWT з правильним aud, iss, коротким lifetime
Запобігання несанкціонованому доступу
3 Валідація та кодування - Валідація всіх вхідних даних (моделі, параметри, заголовки)
- Атрибути: [Required], [Range], [RegularExpression]
- Контекстне кодування виводу (XSS-захист)
Запобігання ін'єкціям (SQLi, XSS, Command Injection)
4 CSRF & CORS - Anti-forgery tokens для форм та cookie-auth- CORS: НЕ AllowAnyOrigin
@sunmeat
sunmeat / rate.md
Last active January 18, 2026 19:34
Rate Limiting у ASP.NET Core

Rate Limiting у ASP.NET Core

(Microsoft.AspNetCore.RateLimiting)

Вбудований middleware для обмеження кількості запитів від клієнта за певний період часу.
Основні задачі:

  • Захист від brute-force, DDoS, зловмисного навантаження
  • Запобігання перевантаженню сервера
  • Забезпечення справедливого розподілу ресурсів
  • Критично важливий для публічних API