Pull to refresh
4
0.3
Bronx @Bronx

User

Send message

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time45 min
Views136K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Total votes 506: ↑498 and ↓8+490
Comments351

ESM. Выходим за рамки

Reading time4 min
Views2.9K

Итак, работая над... ну не знаю... каким-нибудь замечательным генератором статики, вы, возможно, захотите импортировать в свой код зависимости напрямую из текстовых файлов, таких как: HTML, MD, CSS, SVG или JSON. Конечно, можно использовать бандлер с соответствующим лоадером. Но, допустим, ваш кодекс самурая велит вам - никаких лишних npm install xxx и промежуточных билдов! Только хардкор! Что делать? Выход есть.

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

Обработка ошибок и C++

Reading time8 min
Views28K

О чём тут не будет: напоминания базовых конструкций языка и основных моментов о том, как с ними работать; подробного разбора, как работают исключения (писали тут и тут); как грамотно спроектировать ваш класс/программу, чтобы не наломать дров в будущем с гарантией исключений (разве что совсем чуть-чуть, хотя я сам и не очень-то тук-тук).

О чём будет: разные способы обработки ошибок в C++, несколько советов от сообщества и немного заметок о различных жизненных (и не очень) ситуациях.

Обработать ошибки.
Total votes 27: ↑26 and ↓1+25
Comments20

Создание .NET библиотеки от А до Я

Level of difficultyMedium
Reading time32 min
Views16K

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

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

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views222K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 325: ↑324 and ↓1+323
Comments342

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

Level of difficultyMedium
Reading time6 min
Views8.1K

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

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

Бардак в идеальном мире. Часть 1

Level of difficultyMedium
Reading time14 min
Views27K

Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?

Я начинаю мини-серию статей, в которой мы будем понемногу знакомиться с элементами теории хаоса. За последние полвека сформировался набор классических примеров, кочующих из одного популярного введения в другое: аттрактор Лоренца, логистическое уравнение, двойной маятник, подкова Смэйла и т.п. Я, конечно, их упомяну, но мне бы хотелось показать что, кроме классики, есть хаотические системы, обойдённые вниманием, но, тем не менее, имеющие малую размерность и вполне ясные физические модели, при этом способные порождать красивые и сложные, примеры хаотического поведения, поддающиеся объяснению.

Это пример небольшого исследования, доступного студентам младших курсов, поэтому я позволю себе привести некоторые подробности анализа, которые искушённому читателю могут показаться излишними. Моя задача показать, что даже очень простые системы могут быть очень интересными, красивыми и доступными для глубокого анализа. И, конечно же, это повод показать симпатичные картинки, как правило, фрактальные. Ведь все же любят фракталы, верно? Ну, поехали!

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

Как мы ведём документацию рядом с кодом

Reading time6 min
Views15K

В Альфа-Банке мы уже больше 5 лет ведём документацию рядом с кодом. Но она используется не для всех проектных документов. Дело в том, что документация у нас делится по слоям: фронт, миддл и бэкенд. Если с миддлом — слоем микросервисов — всё хорошо, то вот с переводом фронт- и бэк-документации в Bitbucket возникает трудность в необходимости хранения бинарников с примерами пользовательского интерфейса. 

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

Читать далее
Total votes 16: ↑14 and ↓2+12
Comments25

Новая документация Docsvision ч. 2 — Antora

Reading time17 min
Views4.3K

Привет всем читающим! Меня зовут Владимир, я - технический писатель в компании Docsvision и я здесь, чтобы опубликовать вторую часть статьи и надрать задницу всем, кто ставил дизлайки к первой части. Статью вы можете найти ниже.

В первой статье я рассказал, как мы выбирали SSG для создания новой документации и как нам пришлось конвертировать DITA сначала в HTML, а потом в AsciiDoc.

В этой статье я расскажу, как я начал работать с SSG Antora, как я настраивал UI и добавлял сквозной поиск по сайту.

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

Как выбрать свой Static Site Generator — Новая документация Docsvision ч.1

Reading time17 min
Views3.8K

Привет всем читающим! Меня зовут Владимир, я - технический писатель в компании Docsvision. Я создаю документацию для нашей «Платформы по управлению процессами и данными для крупного бизнеса и госкомпаний». Это как СЭД, только лучше (C).

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

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

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

Почему работать с OAuth сложно даже сегодня?

Level of difficultyMedium
Reading time10 min
Views20K

OAuth — это стандартный протокол. Ведь так? И для OAuth 2.0 есть клиентские библиотеки практически на всех языках программирования, которые можно представить.

Вероятно, вы подумаете, что имея клиентскую библиотеку, можно реализовать OAuth для любого API буквально за десять минут. Или хотя бы за час.

Если вам это удастся, то, пожалуйста, сообщите об этом нам — мы угостим вас изысканным ужином и послушаем, как у вас это получилось.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments16

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Level of difficultyEasy
Reading time30 min
Views368K

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →
Total votes 357: ↑350 and ↓7+343
Comments283

Каррирование и частичное применение на C++14

Reading time10 min
Views14K

В этой статье я расскажу об одном из вариантов каррирования и частичного применения функций в любимом мною C++, покажу свою экспериментальную реализацию сего действа и объясню без математики, на пальцах, что такое вообще каррирование и что же под капотом у kari.hpp, с помощью которой мы и будем каррировать функции. Ну и как тут принято: заинтересовавшихся — прошу под кат.

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments18

Сверхлёгкие частицы размером с галактику

Reading time41 min
Views36K

Расправившись со статьёй про «волны-убийцы», я ещё некоторое время по инерции запускал описанную там модель с различными начальными условиями. На каком-то этапе пришла мысль обобщить код на большие измерения и произвести расчёт для поля, заполненного случайными возмущениями. Результат крайне озадачил и увёл меня в совсем другое направление, заставив на несколько месяцев погрузиться в космологию и физику тёмной материи.
Читать дальше →
Total votes 137: ↑136 and ↓1+135
Comments34

Как и для чего эмигранты из России используют крипту за рубежом: разбираем самые популярные страны

Reading time8 min
Views7.7K

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

Читать далее
Total votes 12: ↑10 and ↓2+8
Comments7

Почему вам не нужна версия для слабовидящих

Reading time12 min
Views13K

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

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

Читать далее
Total votes 35: ↑34 and ↓1+33
Comments18

Source Generators в действии

Reading time38 min
Views14K

C# 9 дал долгожданную возможность кодогенерации, интегрированную с компилятором. Тем, кто мечтал избавиться от тысяч строк шаблонного кода или попробовать метапрограммирование, стало проще это сделать.


Ранее Андрей Дятлов TessenR выступил на конференции DotNext с докладом «Source Generators в действии». А теперь, пока мы готовим следующий DotNext, сделали для Хабра текстовую расшифровку его доклада.



Что вообще такое эти Source Generators? Как их использовать? Как предоставить пользователю вашего генератора необходимую гибкость конфигурации и понятные сообщения о возникающих проблемах? Как разобраться, когда что-то пошло не так?


Ответы на все эти и другие вопросы — в тексте.

Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments7

TypeScript в деталях. Часть 2

Reading time11 min
Views13K


Привет, друзья!


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


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

Поиск лучшего места в мире для ветряка

Reading time9 min
Views26K
История о том, как NASA, ESA, Датский Технологический Университет, нейронные сети, деревья решений и прочие хорошие люди помогли найти мне лучший бесплатный гектар на Дальнем Востоке, а также в Африке, Южной Америке и других “так себе” местах.


Читать дальше →
Total votes 83: ↑83 and ↓0+83
Comments62

TypeScript в деталях. Часть 1

Reading time6 min
Views26K


Привет, друзья!


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


Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments9
1
23 ...

Information

Rating
1,932-nd
Registered
Activity