Pull to refresh
-4
0.1
Kirill Naumenko @ReDev1L

Web Software Engineer / Architect / CTO

Send message

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

Level of difficultyMedium
Reading time53 min
Views27K

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

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

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

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

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

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

Читать далее
Total votes 170: ↑169 and ↓1+168
Comments23

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

Reading time5 min
Views4.4K

С выходом 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 расширяет этот функционал.

Читать далее
Total votes 22: ↑20 and ↓2+18
Comments10

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

Level of difficultyMedium
Reading time22 min
Views9.6K

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

Устроиться поудобнее и читать далее
Total votes 9: ↑9 and ↓0+9
Comments12

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

Level of difficultyEasy
Reading time7 min
Views2.4K

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

Узнать больше
Total votes 4: ↑4 and ↓0+4
Comments0

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

Level of difficultyEasy
Reading time8 min
Views8.5K

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

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments5

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

Reading time7 min
Views17K

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

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

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

Level of difficultyEasy
Reading time4 min
Views20K

Простите, я тут повангую и поностальгирую немного. Когда-то, лет в 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, так что, придется доработать или дождаться.

Читать далее
Total votes 53: ↑47 and ↓6+41
Comments69

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

Reading time14 min
Views13K

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

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

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

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

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

Reading time8 min
Views27K

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

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

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

Читать далее
Total votes 27: ↑22 and ↓5+17
Comments98

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

Reading time15 min
Views45K

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

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

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

Читать далее
Total votes 44: ↑42 and ↓2+40
Comments40

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

Reading time8 min
Views8.8K

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

Читать далее
Total votes 22: ↑19 and ↓3+16
Comments18

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

Reading time11 min
Views60K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

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

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

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

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

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

Reading time5 min
Views21K

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

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

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

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

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

Что было дальше - читаем далее
Total votes 114: ↑60 and ↓54+6
Comments72

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

Reading time15 min
Views24K

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

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

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

Reading time7 min
Views6.4K

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

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

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

Reading time5 min
Views25K

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

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

Читать далее
Total votes 12: ↑8 and ↓4+4
Comments16

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

Reading time4 min
Views1.4K

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

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

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

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

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

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

Reading time8 min
Views5.6K

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

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

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments1

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

Reading time4 min
Views7.5K

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

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

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

Reading time20 min
Views11K

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

Заглянуть…
Total votes 7: ↑5 and ↓2+3
Comments2

Information

Rating
2,953-rd
Location
Россия
Registered
Activity