• Почему мы выбрали Electron

      Предыстория


      Мы небольшая команда разработчиков, занимаемся созданием нового инструмента для работы с API Testmace. По факту это продвинутый rest клиент с возможностью создавать автоматизированные тесты API с помощью графического интерфейса, оснащенный такими приятными штуками как продвинутый механизм переменных, автокомплит во всех полях ввода и тотальная подсветка синтаксиса.

      Хочу вам рассказать о том, как мы пришли к Electron как технологии для написания нашего приложения.
      Читать дальше →
    • Реализация горячей перезагрузки С++ кода в Linux и macOS: копаем глубже


        *Ссылка на библиотеку и демо видео в конце статьи. Для понимания того, что происходит, и кто все эти люди, рекомендую прочитать предыдущую статью.


        В прошлой статье мы ознакомились с подходом, позволяющим осуществлять "горячую" перезагрузку c++ кода. "Код" в данном случае — это функции, данные и их согласованная работа друг с другом. С функциями особых проблем нет, перенаправляем поток выполнения из старой функции в новую, и все работает. Проблема возникает с данными (статическими и глобальными переменными), а именно со стратегией их синхронизации в старом и новом коде. В первой реализации эта стратегия была очень топорной: просто копируем значения всех статических переменных из старого кода в новый, чтобы новый код, ссылаясь на новые переменные, работал со значениями из старого кода. Конечно это некорректно, и сегодня мы попытаемся исправить этот изъян, попутно решив ряд небольших, но интересных задач.


        В статье опущены детали, касающиеся механической работы, например чтение символов и релокаций из elf и mach-o файлов. Упор делается на тонких моментах, с которыми я столкнулся в процессе реализации, и которые могут быть полезны кому-то, кто, как и я недавно, ищет ответы.

        Читать дальше →
        • +40
        • 6,2k
        • 8
      • Где найти настройки DNS в MacOS

          Привет!

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

          Вот что удалось выяснить.
          Читать дальше →
        • Реализация горячей перезагрузки С++ кода в Linux

          image


          * Ссылка на библиотеку в конце статьи. В самой статье изложены механизмы, реализованные в библиотеке, со средней детализацией. Реализация для macOS еще не закончена, но она мало чем отличается от реализации для Linux. Здесь в основном рассматривается реализация для Linux.


          Гуляя по гитхабу одним субботним днем, я наткнулся на библиотеку, реализующую обновление c++ кода налету для windows. Сам я слез с windows несколько лет назад, ни капли не пожалел, и сейчас все программирование происходит либо на Linux (дома), либо на macOS (на работе). Немного погуглив, я обнаружил, что подход из библиотеки выше достаточно популярен, и msvc использует ту же технику для функции "Edit and continue" в Visual Studio. Проблема лишь в том, что я не нашел ни одной реализации под не-windows (плохо искал?). На вопрос автору библиотеки выше, будет ли он делать порт под другие платформы, ответ был отрицательный.


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


          "Как так?" — подумал я, и принялся раскуривать фимиам.

          Читать дальше →
        • Digest MBLT DEV :: выпуск №200



            Digest MBLT DEV — еженедельная подборка новостей из мира iOS-разработки. Каждую пятницу доставляем прямо в почту полезные материалы с комментариями от топовых iOS-разработчиков. Вот уже 200 выпусков = 200 недель.

            Первый номер дайджеста выпущен командой e-Legion в 2015 году. С тех пор появились новые рубрики и авторы, да и количество подписчиков растёт каждую неделю. Если вы ещё не читаете наш iOS-дайджест, то мы искренне не понимаем, почему. Пора это исправить.
            Читать дальше →
          • Electron и упадок нативных приложений

            • Перевод

            SwiftOnSecurity пишет на тему недавнего перехода на Chromium в качестве встроенного в Windows движка рендеринга:


            Это не только про Chrome, это также про ElectronJS. Microsoft думает, что EdgeHTML не может достичь полного паритета по функциональности с Chromium, чтобы заменить его в приложениях Electron. Дублирование движка Electron в каждой программе становится значительной проблемой производительности. Вместо этого они хотят иметь один на всех экземпляр Electron вместе со своими дополнениями.

            Electron это рак, убивающий и macOS, и Windows по мере распространения. Microsoft должна предложить ему замену с нативными оптимизациями, чтобы улучшить производительность и использование ресурсов.

            Я не совсем разделяю их пессимизм по поводу нативных приложений, но Electron – это, без сомнений, бич платформы. Я думаю, что Mac окажет большее сопротивление, чем Windows, потому что платформа Mac привлекает большее число неравнодушных людей. Но тем не менее, я беспокоюсь.

            Читать дальше →
          • Как мы перевели 10 миллионов строк кода C++ на стандарт C++14 (а потом и на C++17)

              Некоторое время назад (осенью 2016), при разработке очередной версии технологической платформы 1С:Предприятие внутри команды разработки встал вопрос о поддержке нового стандарта C++14 в нашем коде. Переход на новый стандарт, как мы предполагали, позволил бы нам писать многие вещи элегантней, проще и надежней, упрощал поддержку и сопровождение кода. И в переводе вроде бы нет ничего экстраординарного, если бы не масштабы кодовой базы и специфические особенности нашего кода.

              Для тех кто не знает, 1С:Предприятие – это среда для быстрой разработки кросс-платформенных бизнес-приложений и runtime для их выполнения в разных ОС и СУБД. В общих чертах в состав продукта входят:


              Мы стараемся по максимуму писать один код для разных ОС — кодовая база сервера общая на 99%, клиента — примерно на 95%. Технологическая платформа 1С:Предприятие преимущественно написана на C++ и ниже приведены приблизительные характеристики кода:

              • 10 миллионов строк С++ кода,
              • 14 тысяч файлов,
              • 60 тысяч классов,
              • полмиллиона методов.

              И все это хозяйство надо было перевести на C++14. О том, как мы это делали и с чем столкнулись в процессе, мы сегодня и расскажем.

              image
              Читать дальше →
            • Подключение файла подкачки (SWAP) в MAC OS X при использовании внешнего SSD-диска в качестве системного

              Доброго времени суток, дорогие товарищи!

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

              Как-то раз, мне пришлось призадуматься над одной небольшой задачкой. Есть компьютер iMac, есть успешно установленная OS X Sierra на внешний, подключенный через USB SSD-диск, и есть странное, удивительное, и при этом — полное, отсутствие файла подкачки.
              Читать дальше →
            • Трюки при линковке и загрузке файлов Mach-O

              • Перевод

              Представляю вашему вниманию перевод моей статьи из блога Проекта Darling. Маленькая справка по используемым понятиям: Darwin – операционная система с открытым исходным кодом, лежащая в основе macOS, iOS и других ОС от Apple; Mach-O – бинарный формат исполняемых файлов и библиотек, использующийся в Darwin; dyld – динамический загрузчик, использующийся в Darwin для загрузки файлов Mach-O; dylib – динамически загружаемая библиотека (обычно имеет расширение .dylib).


              Картинка для привлечения внимания


              Цель Проекта Darling – сделать возможным запуск macOS-приложений под Linux, и умение загружать бинарные файлы в формате Mach-O – один из ключевых шагов к достижению этой цели.


              Исходно, Darling был выстроен вокруг собственной реализации загрузчика Mach-O и идеи транслирования вызовов между высокоуровневым Darwin API и его Linux-аналогами. С тех пор наш фокус сместился на запуск кода во всё более и более изолированном Darwin-контейнере. С тех пор как мы перешли на использование Mach-O для внутренних компонентов Darling, у нас появилась возможность использовать исходный dyld от Apple, а также собирать многие другие компоненты Darwin с открытым исходным кодом. Нам всё ещё нужен простой загрузчик Mach-O, чтобы загружать сам dyld.

              Читать дальше →
              • +14
              • 2,2k
              • 6
            • Что почитать по Swift на русском языке?

                Среди новичков бытует мнение, что популярность языка программирования можно определить по количеству выпущенных книг. В качестве примера можно упомянуть Java или Python – и отчасти это будет правдой. Но есть языки, которые в бумажных книгах не особо-то и нуждаются. Просто из-за своей молодости и того факта, что официальный tutorial отвечает абсолютно на все вопросы начинающего программиста.

                image

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

                Поэтому автор блога GeekBrains Илья Бубнов вдоль и поперёк изучил российские издательства, чтобы отыскать 5 самых популярных книг по Swift, выпущенных в олдскульном формате.
                Читать дальше →
                • +24
                • 12,2k
                • 2

              Самое читаемое