Pull to refresh
5
0

software developer

Send message

Кащеева смерть — защищаем свои пароли с помощью аппаратного хранилища ключей Android

Reading time3 min
Views5.3K

Несколько лет назад меня начала посещать мысль, что менеджеры паролей всё-таки «для честных людей». Как раз все встречные и поперечные стали заявлять, что у них теперь сквозное шифрование… И настали типа спокойные и безопасные времена (ну если не считать миллиардов, которые крадут с криптобирж каждый второй день, прослушки всех этих чатов со сквозным шифрованием, слива баз паролей, взлома LastPass…)

Короче, решил я замутить что-то своё, чтоб не хранить все свои доступы удобно (не)доступными в одном файле KeePass, а то ведь мало ли что. Просто так, из принципа. Биткойнов не держу.

Шли годы…

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments3

Проверка XML. Schematron

Level of difficultyHard
Reading time9 min
Views6K

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

Недавно мне довелось поучаствовать в проекте, особую роль в котором занимают функции форматно-логического контроля входящих документов. Как следствие, у меня появились некоторые варианты решения подобных задач. Одним из них я и хочу поделиться.
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments1

Retry or No?

Reading time17 min
Views6.5K

В этой статье разберем вариант реализации функционала перезапроса сообщений из семейства resilience шаблонов. Мы поговорим о retry. Точнее обсудим:

1. Что такое устойчивость и какое влияние на нее имеет retry?

2. Анализируем, где применять retry;

3. Реализуем retry;

4. Пишем unit-тесты с wiremock;

5.Делаем starter;

Читать
Total votes 6: ↑5 and ↓1+4
Comments33

Boson — разработка СУБД «с нуля» (часть II)

Reading time6 min
Views4.5K

В первой части статьи мы обсуждали разработку самого нижнего слоя СУБД Boson - CachedFileIO. Как упоминалось, статистика такого явления как Locality of Reference говорит о том, что в реальных приложениях ~95% запросов к данным локализованы в 10-15% базы данных. При этом среднее соотношение чтения/записи - 70%/30%. Это делает эффективным использование кэша (cache) работающего на основе алгоритма Least Recently Used (LRU). Реализовав его, мы получили 260%-600% прироста скорости чтения при 87%-97% cache hits.

Следующим после кэша слоем СУБД Boson является хранилище записей RecordFileIO. Это уже первый прообраз базы данных, который начинает приносить прикладную пользу. Сформулируем верхнеуровневую спецификацию требований:

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments30

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Reading time43 min
Views28K

Наступил Апокалипсис.

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

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт
Total votes 66: ↑65 and ↓1+64
Comments62

PostgreSQL под капотом. Часть 0. Старт программы

Reading time17 min
Views14K

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments2

Ищем имена с опечатками в PostgreSQL

Reading time12 min
Views33K
Все началось с того, что мне нужно было разработать поиск пациентов для одной внутренней медицинской системы. Логика работы была в том, что если мы не нашли человека в системе, то его нужно создать (а дубли пациентов плодить нельзя). В связи с этим одной из подзадач стала реализация поиска людей с учетом опечаток в их именах. Ну а поскольку я люблю PostgreSQL (а когда в руках у тебя молоток, то все похоже на гвозди), не сложно угадать, на чем я решил реализовать поиск с опечатками…


Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments29

Это маленькое чудо — алгоритм Кнута-Морриса-Пратта (КМП)

Reading time9 min
Views173K
Алгоритм Кнута-Морриса-Пратта используется для поиска подстроки (образца) в строке. Кажется, что может быть проще: двигаемся по строке и сравниваем последовательно символы с образцом. Не совпало, перемещаем начало сравнения на один шаг и снова сравниваем. И так до тех пор, пока не найдем образец или не достигнем конца строки.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments57

Строковые алгоритмы на практике. Часть 1 — Алгоритм Кнута — Морриса — Пратта

Reading time8 min
Views24K

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


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

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments9

Что вам нужно знать о внешних загрузочных дисках

Reading time5 min
Views21K

Сейчас, по прошествию многих лет, начинаешь осознавать, что CD-ROM и DVD-ROM уходят в прошлое. Им на замену пришли флеш-накопители и внешние жесткие диски. Многие операционные системы уже поддерживают установку с флеш-накопителей, но, тем не менее, почти все дистрибутивы операционных систем поставляются в виде образов (файлов с расширением .iso), которые де-факто являются стандартом по распространению дистрибутивов операционных систем. Специальной программой на оптическом диске создается файловая система на основе информации из ISO файла.

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

Читать далее
Total votes 31: ↑28 and ↓3+25
Comments97

Как Postgres хранит строки

Reading time6 min
Views18K

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

Мы будем рассматривать только файлы кучи (heap). Heap-файл — это просто файл записей. Не путайте heap-файл с heap-памятью. Хотя их использование очень похоже: хранение динамических данных.

Читать далее
Total votes 23: ↑20 and ↓3+17
Comments5

Увлажнители «Ультразвук» vs «Естественное увлажнение» (история использования) + life-хаки

Reading time6 min
Views20K

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

Поскольку для IT-специалистов вопросы микроклимата помещения стоят особенно остро, ввиду нового тренда на удаленную работу, то прошу присоединиться под кат.

Читать далее
Total votes 28: ↑23 and ↓5+18
Comments116

Пакуем секреты правильно

Reading time3 min
Views14K

Безопасное хранение и передача секретов (токенов, паролей и т.п.) между пользователями и сервисами – это один из вызовов, с которыми сталкиваются разработчики и DevOps инженеры. Традиционные централизованное хранение в менеджерах паролей, например, полностью проблему не решает, а лишь смещает её в сторону управления мастер-паролями, которые, к тому же, становятся «ключами к царству» и компрометация которых может иметь катастрофические последствия. Данную проблему «курицы и яйца» ещё иногда называют проблемой «нулевого секрета» (Secret Zero Problem). В этой заметке я расскажу о попытке решить эту проблему при помощи механизма обёртки ответа (Response Wrapping).

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments6

B-Tree индекс и его производные в PostgreSQL

Reading time18 min
Views29K

Меня зовут Азат Якупов, я люблю данные и люблю использовать их в разных задачах. Сегодня хочу поделиться своим опытом относительно B-Tree индексов в PostgreSQL. Рассмотрим их топологию, синтаксис, функциональные B-Tree индексы, условные B-Tree индексы и включенные B-Tree индексы.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments0

Что такое катастрофический возврат и как регулярное выражение может стать причиной ReDoS-уязвимости?

Reading time8 min
Views6.3K

Регулярные выражения – очень полезный и удобный инструмент для поиска и замены текста. Однако в некоторых случаях они могут привести к зависанию системы или даже стать причиной уязвимости к ReDoS-атакам.

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments16

Валютный резидент РФ — обязанности, требования и ограничения валютного законодательства 2023 г

Reading time12 min
Views35K

После начала военной операции России в Украине в 2022 году сотни тысяч граждан РФ стали вынужденными переселенцами по политическим убеждениям, страха за будущее и жизнь своих близких, а многие предприниматели были вынуждены релоцировать бизнес по причине санкций против банковского сектора РФ.

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

Читать далее
Total votes 14: ↑10 and ↓4+6
Comments32

PostgreSQL: пример использования диапазонного типа данных при расчете коэффициента возраст-стаж в ОСАГО

Reading time4 min
Views4.4K

В этой статье рассматриваются преимущества такого редко используемого и, на мой взгляд, незаслуженно обойденного вниманием типа данных, как диапазон. Мы сначала спроектируем структуру базы для хранения коэффициента возраст-стаж при расчете стоимости полиса ОСАГО в рамках привычной многим MySQL. Затем перепроектируем под PostgreSQL и посмотрим, как выглядят sql запросы в обоих случаях. И в финале сравним, какие преимущества дает нам использование диапазонов.

Заметка адресована как пользователям MySQL, так и пользователям PostgreSQL, которые не работали с таким типом данных в своей практике. Если в вашей предметной области есть работа с диапазонами величин, то этот пост точно для вас.

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments22

Что такое клиринг, как он работает и реализован на примере платёжной системы «Мир»

Reading time9 min
Views21K

Покупки с помощью карты стали неотъемлемым атрибутом современной жизни. В прошлом году жители нашей страны совершили более 21 миллиарда операций банковскими картами. На примере работы клиринговой системы ПС «Мир» рассмотрим, что делается, чтобы справляться с регулярно возрастающей нагрузкой. В частности, разберём, какие используются технологии и архитектурные решения.

Меня зовут Наталья Азисова, я product owner клиринговой системы в ПС «Мир». Каждое утро вторника я думаю о том, какой суперсрочной задачей нагрузить разработку, а к вечеру — как отложить её на пару месяцев. Спасает меня от праведного гнева разработки только то, что делаю я это со стилем.

Итак, что такое клиринг, как он работает и реализован на примере платежной системы «Мир» - читайте под катом.

Читать далее
Total votes 31: ↑29 and ↓2+27
Comments35

Вы уверены? Как писать тексты для экранов подтверждения

Reading time3 min
Views20K

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

В этой статье собрала основные принципы создания текстов для экранов подтверждения, которым следуют Apple, Microsoft и Google.

Читать далее
Total votes 95: ↑95 and ↓0+95
Comments71
1
23 ...

Information

Rating
Does not participate
Registered
Activity