Как стать автором
Обновить
0
0
Михаил @Mikaelo

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

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

А в чем проблема работать с файлами?

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

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

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

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

Как работает multiprocessing в Python под капотом

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

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

Мне захотелось залезть в исходники multiprocessing, разобраться и заодно написать статью. Данная статья в основном рассчитана на новичков в Python и тех, кто хочет подробнее разобраться в том, как именно создаются процессы и пулы в Python и погрузиться в детали реализации.

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

Работа архитектора решений. Взгляд изнутри

Время на прочтение 10 мин
Количество просмотров 972

Путь разработчика долог и порой тернист. Но когда ты идёшь от junior к middle, всё понятно — есть задачи, старшие наставники, миллионы курсов. Движение от middle к senior уже сложнее. Теперь не ты обращаешься к коллегам за советами, а всё чаще они приходят к тебе. Но вот ты senior. Дальше можно менять предметную область или язык.

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

В этой статье я расскажу про суть работы архитектора решений. Перейдём к знакомству?

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

5 способов писать эффективный код на Go: от названий переменных до архитектуры

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

Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалев и эксперт по разработке ПО Даниил Подольский обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом. 

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

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 7

Как я отрендерил миллион строк в React

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

Недавно я столкнулся с задачей, известной как one billion row challenge. Два аспекта этого вызова меня заинтриговали:

1. Каковы будут последствия, если я попробую решить этот вызов на фронтенде?

2. Удастся ли мне это?

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

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

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

Использование diagnostic observers для изоляции кода логгирования

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

В этой статье мы рассмотрим использование DiagnosticListener для изоляции кода, отвечающего за логгирование инфраструктурных операций - таких как работа с базой данных и отправка и получение HTTP запросов.

Класс DiagnosticListener определен в пакете System.Diagnostics, и особенности его использования описаны в разных статьях, включая одну-две на Хабре.

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

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

Настраиваем CI/CD с GitHub Actions и werf: инструкция для новичков

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

В этой статье мы рассмотрим, как настроить пайплайн CI/CD в GitHub: подготовим репозиторий, зальём туда приложение, создадим файлы конфигурации GitHub Actions, в которых опишем, как собирать наше приложение и деплоить его в кластер Kubernetes, развёрнутый под управлением Deckhouse Kubernetes Platform. Деплоить будем с помощью Open Source CLI-утилиты werf. Она помогает организовать полный цикл доставки приложений в Kubernetes и рассматривает Git как единый источник истины для состояния развёрнутого приложения. Статья рассчитана на тех, кто только начинает свой путь в мире облаков и кластеризации.

Читать далее
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 1

Сложная архитектура простых приложений

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

По мотивам Adidas Running (ex. Runtastic)

Как я бы проектировал это интересное, но малоизвестное у нас приложение в роли архитектора.

Предыстория

Рынка систем электронных соревнований (в 2012 г) нет, но есть огромный интерес к спортивному образу жизни и к соревнованиям. В США не менее 50 миллионов (!) человек (это примерно 15% всего населения) хотя бы раз в неделю выходят на пробежку.

Адидас имеет объем продаж 20–30 млрд долл. в год.

Основной рынок – США, остальные страны – второстепенные рынки.

Посмотреть архитектуру
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 3

Пишу Minecraft сервера с нуля. Часть 1. Пинг

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

Этот цикл статей о разработке серверного ПО совместимого с протоколом Minecraft: Java Edition.

В этой части я акцентирую внимание на основных вещах: типы данных, структура пакетов и как клиент получает информацию о сервере.

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

Эксплуатируем переполнение буфера в простом TCP-сервере

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

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

Специально для этого примера я скомпилировал уязвимый TCP‑сервер, который принимает подключения через порт 3301 (Цикада?).

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

Дизайн высоконагруженных приложений будущего. Путешествие без сценария с Мартином Клеппманом

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

Jesse Anderson, директор Big Data Institute, и Martin Kleppmann, автор книги «Высоконагруженные приложения. Программирование, масштабирование, поддержка», вместе исследуют меняющийся ландшафт обработки данных. Они начинают с истории создания книги Мартина, подчеркивая важность искусства задавать правильные вопросы. Мартин рассказывает об изменениях, произошедших в отрасли с 2017 года, подчеркивая рост облачных сервисов. Затем беседа приобретает новый поворот, когда Мартин погружается в академические круги, делясь своими соображениями о программном обеспечении для совместной работы на основе локального подхода и увлекательном мире Automerge. Начинающие инженеры‑программисты получат несколько советов о том, как найти тонкий баланс между простотой и гибкостью. В завершение обсуждают о различных карьерных путях в динамичной сфере инженерии данных, что делает разговор полезным для профессионалов на любом этапе их пути.

Читать далее
Рейтинг 0
Комментарии 0

Как сделать связанный сервер для распределенной базы данных. (MSSQL + Postgre)

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

Материал подойдет для студентов и тех кто только начинает создавать распределенные базы данных.

Всем доброго дня, дорогие Хабровчане! Решил поделиться созданием связаннх серверов, поскольку информации в интеренете много, но не везде описываются все мелочи.

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

Ranking Functions: ROW_NUMBER

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

Четыре функции ранжирования: ROW_NUMBER, RANK, DENSE_RANK и NTILE появились в SQL Server 2005 и отличаются от обычных скалярных функций тем, что результат, который они выдают для строки, зависит от других строк выборки. От агрегатных функций они отличаются тем, что возвращают только одну строку для каждой строки на входе, т. е. они не объединяют набор строк в одну. В этой статье мы рассмотрим ROW_NUMBER — самую простую из всех функций ранжирования.

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

TOTP без смартфона

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

Когда я решил избавиться от необходимости постоянно носить с собой смартфон, одной из проблем оказалась двухфакторная аутентификация (2FA, приложение Google Authenticator). Остаться без возможности авторизации на множестве сервисов было неприемлемо, нужна была альтернатива.

Беглый поиск вывел меня на утилиту oathtool: командная строка, POSIX, OSS — всё, как я люблю, проблема в принципе решена. Но, как и большинство CLI утилит, её удобно использовать в сочетании с другими утилитами, а для этого полезно написать скриптовую обвязку. Собственно этой обвязкой, а также опытом использования, я и решил поделиться.

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

Домашняя виртуальная лаборатория. Готовим собственный сервер виртуализации для обучения. 2. Выбираем сервер

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

В предыдущем уроке мы проговорили для чего может понадобиться домашняя лаборатория и самое главное — кому она нужна. Допустим вы решили, что вам она нужна. Тут же встанет вопрос: «На чем строить эту виртуальную лабораторию?». Вопрос не такой простой, как может показаться на первый взгляд. Как минимум здесь два важных пункта, которые очень тесно связаны друг с другом:

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

ChatGPT для изучения программирования. Не очевидные примеры

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

Сценарии использования ИИ для учебы на поверхности. Тот же ChatGPT как стандарт по умолчанию студенты (да и преподаватели тоже) используют для написания текстов (рефераты, курсовые, дипломы и тому подобное), для анализа данных, изучения языков и, конечно же, для решения задач. Поговорим же здесь про то, как можно использовать ChatGPT для обучения программированию. Типично, студенты и школьники «скармливают» чату условие своей задачки, а на выходе получают код программы на требуемом языке. Часто чат дает еще и объяснения основных моментов в коде, рассказывает про алгоритм. Так можно учиться программированию, имея под боком «умного» консультанта. Не всегда, правда, код чата адекватен, а решения полные. Но, это очевидные вещи. Попробуем тут составить список примеров, которые могут быть полезны и тем, кто изучает программирование и тем кто учит. Начнем с простого.

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

Как получить Midjourney’s API

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

В этой статье показано, как полный функционал Midjourney с помощью АПИ

Для этой задачи вам понадобится учетная запись Discord с активной подпиской Midjourney, подойдет базовый план за 10 долларов.

Читать далее
Всего голосов 7: ↑3 и ↓4 -1
Комментарии 4

Мигрируем с SQL Server на PostgreSQL двумя способами

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

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

Однако из-за ряда ограничений SQL Server постепенно теряет своих пользователей. SQL Server имеет достаточно сковывающую лицензию и стоимость обслуживания, растущую по мере увеличения размера базы данных или числа клиентов. Ее максимальный размер составляет 10 ГБ, а буферный кэш — 1 МБ. Она работает только под Windows.

Переманить же пользователей SQL Server может PostgreSQL — полностью бесплатная база данных с открытым исходным кодом. Эта база данных может похвастаться поддержкой международного сообщества и доступна под Windows, Mac, Linux, FreeBSD и Solaris. Кроме того, для нее существуют множество опенсорсных дополнений.

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

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

Самый простой гайд по созданию бота для анализа сообщений в Telegram

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

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

В этой статье рассказываем, как с помощью нейросети создать бота, который собирает и обрабатывает информацию из сообщений, и задеплоить его на облачный сервер.
Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 5

Async/await. Куда делся thread.  Инверсия асинхронности. Разоблачение мистификации

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

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

Конечно, многие обиделись на меня за то, что я посмел возражать признанному авторитету, который вынес в заголовок своей очень известной работы фразу There is no thread (Там нет потока) ведь хорошо известно, что: «нет пророка в своем отечестве», и, видимо, быть не должно, но это все эмоции.

Давайте я покажу, как преобразовать мой пример, чтобы он продемонстрировал не только то самое «экономное использование потоков», но и откуда оно берется.

Читать далее
Всего голосов 13: ↑2 и ↓11 -9
Комментарии 23

Информация

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