Как стать автором
Обновить
-11
1.2

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

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

Цинга возвращается и становится более распространенной

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

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

Читать далее
Всего голосов 13: ↑5 и ↓8-1
Комментарии21

Погружение в недра Apache Lucene: архитектура индекса, выполнение поиска и репликация данных

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров849

Это перевод моей статьи в моем блоге про архитектуру Apache Lucene, про одну из самых известных библиотек реализации поискового индекса. Elasticsearch и Solr, широко известные реализации масштабируемых решений для поиска, они используют эту библиотеку под капотом. Я работаю над созданием решений для поиска в сфере электронной коммерции, и постоянно сталкиваюсь с этой библиотекой при повседневной работе. Apache Lucene реализует большую часть необходимого функционала для построения поисковой системы. Начиная с процесса токенизации, который извлекает канонические формы слов в виде токенов, продолжая полной реализацией инвертированного индекса, и завершая репликацией сегментов в режиме близком к реальному времени. Количество практически полезных фичей, реализованных за два десялилетия существования библиотеки, колоссально. Эта библиотека интегрирует знания из лингвистики, математики и компьютерных наук.

Инвертированный индекс

Apache Lucene реализует архитектуру инвертированного индекса. На уровне реализации логический индекс содержит коллекцию неизменяемых сегментов, хранящихся как файлы в файловой системе. Каждый сегмент сам по себе является инвертированным индексом. Такой индекс — это структура данных словаря с терминами в качестве ключей и данными по размещению (postings) в качестве значений. Постинг — это список идентификаторов документов и количеств вхождений термина в данном документе. Этот словарь использует Finite State Transducers, FST [1] для поиска терминов, что можно представить как нечто похожее на отсортированные списки с пропусками [2]. Такая отсортированная навигационная карта является краеугольным камнем для эффективного поиска по огромным обьемам документов. Lucene также очень эффективен в использовании памяти. Среди прочих алгоритмов, он использует алгоритмы кодирования разницами для сжатия идентификаторов документов в постингах [3]. Упрощенно идея этого сжатия заключается в сортировке списока целых чисел и сохранения дельт между ними. Это также повышает производительность операций ввода-вывода диска.

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

Сложно ли генерировать 1024-битные простые числа?

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

Простые числа удивительны!

С одной стороны, их легко объяснить: это просто числа, которые делятся только на единицу и на себя; с другой стороны, они содержат в себе бесконечную сложность. Они встречаются во множестве разных сфер, от математических концепций и гипотез до любопытных визуализаций и криптографии, лежат в основе многих Интернет-стандартов и протоколов безопасности, которые мы используем ежедневно.

Несмотря на моё восхищение простыми числами, я никогда не исследовал их подробно, поэтому решил бросить себе вызов. А есть ли лучший способ изучить простые числа, чем воспользоваться моей любовью к кодингу для их генерации?

Вызов

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

Генерировать простые числа, способные генерировать ключи для алгоритма RSA

На момент написания этой статьи хорошей длиной ключей RSA считаются 2048 битов. Ключи RSA генерируются перемножением двух простых чисел, так что для получения 2048-битного ключа нам нужны два числа длиной примерно 1024 бита. Это ограничивает рамки задачи генерацией 1024-битных простых чисел. Теперь вы знаете, откуда взялось число из заголовка поста.

Читать далее
Всего голосов 56: ↑56 и ↓0+74
Комментарии24

Блокировка Docker Hub для России. Без паники разбираемся как работать дальше

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров74K

Главной новостью этой недели стала блокировка пользователей из России ресурсом Docker Hub. Она осуществляется по Geo IP.

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

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

Читать далее
Всего голосов 81: ↑77 и ↓4+93
Комментарии47

С 200 до 500 знаков в минуту — 4 года учусь писать код быстрее. Рассказываю о самых эффективных методах в статье

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

Опытные разработчики каждый день пишут тонны кода (а еще более опытные не пишут его совсем), и если ты хочешь быть продуктивным — нужно учиться писать быстрее. Сегодня на связи — Даниил Лихачев, python-разработчик в ДАЛЕЕ. Делюсь известными и не очень способами по ускорению написания кода. 

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

Альтернативная математика или математика собеседований

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

Устройство в крупную IT компанию — непростой и порой длительный процесс. Работода‑ тели в ходе многочисленных собеседований проверяют кандидата со всех сторон. В частности, оценивают его способности решать задач и технические навыки. В статье мы расскажем о том, как готовиться к прохождению технических собеседований по математике и алгоритмам в IT компании, как в целом проходит процесс устройства на работу. (1)

При устройстве в иностранный хедж‑фонд XQuant на среднюю позицию у вас будет два тестирования по математике и программированию, одно hr собеседование, шесть технических собеседований, три интервью с биг боссами, одно интервью на сошиал фит, часть интервью на английском языке. При устройстве аналитиком в российские IT‑компании (Яндекс, Авито, Тинькофф,...) количество технических собеседований может варьироваться (по нашим оценкам от 2 до 7), но минимум два по алгоритмам и математике пройти придётся.

Для оценки IQ кандидата (2) или того, насколько быстро, оригинально и глубоко он может мыслить, ему предлагают решить задачи по математике, алгоритмам, а также брейнтизеры — головоломки на общую сообразительность. Некоторые задачи стандартные, из школьных и вузов‑ ских учебников, но часто на собеседованиях предлагают нестандартные задачи. Такие, которые не встречались ни в школе, ни в вузе (и даже ни в баре и ни на дискотеке). Например, такого характера (3):

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

Лучшие практики для надёжной работы с RabbitMQ

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

Привет, Хабр! Я Женя, архитектор интеграционной платформы в Точке, отвечаю за асинхронный обмен сообщениями между внутренними сервисами, за ESB и за брокеры сообщений.

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

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

Следуй за белым кроликом
Всего голосов 58: ↑58 и ↓0+59
Комментарии16

Встречают по README — что нужно знать о документации

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

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

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

Должны ли разработчики писать документацию? Как это часто бывает, однозначного ответа на этот вопрос нет.

Сегодня поговорим об инструментах для сборки и работы с README, а также обсудим тему документации.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+23
Комментарии4

Это база: нюансы работы с Redis. Часть 2, репликация

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров9.1K

Всем привет, на связи Пётр, инженер компании Nixys. В прошлой статье мы разобрали основные концепции Redis. Теперь рассмотрим базовую репликацию Redis и настроим эту БД на высокий уровень отказоустойчивости.

Читать далее
Всего голосов 14: ↑14 и ↓0+16
Комментарии2

Импортозамещаем Evernote. Obsidian – менеджер заметок и лучший друг менеджеров

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

Привет, Хабр! Меня зовут Николай Суворов. Я – профессиональный менеджер, руководитель направления Delivery Management в МТС Digital. Занимаюсь Enablement Platform – единой платформой для быстрого создания продуктов в экосистеме МТС. Сегодня я расскажу о своем pet-проекте и о том, как я заменил привычный, но такой недоступный Evernote прекрасным менеджером заметок Obsidian. Статья будет интересна прежде всего тем, кто хочет обладать «вторым мозгом» и ни о чем не забывать.

Читать далее
Всего голосов 53: ↑53 и ↓0+53
Комментарии97

Часть 2. Управление знаниями в Obsidian. Базовый рабочий процесс. Журнал. Источники и их библиотеки. Пример

Уровень сложностиСложный
Время на прочтение44 мин
Количество просмотров195K

В этой статье будет показано как можно начать организовывать свою базу знаний в Obsidian, отталкиваясь от источников. В статье будет разобрано то, какие стоит использовать папки и теги; как создать свою первую точку входа в систему. Также будет уделено внимание способу ведения журнала (дневника). Статья будет предполагать, что вы не против автоматизации процессов в своей базе знаний, поэтому все источники будут шаблонизированы и впоследствии собраны в свои отдельные библиотеки с помощью Dataview. Завершится статья подробным примером (алгоритмом) рабочего процесса.

Погнали
Всего голосов 23: ↑20 и ↓3+19
Комментарии65

Часть 1. Управление знаниями в Obsidian. Обработка информации. Рабочий процесс. Источники информации. Работа с заметками

Уровень сложностиСложный
Время на прочтение40 мин
Количество просмотров229K

Этот текст открывает цикл статей по рассмотрению проблемы управления знаниями в Obsidian. Эта часть почти не будет содержать практических советов о работе с заметками конкретно в Obsidian. Однако в ней будут раскрыты несколько более важные проблемы обработки различных источников информации. Несмотря на последовательное перетекание статьи из одной главы в другую, вы можете попробовать каждый пункт рассматривать как идею, как хак или как возможность внедрить в свою жизнь и рабочий процесс что-то новое.

Начнём долгий путь
Всего голосов 34: ↑31 и ↓3+37
Комментарии77

Абсолютно бесплатный VPN с бесплатного VPS

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

Думаю про VPN слышали все, и многим приходилось им пользоваться. При этом использование готового VPN, которым руководит какой - то неизвестный человек, не является хорошей идей. Тем более в России на данный момент пытаются блокировать, как сами VPN провайдеры (Windscribe, Proton и другие известные сервисы), так и сами протоколы.

Читать далее
Всего голосов 86: ↑82 и ↓4+88
Комментарии112

Синхронный «запрос-ответ» с использованием REST и Apache Kafka

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

Подружить REST и Apache Kafka кажется нетривиальной задачей. Однако с ней удалось справиться экспертам Группы «Иннотех». Ведущий разработчик Кирилл Воронин рассказал подробности решения задачи перевода асинхронных запросов в синхронные.

Читать далее
Всего голосов 19: ↑9 и ↓10+2
Комментарии13

Чем различаются Kafka и RabbitMQ: простыми словами

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

Программные брокеры сообщения уже стали стандартом при построении больших и сложных систем. Однако до сих пор не все ИТ-специалисты понимают, как работают эти инструменты. Главный системный аналитик «Иннотех» Павел Малыгин помогает разобраться в брокерах сообщениях и их работе.

Читать далее
Всего голосов 56: ↑53 и ↓3+55
Комментарии33

Упс и опаньки… Юмору не место в сообщениях об ошибках

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

Сообщения об ошибках — чуть ли не единственное место, где пользователь программы может напрямую пообщаться с её автором. Ну как пообщаться… Ответить он всё равно ничего не сможет. Даже если сильно хочется. А иногда в сообщениях об ошибках такой треш, что действительно очень хочется ответить. Или просто взглянуть в глаза того инженера, который это сочинил.
Читать дальше →
Всего голосов 103: ↑80 и ↓23+87
Комментарии131

Чёрная пятница: история, факты и сервер в Нидерландах E5-2697 v3 (6 Cores) / 10GB DDR4 / 480GB SSD / 1Gbps за 9,5 USD

Время на прочтение4 мин
Количество просмотров5.5K
Вот уже много лет мы не проводили никаких распродаж в «чёрную» пятницу, так как наши цены одни из самых низких и мы всегда рады дать максимальную скидку для текущих и новых клиентов, но в этом году многим пришлось нелегко, и по этой причине мы решили поддержать наших потенциальных пользователей, в том числе читателей нашего блога на Хабре, которому в октябре исполнилось 10 лет, и позволить приобрести производительный сервер из статьи «Вся правда о VPS с выделенными накопителями» более, чем в 4 раза дешевле, да и еще с увеличенным в 2 раза по квоте выделенным SSD-хранилищем на накопителе enterprise уровня от Samsung.

Воспользуйтесь промокодом BLACKFRIDAY2022 при оплате услуги:

E5-2697 v3 (6 Cores) / 10GB DDR4 / 480GB SSD / 1Gbps 10TB — $19 / месяц (оплата на 2 года), $29 / месяц (оплата на год), $39 помесячно. Услуга доступна в Нидерландах с NL и RU GEO IP.

Для получения 50% дополнительной одноразовой скидки на любой из выбранных периодов оплаты. Таким образом, оплатив сервер на 2 года, Вы сможете получить его всего лишь за 9,5 USD в месяц. Захотите апгрейд в будущем или перейти на выделенный сервер? Нет проблем. Нужно будет просто оплатить разницу. Заказать сервер можно здесь.

Что же касается самой «Чёрной пятницы», «киберпонедельника», и «дня, когда ничего не нужно покупать», то история и несколько интересных фактов под катом.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+17
Комментарии21

Информация

В рейтинге
1 521-й
Откуда
Россия
Зарегистрирован
Активность