Dev4Devs
11 subscribers
17 photos
6 files
43 links
Возможно, когда нибудь, этот канал с заметками на IT тематику превратиться в что-то большее, но пока тут только заметки
#dev #csharp #it #tips #development #code #prog #devops #software
Download Telegram
#cors #dotnet #csharp
app.UseCors(x =>
{
x.SetIsOriginAllowed(s => true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
🦾 Создание контекста БД с EF tools
Database models creation with EF tools
#ef #entityframework #scaffold #context

dotnet ef dbcontext scaffold "{ConnectionString}" Microsoft.EntityFrameworkCore.SqlServer -o Models --data-annotations --context MainContext

После строки подключения нужно указать провайдера данных, скачанного из Nuget.

-o Models //папка в которой создадутся классы моделей и контекст
--data-annotations //создавать модели с атрибутами, а не через fluentApi
--context //имя класса создаваемого контекста
⚙️ Генератор favicon для сайтов
#favicon #site #generator

🔗 Ссылка на генератор
C# 9 и .NET 5. Разработка и оптимизация
Марк Прайс
2022

В этой книге опытный преподаватель Марк Прайс дает все необходимое для разработки приложений на C#. В пятом издании для работы со всеми основными операционными системами используется популярный редактор кода Visual Studio Code. Издание полностью обновлено и дополнено новой главой, касающейся Microsoft Blazor.

В частях книги рассмотрены основы C#, включая объектно-ориентированное программирование и новые возможности C# 9.

Язык: Русский 🇷🇺

💾 Скачать PDF

🛒 Купить печатную версию

#книга #Си #rus
⚙️ Create scheduler task to autostart application
#scheduler #task #autostart

Install library 🔗 TaskScheduler

private void InstallMeOnStartUp() {
const string taskName = "taskName";
using (TaskService ts = new TaskService()) {
TaskDefinition td = ts.NewTask();
td.RegistrationInfo.Description = "Description";
td.Triggers.Add(new LogonTrigger());
var exePath = Assembly.GetExecutingAssembly().Location;
var workingDirectory = new FileInfo(exePath).DirectoryName;
td.Actions.Add(exePath, workingDirectory: workingDirectory);
td.Principal.RunLevel = TaskRunLevel.Highest;

try {
ts.RootFolder.RegisterTaskDefinition(taskName, td);
}
catch (Exception ex) {
//Log.Error(ex, "Fail to create scheduler task");
}
}
}
1
📦 Использование EF контекста в отдельном проекте Class Library
#ef #dotnet #entity_framework #separate_project

Команда для миграции, остальные аналогичною Запускать из папки проекта-библиотеки с параметром --startup-project :
dotnet ef migrations remove --startup-project ..\[папка проекта с внедренным контекстом]\[имя проекта].csproj

В самом проекте, где настроено внедрение контекста должно быть примерно следующее:
builder.Services.AddDbContext<MainContext>(o => o.UseSqlServer(builder.Configuration.GetConnectionString("Main")));

📎 Source
Классная библиотека компонентов для Vue 3
#vue #vue3 #ui #components_library #naiveui

📎 Ссылка
🐘 Установка PostgreSQL на CentOS
#postgres #postgre #setup #centos

sudo dnf install @postgresql:13

sudo dnf install postgresql-contrib

sudo postgresql-setup initdb

sudo systemctl enable --now postgresql

sudo nano /var/lib/pgsql/data/postgresql.conf
Прописать listen_addresses = '*'
Перезапустить sudo systemctl restart postgresql

Проверить, что слушает ss -nlt | grep 5432

Setup firewall
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
🔍 Статья про паттерн Спецификация
#спецификация #паттерн

📎 Ссылка
jetbra-2.zip
157.1 KB
🕶 Активатор всех продуктов Jetbrains
#crack #jetbrains #activation #rider

Описание активации в файле readme.txt

Точно без вирусов
Механизм поддержания актуальной версии клиента в SPA
#frontend #version #client #update

1) Сделать контроллер версии приложения, без авторизации
2) В нем открытый метод, который берет номер версии из конфига appsettings.json (или иного хранилища)
3) Во фронте сделать скрытый компонент, который проверяет каждые N секунд (и при старте страницы) версию на сервере
4) Результат версии писать в cookies и сравнивать с ново-полученным, если версия с сервера больше, то выводить уведомление о том, что версия поменялась, с кнопкой обновляющей страницу и кэш window.location.reload(true);
5) При публикации нового фронта - менять версию в backend с рестартом, или вынести версию в базу данных а на backend грузить ее в MemoryCache с абсолютной экспирацией (например +5 минут)

reload(true) - перезагрузка без кэша
🛳 Хорошие вводные статьи для погружения в Gitlab CI/CD
#cicd #gitlab #pipeline #ci #cd

Статья 1
Статья 2
Видео-ликбез