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

Пользователь

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

Что такое bash / shell

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

И то, и другое — интерпретаторы командной строки в линуксе. То есть если вы откроете командную строку и введете любую команду, да хоть:

Читать далее
Всего голосов 44: ↑15 и ↓29 -14
Комментарии 31

7 способов использовать groupingBy в Stream API

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

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


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

Односторонние и двусторонние отношения в Hibernate

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

Всем нам хорошо известен ответ на вопрос, какими могут быть отношения между сущностями в Hibernate и JPA. Вариантов всего четыре

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 9

Регистрация и авторизация с помощью Spring Security на примере простого приложения

Время на прочтение 21 мин
Количество просмотров 287K
Добрый день!

В этой статье будет рассмотрено создание простого веб приложения с использованием Spring Boot и Spring Security. В приложении будет реализована регистрация новых пользователей и авторизация, ограничение доступа к страницам сайта в зависимости от роли пользователя.
Главная цель статьи показать как можно ограничить доступ к различным страницам сайта для пользователей с разными ролями.

Что будет представлять из себя приложение


Сайт со следующими страницам:

  • страницы доступные всем пользователям: главная, регистрации и логина;
  • страница доступная для зарегистрированных пользователей: новости;
  • страница доступная для администратора.

Что будем использовать


  • JDK 8+;
  • Intellij Idea;
  • Spring (Spring Boot, Spring MVC, Spring Security);
  • Hibernate;
  • JSP;
  • PostgreSQL.
Читать дальше →
Всего голосов 18: ↑13 и ↓5 +8
Комментарии 10

Пуши Авито: как сделать самый навязчивый формат не таким раздражающим

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

Привет! Меня зовут Юля Трусова, я старший UX-редактор в Авито. В этой статье я расскажу о мобильных пушах: какого тона мы придерживаемся, как работаем с техническими ограничениями и о чём думаем, чтобы текст звучал складно.

Статья будет полезна редакторам, копирайтерам, маркетологам и CRM-специалистам. Некоторые советы применимы и к другим каналам коммуникации, например письмам.

Осторожно — внутри много картинок с примерами.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 18

Как подготовить бэклог продукта с большим количеством зависимостей и не потратить время впустую

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

Привет, меня зовут Макс, я продакт команды Self-Service в мобильном приложении Тинькофф. У моей команды три основные цели по созданию сервиса: contactless, proactive и self-service.   

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

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

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

Представим, что вы всё записываете в заметки или блокнотик. У здорового продакта возникает логичный вопрос: какие задачи решать в первую очередь? 

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

Раньше я использовал классическую ICE-методику, но в Тинькофф пришлось ее адаптировать. Сейчас расскажу как.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 1

Что означает информация в заметке Коммерсанта «Британия морозит «Байкал»

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

Газета "Коммерсантъ" опубликовала важный материал "Британия морозит «Байкал». Российские процессоры лишаются доступа к технологиям". К сожалению, авторы заметки никогда не видели то, о чем они написали, то бишь semiconductor IP, и не понимают его природы. Зато его видел я. Поэтому я решил написать к их заметке своего рода толкование:

1. Что именно британские компании ARM и Imagination продают российским лицензиатам, таким как Байкал? (Спойлер: не патенты, хотя патенты в картину входят)

2. Чем Apple отличается от Байкала в лицензировании semiconductor IP?

3. Сколько стоят лицензии на ядра и сколько стоит архитектурная лицензия?

4. Как компания-разработчик semiconductor IP может обнаружить, что произведенный кем-то чип использует ее ядро?

5. Были ли прецеденты подобных высоких отношений с китайскими компаниями?

6. Почему в статье упоминается МЦСТ (Эльбрус)? Они же вроде сами спроектировали CPU собственной архитектуры? (Спойлер: а GPU?)

7. Могут ли британские патенты стать проблемой для разработчиков российcких ядер с архитектурой RISC-V?

8. Что логично ожидать от российских полупроводниковых стратегов?

Читать далее
Всего голосов 247: ↑239 и ↓8 +231
Комментарии 84

Странности Generic типов Java

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

Я множество раз слышал о том, что дизайн Generic типов в Java является неудачным. По большей части претензии сводятся к отсутствию поддержки примитивных типов (которую планируют добавить) и к стиранию типов, а конкретнее — невозможности получить фактический тип параметра в рантайме. Лично я не считаю стирание типов проблемой, как и дизайн Generic-ов плохим. Но есть моменты, которые меня порядком раздражают, но при этом не так часто упоминаются.


1


Например, мы знаем, что метод Class#getAnnotation параметризован и имеет следующую сигнатуру: public <A extends Annotation> A getAnnotation(Class<A> annotationClass). Значит, можно писать вот такой код:


Deprecated d = Object.class.getAnnotation(Deprecated.class);

Тут я решаю вынести Object.class в отдельную переменную и код перестаёт компилироваться:


Class clazz = Object.class;
// incompatible types:
// java.lang.annotation.Annotation cannot be converted to java.lang.Deprecated
Deprecated d = clazz.getAnnotation(Deprecated.class);

Где я ошибся?

Читать дальше →
Всего голосов 33: ↑27 и ↓6 +21
Комментарии 24

Подробно о PECS

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

Всем привет. Сегодня я хочу поговорить о принципе PECS. Понимаю, что сейчас гуру программирования и многоопытные сеньоры в очередной раз впечатали ладонь в лицо, ибо «Java Generics появились в JDK 1.5, которая вышла 30 сентября 2004 года…». Но если есть те, для кого принцип PECS остаётся туманным и непонятным, а упорное гугленье только сгущает «туман», добро пожаловать под кат, будем вместе разбираться до полного духовного просветления. Хочу сразу предупредить, что в данной заметке не рассматривается, что такое дженерики и что такое wildcard. Если вы не знакомы с данными понятиями, то перед чтением необходимо с ними разобраться.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 13

Как посчитать всё на свете одним SQL-запросом. Оконные функции PostgreSQL

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

Я с удивлением обнаружил, что многие разработчики, даже давно использующие postgresql, не понимают оконные функции, считая их какой-то особой магией для избранных. Ну или в лучшем случае «копипастят» со StackOverflow выражения типа «row_number() OVER ()», не вдаваясь в детали. А ведь оконные функции — полезнейший функционал PostgreSQL.
Попробую по-простому объяснить, как можно их использовать.


Читать дальше →
Всего голосов 75: ↑73 и ↓2 +71
Комментарии 54

Понимание джойнов сломано. Это точно не пересечение кругов, честно

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

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


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


Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

Читать дальше →
Всего голосов 179: ↑138 и ↓41 +97
Комментарии 225

Советская «Семерка», современная космонавтика и Илон Маск

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


Этот текст написан инженером-ракетостроителем, который не один десяток лет посвятил работе на «РКЦ Прогресс». Это предприятие производит и модернизирует одну из самых известных и востребованных в мире ракет – «Союз». Эта ракета исторически развивается от легендарной Р-7, сконструированной под руководством Сергея Королёва, и запустившей первый спутник, первого человека, первые автоматические межпланетные станции… Ниже будет много букв об уникальности конструкции ракеты, о секретах её успеха, об особенностях технологии производства, и о том, чему у советских инженеров научился Илон Маск.
Читать дальше →
Всего голосов 156: ↑151 и ↓5 +146
Комментарии 99

Как я полюбила подготовку типовых документов

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

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

Почему квалифицированные специалисты до сих пор занимаются рутиной, а бизнес всё это оплачивает?  Какие технологии помогут экономить время и деньги? На этот вопрос я как заместитель руководителя отдела внедрения департамента систем управления документами ЛАНИТ постоянно ищу ответ. К поиску решения я привлекла одного из основателей профессиональной платформы подготовки документов Doczilla Pro Кирилла Бурякова. Постараюсь изложить наши выводы в этой статье. 

Читать далее
Всего голосов 56: ↑47 и ↓9 +38
Комментарии 7

Как работает цикл заказа такси в Яндекс Go. История вопроса

Время на прочтение 9 мин
Количество просмотров 31K
Меня зовут Илья, я отвечаю за инфраструктуру пользовательских продуктов в Яндекс Go. Мы строим цикл заказа такси — процессы, происходящие под капотом после того, как пользователь нажимает «Заказать». Поиск машины, назначение водителя, изменение адреса, оплата поездки — всё это части цикла. Ещё мы делаем инфраструктуру создания циклов, которая используется в Еде, Лавке, Доставке и других направлениях внутри Яндекса.

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

Как всё начиналось


В 2011 году мы запустили сервис заказа такси. В первой реализации в бэкенде был endpoint /create-order, внутри которого мы создавали заказ, искали ближайшую машину и отправляли заказ водителю (кстати, если вы не знали о том, как устроен поиск водителя, то обязательно почитайте).


Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 39

Яндекс.Практикум: самый подробный отзыв

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

Хочу поделиться личным опытом (об/м)учения в Яндекс.Практикуме на курсе "Веб-разработчик", и почему, вернувшись на год назад в прошлое, я бы никогда не стал там учиться даже за бесплатно.

Для начала расскажу о причинах, по которым я решил войти в IT (спойлер: и в итоге всё-таки вполз), и почему я выбрал именно Яндекс.Практикум.

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

1) прибыльную (на комбинате я получал 24 тысячи в месяц);

2) перспективную (в IT действует меритократия, а в строительной сфере без связей, которых у меня нет, далеко на уедешь и высоко не взлетишь);

3) интересную и интеллектуальную. 

У меня есть старший брат – веб-разработчик с 10-летним стажем, за плечами которого опыт разработки в Яндексе, TopTal и нынешняя работа senior-программистом в Amazon. Я специально так подробно рассказываю о своём брате, т. к. далее эта информация понадобится для понимания контекста.

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

Почему я выбрал именно веб? Потому что по личному опыту брата и его друзей-айтишников порог входа в веб ниже, чем в других IT-профессиях. И мне, как визуалу, важно видеть результаты своего труда (чертежи, запроектированные и построенные здания). И как раз фронтенд-разработка предоставляет эту возможность.

Читать далее
Всего голосов 225: ↑209 и ↓16 +193
Комментарии 473

Интеграции бояться — в аналитики не идти

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

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

Совсем недавно рассказывала об этом на AnalystDays’13. Интерес аудитории к моему докладу сподвиг обобщить мои мысли в виде статьи.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 3

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

Время на прочтение 11 мин
Количество просмотров 16K
Он стратег, он даже тактик, словом — спец,
Сила, воля, плюс характер — молодец!

В. Высоцкий


Никогда не писал статей для Хабра, даже комментариев. И на тематические порталы не выкладывал ничего лет 5.

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


Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Комментарии 20

Руководство разработкой: beginner's survival guide

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

Привет! Меня зовут Наташа, я руковожу разработкой бэкенда страницы yandex.ru. Сейчас у нас в команде больше двадцати человек, которые входят в отдельные группы разработки. Три года назад я впервые стала «тимлидом» маленькой группы из четырёх человек, накопив к этому времени десяток лет опыта в разработке и эксплуатации. Я не стесняюсь сказать, что переход от разработчика к тимлиду дался мне тяжело — и это нормально!

Мне нравится помогать людям в их жизненном пути и ко мне часто приходят начинающие руководители для получения опыта. Работа с людьми показала, что все проходят одинаковый путь с одинаковыми проблемами. Эта статья — мой способ наглядно показать начинающим руководителям происходящее с ними и дать очень простые инструменты, облегчающие первый переход от исполнителя к руководителю.
Читать дальше →
Всего голосов 59: ↑55 и ↓4 +51
Комментарии 24

Какая документация нужна вашему проекту и кто должен её писать

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

Привет! Меня зовут Катя, я руководитель команды технических писателей в Ozon.

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

Разбираемся в вопросе
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 3

Автодока здоровой инфраструктуры: сравниваем 3 инструмента

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

Эпопея с автодокументацией началась у нас неспроста: 300 разработчиков, 500 репозиториев и 400 сервисов — все живет на 600 хостах и использует 600 баз данных. Изменения происходят настолько часто, что ручной поиск данных в наших масштабах — та еще морока. При этом раньше никакого общего хранилища с актуальной информацией о владельцах проектов, о конфигурациях хостов и связанных с проектами сервисах не было. Расскажу, как мы вконец устали от квестов, перешли на сторону автодоки и почему выбрали в помощь Insight.

Меня зовут Юля, я руковожу командой SRE. Помимо стабильности сервисов, моя команда занимается поддержкой инструмента, который нам позволяет за этими сервисами следить. Это отдельное приложение, генерирующее документацию по всей нашей инфраструктуре.

В 2018 году, когда я только пришла в компанию в роли девопса, мне дали для погружения в процессы простую задачу: допилить скрипт локального разворачивания проектов, чтобы он корректно работал под macOS. То есть скрипт уже был, он успешно работал для Linux-окружения. Его нужно было просто адаптировать, подправить пару регулярок, настроить сеть, дописать инструкцию — совсем не сложно. Я довольно быстро сделала правку в самом инструменте, и казалось, что нет никаких проблем. Но дальше 15-минутная на первый взгляд задача растянулась на 3 месяца.

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

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность