Pull to refresh
0
0
Шумов Никита@krozzzis

User

Send message

11 граблей распределенных систем: личный опыт backend-разработчика с практическими советами

Level of difficultyMedium
Reading time11 min
Reach and readers12K

Всем привет! Меня зовут Сергей, я занимаюсь backend-разработкой уже больше 15 лет, а последние несколько лет разрабатываю объектное хранилище для ваших файлов в компании Сloud.ru. Мы пишем свое собственное распределенное хранилище данных с нуля.

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

Читать статью

Самый маленький Docker образ Rust приложения

Level of difficultyMedium
Reading time5 min
Reach and readers15K

Привет %username%, эта статья про то, как поместить Rust приложение в Docker и получить образ размером с бинарный файл (6 Мб). А также про причины, которые привели к переходу с NodeJS на Rust. Отдельная пара слов о проблемах вначале, переходе на Go, и том, как команда Rust устранила эти проблемы за пол года.

TL;DR Dockerfile в конце статьи и ссылка на example репозиторий

Читать далее

Google Dorking или используем Гугл на максимум

Reading time21 min
Reach and readers454K

Вступление


Google Dorks или Google Hacking — техника, используемая СМИ, следственными органами, инженерами по безопасности и любыми пользователями для создания запросов в различных поисковых системах для обнаружения скрытой информации и уязвимостях, которые можно обнаружить на общедоступных серверах. Это метод, в котором обычные запросы на поиск веб-сайтов используются в полную меру для определения информации, скрытой на поверхности.
Читать дальше →

Офис Павла Дурова в Дубае

Level of difficultyEasy
Reading time4 min
Reach and readers68K

Здравствуйте. Сейчас я применив GEOINT (геопространственная разведка) попытаюсь найти офис Павла Дурова в Объединённых Арабских Эмиратах.

Читать далее

Наша Вселенная — симуляция на основе большого клеточного автомата?

Level of difficultyMedium
Reading time17 min
Reach and readers55K

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

А также мы рассмотрим практический вопрос: что это может значить лично для нас, если симуляционная теория верна.

Читать далее

Как я победил в RAG Challenge: от нуля до SoTA за один конкурс

Level of difficultyMedium
Reading time23 min
Reach and readers28K

Когда новичок пытается построить свою первую вопросно-ответную LLM систему, он быстро узнаёт, что базовый RAG - это для малышей и его нужно "прокачивать" модными техниками: Hybrid Search, Parent Document Retrieval, Reranking и десятки других непонятных терминов.
Глаза разбегаются, наступает паралич выбора, ладошки потеют.

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

Теперь рассказываю, какие техники оказались полезными, а какие нет, и как повторить мой результат.

Читать далее

Rust: объясняем Владение и Субструктурные типы на пальцах

Reading time14 min
Reach and readers3.5K

Системы типов помогают разработчикам создавать надежные и безопасные программы. Однако такие термины, как «субструктурные типы» или «владение», нередко кажутся сложными и трудными для понимания, особенно для тех, кто не сталкивался с теорией типов в академической среде.

Новый перевод от команды МойОфис расскажет вам, как субструктурные типы и система владения в Rust помогают создавать безопасные и эффективные программы. Автор разбирает ключевые теоретические аспекты, выясняет, какие преимущества они предоставляют, и показывает, почему их использование становится неотъемлемой частью разработки современных языков. Вы узнаете, как субструктурные типы помогают обеспечивать безопасность и жизнеспособность программ, а также познакомитесь с идеями и проблемами их внедрения на практике.

Читать далее

Умный принт-сервер: печать и скан без драйверов на старых принтерах + финансирование опенсорса

Level of difficultyEasy
Reading time18 min
Reach and readers30K

TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.

Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.

Читать далее

Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода

Level of difficultyHard
Reading time15 min
Reach and readers6.9K

Совершать невозможное и раздавать пинки здравому смыслу — в этом и состоит жизнь членов Гуррен-Дана! (C) Камина

Эта статья вступает в техническую полемику со статьей 2015 года за авторством Atakua, подходы из которой я и атакую. Atakua исследует 7 видов интерпретаторов байткода, но делает это без уважения - быстрейшей оказывается двоичная трансляция, которая, по сути, уже не интерпретатор байткода, а форма Ahead-Of-Time компилятора. Эта двоичная трансляция транслирует байткод в машинный код, представляющий собой цепочку вызовов скомпилированных сервисных процедур. Тех самых, что в интерпретаторе байткода отвечают за выполнение каждого опкода.

Но Atakua не выжал из интерпретаторов байткода всю скорость которая возможна. Так что эта статья - туториал: как написать интерпретатор байткода, который может обгонять JIT/AOT-компиляцию по скорости. Интересно? Читайте дальше!

Бенчмарк прилагается. Будет немного хардкора и ни одной сгенерированной нейросетью картинки!

Читать далее

Некоторые малоизвестные фичи, фокусы и причуды языка C

Reading time19 min
Reach and readers22K

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

ВНИМАНИЕ: сам факт попадания тех или иных вещей в эту подборку  не означает автоматически, что я рекомендую или, наоборот, не рекомендую ими пользоваться! Некоторые из приведённых примеров никогда не должны просачиваться за пределы списков наподобие этого, тогда как другие примеры невероятно полезны! Уверен, что могу положиться на ваш здравый смысл, дорогие читатели.

Читать далее

Пользовательские интерфейсы в упадке

Reading time5 min
Reach and readers13K
Когда у нас впервые появились персональные компьютеры, мы не слишком заботились о том, каково с ними работать. По правде сказать, мы были слишком потрясены тем, что у нас вообще есть нечто подобное. Чтобы ввести команду DOS, нужно было выучить какой-то секретный язык. Нам и в голову не приходило, что пользоваться компьютером сложно или неудобно. Но постепенно компьютеры становились более продвинутыми и, когда появился первый Macintosh со своим мощным графическим пользовательским интерфейсом, мы стали осознавать, что процесс взаимодействия с компьютером тоже имеет для нас значение.

Программистам теперь приходилось думать не только о том, как программа справится с задачей, но и о том, как пользователь справится с программой, чтобы выполнить задачу. Стало ясно, что хороший пользовательский интерфейс может повысить продажи. Если приложение простое и интуитивное в использовании, пользователи большего с ним добьются и останутся довольны.
Читать дальше →

Зачем в школах изучать Pascal, если самый популярный язык программирования в мире — JavaScript?

Level of difficultyEasy
Reading time9 min
Reach and readers28K

Проблема «учим одно, а на практике требуется другое» хорошо известна. Но не слишком ли большие ожидания связаны с уроками по информатике? Или есть ожидание того, что после уроков музыки дети будут музыкантами, труда — мастерами, а рисования — художниками?

Зачем вообще привязываться к школе? Если кто-то считает, что лучше изучить Питон, то дайте возможность ребенку изучить Питон, если C++, то С++ и т. д. Или "болит душа" за всех детей страны?

Но тогда могут возникнуть вопросы к любому уроку. Зачем на уроках труда шкурить древко лопаты, если на практике с большей вероятностью придётся что-то паять? Зачем на физкультуре ходить на лыжах, если в жизни чаще придётся бегать (чтобы успеть на общественный транспорт). Если считаете, что лучше паять и бегать — занимайтесь с ребенком этим.

Учитель информатики и программист — это две разные профессии. А уроки информатики — это не занятия по программированию, а порой такая же теоретическая дисциплина для общего развития, как в среднем 80-90% уроков в школе.

Читать далее

Rust — это не «memory safe C»

Level of difficultyMedium
Reading time27 min
Reach and readers59K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее

Мой MikroTik – моя цифровая крепость (часть 1)

Reading time10 min
Reach and readers164K
В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, расширяющего имеющиеся штатные возможности, что в комплексе позволяет качественно администрировать сетевые средства, а также своевременно реагировать на различные угрозы информационной безопасности.
Читать дальше →

Настоящее предназначение OpenAI SORA: как и зачем симулировать «Матрицу» для ChatGPT

Level of difficultyMedium
Reading time41 min
Reach and readers120K

Ну что, уже успели прочитать восхищения небывалым качеством видео от нейросетки SORA у всех блогеров и новостных изданий? А теперь мы вам расскажем то, о чем не написал никто: чего на самом деле пытается добиться OpenAI с помощью этой модели, как связана генерация видео с самоездящими машинами и AGI, а также при чем здесь культовая «Матрица».

Войти в симуляцию →

Цифровая диктатура и демократия через цифровую общественную инфраструктуру и Web3. Где ваша страна сейчас?

Reading time15 min
Reach and readers4.2K

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

Согласно новому взгляду на будущее цифровой демократии, она должна использовать децентрализованные цифровые инструменты цифровой общественной инфраструктуры (DPI) для достижения всеобщего прогресса и развития. Этими инструментами должны быть децентрализованное голосование, цифровая идентификация, цифровые деньги. Каждая из этих категорий взаимно связывается в реальном времени с остальными категориями. Эти технологии также в совокупности называются Web3.

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

Читать далее

Личный прокси для чайников: универсальный обход цензуры с помощью VPS, 3X-UI, Reality/CDN и Warp

Level of difficultyMedium
Reading time28 min
Reach and readers378K

> С 10 апреля 2024, 3 месяца спустя,
> данная статья заблокирована РКН на территории РФ,
> её также удалили с веб-архива archive.org.
> Статья на Хабре осталась доступна с IP других стран.
> Да, теперь, чтобы читать про ВПН, нужен ВПН.

На фоне прошлогоднего обострения цензуры в РФ, статьи автора MiraclePTR стали глотком свободы для многих русскоязычных айтишников. Я же хочу приоткрыть дверь к свободной информации чуть шире и пригласить «не‑технарей» («чайников»), желающих поднять личный прокси‑сервер для обхода цензуры, но дезориентированных обилием информации или остановленных непонятной технической ошибкой.

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

Статья рассчитана на «чайников», не знакомых с предметной областью. Однако и люди «в теме» могут найти нечто полезное (например, чуть более простую настройку проксирования через CloudFlare без необходимости поднимать nginx на VPS).

Если у вас ещё нет личного прокси для обхода цензуры — это знак.

Читать далее

Как написать FizzBuzz на собеседовании

Reading time31 min
Reach and readers63K

Здравствуй, Хабр.


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

Читать дальше →

Арифметика первого класса в системе типов Rust

Level of difficultyMedium
Reading time8 min
Reach and readers9.5K

Арифметика – наука непростая, но к нашему удобству работу с ней можно облегчить с помощью экспрессивной системы типов языка Rust. В статье мы разберём реализацию на этом языке простейших математических операций, таких как сложение, вычитание, умножение и деление.
Читать дальше →

Сказ о том, как я за год решил более 600 leetcode задач

Level of difficultyEasy
Reading time7 min
Reach and readers186K

Всем салют!

Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Десктоп разработчик, Бэкенд разработчик
Rust
Linux