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
Англійська за мемами😜
👉Говоримо красиво

📍 chair - стілець

#codica_english

TikTok | Instagram | Telegram
😁53
Агов, друзі!
Таски тасками, але літній вайб уже просочується крізь монітор, хочеться скоріше закрити всі вкладки 🥥

Хто вже встиг втекти у відпустку, тисніть 🔥
Хто зараз читає це з шезлонга, залишайте ❤️
А хто тільки планує втекти з цього світу мітингів – 👍

Нехай у кожного буде свій релакс: із шезлонгом, горами чи просто з вимкненим Slack'ом 😌

#codica_humor

TikTok | Instagram | Telegram
👍6😁4🔥1
Друзі, ми продовжуємо серію про факапи в кодінгу — ми писали про 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