Добрый день, Хабр! Хочу поделиться учебником-справочником знаний, которые мне удалось собрать по RabbitMQ
и сжать в короткие рекомендации и выводы.
Пользователь
Дофаминовое сопровождение
Недавно проводил конференцию по обмену опытом среди программистов 1С. В числе прочих, там делился своим опытом весьма примечательный человек по имени Захар. Примечателен он тем, что создал и развивает стабильную систему обслуживания клиентов.
Начал он с показателей – деньги, удержание клиентов, оценки качества – цифры действительно интересные, необычные для рынка сопровождения 1С. На всякий случай поясню: сопровождение 1С – это периодическое выполнение задач по программированию разной степени сложности, ну и банальная тех.поддержка.
Казалось, после цифр он перейдёт к организации процесса, и там будут стандартные клише вроде «мы работаем качественно», «не пишем go-no-code» и «искренне хотим помочь клиенту». Ан нет. Оказалось, дело в дофамине.
Аннотации в Java и их обработка
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/c1d/8d6/d1e/c1d8d6d1e880ba73218b3240c9e37232.png)
Аннотация — это специальная конструкция языка, связанная с классом, методом или переменной, предоставляющая программе дополнительную информацию, на основе которой программа может предпринять дальнейшие действия или реализовать дополнительную функциональность, такую как генерация кода, проверка ошибок и т. д.
В этой статье мы обсудим назначение стандартных аннотаций, а также рассмотрим на практическом примере создание и обработку своих аннотаций.
Пишем свой плагин для IDEA для поддержки нового языка (часть 2)
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/06e/7bd/6ff/06e7bd6ffb2f5792e5ee0833d63a9c1f.png)
Продолжение статьи о создании языкового плагина для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin. Начало
Пишем свой плагин для IDEA для поддержки нового языка (часть 1)
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f39/dde/494/f39dde4947e3752c0193bd46d29cd9ca.png)
В статье рассмотрено как создается языковой плагин для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin.
Ручная кофемолка: инструменты командной строки для Java
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/4e4/606/0df/4e46060df81ba166171f6dafadbe07dc.jpg)
В книге "97 вещей, которые должен знать каждый Java-программист" есть глава о некоторых инструментах командной строки в JDK (я дал 2 из 97 советов).
Поскольку я сам часто использую такие помощники, я хотел кратко представить их в сегодняшней статье.
Я предпочитаю командную строку для своей повседневной работы, используя комбинацию команд git
, sed
, grep
, и т. д., bash
что упрощает выполнение повторяющихся задач.
7 распространенных ошибок в SQL-запросах, которые делал каждый (почти)
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/84a/ce6/183/84ace618335c7097c6c776799440a171.png)
Сегодня SQL используют уже буквально все на свете: и аналитики, и программисты, и тестировщики, и т.д. Отчасти это связано с тем, что базовые возможности этого языка легко освоить.
Однако работая с большим количеством junior-ов, мы раз от раза находим в их решениях одни и те же ошибки. Реально — иногда просто создается ощущение, что они копируют друг у друга код.
Кстати, иногда такая же участь постигает и специалистов более высокого полета.
Сегодня мы решили собрать 7 таких ошибок в одном месте, чтобы как можно меньше людей их совершали.
NEO4J – графовые базы данных
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/1cb/0bc/3f2/1cb0bc3f29c509379441216cadf6612d.png)
В данной статье будет рассмотрена графовая система управления базами данных в Neo4j, а именно:
Домашний веб-сервер для чайников
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/a01/cdb/42e/a01cdb42e1ff65fb0784db2042d15afc.jpg)
Привет, Хабр! Относительно недавно после пары лет перерыва в айти, потраченных на изучение японского языка, мне пришлось срочно обновлять свои знания на работе. Ну знаете, искать возможности исполнить все хотелки начальника, как и положено эникею. Меня ждало много увлекательных открытий, но при этом, как водится, и немало боли и борьбы с непонятками. Docker, контейнеры, реверс DNS и реверс прокси, получение TLS сертификатов. В какой-то момент я наконец дошёл до удобного решения, которым я теперь хочу поделиться.
В своё время домашний сервер очень облегчил бы мне понимание Docker’а, да и удобство работы с ним неслабо бы повысил. Поэтому возникла идея написать эту статью, после прочтения которой любой человек даже с поверхностными знаниями в информационных технологиях сможет поставить себе постоянно доступный домашний сервер на базе Docker Swarm с удобной веб-мордой, простым получением TLS-сертификатов и Heroku-подобным функционалом (для чего будем использовать PaaS CapRover).
Статья, в общем-то, рассчитана на новичков, обладающих какими-то техническими знаниями — школьников старших классов, студентов и просто любителей — а потому вряд ли будет интересна серьёзным профессионалам.
TINKOFF-INVEST. Разработка торгового робота на JAVA. Часть 2
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/56b/c7b/a61/56bc7ba618428fff2823a735ff96a6f3.png)
Как же быстро летит время... Прошло почти 2 месяца с момента публикации моей первой статьи о работе с TINKOFF INVEST API – Разработка торгового робота на JAVA. Часть 1, в которой мы начали свое знакомство с инструментарием автоматизации торговли, предоставляемым брокером ТИНЬКОФФ.
В этой части разработаем механизмы для загрузки и хранения биржевых исторических данных, а также рассмотрим некоторые ограничения, с которыми неминуемо столкнется каждый пользователь API и методами их преодоления.
Если нет желания вникать в код и читать статью, то можете сразу мотать к разделу "Демонстрация работы приложения".
Как я запускал Spring Cloud
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/e9c/d51/199/e9cd51199caf732413aa72bc8ef5ab8c.jpg)
Меня зовут Аксёнов Вячеслав, я старший бэкенд Java/Kotlin разработчик в крупном энтерпрайзе. Однажды я попал на проект, полный микросервисов, в котором за конфигурацию отвечала такая штука как Spring Cloud. Чтобы разобраться как именно это работает я исследовал и прикрутил этот диковенный элемент к одному своему пет проекту. И в этой статье я пошагово покажу как я это сделал
Введение в Maven Toolchain
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/2cc/b44/5c4/2ccb445c4cfca81564e97ac3998e2697.png)
Java развивается гораздо быстрее, чем раньше. Но не все проекты, над которыми мы работаем, поспевают за этим темпом.
У меня есть проекты на Java 8, 11 и 17, и иногда я хочу поиграть с имеющимися сборками более новых версий.
Как обеспечить их создание без необходимости постоянно переключать среды выполнения Java?
Toolchain спешит на помощь!
Препарируем дельфина: что внутри у Flipper Zero
На «больших» компьютерах есть куча уровней абстракции и аппаратных средств сделать жизнь пользователя и разработчика проще. В итоге, даже если вы пишете на голом С, вас все равно не волнует как конкретно по PCI передается информация, как работает система питания процессора и какая там микросхема используется для хранения BIOS/UEFI.
![](https://habrastorage.org/webt/5n/cg/_x/5ncg_xtsnk6o0dsbsb7xlc3xixu.jpeg)
Тут все не так, слишком уж близко к железу происходит разработка. Статья — это краткий экскурс в то, как устроен Flipper с железной точки зрения. Поехали.
Пишем чат под Android на Websocket'ах
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/6dc/afd/915/6dcafd9154fc1a480298e29d2f176f93.png)
Привет Хабр!
Во время локдауна я решил поупражняться в разработке под Android. Начать решил с простой гиперказуальной игры с элементами дуэли. Взаимодействие игроков решил реализовать через отдельный сервер и websocket'ы, но пока читал про все это дело, понял, что простого туториала на русско-язычных ресурсах почему-то нет. Поэтому, решил восполнить этот пробел.
В этой статье я постараюсь описать как настроить WebSocket'ы на примере чата с сервером на SpringBoot и клиенте под Android.
Как научиться чему угодно с помощью техники Фейнмана
![](https://habrastorage.org/webt/ta/za/u8/tazau8c_djuqpxywla2tohrnny8.png)
Ричард Фейнман был физиком, удостоенным Нобелевской премии, который внёс значительный вклад в такие области, как квантовая механика и физика частиц. Он также стал пионером квантовых вычислений и ввел понятие нанотехнологии. Он был известным лектором, преподавал в Корнелльском университете и Калифорнийском технологическом институте.
Несмотря на все свои достижения, Фейнман считал себя «обычным человеком, который много учился». Он считал, что любой человек способен при достаточных усилиях изучить даже такие сложные предметы, как квантовая механика и электромагнитные поля.
Нет никаких чудо-людей. Просто случилось так, что они заинтересовались чем-то и выучили все про это. Ричард Фейнман
Ричарда Фейнмана Ричардом Фейнманом (по крайней мере, по мнению Ричарда Фейнмана) сделал не врождённый интеллект, а систематический способ, с помощью которого он выявлял то, чего не знал, а затем бросался постигать это.
На протяжении всей своей работы и жизни, Фейнман с элегантностью и простотой давал представление о своём процессе рассмотрения сложных концепций в мире физики и изложения знаний/идей. Многие из этих наблюдений о его процессе обучения были собраны в то, что мы сейчас называем «техникой Фейнмана».
Техника Фейнмана — это концепция обучения, которую вы можете использовать для понимания практически всего.
Чтобы постоянно расширять свой набор навыков и достигать мастерства в освоении новых и сложных концепций, крайне важно иметь основу для решения сложных задач, начиная от информатики и дизайна продуктов и заканчивая психологией и эволюционной биологией.
В этой статье будет представлен обзор техники Фейнмана и того, как вы можете применять её для постоянного расширения своих знаний и навыков. Короче говоря, Фейнман научит вас не только тому, как учиться, но и тому, как по-настоящему понимать.
Как своими руками сделать WiFi камеру слежения (ESP32-CAM)
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/bf0/817/f94/bf0817f949849066ff7c7529debc8cdb.jpg)
К старту курса по разработке на С++ рассказываем, как самостоятельно собрать IP-камеру с обнаружением движения. За подробностями приглашаем под кат, где вы найдёте много фотографий и видео на Youtube-канале автора, за которым наблюдают более 30 000 человек.
Как в Java устроено выделение регистров в памяти
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/acc/de7/4ff/accde74ff84aa241810fc0147c24e0e9.png)
Привет, Хаброжители! Обратите внимание на большую распродажу в честь Старого Нового года.
Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором.
Я решил 500 задач на LeetCode — и они действительно меня чему-то научили
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/56d/674/eef/56d674eeffc4b4b5b43021380d26eabe.jpg)
Много кто знает, что такое Leetcode. Это своего рода решебник — задачи, которые дают на технических собеседованиях в крупных компаниях (в том числе и из FAANG) и их решения.
Такие задания, заточенные на знание структур данных и алгоритмов, все чаще встречаются и на собеседованиях в небольших компаниях. Многим кандидатам это не нравится — они утверждают, что навыки «литкодинга» ничего не говорят о том, как человек справится с реальной работой. Согласен. Если вы не можете слёту решать задачи c LeetCode, это не значит, что вы плохой разработчик. Возможно, вам в реальной работе вообще никогда не понадобится, скажем, инвертировать бинарное дерево. Однако глупо отрицать, что на LeetCode можно изучить массу подходов и инструментов, которые окажутся полезными. В этой статье я расскажу о том, что вынес для себя из работы с платформой.
Двухколесный робот на карданном моторе
![](https://habrastorage.org/webt/gl/ns/-_/glns-_buoqzn27w8vziv4uhyq0e.png)
С этим роботом я играюсь уже несколько месяцев. Перемещается он за счет поворачивания колес относительно груза маятника, а скорость контролирует, ориентируясь на обратную связь от датчика наклона. На его сборку меня вдохновила снятая на Consumer Electronics Show (CES 2020) видео-демонстрация с роботом Ballie от Samsung. Было понятно, что это для них чисто хайповый проект, который в серийное производство не выйдет. Тем не менее у меня возник интерес собрать нечто аналогичное.
LJV: Чему нас может научить визуализация структур данных в Java
Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String
до ConcurrentSkipListMap
) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.
Information
- Rating
- Does not participate
- Location
- Ташкент, Ташкентская обл., Узбекистан
- Date of birth
- Registered
- Activity