• Взгляд биолога на корни нашего старения

    Здравствуйте!

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

    Дисклеймер: если вам кажется, что текст направлен определённому человеку, а не аудитории в целом, то так оно и есть, но менять я ничего не буду.

    Эта статья написана полностью из головы, что называется на одном дыхании (правда в три захода), потому в ней минимальное количество ссылок и картинок – прошу понять и простить, либо написать в комментарии, возможно я что-то исправлю.
    Читать дальше →
  • Как я год не работал в Сбербанке

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

    Про эту компанию знают все. Кто-то в ней даже работал или продолжает работать. Я думаю, сложно найти в РФ, да и на территории СНГ, человека который не слышал о холдинге Сбербанка. Именно холдинг, так как очень много компаний которые обслуживают Сбербанк и контролируются им же. Так вот я поработал в двух таких компаниях за один год — это Сбербанк-Технологии (далее СБТ) и Сбербанк.
    Читать дальше →
  • 256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

    • Tutorial
    Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

    Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

    Итак, сегодня я покажу, как отрисовывать подобные картинки:


    Читать дальше →
  • Ад своими руками

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

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

      Но компанию, ее культуру это внедрение превратило в ад — бюрократический, системный и бессмысленный.

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

      Обо всем по порядку.
      Читать дальше →
    • Если бы плотников нанимали так же, как программистов

      • Перевод

      Интервьюер: Итак, вы считаете себя плотником?
      Плотник: Всё верно. Это именно то, чем я занимаюсь.

      Интервьюер: Как долго вы занимаетесь этим?
      Плотник: Десять лет.

      Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
      Плотник: Конечно, было бы неплохо.

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

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



        В Роскосмосе распространено мнение, что коммерческие успехи компании SpaceX объясняются исключительно господдержкой и искусственно заниженной ценой на ракеты — демпингом. Компания Илона Маска оставила Роскосмос практически полностью без коммерческих заказов на тяжелые ракеты, поэтому оправдание приходится искать в происках Пентагона, Госдепа или ЦРУ. Пора отделить факты от домыслов и узнать в чем секрет коммерческого успеха SpaceX.
        Читать дальше →
      • Работаем в консоли быстро и эффективно

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

        Читать дальше →
      • Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

        • Перевод

        Предисловие



        Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
        Читать дальше →
        • +88
        • 35,5k
        • 7
      • Делить на ноль — это норма. Часть 1

        Часть 1. Вобще-то уже все поделили до нас!
        Часть 2. Истина где-то рядом

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


        Читать дальше →
      • Привет из мезозоя

          image

          Парадный портрет автора, заодно иллюстрирующий идею современной веб-разработки


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


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


          Читать дальше →
        • «Й» вам не «и» краткое! О важности нормализации Unicode

            й

            За последние полгода интернет просто наводнила «буква» «й». Я встречал ее на новостных сайтах, в мессенджерах, на хабрахабре и geektimes. «О чем вообще речь?» — спросите вы — «Я вижу обычную букву й!». Вам повезло. Я вижу ее так:
            image
            image
            image
            image
            image
            Если вы из тех счастливчиков, у кого буква «й» выглядит так же, как и «настоящая» «й», вот вам фокус: скопируйте ее (букву «й») в блокнот, поставьте курсор в конец буквы и нажмите backspace. Магия, отвал башки просто!
            Как же так получается?

            Графемы, глифы, code points, компоновка и байты

            Очень краткое введение:
            Графема — то, что мы привыкли называть буквой в смысле единицы текста. Глиф является единицей графики, и может графически представлять саму графему или же ее часть (например, различные диакритические знаки: ударения, умляуты, надстрочное двоеточие у буквы ё и т.д.).
            Code Point — то, как записывается текст в представлении Unicode. Одна графема может записываться разными code points.
            Code Points кодируются различным байтовым представлением в зависимости от стандарта: UTF-8, UTF-16, UTF-32, BE, LE…
            Языки программирования, как правило, работают с code points; для нас, людей, привычно мыслить глифами.

            Давайте же наконец разберемся с нашей буквой й. Что же в ней такого особенного?
            Эта буква представляет из себя одну графему («и» краткое), но записана она двумя code points:
            U+000438 CYRILLIC SMALL LETTER I
            U+000306 COMBINING BREVE

            Если вы проделали фокус с нажатием backspace, вы как раз и стерли COMBINING BREVE, или, говоря полиграфическим языком, значок краткости над гласной.

            Обычная буква «и» краткое, которую мы все с вами привыкли набирать клавиатурой, представляет из себя композитный символ, который записывается одним code point:
            U+000439 CYRILLIC SMALL LETTER SHORT I
            Читать дальше →
          • Обезвреживаем бомбу с Radare2


              Доброго времени суток, %username%! Сегодня мы отправимся изучать бесчисленные возможности фреймворка для реверсера — radare2. В виде подопытного я взял первую попавшую бомбу, она оказалась с сайта Университета Карнеги Меллон.
              Читать дальше →
            • Антисобеседования

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


              Собеседование — это экзамен


              Ведущий — строгий учитель, а кандидат — студент. Классический сеттинг. Обычно проходит так. Спросили откуда ты, что ты, и потом пошло техническое собеседование.

              Начинается с простых вопросов на раскачку, примерно таких:
              Читать дальше →
            • REST — это новый SOAP

              • Перевод

              Несколько лет назад я разрабатывал для одного большого телекома новую информационную систему. Нам приходилось взаимодействовать со всё нарастающим количеством веб-сервисов, открываемых более старыми системами или бизнес-партнёрами. Как вы понимаете, мы получили добрую порцию SOAP-ада. Заумные WSDL, несовместимые библиотеки, странные баги… Где только возможно мы старались продвинуть — и использовать — простые RPC-протоколы: XMLRPC или JSONRPC.

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

                Много копий сломано из-за гендерного неравенства в IT: мужчин-программистов гораздо больше, чем женщин. Этот факт подтверждают и стереотипные восприятия, и многочисленные исследования, и статистика Хабра.

                Зарплата женщин-программистов, в среднем, меньше мужской. Почему так происходит? Стандартный ответ — из-за гендерной дискриминации. Мол, программирование считается «неженской» профессией, поэтому уже на этапе собеседования к женщинам относятся предвзято. Считается, что на рабочем месте к ним тоже относятся иначе: требования меньше, зарплата ниже.

                Компания Interviewing.io провела интересный эксперимент с маскировкой пола на собеседовании — и проверила, как это повлияет на результаты.

                Фотография слева: Ведущий программист Маргарет Гамильтон рядом со стопкой распечаток кода управляющего компьютера космического аппарата «Аполлон»
                Читать дальше →
              • Ретроспектива: Heroes of Might & Magic III

                  image

                  Heroes of Might & Magic III через полтора года исполняется 20 лет. Игра, покорившая не одно поколение своим волшебством, не потеряла своей привлекательности и сегодня — многие называют её «новыми шахматами», утверждая, что превзойти «магическую» формулу третьих «Героев» с тех пор так никому и не удалось.

                  Сегодня вашему вниманию предлагается рассказ о том, как появились на свет HoMM III и её наследники. Учитывая, что знания, проливающие свет на события тех дней, всегда могут кануть в Лету, и их не спасет даже The Internet Archive (что уже произошло с некоторыми интервью) — а сама серия, по слухам, волей Ubisoft отправлена в глубокую «заморозку» из-за неважных финансовых показателей последней части франшизы — лучше сделать это сегодня, чем завтра.

                  Мой рассказ является реконструкцией событий, происходивших два десятилетия назад, и в его основе лежат десятки источников — поэтому он может содержать некоторые неточности; к счастью, история пока сохранила для нас достаточно сведений про то, как New World Computing и 3DO смогли произвести на свет игру, удавшуюся настолько, что мы годы спустя продолжаем в неё играть. Узнаете вы и про то, что произошло после выпуска третьих «Героев».
                  Когда всё закончится, ты забудешь о том, как тяжело тебе было, и захочешь повторить это снова.
                  Джон Ван Канегем, «Напутствие тем, кто переживает кранч»

                  Дисклеймер: каждый раз, когда речь заходит про «Героев», обязательно находится человек, который сразу же идёт их устанавливать. Вот почему лучшего дня для публикации этого поста, чем пятница, попросту не существует — чтобы к утру понедельника абсолютно все успели прийти в себя.
                  Читать дальше →
                • Самый большой репозиторий Git на свете

                  • Перевод
                  Прошло уже три месяца с тех пор, как я опубликовал свою первую статью о наших попытках масштабировать Git для очень крупных проектов при помощи инициативы, которую мы назвали «Git Virtual File System». Напомню: GVFS в сочетании с некоторыми правками в Git позволяет работать с ОЧЕНЬ большими репозиториями, виртуализируя как папку .git, так и рабочую директорию. Вместо того, чтобы скачивать репозиторий целиком и проверять все файлы, инструмент динамично скачивает только те фрагменты, которые вам нужны, выявляя их на основании того, над чем вы работали до этого момента.

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

                  Читать дальше →
                • Сможет ли Минобороны заглушить Iridium, GlobalStar и OneWeb?

                    Появление неконтролируемого властями «всеобщего интернета» неприемлемо как для российского государства, так и для отечественных операторов связи.

                    Глобальный спутниковый интернет


                    В 2016 году частная аэрокосмическая компания SрaceX запросила в правительстве США разрешение на развертывание сети спутниковой связи для предоставления услуг высокоскоростного доступа в интернет в глобальном масштабе в диапазонах Ku (10,7−18 ГГц) и Ka (26,5−40 ГГц). Кроме SpaceX, заявки на вывод собственных аппаратов связи подали OneWeb, Telesat, O3b Networks (O3b — среднеорбитальная европейская система, курируемая корпорацией SES) и Theia Holdings. Их проекты нацелены на то, чтобы с помощью технологий мобильной спутниковой связи обеспечить пользователей широкополосным доступом в интернет.

                    Читать дальше →
                  • Краткая сводка о заблокированных адресах

                      Здравствуйте, друзья! По просьбе lostpassword решил написать краткую сводку о состоянии блокировки на текущий день. В данной статье используются данные полученные из неофициальной выгрузки РКН. В данной сводке не будут представлены отдельные IP-адреса различных проектов, а будут рассмотрены только префиксы размером от /24.

                      Читать дальше →
                    • Дискредитация специалистов или современные собеседования


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

                        Но вот незадача — стажеры такие животные, которые не обладают навыками. И ранее ничего полезного они не делали. Как же не ошибиться в выборе? Что ж, это довольно просто. Если нельзя оценить по результату, то следует искать предпосылки к достижению этого результата…

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