• Восемь возможностей C++17, которые должен применять каждый разработчик

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


      Вам также может быть интересна статья Десять возможностей C++11, которые должен использовать каждый C++ разработчик
      Читать дальше →
    • Книга «ASP.NET Core. Разработка приложений»

        image Современные разработчики занимаются построением кроссплатформенных приложений, их сопровождением и развертыванием. Чтобы облегчить им тяжкий труд, был создан новый фреймворк компании Microsoft — ASP.NET Core. Теперь в вашем распоряжении множество разнообразных библиотек с открытым кодом, более того, сам фреймворк является продуктом с открытым кодом.

        Как же освоить все новые возможности, предоставляемые ASP.NET Core? Авторы объясняют решение конкретных задач на примере вымышленной компании Alpine Ski House. Каждую главу предваряет краткий рассказ о проблеме, с которой сталкивается команда разработчиков, и о том, как они эту проблему преодолевают. Вам предстоит познакомиться с архитектурой приложений, средствами развертывания и проектирования приложений для работы в облаке и многим другим.
        Читать дальше →
      • Чтение на выходных: 17 независимых блогов по математике, алгоритмам и языкам программирования

          Сегодня мы подготовили очередную [наш IaaS-дайджест и материалы по структурированию кода] подборку полезных источников. На этот раз мы решили изучить тематическую ветку на Hacker News и рассказали о блогах, которые могут хорошо дополнить чтение «Хабра».

          Авторы данных блогов готовят как материалы для новичков с туториалами и разъяснениями основ, так и более углубленные статьи и исследования. Всех заинтересовавшихся приглашаем под кат.

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

          Читать дальше →
          • +17
          • 41,3k
          • 1
        • Пишем свою книгу заново

            Прошло 4 года с публикации «Пишем свою книгу» и вышло второе издание книги про Boost и C++. Настало время выпустить второе издание публикации!

            В данной статье я поделюсь информацией о том, что осталось за бортом предыдущей статьи:



            • Можно ли прожить на гонорары от книги
            • Как заинтересовать людей в вашей книге
            • Как сделать примеры нагляднее и интерактивнее
            • Чем отличается выпуск второго издания, от написания первого
            • Пара простых советов для продвижения
            • Перевод книги на другие языки
            Читать дальше →
          • Бестиарий С++. Справочник по загадочным персонажам

            • Перевод


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

            Читать дальше →
          • Jaeger Opentracing и Microservices в реальном проекте на PHP и Golang

              Всем привет, меня зовут Юрий Буйлов, я руковожу разработкой в CarPrice. Коротко расскажу как и почему мы пришли к микросервисам на PHP и Golang. Что используем, как инструментируем и мониторим наши приложения в production. Далее расскажу о распределенном трейсинге, который обеспечивает нам прозрачность работы сервисов.


              Читать дальше →
              • +19
              • 5,5k
              • 6
            • Blockchain глазами разработчика


                Зачем этот рассказ? Когда я изучал blockchain по открытым источникам, например по Википедии, информация казалась отрывочной и бессвязной. Прошло время, прежде чем она сложилась в целостную картину. Кажется, я знаю, в каком порядке и какими словами описать введение в blockchain, чтобы любой профессиональный разработчик смог понять общую картину за 1—1,5 часа. В тексте будут некоторые упрощения. Понятно, что в любой теме есть много деталей, куда можно при желании погрузиться.

                Читать дальше →
              • Наш облачный JS теперь ES2017, и это сокращает код в разы


                  Вопреки распространенному мнению, облако Voximplant не использует Node.js, чтобы выполнять JavaScript код клиентов параллельно с голосовыми и видеозвонками. Каждый наш сервер одновременно управляет сотнями звонков: переключение голосовых и видеопотоков между звонками, запись, распознавание голоса, синтез, HTTP-запросы к внешним серверам, — вся вот эта история. А Node.js создана, чтобы работать в одиночку. Несколько сотен изолированных инстансов — это не про нее. Передерутся за память, ресурсы и все закончится очень печально. Поэтому у нас сильно изолированная и ограниченная по ресурсам песочница, которая не дает клиентскому JavaScript-коду в одной маленькой сессии нарушать работу целых серверов. Asterisk у нас тоже не используется по похожим причинам.

                  До недавнего времени мы поддерживали синтаксис ES5. Типовой сценарий работы с коммуникациями — это несколько сотен, максимум, тысяч строк кода. Сложные штуки клиенты все равно выносят на собственный backend, а если нужен современный синтаксис, всегда можно воспользоваться транспайлером и автоматически отгрузить собранный JavaScript с помощью Continuous Integration.

                  Но 2017 год обязывает, да и Web-редактор и отладчик клиенты любят и используют для быстрого создания нужных решений. Поэтому мы запилили поддержку ES2017 (не с нуля, естественно, а готовыми компонентами) и переделали обучающие материалы на современный лад. Под катом я хочу показать, насколько короче и понятнее становится код, если пользоваться современной нотацией JavaScript. Разница впечатляет.
                  Читать дальше →
                  • +23
                  • 8,8k
                  • 7
                • Смена пола и расы на селфи с помощью нейросетей


                    Привет, Хабр! Сегодня я хочу рассказать вам, как можно изменить свое лицо на фото, используя довольно сложный пайплайн из нескольких генеративных нейросетей и не только. Модные недавно приложения по превращению себя в даму или дедушку работают проще, потому что нейросети медленные, да и качество, которое можно получить классическими методами компьютерного зрения, и так хорошее. Тем не менее, предложенный способ мне кажется очень перспективным. Под катом будет мало кода, зато много картинок, ссылок и личного опыта работы с GAN'ами.

                    Читать дальше →
                  • Распределенные структуры данных [часть 1, обзорная]

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


                      Современные же приложения стремятся использовать все имеющиеся ресурсы, в частности, все доступные CPU.


                      К сожалению, использовать стандартные структуры данных при многопоточной обработке не представляется возможным, поэтому в Java 5 появились потокобезопасные структуры данных,
                      т.е. функционирующие исправно, при использовании из нескольких потоков одновременно, и расположились они в пакете java.util.concurrent.


                      Про Vector...

                      На самом деле, потокобезопасные, но неэффективные, структуры данных, как, например, Vector и Hashtable, появились еще в Java 1.0.
                      В настоящий момент, они не рекомендуются к использованию.


                      Однако, не взирая на всю технологическую мощь, заложенную в пакет java.util.concurrent, обработка информации потокобезопасными коллекциями возможна лишь в рамках одного компьютера, а это порождает проблему масштабируемости.


                      А что если нужно, в реальном времени, обрабатывать информацию о 100 миллионах клиентов,
                      когда датасет занимает 100Тб, а каждую секунду нужно совершить 100+ тысяч операций?
                      Вряд ли это возможно, даже на самом крутом современном железе, а если и возможно — только представьте себе его стоимость!


                      Намного дешевле добиться такой же вычислительной мощности объединив множество обычных компьютеров в кластер.



                      Остается лишь вопрос межкомпьютерного взаимодействия привычными средствами, схожими по API с потокобезопасными коллекциями из пакета java.util.concurrent и дающими те же гарантии, но не на одном компьютере, а на всем кластере.


                      Читать дальше →