Codica - корисне про IT
2.09K subscribers
3.29K photos
171 videos
52 files
1.69K links
Привіт, друже, це канал про корисності в ІТ🤘

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

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

👉 Відкриті вакансії - www.codica.com/careers
Download Telegram
Практика Rails: Розумний семантичний пошук через PostgreSQL & ActiveRecord

#codica_advice

Чи бувало у вас таке: замовник приходить і каже: “Нам терміново потрібен AI-пошук у проекті!“, а ви вже уявляєте новий деплой, налаштування Pinecone або Qdrant, додатковий бюджет і головний біль з інфраструктурою?

Спокійно! Знайшли для вас елегантне рішення, яке дозволяє реалізувати семантичний векторний пошук без жодної нової бази даних — прямо у вашому звичному PostgreSQL.

Більшість продуктів зараз додають AI-фічі, але підключати окремі векторні бази даних (Pinecone/Qdrant) — це зайвий деплой, гроші та інфраструктура.

Якщо у вас вже є PostgreSQL, проблему вирішує розширення pgvector та гем pgvector-ruby
Як це працює на практиці за 4 кроки:

1️⃣ Додаємо гем та вмикаємо розширення:


# Gemfile
gem “pgvector”

Створюємо міграцію:
class EnablePgvector < ActiveRecord::Migration[7.1]
def change
enable_extension “vector”
end
end


2️⃣ Додаємо векторну колонку до моделі:


class AddEmbeddingToProducts < ActiveRecord::Migration[7.1]
def change
# 1536 — розмірність для стандартних векторів OpenAI (text-embedding-3-small)
add_column :products, :embedding, :vector, limit: 1536
end
end


3️⃣ Підключаємо магію в ActiveRecord:


class Product < ApplicationRecord
has_neighbors :embedding
end


4️⃣ Робимо семантичний пошук у коді:


# Отримуємо вектор від AI для пошукового запиту “теплий худі на зимову погоду”
user_vector = OpenAIClient.embed(“теплий худі на зимову погоду“)

# Шукаємо найближчі товари за косинусною відстаню прямо через SQL:
@nearest_products = Product.nearest_neighbors(:embedding, user_vector, distance: “cosine”).first(5)


🔥 Чому це круто:
• Жодних сторонніх сервісів — все всередині вашої Postgres.
• Повна підтримка стандартних з’єднань, scope та фільтрів ActiveRecord.
• Легко масштабується до мільйонів записів за допомогою HNSW індексів.

А ви вже пробували впроваджувати векторний пошук у своїх Rails-проектах чи поки використовуєте звичайний Full-Text Search? 👇

TikTok | Instagram | Telegram
👍3
Друзі, ми багато говорили про те, як створювати, копіювати та ефективно працювати з обʼєктами в JavaScript 😎

Робота з обʼєктами в JavaScript давно не обмежується keys() чи entries(). Сучасний синтаксис дозволяє писати коротше, читабельніше і без зайвих перевірок — особливо коли дані приходять з API або структура обʼєкта може змінюватися.

Ці кілька “маленьких” можливостей мови часто недооцінюють, хоча саме вони роблять production-код акуратним і зрозумілим 👇

✨ Modern Object Tricks in JavaScript — маленькі речі, які роблять код чистішим

Гортайте картки — розберемося, коли який метод доречний і як писати ефективніше.

#codica_advice

Попередні пости рубрики:
📍 5 Important Object Methods in JavaScript
📍 Iteration Patterns
📍 Shallow vs Deep Copy in JavaScript
📍 Object vs Map in JavaScript — коли що використовувати?
📍 Protecting Objects in JavaScript — freeze, seal чи preventExtensions?

TikTok | Instagram | Telegram
🔥3
🚨 ХТО ЗНОВУ ЗЛАМАВ СТЕЙДЖ? НОВИЙ IT-ДЕКТЕКТИВ! 🚨

Друзі, у нас в компанії черговий релізний форс-мажор. Чотири спеціалісти працювали над фічами, але хтось один завантажив сирий код і повністю поклав стейджинг-сервер 😱

Наш PM зібрав первинні логи та записав кілька фактів. Допоможіть знайти винуватця, визначивши для кожного: Роль, Мову/Інструмент та їхній єдиний головний факап.

📋 Команда та ресурси:
Андрій, Марія, Сергій, Олена.

Ролі:
Backend, Frontend, QA, PM.

Мови та Інструменти:
Python, JavaScript, Jira, Postman.

Факапи:
Поклав стейдж, Забув дедлайн, Видалив ліда з CRM, Створив 50 merge conflicts.

Відомо, що:
Андрій працює з Python.
Марія — QA.
QA працює в Postman і не ламала стейдж.
PM веде задачі в Jira і саме він забув дедлайн.
Олена — не Frontend і не QA.
Сергій — не Backend і не PM.
Frontend працює з JavaScript і саме він поклав стейдж.
Backend створив 50 merge conflicts.

🤔 Хто поклав стейдж? Яка у нього роль та інструмент?
Пишіть у коментарях ім’я винуватця 👇


TikTok | Instagram | Telegram
👀2
Що буде виведено в консоль?
Anonymous Quiz
7%
2 undefined
26%
3 undefined
56%
2 3
11%
3 null
💎 Ruby-інструменти, які варто знати кожному розробнику. Частина 4

Попередні частини:
👉 [Ruby-інструменти. Частина 1]
👉 [Ruby-інструменти. Частина 2]
👉 [Ruby-інструменти. Частина 3]

Застосунок починає «гальмувати» через відправку email-ів чи обробку великих файлів? Користувачі дивляться на лоадер довше, ніж на власне життя? Час виносити важкі завдання у фонові черги.

#codica_advice

Ось 3 популярні інструменти для асинхронного виконання завдань у Rails👇

📌 Sidekiq
Багатопотоковий процесор завдань на базі Redis. Золотий стандарт індустрії для високонавантажених та продуктивних систем.

📌 GoodJob
Інструмент для фонових завдань прямо в PostgreSQL. Дозволяє працювати без Redis і тримати все в єдиній базі даних.

📌 Solid Queue
• Сучасний офіційний бекенд для Active Job від команди Rails, який став рішенням за замовчуванням в Rails 8.

А який бекенд для Active Job зараз крутиться у ваших проєктах?

TikTok | Instagram | Telegram
👍2
Друзі, наша щира рекомендація! І одразу головний спойлер: участь повністю безкоштовна! 🙌

Організатори AI HOUSE та SQUAD збирають 30 найкрутіших AI/ML-спеціалістів, щоб вивезти їх в Карпати на 6 днів технічного інтенсиву.

Що там буде:
- AI-челенджі: робота в командах по 3–4 людини над прикладними інженерними задачами.
- Менторство: з вами працюватимуть досвідчені фахівці, а завершиться все фінальним Demo Day.
- Перезавантаження: вечірнє багаття, походи в гори та затишний нетворкінг.

Найкраща частина: організатори покривають проживання, харчування та трансфер! Від вас потрібен лише благодійний донат (від 1 000 грн) на підтримку «Реактивної Пошти», яка допомагає нашій артилерії.

Якщо ти AI/ML Engineer, Data Scientist, Researcher або Developer — це той самий знак, на який ти чекав. Прокачати скіли, знайти однодумців та побути в горах.

🔗 [Посилання на реєстрацію]

Подавайте заявки самі або пересилайте колегам, яким це актуально! Погнали? 🔥

TikTok | Instagram | Telegram
🔥2
Друзі, всім глибокого та змістовного вихідного 🇺🇦

#codica_weekend

Сьогодні — підбірка, яка точно не залишить байдужим 👇

➡️ Голодомор: геноцид українського народу
Глибока розмова з дослідником про одну з найболючіших тем нашої історії .
⏱ Тривалість — 66 хв

➡️ Коли з’явилась українська мова, як говорили на Русі, мовні каліки з СРСР
Про мову без міфів: звідки вона, як її змінювали і чому сьогодні це важливіше, ніж здається.
⏱ Тривалість — 60 хв

➡️ Справжня історія козаків в XVI–XVII ст.
Козаки — система, політика і навіть дипломатія, яка виглядає значно складніше, ніж нас вчили.
⏱ Тривалість — 80 хв

➡️ Василь Стус. Україна і вибір долі — лекція Віталія Портникова
Про моральний вибір, який формує цілу націю — і чому ці питання досі актуальні.
⏱ Тривалість — 79 хв

Нехай ці вихідні будуть не тільки про відпочинок, а й про розуміння себе і свого коріння 💛

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

📍 ancient — давній, стародавній
📍 skull — череп
📍 origins — походження, джерело

#codica_english

TikTok | Instagram | Telegram
😁6
Ранковий мемчик в студію! 😜

Заряджаємось на гарний день, друзі! ☕️

#codica_humor

TikTok | Instagram | Telegram
😁4👏1
🎯 10 питань, які часто “валять” Ruby dev-ів на співбесідах

#codica_interviews

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

Є питання, які дуже люблять задавати Senior інтерв’юери, тому що вони добре показують не просто знання синтаксису, а глибину розуміння Ruby та Rails.

Саме такі питання часто стають моментом, коли співбесіда переходить із “кандидат знає Ruby” → до “кандидат дійсно розуміє, як працює Ruby”.
❤3🔥1
Ми зібрали 10 таких питань, які регулярно з’являються на співбесідах.
Перевіримо, чи готові ви до них? 👇

📌 1. What is the difference between dup and clone in Ruby?
dup копіює об'єкт без singleton methods
clone копіює об'єкт разом із singleton methods і frozen state

📌 2. What happens when you use include vs extend in Ruby modules?
include додає методи модуля як instance methods
extend додає методи модуля як methods конкретного об'єкта або класу

📌 3. What is the difference between class_eval and instance_eval?
class_eval додає instance methods до класу
instance_eval виконує код у контексті singleton class об'єкта

📌 4. How does Ruby garbage collection work?
Ruby використовує mark-and-sweep garbage collector.
Алгоритм:
1️⃣ знаходить об'єкти, на які ще є посилання
2️⃣ видаляє об'єкти, на які більше ніхто не посилається

📌 5. What is method lookup chain in Ruby?
Ruby шукає метод у такому порядку:
1️⃣ singleton class
2️⃣ class
3️⃣ included modules
4️⃣ superclass
5️⃣ Object → Kernel → BasicObject

📌 6. What is the difference between load, require, and require_relative?
require — завантажує файл один раз
load — виконує файл кожного разу при виклику
require_relative — завантажує файл відносно поточного файлу

📌 7. What are Ruby singleton methods?
Це методи, які належать конкретному об’єкту, а не всьому класу.


obj = "hello"
def obj.shout
upcase
end


📌 8. What is the difference between symbol and string in terms of memory?
String створює новий об'єкт у памʼяті
Symbol існує в одному екземплярі
Тому symbols часто використовують як keys у hash.

📌 9. What are Rails callbacks and why can they be dangerous?
Callbacks — це методи, які виконуються під час lifecycle моделі.
Наприклад:
before_save
after_create
Проблема: вони можуть ускладнювати логіку і створювати приховані side-effects.

📌 10. What is the difference between before_action and around_action?
before_action виконується перед controller action
around_action обгортає виконання action


around_action :wrap

def wrap
puts "before"
yield
puts "after"
end


💬 А тепер чесно:
на якому з цих питань ви б задумались на співбесіді? 😄

TikTok | Instagram | Telegram
🔥6