Как стать автором
Обновить
0
0
Антон Романов @anthonyr

Пользователь

Отправить сообщение

Почему мне кажется, что студентов учат ООП неправильно

Время на прочтение5 мин
Количество просмотров233K
Когда я учился в университете мне довольно тяжело было понять ООП (Объектно-ориентированное программирование), сейчас я понимаю, что просто нас учили ООП на не совсем ясных и правильных аналогиях и вообще, кажется, сами преподаватели не совсем понимали, в чем же суть ООП.

image

Вспомните, классические аналогии ООП, вот есть класс Домашние любимцы с методами «голос» и «есть», от него мы наследуем Кошку и Собаку и все хорошо.

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

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

Или другой классический пример, вот есть прямоугольник, от которого так и хочется унаследовать квадрат (ну по логике, квадрат это частный случай прямоугольника), но у прямоугольника есть длина и ширина, а у квадрата только одна сторона. Что-то тут тоже запутано.

Теперь подумаем как объяснить ООП лучше?
Читать дальше →
Всего голосов 68: ↑53 и ↓15+38
Комментарии474

Архитектура хранения и отдачи фотографий в Badoo

Время на прочтение20 мин
Количество просмотров25K


Артем Денисов ( bo0rsh201, Badoo)


Badoo — это крупнейший в мире сайт знакомств. На данный момент у нас зарегистрировано порядка 330 миллионов пользователей по всему миру. Но, что гораздо более важно в контексте нашего сегодняшнего разговора, — это то, что мы храним около 3 петабайт пользовательских фотографий. Каждый день наши пользователи заливают порядка 3,5 миллионов новых фотографий, и нагрузка на чтение составляет порядка 80 тысяч запросов в секунду. Это достаточно много для нашего бэкенда, и с этим иногда бывают трудности.

image

Я расскажу про дизайн этой системы, которая хранит и отдает фотки в целом, и приведу на нее взгляд с точки зрения разработчика. О том, как она развивалась, будет краткая ретроспектива, где я основные вехи обозначу, но уже более подробно буду говорить только о тех решениях, которые мы сейчас используем.
Всего голосов 31: ↑29 и ↓2+27
Комментарии38

Эволюция DevOps

Время на прочтение14 мин
Количество просмотров19K

Эта статья посвящена эволюции разработки и администрирования, и определению собственной позиции во всеобщей картине всего. Статья вдохновлена слайдами Marc Hornbeek, но имеет к ним опосредованное отношение. Для широкого круга хаброжителей (опсов, девов и девопсов).

Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии15

В поисках утерянного гигабита или немного про окна в TCP

Время на прочтение7 мин
Количество просмотров39K

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


В моём случае это была лень объяснять в тысячный раз клиенту, почему он арендовал канал точка-точка и в договоре чёрным по белому написано Ethernet 1Гбит/с, а он как ни измеряет, но чуть-чуть да меньше получается.


Где остальное? Почему недобор? Куда девался интернет из провода? А может его и вовсе страшно обманули?


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


Важно


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

Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии12

Создание игры на Unreal Engine 4 за 150 часов (видео + исходники)

Время на прочтение6 мин
Количество просмотров187K
Приветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.

Сам проект не предназначался как коммерческий. Целью я ставил на практике показать всю сложность разработки игр, а именно такие проблемы, как:

  • Планирование и прототипирование проекта
  • Продумывание и реализация архитектуры проекта и отдельных его компонентов
  • Реализация интерфейса пользователя
  • Отладка и исправление ошибок
  • Работа с ассетами и графикой

image

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

Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
Всего голосов 103: ↑99 и ↓4+95
Комментарии45

Настройка окружения SELinux на примере LAMP-сервера

Время на прочтение8 мин
Количество просмотров24K

Это третья статья из цикла


И сегодня она попала в поток «Администрирование». Сегодня мы не будем писать модули или настраивать RBAC, а пойдем по пути наименьшего сопротивления и просто захарденим обычный LAMP-сервер при помощи готовой политики, включив необходимые настройки.

Если кто забыл, за аббривиатурой LAMP скрывается Linux, Apache, Mysql, PHP, т.е. это большая часть всех VDS, которые покупают люди для хранения своих личных блогов. Надеюсь, что этот поможет всем им стать немного безопаснее :)
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии10

Цель как антидепрессант

Время на прочтение5 мин
Количество просмотров32K
Для того чтобы с помощью целей бороться с депрессиями, надо для начала определиться с вопросом: что такое депрессия?
image «Calavera of Don Quixote» 1985 г., автор Хосе Посада
Депрессия — это психофизическое состояние человека, о котором пока точно не известно, что это такое. Но при этом уже ясно, как с ней бороться и облегчать жизнь людям.

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

Генеральный спонсор статьи — нейромедиатор дофамин.
Дофамин усилит чувство радости и повысит удовольствие от жизни, а также поможет преодолеть вредные привычки.
Перед прочтением статьи посоветуйтесь со здравым смыслом.

Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии20

Мифы о CAP теореме

Время на прочтение13 мин
Количество просмотров31K

Введение


cap


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


Событие, когда какая-то статья вызывает бурю эмоций, — крайне редкое. Первый раз такое возникло, когда я прочитал про chained replication. Меня пытались убедить, что это мощный подход и что это лучшее, что могло произойти с консистентной репликацией. Я сейчас не буду приводить доводы, почему это плохо работает, а просто приведу говорящую цитату из статьи Chain Replication metadata management:


Split brain management is a thorny problem. The method presented here is one based on pragmatics. If it doesn’t work, there isn’t a serious worry, because Machi’s first serious use case all require only AP Mode. If we end up falling back to “use Riak Ensemble” or “use ZooKeeper”, then perhaps that’s fine enough.

В моем вольном пересказе это означает примерно следующее: "У нас тут есть некий алгоритм. Мы не знаем, будет ли он работать правильно или нет. Да нам это и не важно". Хотя бы честно, сэкономило кучу времени, спасибо авторам.


И тут, значит, попадается на глаза статья: Spanner, TrueTime & The CAP Theorem. Её мы разберем по полочкам ближе к концу, вооружившись понятиями и знаниями. А перед этим разберем самые распространенные мифы, связанные с CAP теоремой.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии70

Тяжелое расставание с Net-Tools

Время на прочтение7 мин
Количество просмотров102K

Не секрет, что Net-Tools пора на почетную отставку. Да, многим админам и мне в том числе, до условного рефлекса Павлова знакомы команды ifconfig, route, netstat. На первый взгляд нет причин что-то менять, а лучшее как всегда враг хорошего.




Давайте узнаем почему Net-Tools уже не тот и как безболезненно с него перейти на iproute2 .

Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии40

UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

Время на прочтение29 мин
Количество просмотров107K
UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

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

Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
Читать дальше →
Всего голосов 455: ↑297 и ↓158+139
Комментарии700

Введение в понятие энтропии и ее многоликость

Время на прочтение5 мин
Количество просмотров64K
image
Как может показаться, анализ сигналов и данных — тема достаточно хорошо изученная и уже сотни раз проговоренная. Но есть в ней и некоторые провалы. В последние годы словом «энтропия» бросаются все кому не лень, толком и не понимая, о чем говорят. Хаос — да, беспорядок — да, в термодинамике используется — вроде тоже да, применительно к сигналам — и тут да. Хочется хотя бы немного прояснить этот момент и дать направление тем, кто захочет узнать чуть больше об энтропии. Поговорим об энтропийном анализе данных.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии58

Пастильда — открытый аппаратный менеджер паролей

Время на прочтение5 мин
Количество просмотров60K
Pastilda — open source аппаратный USB менеджер паролей

Немало заметок и обсуждений посвящены непростому вопросу безопасного хранения паролей, тема интересная и, похоже, актуальной будет ещё долго. Существуют различные программные решения для хранения паролей, о них довольно часто пишут на Хабре (например тут и вот тут), однако многим из них, как нам кажется, в той или иной степени свойственны следующие недостатки:
  • закрытый код снижает доверие и вероятность оперативного устранения уязвимостей
  • для автозаполнения нужно ставить дополнительный софт
  • после ввода мастер-пароля вся база открыта и доступна, в том числе для вредоносного ПО, что особенно актуально на недоверенных устройствах
  • использование мобильных приложений для хранения паролей все равно подразумевает ручной ввод с клавиатуры, например когда требуется залогиниться на стационарном ПК
  • автозаполнение невозможно в некоторых случаях (в bios, консоли)

Мы пришли к выводу, что наиболее удобным решением будет простой и недорогой девайс, позволяющий аппаратно хранить и вводить логины/пароли на любые устройства, без установки какого-либо ПО.
Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии168

[Terraform + SaltStack] Готовим PrestoDB кластер в скороварке (Часть #1)

Время на прочтение9 мин
Количество просмотров9.1K
Что здесь интересного?

image
Рецепт приготовления вкусного и полезного PrestoDB кластера используя скороварку на базе Terraform и SaltStack в публичном облаке AWS. Рассмотрим подробно нюансы подготовки к работе самой скороварки, необходимые шаги для правильного приготовления самого блюда и, естественно, немножко расскажем о потреблении готового блюда. Эту часть можно использовать как учебный материал по Terraform.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии4

VPN везде и всюду: IPsec без L2TP со strongSwan

Время на прочтение10 мин
Количество просмотров329K
image
достаточно сильный лебедь

Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

Небольшое введение в мир IPsec

Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии166

25 книг по теме облачных вычислений

Время на прочтение4 мин
Количество просмотров28K


/ фото Olli Henze CC

Сегодня мы в «ИТ-ГРАД» решили немного отойти от привычного формата дайджеста и подготовили для вас подборку из литературных материалов по теме облачных вычислений, IaaS и виртуализации.

Руководство: Как посчитать выгоды от миграции в «облако»
В этом материале разбираются рабочие модели для расчета экономической эффективности перехода в облако. С примерами.

IaaS для бизнеса по кирпичикам
Книга предназначена для тех, кто впервые сталкивается с облаками и понятием IaaS (Infrastructure as a Service), и рассчитана на бизнес-аудиторию, желающую разобраться в последних тенденциях в сфере ИТ. Прочитав данную книгу, вы найдете ответы на следующие вопросы: Какие ИТ-сервисы имеет смысл выносить на аутсорсинг? Какие сервисы лучше оставить внутри? Как выбрать поставщика облачных услуг и убедиться в его надежности?

Идеальная архитектура. Ведущие специалисты о красоте программных архитектур
Из каких компонентов строятся надежные, элегантные, гибкие, удобные в сопровождении программные архитектуры? Книга отвечает на этот вопрос серией очерков, написанных ведущими программными архитекторами и проектировщиками современности. В каждом очерке авторы представляют какую-либо выдающую программную архитектуру, анализируют ее отличия от других архитектур и объясняют, почему она идеально подходит для своей цели.
Читать дальше →
Всего голосов 18: ↑12 и ↓6+6
Комментарии0

Tracert vs Traceroute

Время на прочтение5 мин
Количество просмотров265K
В чем отличие маршрута пакета от его пути?
Стандартный механизм маршрутизации пакетов в интернете — per hop behavior — то есть каждый узел в сети принимает решение куда ему отправить пакет на основе информации, полученной от протоколов динамической маршрутизации и статически указанных администраторами маршрутов.

Маршрут — это интерфейс, в который нам надо послать пакет для достижения какого то узла назначения и адрес следующего маршрутизатора (next-hop):
R1#sh ip rou | i 40.  
	 40.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
O        40.0.0.0/31 [110/3] via 20.0.0.0, 00:01:54, FastEthernet0/0
O        40.1.1.1/32 [110/4] via 20.0.0.0, 00:00:05, FastEthernet0/0

Что такое путь? Путь — это список узлов, через которые прошел (пройдет) пакет:
 1  10.0.0.1  16.616 ms  16.270 ms  15.929 ms
 2  20.0.0.0  15.678 ms  15.157 ms  15.071 ms
 3  30.0.0.1  26.423 ms  26.081 ms  26.744 ms
 4  40.0.0.0  48.979 ms  48.674 ms  48.384 ms
 5  100.0.0.2  58.707 ms  58.773 ms  58.536 ms

Путь пакета можно посмотреть с помощью утилит tracert в OC Windows и traceroute в GNU/Linux и Unix-подобных системах. (другие команды, типа tracepath мы не рассматриваем).
Многие считают что этих утилит один и тот же принцип работы, но это не так. Давайте разберемся.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии63

Redis — что быстрее, UNIX-сокет или TCP? Что стабильнее? + pconnect

Время на прочтение3 мин
Количество просмотров30K
image

Мы в PushAll обрабатываем несколько тысяч запросов в секунду для получения статистики доставки и открытия уведомлений и для передачи контента оповещений. Обычная БД вроде MySQL не справляется с таким потоком запросов и не может так быстро отвечать.

Стараясь все больше операций перенести на быстрые NoSQL хранилища вроде Redis, мы хотим знать как эффективнее его использовать и не будет ли у нас проблем с большим количеством соединений.
Также для работы мы используем форки PHP и нам было интересно, а как поведет себя Redis, если мы будем делать несколько тысяч соединений в одновременно в нескольких потоках. Мы решили поделиться с сообществом нашими тестами.
Читать дальше →
Всего голосов 23: ↑15 и ↓8+7
Комментарии43

Трассировка ядра с ftrace

Время на прочтение12 мин
Количество просмотров24K
PR-1801-2-2

Проблемы трассировки и профилирования ядра мы уже затрагивали в предыдущих публикациях. Для анализа событий на уровне ядра существует много специализированных инструментов: SystemTap, Ktap, Sysdig, LTTNG и другие. Об этих инструментах опубликовано много подробных статей и обучающих материалов.

Гораздо меньше информации можно найти о «родных» механизмах Linux, с помощью которых можно отслеживать системные события, получать и анализировать отладочную информацию. Эту тему мы хотели бы рассмотреть в сегодняшней статье. Особое внимание мы уделим ftrace — первому и пока что единственному инструменту трассировки, добавленному в ядро. Начнём с определения основных понятий.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии4

Segmentation Fault (распределение памяти компьютера)

Время на прочтение16 мин
Количество просмотров115K


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии10

Онлайн “школа” сетевых технологий NetSkills

Время на прочтение4 мин
Количество просмотров34K
Здравствуйте, коллеги! Хотел бы сообщить, что “школа” NetSkills продолжает свое развитие. Сам проект изначально just for fun, поэтому слово “школа” употребляется исключительно с кавычками.

На текущий момент на канале YouTube уже почти 10 тысяч подписчиков и их количество непрерывно растет.
Совсем недавно был завершен очередной курс по основам GNS3 и теперь в “школе” NetSkills есть весь необходимый минимум для обучения молодых специалистов сетевым технологиям, а именно:
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии9

Информация

В рейтинге
Не участвует
Откуда
Ульяновск, Ульяновская обл., Россия
Дата рождения
Зарегистрирован
Активность