Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🎁 256-й день года: 15 подарков, которые оценит каждый программист
Мы собрали 15 идей подарков — от практичных гаджетов до инструментов для профессионального роста. Эти подарки не только упростят рабочий процесс, но и вдохновят на новые достижения. Независимо от того, junior вы или senior, в нашем списке каждый найдёт что-то для себя.
👉 Смотреть список
Мы собрали 15 идей подарков — от практичных гаджетов до инструментов для профессионального роста. Эти подарки не только упростят рабочий процесс, но и вдохновят на новые достижения. Независимо от того, junior вы или senior, в нашем списке каждый найдёт что-то для себя.
👉 Смотреть список
Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/3e093096
Что будет на демо?
🔹Вводный урок от CPO курса;
🔹Лекции со всеми преподавателями МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск;
🔹Практические задания и дополнительные материалы!
Please open Telegram to view this post
VIEW IN TELEGRAM
JsonPath — это библиотека, которая позволяет извлекать данные из JSON-структур по пути, подобно тому, как это делает XPath для XML. В отличие от традиционного парсинга JSON в Java-объекты через такие библиотеки, как Jackson или Gson, JsonPath позволяет выбирать только те фрагменты данных, которые действительно нужны. Это экономит как время, так и память, что особенно важно при работе с большими JSON-документами.
Пример использования:
Допустим, у нас есть большой JSON, который представляет данные о магазине, и нужно вытащить категорию первой книги из списка:
{
"store": {
"book": [
{ "category": "fiction", "title": "The Great Gatsby" },
{ "category": "science", "title": "The Origin of Species" }
]
}
}
Вместо того, чтобы парсить весь JSON в объект, можно использовать JsonPath для выборки нужного значения:
String json = "{ \"store\": { \"book\": [ { \"category\": \"fiction\" }, { \"category\": \"science\" } ] } }";
String category = JsonPath.read(json, "$.store.book[0].category");
System.out.println(category); // Output: fiction
Обычно при парсинге JSON целиком, программа должна создать дерево объектов для всей структуры данных, даже если нужен лишь небольшой её фрагмент. JsonPath позволяет напрямую обратиться к интересующему полю, минуя необходимость обрабатывать весь JSON-объект.
▪️ Эффективность: Можно выбирать только нужные данные.
▪️ Гибкость: поддерживает мощные выражения для фильтрации и выборки данных (например, выбор элементов по условию).
▪️ Лаконичность: Вместо написания громоздкого кода для обхода JSON-структуры использунтся один понятный запрос.
▪️ Простота интеграции: Легко интегрируется с такими библиотеками, как Jackson, Gson и другими популярными парсерами.
▪️ Меньшая безопасность типов: В отличие от полной десериализации JSON в строгие Java-объекты, данные получаются в виде строк, что может привести к ошибкам при обработке типов.
▪️ Отсутствие контроля над схемой: Если схема JSON изменится, запросы могут стать неактуальными, и ошибки появятся не сразу, так как нет строгой валидации типов на уровне компиляции.
▪️ Меньше гибкости при сложной логике: Когда нужно не просто вытащить данные, а, например, выполнить дополнительные преобразования или логику на основе полей JSON, десериализация в объекты может быть более подходящей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Iterator — это поведенческий паттерн, который позволяет последовательно обходить элементы коллекции, не раскрывая ее внутреннюю структуру. Он обеспечивает единый интерфейс для работы с различными типами коллекций.
Использование:
🔹 Когда нужно обеспечить единый способ обхода элементов коллекций без зависимости от их типа.
🔹 Когда нужно скрыть внутреннюю реализацию структуры данных от кода, который с ней работает.
🔹 Для реализации паттерна "агрегат" и отделения итерации от логики самой коллекции.
Преимущества:
Недостатки:
Please open Telegram to view this post
VIEW IN TELEGRAM
На какой версии Java ваш текущий проект?
Anonymous Poll
1%
1.5
1%
7
11%
8
17%
11
41%
17
2%
19
22%
21
3%
Свой вариант (в комменты)
Oracle выпустила Java 23. Вот несколько из самых интересных нововведений:
🔹 Модульные импорты (JEP 476): Теперь можно легко импортировать все пакеты модуля, не погружаясь в детали модульной системы.
🔹 Паттерны для примитивов (JEP 455): Теперь примитивные типы можно использовать в pattern matching, instanceof и switch, что делает Java ещё более гибкой и выразительной.
🔹 Структурированная конкуренция (JEP 480): Этот API упрощает многопоточное программирование, объединяя связанные задачи в один блок работы, что повышает надежность и упрощает сопровождение кода.
🔹 Документация на Markdown (JEP 467): Теперь документацию Javadoc можно писать на Markdown, что делает её более удобной для чтения и создания.
🔹 Поколенческий режим для ZGC (JEP 474): Улучшен сборщик мусора ZGC, который теперь по умолчанию работает в поколенческом режиме, что увеличивает производительность и снижает затраты ресурсов.
Подробнее об обновлениях - ссылка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐘🔧 Расширение pg_variables: мощная альтернатива временным таблицам в PostgreSQL
Расширение
🔸 Оно позволяет определять скалярные сессионные переменные, которые могут быть очень ценными для хранения идентификатора пользователя, от имени которого выполняется запрос, и его различных атрибутов.
🔸 Оно содержит функции для работы с переменными различных типов. Созданные переменные существуют в течение текущей пользовательской сессии.
🔸 По умолчанию эти переменные создаются без поддержки транзакций. Если переменная успешно создана, она остаётся доступной в течение всего сеанса, даже если происходят откаты транзакций.
Если вы хотите использовать переменную с поддержкой транзакций и точек сохранения, необходимо передать дополнительный флаг
Флаг
Если вызовы функций
👉 Читать подробнее в статье
Расширение
pg_variables
для PostgreSQL предлагает альтернативу временным таблицам для эффективной работы с промежуточными данными, но имеет свои преимущества и недостатки, требующие тщательного анализа перед внедрением:🔸 Оно позволяет определять скалярные сессионные переменные, которые могут быть очень ценными для хранения идентификатора пользователя, от имени которого выполняется запрос, и его различных атрибутов.
🔸 Оно содержит функции для работы с переменными различных типов. Созданные переменные существуют в течение текущей пользовательской сессии.
🔸 По умолчанию эти переменные создаются без поддержки транзакций. Если переменная успешно создана, она остаётся доступной в течение всего сеанса, даже если происходят откаты транзакций.
Если вы хотите использовать переменную с поддержкой транзакций и точек сохранения, необходимо передать дополнительный флаг
is_transactional
в последний параметр функции, которая создаёт переменную.Флаг
is_transactional
нужно указывать каждый раз, когда вы изменяете значение транзакционной переменной с помощью функций pgv_set()
и pgv_insert()
. В противном случае возникнет ошибка. Другим функциям передавать этот флаг не нужно.Если вызовы функций
pgv_free()
или pgv_remove()
откатываются, затронутые транзакционные переменные восстанавливаются. В отличие от них, нетранзакционные переменные удаляются безвозвратно.Please open Telegram to view this post
VIEW IN TELEGRAM
Статья предлагает обзор новой версии Java 23. Полный и подробный перечень нововведений и изменений с наглядными примерами кода. Оцените новинки и удобные фичи. Подробнее читайте в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔑 Encoding vs Encryption vs Tokenization: основные отличия
Кодирование, шифрование и токенизация — три разных процесса обработки данных для передачи, защиты и соблюдения стандартов безопасности. В системной архитектуре важно выбрать правильный метод для работы с конфиденциальной информацией.
🔹 Кодирование
Кодирование переводит данные в другой формат по легко обратимой схеме. Например, Base64 кодирует бинарные данные в текстовый формат для упрощения передачи через текстовые каналы. Кодирование не обеспечивает защиту данных, так оно легко обратимо без ключа.
🔹 Шифрование
Шифрование преобразует данные с помощью алгоритмов и ключей. Бывает симметричным (один ключ) и асимметричным (разные ключи). Оно защищает данные, превращая их в нечитаемый формат, который можно расшифровать только с правильным ключом.
🔹 Токенизация
Токенизация заменяет чувствительные данные безопасными токенами, связь которых с оригиналом хранится в защищенном хранилище. Токены используются в системах без риска утечки данных и полезны для соблюдения стандартов, таких как PCI DSS.
Кодирование, шифрование и токенизация — три разных процесса обработки данных для передачи, защиты и соблюдения стандартов безопасности. В системной архитектуре важно выбрать правильный метод для работы с конфиденциальной информацией.
🔹 Кодирование
Кодирование переводит данные в другой формат по легко обратимой схеме. Например, Base64 кодирует бинарные данные в текстовый формат для упрощения передачи через текстовые каналы. Кодирование не обеспечивает защиту данных, так оно легко обратимо без ключа.
🔹 Шифрование
Шифрование преобразует данные с помощью алгоритмов и ключей. Бывает симметричным (один ключ) и асимметричным (разные ключи). Оно защищает данные, превращая их в нечитаемый формат, который можно расшифровать только с правильным ключом.
🔹 Токенизация
Токенизация заменяет чувствительные данные безопасными токенами, связь которых с оригиналом хранится в защищенном хранилище. Токены используются в системах без риска утечки данных и полезны для соблюдения стандартов, таких как PCI DSS.
🏗 3 основных шаблона событийно-ориентированной архитектуры
Знание данных шаблонов позволяет:
✔️ Создавать слабосвязанные системы, в которых сбой одного компонента не приводит к полному отказу всей системы, а составные части приложения легче масштабировать и модифицировать.
✔️ Эффективно управлять асинхронными операциями и обрабатывать непредсказуемые события в системе.
✔️ Разрабатывать отзывчивые и эффективные приложения, обрабатывающие данные в реальном времени.
✔️ Создавать высоконагруженные системы, в которых требуется быстрая реакция на события.
✔️ Эффективно использовать современные технологии, например потоковую обработку данных и бессерверные вычисления.
1️⃣ Шаблон конкурирующих потребителей используется для эффективного распределения большого количества асинхронных сообщений между несколькими потребителями. Ключевой момент в этом шаблоне — необходимость обработки каждого сообщения только одним потребителем. Разные инструменты и платформы решают эту задачу по-своему:
2️⃣ Шаблон повторных попыток сообщений используется для обработки ошибок при работе с очередями сообщений. Этот шаблон позволяет создать надежную систему обработки транзакций, способную справляться с временными сбоями и обеспечивающую контролируемый процесс для работы с проблемными транзакциями, например, при обработке платежей.
3️⃣ Шаблон асинхронного запроса-ответа позволяет создавать масштабируемые и устойчивые к сбоям системы, где сервисы могут взаимодействовать асинхронно, не блокируя друг друга и сохраняя способность корректно обрабатывать ответы даже при изменении состояния системы между запросом и ответом.
👉 Подробнее читайте в нашей статье
👉 Зеркало
Знание данных шаблонов позволяет:
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #javadevjob
Вакансии Java разработчиков уровня Junior
▪️Java developer
Самара. TEAMSCORE — системный интегратор полного цикла
Подробнее
▪️Java-разработчик
Москва. Gridnine Systems — проектная разработка
Подробнее
Вакансии Java разработчиков уровня Middle
▪️Java-разработчик
Удаленка. Ар Софт — разработка ПО
Подробнее
▪️Java Developer
Удаленка. Datanomica — работа с данными
Подробнее
Вакансии Java разработчиков уровня Senior
▪️Java-разработчик
Удаленка. Росбанк — универсальный банк
Подробнее
▪️Java developer
Новосибирск. Дата Ист — программные продукты и системы в области геоинформатики
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️Java developer
Самара. TEAMSCORE — системный интегратор полного цикла
Подробнее
▪️Java-разработчик
Москва. Gridnine Systems — проектная разработка
Подробнее
Вакансии Java разработчиков уровня Middle
▪️Java-разработчик
Удаленка. Ар Софт — разработка ПО
Подробнее
▪️Java Developer
Удаленка. Datanomica — работа с данными
Подробнее
Вакансии Java разработчиков уровня Senior
▪️Java-разработчик
Удаленка. Росбанк — универсальный банк
Подробнее
▪️Java developer
Новосибирск. Дата Ист — программные продукты и системы в области геоинформатики
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
samara.hh.ru
Вакансия Junior Java developer в Самаре, работа в компании TEAMSCORE (вакансия в архиве c 3 октября 2024)
Зарплата: не указана. Самара. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 30.09.2024.
🔄 Polling
Это процесс регулярного опроса внешнего сервиса или конечной точки с целью получения обновлённой информации. Это похоже на постоянный вопрос: "У вас есть что-то новое для меня?" даже когда обновлений может и не быть. Такой подход требует много ресурсов и часто бывает неэффективен. Также данные обновляются только тогда, когда вы запрашиваете их, из-за чего можно пропустить актуальную информацию в реальном времени. Но разработчики имеют больше контроля над тем, когда и как получать данные.
📩 Вебхуки
Вебхуки работают как встроенная система уведомлений. Вместо того, чтобы постоянно запрашивать информацию, вы создаете конечную точку на своём сервере и предоставляете её внешнему сервису (например, платёжной системе или службе доставки). Когда происходит что-то важное, внешний сервис сам вызывает вашу конечную точку и отправляет данные. Это делает вебхуки идеальным решением для работы с обновлениями в реальном времени, так как данные поступают в приложение сразу, как только они становятся доступны.
🎯 Когда использовать:
▪️ Polling уместен, если есть инфраструктурные ограничения, мешающие использовать вебхуки. Также вебхуки могут пропускать уведомления из-за сетевых проблем, поэтому нужны механизмы повторных попыток.
▪️ Вебхуки рекомендуются для приложений, которым важна мгновенная доставка данных, и они более эффективны с точки зрения использования ресурсов, особенно в условиях высокой нагрузки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа в аутсорсинге — это всегда вызов: одним кажется, что она приносит больше стресса, чем пользы, а другие видят в ней отличный шанс для быстрого развития и получения разнообразного опыта.
Но устраиваться в первую попавшуюся компанию — не лучший план. Часто возникают проблемы с финансами, и стабильность здесь — редкость. Поэтому важно выбрать правильную студию, которая поддержит ваши карьерные амбиции.
📖 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Устали от скучной рутины? Хочется чего-то необычного и интересного? Эта статья точно для вас! Здесь вы узнаете, как создать полноценное веб-приложение на Java без использования фреймворков и библиотек, работая только с JDK. Автор предлагает заново открыть забытые методы разработки и создать проект "с нуля" в духе "старой школы". Вас ждёт увлекательное погружение в разработку без современных зависимостей, что откроет новые горизонты в вашем понимании программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
«Голая Java» или разработка без всего
Рассказываю что можно сделать на одном только голом JDK . Это старое и ныне почти забытое искусство разработки без внешних библиотек и фреймворков . Работать будем «как в былинные...
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.