Как стать автором
Поиск
Написать публикацию
Обновить
1132.9

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Java 15 и IntelliJ IDEA

Время на прочтение8 мин
Количество просмотров7.6K

В Java 15 появились sealed-классы и sealed-интерфейсы, с помощью которых стало возможным ограничивать иерархию классов и интерфейсов на уровне синтаксиса языка. Теперь возможные иерархии определяются декларативно. Этот функционал пока представлен в режиме превью (preview)

Также в Java 15 есть изменения в записях (Records), появившихся в Java 14. А сопоставление с образцом (pattern matching) для instanceof вошло в Java 15 как второе превью без изменений. Текстовые блоки (text block) из Java 13 включены в Java 15 как стандартная языковая конструкция. Изменений в них по сравнению с Java 14 нет. 

В этой статье я расскажу обо всех новых и обновленных языковых конструкциях Java 15, о том, как они вам могут пригодиться, и как их использовать в IntelliJ IDEA. Давайте начнем. 

Читать далее

Антистресс для твоего сервера. Тестируем балансировщик нагрузки от Timeweb

Время на прочтение3 мин
Количество просмотров2.6K

Привет, Хабр!


Сегодня мы расскажем сообществу о запуске нашего нового сервиса — балансировщик нагрузки.

Сейчас услуга доступна для всех желающих в режиме открытого бета-тестирования в личном кабинете VDS. Это, конечно, бесплатно, а мы будем благодарны вам за комментарии и замечания.

Ребята, почему только сейчас?


Можете вполне резонно спросить вы. Мы, как и все, привыкаем к новой, постпандемийной (или еще нет?), реальности и отвечаем запросам наших клиентов.

Компании погружаются в тотальный онлайн, а значит, нагрузка на сервисы растет. Балансировщик распределяет входящие запросы на несколько серверов для повышения отказоустойчивости, а также он легко позволяет организовать масштабируемость любого приложения.
Читать дальше →

Анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента на основе модели nlp

Время на прочтение8 мин
Количество просмотров3.3K

Задача – «Провести анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента менеджером компании»

На входе: лог чатов с клиентом компании в csv формате.

Читать далее
Кто играл в Need for Speed, угадает эту мелодию с четырёх нот: э-рон-дон-дон… Драйв, эмоции на максимум, бесконечные повторы неудачных заездов и кайф после утомительного прохождения — вот с чем до сих ассоциируется у меня эта серия игр. И это те же самые слова, которые я произношу, когда меня спрашивают о работе тестировщика. Вопрос «Как вкатиться в айти?» я слышу чаще, чем «Как прожить в ІТ долгую и счастливую рабочую жизнь?». Мне удаётся сохранить вдохновение и успешно строить карьеру в quality assurance — и потому я хочу поделиться опытом, подкрепив его ссылками на актуальные тексты авторов Хабра. Итак, сегодня я — [капитан очевидность] штурман в нашей команде :) Давайте знакомиться: меня зовут Василиса (@vasenka), я работаю QС в одной из продуктовых компаний. Под катом — мой тест-драйв карьерного трека QA, а в качестве навигатора — статьи авторов Хабра.
Погнали!

Построение достоверных геологических моделей

Время на прочтение6 мин
Количество просмотров3.8K

После публикации серии статей про построение геологических моделей пришло время обсудить, скажем прямо, самое интересное — а насколько эти модели достоверны? Несомненно, все представленные ранее модели интересны и полезны — землетрясения, вулканы, золотые месторождения и другие. Теперь покажем, что они являются действительными геологическими моделями. На самом деле, мы уже все доказательства упоминали, но сегодня обсудим подробно. Теоретическая часть и история метода приведены в статье Методы компьютерного зрения для решения обратной задачи геофизики, на гитхабе опубликован Python ноутбук 3D Density Inversion by Circular Hough Transform (Focal Average) and Fractality Index с оценкой достоверности моделирования, и я даже написал техническую статью непосредственно об используемых там вычислительных методах Вычислительная геология и визуализация: пример Python 3 Jupyter Notebook, не касаясь геологического смысла выполняемых вычислений. Кроме того, в статье Геология XXI века как наука данных о Земле модель землетрясения заверена с помощью результатов спутниковой интерферометрии.


Читать дальше →

С 4 часов до 1 минуты. Как найти одну строчку, которая ускорит сервис на Ruby

Время на прочтение6 мин
Количество просмотров7.3K

Кейс из жизни, когда удалось на порядки повысить производительность сервиса. Показываю на реальном примере, как можно искать "узкие места" в работающем, казалось бы, коде. И как много профита порой можно получить от минимальных правок. В данном случае весь фикс потребовал замены всего одной строки. Но самое интересное - эту строку найти...

Читать далее

Как добавить Natural Language Processing в Minecraft

Время на прочтение6 мин
Количество просмотров2.5K

Создание хороших примеров по использованию NLP инструментария - не самая простая задача. Они получаются или слишком простыми, так что читателям кажется, что в реальных проектах не стоит даже использовать какие-то внешние системы для решения таких простых NLP задач, а можно и даже желательно все написать самому, или, если постараться, сделать примеры более жизненными, их бизнес логика становится чрезмерно сложной и отвлекает внимание от NLP части. 

Появление этого примера, использование NLP в Minecraft, оказалось самым естественным в истории проекта на данный момент. Запрос на его разработку возник у настоящих и самых преданных пользователей - детей одного из разработчиков, которым показалось сложным и даже скорее просто ненужным запоминать формат некоторых команд новой для них игры. 

Читать далее

Разработка REST-серверов на Go. Часть 2: применение маршрутизатора gorilla/mux

Время на прочтение6 мин
Количество просмотров26K
Перед вами второй материал из серии статей, посвящённой разработке REST-серверов на Go. В первом материале этой серии мы создали простой сервер, пользуясь стандартными средствами Go, а после этого отрефакторили код формирования JSON-данных, вынеся его во вспомогательную функцию. Это позволило нам выйти на достаточно компактный код обработчиков маршрутов.


Там мы говорили об одной проблеме нашего сервера, которая заключается в том, что логика маршрутизации разбросана по нескольким местам нашей программы.



Это — проблема, с которой сталкиваются все, кто пишет HTTP-сервера, не используя зависимости. Если только сервер, принимая во внимание систему его маршрутов, не является до крайности минималистичной конструкцией (например — это некоторые специализированные серверы, имеющие лишь один-два маршрута), то оказывается, что размеры и сложность организации кода маршрутизатора — это нечто такое, на что очень быстро обращают внимание опытные программисты.
Читать дальше →

2d-графика в React с three.js

Время на прочтение8 мин
Количество просмотров14K

У каждого из вас может возникнуть потребность поработать с графикой при создании React-приложения. Или вам нужно будет отрендерить большое количество элементов, причем сделать это качественно и добиться высокой производительности при перерисовке элементов. Это может быть анимация либо какой-то интерактивный компонент. Естественно, первое, что приходит в голову – это Canvas. Но тут возникает вопрос: «Какой контекст использовать?». У нас есть выбор – 2d-контекст либо WebGl. А как на счёт 2d-графики? Тут уже не всё так очевидно.

Читать далее

Хватит организовывать код по типу файлов

Время на прочтение4 мин
Количество просмотров41K

Какой самый популярный стиль организации кода вы встречали в корпоративных кодовых базах? Лично я чаще всего видел решение, подразумевающее группировку всех файлов по их типу. Таким образом, к примеру, в системе MVC все контроллеры, все сервисы, все репозитории, все POJO и так далее находятся вместе. Давайте назовем такое решение "стековым" стилем организации кода.

Читать далее

Актуальность принципов SOLID

Время на прочтение5 мин
Количество просмотров39K

Впервые принципы SOLID были представлены в 2000 году в статье Design Principles and Design Patterns Роберта Мартина, также известного как Дядюшка Боб. 

С тех пор прошло два десятилетия. Возникает вопрос - релевантны ли эти принципы до сих пор?

Перед вами перевод статьи Дядюшки Боба, опубликованной в октябре 2020 года, в которой он рассуждает об актуальности принципов SOLID для современной разработки.   

Недавно я получил письмо с примерно следующими соображениями:

Годами знание принципов SOLID было стандартом при найме. От кандидатов ожидалось уверенное владение этими принципами. Однако позже один из наших менеджеров, который уже почти не пишет код, усомнился, разумно ли это. Он утверждал, что принцип открытости-закрытости стал менее важен, так как по большей части мы уже не пишем код для крупных монолитов. А вносить изменения в компактные микросервисы - безопасно и просто.

Принцип подстановки Лисков давно устарел, потому что мы уже не уделяем столько внимания наследованию, сколько уделяли 20 лет назад. Думаю, нам стоит рассмотреть позицию Дена Норса о SOLID - “Пишите простой код”

Читать далее

Тест пропускной способности ASP.NET Core 5.0 в Kestrel, IIS, Nginx и Caddy

Время на прочтение4 мин
Количество просмотров12K
Начиная с версии 2.2. ASP.NET Core поддерживает режим внутрипроцессного размещения приложения (InProcess) в IIS, направленный на улучшение производительности кода. Рик Страл написал статью, в которой подробно исследовал эту тему. С тех пор прошло три года, теперь платформа ASP.NET Core добралась до версии 5.0. Как это повлияло на производительность ASP.NET Core-проектов на различных серверах?


Узнать подробности

Создание нейронной сети Хопфилда на JavaScript

Время на прочтение8 мин
Количество просмотров16K

Столкнувшись в университете с нейронными сетями, одной из любимых для меня стала именно сеть Хопфилда. Удивительно, что она оказалась последней в списке лабораторных, ведь ее работу можно наглядно продемонстрировать при помощи изображений и она не так сложна в реализации.

В этой статье при помощи нейросети Хопфилда будем решать задачу восстановления искаженных изображений. Нейросеть предварительно обучим на эталонных изображениях.

Пошагово напишем программу, позволяющую прямо в браузере поиграть с нейросетью, обучить ее на собственноручно нарисованных образах и проверить работу на искаженных образах.

Читать много кода

Ближайшие события

Kubevious — революционная панель управления Kubernetes

Время на прочтение4 мин
Количество просмотров10K

Kubevious — это революционная панель управления Kubernetes, намного функциональнее существующих аналогов. Она имеет множество интересных функций, но в этой статье мы сосредоточимся на описании мощного механизма правил, который позволяет вам находить и группировать ресурсы Kubernetes для решения поставленной задачи.

Читать далее

Вышел MPS 2021.1

Время на прочтение7 мин
Количество просмотров2.8K

Последние несколько месяцев мы совершенствовали различные подсистемы нашего продукта, чтобы сделать его максимально удобным для пользователей. Читайте ниже о новой функциональности в MPS 2021.1 или посмотрите это видео:



Читать дальше →

Vulkan. Руководство разработчика. Проходы рендера (Render passes)

Время на прочтение9 мин
Количество просмотров6.4K


Меня зовут Александра, я работаю в IT-компании CG Tribe в Ижевске и занимаюсь переводом Vulkan Tutorial на русский язык (ссылка на источник — vulkan-tutorial.com).

Сегодня хочу поделиться переводом заключительных глав раздела, посвященного графическому конвейеру (Graphics pipeline basics), — Render passes и Conclusion.

Содержание
Читать дальше →

Почти безопасные: пару слов о псевдо-нормальных числах с плавающей запятой

Время на прочтение7 мин
Количество просмотров3.8K

Арифметика с плавающей запятой - популярная эзотерическая тема в информатике. Можно с уверенностью заявить, что каждый инженер-программист по крайне мере слышал о числах с плавающей запятой. Многие даже использовали их в какой-то момент. Но мало кто будет утверждать, что действительно понимает их достаточно хорошо, и значительно меньшее число скажет, что знает все пограничные случаи. Эта последняя категория инженеров, вероятно, мифическая или, в лучшем случае, очень оптимистичная. В прошлом мне приходилось иметь дело с проблемами связанными с плавающей запятой в библиотеке C GNU, но я бы не стал называть себя экспертом по этой теме. И я определенно не ожидал узнать о существовании нового типа чисел, о которых я услышал пару месяцев назад.

В этой статье описаны новые типы чисел с плавающей запятой, которые ничему не соответствуют в физическом мире. Числа, которые я называю псевдо-нормальными числами, могут создать проблемы для программистов, которые трудно отследить, и даже попали в печально известный список Common Vulnerabilities and Exposures (CVE).

Читать далее

Антипаттерны деплоя в Kubernetes. Часть 2

Время на прочтение7 мин
Количество просмотров8.1K

Перед вами вторая часть руководства по антипаттернам деплоя в Kubernetes.

В этой статье не просто перечислены известные антипаттерны деплоя в Kubernetes, но и предлагаются соответствующие решения. Вы можете проверить ваши процессы развёртывания и исправить существующие проблемы без поиска дополнительной информации.

Теперь вы сможете составить полную картину того, как создать образ контейнера и как правильно его развернуть (при этом избежав некоторых распространенных ошибок).

Обратите внимание, что это руководство посвящено развёртыванию приложений в Kubernetes, но не затрагивает настройку самих кластеров Kubernetes. Предполагается, что кластер Kubernetes уже развёрнут, правильно настроен и вы просто хотите развернуть в нём ваше приложение.

Читать далее

Бесплатная Школа наставников для разработчиков, тестировщиков и аналитиков стартует 5 июля

Время на прочтение3 мин
Количество просмотров2.2K
Школа наставников — это онлайн-интенсив из 5 занятий, где обучают будущих наставников сервиса онлайн-образования Яндекс.Практикум.

Наставники — это опытные IT-специалисты, которые отвечают на вопросы студентов и проводят воркшопы по особенно сложным темам курса. Специалисты совмещают наставничество с основной работой, в зависимости от курса это занимает от 6 до 12 часов в неделю. Это оплачиваемая занятость.


TREX: 27-ричная симметричная система счисления

Время на прочтение6 мин
Количество просмотров13K

Каждый специалист по компьютерам знает, насколько сложно работать с длинными последовательностями нулей и единиц. На помощь ему приходят восьмеричная и шестнадцатиричная системы счисления, обеспечивающие более компактное представление информации.

С троичной системой счисления ситуация хуже: есть несколько способов представления троичных чисел и есть несколько способов компактной записи троичных чисел, но они имеют недостатки, усложняющие работу с ними.

Система кодирования TREX разработана для компактного отображения симметричной троичной системы счисления при ее использовании в компьютерных системах

Читать далее

Вклад авторов