Pull to refresh
9
0

Инженер-программист

Send message

XAP (Хреновая Архитектура Разоряет)

Reading time6 min
Views45K
Вчера я первый раз написал статью на хабр, не зная местных тонкостей.

Исправляюсь! Теперь понятным языком и с юмором!


Чёрная пятница оказалась воистину чёрной для aмериканского интернет-универмага Kohl's. Все сервера накрылись медным тазом именно в день рождественских распродаж. Привычные 20% годового дохода, добываемые в этот день, обернулись смешным пустяком, а все потому что Боливар не вынес такой нагрузки.

Традиционная архитектура Tomcat + WebLogic + БД облажалась по полной программе! Напрасно бегали по этажам сисадмины, суетились в панике ведущие программисты, а архитекторы выдирали остатки волос… Горлышко бутылки оказалось слишком узким для того, чтобы в него могли протиснуться все потенциальные клиенты и недостаточно эластичным, чтобы за короткое время его можно было успеть расширить. Бутылку разорвало нахрен. И долго еще кровоточили раны, нанесённые ее осколками…
Читать дальше →
Total votes 71: ↑56 and ↓15+41
Comments55

Чем старше Spring, тем больше контекстов

Reading time7 min
Views53K
Уже много лет работая со спрингом, я заметил забавную закономерность: в каждой новой версии добавляется новый способ конфигурирования контекста. Давайте вспомним, как это было:
  • В первом спринге конфигурацию можно было писать исключительно на xml-e. (ClassPathXmlApplicationContext(“context.xml”))
  • Во втором (точнее с 2.5) появилось возможность создавать контекст через аннотации. (AnnotationConfigApplicationContext(“package.name”))
  • Третий спринг добавил конфигурацию на джаве. (AnnotationConfigApplicationContext(JavaConfig.class))
  • Четвёртый тоже сохранил традицию и уже с декабря 2013 года можно конфигурировать при помощи груви скриптов (GenericGroovyApplicationContext(“context.groovy”))

Консультируя и проводя тренинги в различных компаниях, я видел самое разное отношение к этим способам конфигурирования. Крупные компании, зачастую живущие по принципу «работает – не трогай», до сих пор лелеют старые xml -конфигурации, продолжая их множить и кормить новыми бинами. «Зато у нас все централизовано!» — кричат их архитекторы, добавляя 100500-тысячную строчку в xml-Бога.
Компании поменьше, пытающееся угнаться за новшеством технологий, беспощадно сжигают старые XML-ы, переписывая всё что могут, на аннотации, а что не могут на Java-конфиг. И уже потирают руки, пытаясь придумать, а куда бы им теперь приткнуть конфигурацию на грувях.



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

А где же находится правда? Неужели как всегда посередине?
Давайте попробуем разобраться…

Для начала давайте сравним стратегии декларации бинов.

Начнём с классического XML-a:

Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments53

Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 1

Reading time34 min
Views85K

Когда-то я проходил серию собеседований на Backend-Java-разработчика и записывал вопросы себе на будущее, чтобы потом можно было пробежаться и освежить память. Подумалось, что, вероятно, данный сборник будет полезен не только мне, поэтому сдул с него пыль, набросал ответов и делюсь с сообществом. На оригинальность и исключительность не претендую: подобные статьи уже были и на Хабре, и много где ещё — в конце (во второй части) приведу список ссылок, чтобы шпаргалка была максимально полной.


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


Текста получилось много, поэтому пришлось разбить на две части. В первой поговорим про Java и Spring, а обо всём остальном — во второй. Вторая часть тут

Погнали
Total votes 17: ↑15 and ↓2+13
Comments7

История кондиционирования воздуха. Принцип работы кондиционера

Reading time5 min
Views18K

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

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

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

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments24

Зачем вам ДНК тест?

Reading time9 min
Views6.3K

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments9

Как мобильное приложение помогло «ВкусВиллу» стать лидером по количеству заказов продуктов онлайн

Reading time6 min
Views6.1K
По итогам 2020 торговая сеть «ВкусВилл» возглавила рейтинг лидеров e-grocery по количеству выполненных интернет-заказов за 2020 год, а также вошла в пятёрку крупнейших онлайн-продавцов еды в стране по обороту. Доля онлайн-продаж после внедрения приложения увеличилась с 1% до 25%. Выручка собственной доставки «ВкусВилл» составила 14,93 млрд с НДС.



Само же мобильное приложение «ВкусВилл» в 2020 году «Роскачество» признало самым функциональным среди российских ритейлеров.

Ниже мы расскажем, какие факторы способствовали достижению таких результатов.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments39

X Neural Switcher — Поваренная книга

Reading time9 min
Views45K
Приветствую.

Я являюсь автором программы для автоматического переключения раскладки клавиатуры, работающей под Linux. Эта программа xneur или X Neural Switcher.

Когда я начинал заниматься этой программой, ничего вменяемого для замены Punto Swither для linux не было. Обратите внимание, я писал ее лично для себя, у меня почти всегда все работает. Я выкладываю ее в общий доступ только потому, что программа полезна людям.

В дальнейших статьях я разберу существующие (и существовавшие) аналоги, и поясню, почему они все являются тем, чем пользоваться нельзя, и какая клевая программа xneur.

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

За прошедшие 6 лет, я периодически натыкался на специфические баги как Xlib, так и DE, c которыми приходилось находить взаимопонимание.

Сейчас я хочу рассказать о приготовлении xneur, описать настройки и поделиться «маленькими футбольными хитростями».

Эта часть статей под номером 0 посвящена самому простому — описанию. Вы удивитесь, как много xneur умеет из того, что не умеет Punto.

Для тех кто долго пробовал, но не осилил. Я всегда открыт к диалогу. Если что-то где-то не работает, сообщите мне всю необходимую информацию, и я постараюсь решить вашу проблему.

Читать дальше →
Total votes 153: ↑150 and ↓3+147
Comments81

Шпаргалка для кандидата: какие вопросы задать потенциальному работодателю на собеседовании

Reading time6 min
Views392K
У каждого кандидата в конце собеседованию рекрутер обычно спрашивает, есть ли вопросы. Часто люди теряются и не находят, что спросить. И лишь по прошествии некоторого времени (часто, когда человек уже работает в компании) сами собой всплывают вопросы, о которых нужно было поинтересоваться заранее, а не брать кота в мешке и удивляться «Как я сюда попал? Куда я смотрел? Почему я об этом не подумал?». Это так называемый «эффект лестницы». Я подготовил шпаргалку, что ты, %habrauser%, не растерялся.

Общее


1. Рабочий график и можно ли его двигать?
Я люблю поспать. Но на моей прошлой работе «рабочее утро» начиналось в 7:30. Мало того, что я довольно часто не мог прийти к этому времени, я еще пол дня занимался тем, что пытался привести себя в рабочую форму. Где то до 10:00. С 10:30 до 11:30 я усердно работал. Потом был обед. А потом мне хотелось спать, а не работать, т.к. я не высыпался еще с утра. Надо ли говорить, что вместо 8 часов, на которые меня нанял работодатель, я работал в «потоке» только часа 3-4. Так что для себя нужно решить вопрос – когда я наиболее трудоспособен? И обговорить рабочий график с руководством. И еще один нюанс. Попробуйте закрепить обговоренный график в трудовом договоре или контракте (далее ТД), если работодатель идет на персональный рабочий график для Вас. Никаких устных договоренностей. Иначе Вам начнут крутить руки уже в процессе работы (как это было со мной).
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments30

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Total votes 192: ↑179 and ↓13+166
Comments66

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Reading time39 min
Views167K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


Читать дальше →
Total votes 51: ↑43 and ↓8+35
Comments49

Эй, запрос! Ты живой? Как легко обработать блокировки в PostgreSQL

Reading time8 min
Views53K
Доброе время суток! Администрирование и сопровождение реляционных баз данных чаще всего является нетривиальной задачей. Иногда запросы, работавшие быстро, внезапно начинают «тормозить» по непонятным причинам, размер таблиц растет и в целом производительность базы данных снижается.

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

Чтобы разобраться в сложившейся ситуации, администратору БД необходимо понять, какой процесс блокирует и какой процесс является блокируемым, а также иметь возможность отменить или «убить» блокирующий процесс и в конце проверить результат.

В этой статье я хочу коснуться темы блокировок в PostgreSQL и рассказать об инструментах для работы с ними. Но сначала попробуем разобраться в самой теме.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments1

Приручение строптивого

Reading time10 min
Views21K


Любите ли вы разрабатывать базы данных? Нет, не новомодные NoSQL, а старые добрые реляционные, где вы можете описывать отношения и хранимые процедуры для доступа к данным и логики. Может быть, вы разрабатываете базы данных для PostgreSQL? Если да, то отлично — этот пост определенно для вас.
Все ли инструменты разработки для PostgreSQL вам известны?
Total votes 25: ↑21 and ↓4+17
Comments19

Information

Rating
Does not participate
Registered
Activity