• Конференция HOPE X. «Взлом лифта: от подвала до пентхауза». Часть 2. «Системы безопасности»

    • Перевод
    Начало здесь: Конференция HOPE X. «Взлом лифта: от подвала до пентхауза». Часть 1. «Лифтовое оборудованиe»

    Дивиант Оллам: можно сказать, что в многих отношениях лифтовая индустрия застряла в прошлом.



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

    Дивиант Оллам: то есть он считал, что трубчатые замки являются новейшей и величайшей разработкой в сфере безопасности.
    Читать дальше →
  • Человечный трекер. Как на самом деле работает система учёта Crossover и почему ее не стоит бояться

    Когда люди работают в офисе, контролировать их деятельность сравнительно просто. Вокруг работника масса глаз: мимо проходящее начальство, коллеги, да хоть вездесущие уборщицы, которые просят поднять ноги. Но все становится намного сложнее, если человек работает удаленно. При использовании формата сдельной оплаты «результат-деньги» контролировать нужно лишь сроки. Он отлично подходит для небольших команд до 5-10 человек, но задача экспоненциально усложняется, когда число исполнителей растет и заказчик покупает человекочасы, а не какой-то определенный объем работ. В последнем случае, чаще всего, для контроля используется трекер рабочей активности, в нашем случае — WorkSmart.

    Трекеры бывают разными. Некоторые представляют собой одну лишь кнопку «вкл/выкл», которая запускает таймер. Другие — неотрывно следят за каждым шагом и движением, вызывая чувство дискомфорта:



    Это самое чувство дискомфорта усугубляется, если человек конкретно не понимает и не видит, что именно, когда и как фиксирует трекер, но не в случае WorkSmart, о чем мы расскажем далее.
    Читать дальше →
  • Что каждый программист на C должен знать об Undefined Behavior. Часть 3/3

    • Перевод
    Часть 1
    Часть 2
    Часть 3

    В первой части цикла мы рассмотрели неопределённое поведение в С и показали некоторые случаи, которые позволяют сделать С более быстрым, чем «безопасные» языки. В части 2 мы рассмотрели некоторые неожиданные баги, которые могут противоречить представлениям многих программистов об языке С. В этой части, мы рассмотрим проблемы, которые компилятор Clang решает, чтобы достичь высокого быстродействия, и устранить некоторые сюрпризы.
    image
    Читать дальше →
    • +19
    • 7,1k
    • 7
  • Что каждый программист на C должен знать об Undefined Behavior. Часть 2/3

    • Перевод
    Часть 1
    Часть 2
    Часть 3

    В первой части нашего цикла мы обсудили, что такое неопределённое поведение, и как оно позволяет компиляторам C и C++ генерировать более высокопроизводительные приложения, чем «безопасные» языки. В этом посте мы обсудим, чем на самом деле является «небезопасный» C, объяснив некоторые совершенно неожиданные эффекты, вызываемые неопределённым поведением. В третьей части, мы обсудим, как «дружественные» компиляторы могут смягчить некоторые из таких эффектов, даже если они не обязаны это делать.

    Мне нравится называть это «Почему неопределённое поведение часто пугает и ужасает программистов на C».

    image
    Читать дальше →
  • Что каждый программист на C должен знать об Undefined Behavior. Часть 1/3

    • Перевод
    Часть 1
    Часть 2
    Часть 3

    Люди иногда спрашивают, почему код, скомпиливанный в LLVM иногда генерирует сигналы SIGTRAP, когда оптимизация была включена. Покопавшись, они обнаруживают, что Clang сгенерировал инструкцию «ud2» (подразумевается код X86) — то же, что генерируется __builtin_trap(). В этой статье рассматривается несколько вопросов, касающихся неопределённого поведения кода на C и того, как LLVM его обрабатывает.

    image

    В этой статье (первой из трёх) мы попытаемся объяснить некоторые из этих вопросов, чтобы вы могли лучше понять связанные с ними компромиссы и сложности, и возможно, изучить немного больше тёмные стороны С. Мы выясним, что C не является «высокоуровневым ассемблером», как многие опытные программисты на C (особенно те, кто сфокусирован на низком уровне) предпочитают думать, и что C++ и Objective-C напрямую унаследовали множество таких проблем.
    Читать дальше →
  • История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

      Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

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

      Читать дальше →
    • Бестиарий С++. Справочник по загадочным персонажам

      • Перевод


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

      Читать дальше →
    • Начальник, что мне делать для того, чтобы получать больше денег

        Как часто вы слышали от своих подчиненных такой вопрос? Почему именно этот вопрос о повышении верный? Давайте разбираться вместе.

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

          Привет.


          Я впервые пишу в поток об управлении и найме персонала. Речь пойдет об одном из способов классифицировать ваших будущих или действующих программистов. Мой основной тезис: все разработчики, грубо говоря, делятся на 4 больших типажа и каждому из этих типажей есть своя область применения. Попытка направить неправильный типаж на решение неподходящих для него задач ведет к провалу (неэффективная работа, или сотрудник покидает команду). Хотите знать почему так — добро пожаловать под кат. Приготовьтесь, текста много.

          Читать дальше →
        • BIM: как мы строим строителей на стройке

            По нашей примерной оценке, основанной на 20-летней практике, на земляных работах можно «потерять» до 50-60 % бюджета. На железобетоне и отделке точно 30 %. На ошибках перезаказа при коллизиях стоимость инженерки увеличивается примерно на 10 %. Именно по этой простой причине, когда «злой заказчик» внедряет BIM-модель здания, со всех сторон начинаются дикие крики и стоны.

            BIM-контроль сейчас будет на всех госзаказах по новому нормативу, поэтому крики и стоны будут особенно эпичны.


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

            Что такое BIM-модель? Это трёхмерная модель здания, где все системы состыкованы и увязаны в одном едином плане. Поставили розетку в комнате — в общей смете тут же появилась новая розетка и соответствующий метраж кабеля. Погрешность такой модели по материалам — 2 %. На бумаге обычно берут запас 15 %, и излишки этого запаса отчаянно «теряются».

            Давайте лучше покажу примеры, чем буду рассказывать.
            Читать дальше →