Pull to refresh
5
0
Михаил @mourhoon

Аналитик-разработчик

Send message

GitHub открыли код своего балансировщика нагрузки — как работает их решение

Reading time3 min
Views23K
Разработчики из GitHub на прошлой неделе выложили в открытый доступ исходники своего балансировщика нагрузки — GLB Director. Команда трудилась над этим проектом несколько лет.

Чем примечательно их решение, как оно устроено, и кто еще передавал системы распределения нагрузки в open source, рассказываем далее.

Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments7

Нейронные сети, «вредные» советы

Reading time6 min
Views169K
Исторически, искусственные нейронные сети за свою уже более чем полувековую историю испытывали как периоды стремительных взлетов и повышенного внимания общества, так и сменявшие их периоды скепсиса и равнодушия. В хорошие времена ученым и инженерам кажется, что наконец-то найдена универсальная технология, способная заменить человека в любых когнитивных задачах. Как грибы после дождя, появляются различные новые модели нейронных сетей, между их авторами, профессиональными учеными-математиками, идут напряженные споры о большей или меньшей степени биологичности предложенных ими моделей. Профессиональные ученые-биологи наблюдают эти дискуссии со стороны, периодически срываясь и восклицая «Да такого же в реальной природе не бывает!» – и без особого эффекта, поскольку нейросетевики-математики слушают биологов, как правило, только тогда, когда факты биологов согласуются с их собственными теориями. Однако, с течением времени, постепенно накапливается пул задач, на которых нейронные сети работают откровенно плохо и энтузиазм людей остывает.
Читать дальше →
Total votes 77: ↑74 and ↓3+71
Comments59

Консоль 21 века: mosh, tmux, fish

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

Но если вы проводите за своим инструментом до 80% рабочего времени, то желательно убедиться, что вы не тратите время впустую и что работа доставляет вам удовольствие. В этой статье я бы хотел немного рассказать про те инструменты, которыми я лично пользуюсь каждый день, и про то, как они улучшают user experience (и, часто, продуктивность) при работе с консолью и с удаленными серверами в частности.

Проблемы ssh


При работе с удаленными серверами по ssh есть много вещей, которые могут фрустрировать, но основных проблем две, и первая из них принципиально неразрешима в рамках ssh:

  1. При высоком round-trip latency (>100 ms) пользовательский ввод появляется с ощутимой задержкой, а при использовании мобильного интернета с edge (latency 1000 ms) работа становится подобна пытке
  2. При временных проблемах (несколько минут) с доставкой пакетов, соединение может порваться с write failed: broken pipe, причем узнаете вы об этом только при попытке ввода или при использовании настроек вроде keepaliveinterval


Первая проблема неразрешима потому, что ssh by-design является просто транспортом для байтов, и существующие приложения на это поведение расчитывают. Поскольку ssh не пытается интерпретировать этот поток байтов, он не может осуществлять предиктивный ввод. Лично для меня именно эта проблема наиболее актуальна, поскольку мне приходится работать с серверами в европе и США, и во втором случае задержка составляет около 200 мс и является принципиально неустранимой, по крайней мере до изобретения квантовой коммуникации или чего-нибудь подобного. Вторая же проблема проявляется в наших условиях относительно редко, но всё же неприятно переустанавливать все соединения при сбоях сети (и перезапускать упавшие приложения, если они почему-то не были запущены в screen).

Читать дальше →
Total votes 97: ↑89 and ↓8+81
Comments59

Задачи на собеседованиях в Яндексе

Reading time15 min
Views358K
Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

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

image
Читать дальше →
Total votes 221: ↑178 and ↓43+135
Comments329

Два мира виртуальных машин

Reading time18 min
Views38K
Виртуальный. В отличие от большинства модных компьютерных словечек, это понятие обычно соответствует своему словарному определению в тех случаях, когда речь идёт об аппаратуре или программах. Словарь «Random House College Dictionary» определяет «virtual» как «проявляющий свойства и эффекты чего-либо, но не являющийся таковым на самом деле».
Оригинал
Virtual. Unlike most computer buzzwords, this one usually holds true to its dictionary definition when it refers to hardware or software. The Random House College Dictionary defines «virtual» as «being such in force or effect, though not actually or expressly such.» [4]
Последние несколько лет в начале каждого семестра я даю студентам определения основных терминов, используемых в моём курсе: симуляция, эмуляция и виртуализация. И каждый раз я говорю, чтобы мои слова не принимали за стопроцентную правду. Дело в том, что в одних областях технического знания эти термины зачастую трактуются противоположно тому, что принято использовать в других. Нелёгкое это дело — давать определения.

Видимо, эту проблему заметил не только я. В своей книге Software and System Development using Virtual Platforms, вышедшей в прошлом году, мои коллеги Jakob Engblom и Daniel Aarno в первой главе вводят понятия simulation и emulation и отмечают неоднозначность их толкования в областях разработки программного обеспечения и проектирования аппаратуры.

С беспорядком в толковании этих двух терминов я для себя разобрался и вроде бы смирился. Осталось ещё одно понятие, уже более десяти (на самом деле пятидесяти) лет не теряющее популярности — это «виртуализация». За время своего бытия в категории «buzzword» оно стало сочетаться со множеством других слов. Недавно я осознал, что термин «виртуальная машина» (ВМ) на самом деле используется для обозначения двух хоть и связанных, но различных сущностей. В этой статье я расскажу о двух классах: языковые и системные виртуальные машины. Я покажу сходства и различия между ними, их назначение, классификацию, общие и частные черты в их практической реализации.


Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments5

Дизайн и архитектура в ФП. Введение и Часть 1

Reading time11 min
Views28K

Введение


В мире функционального программирования есть один большой пробел, а именно почти не освещена тема высокоуровневого дизайна больших приложений. Я решил для себя изучить этот вопрос. Есть ли существенные отличия дизайна приложений в ФП-мире от оного в мире императивном? Что такое «каноничный ФП-код»? Какие существуют идиомы разработки, есть ли смысл вообще говорить о паттернах проектирования в применении к ФП? Эти и другие важные вопросы часто вспыхивают то там, то здесь, но покамест мне не известно ни одной книги, аналогичной книге Банды Четырех. Вероятно, мои изыскания уже кто-то повторил, однако тем лучше: схожие результаты подтвердят правильность, иные — укажут на место в теории, которое необходимо доработать.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments41

Trie, или нагруженное дерево

Reading time4 min
Views97K
Здравствуй, Хабрахабр. Сегодня я хочу рассказать о такой замечательной структуре данных как словарь на нагруженном дереве, известной также как префиксное дерево, или trie.

Что это ?


Нагруженное дерево — структура данных реализующая интерфейс ассоциативного массива, то есть позволяющая хранить пары «ключ-значение». Сразу следует оговорится, что в большинстве случаев ключами выступают строки, однако в качестве ключей можно использовать любые типы данных, представимые как последовательность байт (то есть вообще любые).
Читать дальше →
Total votes 78: ↑73 and ↓5+68
Comments29

Lock-free структуры данных. Основы: откуда пошли быть барьеры памяти

Reading time22 min
Views94K

Как только я заинтересовался lock-free алгоритмами, меня стал мучить вопрос – а откуда взялась необходимость в барьерах памяти, в «наведении порядка» в коде?
Конечно, прочитав несколько тысяч страниц руководств по конкретной архитектуре, мы найдем ответ. Но этот ответ будет годен для этой конкретной архитектуры. Есть ли общий? В конце концов, мы же хотим, чтобы наш код был портабелен. Да и модель памяти C++11 не заточена под конкретный процессор.
Наиболее приемлемый общий ответ дал мне мистер Paul McKenney в своей статье 2010 года Memory Barriers: a Hardware View of Software Hackers. Ценность его статьи – в общности: он построил некоторую упрощенную абстрактную архитектуру, на примере которой и разбирает, что такое барьер памяти и зачем он был введен.
Вообще, Paul McKenney – известная личность. Он является разработчиком и активным пропагандистом технологии RCU, которая активно используется в ядре Linux, а также реализована в последней версии libcds в качестве ещё одного подхода к безопасному освобождению памяти (вообще, о RCU я хотел бы рассказать отдельно). Также принимал участие в работе над моделью памяти C++11.
Статья большая, я даю перевод только первой половины. Я позволил себе добавить некоторые комментарии, [которые выделены в тексте так].
Передаю слово Полу
Total votes 123: ↑117 and ↓6+111
Comments19

Кейт Матсудейра: Масштабируемая веб-архитектура и распределенные системы

Reading time32 min
Views84K
Шесть месяцев назад ребром встал вопрос о тексте для моего дипломного перевода. Результатом помощи коллективного разума стало решение переводить главу Scalable Web Architecture and Distributed Systems за авторством Kate Matsudaira. Нужно отметить, что это мой первый перевод такого объема и сложности. Текст, был мною относительно успешно переведен, хотя по качеству перевода я поставил бы себе 6-7 из 10. Дабы мои усилия не пропали втуне, публикую результат своих трудов.

По просьбам читателей Хабра, теперь полная версия в виде топика.

The Architecture of Open Source Applications (Volume 2)

Масштабируемая веб-архитектура и распределенные системы


Кейт Матсудейра

Перевод: jedi-to-be.
Коррекция: Anastasiaf15, sunshine_lass, Amaliya, fireball, Goudron.


Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments5

27+ ресурсов для онлайн-обучения

Reading time5 min
Views969K

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

Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

Читать дальше →
Total votes 174: ↑163 and ↓11+152
Comments68

События .NET в деталях

Reading time9 min
Views149K
Если вы .NET программист, то вы наверняка объявляли и использовали события в своем коде. Несмотря на это, не все знают, как события работают внутри и какие особенности связаны с их применением. В этой статье я попытался описать работу событий как можно более подробно, включая некоторые частные случаи, с которыми редко приходится иметь дело, но про которые важно и\или интересно знать.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments16

Разработка web API

Reading time9 min
Views287K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Total votes 235: ↑224 and ↓11+213
Comments128

Программная инженерия в НИУ-ВШЭ, абитуриентам

Reading time11 min
Views73K

Приветствую молодую часть Хабрахабра.

Как вы можете догадаться из названия топика, речь пойдёт об абитуриентах, кто в эти выходные делает выбор — МГУ или ВШЭ, а может между чем-то ещё.

Я успешно отучился 2 (UPD: 4) курса на факультете программной инженерии ВШЭ, давно хотел написать небольшой рекламный пост.
Рекламщик из меня плохой, да и вопросов для обзора придумать самостоятельно не смог.

Зато в эти дни меня часто стали спрашивать примерно так
Привет! Ты с ПИ ВШЭ? Если да, то можешь ответить на несколько вопросов по поводу ПИ (я абитуриент, надо определиться окончательно в ближайшие дни).


И я подумал, почему бы не ответить подробно и не выложить на хабр. Вопросы довольно специфичные и относятся к первым двум курсам.
Предполагается, что вы уже знакомы с НИУ-ВШЭ и, в частности, с факультетом ПИ.
Данная статья была актуальна пару лет назад, сейчас многое изменилось в лучшую сторону, а ещё Яндекс и Высшая школа экономики открывают факультет Computer Science.

Мне интересно, хочу увидеть вопросы и ответы
Total votes 52: ↑35 and ↓17+18
Comments77

Получение PhD в Австралии

Reading time6 min
Views31K
Расскажи мне про Австралию, мне ужасно интересно… (С) Земфира
Здравствуйте! Если вам тоже интересно послушать про Австралию, приглашаю вас оценить мой рассказ о том, как я получил место студента-исследователя или, другими словами, кандидата на степень PhD, в австралийском университете. После прочтения историй людей, поступивших в ВУЗы Европы, Канады и США, мне захотелось расширить эту географию ещё одним континентом. В этом посте я постараюсь описать процесс получения позиции PhD от подачи заявления до получения визы и приезда в эту страну. Если сообщество заинтересует данная тема, с радостью её продолжу, как это делали товарищи из других университетов.

Читать дальше →
Total votes 77: ↑71 and ↓6+65
Comments43

Стипендия Erasmus Mundus для высшего образования в Европе

Reading time11 min
Views68K
Тема образования за границей на Хабре освещалась уже не раз, однако именно по этой стипендии упоминаний почти нет. Ее уникальная фишка состоит в том, что учеба не ограничивается одним университетом, а можно будет поучиться в 2 – 3 университетах в разных странах ЕС, получить полноценный диплом, и сумма стипендии покрывает все нужды. Кто заинтересован в учебе на магистра или PhD, найдет под катом мой личный опыт и рекомендации.
Читать дальше
Total votes 42: ↑39 and ↓3+36
Comments30

История об аспирантуре в США. Часть 3: Сколько получает аспирант и за чем стоит ехать делать PhD

Reading time8 min
Views78K
В первых двух частях я описал свое поступление в аспирантуру и стоимость жизни в США. В этой части мы подойдем еще ближе к самому интересному, а если точнее, то я расскажу, откуда и в каких количествах появляются деньги у аспирантов, сколько надо платить за учебу и за чем сюда стоит ехать (или не ехать). Ну и наконец будет начало описания того, как можно сюда приехать.

Часть 1: Поступление


Живет тут

Часть 2: Стоимость жизни в США


Живет тут
Кому интересно почитать Часть 3, добро пожаловать под кат.
Total votes 79: ↑74 and ↓5+69
Comments38

Windows Azure Storage — архитектура

Reading time22 min
Views13K
Добрый день, уважаемые коллеги!

WAS – система облачного хранилища, предоставляющая клиентам возможность хранить практически неограниченные объёмы данных в течение любого периода времени. WAS была представлена в production-версии в ноябре 2008. Ранее она использовалась для внутренних целей Microsoft для таких приложений, как, например, хранение видео, музыки и игр, хранения медицинских записей и др. Статья написана по мотивам работы с сервисами хранилища и посвящена принципам работы этих сервисов.

Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments2

Архитектура Android-приложений. Часть I — истоки

Reading time8 min
Views109K
В этой статье мы рассмотрим архитектуру Android-приложений.

Откровенно говоря, официальную статью Google по этой теме я считаю не очень полезной. Детально отвечая на вопрос «как», она совсем не объясняет «что» и «почему». Итак, вот моя версия, и, я надеюсь, она внесёт некоторую ясность. Да, кстати, я полностью одобряю чтение статей Google, поскольку они содержат полезную информацию, повторять которую я не собираюсь.
Читать дальше →
Total votes 86: ↑80 and ↓6+74
Comments52

Интеграция Python и C++

Reading time3 min
Views55K
Всем доброго времени суток!

Недавно при прототипировании одной из частей разрабатываемого нами продукта возникла одна интересная задача: нужно было проверить склейку Python и C++. Связано это было с тем, что основной код был написан на плюсах, и необходимо было подключить внешнюю библиотеку Websockets, написанную на Python (на тот момент не было соответствующей библиотеки на C++). Схема взаимодействия при такой задаче достаточно простая. Из C++ вызывается функция подключения к серверу (на python), в качестве параметра передается его адрес. Соответственно, при получении сообщния Python передавает его обратно в метод C++.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments13

Azure Service Bus: неклассическое применение

Reading time7 min
Views6.9K

Azure Service Bus как Messaging System для «массовых» клиент-серверных приложений


imageПриветствую вас, хабровчане!

Перед тем, как расказать вам интересненького, позвольте для начала представиться. Мы — молодая компания, занимающаяся дистанционным обучением. В этом блоге мы будем делиться с вами нашими интересными находками, техническими хитростями и прочими вещами, которые, как мы считаем, должны быть достоянием сообщества.
Дальше будет несколько слов о нас и, собственно, вынесенный в заглавие рассказ о неочевидном применении Azure Service Bus.
Добро пожаловать!
Total votes 10: ↑7 and ↓3+4
Comments5

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity