Как стать автором
Обновить
45
0

Astrophysicist, Software Engineer, PhD

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

Запускаем PostgreSQL в Docker: от простого к сложному

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

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее
Всего голосов 39: ↑37 и ↓2 +35
Комментарии 38

Пишем свой Credential Provider на C# для авторизации в Windows

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

Credential Provider, используется для передачи пользовательских учетных данных в стек безопасности Windows. По умолчанию в системе присутствуют поставщики для входа через пароль, PIN-код, смарт-карту и Windows Hello. Однако что делать если они нам не подходят?

Пишем свой Credential Provider
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 10

Как установить ботов для StarCraft II

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

(с) Blizzard Entertainment

В StarCraft II есть встроенные боты, и все с ними хорошо, за исключением того, что они немного тупые, но речь пойдет не о них. В 2017 году разработчик игры компания Blizzard Entertainment опубликовала API, позволяющий создавать внешних ботов. Однако, по какой-то странной причине Blizzard рассматривает этот API как сугубо исследовательский проект, где боты должны сражаться только друг с другом. Нормальной возможности поиграть человеку с ботами они почему-то не сделали, хотя многие геймеры рассматривают ботов как довольно неплохой инструмент тренировок.

Тем не менее все не так плохо. Раз штатной возможности нет, то будем использовать нештатную. Мы все же настроим ботов и повоюем против них. Потом мы с вами, движимые исследовательским порывом, разберемся как устроен АPI, и поднимем окружение разработки, в котором сможем сами писать подобных ботов.
Читать дальше →
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 3

Инструкция для тех, кто решил что уже пора

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

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

Начнем с плохих новостей. Да, на свете есть страны, в которых обсуждается тема "Зайцы охренели до такой степени, что жрут корм, оставленный для птиц" и все ждут выступление президента по этому поводу, потому что это самая серьезная проблема в стране. Но если мысль понаехать туда у тебя появилась только на прошлой неделе — это значит ты не занимался подготовкой предыдущие два года и, сори, тебе нужно заниматься подготовкой следующие два года. Может показаться что два года — это слишком и "мне то нужно завтра, какие два года". Но тут история такая: к началу текущей спецоперации ты уже не успел. У тебя есть шанс успеть к началу следующей. Воспользуешься ты им или нет - зависит только от тебя.

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

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

Читать далее
Всего голосов 192: ↑169 и ↓23 +146
Комментарии 440

Обфускация трафика своими руками. Часть первая — OBFS4

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

Гайд о том, как на практике применить обфускацию, используемую в TOR для обхода DPI или непрозрачных прокси-серверов (причем, не только на уровне провайдера/государства, но и корпоративного уровня) без сильного замедления трафика засчет self-hosted.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 21

Джентльменский набор для создания WPF-приложений

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

Данная статья представляет собой набор рецептов по созданию WPF приложений. Поэтому скорее всего она будет интересна начинающим разработчикам. В материале описаны основные моменты использования таких пакетов как ReactiveUI, Material Design in XAML Toolkit, LiveChart2. Примеры кода приведены из реального приложения.

Далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 30

Внедрение Q# в ваши любимые языки и платформы (Python, .NET, ASP.NET, Julia, Lua, PowerShell)

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

Не секрет, что Q# и Quantum Development Kit позволяют легко писать квантовые программы и запускать их на симуляторах и на оборудовании через службу Azure Quantum, с использованием Python, .NET или даже через Jupyter Notebook. Более того, инфраструктура, которая поддерживает все эти различные способы использования Q#, также позволяет создавать новые и захватывающие способы написания и выполнения квантовых программ. В этой статье мы немного рассмотрим эту инфраструктуру и то, как вы можете использовать эту инфраструктуру для подключения Q# к вашим любимым языкам и платформам.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 2

Ищем дедлок в .NET 5 с помощью анализа дампа

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

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

К расследованию
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 8

Raspberry Pi в роли роутера с единственным сетевым интерфейсом

Время на прочтение 7 мин
Количество просмотров 28K
Сразу скажу, что эта статья предназначена для обычных пользователей и для тех, для кого сетевые технологии — это хобби.



Если вам нужен собственный домашний роутер — отличной аппаратной платформой для него может стать Raspberry Pi 4 Model B. Более старые модели Raspberry Pi отличаются значительными ограничениями в плане поддерживаемой ими скорости передачи данных по сети. Эти ограничения столь велики, что они не подойдут для создания интернет-роутеров в том случае, если скорость доступа к интернету превышает 100 Мбит/с.
Читать дальше →
Всего голосов 40: ↑38 и ↓2 +36
Комментарии 33

Когда использовать mocks в юнит-тестировании

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

Эта статья является переводом материала «When to Mock».

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

Ни одна из этих практик не является достаточно хорошей. В этой статье Владимир Хориков покажет, какие зависимости следует мокать, а какие использовать как есть в тестах.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 6

Mikrotik и VLAN

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

Сразу оговорюсь, что данная статья про Router OS, а не Switch OS.

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

То есть, эти статьи хороши, но на мой взгляд написаны для специалистов по микротикам, которым понадобилось еще и в VLAN. А мне хотелось бы видеть статью, которая для специалистов по сетям, которым надо привычные вещи реализовать на железе Mikrotik. И соответственно, осветить эти вопросы на мой взгляд надо бы с несколько другой стороны. И поскольку я такой статьи не нашел, решил сесть и написать её сам :). Так что и говорить я буду привычные вещи, но другими словами. Итак, приступим...

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 52

CalyxOS: лучший способ очистить Android от следов Google

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

Android Open Source Project — свободный проект. Однако в него очень глубоко проникла корпорация Google. К сожалению, всё больше API и библиотек Android теперь доступны только на смартфонах с предустановленными приложениями Google Apps (GApps). Таким способом Google эффективно привязывает сторонние приложения к своей закрытой экосистеме. В результате ряд популярных опенсорсных приложений уже не могут работать без библиотек Google.

По сути, Android представляет собой особый вид опенсорса типа «смотри, но не трогай», по модели Shared Source. Неудивительно, что набирают силу опенсорсные проекты, которые ставят целью полностью удалить Google из мобильной ОС. Один из последних примеров — прошивка CalyxOS, ориентированная на безопасность и приватность.
Читать дальше →
Всего голосов 59: ↑57 и ↓2 +55
Комментарии 95

Breaking down the fundamentals of C #: allocating memory for a reference type on the stack

Время на прочтение 6 мин
Количество просмотров 7K
This article will show you the basics of types internals, as of course an example in which the memory for the reference type will be allocated completely on the stack (this is because I am a full-stack programmer).



Disclaimer


This article does not contain material that should be used in real projects. It is simply an extension of the boundaries in which a programming language is perceived.

Before proceeding with the story, I strongly recommend you to read the first post about StructLayout, because there is an example that will be used in this article (However, as always).
Read more →
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 0

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

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

Давайте отложим разговоры о 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

Разблокируем интернет с помощью Mikrotik и VPN: подробный туториал

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

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

В качестве VPN я выбрал SoftEther: он настолько же прост в настройке как и RRAS и такой же быстрый. На стороне VPN сервера включил Secure NAT, других настроек не проводилось.

В качестве альтернативы рассматривал RRAS, но Mikrotik не умеет с ним работать.  Соединение устанавливается, VPN работает, но поддерживать соединение без постоянных реконнектов и ошибок в логе Mikrotik не умеет.

Настройка производилась на примере RB3011UiAS-RM на прошивке версии 6.46.11.
Теперь по порядку, что и зачем.
Читать дальше →
Всего голосов 71: ↑67 и ↓4 +63
Комментарии 75

Zotero hacks: unlimited synced storage and its smooth use with rmarkdown

Время на прочтение 7 мин
Количество просмотров 23K
Here is a bit refreshed translation of my 2015 blog post. The post shows how to organize a personal academic library of unlimited size for free. This is a funny case of a self written manual which I came back to multiple times myself and many many more times referred my friends to it, even non-Russian speakers who had to use Google Translator and infer the rest from screenshots. Finally, I decided to translate it adding some basic information on how to use Zotero with rmarkdown.


A brief (and hopefully unnecessary for you) intro of bibliographic managers


Bibliographic manager is a life saver in everyday academic life. I suffer almost physical pain just thinking about colleagues who for some reason never started using one — all those excel spreadsheets with favorite citations, messy folders with PDFs, constant hours lost for the joy-killing task of manual reference list formatting. Once you start using a reference manager this all becomes a happily forgotten nightmare.

Read more →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 6

Nuke. Быстрый старт

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

После прочтения статьи "Как готовить Cake, используя только Frosting" мне пришла в голову мысль: "Какой большой проект для такого простого процесса сборки". 

Представляю Getting Started по другой системе сборки, основанной на C# — Nuke.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Наследование в Nuget-пакетах

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

Nuget-пакет — это не только архив с переиспользуемыми сборками, но и контент с target-скриптами, которые задают поведение MsBuild при сборке приложения. Это дает нам возможность рассматривать nuget-пакет в качестве самостоятельного объекта, у которого есть состояние и поведение.

А раз у нас есть объект, то что мешает попробовать посмотреть на работу с ним со стороны объектно-ориентированной парадигмы? Давайте попробуем применить для nuget-пакетов один из основных принципов ООП — наследование.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 7

Rust crashcourse. Правило трёх — параметры, итераторы и замыкания

Время на прочтение 28 мин
Количество просмотров 8K
Ниже представлен перевод одной из частей серии статей Rust Crash Course от Майкла Сноймана, которая посвящена механизмам передачи параметров, итераторам и замыканиям относительно того, как передаётся владение, и соотносится с мутабельностью и временами жизни.

Так же постарался переводить максимально близко к авторскому стилю, но сократил немного междомедий и восклицаний, не сильно значимых для смысла.
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 4

Программист учится рисовать. Дневник Емели

Время на прочтение 16 мин
Количество просмотров 34K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Всего голосов 144: ↑143 и ↓1 +142
Комментарии 123

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность