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

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

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

👉 Відкриті вакансії - www.codica.com/careers
Download Telegram
Вітаємо, друзі! Тримайте до ранкової кави 5 правил чистого коду, які врятують вам нерви 🚀

👉 Чистий код – це як прибрана кухня: можна спокійно працювати, не шукати ложку по всій квартирі й не проклинати себе через пів року.

👉 А головне – це економія часу і нервів всієї команди. Бо розгрібати legacy з «a, b, c» ніхто не любить.
3
1️⃣ Назви змінні так, щоб не треба було пояснювати
Погано:
let a = 10;
let b = 0.15;
let c = a - a * b;

Добре:
const PRICE = 10;
const DISCOUNT_RATE = 0.15;
const finalPrice = PRICE - PRICE * DISCOUNT_RATE;

🔑 Якщо змінну треба пояснювати словами – назви її нормально.

2️⃣ SRP: одна функція – одна відповідальність
Погано:
function processUserData(user) {
validateUser(user);
saveUser(user);
sendWelcomeEmail(user);
}

Добре:
function validateUser(user) { /* ... */ }
function saveUser(user) { /* ... */ }
function sendWelcomeEmail(user) { /* ... */ }

🔑 Маленькі й чіткі функції простіше читати, тестувати та перевикористовувати.

3️⃣ DRY — не повторюйся
Погано:
if (user.role === 'admin') {
sendEmail(user.email, 'Hello Admin');
}
if (user.role === 'user') {
sendEmail(user.email, 'Hello User');
}

Добре:
sendEmail(user.email, Hello ${user.role === 'admin' ? 'Admin' : 'User'});

🔑 Дублювання – це майбутні баги. Винось спільну логіку в константи чи функції.

4️⃣ Мінімізуй вкладені умови (Guard Clauses)
Погано:
javascript
if (user) {
if (user.isActive) {
if (user.balance > 0) {
accessAccount(user);
}
}
}

Добре:
if (!user || !user.isActive || user.balance <= 0) return;
accessAccount(user);

🔑 Прості «захисні умови» краще, ніж матрьошка з if.

5️⃣ KISS: не ускладнюй
Погано:
javascript
const findUser = (users, id) => {
return users.filter(u => u.id === id)[0];
}

Добре:
javascript
const findUser = (users, id) => users.find(u => u.id === id);

🔑 Використовуй найпростіший метод, а не велосипед.

💡 Висновок: Чистий код = швидке розуміння + легка підтримка + менше багів.
А ще – повага до колег (і до себе через рік).

#codica_advice

TikTok | Instagram | Telegram
🔥2
Що виведе цей код?
Anonymous Quiz
11%
api_key
11%
nil
70%
Config: api_key
7%
Помилка
Що буде виведено в консоль?
Anonymous Quiz
11%
1 1
46%
1 2
26%
2 1
17%
undefined undefined
☕️ Друзі, зізнавайтесь: хто ще деплоїть руками «бо так швидше»?
Ми теж так робили… доки одного разу не зламали прод.


👉 Щоб такого більше не було — ловіть мінімальний, але робочий CI/CD для Rails.
🔥3❤‍🔥1
⚙️ CI на GitHub Actions
У .github/workflows/ci.yml:


Ruby + гем-кеш
- uses: ruby/setup-ruby@v1я

👉 швидший білд.

Node.js (якщо є JS/yarn/webpacker)
- uses: actions/setup-node@v3


Postgres як service
База для тестів прямо в CI, без зовнішнього конекту.

Rubocop
- run: bundle exec rubocop


Тести (RSpec/Minitest)
- run: bundle exec rspec


Статус на PR
GitHub → Settings → Branch protection → main →
required


🚀 CD (деплой після CI)
🔹 Heroku – простий деплой прямо з GitHub.
🔹 Fly.io – сучасна альтернатива Heroku, дешевша.
🔹 Render / Railway – автодеплой «з коробки».
🔹 Docker – свій імідж деплоїмо через GitHub Actions.

📂 Готові приклади
🔹Thoughtbot Rails Template → suspenders
🔹 Гайд від GitHub → docs

🔑 Практичні поради
🔹 Ніколи не деплой без green CI.
🔹 Блокуйте PR, якщо тести падають.
🔹 Деплой – окремий workflow, не змішуй із тестами.
🔹 CI повинен бігати < 5 хв (кешуй залежності, важке винось окремо).

💡 Висновок
Мінімальний CI/CD – це не «опція», а базова гігієна проєкту.
Автоматизація не тільки рятує від «забув протестити», а й економить десятки годин усій команді.

#codica_advice

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

Вихідні без контенту – це як кава без кофеїну: щось є, а драйву нема. Тому ми зібрали для вас найсмачніші тексти останніх тижнів, які можна «зацінити».

📍 Історія про «вайб-кодинг»
👉 як журналістка без досвіду в програмуванні потрапила в команду Notion як розробниця – і чим це закінчилось.

📍 Як працює індійська індустрія з переробки електроніки
👉 мільярди доларів прибутку, але за страшну ціну – здоров’я людей та екології.

📍 Розробники Claude Code вперше визнали: їхній ШІ застосовують хакери

📍 Реліз GPT-5 зустріли з критикою
👉 користувачі очікували феєрверків, а отримали… відчуття «ну ок». Довелось навіть самому Альтману віддуватися в Reddit.

Кидайте реакцію, щоб ми знали, що вам зайшло:
👍 «топ»
😂 «лол»
🤯 «шок-контент»


#codica_weekend

TikTok | Instagram | Telegram
👍3
Англійська за мемами😜
👉Говоримо красиво

📍 deer – олень
📍 prison – в'язниця

#codica_english

TikTok | Instagram | Telegram
😁7👍1
Агов, друзі, перевірка – є тут олди? 😄

#codica_humor

TikTok | Instagram | Telegram
😁13
🎯 Як відповідати на технічні питання на співбесіді?

#codica_interviews

Давати швидку відповідь без підготовки – погана ідея.
Пройти ключові питання заздалегідь і зрозуміти, як пояснювати – правильний підхід.
1
Ось приклади питань для React-розробників, які обов‘язково варто знати 👇

1️⃣ Яку проблему вирішує React?
📌 Очікувана відповідь:
Робота з DOM у браузері – повільна операція. React оптимізує її за допомогою Virtual DOM:
— обчислює різницю між старим і новим станом інтерфейсу (diffing),
— оновлює тільки ті частини DOM, які змінилися (reconciliation).
Це зменшує кількість маніпуляцій із DOM, підвищує продуктивність і дозволяє мислити інтерфейсом як функцією від стану.

2️⃣ Чи миттєво оновлюється
setState? Якщо ні, то як виконати код після оновлення?
📌 Очікувана відповідь:
setState

працює асинхронно, бо React об’єднує кілька змін стану в один цикл рендерингу (batching).
— У класових компонентах можна використати callback:
this.setState({ data: [1, 2, 3] }, () => {
console.log('State оновлено');
});


— У функціональних компонентах – через useEffect:
useEffect(() => {
console.log('State оновлено');
}, [data]);


3️⃣ Як оновити стан на основі попереднього значення?
📌 Очікувана відповідь:
Коли новий state залежить від попереднього, варто використовувати функціональний синтаксис:

— У класових компонентах:
this.setState((prevState, props) => ({
counter: prevState.counter + props.step
}));


— У функціональних (useState):
setCounter(prev => prev + step);


Це гарантує правильне оновлення навіть при кількох викликах поспіль.

💡 Висновок: ці питання – must-know для React-розробника. Вони перевіряють не просто знання API, а й розуміння, як React працює «під капотом».

🌟 Пам’ятайте: підготовлений кандидат = спокійний кандидат 😉

#codica_interviews

TikTok | Instagram | Telegram
🔥3
🔥 Друзі, ви вже чули про vibe-coding чи навіть встигли потестувати?

👉 Все більше розробників тестують, як можна «писати код без коду», коли ти керуєш процесом через AI.

👉 Наш Frontend Lead, Євгеній Волков, теж занурився в цю тему, дослідив vibe-coding на реальних проєктах і зібрав власні спостереження, приклади та висновки.

Читайте статтю, кидайте реакції 👍 і діліться своїм досвідом у коментарях 💬

#codica_advice

TikTok | Instagram | Telegram
4👍3🤣1