• Dev/Build окружение для отдельных компонентов React?

    dmnBrest
    @dmnBrest Автор вопроса
    Kentavr16, а вот это интересно "лайв сервер на vs-code" я что-то не встречал примеры об этом. Просто долго работал с ангуляром, привык к dev серверу. Мне собственно и надо чтобы jsx в js компилить, да на страницу script тегом подключать. Просто думал есть готовые решения, а дока по реакту советует использовать фреймворки типа next.js
    Написано
  • Dev/Build окружение для отдельных компонентов React?

    dmnBrest
    @dmnBrest Автор вопроса
    Kentavr16, так в этом и суть чтобы запустить dev server по типу npm start, а он тебе все компилирует в js bundle(s). так чтобы ты мог на html странице сделать

    sjdhfkjsdfkjsdhf
    <my-header />
    dskflhsldfjlsd
    <my-sidebar />
    fkjslfjdsf
    <my-footer />

    и не приходилось перезапускать этот dev server для каждого отдельного компонента со своим app. И работал hot-reload.
    Написано
  • Как запустить процесс в отдельном Pod?

    dmnBrest
    @dmnBrest Автор вопроса
    Ну отчего ж хитрые задачи. Задачи очень даже простые и понятные. Есть большой Django проект. Кроме того что он просто запускается в нем еще запилено кучу кастосных cli тулов которые запускаются в контексте данного django проекта вручную (https://docs.djangoproject.com/en/3.2/howto/custom...).
    запускать эти комманды в обычных подах в которых крутится сам Django не лучший вариант. Надо использовать отдельное окружение, но оно должно быть приближено к проду.
    Пока работали с Хероку все выглядено крайне просто - сделал
    heroku run bash --app my-app
    отработал и закрыл.
    Даже написали несколько интересных тестовых стенда, которые используя heroku cli запускали разные скрипты на "продакшен" подах. Само web приложение крутится по себе, скрипты запускаются в изолированных окружениях, отрабатывают и умирают.

    Думал что в гугл/кубернейт такое тоже имеется. Но по ходу сравнивать Хероку с Кубернейтс не совсем корректно.

    Буду развивать эту тему :)
  • Как запустить процесс в отдельном Pod?

    dmnBrest
    @dmnBrest Автор вопроса
    Дмитрий Шицков, спасибо за сам ответ. В общем вы ответили на мой вопрос. Но поигравшись понял что кое чего не хватает :( Дело в том что для запуска самого приложения у нас огромный yaml и там тонна Env Vars прописана. Команда из вашего ответа не учитывает этот yaml и это логично (просто поднимается докер контейнер из image). Есть ли какой-то способ поднять наш pod с настройками из yaml файла который используется для Deployment?
  • Как запустить процесс в отдельном Pod?

    dmnBrest
    @dmnBrest Автор вопроса
    ДА!!!! Как раз параллельно нашел причину. Надо было temp_pod_1 добавить. Под этим именем pod появляется в списке Workloads в GKE.

    Спасибо!!!! То что надо!!!!
  • Как запустить процесс в отдельном Pod?

    dmnBrest
    @dmnBrest Автор вопроса
    Совсем полную не могу, проект рабочий (изменил имя image). Так же убрал namespace гурается что не может найти.

    Вот примерно такое у меня.

    kubectl run -it --rm --image eu.gcr.io/xxxxxxxx/yyyyyyyy:f8b64e5e404c3ffd0df4890f32bccf3232e56ca3 -- bash
  • Как запустить процесс в отдельном Pod?

    dmnBrest
    @dmnBrest Автор вопроса
    Что-то мне такую штуку возвращаят

    pod "bash" deleted
    error: timed out waiting for the condition


    Не сталкивались?
  • Какой есть удобный просмотрщик логов из journalctl?

    dmnBrest
    @dmnBrest Автор вопроса
    Все стало немного лучше. Я ставил lnav с помощью apt-get, но по ходу версия багнутая. Поставил с помощью snap и все заработало. И поиск и "journalctl | lnav". :) Теперь заживем :)))))) Спасибо за совет!
  • Какой есть удобный просмотрщик логов из journalctl?

    dmnBrest
    @dmnBrest Автор вопроса
    Спасибо за идею - поищу.
  • Какой есть удобный просмотрщик логов из journalctl?

    dmnBrest
    @dmnBrest Автор вопроса
    Сергей Семенко Попробовал lnav. Уже ближе к тому что мне надо. Только не понял как заставить его подружиться с логами из journalctl без лишних танцев с бубнами. Удалось только сделать так - выгрузить логи за день из journalctl в файл и скормить этот файл lnav. Приятно что lnav понял формат логов и включил подсветку. Понравилась работа с фильтрами, но сильно замудрено. А вот search что-то не очень заработал - вводишь "/" и начинаешь печатать - вроде подсвечивает, но нажимаешь ENTER - внизу начинает бегать зеленая полоска и lnav через секунд 15 просто отваливается. Буду разбираться что за баг. Если бы lnav из коробки понимал journalctl логи (без выгрузки в файл) было бы совсем круто.
  • Какой есть удобный просмотрщик логов из journalctl?

    dmnBrest
    @dmnBrest Автор вопроса
    В том то и дело. Проект простой, домашний, VPS и так 2GB из которых 500 уже используется. Ставить еще ELK чтобы он все остальное отожрал ради просмотра логов раз в неделю не сильно хочется.
  • Как правильно создать безопасную инфраструктуру для сложных операций?

    dmnBrest
    @dmnBrest Автор вопроса
    Лариса .•º, не сталкивался с Consul. Надо будет изучить.
    Я пока все больше склоняюсь попробовать замутить это все на уровне Docker API который будет дергаться из основного приложения и будет запускать контейнеры с запакованной логикой. Сегодня полистал Docker API и мне понравилось его возможности. Попробую замутить что-то типа своего оркестратора.
  • Как правильно создать безопасную инфраструктуру для сложных операций?

    dmnBrest
    @dmnBrest Автор вопроса
    Лариса .•º, да, это вариант, я тоже про него думал. Но мне не нравится такой подход потому что во первых количество воркеров значение постоянное и они должны постоянно работать если нет нагрузки. если не мутить какой-то механизм автоматического запуска/остановки воркеров и их маштабирования. Хотя вот пока писал про автозапуск/маштабирование вспомнил про Kubernates. Возможно это задача как раз для него. Возможно есть вариант поднять кластер исключительно под воркеры и настроить кластер чтобы он автоматически запускал воркеры в зависимости от нагрузки. Но выглядит как-то сложновато в контроле и отладке. Хотелось бы просто какой-то промежуточный вариант типа "эй Kubernates (или что-то там) запусти мне этот скрипт" и все. Инстанс поднялся отработал умер.
  • Как правильно создать безопасную инфраструктуру для сложных операций?

    dmnBrest
    @dmnBrest Автор вопроса
    Я не про сам дейплой. Это всего лишь пример асинхронной задачи. Задача может быть и расчет чисел фибаначи. Смысл вопроса как сделать запуск скриптов в изолированном окружении независимом от самого сервера приложения.
    Но пусть будет Ansible. У меня есть сервис где могут регаться пользователя. И зарегалось 100 пользователей. У каждого есть свой Ansible скрипт и он хочет его запускать раз в сутки в 12.00. То есть мы должны запустить одновременно 100 Ansible скриптов. И так что если один свалится чтобы не упал весь сервер или другие скрипты.
  • Как правильно преобразовать Text to HTML в Aps.Net?

    dmnBrest
    @dmnBrest Автор вопроса
    О! Не все так просто с wisiwig редакторами! Никогда нельзя использовать html от пользователя!

    А моя история такая:
    переписываю старый движек моего старого сайта написанного на RoR. А там логика была когда-то задумана использовать BBCodes. В итоге параноик во мне замутил такую логику. С фронта приходит текст с BBCodes, он попадает в BBCodes parser и затем пропусткается через Sanitizer (на всякий так как BBCodes уязвимы для XSS, вернее допотопные парсеры, которые писались сто лет назад). В итоге получается такой франкинштейн из plain text c тегами html. И вот тут на помощь приходит этот самый упомянутый simple_format из RoR который делает совсем красивый html. Думал что в asp.net что то похожее есть, но не нашел. В итоге надумал переехать на Markdown (как посоветовали выше). С ним все что я описал уже не надо, и поддержка у него получше BBCode.
  • Как правильно преобразовать Text to HTML в Aps.Net?

    dmnBrest
    @dmnBrest Автор вопроса
    Да, в итоге к markdig и пришел и планирую его использовать. Просто исторически сложилось что использовались BBCode, отсюда и стока замарочек.
  • Как правильно преобразовать Text to HTML в Aps.Net?

    dmnBrest
    @dmnBrest Автор вопроса
    Зачем изобретать велосипеды в наше время? Может это уже есть, просто надо уметь найти. Блин, в Ruby on Rails эту хрень придумали еще 20 лет назад, а в asp.net еще не додумались? Хотя да, чего это я? .Net это энтерпрайз где платят деньги за потраченное время а не за готовые решения :)))))
  • Есть ли в ASP.NET возможность написания своих кастомных консольных тулов?

    dmnBrest
    @dmnBrest Автор вопроса
    Василий Банников, наверное нашел вариант как сделать правильно. Можете забить на предыдущий коммент :)

    ... 
    var configuration = new ConfigurationBuilder()
                            .SetBasePath(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + ".." + Path.DirectorySeparatorChar + "MyWebProject")
                            .AddJsonFile("appsettings.json", false)
                            .AddJsonFile("appsettings.Development.json", true)
                            .Build();
    
    IHostBuilder builder = Host.CreateDefaultBuilder(args)
                            .ConfigureAppConfiguration(builder =>
                            {
                                builder.Sources.Clear();
                                builder.AddConfiguration(configuration);
                            })
                            .ConfigureWebHostDefaults(webBuilder =>
                            {
                                webBuilder.UseStartup<Startup>();
                            });
    IHost host = builder.Build();
    
    Console.WriteLine(host);
    
    var dbContext  = (ApplicationDbContext)host.Services.GetService(typeof(ApplicationDbContext));
    
    var userIds = new List<int>{1, 2};
    var userProfiles = dbContext.UserProfiles
                        .Where(up => userIds.Contains(up.Id))
                        .ToList();
    Console.WriteLine(userProfiles.Count);
    ...
  • Есть ли в ASP.NET возможность написания своих кастомных консольных тулов?

    dmnBrest
    @dmnBrest Автор вопроса
    Василий Банников, спасибо за информацию выше, многое прояснилось :). (Я просто недавно начал перебираться из python в .net) и благодаря вашим ответам откопал целую тему про работу в разных проектах через references. Но пока из примеров в интернете относительно моего вопроса как пошарить контекст из ASP.NET в другой проект не особо продвинулся. Нашел кучу инфы как создать такой-же контекст для EF и ASP.Net Identity (могу работать с базой через модели из ASP.NET проекта и даже могу пользователей создавать) но вижу что это не тот же самый контекст. Можете скинуть ссылки на какие-нибудь статьи с примерами похожей реализации (где выше вы писали про "контекст выносится в отдельную сборку"). На данные момент все что мне удалось родить вот такой подход: (не обращайте внимание на саму бизнес логику, мне пока важно понять именно подход к работе с контекстом) Ну и если будут замечания по каким-то моментам тоже буду признателен :)
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text.Json;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Identity;
    using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.Configuration;
    using MyWebProject.Data;
    
    namespace MyWebProjectCLI
    {
        class Program
        {
            static void Main(string[] args)
            {
                MainAsync(args).GetAwaiter().GetResult();
            }
    
            static async Task MainAsync(string[] args) {
    
                Console.WriteLine("Hello World!");
    
                Console.WriteLine(Directory.GetCurrentDirectory());
    
                var configuration = new ConfigurationBuilder()
                                        .SetBasePath(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + ".." + Path.DirectorySeparatorChar + "MyWebProject")
                                        .AddJsonFile("appsettings.json", false)
                                        .AddJsonFile("appsettings.Development.json", true)
                                        .Build();
    
                var _connectionString = configuration.GetConnectionString("DefaultConnection");
    
                var options = new DbContextOptionsBuilder<ApplicationDbContext>()
                                .UseNpgsql(_connectionString)
                                .UseSnakeCaseNamingConvention().Options;
    
                using (var dbContext = new ApplicationDbContext(options))
                {
    
                    Console.WriteLine("Doom");
    
                    var userStore = new UserStore<ApplicationUser>(dbContext);
                    UserManager<ApplicationUser> _userManager = new UserManager<ApplicationUser>(userStore, null, new PasswordHasher<ApplicationUser>(), null, null, null, null, null, null);
    
                    var userIds = new List<int>{1, 2};
                    var userProfiles = dbContext.UserProfiles
                                        .Where(up => userIds.Contains(up.Id))
                                        .ToList();
                    Console.WriteLine(userProfiles.Count);
    
                    foreach (var up in userProfiles)
                    {
                        Console.WriteLine(JsonSerializer.Serialize(up));
    
                        var oldData = up.OldData.RootElement;
    
                        var user = new ApplicationUser { UserName = oldData.GetProperty("username").ToString(),
                                                         Email = oldData.GetProperty("email").ToString() };
                        var result = await _userManager.CreateAsync(user, oldData.GetProperty("encrypted_password").ToString());
                        if (!result.Succeeded)
                        {
                            Console.WriteLine("ERROR");
                            break;
    
    
    
                        }
    
    
                    }
    
    
                }
    
            }
        }
    }

    Почему вопрос возник.
    Есть строка где я создаю
    UserManager _userManager = new UserManager
    И он по ходу работает не так как в самом ASP.NET проекте - я вижу в базе users создаются с неправильной нормализацией (значения не в верхнем регистре). Как бы может оно и так будет работать, но хочется сделать по уму.
  • Есть ли в ASP.NET возможность написания своих кастомных консольных тулов?

    dmnBrest
    @dmnBrest Автор вопроса
    Я правильно понимаю что этот dotnet tool позволит запустить какой-то класс.метод из моего ASP.NET проекта или это будет отдельный проект? Пробежался по ссылке но не увидел как это дело внедрить непосредственно в мой Web проект. Смысл в чем - мне надо что-то типа вызвать логику которая будет иметь доступ ко всем EF объектам, конфигам, сервисам. Можно конечно написать обычный Controller + Routing и дернуть его через CURL, но хотелось бы просто дернуть через CLI команду чтобы контекст поднялся, код отработал и аппа умерла.
    За наводку спасибо буду рыть в этом направлении :)