Как стать автором
Обновить
12
0
Колосов Никита @Anexroid

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

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

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

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.2K
image

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

Готовьтесь


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

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

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

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

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

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

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

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

Время на прочтение5 мин
Количество просмотров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, прочтите это.

Читать далее
Всего голосов 20: ↑16 и ↓4+12
Комментарии9

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

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

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

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

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

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

Читать далее
Всего голосов 19: ↑11 и ↓8+3
Комментарии11

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

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

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

Читать далее
Всего голосов 74: ↑73 и ↓1+72
Комментарии54

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

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

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

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

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

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии1

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

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

image

Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии20

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

Время на прочтение3 мин
Количество просмотров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 обычно отыскивается раньше, чем проходится весь цикл.
Читать дальше →
Всего голосов 18: ↑11 и ↓7+4
Комментарии16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров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 тыс. рублей и решил собрать «Хакинтош». Я немного слежу за тематикой «Хакинтош» и имею четкое представление, что «там и как».

Читать дальше →
Всего голосов 330: ↑239 и ↓91+148
Комментарии331

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

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

Элиза

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

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

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

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

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

Читать дальше →
Всего голосов 84: ↑66 и ↓18+48
Комментарии145

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

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

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

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

Предыстория


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

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

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

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

Ну, поехали...
Всего голосов 18: ↑16 и ↓2+14
Комментарии24

Android — новый Windows

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

Информация

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

Специализация

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