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

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

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

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

Spring WebFlux: Реактивное программирование веб-сервисов

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров80K

Модуль WebFlux появился в 5й версии фреймворка Spring. Этот микрофреймворк является альтернативой Spring MVC и отражает собой реактивный подход для написания веб-сервисов. В основе WebFlux лежит библиотека Project Reactor, позволяющая легко запрограммировать неблокирующие (асинхронные) потоки (streams), работающие с вводом/выводом данных.

Следует учесть, что WebFlux для работы требуется встроенный в Spring сервер Netty. Со встроенными Tomcat и Jetty настроить реактивность сложнее и они, как минимум, должны поддерживать Servlet 3.1. Следующая диаграмма иллюстрирует особенности окружения, в котором работает WebFlux [1].

Читать далее

Timsort — самый быстрый алгоритм сортировки, о котором вы никогда не слышали

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

Timsort: Очень быстрый, O(n log n), стабильный алгоритм сортировки, созданный для реального мира, а не для академических целей.

Timsort — это алгоритм сортировки, который эффективен для реальных данных, а не создан в академической лаборатории. Tim Peters создал Timsort для Python в 2001 году. 

Timsort сначала анализирует список, который он пытается отсортировать, и на его основе выбирает наилучший подход. С момента его появления он используется в качестве алгоритма сортировки по умолчанию в Python, Java, платформе Android и GNU Octave.

Нотация Big O для Timsort — это O(n log n). Чтобы узнать о нотации Big O, прочтите это.

Читать далее

Соревнования по программированию на платформе All Cups

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

Привет, мир! Сегодня мы поговорим про спортивное программирование с Дмитрием Санниковым, CTO образовательных проектов Mail.ru Group и руководителем платформы All Cups. Статья написана по мотивам интервью для подкаста «Пятиминутка PHP».

Читать далее

Метрика Cognitive complexity или простой способ измерить сложность кода

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

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

Цель этой статьи: рассказать не об инструменте, а о метрике, о которой пока написано и рассказано совсем немного. Уверен, что это поможет улучшить качество многих проектов и немного облегчит жизнь программистов.

Читать далее

Идеальный инструмент для работы с СУБД без SQL для Node.js или Все, что вы хотели знать о Sequelize. Часть 1

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

Представляю вашему вниманию руководство по Sequelize.


Sequelize — это ORM (Object-Relational Mapping — объектно-реляционное отображение или преобразование) для работы с такими СУБД (системами управления (реляционными) базами данных, Relational Database Management System, RDBMS), как Postgres, MySQL, MariaDB, SQLite и MSSQL. Это далеко не единственная ORM для работы с названными базами данных (далее — БД), но, на мой взгляд, одна из самых продвинутых и, что называется, "battle tested" (проверенных временем).


ORM хороши тем, что позволяют взаимодействовать с БД на языке приложения (JavaScript), т.е. без использования специально предназначенных для этого языков (SQL). Тем не менее, существуют ситуации, когда запрос к БД легче выполнить с помощью SQL (или можно выполнить только c помощью него). Поэтому перед изучением настоящего руководства рекомендую бросить хотя бы беглый взгляд на SQL. Вот соответствующая шпаргалка.


Это первая из 3 частей руководства, в которой мы поговорим о начале работы с Sequelize, основах создания и использования моделей и экземпляров для взаимодействия с БД, выполнении поисковых и других запросов, геттерах, сеттерах и виртуальных (virtual) атрибутах, валидации, ограничениях и необработанных (raw, SQL) запросах.


Вторая часть.
Третья часть.


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

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

Современный JSON процессор

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

Вместо тысячи слов... Хотели бы вы обрабатывать json в терминале таким образом?

Если да, то вам под кат.

Видеочат с возможностью совместного редактирования текста при помощи Twilio Sync

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

Представьте, что вам нужно создать видеочат, функционал которого должен находиться под вашим контролем, например для закрытой группы людей со своими специфическими требованиями. При этом чат нужен вчера, начинать писать его с нуля уже поздно. В этом материале, переводом которого мы решили поделиться к старту курса о Frontend-разработке, рассказывается, как разработать программируемый видеочат на основе Twilio. В статье вы найдёте две ветки кода на Github, первая содержит простую основу чата, о которой пойдёт речь в материале, а вторая — завершённый пример чата.

Читать далее

6 вещей, которые бизнес-лидеры должны знать о RPA в 2021 году

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

Эта цитата от Ashwin — лишь одна из многих положительных высказываний о роботизированной автоматизации процессов (RPA), которые мы услышали в новом исследовании State of the RPA Developer 2021 — нашем втором ежегодном опросе более чем 1000 разработчиков RPA.

Эта позитивная оценка не удивляет нас. RPA продолжает демонстрировать высокие темпы роста: Gartner прогнозирует, что в 2021 году глобальный доход от реализации программного обеспечения RPA достигнет $1,89 млрд, что на 19,5% больше, чем в 2020 году.

И многие отчеты показывают, что пандемия увеличила спрос и важность RPA. Вот чем поделилась Monica Spigner на канале Information Age:

Читать далее

Привет из восьмидесятых: пишем код в легендарном текстовом редакторе Edlin для DOS

Время на прочтение5 мин
Количество просмотров7.2K
Я использую текстовый редактор Edlin, когда мне хочется переместиться в 80-е годы. Согласен, развлечение это своеобразное, но у всех свои причуды. Кто со мной?



Когда-то стандартным текстовым редактором в DOS был Edlin. Его создал Тим Патерсон — для первой версии DOS, которая тогда называлась 86-DOS, а позже получила название PC-DOS и MS-DOS. Патерсон говорил, что хотел со временем заменить этот редактор другим. И только десять лет спустя в MS-DOS 5 (1991) вместо Edlin появился Edit, полноэкранный текстовый редактор.

Здесь я буду использовать версию Edlin для FreeDOS. Это операционная система с открытым исходным кодом. Её можно использовать для игры в классические игры DOS, запуска старого программного обеспечения или разработки встроенных систем. FreeDOS поддерживает совместимость с MS-DOS и включает утилиты и программы, созданные по образу и подобию своих аналогов из MS-DOS. 

Одна из таких программ — это open source реализация легендарного редактора Edlin, которая распространяется под лицензией GNU General Public License v2. Портированием Edlin на FreeDOS занимался Грегори Питч. У него получился GPL-лицензированный клон Edlin, который, ко всему прочему, умеет работать с длинными файлами. Он поставляется вместе с дистрибутивом FreeDOS. Клон Edlin также можно установить в MS-DOS. При желании вы даже можете скомпилировать Edlin для Linux- и Unix-систем. 
Читать дальше →

Кластеризация трасс для оценки качества процессов

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

Бывают такие случаи в анализе процессов, когда данных не очень много, а действия в процессах хаотичны. И что делать? Конечно, анализировать. Для этого будем использовать привычные инструменты: python и excel. И иногда гугл.

Прежде чем браться за ноутбук, необходимо всегда смотреть на данные глазами. Что имеем: исходный набор состоит из 1 000 000+ строк и 19 столбцов. Внушительно. Чистим и извлекаем нужные данные. После применения некоторых фильтров осталось около 36 000 строк, которые нам необходимы. Разница огромна! Из оставшегося набора выделяем столбцы ‘case_id’, ‘activity’, ‘timestamp’.

Читать далее

Анализ и обработка изображений с использованием операций математической морфологии, python и библиотеки OPEV

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

Математическая морфология — это теория, которая зародилась еще в 1964 году, когда Джордж Матерон изучал соотношение геометрии пористой среды и их проницаемости. В то же время Жан Серра попытался количественно оценить петрографию (т.е. макроскопические и микроскопические исследования горных пород) железных руд, а также результаты исследования Серра в 1982 году.

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

Для освоения материала подразумевается, что читатель обладает минимальными знаниями в области.

Читать далее

Рекурсивное сообщение о непредвиденной рекурсии

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

Очередной «смешной случай из жизни» заставил немного понервничать.

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

Однако при эксплуатации получилось не очень удобно. Дело в том, что если при крахе приложение снять, то, естественно, графическое окно исчезает, и пользователю, по крайней мере, сразу видно, что вся система рухнула. Правда и информация о крахе системы так же исчезает с одновременным закрытием и консольного окна. А вот если управление перехватывает отладчик в консольном (свернутом по умолчанию) окне, то графическое изображение на экране «замораживается» и при беглом взгляде может показаться, что все еще продолжает работать. Бывали случаи введения пользователя такой картиной в заблуждение. В конце концов, был найден компромисс: при исключении программа все-таки снимается, но вся информация, выдаваемая в консольном окне, дублируется еще и в файл протокола.

В нашей системе программирования так легко сделать, поскольку в системной библиотеке перед каждой выдачей очередного байта стандартного сообщения в стандартную консоль, идет проверка: а есть ли подпрограмма пользователя, которую нужно каждый раз вызывать перед очередной выдачей байта? Если есть – она вызывается с единственным параметром, этим самым байтом.

Читать далее

Люди, машины, программисты

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

Если Вам нравится программировать - Вы наверняка помните то прекрасное детское кодирование - времен кружка  программирования в школе или первых курсов университета - как в консоль Вы вбиваете одному Вам ведомый набор цифр (через пробел), жмете “ввод” и получаете другой набор цифр. И чувство чистого инженерно-технического экстаза, от того, что Вы заставили машину отсортировать массив или найти путь на графе. Ведь клевое было ощущение? Да, перед этим программа много раз падала и выдавала не то, что нужно, но само по себе программирование было больше похоже на решение интересной головоломки. Как давно Вы испытывали похожее чувство во взрослой жизни, программируя очередную CMS, CRM и ERP или еще какую-нибудь аббревиатуру? Возню в тоннах запутанного кода интересной головоломкой назвать сложно. Возможно, у меня есть идея, как вернуть то чувство. Приглашаю, чтение на 10 минут - зашли и вышли!

Читать далее

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

Ретро-программирование: пишем простую игру на том самом GW-BASIC 1983 года

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

Image by : Opensource.com

Не так давно корпорация Microsoft открыла исходный код GW-BASIC. И на волне этого инфоповода автор решил скачать его, установить на FreeDOS и написать на этом языке знаменитую игру с угадыванием чисел. Казалось бы, всё просто. Но не совсем… Об этом его статья.

В детстве я почитал за абсолютную истину, что вообще любой «персональный компьютер» от TRS-80 до Commodore и Apple позволяет писать свои собственные программы на BASIC. Меня также подкупил тот факт, что его название расшифровывалось, как Beginner's All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих. В нашей семье был клон Apple II под названием Franklin ACE 1000. На его борту работал интерпретатор AppleSoft BASIC. Естественно, я хотел научиться программировать на BASIC и начал с чтения соответствующих книг и журналов.

Позже наша семья перешла на IBM PC с DOS. На этой машине была установлена ​​собственная версия DOS под названием BASICA. Более поздние версии DOS уже выходили с обновленным интерпретатором GW-BASIC.

BASIC стал моим счастливым билетом в мир программирования. Со временем я изучил другие языки программирования. Я не писал код на BASIC много лет, но всегда с теплотой вспоминал BASIC и GW-BASIC.
Читать дальше →

Круглый стол в Wrike: как перевести фронтенд на новый стек

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

Больно, дорого, стрессово, но порой необходимо. Миграция на новый стек (язык или фреймворк) — событие, которое всегда интересно пообсуждать, особенно, если происходит оно не в твоем продукте. 13 июля в 19:00 (Мск) мы соберем подискутировать всех, кто пережил или переживает перевод фронтенда на новые технологии. «А я вам говорил» и другие комментарии зрителей — приветствуются!

Читать далее

Spring boot: маленькое приложение для самых маленьких

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

Всем привет! Меня зовут Варвара и я Java Developer в компании “Цифровые привычки”. Я прошла их курс по Java-разработке и по окончании получила  оффер от компании. Сейчас я хочу поделиться материалом с одного из воркшопов, который нам проводил один из лекторов - Алексей Романов, Software Architect и преподаватель Бауманки.

В этой статье мы научимся создавать простые REST приложения. Напишем свое приложение с использованием SpringBoot, создадим свои контроллеры, воспользуемся JPA, подключим PostgreSQL.

Мы будем разрабатывать приложение в 3 этапа.

Читать далее

Верите ли вы в бога надежности?

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

Всем привет!

В этой статье я хотел бы рассказать о некоторых мерах, которые мы применяем (ну, или почти применяем) в ДомКлик для обеспечения надежности работы наших сервисов. Честно говоря, возможно, какие-то из этих процедур избыточны, но ежегодный аудит и постоянные проверки заставляют нас дуть на воду и готовиться к худшему.

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

Читать далее

Многоликий принцип единственности ответственности

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

Принцип единственности отвественности? Что именно вы имеете ввиду?

Читать далее

Next js. Куда, откуда и причем здесь google?

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

Прошло уже почти 2 недели с момента презентации next 11. К сожалению, эта новость обошла хабр стороной и пора бы это исправить. Сперва немного о презентации. Восьмого числа, узнав про ивент, не теряя ни минуты, я пошел на него регистрироваться. Это был сайт, на котором странным образом были видны цветные курсоры и время от времени рядом с ними печатался текст. Немного поразмышляв и прочитав первые комментарии стало понятно, что передо мной такие же участники этого события. Неплохое и многообещающее интро. Однако, это был, пожалуй, единственный намек на то, чего стоит ждать от презентации. Веб-серфинг не принес никаких результатов и не удалось найти ни единого слова. Конечно же, используя next последние несколько лет можно было примерно представлять, какие технологии должны вот-вот появиться с полноценной поддержкой, понять, кто будет помогать в их реализации и какие цели будет преследовать компания, но все же, vercel умеет удивлять.

Пару слов о технологии, если кто-то умудрился обойти ее стороной. Next – backend-фреймворк для… Инкрементальной сборки, Серверного рендеринга, статической генерации или гибридного варианта приложений, построенных на react. Созданием занималась компания zeit, имеющей к 2016г. утилиту now. Затем, в 2020 году, после инвестиций в 21 млн$, компания была переименована в vercel, а утилита now (переименованная также в vercel) переросла в веб-сервис с дополнительным функционалом для выкладки приложений, в первую очередь, построенных на next, но также nuxt, Gatsby, angular и многих других популярных инструментов.

Читать далее

Lombok + JPA: Что может пойти не так?

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

Lombok — это отличный инструмент, с которым Java-код становится чище и лаконичнее. Однако есть несколько нюансов, которые надо учитывать при его использовании с JPA. В этой статье мы выясним, как неправильное применение Lombok может повлиять на производительность приложений или даже привести к ошибкам. Разберемся, как этого избежать не теряя преимуществ Lombok.

Читать далее

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