• Три ошибки iOS-разработчика, которые могут дорого стоить


       
      Создание iOS-приложения – непростая задача. Разработчикам хочется как можно быстрее завершить этот процесс и наконец запуститься в AppStore. Но на этом все не заканчивается: впереди у создателей долгие годы исправления ошибок, улучшения функций и совместной работы с другими разработчиками. Мы бы хотели немного облегчить им жизнь и для этого решили разобрать три вещи, которые нужно избегать при iOS-разработке (спасибо Envato Tuts+ за информацию).
      Читать дальше →
      • +10
      • 3,7k
      • 7
    • Обзор дефектов кода музыкального софта. Часть 3. Rosegarden


        Программы для работы с музыкой имеют маленький объём кода и, поначалу, я сомневался в возможности находить достаточное количество ошибок для статей. Тематику музыкального софта всё равно хотелось затронуть, поэтому я был готов объединять несколько проектов в статье. И вот я пишу уже третью статью, стараясь хоть как-то вместить интересные ошибки в одну статью. Третьим проектом для анализа выбран MIDI-секвенсор и нотный редактор — Rosegarden. Внимание! Прочтение статьи вызывает «Facepalm»!
        Читать дальше →
      • О книге Varghese «Web Development with Go»



          Ниже привел свою версию краткого изложения содержания данной книги.

          Оглавление
          Chapter 1 — Getting Started with Go
          Chapter 2 — Go Fundamentals
          Chapter 3 — User-Defined Types and Concurrency
          Chapter 4 — Getting Started with Web Development
          Chapter 5 — Working with Go Templates
          Chapter 6 — HTTP Middleware
          Chapter 7 — Authentication to Web Apps
          Chapter 8 — Persistence with MongoDB
          Chapter 9 — Building RESTful Services
          Chapter 10 — Testing Go Applications
          Chapter 11 — Building Go Web Applications on Google Cloud
          Читать дальше →
          • +15
          • 5,8k
          • 5
        • Профилирование кода на C/С++ в *nix-системах



            Александр Алексеев (Postgres Professional)


            Отличный обзорный доклад конференции HighLoad++ 2016 о том, как надо проводить профилирование программного кода. О типичных ошибках, происходящих при измерениях. И, конечно, об инструментах:

            — gettimeofday
            — strace, ltrace, truss
            — gprof
            — gdb / lldb
            — perf
            — pmcstat
            — SystemTap
            — DTrace
            — HeapTrack
            — BPF / bcc

            image

            В начале у меня будет не слишком техническая часть, о том, как не надо делать benchmark’и.

            Я наблюдаю, что люди часто делают типичные ошибки, когда делают benchmark’и. И вот первая из них…
            Читать дальше →
            • +19
            • 4,9k
            • 2
          • Как проверить, находится ли значение указателя в заданной области памяти

            • Перевод
            Пусть у нас есть регион/область памяти, заданный с помощью двух переменных, например:

            byte* regionStart;
            size_t regionSize;

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

            if (p >= regionStart && p < regionStart + regionSize)

            Но гарантирует ли стандарт ожидаемое поведение этого кода?
            Читать дальше →
          • OpenShift.IO: all-in-one платформа для разработки и CI/CD

              Тотальная контейнеризация и переосмысление роли контейнеров в процессе девелопмента и развития инфраструктуры не могла не сподвигнуть главных адептов open source мира на дальнейшие свершения. Red Hat уверенно гнет свою линию, и если несколько лет назад OpenShift был всего лишь PaaS-ом, то сегодня — это нечто большее. Сам по себе OpenShift понятен, но не прост. Сделать процесс управления контейнерами и развертывания приложений как можно более безболезненным и безопасным — главная задача, которую преследует OpenShift, и стоит отметить, ребята из Red Hat преуспели в этом. Но, сам по себе OpenShift никак не приближает к заветной мечте — предоставить девелоперу, ПМу, QA инженеру окружение, где будет все. Это такой себе идеальный мир без Jira или RedMine, без нескончаемых Jenkins слейвов, незаконченных обновлений стейджинга, различных IDE, которые по разному ведут себя с разными проектами, без ручных настроек проектов на GitHub. Этот идеальный мир — проект, который Red Hat анонсировали относительно недавно, а именно в мае 2017, и имя ему openshift.io.
              Читать дальше →
            • Универсальный адаптер

                Предисловие


                Данная статья является авторским переводом с английского собственной статьи под названием God Adapter. Вы также можете посмотреть видео выступления с конференции C++ Russia.


                1 Аннотация


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


                2 Введение


                ПРЕДУПРЕЖДЕНИЕ. Почти все методы, указанные в статье, содержат грязные хаки и ненормальное использование языка C++. Так что, если вы не толерантны к таким извращениям, пожалуйста, не читайте эту статью.


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


                Читать дальше →
              • Моноиды, полугруппы и все-все-все

                • Перевод

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


                Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


                Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

                Читать дальше →
              • Послевкусие от Kotlin, часть 3. Корутины — делим процессорное время



                  Java позволяет писать последовательный, параллельный и асинхронный код. Асинхронный — это когда регистрируется callback, который запустится после какого-либо события (например, файл прочитан). Это позволяет избежать блокировки потока, но ломает последовательность выполнения, так что на java пишут такой код скорее когда нет других вариантов. Kotlin даёт решение — корутины, с ними асинхронный код выглядит почти так же, как последовательный.

                  По корутинам мало статей. Конкретных примеров, показывающих их преимущества — ещё меньше.

                  Что нашёл:


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

                  Итак, посмотрим как ведут себя корутины под нагрузкой.
                  Читать дальше →
                • Математические основы биткойн-блокчейна

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

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

                    Поэтому в сегодняшней статье мы бы хотели поговорить о математических основах биткойн-блокчейна — эллиптических кривых, ECDSA и ключах.

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