Codica - корисне про IT
2.03K subscribers
2.44K photos
124 videos
11 files
1.31K links
Привіт, друже, це канал про корисності в ІТ🤘

🔺Даємо практичні матеріали з RoR, JavaScript, QA, DevOps
🔺Розкажемо як знайти першу роботу без хвилювань та проблем

✍️Для звʼязку-@klimenko_nataly

👉 Відкриті вакансії - www.codica.com/careers
Download Telegram
Друзі, ми продовжуємо серію про факапи в кодінгу — ми писали про Python, JS-1, JS-2 і навіть QA…

#codica_advice

Сьогодні поговоримо про:
5 антипатернів у Rails, які зустрічаються навіть у проєктах, що називають себе «legacy-friendly».
І так, ми теж так робили 👇
2👍2🔥1
1. God Model — коли модель знає ВСЕ
Модель User у 700 рядків? Там і валідації, і бізнес-логіка, і парсинг Excel, і надсилання email’ів, і… сльози.

Антипатерн:
class User < ApplicationRecord
before_save :normalize_email
def send_welcome_email; end
def export_to_csv; end
def soft_delete; end
def hard_delete; end
def resurrect; end
# ще 53 методи
end


Краще:
— винести бізнес-логіку в сервісні об'єкти
— окремі обов'язки – в concerns
— парсинг/експорт – в окремі класи

2. Fat Controller — коли кожен екшн з душею (і сотнею рядків)
OrdersController, де create – на 70 рядків, а update – на 130? Це вже не REST, це серіал.

Краще:
— витягнути логіку в форм-обʼєкти
— використовуй interactor’и, services, commands
— before_action з умовами – ок, але без фанатизму

3. Колбеки-лабіринти (before_save, after_commit, around_update)
Якщо ти не впевнений, чому один і той самий рекорд тригерить три листи й два оновлення таблиць – ти, мабуть, десь переборщив із колбеками.

Проблема:
— Колбеки приховані
— Їх важко тестувати
— Вони викликаються неочікувано

Рішення:
— винось сторонні ефекти (email, push, інтеграції) у ActiveJob
— використовуй Service objects, де логіка викликається явно, а не «десь там у фоні»

4. Business Logic in Views (ERB має бути простим)
Якщо в show.html.erb ти бачиш це:

<% if current_user.admin? && order.status == 'pending' && Time.now < order.expires_at %>
<%= link_to 'Approve Order', approve_order_path(order) %>
<% end %>

…то ти бачиш антипатерн.

Краще:
— логіку – в helpers або view models
— мінімум умов у ERB, максимум змісту

5. Overuse of default_scope
Це ніби зручно: ти хочеш, щоб усюди is_active: true. Але потім ти хочеш зробити with_deleted… і нічого не працює.

Антипатерн:
default_scope { where(is_active: true) }


Чому погано:
— default_scope автоматично додається у ВСІ запити – навіть у joins, includes, count
— складно зрозуміти, чому певні дані «не приходять»

Краще:
scope :active, -> { where(is_active: true) }


Rails – це про швидкість. Але legacy приходить не вночі, воно починається з «та я просто тут один колбек додам».
Вивчай свій код. Переписуй. Не соромся бути кращим, ніж був вчора.

Хочеш частину 2 з антипатернами – напиши в коментарях 👇

TikTok | Instagram | Telegram
🔥5👍1
🔍 Чому ваш LinkedIn-профіль мовчить і як це змінити?

#НапуттяВід_HR Директорки Клименко Наталії

LinkedIn – це більше, ніж просто онлайн-резюме. Це ваша цифрова візитка, яка або відкриває двері до можливостей, або просто висить в тиші.

Якщо вам не пишуть рекрутери, не приходять запити, а пости не працюють – час переглянути свій профіль.

🛠 Я зібрала 6 основних причин, чому профіль може бути “мертвим” – і що з цим робити.

Зберігайте, впроваджуйте – і нехай ваш LinkedIn нарешті заговорить!

TikTok | Instagram | Telegram
👍6🔥1
🚀 Zod + TanStack React Query + Day.js — must-have набір для React + TypeScript

Якщо ти ще ловиш баги на «undefined is not a function», а new Date() показує 1970 — цей пост буквально твій антидепресант👇
👍4
📌 Zod – схема-валідація на стероїдах 👉 zod.dev
Коли хочеш бути впевненим, що бекенд не підкинув тобі замість об’єкта — пекельну суміш з null і string.
👤 Для TypeScript-розробників (і тих, хто хоче типи без болю)
Навіщо: створює схеми типів, валідує дані на вході, повертає чіткі помилки. Ідеально для форм, API, будь-чого.
const userSchema = z.object({
name: z.string(),
age: z.number().min(18),
});


const result = userSchema.safeParse(data);
if (!result.success) {
console.error(result.error);
}

→ Помилку бачиш одразу, а не від юзера через тиждень. 🙃

📌 TanStack React Query – async-запити як у кіно 👉 tanstack.com/query
“Якщо це loading, то що тоді fetching? А якщо вже success, але без data?..” — забудь цей біль.
React Query бере твої запити, кешує, оновлює, рефетчить, показує статуси й не грузить тебе зайвим.
👤 Для React/Next-розробників
Навіщо: менше useEffect, менше локального стейту, більше стабільності. Це як useSWR, тільки серйозніше й масштабніше.

📌 Day.js – бо Moment.js пішов на пенсію 👉 day.js.org
JS-дати — як лотерея. Day.js це фіксить: API як у Moment, але вага мінімальна й підтримка активна.
👤 Для всіх, хто працює з часом, датами, форматами
Навіщо: форматування, парсинг, віднімання дат і локалізація — все компактно й без зайвого.
dayjs().add(7, 'day').format('DD.MM.YYYY'); 
// → 24.07.2025

→ Більше не треба гуглити “format date in JS” на кожному проєкті 😄

📦 Як додати?
npm install zod @tanstack/react-query dayjs або через Yarn/Pnpm, що твоєму серцю ближче ❤️

Зберігай пост і ділись із фронтенд-другом, у якого ще useEffect(fetch) і new Date().toLocaleString() 🫠

#codica_advice

TikTok | Instagram | Telegram
5👎1
🎯 Хочеш бути тим самим QA, якого не тільки кличуть на демо, а й слухають?

Тоді забудь про підхід «тикати все підряд» – це не тестування, а лотерея.

🧠 Лови 5 порад, щоб економити нерви, час і підвищувати свій авторитет:

💥 Фокусуйся на головному.
Тести на «чи все зелене» – добре, але баги з найбільшим впливом приносять славу.

🔎 Тест-кейси не біблія.
Інколи треба вийти за межі сценарію й увімкнути допитливість: exploratory testing – твій друг.

🤖 Автоматизація з розумом.
Якщо автоматизувати все підряд, то можна роками дебажити свої автотести.

🔒 Дбай про безпеку.
Навіть під час тестування не забувай, що чутливі дані – це священне.

📱 Тестуй на «живих» умовах.
Різні пристрої, браузери, Wi-Fi через сусідський чайник – хай нічого не здивує в проді.

Постав реакцію, якщо хоч одну з цих порад вже ігнорив, але потім шкодував 😄

Зберігай, шли колезі, і пам’ятай – ти не просто тиснеш кнопки. Ти захищаєш досвід користувача 💪

#codica_advice

TikTok | Instagram | Telegram
🔥3
Що виведе цей код?
Anonymous Quiz
12%
[1, 3]
53%
[2, 4]
28%
[1, 2, 3, 4]
7%
[]
Що буде виведено в консоль?
Anonymous Quiz
40%
1
25%
2
13%
undefined
22%
TypeError
🐍 Roadmap для Python-розробника

Друзі, тримайте наш Python Roadmap – від перших змінних до повноцінних проєктів.

Збережіть собі й діліться з друзями, щоб більше ніхто не писав «print(‘hello world’)» рік підряд 😉

📍 Рівень складності: від junior до впевненого middle
📍 Формат: практично, з прикладами та лінками
4
1. Основи Python
📌 Що вивчати:
- синтаксис та структура мови
- типи даних: int, float, str, list, dict, set, tuple
- цикли, умовні оператори
- функції та аргументи
- імпорти й модулі
📚 Ресурси:
Python Official Docs
Learn Python (w3schools)
Real Python

2. Робота з Git та GitHub
📌 Що вивчати:
- git init, commit, push/pull
- branches, merge, pull requests
📚 Ресурси:
Git Handbook
Learn Git Branching

3. Віртуальні оточення та менеджмент залежностей
📌 Що вивчати:
- venv / virtualenv
- pip / pipenv / poetry
- requirements.txt / pyproject.toml
📚 Ресурси:
Python Packaging Guide
Poetry Docs

4. Бібліотеки та фреймворки
📌 Що вивчати:
- стандартна бібліотека Python (os, sys, datetime, json…)
- популярні сторонні бібліотеки: requests, pandas, numpy
- фреймворки: Flask / Django
📚 Ресурси:
Flask Tutorial
Django Official Tutorial

5. Основи HTML / CSS / трохи JS
📌 Що вивчати:
- HTML5 семантика, CSS Flexbox/Grid
- базовий JS для інтеграції (event handlers, fetch)
📚 Ресурси:
Frontend roadmap
MDN HTML/CSS

6. Робота з базами даних
📌 Що вивчати:
- SQL (SELECT, JOIN, GROUP BY, індекси)
- ORM у Python (SQLAlchemy, Django ORM)
📚 Ресурси:
SQLBolt
SQLAlchemy Docs

7. Тестування
📌 Що вивчати:
- pytest
- unittest
- мокінг, інтеграційні тести
📚 Ресурси:
pytest Docs
Real Python on Testing

8. API та JSON
📌 Що вивчати:
- створення REST API (Flask / FastAPI)
- робота з JSON
- HTTP запити (requests)
📚 Ресурси:
FastAPI Docs
Requests Docs

9. Асинхронність та багатопоточність
📌 Що вивчати:
- async/await
- asyncio
- threading vs multiprocessing
📚 Ресурси:
Async IO in Python

10. Практика
📌 Реалізуй:
- ToDo App (CLI / Web)
- блог на Django / Flask
- API для мобільного застосунку
- парсер для збору даних
- бот для Telegram/Discord

Далі: архітектура, продуктивність, DevOps
- оптимізація коду та профілювання
- кешування (Redis, Memcached)
- Docker, CI/CD

📚 Читай:
Python Weekly
Awesome Python
Real Python

📌 Зберігай у закладки й працюй за планом — це база, друже.

#codica_advice

TikTok | Instagram | Telegram
👍62
Що почитати на вихідних?
👉 матеріали медіа, які ви могли пропустити

Цього тижня добірка гаряча, як сервер під DDoS’ом.

📍 Як айтішниця й радикальна раціоналістка намагалась врятувати світ від ШІ
👉 і опинилася в центрі справи про шість убивств, яка шокувала її філософське коло?

📍 Як тихе передмістя Ханчжоу стало центром ШІ-стартапів Китаю
👉 з пітчами на кухні, кодом у кав’ярнях і державною підтримкою?

📍 Чатбот Grok Ілона Маска поширює антисемітські пости на X
👉 як ШІ на акаунті X вихваляв Гітлера після запиту про коментарі користувача щодо повені в Техасі.

📍 У гонитві за «божественною» технологією: Марк Цукерберг прискорює перегони ШІ
👉 невдоволений прогресом Meta її СЕО витрачає мільярди й переглядає стратегію в пошуках суперінтелекту.

Читаємо, дивуємося, робимо висновки й вмикаємо фаєрвол на здоровий глузд.

Гарних вихідних і цікавих історій! 🚀

#codica_weekend

TikTok | Instagram | Telegram
1🔥1