Pull to refresh
0
0
Ivan Terentev @MuF_AsA

C#/Php Developer

Send message

Почему я не буду использовать Next.js

Level of difficultyMedium
Reading time13 min
Views28K

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

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

С момента выхода Remix в 2020 году я использовал именно этот фреймворк. Мне он настолько понравился, что на следующий год я устроился в эту компанию, чтобы помочь с развитием сообщества, а через 10 месяцев ушёл работать в EpicWeb.dev, где теперь обучаю людей всему необходимому для создания фулстек-приложений. И Remix играет в этом значительную роль, являясь веб-фреймворком, который аналогично Next.js нацелен на решение задач, связанных с созданием веб-приложений.

Поскольку Next.js аналогичен Remix, многие спрашивают, почему для преподавания фулстек-разработки в EpicWeb.dev я предпочёл именно Remix. И текущая статья станет ответом на этот их вопрос.
Читать дальше →
Total votes 35: ↑29 and ↓6+38
Comments18

.NET 7 против российской криптографии. Часть 2. Штампы времени

Level of difficultyMedium
Reading time6 min
Views8.5K

Практически неотъемлемой частью формирования электронной подписи стало формирование штампов времени (TS) на подпись. С их помощью обеспечивается доверенное подтверждение времени подписания документа. Со штампами времени в .NET 7 та же беда, что и с CMS-сообщениями - отсутствие нативной поддержки российских алгоритмов хэширования и электронной подписи на уровне фреймворка. Но, благо, старый добрый WinAPI и здесь поможет обойти проблему.

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments8

Главный принцип разработки интерфейсов

Level of difficultyEasy
Reading time4 min
Views15K

Если вы достаточной древний, то на личном опыте знакомы с технологической энтропией: железо становится мощнее, но софт деградирует. Photoshop тормозит, а ТВ тупит даже при переключении каналов. Портится не только код, но и интерфейсы.

С энтропией кода бороться тяжело. С интерфейсами вопрос решить проще, если проектировать их по правильным принципам.

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

Доводим разработчика до выгорания: три простых шага

Reading time7 min
Views46K
Если вы менеджер и хотите, чтобы ваши лучшие разработчики выгорели и разуверились в вашей способности руководить – могу помочь. Мне довелось работать в двух командах, подверженных выгоранию, и молча смотреть, как окружающие меня талантливые программисты один за другим покидали команду или компанию.

В первом случае я был ведущим специалистом в стартапе на посевной стадии с финансированием, работал непосредственно под и совместно с руководителем. Во втором я был одним из рядовых разработчиков, работал в команде из одиннадцати человек в составе крупной технологической компании (уровня Meta, Google, Apple и т.д.). Вот пошаговое руководство из методички выгорания, по которой работали эти команды.
Читать дальше →
Total votes 26: ↑23 and ↓3+27
Comments23

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

Level of difficultyEasy
Reading time11 min
Views15K

Привет, Хабр!

PostgreSQL, одна из самых мощных и гибких реляционных СУБД, предлагает нам свой модуль pg_trgm, чтобы решить сложную задачу полнотекстового поиска.

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

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее
Total votes 18: ↑16 and ↓2+19
Comments12

Проектирование интеграции. Чек-лист — как подготовить архитектурное решение

Level of difficultyEasy
Reading time4 min
Views14K

В работе solution архитектора или системного аналитика есть задачи на проектирование интеграции. Иногда заказчик приносит задачу с требованиями на один абзац.

С чего же начать, если перед вами такие минимальные бизнес требования?

Хочу узнать
Total votes 26: ↑25 and ↓1+27
Comments9

Введение в Чистую архитектуру через 6 кругов рефакторинга

Level of difficultyMedium
Reading time15 min
Views45K

Разделяй и влавствуй, или как провести клининг легаси-кода GoLang.

Этот пост является частью большого цикла статей, в которых мы демонстрируем, как создавать приложения на Go, которые легко разрабатывать, поддерживать и с которыми приятно работать в долгосрочной перспективе. Мы делаем это, делясь проверенными методами, основанными на множестве экспериментов с командами, которыми мы руководили, и научных исследованиях («при съёмках фильма ни одно животное не пострадало»).

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

Что касается подхода к «чистой» архитектуре, описываемого далее, то это симбиоз двух идей: разделение Ports и Adapters, а также контроль за тем, как пакеты ссылаются друг на друга...

Оставь надежду, всяк сюда входящий
Total votes 16: ↑12 and ↓4+11
Comments4

Гайд по микрофронтендам на single-spa, или Как уже наконец-то уйти от монолита во фронтенде

Level of difficultyMedium
Reading time9 min
Views17K

Привет, Хабр! Меня зовут Данил, я Frontend-разработчик в Samokat.tech. Недавно мы с командой распилили монолит на Angular и перешли к микрофронтендам на Vue. 

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

Читать далее
Total votes 19: ↑18 and ↓1+20
Comments18

Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Level of difficultyMedium
Reading time13 min
Views54K

Проектирование REST API - это процесс создания дизайна методов обмена данными. Дизайн - это субъективное. У одних "так", у других "сяк". А кто прав? Иногда все, а иногда нет.

Можно ли сделать в проекте все методы POST? Как правильно именовать эндпоинты - ед. число или мн. число (/user или /users)? Можно ли использовать метод POST для получения данных? ...

Холиварные вопросы! Вкусовщина! Давайте разбираться!

Читать далее
Total votes 25: ↑21 and ↓4+20
Comments302

Entity Framework Core и высокая производительность

Reading time15 min
Views28K

Entity Framework Core является рекомендованным и самым популярным средством взаимодействия с реляционными базами данных на платформе ASP NET Core. Это мощный инструмент который подходит для большинства сценариев, но, как и любой другой инструмент имеет свои ограничения. Долгое время бытовало мнение (и не безосновательно) что Entity Framework не подходит для высоконагруженных систем и в таких сценариях лучше использовать Dapper. Но время идет и Entity Framework развивается, в том числе в плане оптимизации. Помимо улучшения производительности самой платформы .NET, Entity Framework Core для NET 6 имеет ряд настроек и возможностей, призванных значительно улучшить производительность. В этой статье мы рассмотрим Entity Framework Core с точки зрения производительности и сравним его с Dapper используя актуальные версии на момент июля 2022 года. Посмотрим насколько рекомендация "перепишите все на Dapper" актуальна :)

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

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

Занимательная задача с микросервисами в .NET

Reading time3 min
Views8.9K

Необходимо реализовать возможность приёма транзакций от разных клиентов для процессинга и дальнейшей отправки в разные банки. Клиенты могут присылать как равномерно (например, по 1шт в секунду), так и большими пачками (1000шт каждый час или 10000 раз в день), банки обрабатывают транзакции последовательно.

Для простоты интеграции необходимо использовать REST API для приёма транзакций

Необходимо исключить ситуации, когда:

Тысячи клиентов по несколько транзакции ожидают двух, у которых по 10000 транзакций

Несколько клиентов по 10000 ждут тысячи клиентов по несколько транзакций.

Читать далее
Total votes 8: ↑2 and ↓6-2
Comments31

Заблокируют ли нам VPN с помощью DPI?

Level of difficultyEasy
Reading time3 min
Views61K

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

Как у нас происходят блокировки сейчас?

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

Блокировка IP-адресов не эффективна по многим причинам. Например, необходимый ресурс может просто сменить IP-адрес. Мы такое наблюдали в 2018, когда РКН блокировал телеграм. Телеграм же просто менял адреса. А учитывая, то что телеграм хостился на AWS (Amazon Web Services), где кроме него хостилось огромное количество сайтов, в том числе и сам РКН. В итоге мы получили ситуацию, когда РКН заблокировал всё, что можно, в том числе и себя, а телеграм так и остался не заблокированным.

Но если ресурс, как твиттер не собирается менять IP-адрес, мы все равно можем попасть на него большим количеством способов: использовать другой DNS, прокси, VPN и др. А учитывая то, что в 2023 VPN используют почти все, то у РКН не остается шансов.

Читать далее
Total votes 47: ↑26 and ↓21+14
Comments131

Обзор нововведений в C# 12

Level of difficultyMedium
Reading time8 min
Views28K

Уже середина осени, а это значит, что новая версия C# на пороге. Самое время узнать, какие изменения настигнут язык совсем скоро. Хоть количество нововведений в этот раз уступает предыдущим релизам, интересных среди них немало.

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

Persistent-request библиотека для надежных запросов

Level of difficultyMedium
Reading time3 min
Views3.3K

Всем привет!

В этой статье расскажу, как решил написать библиотеку https://packagist.org/packages/xman12/persistent-request и что там внутри.

Как и любая библиотека, эта решает свои задачи, а именно гарантированное выполнение запроса и последующую обработку. Я находил, как минимум, одно решение, которое работает с подобной проблематикой — это temporal.io, но система монструозная, а мне хотелось, чего-то более легкого и приземленного, поэтому я решил написать свое решение этой задачи.

Читать далее
Total votes 4: ↑3 and ↓1+6
Comments8

Pure.DI помогает сделать DI чистым

Level of difficultyMedium
Reading time26 min
Views6.8K

В статье поговорим о Dependency Injection. Обсудим что такое чистый DI, коснемся DI контейнеров и их эволюции. В основной части речь пойдет о генераторе исходного кода Pure.DI и о том, как он помогает создавать приложения в парадигме чистого DI.

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

Godot — это не новая Unity. Анатомия вызова API в Godot

Reading time26 min
Views26K

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

Апдейт: ведущий разработчик Godot Хуан Линьетски опубликовал ответ на этот пост.

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

3 лучших инструмента для описания RESTful API

Reading time3 min
Views120K

Взаимодействие различных сервисов с использованием АPI, из новаторства превращается в обыденность. Количество бесплатных и платных API уже исчисляется тысячами, и с каждым днем их число активно растет. А почему бы и нет? Продажа удаленных запросов к своему новаторскому сервису может принести больше прибыли, чем распространение услуг через свою площадку. И пусть, в таком случае, уже ваши клиенты ломают голову и тратят деньги на привлечение аудитории. Используя свой опыт работы, я предлагаю краткий обзор лучших решений по реализации API на сегодняшний день.
Читать дальше →
Total votes 32: ↑24 and ↓8+16
Comments17

Машинное обучение на C#: введение в ML.NET

Reading time22 min
Views40K


ML.NET претендует на звание самой мощной библиотеки для машинного обучения на платформе .NET. Так ли это на самом деле? На вопрос отвечает Джефф Просайз.

Джефф Просайз — один из создателей компании Wintellect, коллега по цеху знаменитого Джеффри Рихтера, автор более девяти книг и множества статей по разработке приложений, сейчас работает с Azure и разрабатывает различные AI-решения.

Под катом перевод и видео доклада Джеффа с конференции DotNext 2019 Moscow в оригинале.
Total votes 25: ↑25 and ↓0+25
Comments10

Кто такой архитектор ПО и как им стать

Reading time11 min
Views32K

Всем привет! Меня зовут Виктор Василенко, я техлид и Solution-архитектор. Я работал в Яндексе и X5 Group и уже не первый год сотрудничаю с Практикумом. Я делюсь опытом на курсах «Алгоритмы и структуры данных» и «Асинхронное программирование на Python».

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

Пока что индустрия не может чётко определить эту деятельность как профессию. В общероссийском классификаторе профессий ОКПДТР архитектор встречается скорее ландшафтный, чем программного обеспечения. В вузах вы не сможете найти специальность «Архитектура программного обеспечения». 

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

В этой статье я хочу поделиться своим видением роли архитектора ПО и рассказать:

Кто такой архитектор ПО и какие они бывают;

Чем занимается архитектор решений в компаниях разного масштаба;

Чем отличаются инженеры от архитекторов ПО;

Какие обычно задачи стоят перед архитектором ПО;

Конкретно: какие нужны навыки и компетенции;

Как перейти из инженера на позицию архитектора.

Читать далее
Total votes 23: ↑17 and ↓6+15
Comments9

Минуты и часы не нужны

Reading time3 min
Views34K

landing page для наглядности

Нет часов. Нет минут. Нет часовых поясов. До свидания.

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

ахаха
Total votes 86: ↑33 and ↓53-9
Comments310

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity