Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Проверка на равенство в Kotlin

Блог компании OTUSПрограммированиеKotlin
Перевод

В языке Kotlin существует три способа проверки на равенство:

Первый способ — сравнение структур (==)

Оператор == в Kotlin позволяет сравнивать данные, содержащиеся в переменных. Однако в Java этот оператор используется для сравнения ссылок двух переменных.

В случае пользовательских классов == можно использовать для сравнения содержимого data-классов. В остальных случаях этот оператор сравнивает ссылки.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Просмотры2.6K
Комментарии 5

Rich text editors from backend perspective

Разработка веб-сайтов.NETHTMLAngularВизуализация данных
Welcome everyone, in this article I’m going to overview the most popular types of rich text editors, tradeoffs of their use from a backend perspective. By that I mean:

  • Streaming of content from the rich text editor to other infrastructure tools like full-text search, warehouses, etc.
  • Retrieving of content to clients: mobile, web, desktop.
  • Storing of content in some kind of storage (SQL database in my case)
  • Analyzing of content, which includes point 1, but also analyzing it from the perspective of our application
Read more →
Всего голосов 1: ↑0 и ↓1 -1
Просмотры1.1K
Комментарии 1

Как расширить Spring своим типом Repository на примере Infinispan

Java
Из песочницы

Это моя первая статья, в ней я попытаюсь описать полученный мною практический опыт работы со Spring Repository под капотом фреймворка. Готовых статей про эту тему я в интернете не нашёл ни на русском, ни на английском, были только несколько репозиториев исходников на github, ну и исходники самого Spring. Поэтому и решил, почему бы не написать, вдруг тема написания своих типов репозиториев для Spring для кого-то ещё актуальна.

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры1.7K
Комментарии 5

TypeScript для конфигурации WebPack (FE and BE)

Разработка веб-сайтовTypeScript
Tutorial
Recovery mode

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

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры4.1K
Комментарии 6

Чаты на вебсокетах, когда на бэкенде WAMP. Теперь про Android

Блог компании FunCorpJavaРазработка мобильных приложенийРазработка под AndroidKotlin

Мой коллега уже писал про наш опыт разработки чатов на вебсокетах для iOS, поэтому часть про особенности бэкенда с точки зрения клиента у нас общая. А вот реализация на Android, конечно, отличается. И ещё мне не приходилось, как в первой статье, искать библиотеку для поддержки старых версий операционной системы, потому что на Android каких-то глобальных изменений в сетевой части не было, всё работало и так.

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

Читать далее
Всего голосов 50: ↑50 и ↓0 +50
Просмотры5.1K
Комментарии 3

NEST.JS. Работа с ошибками. Мысли и рецепты

JavaScriptПрограммированиеNode.JS

Одни умные люди говорят: "эксепшены - это зло, используйте монады!", другие кричат: "коды ошибок ещё никто не отменял!", а третьи включают механизм исключений в языки программирования.. Однако, у большинства статей, который попадались мне на глаза есть две относительные проблемы (при всём уважении к авторам!):

Некоторая... академичность. Разобрано множество идей и концепций, но заканчивается всё стандартным: "ваш выбор зависит от вашей ситуации".

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

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

Кому интересно, прошу под кат.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры3.4K
Комментарии 7

Java Optional не такой уж очевидный

ПрограммированиеJavaООПФункциональное программирование
Перевод

NullPointerException - одна из самых раздражающих вещей в Java мире, которую был призван решить Optional. Нельзя сказать, что проблема полностью ушла, но мы сделали большие шаги. Множество популярных библиотек и фреймворков внедрили Optional в свою экосистему. Например, JPA Specification возвращает Optional вместо null.

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

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры6.5K
Комментарии 33

Как мы просто сократили объем входящего в дата-центр трафика на 70%

Блог компании FunCorpРазработка под iOSРазработка мобильных приложенийРазработка под AndroidАналитика мобильных приложений

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

Единственное, о чем мы пожалели — что не применили это решение раньше.

Читать далее
Всего голосов 137: ↑136 и ↓1 +135
Просмотры29.4K
Комментарии 53

Envoy как универсальный сетевой примитив

Высокая производительностьРазработка под iOSРазработка мобильных приложенийРазработка под AndroidМикросервисы

В октябре прошлого года мои коллеги представили на EnvoyCon доклад "Построение гибкой подсистемы компрессии в Envoy". Вот он ниже



Судя по статистике сегодняшней статьи от SergeAx, тема компрессии сетевого трафика оказалась интересной многим. В связи с чем я немедленно возжелал вселенской славы и решил кратко пересказать содержание доклада. Тем более, что он не только о компрессии, но и том, как можно упростить сопровождение сетевой подсистемы как backend'а, так и мобильного frontend'а.

Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Просмотры2.5K
Комментарии 4

Первый опыт с Raspberry Pi или микросервисы для дома

Блог компании МегаФонРазработка на Raspberry PiУмный домИнтернет вещейМикросервисы
Tutorial

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

Привет, Хабр! Тенденция приписывать любому техническому устройству эпитет «умный» достигла, кажется, своего апогея (по количеству употребления, разумеется). К тому же, большинство моих знакомых не из IT-сферы до сих пор наивно полагают, что каждый уважающий себя программист живет в самом «умном» доме во всём квартале, у которого вместо стен — серверные стенды исполинских размеров, а в свободное от работы время этот же человек-программист выгуливает «умную» собаку из Boston Dynamics. Дабы не отставать от этих современных стандартов, мы с товарищем решили собственноручно создать что-то «умное», но несложное, поскольку в школе схемотехника и конструирование роботов обошли нас стороной.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры12.5K
Комментарии 7

Как я сделал веб-фреймворк без MVC — Pipe Framework

Разработка веб-сайтовPythonAPI

Проработав фулстек разработчиком около 10 лет, я заметил одну странность.


Я ни разу не встретил не MVC веб-фреймворк. Да, периодически встречались вариации, однако общая структура всегда сохранялась:


  • Codeigniter — мой первый фреймворк, MVC
  • Kohana — MVC
  • Laravel — MVC
  • Django — создатели слегка подменили термины, назвав контроллер View, а View Template'ом, но суть не изменилась
  • Flask — микрофреймворк, по итогу все равно приходящий к MVC паттерну

Конечно, с моим мнением можно поспорить, можно продолжить перечислять, однако суть не в этом.

Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры6.5K
Комментарии 15

Порт GUI фреймворка с Python на Go. Анализ граблей и плюшек

PythonПрограммированиеАнализ и проектирование системИнтерфейсыGo

С Python мне пришлось работать от безнадеги — ML, нейросетки, скриптинг, то-сё сподручнее было именно на нем. Но время идет и тревога за скорость своего кода толкает к чему то быстрому и более надежному. 

Узнать почему и что вышло
Всего голосов 6: ↑3 и ↓3 0
Просмотры2.9K
Комментарии 9

Бесплатные онлайн-мероприятия по разработке (1 марта — 7 марта 2021)

ПрограммированиеУчебный процесс в ITКарьера в IT-индустрииКонференции

Нажимайте кнопку "Посмотреть", если хотите узнать какие онлайн-мероприятия по разработке планируются провести в ближайшее время.

Посмотреть
Всего голосов 2: ↑1 и ↓1 0
Просмотры998
Комментарии 0

Читаем EXPLAIN на максималках

Блог компании СитимобилMySQLСерверная оптимизацияАдминистрирование баз данных

Многим, кто работает с MySQL, известно, что команда EXPLAIN используется для оптимизации запросов, получения информации об использованных и возможных индексах. Большинство разработчиков и администраторов СУБД этой информацией и ограничивается. Я же предлагаю изучить команду EXPLAIN максимально подробно.

Читать далее
Всего голосов 21: ↑19 и ↓2 +17
Просмотры10.3K
Комментарии 14

Как мы в 2 раза увеличили скорость формирования ленты в UGC-приложении

Блог компании FunCorpРазработка под iOSРазработка мобильных приложенийРазработка под Android

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

Ежедневно наши пользователи загружают десятки тысяч единиц контента. На таком объёме данных приходится применять ухищрения, чтобы сохранить приемлемое время ответа. Под катом расскажу, что именно мы делали, а в конце статьи поделюсь кодом на GitHub для ознакомления.

Читать далее
Всего голосов 47: ↑46 и ↓1 +45
Просмотры2.3K
Комментарии 6

8 апреля — Backend stories meetup (онлайн)

Блог компании Альфа-БанкJavaАдминистрирование баз данныхКонференцииМикросервисы

Привет!

У нас через неделю очередной онлайн-митап, на этот раз для бекендеров. Будет 2 доклада от нас (Дмитрий @kruftik Гадеев и Роман Бледнов), а также доклад от Максима Степачева, разработчика GridGain.

Всё как всегда — онлайн, бесплатно, в 19.00 МСК, будет трансляция и запись, главное зарегистрируйтесь по ссылке заранее, чтобы мы смогли прислать вам все ссылки.

Программа под катом.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры2.8K
Комментарии 0

Стажировка в Авито глазами стажёра

Блог компании АвитоУчебный процесс в ITКарьера в IT-индустрииIT-компании

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

Но ведь самое интересное — это процесс! Поэтому я решил рассказать о своей стажировке в Авито: как она проходит, какие ожидания от стажёра, какие задачи нужно решать.

Читать
Всего голосов 11: ↑11 и ↓0 +11
Просмотры6.9K
Комментарии 8

22 апреля — новый QIWI Server Party

Блог компании QIWIKotlinКарьера в IT-индустрииКонференцииKubernetes
Привет! Мы продолжаем проводить QIWI Server Party.

На этот раз — 22 апреля (четверг). Обсудим сразу много полезных штук — продуктовую разработку и developer experience, спринты и инженерные практики, PlantUML (ага, да) и архитектуру платёжного шлюза, разберемся, как разрешать вечные конфликты между разработкой и бизнесом.


А ещё немного похоливарим — стоит ли просить кандидатов писать код на собеседовании? Затронем и эту тему в формате круглого стола. Кстати, аргументированные мнения с радостью почитаем и в комментах.

В общем, будет интересно. Как всегда, вход бесплатный, главное — зарегистрируйтесь заранее.

Программа под катом
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры516
Комментарии 0

Вы уверены, что вам нужен API?

Блог компании HaulmontJavaScriptПрограммированиеJava
Перевод


От переводчика: При разработке бэкэнда наличие API для фронт-энда стало практически повсеместным стандартом. Однако можем ли мы называть это "настоящим" API? Предлагаем вашему вниманию интересное пятничное чтение, которое, возможно, повлияет на API, которые мы все разрабатываем.


“Слабая связанность, сильное сцепление”, “сокрытие информации”. Известные принципы дизайна. Тем не менее, к ним очень часто не относятся серьезно при разработке архитектуры ПО, особенно когда это касается взаимодействия между клиентской и серверной частью (фронтом и бэком на жаргоне разработчиков).


Ценность API — в сокрытии информации


Предоставляя API, системы решают, какая информация должна быть доступна из внешнего мира, а какая будет держаться в секрете (“сокрытие информации”).


Почему это важно? Потому что чем объемнее API, тем дороже его поддерживать. Представьте себе крайний случай — открытие каждой детали реализации. Каждое изменение в системе может сломать код, который используют ваши клиенты. Именно по этой причине мы стремимся разрабатывать компактные API. Я писал статью (перевод на хабре) по этой теме в контексте описания шаблона “Регистрация событий”.


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

Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры4.4K
Комментарии 4

Как решить нестандартные задачи в Backend и не проиграть. Расскажут спикеры конференции DUMP

Блог компании IT-PeopleПрограммированиеКонференции

Обычно участники ждут от конференций полезных докладов с цифрами, фактами и только по делу. Мы учли это, взяли трендовые темы и пригласили опытных спикеров. Так получилась четкая и концентрированная программа секции Backend. Поговорим о технологиях и методах, которые только недавно появились. Разберемся в серверной разработке без привязки к языкам программирования. А также поищем оптимальное решение задач, с которыми сталкивается большинство разработчиков бэка. 

Ты только посмотри, какие спикеры нам в этом помогут!

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры1.4K
Комментарии 1