• Использование Identity Server 4 в Net Core 3.0

    • Tutorial

    Введение


    На одном из моих поддерживаемых проектов недавно встала задача проанализировать возможность миграции с .NET фреймворка 4.5 на .Net Core по случаю необходимости рефакторинга и разгребания большого количества накопившегося технического долга. Выбор пал на целевую платформу .NET Core 3.0, так как, судя по утверждению разработчиков от Microsoft, с появлением релиза версии 3.0, необходимые шаги при миграции legacy кода уменьшатся в несколько раз. Особенно нас в нем привлекли планы выхода EntityFramework 6.3 для .Net Core т.е. большую часть кода, основанную на EF 6.2, можно будет оставить «как есть» в мигрированном проекте на net core.


    С уровнем данных, вроде, стало понятно, однако, еще одной большой частью по переносу кода остался уровень безопасности, который, к сожалению, после беглых выводов аудита придется почти полностью выкинуть и переписать с нуля. Благо, на проекте уже использовалась часть ASP NET Identity, в виде хранения пользователей и других приделанных сбоку «велосипедов».


    Тут возникает логичный вопрос: если в security часть придется вносить много изменений, почему бы сразу же не внедрить подходы, рекомендуемые в виде промышленных стандартов, а именно: подвести приложение под использование Open Id connect и OAuth посредством фреймворка IdentityServer4.

    Читать дальше →
    • +19
    • 14,6k
    • 4
  • Разработка Chrome Extension вместе с Angular CLI

    Разработкой расширений к Chrome я занимаюсь давно и за это время я прошел целый путь от Greasemonkey юзер-скриптов до полноценного Angular-приложения в оболочке chrome-extension. Моя задача в том, что я патчу некоторые уже работающие сайты, чтобы изменить их функционал и автоматизировать некоторые процессы на этих сайтах. Иногда моё приложение разрастается до больших масштабов и поддерживать plain-js расширение становится сложно (в приложении много настроек, CRUD функционала и тд). И тут на помощь приходит Angular.

    В этой статье я расскажу вам как я подружил Chrome Extension и Angular CLI, и наладил процесс разработки, а также с какими трудностями я сталкивался и как их решал.
    Читать дальше →
  • Почему уходят разработчики: 8 причин



      Есть такая фраза «Как бы хорошо вы ни воспитывали ребенка, ему все равно будет что сказать своему психоаналитику». То же самое можно сказать и про работу с сотрудниками. Как бы хорошо у вас ни было работать в компании, вашим сотрудникам будет что сказать о причинах ухода на собеседовании — это нормально. Но риски всегда можно минимизировать, а жизнь сотрудника в рамках компании — увеличить.

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

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

      Неналаженные рабочие процессы


      Лидер нашей подборки. Встречается более чем в 60% причин при смене работы. Особенность в том, что это достаточно широкое понятие, которое включает в себя ошибки менеджмента, недостатки программного обеспечения, нехватку специалистов для реализации поставленных задач.
      Читать дальше →
    • Шпаргалки по безопасности: REST



        REST — чрезвычайно популярная архитектура веб-приложений. Для вызова функций на сервере используются обычные HTTP-запросы с задаваемыми параметрами (для структуризации параметров обычно используют JSON или XML), при этом, строгого стандарта для REST-архитектуры не существует, что добавляет ей гибкости (и, конечно, немного хаоса).
        Читать дальше →
        • +19
        • 14k
        • 9
      • Сжимаем APK, стараясь сохранить его работоспособность


          / PxHere / PD


          Оптимизация веса APK — это нетривиальная, но очень актуальная во времена Instant App, задача. Включение proguard избавит вас от ненужного кода, если ваши зависимости можно определить на этапе компиляции, но в APK есть ещё несколько видов файлов, которые можно исключить из сборки.


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

          Читать дальше →
          • +14
          • 4,2k
          • 1
        • Как я перестал беспокоиться и по-другому взглянул на системы учёта рабочего времени

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

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

            Один из заказчиков прислал мне собственный разбор-анализ приложений следящего софта CleverControl, Kickidler, StaffCop, Teramind, Time Doctor и «Стахановец». Они выбирали софт для контроля за сотрудниками для собственного офиса, поэтому, кроме прочего, в списке пунктов анализа есть «невидимость пользователям».



            В принципе, если не давать заказчику удалённо админского доступа к своему компу, то простым подрядчикам волноваться особо не о чем.
            Читать дальше →
          • Хранение, резервное копирование и каталогизация фотографий

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

              Домашний сервер, где происходит многое из описанного ниже:

              image

              Что надо сохранять?


              Самое важное и объёмное у меня — фотографии. Изредка видео, но очень изредка — оно слишком много места занимает и слишком много времени отнимает, потому я его не слишком люблю, снимаю только короткие ролики, которые валяются в той же куче, где и фотографии. На текущий момент фотоархив у меня занимает примерно 1,6 терабайта и растёт где-то на 200 гигабайт в год. Другие важные вещи гораздо менее объёмны и с ними меньше вопросов в плане хранения и бэкапа, десяток-другой гигабайт можно распихать по куче бесплатных или очень дешевых мест, начиная от ДВД и заканчивая флэшками и облаками.
              Читать дальше →
            • Быстрорастворимое проектирование

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

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

                Эта статья является расшифровкой моего доклада с конференции DotNext 2018 Moscow. Кроме текста, под катом есть видеозапись и ссылка на слайды.


                Читать дальше →
              • devleads — поговорим о профессиональном выгорании

                  Привет! В рамках проекта devleads мы с ребятами решили сделать подкаст для всех неравнодушных к менеджменту в IT-сфере — тимлидов, руководителей разработки и им подобных.

                  Кто мы:

                  • Я, Илья Царев, руководитель мобильной разработки Альфа-Банка.
                  • Илья Кузнецов, imJustik, iOS-тимлид Альфа-Банка.
                  • Никита Майданов, NikoGenn, руководитель мобильной разработки в Welps.


                  В этом выпуске мы затронем тему профессионального выгорания (в частности — выгорания тимлида) и связанных с ним мифов. А поможет нам в этом психолог Анастасия Калашникова.

                  Мы поговорим о профилактике выгорания, о том, почему нормально говорить коллегам «Нет», что делать, если шеф сидит на работе по 10 часов, а вам неудобно из-за этого уходить вовремя, и о многом другом.

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

                  — Расскажи, пожалуйста, что такое вообще «выгорание».
                  Читать дальше →
                • Создание продуктов, формирующих привычки



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

                    Немного о книге: написана легко и интересно, мало воды и много полезных примеров. В конце каждой главы даются практические советы (в статье они есть тоже).

                    Заголовок книги говорит уже сам за себя и подробного описания не требует, поэтому сразу переходим под кат!
                    Читать дальше →
                    • +16
                    • 8,7k
                    • 2
                  • Основы внедрения зависимостей

                    • Перевод

                    Основы внедрения зависимостей


                    В этой статье я расскажу об основах внедрения зависимостей (англ. Dependency Injection, DI) простым языком, а также расскажу о причинах использования этого подхода. Эта статья предназначена для тех, кто не знает, что такое внедрение зависимостей, или сомневается в необходимости использования этого приёма. Итак, начнём.

                    Читать дальше →
                  • TeamLead Conf: «MBA digital-у не товарищ»

                      Для мира digital характерен быстрый карьерный рост, который заставляет молодых управленцев переключаться с освоения фундаментальных идей того же MBA на тренинги, лекции и митапы, поскольку они позволяют еще больше ускорить процесс. Однако в том и в другом случае точного ответа на извечный вопрос «что делать» не получить. Причина заключается в сложности адаптации теории к своей личной практике. Но это не значит, что выхода нет.

                      Как появилась идея TeamLead Conf, при чем тут новый тип образования в digital и серендипность, рассказывает Александр Зиза, один из организаторов нашей конференции Aletheia Business и член программного комитета TeamLead Conf.


                      Читать дальше →
                    • Еще список проектов, на чем потренироваться

                      • Перевод
                      «Мастер совершает больше ошибок, чем новичок — попыток»

                      Прошлый список тренировочных проектов набрал 50к прочтений и 600 добавлений в избранное. Вот еще один список интересных проектов для практики, для тех кто хочет добавки.

                      1. Текстовый редактор


                      image

                      Цель текстового редактора — уменьшить усилия пользователей, пытающихся преобразовать их форматирование как валидную разметку HTML. Хороший текстовый редактор позволяет пользователям форматировать текст по-разному.

                      В какой-то момент каждый использовал текстовый редактор. Так почему бы не создать его самостоятельно?
                      Читать дальше →
                    • Как правильно: IT термины по-английски

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

                        image
                        Читать дальше →
                      • Рабочее место .NET разработчика или трудности выбора идеальной конфигурации ver.2.0

                          Привет, Хабр!

                          И снова мы приоткрываем дверь «за кулисы» проекта Retail Rocket. Запуская инженерный блог, мы обещали рассказывать о подходах, используемых в области анализа данных, и разработки технологий, которые позволяют создавать самую популярную на рынке ecommerce платформу персонализации.

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


                          Старое рабочее место .NET разработчика в офисе Retail Rocket

                          Все также половина нашей команды разрабатывает на .NET, но почти все разработчики сменили Visual Studio и Resharper на Rider 2018. Rider оказался заметно быстрее, чем Visual Studio с решарпером, и мы не устояли. Также из-за все большего количества проектов и файлов, нам пришлось разделить единый solution на несколько. Но нам все еще требуются быстрые машины, чтобы работа оставалась комфортной.

                          В начале этого года перед нами встала задача оборудовать еще несколько рабочих мест для разработчиков, мы решили поработать над существующей производительностью и подобрали новые комплектующие.
                          Читать дальше →
                        • Опыт использования WebRTC. Лекция Яндекса

                            Что лучше использовать при разработке софта — нативные или веб-технологии? Холивар по этому поводу закончится ещё не скоро, но мало кто станет спорить, что нативные функции полезно продублировать для использования в браузерах или WebView. И если когда-то приложения для звонков существовали исключительно отдельно от браузера, то теперь их легко реализовать и в вебе. Разработчик Григорий Кузнецов объяснил, как пользоваться технологией WebRTC для P2P-соединений.


                            — Как вы все знаете, в последнее время появляется довольно много приложений, в основу которых заложен прямой обмен данными между двумя браузерами, то есть P2P. Это всевозможные мессенджеры, чаты, звонилки, видеоконференции. Также это могут быть приложения, которые производят какие-то распределенные вычисления. Пределы фантазии никак не ограничиваются.
                            Читать дальше →
                          • Новые возможности Angular 6.1

                            • Перевод
                            25 июля вышел Angular 6.1. Данный минорный релиз фреймворка можно рассматривать как замену Angular 6.0, включающую в себя некоторые новшества и исправления ошибок. Этот материал, перевод заметки из блога Angular, посвящён основным новым возможностям Angular 6.1.


                            Читать дальше →
                            • +25
                            • 12,7k
                            • 2
                          • Антисобеседования

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


                            Собеседование — это экзамен


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

                            Начинается с простых вопросов на раскачку, примерно таких:
                            Читать дальше →
                          • Светодиодная лента в качестве освещения комнаты

                              Изначально для основного освещения одной из комнат, где шёл капитальный ремонт, планировалась обычная люстра. Но недавно мне на глаза попалась суперяркая светодиодная лента Ultra 5000 со светодиодами smd 5630 торговой марки Arlight. Решение было принято быстро, окончательно и бесповоротно — хочу такую ленту в качестве основного света в комнате.



                              О реализации светодиодного периметра освещения далее
                            • Веб компоненты. Часть 1: Пользовательские элементы

                              • Tutorial
                              Вступление

                              Данная статья — первая часть из небольшой серии статей о создании веб-компонентов нативными средствами HTML и JS


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


                              Для реализации такого подхода, в настоящее время разрабатываются три спецификации, о первой из которых, пойдет речь в этой статье. Итак, знакомимся — спецификация пользовательских элементов (custom elements), рабочий черновик которой оупбликован 13.10.2016 и последняя версия которого датирована 04.12.2017.


                              Пользовательский элемент является наиболее важной частью АПИ, входящих в пакет веб компонент, поскольку именно он предоставляет ключевые возможности, а именно:


                              • определение (собственно, создание) нового элемента
                              • упаковка нестандартного функционала и данных в один тег
                              Читать дальше →
                              • +16
                              • 17k
                              • 9