Как стать автором
Поиск
Написать публикацию
Обновить
156
0
Виктор @TyVik

Full-stack developer

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

20 уроков, которые я вынес из 20 лет работы программистом

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров118K
Вы приступаете к чтению статьи с высокой концентрацией советов. Учиться у предшественников – хороший способ добиться успеха, но здесь мы часто забываем о важной оговорке. Практически любой совет работает только в определенном контексте, но дается обычно без каких-либо указаний на него.

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

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

Чтение в фокусе: золотые правила, которые мне помогли

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

Книга — предмет настолько универсальный и всеобъемлющий, что у каждого найдётся свой уникальный и самобытный способ с ней взаимодействовать. Такие способы, правила и методы есть и у меня. С годами они накапливались и менялись, в результате все они сложились в своеобразную систему, которая помогает мне ещё глубже погрузиться в мир книги, сделать процесс чтения ещё ярче и интереснее, ещё лучше понимать мысли и идеи автора, ещё искуснее читать между строк. Хочу поделиться с вами несколькими правилами из моей системы.

Читать далее

Ловушки мышления, которые мешают пробить стеклянный потолок, но не всегда осознаются

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

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

Читать далее

Делай нейминг как сеньор

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

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее

Триггер — электронная ячейка памяти

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


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

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

Раздувание кода стало астрономическим

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

Время от времени я пользуюсь одним сервисом: мне нужно загрузить файлы в какое-то место (название сервиса не имеет роли, потому что, откровенно говоря, все они одинаковы). По сути, я просто указываю папку на своём жёстком диске, после чего её содержимое копируется на удалённый сервер, на котором, вероятно, происходит что-то связанное с базами данных — этим файлам присваиваются имена и выполняются проверки того, кто их скачивает.

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

… но по сути, речь идёт о том, что нужно зарегистрировать несколько файлов, считать их, загрузить, а затем закрыть соединение и записать в файл лога, всё ли прошло успешно, а если нет, то что именно случилось. В этом нет ничего сложного, и даже я писал с нуля подобный код при помощи Wininet API и PHP на сервере, общающемся с моей базой данных MySQL. Наверно, моя система была не такой надёжной, как системы уровня энтерпрайза, однако поддерживала сотни тысяч загруженных файлов, их верификацию, скачивание и логирование. Наверно, это работа для одного кодера на две-три недели?

Специальный инструмент загрузки на сервер, которым я пользуюсь сегодня, суммарно имеет 230 МБ клиентских файлов и задействует 2,7 тысяч файлов для управления этим процессом.
Читать дальше →

Взлет и падение Bootstrap

Время на прочтение17 мин
Количество просмотров21K
Как Tailwind стал ведущим CSS-фреймворком

Недавно мне довелось поработать с Bootstrap 5, и в сравнении с Tailwind это был сущий кошмар


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

Примеры проектов я искал на Frontend Mentors, а код писал с использованием различных технологий. Например, один из первых проектов представлял собой интеграцию компонента карточки товара. Я решил написать решение с помощью чистого CSS, с использованием Tailwind и Bootstrap.


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

Когнитивные искажения или мои мысли о том, как мы мыслим

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

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

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

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

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

Читать далее

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

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

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

Читать далее

Мой «Евротур» по сектам: путешествие в один конец?

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

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

И течение трех лет я целенаправленно ходил во все места, где меня могли обмануть или сломать, ввести в заблуждение, разрушить мою личность и вовлечь в незаконную деятельность. Я внимательно слушал, записывал и даже иногда срывал занятия. Это мой «Евротур» и моя исповедь диверсанта. А в конце вас ждет бонусная история от февраля 2022 года, которая связана с манипуляцией и давлением, но уже не со стороны сект ;)

Очень долго читать

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

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

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

Напомню, что текст рассчитан в первую очередь на разработчиков, которые имеют мало практического опыта работы в конкурентной и/или микросервисной среде, поэтому многие вещи я объясню на пальцах. Для тех, кто захочет ознакомиться с более строгими формулировками, сразу скажу, что здесь будут затронуты упрощённые идеи паттернов Transactional Outbox и Saga.

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

Чем занять этот спецназ?

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

Это было в студенческие годы моих родителей. Тогда, в Союзе, студентов часто привлекали для помощи в колхозах. Жили они у местных жителей. У одной семьи, где жила моя мама и подруга-студентка, было четверо сорванцов небольшого возраста (2, 4 и 6 лет) и собака – прямо банда. Как-то раз вернулись девушки с работ и наблюдают такую картину: ребятишки все шмыгают носами, а где-то на заднем плане их собака путём обкусывания тщетно пытается освободиться от полос, щедро наляпанных на ней половой краской. Отец семейства, конечно, провёл воспитательную работу и ввалил всем (даже шкурному двухлетке) кроме малого, которому было 8 месяцев – несознательный ещё бандит, что с него взять?

Конечно, дети есть дети. Но их можно, и нужно направлять, заниматься с ними. Что-то делать вместе. Автор статьи давно задумывался, как заинтересовать детей заниматься электроникой, упростить старт для тех, кто этого не делал никогда и пока не знает, нужно ли оно вообще. Попробуем?
Читать дальше →

Obsidian + Tasks — Периодические задачи, запросы, кастомные статусы и прочие удобности

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

Очень мощный плагин для работы с задачами в Обсидиане.
Возможности плагина:

Читать далее

Овладейте всем потенциалом анимирования с Vue

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

Vue позволяет разработчикам писать более гибкий и переиспользуемый код за счёт наличия дополнительных возможностей для организации компонентов. И одной из областей применения этих возможностей являются анимации. В текущей статье мы разберём использование Composition API для создания анимаций в Vue с помощью CSS и JS библиотеки GSAP (GreenSock Animation Platform).

Примечание пер.: статья содержит крупные GIF-анимации.
Читать дальше →

Как я делал внутренний cookbook по тому, как писать код (и результат можно скачать)

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

Авокадо с зубами подсказывает, что так код легче поддерживать, дописывать и рефакторить. Мы всё теперь пишем только так.

Привет, Хабр! У нас была проблема: каждый писал код как хотел. Было очень тяжело это поддерживать и ревьюить. Мы сначала думали, что достаточно написать стандарт кода. Оказалось, недостаточно, ему ещё надо обучить. Чтобы обучить, мы открыли для ревью эталоны кода, чтобы покрыть ими самую частую логику взаимодействия с компонентами. Тоже не хватило. А заодно я узнал, что мои же «золотые» образцы противоречили моему же стандарту кода (сначала было смешно, а потом пришлось переписывать).

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

Всё это было нужно для того, чтобы мы все в команде понимали, что такое наш стандарт кода, делали одинаковые вещи примерно одинаково, имели набор готовых шаблонов на системные или платформенные обращения и уменьшили объёмы как самого ревью, так и диалогов после.

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

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

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

Посвящается всем, кто коллекционирует элегантные решения без привязки к языку, фрэймворку, Фаундлингам и Software Craftsmanʼам.

Погнали.
Читать дальше →

Гайд по эвент-сорсингу

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

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

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

Читать

Подробно рассматриваем обратное распространение ошибки для простой нейронной сети. Численный пример

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

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

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

Если вы отказались от регулярных выражений, то теперь у вас три проблемы

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

Известная шутка программистов гласит, что если решение вашей проблемы включает в себя парсинг текста при помощи регулярного выражения, то теперь у вас есть две проблемы. Некоторые программисты, прочитав шутку, решают попробовать иной подход. Возможно, регулярные выражения не так уж нужны. Возможно, задачу можно решить простым split строки или чем-то подобным. Однако другие могут задуматься немного глубже и задаться вопросом: «А если я сделаю нечто настолько дерзкое, что в результате получу три проблемы?» Мой пост написан в таком духе!

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

Визуализация квантовой механики

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

1. Статистический ансамбль

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

Читать далее

Достаточно одной К155ЛА3

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

Продолжая тему легендарных микросхем, нельзя обойти вниманием замечательнейшую микросхему 7400, также известную на постсоветском пространстве, как К155ЛА3.

Давным-давно, когда деревья были большими, а я ещё учился в старших классах, на меня снизошло откровение от старших товарищей, что практически любое цифровое устройство можно собрать только на микросхемах К155ЛА3. Утверждение может показаться спорным, но ничто не мешает нам его проверить.

И поможет нам в этой проверке другое откровение: «Инверсия конъюнкции есть дизъюнкция инверсий». Заодно и разберёмся, что есть «конъюнкция», что есть «дизъюнкция», и причём здесь «инверсия».
И это совсем несложно

Информация

В рейтинге
9 363-й
Откуда
Краснодар, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
Python
PostgreSQL
Linux
Docker
Kubernetes
RabbitMQ
Elasticsearch