Pull to refresh
12
0
Колосов Никита @Anexroid

Backend-разработчик

Send message

Несколько мыслей по подготовке к алгоритмической части собеседования

Level of difficulty Easy
Reading time 9 min
Views 8.2K
image

Всем привет! На связи снова Петр Коробейников, техлид сервисов DBaaS for Redis и RabbitMQ (релиз скоро) в #CloudMTS. В этой статье хочу поделиться с вами некоторым опытом подготовки к прохождению алгоритмических интервью. Конечно, статья не про хардкорные алгоритмы. Это, скорее, эскиз к роадмапу по подготовке. Тем не менее, я надеюсь, он будет полезен новичкам (и даже некоторым «старичкам»).

Готовьтесь


Это первый и самый важный совет. Если вы думаете, что, ворочая базами в десятки терабайт, вывозя 50-100k RPS к фронту, обрабатывая десятки миллионов сообщений в Kafka, вы сможете перенести свой опыт на решение алгоритмических задач, то могу вас немного расстроить.

Двоичное дерево без подготовки вы сможете покрутить в лучшем случае только на неприличном месте. Это чем-то похоже на экзамен по математике или физике: вы не сможете вывести формулу, если не знакомы с теорией и не решали задачи заранее. И вас будет ждать обидный провал.
Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Comments 13

Go: объектный файл и релокация

Reading time 4 min
Views 4K

Эта статья оперирует версией Go 1.14.

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

Читать далее
Total votes 8: ↑7 and ↓1 +6
Comments 0

Timsort — самый быстрый алгоритм сортировки, о котором вы никогда не слышали

Reading time 5 min
Views 46K

Timsort: Очень быстрый, O(n log n), стабильный алгоритм сортировки, созданный для реального мира, а не для академических целей.

Timsort — это алгоритм сортировки, который эффективен для реальных данных, а не создан в академической лаборатории. Tim Peters создал Timsort для Python в 2001 году. 

Timsort сначала анализирует список, который он пытается отсортировать, и на его основе выбирает наилучший подход. С момента его появления он используется в качестве алгоритма сортировки по умолчанию в Python, Java, платформе Android и GNU Octave.

Нотация Big O для Timsort — это O(n log n). Чтобы узнать о нотации Big O, прочтите это.

Читать далее
Total votes 20: ↑16 and ↓4 +12
Comments 9

Настройка ядра Linux для повышения производительности памяти

Reading time 4 min
Views 26K

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

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

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

Причина этого исключительно в том, что оперативная память используется на полную мощность, и других симптомов, кроме случайного эпизодического увеличения задержек, может и не быть. Такая же картина может наблюдаться, если жесткий диск не справляется с чтением и записью. Влияние может быть и на такие компоненты операционной системы как сетевая карта / iptables / ebtables / iproute2 — вместо реальной причины вы видите проблемы в сетевой задержке. В этой статье обсудим это подробнее и посмотрим, как минимизировать воздействие на систему.

Читать далее
Total votes 19: ↑11 and ↓8 +3
Comments 11

Собираем 8-битный компьютер

Reading time 16 min
Views 43K

Привет! Я всегда хотел собрать свой компьютер — не только в теории понять как «бегают» биты, складываются числа, работают прерывания, как программный код превращается в нули и единицы. У меня получилось и я хотел бы поделиться своим опытом. Это заняло у меня 140 часов и $400 на все компоненты и их доставку. Если вам интересно узнать о проекте, спускайтесь под кат.

Читать далее
Total votes 74: ↑73 and ↓1 +72
Comments 54

Рациональное использование ресурсов в Kubernetes

Reading time 5 min
Views 6.7K

Одна из важных задач при работе с Kubernetes - рациональное распределение ресурсов. Для этого необходимо правильно назначать контейнерам лимиты(limits) и запросы (requests). Но это не всегда простая задача.

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

Эта статья поможет разобраться, как быстро находить неиспользуемые ресурсы с помощью PromQL.

Читать далее
Total votes 8: ↑6 and ↓2 +4
Comments 1

Генерация документов в doc, excel, pdf и других форматах на сервере

Reading time 3 min
Views 41K
Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.

image

Читать дальше →
Total votes 36: ↑33 and ↓3 +30
Comments 20

Одна из уязвимостей технологии WPS

Reading time 3 min
Views 55K

Для начала рассмотрим что такое WPS


Большинство современных роутеров поддерживают механизм WPS (Wi-Fi Protected Setup). С его помощью пользователь за считанные секунды может настроить безопасную беспроводную сеть, вообще не забивая себе голову тем, что «где-то еще нужно включить шифрование и прописать WPA-ключ.

WPS позволяет клиенту подключиться к точке доступа по 8-символьному коду, состоящему из цифр (PIN). Однако из-за ошибки в стандарте нужно угадать лишь 4 из них. Таким образом, достаточно всего-навсего 10000 попыток подбора и вне зависимости от сложности пароля для доступа к беспроводной сети вы автоматически получаете этот доступ, а с ним в придачу — и этот самый пароль как он есть.

Учитывая, что это взаимодействие происходит до любых проверок безопасности, в секунду можно отправлять по 10-50 запросов на вход через WPS, и через 3-15 часов (иногда больше, иногда меньше) вы получите ключи.

Когда данная уязвимость была раскрыта производители стали внедрять ограничение на число попыток входа (rate limit), после превышения которого точка доступа автоматически на какое-то время отключает WPS — однако до сих пор таких устройств не больше половины от уже выпущенных без этой защиты. Даже больше — временное отключение кардинально ничего не меняет, так как при одной попытке входа в минуту нам понадобится всего 10000/60/24 = 6,94 дней. А PIN обычно отыскивается раньше, чем проходится весь цикл.
Читать дальше →
Total votes 18: ↑11 and ↓7 +4
Comments 16

30 легковесных JavaScript плагинов и библиотек

Reading time 5 min
Views 107K
В это обзоре мы познакомимся с 30 бесплатными JavaScript плагинами и библиотеками, которые сфокусированы на определенных задачах. Это простые, полезные и легкие решения, которые помогут сделать процесс веб-дизайна и разработки гораздо проще и быстрее.

Как и следовало ожидать ниже вы найдете много плагинов для создания ползунков, галерей с изображениями, адаптивных меню, а также много других полезных плагинов и библиотек. Также в списке представлены плагины, которые предлагают действительно уникальные функциональные возможности. Давайте взглянем на список!
Читать дальше →
Total votes 66: ↑53 and ↓13 +40
Comments 16

Websocket в продакшене

Reading time 30 min
Views 41K
10 месяцев назад я начал делать браузерную игрушку. Выбор пал на cocos js в качестве графики и websocket в качестве общения с сервером. Технология очень понравилась и я на ней организовал всё общение игры с сервером. Использовал для этого эту статью. Но, к сожалению, тот код, который приведен в той статье, нельзя использовать в продакшене. Как выяснилось, уровень проблемы даже не критический, а блокирующий. Всё настолько плохо, что мне пришлось переписывать всё общение с сервером с вебсокетов на longpooling. В итоге я оставил вариант «если у нас браузер не сафари, то использовать websocket, иначе longpolling» и ещё немного ветвления на эту тему.

Так что опыт использования вебсокет в продакшене накопился приличный. И вот недавно случилось событие, которое сподвигло меня написать первую статью на Хабре.
Читать дальше →
Total votes 19: ↑14 and ↓5 +9
Comments 70

Делаем вебсокеты на PHP с нуля

Reading time 18 min
Views 304K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →
Total votes 88: ↑76 and ↓12 +64
Comments 77

Zend Certification. Не так страшен черт

Reading time 3 min
Views 24K
Хотелось бы поделиться с уважаемым сообществом своим опытом получения заветного Zend сертификата.

Ни для кого не секрет, что к многочисленным сертификациям, и к ZCPE (Zend Certified PHP Engineer) в частности, все относятся по-разному: кто-то коллекционирует их и развешивает на стенках для самолюбования, кто-то считает пустой тратой времени и денег.
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 5

«Хакинтош» – стоит ли игра свеч?

Reading time 4 min
Views 351K
imageХочу поделиться своим мнением и опытом относительно работы Mac OS X на обычном PC компьютере. Может кому-то этот топик будет интересен или полезен.

Я разработчик ПО для Mac OS X и iOS. И я обожаю технику и ПО от Apple (но я не являюсь ярым фанатом). За свою жизнь у меня побывало много гаджетов от Apple: PowerBook G4, MacBook, iMac, MacBook Pro, iPhone, iPad и пр.

Техника для меня лишь инструмент достижения целей. В данный момент времени на работе я использую iMac (Core i5), в личных целях: обычный стационарный PC, ноутбук Lenovo, телефон на Android и iPad.

Недавно мне для работы дома понадобился очень мощный компьютер с Mac OS X. По характеристикам из техники Apple подходили лишь топовый iMac (с Core i7-2600 3,4 ГГц) и Mac Pro. Оба стоят просто запредельные деньги — более 100 тыс. рублей. Я психологически не был готов потратить такие деньги на компьютер. Ограничил бюджет суммой 55 тыс. рублей и решил собрать «Хакинтош». Я немного слежу за тематикой «Хакинтош» и имею четкое представление, что «там и как».

Читать дальше →
Total votes 330: ↑239 and ↓91 +148
Comments 331

Что делать, если вам грозят 38 млрд. (или меньше) за нарушение авторских прав

Reading time 5 min
Views 11K
38 млрд. рублей! Этой суммы вполне бы хватило для закрытия внешнего долга — ну, например Албании. Оказалось — это ущерб, нанесенный известным отечественным и зарубежным компаниям.
Сумма фантастическая, особенно для супружеской пары с фамилией отличное от «Абрамович». Хочу заметить, что если все и далее пойдет по строгой букве закона, с буквальным трактованием и отсутствием вопросов суда к обвинению, то сумма может вырасти.
Читать дальше →
Total votes 295: ↑277 and ↓18 +259
Comments 272

Элиза

Reading time 5 min
Views 52K
Давным-давно, когда я был маленький, у меня не было друзей. Нет, правда, совсем-совсем не было. Я нуждался в общении, мечтал о ком-то близком, но понимания среди других людей найти не мог, и спасение находил лишь в книгах и компьютере. Вместе с первым CD-приводом появились мои первые компакт-диски с играми. Ты, наверное, помнишь такие: триста игр, пятьсот, семьсот… Кроме всяких аркад и шутеров, на одном из дисков была программа Диала — интерактивный собеседник.
Читать дальше →
Total votes 442: ↑385 and ↓57 +328
Comments 160

О понимании компьютерами текста

Reading time 5 min
Views 6.2K
Одна девушка-переводчица, задумчиво глядя в потолок, спросила меня: «А смогут когда-нибудь компьютеры понимать текст так же, как человек?» Тогда я не смог ответить на этот вопрос, но сейчас, обладая некоторыми знаниями в области семиотики текста, я уверен, что так же как человек компьютеры не смогут понимать текст никогда.

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

(Под компьютером я подразумеваю не абстрактный искусственный интеллект, а именно вычислительное устройство, выполняющее некий вычислительный процесс. Это важно.)

Читать дальше →
Total votes 84: ↑66 and ↓18 +48
Comments 145

Синдром вахтера

Reading time 4 min
Views 8.8K
Не так давно на Хабре многоуважаемый freetonik опубликовал прекрасный перевод видео с Ричардом Фейнманом. Среди многочисленных поучительных историй в нём меня очень зацепила одна — о том, как 13-летний Ричард пришел в библиотеку за книгой по мат.анализу и на вопрос библиотекаря «Зачем она тебе в твоём возрасте?» был вынужден соврать, что она для его отца. Ему тогда было стыдно и неловко. Нечто похожее было когда-то и в моей жизни.
Читать дальше →
Total votes 252: ↑227 and ↓25 +202
Comments 151

World of Warcraft — игра или цифровой наркотик?

Reading time 4 min
Views 4.6K

Предыстория


Пять лет прошло с того момента, когда один мой добрый товарищ подсадил меня на игру World of Warcraft прямо перед сессией, благодаря чему я чуть ее не завалил и не пополнил ряды вооруженных сил нашей доблестной страны. С тех пор я поменял кучу бесплатных серверов, а с переводом клиентской части игры на русский язык ушел на официальный сервер. И все было хорошо, университет благополучно окончен, пора искать работу. Но игра не спешила отпускать меня (или же я не спешил расставаться с игрой), благодаря чему я провел год в вялых поисках. Как вы наверно уже догадались, они прошли безрезультатно. Жить в таком режиме мне стало невмоготу, и собрав волю в кулак, заставил себя вспомнить, что в первую очередь я программист, а потом уже маг 85 уровня. Прощание с игрой прошло на удивление безболезненно, но чтоб окончательно отрубить концы, я продал свой игровой аккаунт.

Не для кого не секрет, что аудитория World of Warcraft составляет около 12 миллионов человек по всему миру, с возрастным разбросом от 14 до 60 (да-да, попадался мне один такой дедушка в чате гильдии) лет. И с высоты своего игрового стажа, мне стало интересно, что же держит в игре всех этих людей, и некоторые причины я, похоже, для себя определил.
Читать дальше →
Total votes 161: ↑99 and ↓62 +37
Comments 273

Формирование Excel-документов средствами PHP

Reading time 4 min
Views 3.1K
Возможность создания Excel-документов в общих чертах уже была описана на Хабре, но полной информации из этих статей мне получить не удалось. Пришлось заняться собственными изысканиями, результатами которых я хотел бы с Вами поделиться. Данная статья будет полезна и новичкам, и профессионалам, столкнувшимся с проблемой динамического формирования Excel-документов.
Это всего лишь первая часть серии статей, которыми хотелось бы поделиться с общественностью. В последующих статьях будут более подробно рассмотрены некоторые способы и нюансы выгрузки xls-файлов.

Ну, поехали...
Total votes 18: ↑16 and ↓2 +14
Comments 24

Android — новый Windows

Reading time 3 min
Views 5.8K
Накануне выхода аж четвертой (если считать только целочисленные) версии операционной системы для мобильных устройств от корпорации добра, я, наконец то собрался и приобрел себе андроидофон. Он пополнил зоопарк из iOS и Windows Mobile 6 (так что мне есть с чем сравнить). Сразу же после покупки (как, в общем- то и перед ней) началось освоение особенностей gingerbread'а, традиционное чтение форумов и faq'ов, и, вместе со знаниями об особенностях, слабостях и программном обеспечении, росло и усиливалось чувство дежавю.
Читать дальше →
Total votes 248: ↑126 and ↓122 +4
Comments 143

Information

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

Specialization

Backend Developer, Software Architect
Lead
From 300,000 ₽
PHP
High-loaded systems
Golang
Kubernetes
Redis
MongoDB
RabbitMQ
Apache Kafka
PostgreSQL