🤔 Как небольшой команде переехать на ClickHouse
Петр Гонин, инженер по данным в Okko, делится опытом переезда на ClickHouse. Причин для переезда было несколько, но одной из главных была низкая производительность — среднее время аналитического запроса составляло около минуты, а после переезда составило около 2 с. И это не предел.
Из статьи вы узнаете, как удалось прийти к текущему состоянию хранилища данных и с какими проблемами пришлось столкнуться.
👉 Читать
Петр Гонин, инженер по данным в Okko, делится опытом переезда на ClickHouse. Причин для переезда было несколько, но одной из главных была низкая производительность — среднее время аналитического запроса составляло около минуты, а после переезда составило около 2 с. И это не предел.
Из статьи вы узнаете, как удалось прийти к текущему состоянию хранилища данных и с какими проблемами пришлось столкнуться.
👉 Читать
🏗️ Структуры данных для разработчиков: 10 самых важных
Структуры данных — фундамент эффективной разработки. Кратко разберем 10 ключевых структур данных, которые необходимо освоить каждому разработчику для создания производительных и масштабируемых приложений, а подробнее читайте в статье👇
🔹 Списки отлично подходят для хранения и обработки упорядоченных данных и полезны в различных приложениях, таких как управление задачами, ленты соцсетей и корзины интернет-магазинов.
🔹 Массивы — упорядоченная коллекция элементов фиксированного размера и хорошо подходят для ситуаций, где размер коллекции известен или редко меняется.
🔹 Стеки следуют принципу «последним пришел — первым вышел». Они идеальны для реализации операций отмены/повтора в текстовых редакторах или ведения истории просмотров в веб-браузерах.
🔹 Очереди работают по принципу «первым пришел — первым вышел». Они подходят для управления заданиями печати, отправки действий пользователя в играх на сервер или обработки сообщений в чат-приложениях.
🔹 Кучи используются для планирования задач и управления памятью. Они особенно полезны в реализации очередей с приоритетами, где нужен доступ к элементу с наивысшим или наименьшим приоритетом.
🔹 Деревья организуют данные иерархически. Они полезны для представления данных с естественными иерархиями или связями и могут использоваться в различных приложениях, таких как индексация баз данных.
🔹 Хеш-таблицы позволяют эффективно искать, вставлять и удалять данные. Они используют хеш-функцию для сопоставления ключей с соответствующими местами хранения и обеспечивают доступ к сохраненным значениям за постоянное время.
🔹 Суффиксные деревья специализируются на поиске строк в документах, что делает их идеальными для текстовых редакторов и алгоритмов поиска.
🔹 Графы отслеживают отношения и находят пути, что делает их незаменимыми в социальных сетях, рекомендательных системах и алгоритмах поиска путей.
🔹 KD-деревья хороши для поиска ближайших соседей и важны для картографических приложений и геолокационных сервисов.
Структуры данных — фундамент эффективной разработки. Кратко разберем 10 ключевых структур данных, которые необходимо освоить каждому разработчику для создания производительных и масштабируемых приложений, а подробнее читайте в статье👇
🔹 Списки отлично подходят для хранения и обработки упорядоченных данных и полезны в различных приложениях, таких как управление задачами, ленты соцсетей и корзины интернет-магазинов.
🔹 Массивы — упорядоченная коллекция элементов фиксированного размера и хорошо подходят для ситуаций, где размер коллекции известен или редко меняется.
🔹 Стеки следуют принципу «последним пришел — первым вышел». Они идеальны для реализации операций отмены/повтора в текстовых редакторах или ведения истории просмотров в веб-браузерах.
🔹 Очереди работают по принципу «первым пришел — первым вышел». Они подходят для управления заданиями печати, отправки действий пользователя в играх на сервер или обработки сообщений в чат-приложениях.
🔹 Кучи используются для планирования задач и управления памятью. Они особенно полезны в реализации очередей с приоритетами, где нужен доступ к элементу с наивысшим или наименьшим приоритетом.
🔹 Деревья организуют данные иерархически. Они полезны для представления данных с естественными иерархиями или связями и могут использоваться в различных приложениях, таких как индексация баз данных.
🔹 Хеш-таблицы позволяют эффективно искать, вставлять и удалять данные. Они используют хеш-функцию для сопоставления ключей с соответствующими местами хранения и обеспечивают доступ к сохраненным значениям за постоянное время.
🔹 Суффиксные деревья специализируются на поиске строк в документах, что делает их идеальными для текстовых редакторов и алгоритмов поиска.
🔹 Графы отслеживают отношения и находят пути, что делает их незаменимыми в социальных сетях, рекомендательных системах и алгоритмах поиска путей.
🔹 KD-деревья хороши для поиска ближайших соседей и важны для картографических приложений и геолокационных сервисов.
🛠️ Высокая доступность, масштабируемость и пропускная способность: шпаргалка по проектированию системы с типичными решениями
👉 Источник
#инфографика
👉 Источник
#инфографика
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.
В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги
👉Подписаться👈
В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги
👉Подписаться👈
💡🎨 Источники вдохновения для UI/UX-дизайнеров и фронтендеров: 50 полезных ресурсов
Ищете идеи для своего следующего проекта? Эта подборка поможет вам найти вдохновение и новые подходы к дизайну. Разберем первые десять, а остальные читайте в статье:
• Websitevice – новая, часто обновляемая галерея с широким спектром примеров веб-дизайна. Удобная фильтрация по категориям.
• One Page Love – коллекция высококачественных одностраничных сайтов и лендингов.
• Landingfolio – большая коллекция красивых лендингов, оптимизированных для маркетинга.
• Lapa Ninja – тщательно отобранные примеры веб-дизайна с полными скриншотами страниц.
• Godly – обширная галерея с анимированными превью сайтов, мобильных и десктопных приложений.
• Siteinspire – объемная коллекция лучших веб-дизайнов с удобной сортировкой.
• Maxibestof – огромная подборка примеров, курируемая опытным дизайнером.
• InspoVault – фокусируется на качестве, а не количестве примеров, в основном в минималистичном и креативном стилях.
• Landing Gallery – специализируется на эффектных лендингах.
• SEE + SAW – галерея с динамичными видеопревью сайтов.
Ищете идеи для своего следующего проекта? Эта подборка поможет вам найти вдохновение и новые подходы к дизайну. Разберем первые десять, а остальные читайте в статье:
• Websitevice – новая, часто обновляемая галерея с широким спектром примеров веб-дизайна. Удобная фильтрация по категориям.
• One Page Love – коллекция высококачественных одностраничных сайтов и лендингов.
• Landingfolio – большая коллекция красивых лендингов, оптимизированных для маркетинга.
• Lapa Ninja – тщательно отобранные примеры веб-дизайна с полными скриншотами страниц.
• Godly – обширная галерея с анимированными превью сайтов, мобильных и десктопных приложений.
• Siteinspire – объемная коллекция лучших веб-дизайнов с удобной сортировкой.
• Maxibestof – огромная подборка примеров, курируемая опытным дизайнером.
• InspoVault – фокусируется на качестве, а не количестве примеров, в основном в минималистичном и креативном стилях.
• Landing Gallery – специализируется на эффектных лендингах.
• SEE + SAW – галерея с динамичными видеопревью сайтов.
🎙️ Подкаст Podlodka: Зачем учить язык С в 2024 году
С — язык, на котором написана значимая часть всего, что нас окружает: от ядра операционной системы до мозгов автомобиля, из колонок которого вы будете слушать этот подкаст. В выпуске вместе с Игорем Жирковым ведущие разбираются с тем, насколько современный C похож на язык, с которым вы познакомились в той самой книге Кернигана и Ритчи, какие особенности делают его одним из самых нетерпимых языков к ошибкам программиста, и стоит ли вообще на нем писать код в 2024 году.
⏳ Таймкоды:
00:00 О чем выпуск
05:00 Чем интересен Си
13:22 Мифы о Си
24:59 История развития языка Си
35:25 Стандарты Си
59:50 Современный Си и его отличия от старого
01:05:27 Топ-3 ошибок, которым подвержен Си
01:12:40 Ключевые фичи Си
01:21:10 Организация кода и модулей
01:26:09 Синтаксис и семантика Си
01:31:10 Неопределенное поведение и его последствия
01:39:24 Семантика и производительность
01:45:02 Оптимизация производительности
01:51:02 Компиляторы и их разнообразие
02:02:20 Экосистема Си
02:08:54 Какие языки могут заменить Си
02:16:05 Нужно ли преподавать Си в вузах
02:28:46 Заключение
▶ Смотреть или слушать полностью
▶ Полная подборка языковых и платформенных выпусков подкаста
#подкасты
С — язык, на котором написана значимая часть всего, что нас окружает: от ядра операционной системы до мозгов автомобиля, из колонок которого вы будете слушать этот подкаст. В выпуске вместе с Игорем Жирковым ведущие разбираются с тем, насколько современный C похож на язык, с которым вы познакомились в той самой книге Кернигана и Ритчи, какие особенности делают его одним из самых нетерпимых языков к ошибкам программиста, и стоит ли вообще на нем писать код в 2024 году.
00:00 О чем выпуск
05:00 Чем интересен Си
13:22 Мифы о Си
24:59 История развития языка Си
35:25 Стандарты Си
59:50 Современный Си и его отличия от старого
01:05:27 Топ-3 ошибок, которым подвержен Си
01:12:40 Ключевые фичи Си
01:21:10 Организация кода и модулей
01:26:09 Синтаксис и семантика Си
01:31:10 Неопределенное поведение и его последствия
01:39:24 Семантика и производительность
01:45:02 Оптимизация производительности
01:51:02 Компиляторы и их разнообразие
02:02:20 Экосистема Си
02:08:54 Какие языки могут заменить Си
02:16:05 Нужно ли преподавать Си в вузах
02:28:46 Заключение
▶ Смотреть или слушать полностью
▶ Полная подборка языковых и платформенных выпусков подкаста
#подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
😀 Платные подписки есть? А если найду?!
💬 А у вас есть? На какие сервисы? Поделитесь в комментариях👇
#холивар
💬 А у вас есть? На какие сервисы? Поделитесь в комментариях👇
#холивар
Forwarded from Библиотека Go разработчика | Golang
🏃 Самоучитель по Go для начинающих. Часть 16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
В статье познакомимся с концепцией тестирования кода и её основными видами, изучим инструменты стандартного пакета testing, научимся запускать и визуализировать тесты. В качестве практического задания напишем и протестируем алгоритм «Решето Эратосфена».
👉 Читать гайд
📌 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
В статье познакомимся с концепцией тестирования кода и её основными видами, изучим инструменты стандартного пакета testing, научимся запускать и визуализировать тесты. В качестве практического задания напишем и протестируем алгоритм «Решето Эратосфена».
👉 Читать гайд
📌 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
Привет, друзья! 👋
Мы готовим статью о самых странных и уникальных дистрибутивах Linux, и нам нужно ваше мнение! 🤔💬
1️⃣ Какой самый необычный дистрибутив Linux вы когда-либо пробовали? Почему он вас удивил?
2️⃣ Есть ли у вас советы для новичков, которые только начинают работать с Linux? 🐧✨
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
Мы готовим статью о самых странных и уникальных дистрибутивах Linux, и нам нужно ваше мнение! 🤔💬
1️⃣ Какой самый необычный дистрибутив Linux вы когда-либо пробовали? Почему он вас удивил?
2️⃣ Есть ли у вас советы для новичков, которые только начинают работать с Linux? 🐧✨
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
🔍 Детальное сравнение и углубленный анализ производительности Java, Go, C++, Rust: как сборка мусора влияет на производительность и эффективность использования ресурсов
Любопытное исследование, в котором рассматриваются накладные расходы, связанные с использованием языков с автоматической сборкой мусора (Java и Go) по сравнению с языками с ручным управлением памятью (C++ и Rust), в контексте систем репликации конечного автомата (SMR), работающих в облаке.
👉 Читать
Любопытное исследование, в котором рассматриваются накладные расходы, связанные с использованием языков с автоматической сборкой мусора (Java и Go) по сравнению с языками с ручным управлением памятью (C++ и Rust), в контексте систем репликации конечного автомата (SMR), работающих в облаке.
👉 Читать
Они не просто домашние животные, а полноценные «employees». Среди них есть «главный клерк», «аудитор» и даже «председатель» — кот по имени Футаба.
Коты помогают создать уютную атмосферу в офисе и даже способствуют снижению уровня увольнений. Самые важные сотрудники получают всё необходимое: собственные туалеты, полки и защиту от когтей на стенах.
😁 — Хочу котиков себе на работу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍉 Подборка лучших статей «Библиотеки программиста» за август: сохраняй в заметки, чтобы не пропустить #самыйсок
🎮🚀 Saturated Outer Space: как инди-разработчики перезапускают игру и бросают вызов жанровым стереотипам
🤖🛠 Секреты эффективного промптинга: 4 способа улучшить качество ответов чат-бота
🎮 Как зарабатывать на играх или зачем изучать игровую аналитику в 2024 году
🏄 6+ главных алгоритмов балансировки нагрузки
🖼 5 стратегий рендеринга веб-страниц: как выжать максимум из вашего сайта
🚀 Ускорьте свою базу данных: 7 проверенных методов масштабирования и оптимизации
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
🏃 Самоучитель по Go для начинающих. Часть 15. Конкурентность. Горутины. Каналы
🆕📜 Что нового в TypeScript 5.5: 4 ключевых улучшения
🎮📖 Библиотека геймдизайнера: 10 must-read книг 2024 года
🤖 6 основных алгоритмов машинного обучения: руководство для начинающих
🏗 Структуры данных для разработчиков: 10 самых важных
🎮🚀 Saturated Outer Space: как инди-разработчики перезапускают игру и бросают вызов жанровым стереотипам
🤖🛠 Секреты эффективного промптинга: 4 способа улучшить качество ответов чат-бота
🎮 Как зарабатывать на играх или зачем изучать игровую аналитику в 2024 году
🏄 6+ главных алгоритмов балансировки нагрузки
🖼 5 стратегий рендеринга веб-страниц: как выжать максимум из вашего сайта
🚀 Ускорьте свою базу данных: 7 проверенных методов масштабирования и оптимизации
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
🏃 Самоучитель по Go для начинающих. Часть 15. Конкурентность. Горутины. Каналы
🆕📜 Что нового в TypeScript 5.5: 4 ключевых улучшения
🎮📖 Библиотека геймдизайнера: 10 must-read книг 2024 года
🤖 6 основных алгоритмов машинного обучения: руководство для начинающих
🏗 Структуры данных для разработчиков: 10 самых важных
$1.1M — именно столько заработал американский школьник
Он использовал API ChatGPT и создал удобную оболочку, которая делает взаимодействие с ним еще проще.
В итоге получил: приложение для App Store, которое считает калории по фото. Его скачали более 100 тысяч человек.
Как вам такой подход к бизнесу? Кажется, теперь каждый может заработать свой миллион🙂
Он использовал API ChatGPT и создал удобную оболочку, которая делает взаимодействие с ним еще проще.
В итоге получил: приложение для App Store, которое считает калории по фото. Его скачали более 100 тысяч человек.
Как вам такой подход к бизнесу? Кажется, теперь каждый может заработать свой миллион
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Сага: эффективный шаблон микросервисной архитектуры
Полную бизнес-транзакцию, как правило, очень сложно описать с помощью одной транзакции в базе данных. Возьмем, к примеру, процесс покупки в онлайн-магазине — с момента нажатия кнопки «Купить» до момента доставки заказа к вашей двери происходит серия шагов:
🔸 Размещение заказа. Пользователь выбирает нужные товары, добавляет их в корзину и начинает процесс оформления заказа. Система сохраняет информацию о видах товаров, их количестве, имени заказчика, адресе и способе доставки.
🔸 Создание счета-фактуры. После размещения заказа создается счет-фактура, который служит основной записью о транзакции и используется для выставления счета и учета.
🔸 Обработка платежа. Инициируется процесс оплаты, пользователь предоставляет данные банковской карты или электронного кошелька. Оплата безопасно обрабатывается, и после успешного завершения заказ подтверждается.
🔸 Отправка товара. После обработки платежа заказ готовится к отправке: создается информация для отслеживания, система уведомляет пользователя об ориентировочной дате доставки.
Каждый из этих шагов включает взаимодействие с различными микросервисами — сервисов заказов, платежным сервисом и сервисом доставки. Для успешного и последовательного выполнения бизнес-транзакции важна безупречная координация всех частей системы. Эта задача кажется очень сложной, но к счастью, есть универсальный и надежный паттерн, который помогает выстроить взаимодействие микросервисов самым оптимальным образом — Сага. О нем и пойдет речь в статье.
Полную бизнес-транзакцию, как правило, очень сложно описать с помощью одной транзакции в базе данных. Возьмем, к примеру, процесс покупки в онлайн-магазине — с момента нажатия кнопки «Купить» до момента доставки заказа к вашей двери происходит серия шагов:
🔸 Размещение заказа. Пользователь выбирает нужные товары, добавляет их в корзину и начинает процесс оформления заказа. Система сохраняет информацию о видах товаров, их количестве, имени заказчика, адресе и способе доставки.
🔸 Создание счета-фактуры. После размещения заказа создается счет-фактура, который служит основной записью о транзакции и используется для выставления счета и учета.
🔸 Обработка платежа. Инициируется процесс оплаты, пользователь предоставляет данные банковской карты или электронного кошелька. Оплата безопасно обрабатывается, и после успешного завершения заказ подтверждается.
🔸 Отправка товара. После обработки платежа заказ готовится к отправке: создается информация для отслеживания, система уведомляет пользователя об ориентировочной дате доставки.
Каждый из этих шагов включает взаимодействие с различными микросервисами — сервисов заказов, платежным сервисом и сервисом доставки. Для успешного и последовательного выполнения бизнес-транзакции важна безупречная координация всех частей системы. Эта задача кажется очень сложной, но к счастью, есть универсальный и надежный паттерн, который помогает выстроить взаимодействие микросервисов самым оптимальным образом — Сага. О нем и пойдет речь в статье.