• Code review по-человечески (часть 1)

    • Перевод
    • Tutorial
    В последнее время я читал статьи о лучших практиках code review и заметил, что эти статьи фокусируются на поиске багов, практически игнорируя другие компоненты ревью. Конструктивное и профессиональное обсуждение обнаруженных проблем? Неважно! Просто найди все баги, а дальше само сложится.

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

    Моя революционная книга обучит вас проверенным техникам по выявлению максимального количества недостатков в своём партнёре. Книга не затрагивает следующие области:

    • Обсуждение проблем с сочувствием и пониманием.
    • Помощь партнёру в устранении недостатков.

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

    Как вам нравится такая книжка? Предполагаю, что она вам не очень по душе.
    Читать дальше →
  • Ищем по номеру Instagram профиль


      В конце статьи представлен готовый инструмент

      Что можно узнать о человеке, с которым ты не знаком, если у тебя есть жалкие 11 цифр его номера телефона?

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

      По большому счёту, любая современная соц. сеть — это кладезь знаний для OSINT-исследователя, однако большая часть действительно полезной информации скрыта от глаз простого обывателя, и получить её просто так (без некоторых знаний и должной предварительной подготовки) не получится. Часто нужно заранее хорошо знать устройство механизмов соц. сети и долгими часами искать закономерности в проходящих «за кулисами» процессах. И здесь дело даже не в поиске каких-то ошибок, багов или уязвимостей, которые можно эксплуатировать, а, скорее, о ситуациях, когда фича, которая должна была бороться со злом, а не примкнуть к нему помогать людям и делать их жизнь лучше, позволяет использовать себя совсем с иной, непредсказуемой для самих разработчиков, стороны.

      Сегодня мы присмотримся ко взаимодействию социальной сети Instagram с номерами вашей телефонной книги.
      Читать дальше →
      • +13
      • 323k
      • 9
    • Уменьшение размера React Native-приложения на 60% за несколько простых шагов

      • Перевод
      Я тружусь в компании Mutual. Она работает в Бразилии, в сфере равноправного кредитования. Мы помогаем заёмщикам и заимодавцам наладить связь друг с другом. Первые ищут хорошие ставки, а вторые — доходы, превышающие то, что может предложить им рынок. Наш продукт применяется широким кругом пользователей, мы работаем в большой стране. В результате наши приложения для iOS и Android, основанные на React Native, загружают на очень разные устройства.


      Читать дальше →
    • Blockchain на Go. Часть 4: Транзакции, часть 1

      Привет, Habr! Представляю вашему вниманию перевод статьи "Building Blockchain in Go. Part 4: Transactions 1".

      Содержание

      1. Blockchain на Go. Часть 1: Прототип
      2. Blockchain на Go. Часть 2: Proof-of-Work
      3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
      4. Blockchain на Go. Часть 4: Транзакции, часть 1
      5. Blockchain на Go. Часть 5: Адреса
      6. Blockchain на Go. Часть 6: Транзакции, часть 2
      7. Blockchain на Go. Часть 7: Сеть

      Вступление


      Транзакции являются сердцем Биткоина, и единственная цель цепи блоков — это хранить транзакции безопасным и надежным способом, чтобы никто не смог модифицировать их после создания. В этой статье мы начинаем работу над реализацией механизма транзакций. Но поскольку это довольно большая тема, я разбил ее на две части: в этой части мы реализуем общий механизм, а во второй части мы детально разберем весь остальной функционал.
      Читать дальше →
    • Blockchain на Go. Часть 2: Proof-of-Work

      Привет, Хабр! Представляю вашему вниманию перевод статьи "Building Blockchain in Go. Part 2: Proof-of-Work".

      Содержание
      1. Blockchain на Go. Часть 1: Прототип
      2. Blockchain на Go. Часть 2: Proof-of-Work
      3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
      4. Blockchain на Go. Часть 4: Транзакции, часть 1
      5. Blockchain на Go. Часть 5: Адреса
      6. Blockchain на Go. Часть 6: Транзакции, часть 2
      7. Blockchain на Go. Часть 7: Сеть


      Вступление


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

      Одним из краеугольных камней Биткоина и блокчейна является то, что добавление новых блоков должно быть достаточно сложной работой. И сейчас мы собираемся исправить этот недостаток.
      Читать дальше →
      • +13
      • 10,8k
      • 2
    • Blockchain на Go. Часть 1: Прототип

      • Перевод
      • Tutorial

      Содержание


      1. Blockchain на Go. Часть 1: Прототип
      2. Blockchain на Go. Часть 2: Proof-of-Work
      3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
      4. Blockchain на Go. Часть 4: Транзакции, часть 1
      5. Blockchain на Go. Часть 5: Адреса
      6. Blockchain на Go. Часть 6: Транзакции, часть 2
      7. Blockchain на Go. Часть 7: Сеть

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


      В этой серии уроков мы создадим, основанную на блокчейне, упрощенную криптовалюту. В качестве языка используем Go.

      Читать дальше →
      • +13
      • 20,9k
      • 5
    • Как именно работает Meltdown

        Уже третий день у всех на слуху слова Meltdown и Spectre, свеженькие уязвимости в процессорах. К сожалению, сходу найти что либо про то, как именно работают данные уязвимости (для начала я сосредоточился на Meldown, она попроще), у меня не удалось, пришлось изучать оригинальные публикации и статьи: оригинальная статья, блок Google Project Zero, статья аж из лета 2017. Несмотря на то, что на хабре уже есть перевод введения из оригинальной публикации, хочется поделиться тем, что мне удалось прочитать и понять.

        Читать дальше →
      • Рефлексивное метапрограммирование на Go: цикл for each средствами пакета reflect

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


          Конечно в Go нельзя писать обобщенные программы, например в стиле C++ templates, которые бы практически не влияли на затраты процессорного времени. Такого механизма в языке нет и, вполне возможно, что не предвидится.


          С другой стороны, язык представляет довольно мощный встроенный пакет reflect, которой позволяет производить рефлексию как объектов, так и функций. Если не ставить быстродействие во главу угла, то с помощью этого пакета можно достигать интересных и гибких решений.


          В этой статье я покажу как реализовать for each в виде типонезависимой рефлексивной функции.


          Читать дальше →
        • Сервисы на Go в Badoo: как мы их пишем и поддерживаем


            Написать сетевой сервис на Go очень просто: в стандартной библиотеке есть куча инструментов, а если чего-то и не хватает, то на Github есть много модных библиотек для удовлетворения большинства нужд.


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


            Если каждый демон будет использовать все свежие разнообразные «смузи»-технологии, получится «зоопарк», который сложно и дорого поддерживать, не говоря уже о добавлении в них новой функциональности.


            У нас в Badoo крутятся >30 самописных демонов, написанных на разных языках, и ~10 из них – на Go. Все эти демоны работают на порядка 300 серверах. Как мы к этому пришли, не получив в итоге «зоопарк», как админы с мониторингом умудряются спать спокойно, не ограничивая при этом никого в смузи, а девелоперы, QA и релизеры живут дружно и до сих пор не переругались – читайте под катом.

            Читать дальше →
          • Что надо знать, чтобы брать туры дешевле: как всё это устроено (и как взять отель в Сочи за 1116 рублей на 5 ночей)


              Двухместный номер за 112 рублей в сутки на человека будет примерно вот такой, это 750 метров от центра Красной Поляны.

              Прошлый раз было много вопросов про ценообразование, постараюсь ответить. Начну с азов. Самостоятельный путешественник обычно ищет билеты на «Скайсканнере» или AWAD’е. Потом, взяв билеты, выбирает квартиру на AirB&B или отель на «Букинге». Потом идёт и страхуется. Экскурсии набирает на месте по ситуации. Туры нормальный ИТ-специалист, например, заказывает только для родителей, которые не знают языка.

              Стратегия самостоятельной брони разумна в 70–80% случаев. Самые опытные путешественники знают, что есть ещё две волшебных фишки:

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

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

              При поездке в Исландию так не выйдет. А вот по популярным направлениям есть варианты. Например, на сегодняшнее утро можно пожить 5 ночей в Сочи в хорошем двухместном номере, получить перелёт, завтраки и трансфер за 12 тысяч 35 рублей. Это на двоих, то есть 6018 рублей на человека. Именно столько стоят билеты в оба конца, если их брать за три недели, а тут ещё отель, завтраки и трансфер (такси от аэропорта до Сочи стоит 850 рублей в одну сторону, поезд — 150 рублей за взрослого). Ниже покажу ещё варианты для Турции и Греции.

              Но начну с ответа на вопрос, где подвох.
              Читать дальше →
            • Архитектура растущего проекта на примере ВКонтакте



                Алексей Акулович объясняет жизненный путь высоконагруженного проекта на PHP. Это — расшифровка Highload ++ 2016.

                Меня зовут Лёша, я пишу на PHP.

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

                Начнём.
                Читать дальше →
              • Делаем очередную .io-игру



                  Так называемые .io-игры — это браузерные massively multiplayer action-игры, в которых множество людей борются с излишками свободного времени. Massively multiplayer — это значит, что игра представляет собой многопользовательскую массовку из большого количества (сотен+) игроков, играющих в общей локации. Существует мнение, что все началось с игры Agar.io (клетки в чашке Петри). Другими успешными примерами можно назвать Slither.io (змейки) и Diep.io (танчики). Если верить статистике, то каждый день в эти игры играют миллионы игроков. Сегодня существуют десятки различных .io-игр, большинство из которых можно найти, загуглив по запросу «io games list».


                  Я расскажу о том, как мы делали нашу .io-игру Oceanar.io — игру про рыбок и прочих морских жителей, постараюсь при этом сосредоточиться на вопросах общего технического устройства всей системы, и дам несколько скромных советов.


                  Читать дальше →
                • Извините, мы обновляем протокол

                    Еще в 2011 году нас спрашивали, зачем вводить номер телефона для выставления счета на стороне партнера, подключенного к QIWI? Мы давно хотели облегчить интеграцию API, но раньше сделать это было достаточно сложно. Что же изменилось в 2016? Сейчас расскажем, а также поэкспериментируем с хабровским R&D голосованием.


                    Читать дальше →
                  • Видео про выращивание цыплёнка без скорлупы: реальность или подделка?


                      Да, я особенный, а что?

                      Пару дней назад на странице «Spoon & Tamago» в Facebook было выложено очень интересное видео, где показана группа японских школьников, которая пытается реализовать интересную идею. А именно — вырастить цыпленка в искусственных условиях, в инкубаторе, в яйце без скорлупы. Группа описала этот опыт как «первый в мире». Все это оформлено в виде шоу, которые так любят японцы, но менее интересным видео от этого не становится — не каждый день приходится видеть, как обычный желток с белком постепенно превращается в живое существо.

                      На самом деле, ранее подобные опыты уже проводились в лабораторных условиях. Техника выращивания цыплят в яйце без скорлупы разработана учеными — профессорами Ютака Тахара (Yutaka Tahara) и Кацуя Обара (Katsuya Obara). Эти же ученые приняли участие в этом школьном эксперименте, контролируя действия учащихся.
                      Читать дальше →
                    • Эффект Доплера помог физику из Казани успешно оспорить штраф ГИБДД


                        Тот самый комплекс, который и фиксирует скорость проезжающих мимо автомобилей

                        В России, в частности, в Казани, ГИБДД стала использовать передвижные комплексы видеофиксации «КРИС-П» для определения скорости проезжающих мимо автомобилей. Многие автомобилисты считают, что точность таких комплексов невысока, и некоторым удается успешно оспорить штрафы ГИБДД, доказав тем либо иным образом свою правоту.

                        Смог сделать это и кандидат физико-математических наук Юрий Горюнов, который получил штраф в размере 500 рублей за превышение скорости на 22 километра в час. Его «Лада-Гранта» попала в объектив передвижного фоторадарного комплекса «КРИС-П» в августе прошлого года в Высокогорском районе Татарстана.
                        Читать дальше →
                      • Традиционное 1 апреля в Интернете

                          У тебя спина белая
                          С праздником, поехали? Мне уже накидали в ЛС несколько смешных ресурсов:

                          Читать дальше →
                        • От черного прямоугольника в Яндекс.Браузере к ускорению всего Chromium

                            Сегодня мы расскажем вам историю об одном интересном баге в Яндекс.Браузере, исправление которого привело к значительному ускорению отрисовки во всем проекте Chromium. И помогут мне в этом Кирилл drBasic Плешивцев и Вадим Lof Петров, специалисты из нашей команды, которым и посчастливилось разбираться с проблемой. Передаю им слово.



                            Один не совсем обычный баг

                            Меня зовут Кирилл, я работаю в группе внутренних компонентов Яндекс.Браузера в Новосибирске. В один не совсем прекрасный день коллеги из тестирования Яндекс.Браузера воспроизвели проблему с проигрыванием видео через Flash Player. И поскольку именно наша группа отвечает за эту часть браузера (медиа, кодеки, вот это все), задача досталась мне. Баг, скажем так, не претендовал на оригинальность. Клик по кнопке Play приводил к черному прямоугольнику вместо корректного воспроизведения видео. Этот симптом я встречал и раньше, поэтому рассчитывал на достаточно быструю локализацию проблемы. Но я ошибался.
                            Читать дальше →
                          • PHPCI: Система непрерывной интеграции для PHP-проектов

                              image

                              Совсем недавно вышла из бета-версии новая система непрерывной интеграции для PHP-проектов с открытым исходным кодом — PHPCI (текущая версия — 1.1.0), она вскользь упоминалась в дайджесте PHP №21.

                              Я уже какое-то время эксперементирую с этой системой, поэтому хочу представить вам небольшой ее обзор, тем более что на Хабре нет ни одной статьи о ней.

                              Читать дальше →
                            • Native Script. Один код для всех платформ

                              image

                              Native script (NS) – это библиотека, позволяющая делать кросс-платформенные приложения, используя XML, CSS, JavaScript. Native script решает ту же задачу, что и уже всем известный phonegap (создание кросс-платформенных приложений), но подходы у них разные. Phonegap использует движок браузера, чтобы отобразить ваш UI (фактически вы получаете веб-страницу), Native script использует нативный рендеринг, использует элементы нативного UI. Следующее важное отличие: чтобы получить доступ к камере, gps и так далее в phonegap необходимо устанавливать плагины, в то время как NS дает доступ из коробки.
                              Читать дальше →
                            • OTRS на прокачку в стиле REG.RU

                                image

                                Наверное, нет необходимости рассказывать, что такое OTRS. Многие компании используют его как средство управления услугами и для осуществления поддержки своих клиентов. История этого проекта берет своё начало аж в 2001 году. И в этом есть свои плюсы и свои минусы. Очень мощный инструмент с огромным количеством функционала практически под любые нужды малого и среднего бизнеса. Причём бесплатно. Платная поддержка только для тех, кому недостаточно базового функционала или нужна помощь в настройке.

                                Об этом инструменте, который активно используется в нашей компании с 2008 года, и пойдёт речь. А точнее, о том, что с ним стало в руках нетерпеливых Perl-программистов компании REG.RU.
                                Так что же вы там накодили?