Последние десять лет движение open source является одним из ключевых факторов развития IT-отрасли и важной ее составной частью. Роль и место open source не только усиливается в виде роста количественных показателей, но происходит и изменение его качественного позиционирования на IT-рынке в целом. Не сидя сложа руки, бравая команда PVS-Studio активно способствует закреплению позиций open source проектов, находя затаившиеся баги в огромных толщах кодовых баз и предлагая для таких проектов бесплатные лицензии. Эта статья не исключение! Сегодня речь пойдет об Apache Hive! Отчет получен — есть на что посмотреть!
Читать полностью »
Рубрика «java» - 48
PVS-Studio в гостях у Apache Hive
2019-08-15 в 7:12, admin, рубрики: Apache Hive, big data, bugs, devops, DevSecOps, errors, Hadoop, Hive, java, open source, pvs-studio, pvsstudio, SAST, source code, static code analysis, static code analyzer, баги, базы данных, Блог компании PVS-Studio, информационная безопасность, открытые проекты, ошибки, статический анализ кодаВведение в Redis с использованием Spring Boot
2019-08-12 в 12:59, admin, рубрики: crud, database, java, redis, spring boot, spring data, tutorial, Блог компании OTUS. Онлайн-образование, ПрограммированиеПеревод статьи подготовлен специально для студентов курса «Разработчик на Spring Framework».
В этой статье мы рассмотрим основы использования Redis через Spring Boot с помощью библиотеки Spring Data Redis.
Мы создадим приложение, которое демонстрирует, как выполнять CRUD-операции через веб-интерфейс. Исходный код этого проекта доступен на GitHub.
Что такое Redis?
Redis — это хранилище данных с открытым исходным кодом, для структур данных «ключ-значение», которое можно использовать в качестве базы данных, кэша и брокера сообщений. С точки зрения реализации, хранилища «ключ-значение» являются одними из самых больших и старых представителей в мире NoSQL. Redis поддерживает такие структуры данных, как строки, хэши, списки, множества и отсортированные множества с запросами диапазонов.Читать полностью »
Тяжёлое бремя времени. Доклад Яндекса о типичных ошибках в работе со временем
2019-08-11 в 8:56, admin, рубрики: ajax, async/await, bluebird, java, javascript, ntpd, open source, promise, React, redux-saga, rxjs, асинхронное программирование, Блог компании Яндекс, время, параллельные алгоритмы, Разработка веб-сайтов, текущая датаВ коде самых разных проектов нередко приходится оперировать временем — например, чтобы завязать логику работы приложения на текущее время у пользователя. Старший разработчик интерфейсов Виктор Хомяков описал типичные ошибки, которые встречались ему в проектах на языках Java, C# и JavaScript от разных авторов. Перед ними вставали одни и те же задачи: получить текущую дату и время, измерить интервалы или выполнить код асинхронно.
— До Яндекса я работал в других продуктовых компаниях. Это не как фрилансер — написал, сдал и забыл. Приходится очень долго работать с одной кодовой базой. И я, собственно, смотрел, читал, писал много кода на разных языках я увидел много чего интересного. В итоге у меня родилась тема этого рассказа.
Hunt the Wumpus или опыт написания классической игры для Android
2019-08-08 в 7:38, admin, рубрики: android, android studio, java, Дизайн игр, логические игры, Программирование, разработка игр, разработка мобильных приложений, Разработка под android
Слышали ли вы когда-нибудь про Вампуса? Независимо от ответа — добро пожаловать в его владения!
В этой статье я хочу поведать вам свою историю создания игры под Android. В зависимости от компетенции читателя передаваемые мною опыт, мысли и решения будут более или менее полезными. Однако я надеюсь, что мой рассказ, как минимум, будет небезынтересным. Читать полностью »
Типизируйте уже наконец свой код
2019-08-08 в 6:40, admin, рубрики: .net, enterprise, java, perfect code, visitor, большой проект, визитор, долгоиграющее удовольствия, долгоиграющий код, моделирование, ооп, Проектирование и рефакторинг, расширяемый код, Совершенный код, строгая типизизация, типы, усложнение кодаПривет!
На днях мне в очередной раз на глаза попал код вида
if(someParameter.Volatilities.IsEmpty())
{
// We have to report about the broken channels, however we could not differ it from just not started cold system.
// Therefore write this case into the logs and then in case of emergency IT Ops will able to gather the target line
Log.Info("Channel {0} is broken or was not started yet", someParameter.Key)
}
В коде есть одна довольно важная особенность: получателю крайне хотелось бы знать, что произошло на самом деле. Ведь в одном случае у нас проблемы с работой системой, а в другом — мы просто прогреваемся. Однако модель не дает нам этого (в угоду отправителю, который зачастую является автором модели).
Более того, даже факт "возможно, что-то не так" происходит из того, что коллекция Volatilities
пуста. Что в некоторых случаях может быть и корректно.
Я уверен, что большинство опытных разработчиков встречало в коде строки, в которых заключалось тайное знание в стиле "если выставлена эта комбинация флажков, то от нас просят сделать A, B и C" (хотя по самой модели этого не видно).
С моей точки зрения, подобная экономия на структуре классов сказывается крайне негативно на проекте в будущем, превращая его в набор хаков и костылей, постепенно трансформируя более-менее удобный код в legacy.
Важно: в статье я привожу примеры, которые полезны для проектов, в которых несколько разработчиков (а не один), плюс которые будут обновляться и расширяться в течении хотя бы 5-10 лет. Всё это не имеет смысла, если в проекте один разработчик лет на пять, или же если после релиза никаких изменений не планируется. И логично, если проект необходим всего на пару месяцев, нет смысла вкладываться в четкую модель данных.
Однако если же вы занимаетесь долгоиграющим — добро пожаловать под кат.
Мой третий день с Haiku: начинает складываться целостная картина
2019-08-07 в 8:48, admin, рубрики: bash, bug reports, Haiku, java, libreoffice, linux, open source, testing, Блог компании Southbridge, системное администрирование, Софт
TL;DR: Haiku может стать великолепной настольной операционной системой с открытым исходным кодом. Мне правда этого хочется, но требуется еще много исправлений.
Профессиональный лексический анализ на регулярных выражениях
2019-08-07 в 6:11, admin, рубрики: algorithms, DFA, java, lexer, nfa, regex, regexp, syntax analysis, syntax highlight, tokenizer, tokenizing, Алгоритмы, Компиляторы, Программирование, Регулярные выраженияСинтаксический анализ текста всегда начинается с лексического анализа или tokenizing-а. Существует простой способ решить эту задачу практически для любого языка с помощью регулярных выражений. Еще одно применение старым добрым regexp-ам.
Java meetup в Райффайзенбанке
2019-08-05 в 11:35, admin, рубрики: java, kotlin, meetup, RabbitMQ, raiffeisenIT, Блог компании Райффайзенбанк, конференции, РайффайзенбанкJava сообщество Райффайзенбанка, приглашает на открытый митап, который пройдет в московском офисе в Нагатино, 8 августа.
Мы знаем, как важно общаться с людьми из других команд и проектов, иметь возможность спросить совета, обсуждать только что появившиеся технологии и поделиться опытом. Именно поэтому мы открываем двери и приглашаем вас к нам в гости.
В этом материале я хочу описать очень полезную, и часто используемую аннотацию Conditional и интерфейс Condition.
Контекст Spring — это огромный контейнер различных бинов, как самого спринга, так и пользовательских. Всегда хочется иметь гибкие инструменты управления этим зоопарком бинов. Аннотация @Conditional как раз и создана для этого.
IntelliJ IDEA 2019.2: поддержка Java 13 Preview, инструменты профилирования, новое окно сервисов и многое другое
2019-08-05 в 10:26, admin, рубрики: Git, gradle, IDE, intelli, intellij idea, java, jetbrains, kotlin, Блог компании JetBrainsПривет! Традиционно рассказываем, что нового в IntelliJ IDEA 2019.2. Список большой и все равно неполный: если хочется больше подробностей, добро пожаловать на страницу What’s new in IntelliJ IDEA 2019.2.