• Удачная модель ветвления для Git

    • Перевод
    Перевод статьи Vincent Driessen: A successful Git branching model

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



    В качестве инструмента управления версиями всего исходного кода она использует Git.

    Читать дальше →
  • Древности: компьютерная реклама 1997 года

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


      Следствием недавнего изучения минидисков стала сотня носителей с тяжелой металлической музыкой, кем-то когда-то собранная и оформленная по высшему разряду. Это живые примеры использования того или иного устройства или формата. Чтобы воссоздать в голове обстановку двадцатилетней давности или раньше, я еще использую архивы старых СМИ, и про это регулярно пишу у себя в канале. Но то зарубежные издания, а сегодня я покажу нашу, отечественную рекламу из журналов и буклетов 1997 года, с выставки Комтек.
      Читать дальше →
    • Каких мы ищем разработчиков для разработки платформы 1С: Предприятие

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

        Если коротко ищем тех, кто:

        • любит (или готов полюбить) делать тиражируемые фреймворки
        • хочет делать продукт, которым пользуются миллионы людей

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

        • Какие вам нужны разработчики?
        • Что спрашиваете на интервью?
        • Какие вопросы предпочитаете на интервью – теоретические или практические?
        • Должен ли программист писать тесты?
        • Задаете ли вопросы не из профессиональной сферы деятельности?
        • Задаете ли логические задачи на сообразительность, не связанные непосредственно с программированием? Типа задачи про шарик с гелием в машине:


        В каких областях у нас могут работать программисты в разработке платформы? Ну например:
        Читать дальше →
      • Иди-ка ты на !@# со своей «токсичностью»

          IT — не детский садик. Это место для взрослых, руководствующихся логикой и здравым смыслом. Их не надо опекать, не надо следить за словами, не надо переживать, что у них сформируются комплексы. Если человек некомпетентен, надо дать ему об этом явно понять, а не беречь его нежные чувства в ущерб всем остальным.

          Так какого же чёрта моё прекрасное IT превращается в детский сад «Весёлый Програм-Мишка»?
          Читать дальше →
        • Блеск и нищета 1С для интернет-магазина. Блеск золота для франчайзи и нищета функционала для пользователя

          TL;DR или ВКРАТЦЕ: Статья рассказывает о том, что ожидать от использования системы 1С для интернет-магазина. Все знакомы с картинкой-мемом «ожидание-реальность». Автор работает в давно функционирующем интернет-магазине без единой товаро-учетной системы (эксель, макросы и прочий хардкор). Автор поэтому имеет представление нормальной схемы работы интернет-торговли и хорошо сформированное «ожидание» от внедрения нового ПО, а в статье рассказывается как неприглядна «реальность» при внедрении 1С даже для небольшого интернет-магазина.

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

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

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


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

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

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

            image
            Читать дальше →
          • Единое ядро Windows

            • Перевод
            Windows – одна из наиболее многогранных и гибких ОС, она работает на совершенно разных архитектурах и доступна в разных вариантах. На сегодня она поддерживает архитектуры x86, x64, ARM и ARM64. Windows в своё время поддерживала Itanium, PowerPC, DEC Alpha и MIPS. Кроме того, Windows поддерживает целый набор SKU, работающих в различных условиях; от дата-центров, ноутбуков, Xbox и телефонов до встраиваемых версий для интернета вещей, например, в банкоматах.

            Самый удивительный аспект состоит в том, что ядро Windows практически не меняется в зависимости от всех этих архитектур и SKU. Ядро динамически масштабируется в зависимости от архитектуры и процессора, на котором оно работает, так, чтобы пользоваться всеми возможностями оборудования. Конечно, в ядре присутствует определённое количество кода, связанного с конкретной архитектурой, однако его там минимальное количество, что позволяет Windows запускаться на разнообразных архитектурах.

            В этой статье я расскажу об эволюции ключевых частей ядра Windows, которые позволяют ему прозрачно масштабироваться от чипа NVidia Tegra низкого потребления, работающего на Surface RT 2012 года, до гигантских монстров, работающих в дата-центрах Azure.
            Читать дальше →
          • Интегрированный стенд разработки КРОК для 1С и не только

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

              Итак знакомьтесь, интегрированный стенд разработки!

              Читать дальше →
            • Интеграция HTML движка в нативное Windows приложение – выбор и архитектура

                Как мы перевели работу с HTML в 1С:Предприятии с Internet Explorer на WebKit

                Возможность отображать HTML в формах 1С появилась в платформе 1С:Предприятие в 2003 г. версии 8.0. Для работы с HTML в платформе использовался движок браузера Internet Explorer (1С:Предприятие на тот момент работало только под Windows). Движок браузера использовался платформой для утилитарных целей. Например, писать с нуля полноценный элемент для редактирования текста а-ля Word – с возможностью различных цветовых и шрифтовых решений, вставки картинок и т.д. – весьма непростая задача. А если задействовать для этих целей HTML и использовать в качестве средства отображения движок интернет-браузера, то задача сильно упрощается. Также при помощи движка был реализован ряд других механизмов (например, отображение справочной информации) и элементов (например, Планировщик).

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

                Время шло, платформа стала поддерживать сначала Linux, а потом и macOS. Для работы с HTML в этих ОС Internet Explorer не подходил по понятным причинам; в Linux нами был задействован WebKitGTK+, а в macOs — библиотека на основе Cocoa. Таким образом, единство кодовой базы для разных ОС (которое мы стараемся поддерживать для клиентского кода на уровне 95%) в этой области было нарушено. Ну и движок IE к этому времени стал источником ряда проблем.
                image
                Читать дальше →
              • Как украсть деньги с бесконтактной карты и Apple Pay

                  Как украсть деньги с бесконтактной карты из кармана? Насколько безопасен PayPass и Apple Pay?

                  В статье разбираются популярные мифы и сценарии мошенничества с бесконтактными системами оплаты на примере настоящего POS-терминала, карт PayPass/payWave и телефонов с функцией Google Pay/Apple Pay.

                  Рассматриваемые темы:

                  • Можно ли НА САМОМ ДЕЛЕ украсть деньги, прислонившись POS-терминалом к карману? — мы попытаемся полностью воспроизвести этот сценарий мошенничества от начала до конца, с использованием настоящего POS-терминала и платежных карт в реальных условиях.
                  • В чем разница между физическими и виртуальными картами Apple Pay? — как происходит связывание физической карты и токена Apple Pay, и почему Apple Pay во много раз безопаснее обычной карты.
                  • Используем аппаратный NFC-сниффер (ISO 14443A) — воспользуемся устройством HydraNFC для перехвата данных между POS-терминалом и картой. Рассмотрим, какие конфиденциальные данные можно извлечь из перехваченного трафика.
                  • Разбираем протокол EMV — какими данными обменивается карта с POS-терминалом, используемый формат запросов, механизмы защиты от мошенничества и replay-атак.
                  • Исследуем операции без карты (CNP, MO/TO) — в каких случаях на самом деле(!) можно украсть деньги с карты, имея только реквизиты, считанные бесконтактно, а в каких нельзя.

                  Внимание!

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

                  Материалы в статье представлены исключительно в ознакомительных целях. Все сцены демонстрации мошенничества инсценированы и выполнены с согласия участвующих в них лиц. Все списанные деньги с карт были возвращены их владельцам. Воровство денег с карт является уголовным преступлением и преследуется по закону.
                  Читать дальше →
                • Администрирование 1С для самых маленьких. Часть первая — разделяй и властвуй

                  • Tutorial

                  Дисклеймер


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


                  Предисловие


                  Сначала я просто хотел написать небольшую статью о том, как мы разносили базы по службам, но в ходе углубления в этот процесс мы добавляли всякие разные штуки (мониторинг служб, потом мониторинг пользователей внутри 1С, потом прикрутили заббикс, и, наконец, пришли к CI/CD на базе 1С). В итоге я понимаю что пихать это в одну статью будет слишком — решил разделить на несколько. Ну а название навеяно циклом статей "сети для самых маленьких", которые принесли мне много приятных минут и к которым я отсылаю всех, кто "хочет изучить сети". Итак, мы приступаем!

                  Читать дальше →
                • Как мы в «1С: Предприятии» решаем системы алгебраических уравнений

                    Работа с числовыми матрицами в целом и решение систем линейных алгебраических уравнений в частности — классическая математическая и алгоритмическая задача, широко используемая при моделировании и расчёте огромного класса бизнес-процессов (например, при расчёте себестоимости). При создании и эксплуатации конфигураций «1С:Предприятия» многие разработчики сталкивались с необходимостью вручную реализовывать алгоритмы расчёта СЛАУ, а после — с проблемой длительного ожидания решения.

                    «1С:Предприятие» 8.3.14 будет содержать функциональность, позволяющую значительно сократить время решения систем линейных уравнений за счёт использования алгоритма, основанного на теории графов.

                    Он оптимизирован для использования на данных, имеющих разреженную структуру (то есть содержащие не более 10% ненулевых коэффициентов в уравнениях) и в среднем и в лучшем случаях демонстрирует асимптотику Θ(n⋅log(n)⋅log(n)), где n — количество переменных, а в худшем (при заполненности системы ~100%) его асимптотика сопоставима с классическими алгоритмами ( Θ(n3)). При этом на системах, имеющих ~105 неизвестных, алгоритм показывает ускорение в сотни раз по сравнению с реализованными в специализированных библиотеках линейной алгебры (например, superlu или lapack).

                    image
                    Важно: статья и описанный алгоритм требуют понимания линейной алгебры и теории графов на уровне первого курса университета.
                    Читать дальше →
                  • Вы не умеете работать с транзакциями


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

                      Читать дальше →
                    • Основы экономики полупроводникового производства


                        Как-то давным-давно – в начале века — я покупал обычный мобильный телефон, самый дешевый, стоил он что-то около 15 или 20 евро. И к нему чехол. Который тоже стоил около 15-20 евро. Данный факт меня поразил – телефон, в котором стоит полупроводниковый чип, являющийся вершиной развития человеческих технологий, для производства которого требуются оборудование на миллиарды долларов, высококвалифицированные специалисты, обучавшиеся в университетах и защитившие диссертации, результаты научных исследований тысяч ученых – и все это стоит столько же, сколько обычный чехол, технология производства которого за последние несколько тысяч лет сильно не поменялась. Как так? Давайте попробуем понять.
                        Читать дальше →
                      • Личная система управления финансами

                        image

                        Финансовая грамотность — это одна из тех областей знаний, которые не преподают в школах и ВУЗах. Учиться ей приходится лично каждому, шагая по полю граблей с черенками разной длины. Одни прилетают в лоб, другие дотягиваются только до пояса.

                        Я хочу поделиться своим опытом построения личной финансовой системы, которая позволяет управляться с денежными потоками, безудержно гуляющими в обоих направлениях по нашим карманам и банковским счетам. Надеюсь мой опыт будет кому-то полезен, и позволит избежать встречи с парой вышеозначенных граблей.
                        Читать дальше →
                      • По каким правилам летит самолёт в России

                          Чаще всего самолёты летают не абы как, а по определённым, уже созданным маршрутам.


                          Например, наводятся на радиовышки. Это ориентиры в пространстве. Когда диспетчер говорит воздушному судну, как лететь, он называет определённую вышку, радиостанцию. Там у него поворотная точка. Пилоту так и говорят: «От этой теперь лети к следующей». В итоге самолёт летит ломаной загогулиной — от одного поворотного пункта к другому.

                          Сделано это для того, чтобы не было сомнений в координатах на разных самолётах с разными приборами.

                          Современное самолётное оборудование позволяет вместо этой сложной ломаной линии лететь напрямую. То есть диспетчер говорит: «Лети сюда, поворотная точка такая». Не у всех есть настолько современное навигационное оборудование, поэтому радиовышки будут ещё долго использоваться.

                          Но давайте разбираться дальше, как вообще устроено воздушное пространство, кому и куда можно.
                          Читать дальше →
                        • Как мы решаем «Что делать?»

                            В статье ответим только на один вопрос – как мы решаем, что и когда реализовывать в платформе «1С:Предприятие».

                            Именно в такой формулировке нам его задают редко, но часто и даже очень часто появляются конкретные вопросы – «почему вы сделали это?», «почему вы НЕ сделали это?», «почему бы вам не сделать это?», «когда вы сделаете это?», «когда же вы, наконец, сделаете это?!!!», …

                            Попробуем описать то, как мы решаем, что когда делать.


                            Читать дальше →
                          • Побег из гнезда успеха или Проблемы больших компаний

                              Привет, Хабр! Говорят, чистосердечное признание смягчает наказание. Каюсь — большая часть статьи будет откровенным копипастом чужого текста. Прошу модераторов не судить строго и считать огромной цитатой. Потому что лучше не скажешь. Потому что я, вы, ты, читатель, — все мы там были или можем быть. В больших межгалактических корпорациях компаниях, которые заманивают офисами, всевозможными плюшками из рога изобилия, самокатами в коридорах и прочими релакс-капсулами, но редко говорят, что будет взамен. А взамен будут бесконечные совещания, легаси, инерция и… мать его, одинокое ощущение себя маленьким винтиком какой-то адовой машины. Начну со своей истории — в одном абзаце. А потом — просто откровенная бомба — текст, каждое слово которого крепко отозвалось во мне, вроде суровом дядьке.


                              Читать дальше →
                            • Байки поддержки первой линии: отличная работа, если у вас крепкие нервы



                                Мы поддерживаем офис одной сервисной компании и хотели бы немного рассказать про нашу работу. Для поднятия настроения, так сказать. В общем-то, наш день выглядит одинаково: приходим, логинимся в cisco agent, садимся за телефон и начинаем слушать хотелки юзеров. Что-то разруливаем сами, что-то передаём второй линии рядом. Несмотря на то, что офис заказчика состоит преимущественно из инженеров, тикеты не очень сильно отличаются от тикетов нефтегазовой компании или госкомпании. Конечно, без того, чтобы проехать 200 километров, чтобы включить принтер в розетку (реальный случай), но всё же.

                                Хотя, например, эта разница очень сильно проявилась, когда безопасники в очередной раз дали задачу пройтись по кабинетам и посмотреть, кто хранит записанные пароли на рабочих местах. Поначалу без сюрпризов — где-то каждый тридцатый записывает и клеит на монитор. Проблема была в том, что если в бухгалтерии это верные пароли («А откуда шпион узнает, что это пароль, а?»), то ушлые инженеры специально записывают какие-то случайные комбинации символов. Видимо, прикалываются над безопасниками.
                                Читать дальше →
                              • Чем «interface» отличается от «междумордия»: наш подход к документированию и локализации программных продуктов


                                  Однажды в технической документации к Parallels Desktop нам потребовалось использовать фразу «жёсткий диск виртуальной машины». На английском языке это звучит: virtual machine hard disk. Наш прошлый технический писатель ошибся всего в одной букве в одном слове, но смысл получился диаметрально противоположный. Заметили мы это не сразу и в какой-то момент наша техническая документация, локализованная на многих языках мира, содержала нетленное: virtual machine hard dick. Был грандиозный скандал, после которого мы ужесточили проверку текстов. Под катом — рассказ нашего технического писателя Андрея Старовойтова о том, где обитают технические писатели, на что их ловить и как Parallels документирует и локализует свои продукты.
                                  Читать дальше →