• Вопросы для собеседования бэкенд-разработчика

    • Перевод
    Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

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

    В этом репозитории собран ряд вопросов, связанных с серверной частью, которые можно использовать при проверке потенциальных кандидатов. Ни в коем случае не рекомендуется задавать все вопросы одному кандидату: это займет несколько часов и вообще не имеет смысла, потому что они охватывают слишком широкий спектр тем. Никто не может знать всего. Выберите наиболее актуальный раздел и самые интересные вопросы, чтобы развернуть беседу.
    Читать дальше →
  • Эпопея о WD My Book Live, или «девайс-конфетка» с «печеньками»

    image

    Привет %username%! В начале этого года мне наконец-то исполнился четвертак. Поняв, что я стал взрослым ребёнком и нуждаюсь во взрослых игрушках, купил себе WD My Book Live на 3Tb ёмкости, который в нашем счастливом семействе убил сразу N зайцев. Счастью моему не было предела. Девайс подкупил своей ценой, железом и наличием полноценного Linux на борту. Однако, как оказалось позже, Linux Debian оказался не очень уж и полноценным, достаточно кастрированным и, судя по отзывам рядовых владельцев, любителем окирпичиться. Однако, благодаря инженерам из WD, девайс достаточно легко поднимается из состояния кирпича до состояния работоспособного устройства (пруф1 и пруф2). Но согласитесь, времена хард ресета с пассатижами из хозмага за углом давно миновали. Всё-таки эпоха нано-полимеров и инноваций. А значит и девайс хочется более не убиваемым.

    Я никак не являюсь линуксоидом и для меня Linux, по своей сути, тёмный лес! Поэтому, для начала, долго изучая интернеты, я запилил себе только mc и transmission, чего для первого раза мне хватило за глаза. А ещё я был поражён, как мне – человеку, впервые запустившему SSH — легко это удалось! Прошло полгода, я почитал форумы, посвящённые девайсу. Настал день “Д” и я, засучив рукава, принялся делать из своего девайса “конфетку”. И не простую, а “конфетку” с “печеньками”
    Подробнее под катом...
  • Почему ранний возврат из функций так важен?

    Привет, Хабр! Представляю вашему вниманию перевод статьи «Why should you return early?» автора Szymon Krajewski

    image

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

    Очевидно, что существует несколько подходов написания одной и той же функции. Например, как можно начать выполнение основной части сразу после положительного исхода условного оператора, так и можно сначала пробежаться по всем отрицательным исходам, возвращая ошибки из функции, а уже только потом перейти к основной логике. Иными словами, я открыл для себя разные стили написания условных конструкций.
    Читать дальше →
  • Пятничный JS: reqyire.js и очепятко-ориентированное программирование

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

      const reqyire = require("reqyire");
      const http = reqyire("htpp");
      
      const server = http.creteServer((req, res) => {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Hello World\n');
      });
      
      server.listem(3000, "127.0.0.1");
      
      Вы ведь заметили, что здесь какой-то подвох?
    • Системная шина ПК передаёт музыку на средних частотах


        В качестве антенны радиопередатчика используется шина между процессором и памятью

        В информационной безопасности есть понятие «физической изоляции» (air gap), когда безопасная компьютерная сеть физически изолирована от небезопасных сетей: интернета и локальных сетей с низким уровнем безопасности. Это военные системы, командные центры, системы управления АЭС, медицинское оборудование и проч.

        Но если кто-то инфицировал физически изолированный компьютер, а потом ему позарез нужно снять информацию — что делать? Здесь приходится выдумывать разные хитроумные и нестандартные способы. Например, превратить обычный ПК в генератор радиосигнала — и ловить этот сигнал радиоприёмником. Именно такую задачу выполняет утилита System Bus Radio, которая однажды упоминалась на GT. Хотя если честно, то вряд ли кто-то будет использовать её для шпионажа — это просто любопытная программка для развлечения. Она использует системную шину ПК или ноутбука как радиопередатчик для трансляции любых звуков на установленной радиочастоте.

        За время, прошедшее с начала разработки, пользователи собрали обширную статистику, на радиоприёмниках какой модели и на какой частоте ловится сигнал. Кроме того, создан онлайновый модулятор, где вы можете сочинять музыку не выходя из браузера — и генерировать радиосигнал на частоте 1560 Гц нажатием одной кнопки Play Tune.
        Как это работает
      • GPS-монитор под андроид «KidsTrack»

          Задача: наступает лето, дети все больше времени проводят где-то на улице, и я бы хотел знать, где они находятся. Идеальный вариант — я просто даю им с собой старый андроидный телефон, и затем наблюдаю за ними по карте на большом домашнем мониторе.
          В этой статье я расскажу, почему и как я написал свое первое приложение для Андроид с функциями GPS «KidsTrack», и какие открытия при этом сделал. Статья будет полезна тем, кто недавно начал программировать под Android.

          Читать дальше →
        • Как я взломал пул для майнинга Bitcoin

          Сегодня веб-сайты работающие с криптовалютами являются очень «вкусной» мишенью для хакеров. И вроде бы их безопасность должна быть на высоком уровне, но нет. это далеко не всегда так. Посмотрите хотя бы на BlockChain Graveiard, где видно как крупнейшие сервисы банкротятся и закрываются в результате хакерских атак. Меня это воодушевило и я решил провести собственное исследование безопасности одного из таких веб-приложений. В этой статье я расскажу что из этого получилось и сколько мне заплатили. Интересно? Добро пожаловать под кат.
          Читать дальше →
        • Заблуждения большинства программистов относительно «времени»

          • Перевод
          Много дней назад я решил записать некоторые наблюдения, сформировавшиеся пока в последние годы я занимался тестированием. Рассматривая области, которые получают наибольшую отдачу от тестирования, я понял, что у меня накопилось много конкретных мыслей о том, как мы — программисты — склонны небрежно обращаться с понятием «время» в программировании.

          Тогда я написал пост «Заблуждения программистов относительно „времени“», в котором указал 34 ошибочных представления и заблуждения, относящихся как к календарному, так и к системному времени. С большинством из них я столкнулся сам, занимаясь дебаггингом программ (как рабочих, так и тестовых).

          Читать дальше →
        • Заблуждения программистов относительно времени

          • Перевод
          За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

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



            Предыстория


            Привет! Меня зовут Виталий Шароватов, я уже 16 лет работаю в IT. Сейчас я руковожу направлением фронтенд в Badoo. В него входят две команды, которые занимаются разработкой и поддержкой десктопной версии сайта badoo.com, мобильной версии m.badoo.com и многими другими проектами. Да, десктопную и мобильную версии у нас делают отдельные команды. :)

            Два с половиной года назад я пришел в Badoo разработчиком, со временем вырос до тимлида, а потом, когда было решено перевозить команду Desktop Web в Лондон, стал руководителем направления.

            Прошлой осенью на Codemotion Milan я делал доклад о росте из разработчика в тимлида (и писал на Хабр статью об этом) и о том, с какими неожиданными моментами мне пришлось столкнуться, а теперь расскажу, как при переходе из лида в руководителя направления я справился с подбором и «выращиванием» тимлида в одной из команд (Mobile Web).
            Читать дальше →