• Go и кэши CPU

    • Перевод

    Источник: unsplash.com

    По словам Джеки Стюарта, трехкратного чемпиона мира по гонкам Формулы-1, понимание автомобиля помогло ему стать лучшим пилотом: «Гонщику не обязательно быть инженером, но нужен интерес к механике».

    Мартин Томпсон (создатель LMAX Disruptor) применил эту концепцию к программированию. Если в двух словах, то понимание базового оборудования улучшит ваши навыки, когда речь заходит о разработке алгоритмов, структур данных и так далее.

    Команда Mail.ru Cloud Solutions перевела статью, автор которой углубился в устройство процессора и рассмотрел, как понимание некоторых концепций CPU помогает принимать оптимальные решения.
    Читать дальше →
  • Семейный бюджет в Telegram

      Статья посвящена обзору коммерческого продукта — Telegram-бота @budgetmoneybot для ведения семейного бюджета.

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

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



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

      В начале 2019 года мы снова решили вести бюджет, но возвращаться к заполнению ods-таблицы мы не хотели. Мы попробовали некоторые мобильные сервисы и пришли к выводу, что нам они не подходят.

      Тогда я подумал, что для ведения бюджета было бы удобно использовать Telegram-бота, который принимал бы сообщения с числами или с математическими выражениями и распределял бы суммы по заранее настроенным категориям. Кроме того, хотелось иметь возможность направлять такому боту фотографии QR-кодов на чеках, чтобы бот сам распределял позиции в чеках по категориям. А для ведения семейного бюджета хорошо было бы создать отдельную группу в Telegram и добавить в неё бота.

      Несколько месяцев мне потребовалось на реализацию и тестирование такого бота. Но, как говорится, «дорогу осилит идущий» — в августе 2019 года бот был реализован.

      Telegram-бот @budgetmoneybot предоставляет пользователям возможность вести как личный, так и семейный бюджет.
      Читать дальше →
    • SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

      • Tutorial
      image

      SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?! Что?!
      — Да!
      • Хотите скрыть наличее у вас некоторых сервисов?
      • В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
      • Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
      • SSH подключение к своему серверу из стран с цензурой?

      На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.

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

        «Защита» — хороший ярлык для плохих дел.
        Милтон Фридман «Свобода выбирать»


        Этот текст получился в результате анализа некоторых комментариев к статьям «Дефекты лайков» и «Экономика и права человека».

        Интерпретируя какие-либо данные и делая выводы, некоторые комментаторы совершали типичную «ошибку выжившего».

        Что такое «систематическая ошибка выжившего»? Это учет известного и пренебрежение неизвестным, но существующим.

        Примером «стоимости» ошибки выжившего и примером удачного преодоления этой ошибки является работа венгерского математика Абрахама Вальда, работавшего на американскую армию во время Второй мировой войны.

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

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

        image
        Читать дальше →
      • learnopengl. Урок 1.1 — OpenGL

        • Перевод
        • Tutorial
        Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

        На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
        Читать дальше →
        • +39
        • 206k
        • 9
      • Трагедия systemd

        • Перевод
        Согласно Википедии, трагедия — это «форма драмы, основанная на человеческих страданиях, которая вызывает в аудитории сопутствующий катарсис или удовольствие». Из этого определения почерпнул вдохновение Бенно Райс в своём выступлении на конференции 2019 linux.conf.au. Его доклад посвящён истории systemd, в которой немало страданий. А аудитория точно получила удовольствие, так что всё сходится. В целом, это сочувственный и тонкий взгляд на одну бурную главу в истории системы Linux.

        Райса также вдохновила статья Ауринна Шоу о так называемой «культуре презрения». По словам Шоу, люди проявляют презрение (например, к разработчикам, которые используют другой язык программирования) в качестве социального знака, способа показать, что они принадлежат к правильной группе.

        Безусловно, в этой истории есть такая культура: большие группы сообща проявляют общее презрения к systemd и к тем, кто использует эту систему. Отсюда вытекает концепция изменения или сопротивления. Да, знакомые вещи удобны. Но они не обязательно хороши, особенно если ничего не меняется уже много лет.
        Читать дальше →
      • Инициализация в С++ действительно безумна. Лучше начинать с Си

        • Перевод
        Недавно мне напомнили, почему я считаю плохой идеей давать новичкам C++. Это плохая идея, потому что в C++ реальный бардак — хотя и красивый, но извращённый, трагический и удивительный бардак. Несмотря на нынешнее состояние сообщества, эта статья не направлена против современного C++. Скорее она частично продолжает статью Саймона Брэнда «Инициализация в C++ безумна», а частично — это послание каждому студенту, который хочет начать своё образование, глядя в бездну.

        Типичные возражения студентов, когда им говорят об изучении C:

        • «Кто-то его ещё использует?»
        • «Это глупо»
        • «Почему мы изучаем C?»
        • «Мы должны учить что-то лучшее, например, C++» (смех в зале)
        Читать дальше →
      • Практические советы, примеры и туннели SSH

        • Перевод
        • Tutorial

        Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать SSH, но и более грамотно перемещаться по сети.

        Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
        Читать дальше →
      • Годные туториалы на YouTube

        • Перевод
        На YouTube много бесплатных обучающих и курсов и туториалов.

        image

        Я веду freeCodeCamp, YouTube канал без рекламы. У нас есть полные видеокурсы и учебные пособия по многим популярным языкам программирования и фреймворкам (включая JavaScript, Python, Java, Ruby, C, C ++, Angular и не только).

        Есть и другие YouTube каналы с бесплатными уроками по программированию, которые ничуть не хуже, а иногда даже лучше, чем платные.

        В этой статье я перечисляю десять YouTube каналов, которые можно посмотреть, чтоб прокачаться в программировании. Расположение каналов — случайное.

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

        Есть много отличных каналов, для которых у меня не хватило места в этом списке. Поделитесь своими находками в комментах.
        Читать дальше →
      • Если вы подумываете начать писать на Go, то вот что вам следует знать

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

          Го - это портируемый Си
          Поехали...
        • Туннели и VPN, устойчивые к DPI

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

            Но нет, эта статья не об обществе, а о технологиях.

            image
            Читать дальше →
          • Frontend DevDay. Запись докладов



              7 декабря мы провели Frontend DevDay — смешали техническую презентацию нового 2ГИС с полноценным митапом. Разговаривали про карты на WebGL, трансформацию команды и запросы браузера. По словам участников, получилось празднично и увлекательно.

              Сегодня делимся записями всех трёх докладов. Спикеры на связи, если у вас возникнут вопросы — смело задавайте в комментариях к посту.
              Посмотреть
              • +31
              • 4,1k
              • 4
            • Отчёт с митапа «Go в продакшене»: видео, фото, презентации



                Всем привет! 23 сентября мы отлично провели время в московском офисе Mail.Ru Group на митапе сообщества Go в продакшене. Собрали для вас фото, видео и презентации.
                Читать дальше →
              • Моя компания не взлетела, 6 уроков ценою в 4 года жизни и $150 000

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

                  О том, как мы работали по 10 часов в сутки без выходных, получили инвестиции, прошли во ФРИИ, набрали более ста тысяч пользователей в США, нас хотел купить Sports Illustrated, но в итоге мы закрыли компанию.

                  Читать дальше →
                • Изучаем процессы в Linux


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

                    Данная статья в большей мере рассчитана на новичков в системном программировании и тех, кто просто хочет узнать немного больше о том, как работают процессы в Linux.
                    Читать дальше →
                  • Рецепт полезного код-ревью от разработчика из Яндекса



                      Привет. Меня зовут Сергей, последние пять лет я работаю в Яндексе. За это время участвовал в разработке одиннадцати проектов. Писал код на JavaScript, Python и C++. Некоторые проекты делал в одиночку, другие разрабатывал в группе из восьми человек. Но в каждой команде, на всех проектах, вне зависимости от языка программирования я использовал код-ревью.


                      С помощью код-ревью я постоянно узнаю что-то новое. Иногда, глядя на чужой код, хочется воскликнуть: "А что, так тоже можно?". В чужом коде я нахожу интересные приёмы и беру их себе на вооружение. Много новых знаний черпаю из комментариев к моему коду. Для меня стало открытием, что люди любят делиться своим опытом. Даже когда я разрабатываю проект в одиночку, то прошу ребят из другой команды посмотреть мои пулреквесты. Это мотивирует писать красивый и понятный код.


                      Но так было не всегда. Когда-то ревью было для меня наказанием. Я мог неделю с вдохновением писать код, вкладывая в него все силы. Отправлял пулреквест, трижды пинговал ревьювера, а в ответ получал сухое "вроде ок" или, что ещё хуже, десятки комментариев не по существу.


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


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

                      Читать дальше →
                    • Процесс ревью кода в hh.ru

                        Мне на глаза попался документ с правилами и рекомендациями по процессу ревью кода внутри компании. Я решил, что такой полезной информацией надо поделиться с внешним миром. С благословения автора я публикую работу.


                        Читать дальше →
                        • +34
                        • 16,8k
                        • 2
                      • С — не низкоуровневый язык

                        • Перевод


                        Ваш компьютер не является быстрой версией PDP-11


                        Привет, Хабр!

                        Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

                        Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

                        Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
                        Читать дальше →
                      • ENTRYPOINT vs CMD: назад к основам

                        • Перевод

                        Construction


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

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