• Чему я научился на своём горьком опыте (за 30 лет в разработке ПО)

    • Translation
    • Tutorial
    image

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

      Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше.



      В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. В качестве тренировочных мишеней выбрали независимые точки на двух платформах (.NET и php): premium.pgabank.com и php.testsparker.com.
      Читать дальше →
      • +35
      • 10.6k
      • 8
    • DevConf: переход Uber с PostgreSQL на MySQL

        18 мая 2018 года в Digital October состоится DevConf 2018. И мы решили пересказать некоторые интересные доклады с прошлогодней конференции. Там был доклад с несколько холиварным заголовком: "О чём молчит политрук: к дискуссии о переходе Uber с PostgreSQL на MySQL". В нем разработчик MySQL Алексей Копытов рассмотрел различия InnoDb и PostgreSQL на самом низком уровне, включая организацию данных, памяти и репликаций. Предлагаем вашему вниманию краткий пересказ доклада.


        История вопроса


        Uber перешел с MySQL на Postgres в 2013 году и причины, которые они перечисляют, были во-первых: PostGIS — это геоинформационное расширение для PostgreSQL и хайп. То есть, у PostgreSQL есть некий ореол серьезный, солидная СУБД, совершенный, без недостатков. По крайней мере, если сравнивать с MySQL. Они мало что знали о PostgreSQL, но повелись на весь этот хайп и перешли, а через 3 года пришлось переезжать обратно. И основные причины, если просуммировать их доклад — это плохие эксплуатационные характеристики при эксплуатации в production.
        Читать дальше →
      • Книга «Конкурентность и параллелизм на платформе .NET. Паттерны эффективного проектирования»

          image Привет, Хаброжители! Книга Рикардо Террелли (Riccardo Terrell) дает представление о рекомендуемых методах создания конкурентных и масштабируемых программ в .NET, освещая преимущества функциональной парадигмы и предоставляя соответствующие инструменты и принципы, позволяющие легко и правильно поддерживать конкурентность. В итоге, вооружившись новыми навыками, вы получите знания, необходимые для того, чтобы стать экспертом в предоставлении успешных высокопроизводительных решений.

          Если вы пишете многопоточный код на .NET, то эта книга может вам помочь. Если вы заинтересованы в использовании функциональной парадигмы для упрощения конкурентного программирования и максимального повышения производительности приложений, то данная книга станет для вас важным руководством. Она принесет пользу любым разработчикам на .NET, желающим писать конкурентные, реактивные и асинхронные приложения, которые масштабируются и автоматически адаптируются к имеющимся аппаратным ресурсам везде, где бы ни работали такие программы.
          Читать дальше →
          • +13
          • 4.5k
          • 1
        • Интеграция Kubernetes Dashboard и пользователей GitLab



            Kubernetes Dashboard — простой в работе инструмент для получения актуальных сведений о работающем кластере и минимального управления им. Начинаешь его ценить ещё больше, когда доступ к этим возможностям нужен не только администраторам/DevOps-инженерам, но и тем, кто меньше привык к консоли и/или не намерен разбираться со всеми тонкостями взаимодействия с kubectl и другими утилитами. Так случилось и у нас: разработчикам захотелось быстрого доступа к веб-интерфейсу Kubernetes, а поскольку мы используем GitLab, решение напросилось само собой.
            Читать дальше →
            • +27
            • 4.1k
            • 2
          • Kubernetes захватит мир. Когда и как?

              В преддверии DevOpsConf Виталий Хабаров взял интервью у Дмитрия Столярова (distol), технического директора и соучредителя компании «Флант». Виталий расспросил Дмитрия про то, чем занимается «Флант», про Kubernetes, развитие экосистемы, поддержку. Обсудили, зачем нужен Kubernetes и нужен ли вообще. А еще про микросервисы, Amazon AWS, подход «Мне повезет» в DevOps, будущее самого Kubernetes, почему, когда и как он захватит мир, перспективы DevOps и к чему готовиться инженерам в светлом и близком будущем с упрощением и нейросетями.

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



              Здесь и далее вопросы задает Виталий Хабаров инженер из Express42.
              Читать дальше →
            • Оптимизация программ под Garbage Collector

                Не так давно на Хабре появилась прекрасная статья Оптимизация сборки мусора в высоконагруженном .NET сервисе. Эта статья очень интересна тем, что авторы, вооружившись теорией сделали ранее невозможное: оптимизировали свое приложение, используя знания о работе GC. И если ранее мы не имели ни малейшего понятия, как этот самый GC работает, то теперь он нам представлен на блюдечке стараниями Конрада Кокоса в его книге Pro .NET Memory Management. Какие выводы почерпнул для себя я? Давайте составим список проблемных областей и подумаем, как их можно решить.


                На недавно прошедшем семинаре CLRium #5: Garbage Collector мы проговорили про GC весь день. Однако, один доклад я решил опубликовать с текстовой расшифровкой. Это доклад про выводы относительно оптимизации приложений.


                Читать дальше →
                • +40
                • 5.9k
                • 4
              • От обычного пользователя до полноправного администратора сервера (XSS, LFI, Web-Shell)



                  В начале года мне написал сотрудник одной фирмы. Как я понял, в компании произошел небольшой конфликт. Из-за которого существовал риск компроментации системы каким-то из сотрудников. Решение провести аудит системы определенно было правильное. Ведь результаты проверки приятно удивили меня, и «неприятно» удивили заказчика.
                  Читать дальше →
                  • +21
                  • 5.4k
                  • 4
                • .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

                    Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

                    Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
                    Читать дальше →
                    • +34
                    • 12.9k
                    • 5
                  • Continuous Monitoring – автоматизация проверок качества ПО в CI/CD Pipeline

                      Сейчас на хайпе тема DevOps. Конвейер непрерывной интеграции и доставки CI/CD внедряют все, кому не лень. Но большинство не всегда уделяют должное внимание обеспечению надежности работы информационных систем на различных этапах CI/CD Pipeline. В данной статье я хотел бы поговорить о своем опыте автоматизации проверок качества ПО и реализации возможных сценариев по его «самовосстановлению».

                      Источник
                      Читать дальше →
                    • .Net Community Райффайзенбанка приглашает на митап UPD Трансляция

                        .NET Community Райффайзенбанка приглашает на Meetup, который состоится в московском офисе в Нагатино 23 мая.

                        Сообщество разработчиков Райффайзенбанка активно проводит митапы, готовит вокркшопы, и делает еще много всего, для того, чтобы сотрудники могли делиться опытом и знаниями друг с другом. В программе события два доклада. Поговорим про DDD в микросервисах и узнаем как коллеги из Ozon реализовали сбор метрик в приложениях ASP.NET Core


                        Читать дальше →
                        • +25
                        • 2.4k
                        • 5
                      • Build2019, осмысляем увиденное

                          Буквально на прошлой неделе прошла самая большая конференция Microsoft для разработчиков Build2019. Поехав туда, я преследовал 2 цели.

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

                          Для себя я выделил несколько ключевых тем, по которым хочу поделиться мыслями:

                          • .Net Framework Roadmap
                          • Kubernetes
                          • ServerLess
                          • Edge Computing
                          • Big Data, Machine Learning, Artificial Intelligence
                          • Windows Presentation Platform
                          Читать дальше →
                          • +20
                          • 5.5k
                          • 1
                        • Netramesh – легковесное service mesh решение

                            В процессе перехода от монолитного приложения к микросервисной архитектуре мы сталкиваемся с новыми проблемами.


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



                            Я долго искал инструмент, который помог бы справиться с такими проблемами (писал об этом на Хабре: 1, 2), но в итоге сделал собственное опенсорсное решение. В статье я рассказываю о преимуществах подхода service mesh и делюсь новым инструментом для его реализации.

                            Читать дальше →
                            • +25
                            • 4.5k
                            • 1
                          • Network tools, или с чего начать пентестеру?

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


                              Читать дальше →
                              • +34
                              • 16.3k
                              • 6
                            • Четыре реальные истории работы с микросервисной архитектурой — отчёт с митапа Backend United 3: Холодец

                                На третьей встрече из серии Backend United мы с коллегами из Booking, Dodo Pizza и Авито обменялись опытом работы с микросервисной архитектурой. Говорили о распилах, монолитах и всём, что за этим стоит. Этот пост — отчёт о том, как прошёл митап. Внутри — видеозаписи, презентации спикеров, ссылки на фотоотчёт и отзывы участников встречи.


                                Читать дальше →
                                • +24
                                • 6.1k
                                • 3
                              • MVCC-3. Версии строк

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

                                  Заголовок


                                  Как мы уже говорили, каждая строка может одновременно присутствовать в базе данных в нескольких версиях. Одну версию от другой надо как-то отличать С этой целью каждая версия имеет две отметки, определяющие «время» действия данной версии (xmin и xmax). В кавычках — потому, что используется не время как таковое, а специальный увеличивающийся счетчик. И этот счетчик — номер транзакции.

                                  (Как обычно, на самом деле все сложнее: номер транзакций не может все время увеличиваться из-за ограниченной разрядности счетчика. Но эти детали мы рассмотрим подробно, когда дойдем до заморозки.)
                                  Читать дальше →
                                • OWASP Russia Meetup — запись выступлений

                                    image

                                    3 апреля при поддержке компании «Инфосистемы Джет» состоялась очередная встреча российского отделения сообщества OWASP, на которой собрались специалисты по информационной безопасности. Запись выступлений спикеров можно посмотреть в представленном ниже видеоролике.
                                    Читать дальше →
                                  • Оценка сроков на разработку и тестирование задачи (не нужна)

                                      Я в тестировании 12 лет, работал в Naumen и Яндексе. Сейчас руковожу отделом тестирования из 150 человек в Контуре и продолжаю работать тестировщиком в одной из команд.


                                      После полугодовых performance review менеджеры из разных команд рассказали, какие цели поставили своим тестировщикам. У каждого пятого была такая: «Научиться оценивать сроки на тестирование задач». Часто такой «оценки сроков» хотят не только от тестировщиков, но и от разработчиков.



                                      Оценка сроков в 95 % случаев. Спасибо, xkcd.


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

                                      Сейчас объясню, как это работает.

                                      Горькая правда
                                    • MVCC-1. Изоляция

                                        Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

                                        Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то».

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

                                        Ориентироваться я буду на тех, кто уже имеет определенный опыт использования PostgreSQL и хотя бы в общих чертах представляет себе, что к чему. Для совсем новичков текст будет тяжеловат. Например, я ни слова не скажу о том, как установить PostgreSQL и запустить psql.

                                        Вещи, о которых пойдет речь, не сильно меняются от версии к версии, но использовать я буду текущий, 11-й «ванильный» PostgreSQL.

                                        Первый цикл посвящен вопросам, связанным с изоляцией и многоверсионностью, и план его таков:

                                        1. Изоляция, как ее понимают стандарт и PostgreSQL (эта статья);
                                        2. Слои, файлы, страницы — что творится на физическом уровне;
                                        3. Версии строк, виртуальные и вложенные транзакции;
                                        4. Снимки данных и видимость версий строк, горизонт событий;
                                        5. Внутристраничная очистка и HOT-обновления;
                                        6. Обычная очистка (vacuum);
                                        7. Автоматическая очистка (autovacuum);
                                        8. Переполнение счетчика транзакций и заморозка.

                                        Ну, поехали.
                                        Читать дальше →
                                      • Почему бизнесу нужен хороший код

                                          В сфере разработки программного обеспечения, нередко встречаются тезисы наподобие «Nobody cares about your code» (перевод — «Твой код никого не интересует»), «Код всего лишь инструмент» и ситуации полного непонимания со стороны бизнеса, почему это мы должны выделять время и деньги на какой-то там «рефакторинг» кода который уже работает.

                                          Я хочу рассказать, к чему может привести «упор на характеристики», вместо заботы о качестве кода, и почему хороший код нужен не только программистам.
                                          Читать дальше →