Skip to content

Instantly share code, notes, and snippets.

View Infarh's full-sized avatar

Pavel Infarh

  • Moscow
  • 09:27 (UTC +03:00)
View GitHub Profile
@Infarh
Infarh / TaggedTextBoxStyle.xaml
Created March 1, 2025 12:18
TextBox с водяным знаком контролируемым через свойство Tag
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<CubicEase x:Key="TaggedTextBox.Template.Easing" EasingMode="EaseInOut"/>
<ControlTemplate x:Key="TaggedTextBox.Template" TargetType="{x:Type TextBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
@Infarh
Infarh / SwitcherCheckBox.xaml
Created March 1, 2025 12:17
Переключатель CheckBox в стиле MaterialDesign
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:p="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<CubicEase x:Key="CubicEasingOutFunction" EasingMode="EaseOut" />
<CubicEase x:Key="CubicEasingInFunction" EasingMode="EaseIn" />
<CubicEase x:Key="CubicEasingInOutFunction" EasingMode="EaseInOut" />
<CubicEase x:Key="CubicEase.InOut" EasingMode="EaseInOut" p:Freeze="true"/>
<CubicEase x:Key="CubicEase.Out" EasingMode="EaseOut" p:Freeze="true"/>
@Infarh
Infarh / ErrorTemplate.xaml
Created March 1, 2025 12:15
Шаблон визуализации ошибок в WPF-разметке
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTemplate x:Key="Validation.Error.ToolTip.Template" TargetType="{x:Type ToolTip}">
<Border Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Margin="{TemplateBinding Margin}"
Padding="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
@Infarh
Infarh / Command.cs
Last active March 1, 2025 12:14
Собственный стиль окна
public abstract partial class Command : MarkupExtension, ICommand, INotifyPropertyChanged, IDisposable
{
#region События
#region INotifyPropertyChanged
private event PropertyChangedEventHandler? PropertyChangedHandlers;
event PropertyChangedEventHandler? INotifyPropertyChanged.PropertyChanged
{
@Infarh
Infarh / DarkMenuStyle.xaml
Created March 1, 2025 11:51
Тёмный стиль Главного меню кона
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="DarkMenu.DarkHighlightedColorBrush" Color="#666666"/>
<SolidColorBrush x:Key="DarkMenu.Highlight.Border" Color="#FF26A0DA"/>
<SolidColorBrush x:Key="DarkMenu.DarkDisabledColorBrush" Color="#6F6F6F"/>
<SolidColorBrush x:Key="DarkMenu.Disabled.Foreground" Color="#FF707070"/>
<SolidColorBrush x:Key="DarkMenu.MenuItem.Highlight.Disabled.Background" Color="#0A000000"/>
<SolidColorBrush x:Key="DarkMenu.MenuItem.Highlight.Disabled.Border" Color="#21000000"/>
@Infarh
Infarh / Установка Outline VPN на Ubuntu 20.04.md
Created December 7, 2024 09:41 — forked from JohnyDeath/Установка Outline VPN на Ubuntu 20.04.md
Инструкция по развертыванию собственного VPN-сервиса на базе Outline VPN

Установка Outline VPN на Ubuntu 20.04

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

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

Прежде чем начать

Вам нужен сервер. Да, его нужно арендовать, учитывая его местоположение. Например, если Вам нужно получать доступ к ресурсам, которые недоступны в текущем местоположении, но доступны, например, в Канаде, то смело арендуйте виртуальную машину в AWS, Digital Ocean или любом другом месте.

@Infarh
Infarh / Test.csproj
Created October 8, 2024 13:34
Вывод пути к результатам компиляции
<Project Sdk="Microsoft.NET.Sdk">
<Target Name="OnBuildCompleted" AfterTargets="AfterBuild">
<PropertyGroup>
<S0>\</S0>
<FullPath>$([System.IO.Path]::GetFullPath($(OutDir)).Replace($(S0), "/"))</FullPath>
</PropertyGroup>
<Message Text="file:///$(FullPath)" Importance="high" />
</Target>
@Infarh
Infarh / scaffold.bat
Last active August 31, 2024 10:20
Entity Framework scaffold db
@echo off
rem dotnet tool install dotnet-ef -g
dotnet tool install dotnet-ef --create-manifest-if-needed
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet-ef dbcontext scaffold "Data Source=data.db" Microsoft.EntityFrameworkCore.Sqlite -o Data --context-dir Data/Context -c DataDB -d --no-onconfiguring
@Infarh
Infarh / migration-add.bat
Created August 12, 2024 10:26
Автоматизация создания миграций БД EFCore
@echo off
dotnet tool install dotnet-ef
pushd "%~dp0"
cd DbTest
rem PM> Install-Package Microsoft.EntityFrameworkCore.Tools
rem PM> Install-Package package Microsoft.EntityFrameworkCore.Design
@Infarh
Infarh / instruction.md
Created July 28, 2024 18:00
Конфигурация службы в Linux

что бы в фоне запустить службу в Линукс надо:

  1. Создать файл в каталоге /etc/systemd/system/. Для этого надо с правами администратора (sudo) открыть в редакторе текста (на пример nano) новый файл c названием службы (пусть будетweb.service) sudo nano /etc/systemd/system/web.service

  2. В файле конфигурации описать структуру "модуля" ("Unit")

[Unit]
Description=My server services

[Service]