Как стать автором
Обновить
0

Java backend developer

Отправить сообщение

Параллельные запросы в PostgreSQL

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


В современных ЦП очень много ядер. Годами приложения посылали запросы в базы данных параллельно. Если это отчетный запрос ко множеству строк в таблице, он выполняется быстрее, когда задействует несколько ЦП, и в PostgreSQL это возможно, начиная с версии 9.6.


Понадобилось 3 года, чтобы реализовать функцию параллельных запросов — пришлось переписать код на разных этапах выполнения запросов. В PostgreSQL 9.6 появилась инфраструктура для дальнейшего улучшения кода. В последующих версиях и другие типы запросов выполняются параллельно.

Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии2

Пост-пост, мета-мета. Учимся писать на Хабр

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


— Ямщик, а далеко до релиза?
— Да пара вёрсток.


Докатился — пишу на Хабр о том, как писать на Хабр. Хотя причины есть — я пять лет занимаюсь этим, перевидал и перепробовал кучу инструментов, так что теперь делюсь с вами самыми лучшими.


Я расскажу о том, как прийти от HTML-разметки в Хабраредакторе к осмысленной вёрстке, быстрому оформлению постов и продуктивной совместной работе. Здесь — о моём опыте в Яндекс.Деньгах и о том, как я организовал работу над хабратекстами, чтобы не было мучительно больно.

Читать дальше →
Всего голосов 99: ↑90 и ↓9+81
Комментарии60

Spring и JDK 8: Вы все еще используете @Param и name/value в Spring MVC аннотациях? Тогда статья для Вас

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


Здравствуй, Хаброчитатель!


Разрабатывая учебный проект по Spring Boot 2 решил поэкспериментировать с @Param в запросах Spring Data JPA, а точнее c их отсутствием:


@Transactional(readOnly = true)
public interface UserRepository extends JpaRepository<User, Integer> {

   @Query("SELECT u FROM User u WHERE LOWER(u.email) = LOWER(:email)")
   Optional<User> findByEmailIgnoreCase(@Param("email") String email);

   List<User> findByLastNameContainingIgnoreCase(@Param("lastname") String lastName);
}

(про магию, как работает второй метод есть в старой публикации По следам Spring Pet Clinic).


Убрав @Param можно убедится, что Spring прекрасно работает и без них. Я слышал про параметр в компиляции, который позволяет не дублировать названия в аннотациях, но я ничего не специального не делал, поэтому решил покопать поглубже подебажить.


Если Вы еще пользуетесь аннотациями из заголовка статьи, Spring Boot и JDK 8, прошу под кат:


UPDATE: аннотации @PathVariable и @RequestParam все еще часто нужны, чтобы приложение работало корректно. Но их атрибуты value/name уже не обязательны: соответствие ищется по именам переменных.

Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии7

Tails OS или как защитить себя в сети

Время на прочтение5 мин
Количество просмотров125K
Рано или поздно, но большинство фантастических сюжетов воплощаются в реальную жизнь. В мире информационной безопасности это произошло как только Эдвард Сноуден опубликовал информацию о PRISM — средстве слежения за пользователями сети, разработанного АНБ. В этой статье я опишу самый действенный способ защитить свои данные от любопытных глаз.

· Tails


Первым делом, следует познакомиться с главным героем этой статьи. Без этой ОС можно было бы и не пытаться открыть для себя дверь в мир анонимности. Хвосты используют более 20 000 раз в день, журналисты и правозащитники используют Tails, чтобы осудить правонарушения правительств и корпораций.


TheAmnesicIncognitoLiveSystem — это операционная система, которую вы можете запускать практически на любом компьютере с USB-накопителя или DVD-диска.
Эта OS направлена на сохранение вашей конфиденциальности и анонимности поможет вам использовать интернет анонимно и обходить цензуру — все подключения вынуждены проходить через сеть TOR, а также не оставлять следов на компьютере, который вы используете и использовать новейшие криптографические инструменты для шифрования ваших файлов, электронной почты, обмена мгновенными сообщениями и скрытия всех файлов и каталогов на электронном носителе.

Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии26

Бюджетное видеонаблюдение для прижимистых «чайников»

Время на прочтение3 мин
Количество просмотров137K
Скоро будет 7 лет с момента написания статьи "Видеонаблюдение под Ubuntu для «чайников» (ZoneMinder)". За эти годы она не раз корректировалась и обновлялась в связи с выходом новых версий, но кардинальная проблема, а именно — стоимость IP видеокамер, оставалась прежней. Её обходили оцифровывая аналоговые потоки и эмулируя IP камеры с помощью USB «вебок».

Ситуация изменилась с появлением китайских камер стандарта ONVIF 2.0 (Open Network Video Interface Forum). Теперь любую камеру отвечающую стандарту вы можете настроить с помощью ONVIF Device Manager.


Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии22

Функциональное программирование на Java с Vavr

Время на прочтение8 мин
Количество просмотров15K
Многие слышали про такие функциональные языки, как Haskell и Clojure. Но есть и такие языки, как, например, Scala. Он совмещает в себе как ООП, так и функциональный подход. А что насчет старой доброй Java? Можно ли на ней писать программы в функциональном стиле и на сколько это может быть больно? Да, есть Java 8 и лямбды со стримами. Это большой шаг для языка, но этого все еще мало. Можно ли что-то придумать в такой ситуации? Оказывается да.


Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии16

Манифест Чистого Программиста или краткий конспект книги «Чистый Код» Роберта Мартина

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

Данная статья является конспектом книги "Чистый Код" Роберта Мартина и моим пониманием того, каким Чистый Код должен быть. Тут нет разделов о тестировании, TDD, о том какая должна быть архитектура и т.д. Здесь все только о том, каким должен быть Чистый Код.


Читать дальше →
Всего голосов 48: ↑44 и ↓4+40
Комментарии49

Как мы пишем статьи на Хабр: опыт разработчиков EastBanc Technologies

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

Для начала достаточно ответить на два простых вопроса:

  • Зачем это мне?
  • Что я расскажу интересного и полезного хабраобществу?

После чего можно взять план из этой статьи (или придумать свой) и сделать это.

image

Есть творческие этапы и технические. В этой статье поговорим о творческих. Рассмотрим:

  • Зачем писать статьи,
  • Откуда взять тему для статьи,
  • Где найти время, чтобы её написать,
  • Основные этапы работы над текстом,
  • Что делать, если статья «не идёт»,
  • И с чего начать, если ты ни разу не писал на Хабр.

Надеемся, что текст пригодится и другим авторам Хабра, в том числе потенциальным.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии5

Датчики Холла для бесколлекторного двигателя: возвращение квадратурных энкодеров

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


Задача: есть обычный китайский бесколлекторник, нужно его подключить к контроллеру Copley Controls 503. В отличие от копеечных коптерных контроллеров, 503й хочет сигнал с датчиков холла, которых на движке нет. Давайте разбираться, для чего нужны датчики и как их ставить.

Ликбез: принцип работы бесколлекторного двигателя


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


Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии35

Java с ассемблерными вставками

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



Как известно, на любом языке можно писать, как на Java, а первая любовь джависта — это написание Garbage Collectors и JIT Compilers. С этим связано множество восхитительных вопросов, например: каким образом можно из управляемого кода напрямую работать с машинным кодом и ассемблером?


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


Теперь про ассемблер и машинный код. Зачем это нужно — вопрос открытый. Например, вы наслушались о Meltdown и хотите написать для него красивое API :-) Ну, и не надо забывать, что Oracle — не боги, поддержку того же AVX-512 добавили только в Девятке, прямое управление аппаратной транзакционной памятью не ложится на язык, часть стандартных методов можно реализовать лучше, чем это сделали в SDK и т.п. — у нас всегда есть с чем покопаться!

Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии32

Как ускорить загрузку сайта: 7 советов по оптимизации для начинающих

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


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

Примечание: в конце статьи приведен список ресурсов для дальнейшего изучения — будем благодарны, если вы сможете дополнить его в комментариях.
Читать дальше →
Всего голосов 22: ↑16 и ↓6+10
Комментарии6

Старые ISA-видеокарты и AVR

Время на прочтение28 мин
Количество просмотров47K
Лет десять тому назад достались мне предназначенные на помойку ISA-видеокарты от 286...486 машин. Видеокарты были опробованы и с тех пор пылились в ящике. Пару лет назад появилась у меня мысль, а не подключить ли такую видеокарту к микроконтроллеру? Вот об этом я и расскажу в статье.
Всего голосов 76: ↑76 и ↓0+76
Комментарии58

Очередные умные часы своими руками

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


Вдохновившись некоторое время назад статьей «Умные часы своими руками за 1500р.», я тоже решил попробовать сделать подобный девайс.


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


Подбор компонентов, разводка платы, пайка в суровых условиях, 3D-печатный корпус и JavaScript на часах — под катом. Welcome!

Всего голосов 145: ↑144 и ↓1+143
Комментарии214

Электробайк. Контроллер двигателя своими руками

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

image


Как вы уже знаете из прошлых постов, у нас в компании есть DIY-движение. В свободное от работы время коллеги занимаются фрезеровкой печатных плат в домашних условиях, делают тепловизор на FLIR Lepton, а также решают семейные разногласия с помощью 4 контроллеров и 2 умных часов. Продолжим серию увлекательный историй! Сегодня я расскажу, как сделать контроллер к трехфазному двигателю электровелосипеда своими руками. Целью создания такого контроллера было:


  1. Изучение работы трехфазного мотора под управлением контроллера.
  2. Большинство контроллеров для электровелосипедов, представленных на рынке, — китайские. Они хоть и относительно дешевые (около 2.000 руб в зависимости от мощности), но являются неведомой коробкой, в которой неизвестно что происходит. И сразу к ней возникает очень много вопросов — экономично ли она потребляет и распределяет ток, какой у нее запас мощности, почему так сильно перегревается, преждевременно срабатывает защита по току и т.д.

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


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

Всего голосов 45: ↑42 и ↓3+39
Комментарии89

Bash-скрипты: начало

Время на прочтение11 мин
Количество просмотров1.7M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии123

Создание архитектуры программы или как проектировать табуретку

Время на прочтение25 мин
Количество просмотров682K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии45

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

Время на прочтение39 мин
Количество просмотров167K
Что это и зачем оно надо: Как известно, главное преимущество 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, по этой ссылке.


Читать дальше →
Всего голосов 51: ↑43 и ↓8+35
Комментарии49

Советы от Андрея Александреску по поводу выступлений с докладами на технические темы

Время на прочтение11 мин
Количество просмотров9.8K
image

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

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

Советы относятся к выступлениям, длящимся дольше 30 минут. Короткие (до 20 мин) выступления также сложны, но сложности их иные. Короткие выступления тактические — он должны быть хорошо отрепетированы и чётко донесены до аудитории. Они популярны в академических кругах и отличаются хорошим качеством материала, к которому мне нечего добавить. Долгие выступления отличаются стратегическим подходом, импровизацией и адаптацией.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии4

Патентование полезной модели: шаги

Время на прочтение3 мин
Количество просмотров9K
Если вы придумали уникальное устройство, вы можете его защитить, получив патент на полезную модель. Вы можете также попробовать получить патент на изобретение, но про изобретение мы поговорим в рамках других публикаций, если будет интерес.

Я часто рекомендую подавать одновременно две заявки на полезную модель и на изобретение.

Из опыта своей работы могу сказать, что патент на полезную модель получить легче и, как правило, быстрее.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии8

Как красиво оформить публикацию на Хабре

Время на прочтение7 мин
Количество просмотров45K
Публикация – основная единица связи автора с читателем. Практика показывает, что на Хабре можно разместить почти любой формат: небольшой анонс и лонгрид-обзор, интервью, фотоотчёт, трансляцию события, урок и многое-многое другое. Нередко успех публикации зависит и от её оформления – приятно оформленный материал читать одно удовольствие. В этой статье мы постараемся предоставить вам много полезных советов по хорошему оформлению материала.

И первый лайфхак – кликабельная картинка до ката, которая ведёт сразу внутрь публикации:


Читать дальше →
Всего голосов 140: ↑121 и ↓19+102
Комментарии112

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность