Как стать автором
Обновить
38
0
Юрий Пастушенко @ypastushenko

.net разработчик, Dodo Pizza

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

Крепостное право в ИТ

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

Я уж и забыл про крепостных в ИТ, но сегодня обратился знакомый и всколыхнул воспоминания пятилетней давности. Симптомы один в один: деревенский ИТ-директор решил сменить работу, но никак не может найти предложение с зарплатой, даже близко похожей на текущую. Потому что никому не нужны крепостные крестьяне.

Крепостными становятся, обычно, ИТ-специалисты, работающие в штате клиентов. Соответственно, это ИТ-директора, программисты (обычно 1С) и сисадмины. Есть ли такое в ИТ-компаниях – не знаю, тут интересно вас послушать.

Кратко напишу, что это за дичь.

Читать далее
Всего голосов 190: ↑154 и ↓36+154
Комментарии319

Как открыть международную VISA/MASTERCARD за один день

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

Как мы уже все знаем платежные системы Visa и MasterCard с 10 марта приостановили работу в РФ, и если на внутренних операциях это практически никак не сказалось (нельзя больше использовать Apple/Google Pay), то вот вне РФ наши карты теперь не действуют. Кроме невозможности оплаты покупок и снятия наличных в других странах мы теперь не можем оплатить большинство зарубежных онлайн сервисов типа нетфликса, забронировать квартиру на airbnb или купить авиабилеты напрямую на сайте зарубежной авиакомпании. А также это сделало невозможным оплату различного специализированного ПО, которое использует подписную модель, для некоторых это напрямую повлияет на возможность выполнять свою работу.

Сразу после введения такого запрета основным стал вопрос открытия карты/счета в банке другой страны, но далеко не во всех странах готовы открывать карты не резидентам. Сейчас такую возможность предоставляют в основном страны СНГ, а также Грузия и Турция. Можно сказать "предоставляли", т.к. с возросшим интересам к этим услугам часть банков пересмотрела условия открытия счетов:

Читать далее
Всего голосов 38: ↑34 и ↓4+43
Комментарии38

Radarr, Jackett и бот в телеге. Качаем торренты по-новому

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

В итоге, конечно, стриминг таки добьёт торренты. И если в 720/1080p мире это, по сути, уже свершилось, то Blue-ray/4k/8k контент пока ещё держится за счёт торрентов (у нас и в Европе) и юзнетов (штаты).

Сегодня стриминг выигрывает, в основном, за счёт удобства. Открыл апп, зашёл в раздел «новинки» и выбирай на любой вкус. Я прокачал свой процесс с торрентами, и теперь он смотрится, как минимум, не хуже.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии52

Итоги: 9 главных технологических прорывов 2019 года

Время на прочтение10 мин
Количество просмотров20K
На связи Александр Чистяков, я евангелист vdsina.ru и расскажу про 9 лучших технологических событий 2019 года.

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

Я не сортировал события в списке по значимости или вау-эффекту, потому что их значимость будет понятна лет через десять, а вау-эффект слишком краткосрочен, просто постарался сделать эту историю связной.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+23
Комментарии20

HTTP/3: от корней до кончиков

Время на прочтение16 мин
Количество просмотров48K
Протокол прикладного уровня HTTP лежит в основе интернета. Он начал свою жизнь в 1991 году как HTTP/0.9, а к 1999 году превратился в HTTP/1.1, который был стандартизирован Инженерным советом Интернета (IETF).

HTTP/1.1 долго всех удовлетворял, но растущие потребности Сети потребовали апгрейда — и в 2015 году приняли HTTP/2. На этом история не закончилась: совсем недавно IETF анонсировал новую версию HTTP/3. Для некоторых это стало неожиданностью и вызвало некоторое замешательство. Если вы не отслеживаете работу IETF, может показаться, что HTTP/3 появился из ниоткуда. Тем не менее, мы можем отследить его происхождение по истории экспериментов и эволюции веб-протоколов, в частности, транспортного протокола QUIC.

Если вы не знакомы с QUIC, мои коллеги по Cloudflare довольно подробно осветили разные аспекты: например, см. статьи о реальных недостатках современного HTTP и подробности о протоколе транспортного уровня. Мы собрали эти и другие материалы на сайте cloudflare-quic.com. А если интересно, обязательно ознакомьтесь с quiche: это наша собственная реализация QUIC, написанная на Rust с открытым исходным кодом.
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии12

Использование Identity Server 4 в Net Core 3.0

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

Введение


На одном из моих поддерживаемых проектов недавно встала задача проанализировать возможность миграции с .NET фреймворка 4.5 на .Net Core по случаю необходимости рефакторинга и разгребания большого количества накопившегося технического долга. Выбор пал на целевую платформу .NET Core 3.0, так как, судя по утверждению разработчиков от Microsoft, с появлением релиза версии 3.0, необходимые шаги при миграции legacy кода уменьшатся в несколько раз. Особенно нас в нем привлекли планы выхода EntityFramework 6.3 для .Net Core т.е. большую часть кода, основанную на EF 6.2, можно будет оставить «как есть» в мигрированном проекте на net core.


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


Тут возникает логичный вопрос: если в security часть придется вносить много изменений, почему бы сразу же не внедрить подходы, рекомендуемые в виде промышленных стандартов, а именно: подвести приложение под использование Open Id connect и OAuth посредством фреймворка IdentityServer4.

Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии5

27 удивительных инструментов VS Code для современных JavaScript-разработчиков

Время на прочтение10 мин
Количество просмотров40K
Visual Studio Code (его ещё называют VS Code и VSCode) — это экономичный но мощный кросс-платформенный редактор кода, выполненный в виде настольного приложения. По словам автора материала, перевод которого мы сегодня публикуем, VS Code поддерживает множество инструментов разработки — вроде TypeScript и отладчика Chrome. Это, а также то, что к нему написано невероятное количество опенсорсных расширений, делает VS Code весьма популярным и любимым многими редактором.



Если вы хотите добавить в свой арсенал JavaScript-программиста что-то новое — автор материала надеется, что вы встретите здесь что-нибудь такое, что вам пригодится. Не все из рассмотренных здесь двадцати семи инструментов предназначены исключительно для JS-разработки. Но все они с успехом могут применяться теми, кто пишет на JavaScript.
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии19

Почему, зачем и когда нужно использовать ValueTask

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

Этот перевод появился благодаря хорошему комментарию 0x1000000.

image


В .NET Framework 4 появилось пространство System.Threading.Tasks, а с ним и класс Task. Этот тип и порождённый от него Task<TResult> долго дожидались, пока их признают стандартами в .NET в роли ключевых аспектов модели асинхронного программирования, которая была представлена в C# 5 с его операторами async/await. В этой статье я расскажу о новых типах ValueTask/ValueTask<TResult>, разработанных для улучшения производительности асинхронных методов в случаях, когда издержки на выделение памяти нужно принимать во внимание.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии2

Разбираем Async/Await в JavaScript на примерах

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


Автор статьи разбирает на примерах Async/Await в JavaScript. В целом, Async/Await — удобный способ написания асинхронного кода. До появления этой возможности подобный код писали с использованием коллбэков и промисов. Автор оригинальной статьи раскрывает преимущества Async/Await, разбирая различные примеры.
Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии3

Разработка визуальных тестов на базе Gemini и Storybook

Время на прочтение12 мин
Количество просмотров7.7K
Привет, Хабр! В этой статье я хочу поделиться опытом разработки визуальных тестов в нашей команде.

Так получилось, что о тестировании верстки мы задумались не сразу. Ну съедет какая-нибудь рамка на пару пикселей, ну поправим. В конце концов, есть же тестировщики — мимо них и муха не пролетит. Но человеческий фактор все-таки не обманешь — обнаружить незначительные изменения в пользовательском интерфейсе далеко не всегда физически возможно даже тестировщику. Вопрос встал ребром, когда была затеяна серьезная оптимизация верстки и переход на БЭМ. Тут без потерь бы точно не обошлось и нам позарез стал нужен автоматизированный способ обнаружения ситуаций, когда в результате правок что-то в UI начинает меняться не так, как было задумано, или не там, где было задумано.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии4

Как работает конфигурация в .NET Core

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

Давайте отложим разговоры о DDD и рефлексии на время. Предлагаю поговорить о простом, об организации настроек приложения.


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


public IConfiguration Configuration { get; set; }
public IHostingEnvironment Environment { get; set; }

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
   Environment = environment;
   Configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json")
            .Build();
}

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

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

Выведение Action type с помощью Typescript

Время на прочтение6 мин
Количество просмотров49K
Всем привет! Меня зовут Дмитрий Новиков, я javascript-разработчик в Альфа-Банке, и сегодня я расскажу вам про наш опыт выведения Action type при помощи Typescript, с каким проблемами мы столкнулись и как их решили.

Это расшифровка моего доклада на Alfa JavaScript MeetUp. Код из слайдов презентации можно посмотреть здесь, а запись трансляции митапа — здесь.

Наши фронтовые приложения работают на связке React+Redux. Redux data flow упрощенно выглядит так:

Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии39

Подводные камни HttpClient в .NET

Время на прочтение9 мин
Количество просмотров92K
Продолжая серию статей о «подводных камнях» не могу обойти стороной System.Net.HttpClient, который очень часто используется на практике, но при этом имеет несколько серьезных проблем, которые могут быть сразу не видны.

Достаточно частая проблема в программировании — то, что разработчики сфокусированы только на функциональных возможностях того или иного компонента, при этом совершенно не учитывают очень важную нефункциональную составляющую, которая может влиять на производительность, масштабируемость, легкость восстановления в случае сбоев, безопасность и т.д. Например, тот же HttpClient — вроде бы и элементарный компонент, но есть несколько вопросов: сколько он создает параллельных соединений к серверу, как долго они живут, как он себя поведет, если DNS имя, к которому обращался ранее, будет переключено на другой IP адрес? Попробуем ответить на эти вопросы в статье.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии12

.NET в unmanaged окружении – использование и родовые проблемы

Время на прочтение8 мин
Количество просмотров7.6K
Managed код и .NET Framework – совершенно замечательная вещь с точки зрения программиста, которому надо кровь из носу выдавать максимально стабильно работающие программы. Использование .NET позволяет очень сильно сократить затраты на разработку, тестирование и сопровождение программных продуктов, особенно по сравнению с C++ или Delphi.

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

Однако нет такой проблемы, которую нельзя решить (пусть даже с помощью топора и лома). Сегодня у нас краткий обзор возможностей организации взаимодействия между managed и unmanaged кодом. Многие C# и особенно VB.NET программисты боятся этого, но на самом деле в этом нет ничего страшного. Начнем мы с самых примитивных методов, которые будут интересны разве что новичкам (поэтому матерые волки .NET могут с чистой совестью первую часть статьи пропустить), и закончим описанием того, что делать, если хочется написать программу на .NET, но сделать это невозможно (а такое тоже бывает). Естественно, к каждому случаю будут приведены конкретные примеры, быть может, хабрачеловеки расскажут мне о моей собственной велосипедности. Параллельно я скажу пару слов о подводных камнях при работе с VSTO и Windows Shell.
Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии32

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность