Как стать автором
Обновить
-4
0.1
Kirill Naumenko @ReDev1L

Web Software Engineer / Architect / CTO

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 171: ↑170 и ↓1+169
Комментарии23

MERGE и её улучшение производительности с помощью work_mem

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

С выходом PostgreSQL 15 мы застали появление долгожданной команды MERGE, которая позволяет реализовывать эффективные способы синхронизации обновлений.

Суть MERGE заключается в ее универсальности: она позволяет объединить операции INSERT, UPDATE и DELETE в одном запросе, автоматически выбирая нужное действие в зависимости от того, существует ли соответствующая запись в целевой таблице.

Вместо нескольких отдельных запросов INSERT, UPDATE, DELETE MERGE сокращает накладные расходы на сетевой трафик и уменьшает количество обращений к диску. MERGE облегчает реализацию шаблонов SCD и других сложных сценариев управления данными.

MERGE в PostgreSQL работает с соблюдением строгих стандартов SQL, обеспечивая совместимость и переносимость кода. Также PostgreSQL обрабатывает конфликты на уровне строк, позволяя тонко настраивать логику обработки данных с использованием условий WHEN MATCHED и WHEN NOT MATCHED.

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

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

Руководство по проектированию интерфейсов с Drag and Drop

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

Всем привет! Меня зовут Александр Григоренко, я фронтенд-разработчик, и я часто сталкиваюсь с разработкой веб-интерфейсов с использованием Drag and Drop. В своей предыдущей статье про Drag and Drop я рассказывал про историю появления и развития этого подхода: появившись в первом в мире графическом интерфейсе, Drag and Drop продолжает быть одной из самых актуальных технологий и на сегодняшний день. В этой статье я хочу поговорить об особенностях проектирования дизайна и юзабилити интерфейсов с Drag and Drop. В первую очередь, я буду приводить примеры и говорить об особенностях Drag and Drop в рамках сложившихся практик в современных веб-интерфейсах, но многое из этого будет справедливо и для интерфейсов классических настольных приложений.

Устроиться поудобнее и читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии12

Как мы используем Puppeteer для создания Open Graph изображений с Node.js

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

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

Узнать больше
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Неклассическое чтение для руководителей: книги по стратегическому управлению от ведущих ученых и отчеты аналитиков

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

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

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

Организуем High Availability PostgreSQL

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

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

Читать далее
Всего голосов 20: ↑17 и ↓3+14
Комментарии28

А далее наша планета попробует в IT без генералистов

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

Простите, я тут повангую и поностальгирую немного. Когда-то, лет в 22-25, я "почти все знал про IT". Конечно, не в полной мере, но имел представление обо всем, какой-то хотя бы небольшой опыт во многом. Да, отчасти это можно списать на юношескую самоуверенность и Даннинга-Крюгера (где-то я возможно не видел границы своей некомпетентности), но только отчасти.

Я считаю себя генералистом. То есть, такой "универсальный солдат", могу кун-фу, могу самбо, могу стрелять из гаубицы и из лука, управлять гироскутером, камазом и звездолетом, и все это делаю одинаково плохо (но, тем не менее, гравицапу установить и координаты в тентуре расчитать смогу). Думаю, что я достаточно важный и ценный сотрудник там, где я работаю, и очень неплохо зарабатываю, в пересчете на час работы. Однако, если бы я пошел на собеседование на более скромную позицию какого-нибудь программиста или админа - наверняка завалил бы продвинутые тесты по множеству тем, кроме нескольких. Любой узкий специалист который 10 лет делает одно дело, знает это дело лучше и глубже.

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

К примеру, MySQL и PostgreSQL вышли в середине 90-ых. Тогда было несложно знать эти новые крошечные и простые проекты. Отработал JOIN слева, JOIN справа - и вот у тебя уже черный пояс по SQL, а значит и по базам данных в целом (потому что больше пока что ничего просто и нет). До появления Redis (key-value) было еще 10+ лет, до CockroachDB и Prometheus - 20 лет - можно было ничего о них не знать, и быть полноценным гуру в СУБД с полными знаниями о теме! Сейчас я не уверен, что смогу назвать даже все типы СУБД которые есть (реляционные, key-value, документные, графовые, time-series, ....), не говоря уже о названиях проектов. Что мы сейчас (в суровой реальности) можем ожидать от программиста в сфере баз данных? Мы ему объясняем проект, он нам распишет схему, как ее по табличкам разбить, какие индексы создать и что подкрутить с настройками СУБД под нашу специфику. Но это очень плохой уровень . А что я хочу от эксперта? Чтобы он сказал, к примеру: тут вам лучше вообще не реляционную использовать, а NOSQL, вот либо СУБД А, либо B, либо C (она только в прошлом году появилась, но очень итересная!). Но у A плохая лицензия, подходят только B и С. По скорости, для ваших задач лучше подойдет B, она на таком типе нагрузок по бенчмаркам быстрее работает, но у вас Debian на серверах? А у нее на Debian есть утечки памяти - возможно это блокирующая проблема. Еще, вы хотите из Java с ней работать? Для Java у нее нет клиента, только для C и Python, так что, придется доработать или дождаться.

Читать далее
Всего голосов 53: ↑47 и ↓6+41
Комментарии69

Одно PWA, чтоб править всеми

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

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

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

Делимся расшифровкой доклада и видеозаписью. Повествование будет от лица Никиты.

Читать далее
Всего голосов 33: ↑31 и ↓2+29
Комментарии3

Язык(и) программирования будущего

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

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

Какая технология придет на смену JavaScript? Есть ли у Kotlin шанс заменить Java? Заменит ли Rust язык C++? У какого языка на замену C, если выбирать между D, Go и Rust, самые большие перспективы?

Особенно мне нравится последний вопрос, потому что человек, задавший его, настолько убежден в бесславном конце C, что привел готовые альтернативы. Мне кажется, что подобные вопросы стали возникать чаще, чем раньше, с момента публикации академического документа Energy Efficiency across Programming Languages: Как соотносятся энергия, время и память». (При желании можно ознакомиться с текстом здесь). Полагаю, все эти вопросы по факту сводятся к одному: каким будет язык (или языки) программирования будущего? Сегодня, опираясь на результаты из упомянутого выше документа и анализируя иную статистическую информацию, мы попытаемся разобраться в этом вопросе. Но прежде, чем начать, я хочу уверить вас, что буду максимально объективен, поскольку не хочу выдавать желаемое за действительное. Давайте начнем с самого главного: того самого документа.

Читать далее
Всего голосов 27: ↑22 и ↓5+17
Комментарии98

Все еще работаете с access token на клиенте? Тогда мы идем к вам

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

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

В статье рассмотрим причины необходимости работы с токеном на клиенте веб-приложений, узнаем ,что лучше для хранения токена: localStorage, sessionStorage или cookie без флага HttpOnly (спойлер, ничего из этого), а также посмотрим на меры воздействия, которые можно использовать для снижения риска утечки токена посредством различных уязвимостей.

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

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

«Чем я могу помочь?» или нетрадиционная парадигма управления

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

«Управлять – это значит не мешать хорошим людям работать» говорил Сергей Петрович Капица. Некоторым кажется, что в этой цитате управление представляется в негативном свете, вроде активность менеджера больше препятствует достижению намеченной цели или же просто не добавляет ценности, а управление — это и не работа вовсе: хорошие люди - работают, а руководители, стало быть, нет. Я смотрю на это, как на конструктивный совет руководителям via negativа. Типа «первая заповедь менеджера – не мешай». Я кое-чего написал об этом ранее, но сейчас хотелось бы углубиться не в то, как не надо, а в то, как надо бы. Итак, ловите очередную упаковку magic pills, а уж там - сами разбирайтесь: какая из них синяя, а какая показывает глубину кроличьей норы.

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

Что будет, если от разработчиков не отстать: умирающая команда

Время на прочтение11 мин
Количество просмотров60K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

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

Вроде бы когда-то это был настроенный конвейер, но теперь его куски — как будто в разных зданиях. Особо не заботятся о том, что было «до» и что будет «после». А если всё падает, то люди поднимают руки: «Я не виноват. Я не знаю, как поднять».

Проект — внутренний банка, он нужен для улучшения работы внутри компании. Традиционных решений в кровавом энерпрайзе — два: нанять новую команду (но вгружать мидла на проект такой сложности — три-четыре месяца) или же оставить проект на поддержке, через два года найти ему замену, а команду тихо похоронить в подвале. Точнее, не так: те, кто плывет по течению и не заботится о карьере, остаются тихо сидеть «на пенсии», то есть в бесконечной поддержке проекта. А самые проактивные тут же перейдут в другие команды или другие компании.

Почему процессы разваливались? На первый взгляд, потому, что была куча ненужных совещаний и встреч с теми, кого разработчики вообще не должны были видеть. Плюс местами странноватые KPI. Как это ни странно, но если психологически давить на разработчика пару лет, то ничем хорошим это не закончится. Руководство подразделения дало мне карт-бланш на исправления, и я начал разбираться, что же случилось.
Читать дальше →
Всего голосов 213: ↑209 и ↓4+205
Комментарии74

Продать российскую недвижимость без возвращения в РФ: руководство для IT-специалиста

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

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

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

IT-компания, в которой я работаю четвертый год, была создана на деньги зарубежных инвесторов. Весной повисла неизвестность – у компании возникло много проблем из-за санкций. Летом до нас довели информацию: российский офис меняет расположение. Условием сохранения рабочего места был переезд. Затраты на релокацию и съем жилья предлагалось компенсировать.

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

В общем, я уехал...

Что было дальше - читаем далее
Всего голосов 114: ↑60 и ↓54+6
Комментарии72

IT для неайтишников: Технический долг или почему теперь всё так долго?

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

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

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

Мастер-класс по организации освещения в игре на Unreal Engine: Часть 1

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

Обширное руководство из двух частей о создании привлекательного освещения в играх на Unreal Engine, представленное старшим художником по освещению Юрием Воробьевым.

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

Коротко и, надеюсь, ясно: 8 сервисов для управления знаниями

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

Привет! Меня зовут Лера. Я тружусь в редакции и для всеобщего корпоративного блага мне было поручено найти базы знаний с нескучным функционалом и с оплатой в рублях. Опция обучения тоже не лишняя. С таким запросом я и пошла серфить, читать и сохранять. А так как ресерч – дело немного занудное и утомительное, решила опубликовать мой список найденных сервисов здесь. Вдруг кому пригодится.

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

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

Geointellect.Urban — индекс комфортности по кварталам

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

Привет, Хабр! Я работаю аналитиком в компании “Центр пространственных исследований” и в этой статье расскажу об одном из инструментов, который мы используем при оценке удобства проживания в городе.

Обеспечить комфортную среду проживания - одна из приоритетных целей городского развития. Но для ее достижения нужно заниматься постоянным мониторингом и модернизацией социальной инфраструктуры. К соц инфраструктуре относятся организации, связанные с системами здравоохранения и образования, сферами общественного питания, досуга и отдыха, транспорта и др. Отслеживание проблем в доступности и работе этих объектов нужно для поддержания, улучшения уровня жизни горожан. Поэтому возникает необходимость создания комплексного инструмента, который позволит оценить уровень удобства проживания в городе. Для решения этой задачи и был разработан Geointellect.Urban.

В основе Geointellect.Urban  лежит математическая модель, которая описывает комфортность проживания в кварталах города с точки зрения доступности объектов инфраструктуры, таких как продуктовые магазины, аптеки, школы, детские сады, ТЦ, парки и прочее. Иными словами, он служит оценкой уровня благоустройства города.

Его расчет основывается на построении и нахождении длин маршрутов от центроидов кварталов города до рассматриваемой группы объектов. При этом инструмент учитывает автомобильную или пешеходную доступность к объектам в зависимости от того, каким образом люди обычно до них добираются. Например, до аэропортов или ж/д вокзалов строятся маршруты на автомобиле, а до аптек и продуктовых магазинов - маршруты пешком. Полученное значение времени пути по кварталам нормируется: переводится в шкалу от 0 до 100, где 0 — лучшая доступность, 100 — худшая. Таким образом, мы получаем оценку привлекательности кварталов по разным параметрам. Данный индекс можно рассчитать по любому городу, имея данные о местоположении объектов инфраструктуры, делении города на кварталы, а также графы пешеходных и автомобильных дорог. 

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

Все идет по Kanban'у: как работать с командами без спринтов

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

Всем привет! Я Айыына Егорова, Agile Coach в inDrive. Хочу поделиться небольшим опытом работы с командами без спринтов с применением Kanban-метода. Cтатья будет полезна руководителям команд, скрам-мастерам и любым агентам изменений.

Вы узнаете, как быстро запустить работу в команде без спринтов: с чего начать, какими инструментами мы пользуемся в компании и какие ошибки нельзя допускать. Отдельно разберем пример проведения воркшопа STATIK в команде Localization.

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

Как настроить open-source мониторинг для вашей БД?

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

Существует множество проприетарных сервисов мониторинга БД, но есть отличная альтернатива с открытым исходным кодом — Percona Monitoring and Management (PMM). Я подробно расскажу, как настроить мониторинг с его помощью.

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

99 советов геймдизайнеру — Часть 1

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

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

Заглянуть…
Всего голосов 7: ↑5 и ↓2+3
Комментарии2

Информация

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