Search
Write a publication
Pull to refresh
12
7
Alexander Kardapolov @akardapolov

User

Send message

Spring Boot + BeanPostProcessor или как обернуть ответ контроллеров часть 2

Reading time17 min
Views23K

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

Под прошлой статьей пользователь с ником @maxzh83 указал на логическую недоработку проекта - невозможность реализовать несколько раз сервис IWrapperService, что происходит из-за того, что идет инжект только одной реализации сервиса.

private final IWrapperService wrapperService;

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

Читать далее

Использование Let's Encrypt для внутренних серверов

Reading time8 min
Views55K

Let's Encrypt — это центр сертификации, который предоставляет бесплатные сертификаты в полностью автоматизированном процессе. Эти сертификаты выдаются по протоколу ACME. За последние два года в Интернете широко использовалась технология Let’s Encrypt — более 50% веб-сертификатов SSL / TLS теперь выдает Let’s Encrypt.


В этом посте описывается, как выдавать сертификаты Let's Encrypt для внутренних серверов.

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

Meshtastic – оперативно-тактический радиочат без сотовой связи и интернета. Часть 1. Знакомство

Reading time9 min
Views103K

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

Meshtastic — это проект, который позволяет построить свою частную радиосеть с очень большим временем автономной работы, используя недорогие радио модули LoRa и экономичные микроконтроллеры серии ESP32.

Радиомодем связаны с вашим смартфоном по сети Bluetooth. Для некоторых сценариев использования смартфон вообще не требуется.

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

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

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

Спаси себя сам и вокруг спасутся многие

Frameworkless — бессерверный фреймворк для веб приложений

Reading time9 min
Views5.7K

Не думаю, что многие разработчики сегодня используют CGI-скрипты и старый добрый PHP. Поэтому у каждого из нас есть любимый фреймворк, с помощью которого мы и создаём свои веб-приложения. Чем бы мы ни занимались — составлением стандартного юридического контракта или съёмками голливудского блокбастера, — всегда полезно начать с какого-нибудь шаблона. Фреймворк придаёт структуру вашему приложению и избавляет вас от необходимости снова и снова изобретать велосипед. Это может быть навороченная платформа — своего рода конструктор, в котором есть всё, что нужно, даже батарейки (Rails, Django, Spring Boot, Nest), — либо минималистичный, но удобный фреймворк, работающий по принципу «тяп-ляп — и готово» (например, Flask или Express).

Читать перевод далее

Spring Data: нюансы @Transactional

Reading time7 min
Views46K

Любите Spring? А Spring Data? Я тоже люблю. Если хотите разобраться, почему же возникает этот unexpected transaction rollback, а также быть уверенным, что транзакция отменится, а не закоммитится, добро пожаловать под кат.

Читать далее

Регулярные выражения. Всё проще, чем кажется

Reading time7 min
Views127K

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

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

Читать далее

Памятка/шпаргалка по SQL

Reading time29 min
Views1.2M

Доброго времени суток, друзья!


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

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

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

Reading time4 min
Views42K

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

Читать далее

Lingtrain Aligner. Написал приложение для создания параллельных книг, которое вас удивит

Reading time6 min
Views23K

title


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


В этой статье я расскажу как сделать параллельную книгу, имея на руках два текста на разных языках. Я написал веб-приложение, которое упрощает процесс выравнивания, превращая сырые тексты в книги и параллельные корпуса. Хочу поделиться с сообществом этим проектом, а также узнать ваше мнение. Технические детали я описывал здесь и здесь, код приложения открытый. Поехали.


Установка


Приложение я оформил в виде docker контейнера, поэтому запустить его у себя на машине не должно составить труда. Также можно запустить приложение из исходников, инструкция есть в репозитории.


Итак, для запуска приложения у себя на компьютере нужно выполнить следующие команды:


docker pull lingtrain/aligner:v4
docker run -v C:\app\data:/app/data -v C:\app\img:/app/static/img -p 80:80 lingtrain/aligner:v4

C:\app\data и C:\app\img — это папки на вашем компьютере.


Контейнер скачается с репозитория Docker Hub и запустится на 80-м порту. Откроем приложение в вашем любимом браузере по адресу localhost.


Lingtrain app 1


Сделаем три шага: загрузка, выравнивание, генерация.

Смотреть демо

Обзор методов численной оптимизации. Безусловная оптимизация: метод линий

Reading time24 min
Views46K
image

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

Введение


Оптимизация — это процесс нахождения точки экстремального значения некоторой заданной целевой функции $f(\mathbf{x})$. Это один из крупнейших краеугольных камней прикладной математики, физики, инженерии, экономики, промышленности. Область её применений необъятна и может распространяться от минимизации физических величин на микро- и макроуровнях до максимизации прибыли или эффективности логистических цепочек. Машинное обучение также заострено на оптимизации: всевозможные регрессии и нейроные сети пытаются минимизировать ошибку между предсказанием и реальными данными.

Экстремум может быть как минимумом, так и максимумом, но обычно принято изучать любую оптимизацию исключительно как поиск минимума, поскольку любая максимизация эквивалентна минимизации из-за возможности поменять знак перед целевой функцией: $f(\mathbf{x})\to -f(\mathbf{x})$. Следовательно, в любом месте ниже под оптимизацией мы будем понимать именно минимизацию.
Читать дальше →

Решаем систему линейных алгебраических уравнений с Python-пакетом scipy.linalg (не путать с numpy.linalg)

Reading time9 min
Views41K


Аппарат линейной алгебры применяют в самых разных областях — в линейном программировании, эконометрике, в естественных науках. Отдельно отмечу, что этот раздел математики востребован в машинном обучении. Если, например, вам нужно поработать с матрицами и векторами, то, вполне возможно, на каком-то шаге вам придётся решать систему линейных алгебраических уравнений (СЛАУ). 

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

Я расскажу про один из таких инструментов — Python-пакет scipy.linalg из библиотеки SciPy, который позволяет быстро и эффективно решать многие задачи с использованием аппарата линейной алгебры.

В этом туториале вы узнаете:

  • как установить scipy.linalg и подготовить среду выполнения кода;
  • как работать с векторами и матрицами с помощью NumPy;
  • почему scipy.linalg лучше, чем numpy.linalg;
  • как формализовать задачи с использованием систем линейных алгебраических уравнений;
  • как решать СЛАУ с помощью scipy.linalg (на реальном примере).

Если можно — сделай тут habraCUT! Важно, чтобы этот ^^ список люди прочитали и заинтересовались

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

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

Подводные камни сбора метрик в Windows (часть 1)

Reading time5 min
Views3.9K

Привет! Уже довольно продолжительное время занимаюсь метриками в windows. Процесс сбора уже отлажен, и из памяти начинают уходить детали, а поэтому пора перенести полученные знания, так скажем, на бумагу. Статья будет про то, что было, что завезли, как с этим работать, какие будут грабли и костыли к ним. Попутно затронем .net clr, asp.net, wcf, iis, signalr, etw и что-нибудь еще. Статейка для тех кто в теме, ну или почти...

Читать далее

Аарон Шварц: «Верь в то, что ты можешь измениться»

Reading time6 min
Views16K
image


Кэрол Дуэк была одержима неудачами. Знаете, кажется, будто некоторые люди преуспевают во всем, что они делают, в то время как другие остаются беспомощными, обреченными на постоянные неудачи? Дуэк тоже это заметила — и она была полна решимости выяснить, почему так происходит. Поэтому она начала наблюдать за детьми, пытаясь увидеть разницу между этими двумя группами людей.

В 1978 году в исследовании с Кэрол Динер она дала детям различные головоломки и записала, что они говорили, когда пытались их решить. Очень быстро беспомощные дети начали винить себя: «Я запутался», — сказал один; «Моя память никогда не была хорошей», — объяснил другой.

Но головоломки продолжали появляться — и они становились все сложнее. «Это уже не весело», — кричали дети. Но все же загадок становилось ещё больше.

Дети не могли этого больше терпеть. «Я сдаюсь», — настаивали они. Они заговорили о другом, пытаясь отвлечься от натиска хитрых головоломок. «В эти выходные состоится шоу талантов, и я буду Ширли Темпл», — сказала одна девочка. Дуэк просто дала им еще более сложные головоломки.

Теперь дети начали дурачиться, как будто они могли скрыть свою неудачу, дав понять, что они вообще не пытались. Несмотря на то, что одному мальчику говорили, что это неверно, что это неверно, он мальчик продолжал выбирать коричневый в качестве ответа, говоря: «Шоколадный торт, шоколадный торт».

О клиенте и сервере в микросервисной архитектуре

Reading time21 min
Views11K

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

В качестве прикладного дополнения к рассуждениям мы разработали несколько Proof of Concept, сопроводили их разработку краткими пояснениями и приложили исходный код PoC.

Читать далее

Почему практически бесполезно делать локомотив мощнее

Reading time10 min
Views89K
Физика движения локомотива такая: чем он мощнее, тем лучше он трётся о рельс и больше тянет. При этом чем больше вам нужно тянуть, тем тяжелее должен быть локомотив, чтобы не проскальзывать по рельсу. А чем тяжелее он будет, тем больше шансов повредить рельс. В итоге примерно к 2000-м годам вся эта система достигла равновесия: более-менее устаканились ТТХ отечественных локомотивов с учётом ширины колеи и допустимого износа пути.



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

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

Давайте покажу завод «Уральские локомотивы» — но не ту часть, где прекрасные Ласточки, а ту, где самый хардкор.
Читать дальше →

Процесс — это не продукт: антиманифест методологии разработки ПО

Reading time3 min
Views6.2K

TLDR:

Антиманифест методологии разработки ПО

— Процесс — это не продукт

— Руководство, а не менеджмент

— Диалог, а не диктат


Вот и всё, остальное вы можете додумать сами, но если хотите, продолжайте чтение.
Читать дальше →

Карманная книга по TypeScript. Часть 7. Классы

Reading time17 min
Views31K

image


Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.


Члены класса (class members)


Вот пример самого простого класса — пустого:


class Point {}

Такой класс бесполезен, поэтому давайте добавим ему несколько членов.

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

Что читать на английском языке чтобы не умереть от скуки

Reading time9 min
Views51K

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

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

Читать далее

Как айтишнику издать свою книгу. Часть 2 Самиздат: сколько стоит свобода

Reading time10 min
Views8.7K

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

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

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

Долго ли, дорого ли

Всегда старайтесь быть н̶е̶заменимым

Reading time3 min
Views42K
Есть хорошая жизненная философия, которой можно придерживаться на рабочем месте, — это «постоянно быть готовым увольняться» («always be quitting»). Это не значит думать о том, чтобы уйти с работы. Но вести себя так, как будто вы можете уйти в кратчайшие сроки. Парадоксально, но это сделает вас лучшим инженером и откроет возможности для роста.

Так что же значит «постоянно быть готовым уйти»? Это означает «сделать себя заменимым»; «унизить себя»; «автоматизировать свою работу». Возможно, вы слышали эти более популярные ярлыки (и вам нужно будет с этим поразбираться и выяснить что это), и они дают подсказку что делать.

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

Парадоксально, но, будучи легко заменимым, вы освобождаете себя. Вы облегчаете себе переход к роли более высокого уровня и вам легче менять проекты, над которыми вы работаете. Не согласны? В замешательстве? Вот 10 конкретных вещей, которые вы можете сделать:
Читать дальше →

Information

Rating
1,466-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity