Pull to refresh
17
0
Maxim Ivanov @drcolombo

.NET developer

Send message

Сто паттернов для разработки корпоративных программ. Часть первая

Level of difficultyMedium
Reading time27 min
Views17K

В этой статье рассмотрены все паттерны проектирования из "Банды четырёх" с примерами на языке программирования C#. Для самых терпеливых имеются дополнительные паттерны.

Это первая статья из серии "Сто паттернов для разработки корпоративных программ". Следующие статьи будут посвящены паттернам из книг Мартина Фаулера и Роберта Нистрема.

Читать далее
Total votes 15: ↑9 and ↓6+6
Comments20

Костыли для ddrescue. Что делать если SSD перестает отдавать данные

Level of difficultyEasy
Reading time11 min
Views11K

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

Если заинтриговал, то обо всем по порядку.
Total votes 22: ↑22 and ↓0+22
Comments37

Восстановление данных с M.2 NVMe SSD. Скрипт ddrescue-loop v0.2

Level of difficultyEasy
Reading time13 min
Views17K

Речь пойдет о способе извлечения данных с неисправного SSD для случаев когда после попытки чтения любого сбойного сектора - SSD совсем перестает отдавать данные и помогает только отключение включение питания.

Представляю доработанную версию скрипта ddrescue-loop с поддержкой управления USB реле и uhubctl.

Для прерывания питания SSD задействовал простое и дешевое решение USB Relay Module LCUS-1 CH340 которые доступны на Aliexpress. И подключение через док станцию AgeStar 31CBNV1C на основе USB-NVMe моста JMicron JMS583.

Рассмотрим процесс восстановления на примере случая с неисправными M.2 NVMe SSD производства Kimtigo на контроллере Maxio MAP1202.

Погнали!
Total votes 42: ↑42 and ↓0+42
Comments11

Coroutine Stacks — плагин для отладки корутин Kotlin

Level of difficultyEasy
Reading time2 min
Views4.2K

Всем привет!

В рамках программы Google Summer of Code 2023 мы с моим студентом разработали плагин для Intellij IDEA, который является аналогом Parallel Stacks из Visual Studio, CLion и Rider для Kotlin coroutines. Плагин анализирует стек трейсы каждой корутины в приложении и строит граф, объединяя общие наборы стек фреймов в вершины. Таким образом, во время отладки вашего приложения вы можете проанализировать
потоки выполнения всех корутин в вашей программе.

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

Пуш-уведомления RuStore

Level of difficultyEasy
Reading time7 min
Views6.6K

Привет! Меня зовут Артем Ковардин, я работаю в VK и мы с командой разрабатываем Push Service RuStore и SDK для него. Если вы занимаетесь разработкой мобильных приложений и хотели бы иметь канал коммуникации с пользователями или же вам просто интересно то, как работают разработанные нами пуш-уведомления и как их можно масштабировать и интегрировать, то статья ниже — для вас. 

Читать далее
Total votes 37: ↑34 and ↓3+35
Comments8

JSX: как разделять логику и отрисовку в разметке, сгенерированной методом map

Level of difficultyEasy
Reading time3 min
Views7.5K

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

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

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

GOST: швейцарский нож для туннелирования и обхода блокировок

Level of difficultyMedium
Reading time13 min
Views98K

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

Сегодня я расскажу о замечательном инструменте под названием GOST. Не пугайтесь, он не имеет никакого отношения к ГОСТ-шифрованию или чему-то подобному, на самом деле это Go Simple Tunnel. Он действительно simple (простой) в использовании и настройке, но при этом невероятно мощный, поскольку поддерживает огромное количество протоколов и транспортов, из которых вы при желании сможете построить самые упоротые и бронебойные комбинации, а именно...

Читать далее
Total votes 145: ↑142 and ↓3+174
Comments113

XRay (с VLESS/XTLS): проброс портов, реверс-прокси, и псевдо-VPN

Level of difficultyMedium
Reading time10 min
Views54K

Я уже написал тут много статей на тему установки и настройки прокси‑серверов XRay с недетектируемыми протоколами Shadowsocks-2022, VLESS (с XTLS), и т. п. И один из очень часто поднимаемых в комментариях вопросов звучит так: можно ли с использованием XRay как‑то организовать проброс портов или получать доступ к внутренностям корпоративной сети? Можно, и сейчас я расскажу как.

Итак, что же можно сделать с помощью реверс‑проксирования?

Можно получать доступ к каким‑либо сервисам на хосте за NAT'ом или строгим фаерволом, и даже более того — можно получать доступ к сервисам на других устройствах в локальной сети, к которой имеет доступ этот самый хост за NAT'ом файерволом.

Можно маршрутизировать весь (или некоторый в зависимости от настроенных правил) трафик на хост за NAT'ом или фаерволом и выпускать его оттуда в Интернет.
Например, вы проживаете за границей, хотите оплачивать счета за ЖКХ вашей недвижимости оставшейся России, но сервис оплаты не пускает вас с забугорных IP и не пускает вас с IP‑адресов даже российских VPS‑хостеров. Тогда можно поставить у кого‑нибудь из друзей или родственников в РФ преднастроенный роутер или одноплатник типа Raspberry Pi, который подключится к вашему прокси‑серверу, а вы, в свою очередь, через прокси‑сервер сможете достучаться до этого роутера/р‑пишки и выйти через него во внешний интернет как обычный пользователь, находящийся в России — и всем ресурсам будет виден IP‑адрес российского домашнего интернет‑провайдера.

Можно выборочно пробрасывать порты, например, все подключения на 80 порт прокси‑сервера будут переадресовываться на 80 (или любой другой) порт «изолированного» хоста или еще куда‑то дальше.

Можно даже в теории соорудить псевдо‑VPN, чтобы подключенные клиенты прокси‑сервера могли достукиваться друг до друга.

Читать далее
Total votes 52: ↑51 and ↓1+67
Comments92

Управление состоянием в React с использованием Valtio

Level of difficultyEasy
Reading time7 min
Views3.8K

Когда дело доходит до управления состоянием в React-приложениях, может возникнуть сложность с выбором подходящей библиотеки. Есть довольно много решений, и каждое со своими особенностями и преимуществами. В таком многообразии выбрать оптимальный вариант становится настоящим вызовом. Меня зовут Станислав Быков, и в этой статье я расскажу про Valtio — простое, но мощное решение для управления состоянием в React.

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

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

Level of difficultyMedium
Reading time6 min
Views8.2K

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

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

.NET 7 против российской криптографии

Level of difficultyMedium
Reading time9 min
Views25K

Разрабатывая один проект на свежем .NET 7 столкнулся с необходимостью подписывать данные с использованием отечественных криптоалгоритмов. Ранее, в .NET Framework хорошая поддержка работы с со сторонними криптопровайдерами, реализующими семейство алгоритмов ГОСТ (CryptoPro CSP, ViPNet CSP и пр.), шла "из коробки". К сожалению, в новые версии фреймворка часть ранее работающего функционала по работе с CMS-сообщениями не попала, и пришлось восполнять пробел надёжными дедовскими методами, т. е. с помощью старого доброго WinAPI.

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

Байки с завода: как IT-специалисту на производстве живётся

Level of difficultyEasy
Reading time4 min
Views33K

У нас в индустрии есть распространённый мем: мол, есть стандартный офисный IT, а есть тяжёлый диджитал. И «тяжёлый» —  это не про нагрузку, а про общий сеттинг.

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

Меня зовут Юрий, я тот самый IT-специалист или, как говорят заводчане, «цифровик». За время работы у меня накопилось столько красочных историй про IT на заводе, что хватит на пару альманахов. Но начну с поста на Хабре. Все истории реальны и без купюр (поэтому я не назвал свою фамилию, хехе).

Приятного чтения!

Читать далее
Total votes 61: ↑57 and ↓4+63
Comments42

Взлом Hyundai Tucson

Reading time7 min
Views18K

История в двух частях. В первой мы расскажем о первых неудачных попытках болгарского ИТ-специалиста Радослава Герганова взломать свой автомобиль Hyundai Tucson 2020 года выпуска, а во второй — о том, как выполнялся взлом ШГУ автомобиля.

Я купил новенький Hyundai Tucson в 2020 году, а в 2022 году наткнулся на отличную серию постов о том, как можно взломать Hyundai Ioniq 2021 (перевод одной из статей). К сожалению, описанные там способы мне не подошли. В моей машине установлено D-Audio, которое сильно отличается от следующего поколения D-Audio 2V, описанного в блоге greenluigi1. 

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

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

Reading time29 min
Views184K

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



Каждый с этим борется как может. Например, на устройствах Apple родными средствами можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью.


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Total votes 43: ↑42 and ↓1+51
Comments73

Защищайся! Простые и не очень правила настройки безопасности для VPS/VDS на Linux

Reading time12 min
Views19K

Все, что смотрит в бесконечную даль Интернета, находится в той или иной степени под угрозой атаки вездесущими ботами, хакерами, школьниками и прочими темными сущностями глобальной сети. Это не в последнюю очередь касается мощностей арендных серверов (выделенных или VPS/VDS). Провайдер может обеспечивать базовый функционал защиты от атак на свою инфраструктуру, но то, что юзер творит со своей машиной, провайдера абсолютно не касается. Разве что за доп. плату он может добавить некоторые настройки к VPS, мониторить и фильтровать трафик, поступающий с определенной интенсивностью. Поэтому хочешь не хочешь, а приходится задуматься об обеспечении безопасности своего сервиса вот этими вот маленькими ручками, желательно с минимальными временными и материальными издержками.

Под катом рассмотрим несколько простых настроек, которые сведут к минимуму угрозу для вашего VPS, а в конце статьи рассмотрим пару более сложных, но эффективных техник защиты. Примеры команд приведены для ОС Ubuntu.

Поехали!
Total votes 16: ↑9 and ↓7+4
Comments18

VPN в домашнюю локалку

Reading time4 min
Views44K


TL;DR: я устанавливаю Wireguard на VPS, подключаюсь к нему с домашнего роутера на OpenWRT, и получаю доступ к домашней подсети с телефона.

Если вы держите на домашнем сервере личную инфраструктуру или у вас дома множество девайсов управляемых по IP, то вы наверняка хотите иметь к ним доступ с работы, из автобуса, поезда и метрo. Чаще всего для аналогичных задач приобретается IP у провайдера, после чего порты каждого сервиса пробрасываются наружу.

Вместо этого я настроил VPN с доступом в домашнюю локалку. Плюсы такого решения:

  • Прозрачность: чувствую себя как дома при любых обстоятельствах.
  • Простота: настроил и забыл, не надо думать о пробросе каждого порта.
  • Цена: у меня уже есть VPS, для таких задач современный VPN почти бесплатен по ресурсам.
  • Безопасность: ничего не торчит наружу, можно оставить MongoDB без пароля и никто не утащит данные.

Как всегда, есть и минусы. Во-первых, вам придётся настраивать каждый клиент по отдельности, в том числе, на стороне сервера. Может быть неудобно при наличии большого числа устройств, с которых хочется иметь доступ к сервисам. Во-вторых, у вас на работе может оказаться совпадающая по диапазону локалка — придётся разрешать эту проблему.
Читать дальше →
Total votes 30: ↑27 and ↓3+37
Comments38

Двойной VPN, или как построить цепочку из WireGuard VPN серверов на Windows

Reading time5 min
Views29K

В этой статье мы рассмотрим процесс настройки цепочки VPN серверов с помощью WireGuard на Windows. В Интернете есть множество руководств, посвященных построению и настройке цепочек VPN серверов, однако большинство из них основаны на Linux и требуют определенных навыков администрирования данной ОС. В предыдущей статье мы уже узнали, как настроить WireGuard VPN Server в Windows, здесь же мы используем ту же технологию для создания цепочки WireGuard VPN из двух хостов Windows с помощью WireGuard и WireSock.

Если заинтересовал, то добро пожаловать под кат.

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

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

Reading time7 min
Views35K

Наверное, ни для кого уже не секрет, что использование технологии Virtual Private Network (VPN) становится повседневной необходимостью. На рынке присутствует много решений – платных и бесплатных.

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

Читать далее
Total votes 17: ↑13 and ↓4+10
Comments52

IValueTaskSource и почему нельзя пере`await`ить

Level of difficultyMedium
Reading time11 min
Views5.8K

Раньше IValueTaskSource был для меня загадкой, а правило не await'ить ValueTask несколько раз было для меня правилом, которому я слепо следовал.

Я взял себя в руки и решил обе эти вопроса одновременно. Если кого-то интересовали те же вопросы, то эта статья может дать ответы на них.

Напишем свою реализацию IValueTaskSource, уменьшим аллокации и посмотрим где это используется в стандартной библиотеке.

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

Возвращаем 2007 год, или делаем Интернет без блокировок

Level of difficultyMedium
Reading time5 min
Views66K

Как известно, в 2007 году кроме того, что деревья были выше, а трава зеленей, еще и в Интернете не было особых ограничений - можно было открыть почти любой сайт и наслаждаться им. До ковровых блокировок Telegram оставалось ещё 10 лет... К сожалению, в наше время такой возможности уже нет. Причины тут всем известны, в частности, некоторые компании уже не предоставляют своих услуг в России.

Хорошо, что существует возможность в рамках домашней сети восстановить свободный Интернет таким, каким он был в 2007-м. Именно этим мы и займемся. Стоит отметить, что в 2007 году довольно часто можно было встретить подключения на скорости 64-128 Кб/с, а то и вовсе dial-up; Wi-Fi был редкостью, а мобильная связь - довольно дорогим удовольствием. Однако, эти особенности того времени мы постараемся не воспроизводить.

Представляю вашему вниманию Freeroute - простой маршрутизатор, который позволяет направлять трафик на разные шлюзы в зависимости от домена назначения. Free в названии, как водится, означает свободный, а не бесплатный.

Читать далее
Total votes 69: ↑65 and ↓4+76
Comments98

Information

Rating
Does not participate
Location
Darmstadt, Hessen, Германия
Date of birth
Registered
Activity