• Почему Jupyter noteboor не видит torch?

    Ogoun
    @Ogoun Автор вопроса
    Максим Припадчев, получилось. Создал виртуальное окружение с той же версией python которая под (base), затем в окружении выполнил conda install jupyter, после чего там же установил торч через
    conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
    запустил юпитер и торч завелся.
    Ностальгия аж по XP и его DLL Hell проснулась. Надеюсь когда нибудь и в никсах смогут работать с версионностью нормально)
  • Почему Jupyter noteboor не видит torch?

    Ogoun
    @Ogoun Автор вопроса
    Максим Припадчев, обнаружил что в виртуальном окружении версия питона 3.11.3, а в юпитере который запущен в этом же окружении версия 3.10.6
  • Почему Jupyter noteboor не видит torch?

    Ogoun
    @Ogoun Автор вопроса
    Максим Припадчев, полностью снес конду и поставил заново, сделал виртуальное окружение, поставил в нем торч, и все то же самое. Через пайтон работает, через юпитер пакет не импортится
  • Почему Jupyter noteboor не видит torch?

    Ogoun
    @Ogoun Автор вопроса
    Максим Припадчев, /home/ogoun/anaconda3/lib/python3.10/site-packages

    Путь такой, пакеты такие:
    torch/ torchaudio-2.0.2-py3.10.egg-info/ torchvision-0.14.1.dist-info/
    torch-1.13.1.dist-info/ torchgen/ torchvision-0.15.2-py3.10.egg-info/
    torch-2.0.1-py3.10.egg-info/ torchmetrics/ torchvision.libs/
    torchaudio/ torchmetrics-0.8.0.dist-info/
    torchaudio-0.13.1+cu117.dist-info/ torchvision/
  • Почему Jupyter noteboor не видит torch?

    Ogoun
    @Ogoun Автор вопроса
    Использую анаконду, версия
    conda 23.5.0

    Ядро Pythin3 (ipkernel)

    Виртуальное окружение конды создавал.
    Затем запусти, jupyter и тогда устанавливай torch.


    Именно так и делал.
  • В чем может быть причина, что не работает аутентификация через Cookies в asp.net?

    Ogoun
    @Ogoun Автор вопроса
    Перестановка сработала:
    app.UseCookiePolicy();
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseDefaultFiles();
    app.UseStaticFiles(options);
    app.MapControllers();


    Спасибо!
  • В чем может быть причина, что не работает аутентификация через Cookies в asp.net?

    Ogoun
    @Ogoun Автор вопроса
    insighter, проверка не в контроллере:
    var options = new StaticFileOptions
    {
        OnPrepareResponse = (context) =>
        {
            var path = context.File.Name;
            if (path.IndexOf("editor.html") >= 0)
            {
                if ((context.Context.User?.Identity?.IsAuthenticated ?? false) == false)
                {
                    // respond HTTP 401 Unauthorized.
                    context.Context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    context.Context.Response.ContentLength = 0;
                    context.Context.Response.Body = Stream.Null;
                    context.Context.Response.Redirect("login.html");
                }
            }
        },
    };
    app.UseStaticFiles(options);
  • Как сделать синхронное фото с нескольких телефонов?

    Ogoun
    @Ogoun Автор вопроса
    Можно, но просядет качество. И хотелось бы одинаковых имен снимков сделанных в один момент времени. Для удобства автоматической обработки после.
  • Как сделать запрос через конкретное сетевое устройство в .net?

    Ogoun
    @Ogoun Автор вопроса
    d-stream, думаю в этом направлении, спасибо. Но мне странно что нет возможности программно это сделать.
  • Как сделать запрос через конкретное сетевое устройство в .net?

    Ogoun
    @Ogoun Автор вопроса
    Мне нужно чтобы wifi адаптер ни на что не влиял в системе, использовать его только из приложения.
    С маршрутами я готов рассмотреть решение, но не понимаю как сделать. Если мне нужно чтобы к любому сайту не из приложения был доступ через встроенную сетевую карту, а из приложения к тем же любым сайтам только через wifi, разве маршрутизация сможет помочь? Мне казалось что ее на приложения нельзя настроить.
  • Как запретить чужому процессу доступ к определенной директории в файловой системе?

    Ogoun
    @Ogoun
    Код к ответу выше, как задать права каталогу.
    public static void SetupFolderPermission(string folderPath, string account,
                FileSystemRights right, AccessControlType controlType)
            {
                DirectoryInfo directory = new DirectoryInfo(folderPath);
                DirectorySecurity security = directory.GetAccessControl();
                security.AddAccessRule(new FileSystemAccessRule(account, right,
                    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                    PropagationFlags.None, controlType));
                directory.SetAccessControl(security);
            }
  • Генерация дерева для каталогов, рекурсия?

    Ogoun
    @Ogoun
    Ну это еще проще:
    public static void MakeFolderList(string base_path, List<string> list, int current_level, int depth, int width)
            {
                list.Add(base_path);
                if (current_level >= depth) return;
                string parent_name;
                if (Path.GetPathRoot(base_path).Equals(base_path))
                {
                    parent_name = "folder";
                }
                else
                {
                    parent_name = Path.GetFileName(base_path);
                }
                for (int i = 0; i < width; i++)
                {
                    var path = Path.Combine(base_path, parent_name + "_" + (i + 1));
                    MakeFolderList(path, list, current_level + 1, depth, width);
                }
            }
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    Ogoun
    @Ogoun
    Нет, если делать общий балансировщик, получалась зависимость от одной точки отказа. Каждый сервис при запуске подтягивает себе таблицу с discovery и хранит свою копию, пока адреса актуальны, то сервис сможет взаимодействовать с другими сервисами даже если discovery упал. Балансировку каждый сервис делает сам по принципу round-robin, при этом если запрос не прошел, то выкидывает из своей локальной копии адрес.
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    Ogoun
    @Ogoun
    Larry Underwood, а docker, rkt и kubernetes не использую. Одна из причин, то что *nix'ы в компании, к сожалению, еще не внедрены, использовать на win смысла особого не вижу. Подожду пару лет пока .net core и docker (он в плане легкости конфигурирования) прокачаются и можно будет переехать во всю эту инфраструктуру.
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    Ogoun
    @Ogoun
    Larry Underwood, discovery очень прост, был сделан за пару дней, хранит состояние только в оперативной памяти. Работает как win-служба и поднимает self-host webAPI для регистрации сервисов и предоставления таблицы с сервисами. Принимает сообщение от сервиса, сохраняет имя exchange, если в терминах MQ, и его enpdoint, при этом группирует endpoint'ы по имени exchange. Каждый сервис может поднять сколько угодно точек подключения и зарегистрировать на точках подключения inbox'ы.
    Вот так выглядит запись для одной точки обмена:
    <IPRRecord>
    	<Endpoints>
    		<d3p1:string>192.168.1.100:61812</d3p1:string>
    		<d3p1:string>192.168.1.100:61822</d3p1:string>
    		<d3p1:string>192.168.1.100:61833</d3p1:string>
    		<d3p1:string>192.168.1.100:61841</d3p1:string>
    		<d3p1:string>192.168.1.100:61850</d3p1:string>
    	</Endpoints>
    	<Transport>webapi</Transport>
    	<Key>exchange_name</Key>
    	<Title>MyService</Title>
    	<Version>1.0</Version>
    </IPRRecord>


    Для обновления есть автоматические сценарии, и будет свой deploy агент (или не свой, в рассмотрении octopus и teamcity). В общем случае сценарий такой, запускается новая версия сервиса в интерактивном режиме, включается в балансировку (регистрируется в discovery), удаляется сервис со старой версией, ставится и запускается сервис с новой версией, останавливается интерактивная копия. Получается обновление на горячую без остановки работы.

    По базе данных, если имеется в виду системная база данных, то механизм работы всей системы в целом сделан так, что при изменении схемы БД (что очень маловероятно), новый сервис который в нее пишет начнет писать в новую базу, а данные со старой будут мигрированы вручную. Это не даст никакого эффекта на работу системы.

    Если же имеется в виду запись во внешние базы, то используется собственный DSL, в котором можно указывать маппинг полей и генерировать запросы. Соотвественно если будет изменена схема БД внешней по отношению к системе, то будет просто изменен текст с описанием маппинга.
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    Ogoun
    @Ogoun
    Да, используется собственный Discovery сервис, у него постоянный адрес, и он хранит и раздает актуальную таблицу маршрутизации. Через него же можно отслеживать падения сервисов (делает heartbeat и исключает недоступные).
    Падения сервисов это исключительная ситуация, т.к. они должны работать 24x7, в проде не помню чтобы была такая ситуация. Но если возникнет, то восстановлением будет заниматься или дежурный оператор, или пойдет к разработчикам, если что-то серьезное.
    Также в таблице маршрутизации есть поле в котором указан транспорт по которому можно обращаться к сервису (webapi, socket), заложено на будущее и позволит безболезненно перейти на более быструю версию если понадобится.
  • Как правильно переопредетиль Equals?

    Ogoun
    @Ogoun
    И да, если используется наследование как у вас, то общую часть стоит вынести в BaseEntity:
    public bool Equals(BaseEntity other)
    {
        if ((object)this == (object)other)
            return true;
        if (this == null) // и так бывает
            throw new NullReferenceException();
        if (other == null)
            return false;
        if (ReferenceEquals(this, other))
            return true;
        if (this.GetType() != other.GetType())
            return false;
        return Id == other.Id;
    }
    
    public override bool Equals(object obj)
    {
        if (this == null)
            throw new NullReferenceException();
    
        return Equals(obj as BaseEntity);
    }
    
    public static bool operator ==(BaseEntity first, BaseEntity second) => Equals(first, second);
    public static bool operator !=(BaseEntity first, BaseEntity second) => !Equals(first, second);


    А в производном классе делать уже проще:
    public class CoastModel : BaseEntity
    {
        public string AppointmentCoast { get; set; }
        public double CurrencyUAH { get; set; } = 0;
        public double CurrencyUSD { get; set; } = 0;
        public double CourseOfExchange { get; set; } = 0;
        public string CategoryId { get; set; }
        public string CheckUrl { get; set; } = null;
        public DateTime Date { get; set; }
        public string AutorCoastID { get; set; }
    
        public override bool Equals(object obj)
        {
            return this.Equals(obj as CoastModel);
        }
    
        public bool Equals(CoastModel other)
        {
            if (other == null) return false;
            bool eq = base.Equals(other);
            if (false == eq) return false;
            eq &= this.CurrencyUAH == other.CurrencyUAH;
            eq &= this.CurrencyUSD == other.CurrencyUSD;
            eq &= this.CourseOfExchange == other.CourseOfExchange;
            eq &= String.Compare(this.AppointmentCoast, other.AppointmentCoast, StringComparison.Ordinal) == 0;
            eq &= String.Compare(this.CategoryId, other.CategoryId, StringComparison.Ordinal) == 0;
            eq &= String.Compare(this.CheckUrl, other.CheckUrl, StringComparison.Ordinal) == 0;
            eq &= String.Compare(this.AutorCoastID, other.AutorCoastID, StringComparison.Ordinal) == 0;
            eq &= DateTime.Compare(this.Date, other.Date) == 0;
            return eq;
        }
    }
  • Как выбрать блок питание для Arduino?

    Ogoun
    @Ogoun Автор вопроса
    evgeniy_lm: Это все полутора-двухамперные зарядки которые использую для телефонов и повербанок.
  • Как выбрать блок питание для Arduino?

    Ogoun
    @Ogoun Автор вопроса
    Зарядки телефонов все таки не рассчитаны на непрерывную работу, и обычно неплохо нагреваются. Поэтому и хочу найти надежный и безопасный вариант.