Задать вопрос
Профиль пользователя заблокирован сроком с 16 октября 2023 г. и навсегда по причине: систематические нарушения правил сервиса
  • Какие есть одноплатники для NAS?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Забивать гвозди можно и микроскопом.
    Для понимания. Одноплатники это по сути дев борды. У них нет нормально подключенных сетевых интерфейсов, нет нормальных SATA.
    Поэтому все это тащит либо процессор либо чипсет.
    Поэтому либо используйте готовое либо платы типа mAtx
    Ответ написан
    Комментировать
  • Как организовать дистанционное обучение с одним преподавателем и множеством учеников?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Анрил. Я бы предложил записывать ролики для изучения и выкладывать в онлайн и связываться по ватсапу группами по 20 человек на разборе заданий. Но все равно не вытянете
    Ответ написан
    Комментировать
  • Как проектировать главную страницу сайта?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Все придумано до нас. Ведь по сути сайты это печатные издания. Так что первая страница верстается исключительно ради функциональности :) На примерах

    * визитка - типичный лендинг, на первой странице дают понять кто и это и что делает и показывают путь к быстрому получению услуги
    * глянец - гламурный сайт по которому можно побродить, и что выбрать из рекламы
    * энциклопедия - ссылки на нужные вам технологии, четкая структура и быстрый поиск
    * желтые страницы - просто каталог ссылок
    Ответ написан
  • Как выделить совпадения текста жирным в поисковом запросе?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как то так

    Ответ написан
    2 комментария
  • Предложения по лицензированию ПО на ВМ?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Сделайте плавающую лицензию.
    Примерный алгоритм

    1. Вычисление хэша матери проца и дисков отправка к вам на сервер и ввод логина и пароля.
    2. если хэши совпадают то просто запуск, но тут главное первый запрос на сервер

    В итоге программа запускается в 1 экземпляре, если вторая машина регистрируется то все остальные билеты протухают
    Ответ написан
    Комментировать
  • Когда стоит начинать изучать ООП в PHP?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы прочёл документацию там это в 6 или 7 главе
    Ответ написан
    Комментировать
  • Где взять техзадание для ASP.NET сервиса?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Реализуй вот это
    Задача
    Доработка сканера серийных номеров с этикеток.
    Цель: доработать существующий сканер этикеток.
    1. Система должна давать возможность нахождения и распознавания серийного номера независимо от иного текста, цвета фона, кол-ва символов S/N.
    2.Скорость - не менее 1,5 сек на объект
    3.Точность распознавания - не менее 96%
    4. Динамический выбор области сканирования с помощью татч-скрина
    5. Системные требования IOS, Android.

    Это конечно перебор для вас в области 4,5
    Но просто сделай на основе фото.
    Как заготовку сможешь использовать это, баркоды пакеты
    ZXing.Net
    ZXing.Net.Bindings.CoreCompat.System.Drawing

    Серийный номер Tesseract

    https://github.com/vkorotenko/VueRecaptcha
    Ответ написан
    2 комментария
  • Как защитить обучающие материалы от слива?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Самый правильный вариант это грамотное оформление договора с обучаемыми и защита авторских прав.
    Если все соблюдено и вы поймаете конкурента то выставите ему счет просто фантастический.

    Если же с технической стороны подходить я вижу несколько возможностей:
    1. На компьютерах снять поляризационные фильтры и сделать очки с этими фильтрами. Так что камера будет показывать только серый экран.
    2. есть специальный девайс обнаруживающий объективы и подающий сигнал тревоги (но сами понимаете спецсредства не продадут кому попало)
    3. Сугубо организационные меры, видеонаблюдение и отстранение человека который что то там снимает
    4. Программа DetectFace (то же спецсредство, используется у силовиков). Основная идея программы детектирование лиц и если лица нет в базе то блокировка экрана. Сделайте аналог, но с функцией распознавания не лиц а средств фото/видео фиксации. Если выберите 4 вариант могу собрать аналог
    Ответ написан
  • Какие есть варианты защиты сайта от клиента который оплатил только половину?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    не партесь если клиент мудак вы потеряете максимум ползаказа.

    А вот в другом случае я сейчас нахожусь. Вебмастер мудила. Разместил все на своем хосте, конфиги не дает, я угадываю как могу. Проект стоит, заказчик вообще в ярости, ответ вебмастера такой: ну вы типа мой дизайн возьмете, при том что там нафаршированный бандл.
    Ответ написан
    Комментировать
  • Как сделать выпадающее меню для товаров?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как то так и без jquery
    Ответ написан
    Комментировать
  • Можно ли создать полноценное приложение на js?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Итак разъясняю:
    При вашем стеке можно выбирать из следующего ReactNative, PWA, Cordova
    React и Cordova более предпочтительны так как возможностей больше.
    Насчет безопасности концепция "Безопасность через сокрытие" кажется мне сомнительной.
    Наиболее правильно сделать так что бы доступ к исходному коду ничего не давал бы.
    Кстати насчет большей защищенности скомпилированных приложений не обольщайтесь.
    Декомпиляторы дают возможность получить достаточно читаемый код как для Java так и для Objective C
    Ответ написан
    Комментировать
  • REST API выдал ошибку (неожиданный результат). Как решить?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    404 это отсутствие запрошенного ресурса. Проверьте настройку плагина, правильный ли путь.
    Ответ написан
  • Как массово исправить ошибки в файлах?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как то так, правда
    CheckSpellingAndPrint.ps1
    $word = New-Object -comobject word.application
    $word.visible = $true
    $path = "c:\fso\*"
    $files = Get-ChildItem -Path $path -Include *.doc
    foreach($file in $files)
    { 
    $file.fullname
     $doc = $word.documents.open($file.fullname)
     $doc.checkSpelling()
     $doc.checkGrammar()
     $doc.save()
    # закомментируйте что бы не выводило на печать
     $doc.printOut()
     $doc.close()
    }
     $word.quit()
    Ответ написан
    Комментировать
  • Как хранить информацию в БД о поставщиках когда они могут являться разынми сущностями?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Отнаследуйте любого продавана от базового класса, а дальше добавьте поле кто он такой
    Ответ написан
    4 комментария
  • Как построить архитектура мобильного приложения в котором сложная иерархия данных которые обновляются?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Примерно так:
    1 api
    ---------------------------
    2 сайт использующий это апи
    -------------------------------------
    3 общие дата классы вынесенные в отдельную библиотеку
    -----------------------------------------------------------------------
    4 мобильное приложение использующее это апи

    вот пример дата адаптера.
    using EggCloudApp.Models;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Text.Json;
    using System.Threading.Tasks;
    
    namespace EggCloudApp.Code
    {
        public class DataCient<TReq, TRes> where TRes : class
        {
            // https://test.online/
            public DataCient(string lang = CountryModel.RuLanguage)
            {
                if (lang == CountryModel.RuLanguage) BaseUrl = "https://test.ru";
                else BaseUrl = "https://test.online";
    
            }
            public string BaseUrl { get; }
    
            public int Status { get; private set; }
            public string Message { get; set; }
            public TRes Result { get; private set; }
            public async Task<TRes> Post(string url, string bearer, TReq req)
            {
                var apiUrl = BaseUrl + url;
                using var client = GetClient(bearer, apiUrl);
                var jsonInString = JsonSerializer.Serialize<TReq>(req, Options);
                HttpResponseMessage response;
                if (jsonInString == "\"\"")
                    response = await client.PostAsync(apiUrl, null);
                else
                    response = await client.PostAsync(apiUrl, new StringContent(jsonInString, Encoding.UTF8, "application/json"));
    
                if (response.IsSuccessStatusCode)
                {
                    var buff = await response.Content.ReadAsStringAsync();
                    if (string.IsNullOrEmpty(buff))
                    {
                        Result = null;
                        Status = 200;
                        return Result;
                    }
                    var result = JsonSerializer.Deserialize<TRes>(buff, Options);
                    Result = result;
                    Status = 200;
                    return result;
    
                }
                throw new ArgumentOutOfRangeException("Failed to fetch");
            }
    
            private JsonSerializerOptions Options => new JsonSerializerOptions()
            {
                PropertyNameCaseInsensitive = true
    
            };
            private async Task<TRes> Get(string uri, string bearer)
            {
                var apiUrl = BaseUrl + uri;
                using var client = GetClient(bearer, apiUrl);
    
    
    
                // var jsonInString = JsonSerializer.Serialize<TReq>(req, options);
                var response = await client.GetAsync(apiUrl);
    
                if (response.IsSuccessStatusCode)
                {
                    var buff = await response.Content.ReadAsStringAsync();
                    // AuthData
                    // var mm = JsonConvert.DeserializeObject<AuthData>(buff);
                    var result = JsonSerializer.Deserialize<TRes>(buff, Options);
                    Result = result;
                    Status = 200;
                    return result;
    
                }
                throw new ArgumentOutOfRangeException("Failed to fetch");
            }
            public async Task<TRes> GetRates(string bearer)
            {
                var resu = await Get("/api/shop", bearer);
                return resu;
            }
            public async Task<TRes> GetUserInfo(string bearer)
            {
                var resu = await Get("/api/user", bearer);
                return resu;
            }
            public async Task<TRes> Login(TReq req)
            {
                try
                {
                    return await GetToken(req);
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    throw new ArgumentException(ex.Message);
                }
            }
            private async Task<TRes> GetToken(TReq req)
            {
                var apiUrl = BaseUrl + "/api/auth/login";
                using var client = new HttpClient();
                client.BaseAddress = new Uri(apiUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                var jsonInString = JsonSerializer.Serialize<TReq>(req, Options);
                var response = await client.PostAsync(apiUrl, new StringContent(jsonInString, Encoding.UTF8, "application/json"));
    
                if (response.IsSuccessStatusCode)
                {
                    var buff = await response.Content.ReadAsStringAsync();
                    // AuthData
                    // var mm = JsonConvert.DeserializeObject<AuthData>(buff);
                    var result = JsonSerializer.Deserialize<TRes>(buff, Options);
                    Result = result;
                    Status = 200;
                    return result;
    
                }
                throw new ArgumentOutOfRangeException("Failed to login");
            }
    
            public void UpdateProfile(TReq model, string bearer)
            {
                try
                {
                    Post("/api/user", bearer, model);
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    throw new ArgumentException(ex.Message);
                }
            }
    
            public async Task<TRes> GetContacts(string bearer)
            {
                return await Get("/api/contacts/", bearer);
            }
    
            HttpClient GetClient(string bearer, string apiUrl)
            {
                var client = new HttpClient
                {
                    BaseAddress = new Uri(apiUrl)
                };
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearer);
                return client;
    
            }
            // Task<TRes> Post(string url, string bearer, TReq req)
            public async Task<TRes> Put(string uri, string bearer, TReq model)
            {
                var apiUrl = BaseUrl + uri;
                using var client = GetClient(bearer, apiUrl);
    
    
    
                var jsonInString = JsonSerializer.Serialize<TReq>(model, Options);
                HttpResponseMessage response;
                if (jsonInString == "\"\"")
                    response = await client.PutAsync(apiUrl, null);
                else
                    response = await client.PutAsync(apiUrl, new StringContent(jsonInString, Encoding.UTF8, "application/json"));
    
                if (response.IsSuccessStatusCode)
                {
                    var buff = await response.Content.ReadAsStringAsync();
                    if (string.IsNullOrEmpty(buff))
                    {
                        Result = null;
                        Status = 200;
                        return Result;
                    }
                    var result = JsonSerializer.Deserialize<TRes>(buff, Options);
                    Result = result;
                    Status = 200;
                    return result;
    
                }
                throw new ArgumentOutOfRangeException("Failed to fetch");
            }
    
            public async Task<TRes> Delete(string url, string bearer, TReq model)
            {
                var apiUrl = BaseUrl + url;
                using var client = GetClient(bearer, apiUrl);
    
    
    
    
                HttpResponseMessage response;
    
                response = await client.DeleteAsync(apiUrl);
    
                if (response.IsSuccessStatusCode)
                {
                    var buff = await response.Content.ReadAsStringAsync();
                    if (string.IsNullOrEmpty(buff))
                    {
                        Result = null;
                        Status = 200;
                        return Result;
                    }
                    var result = JsonSerializer.Deserialize<TRes>(buff, Options);
                    Result = result;
                    Status = 200;
                    return result;
    
                }
                throw new ArgumentOutOfRangeException("Failed to fetch");
            }
    
            public async Task<TRes> GetStors(string bearer)
            {
                return await Get( "/api/store/", bearer);
            }
        }
    }
    Ответ написан
    Комментировать
  • Какой ноутбук купить: MacOS или PC?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы взял carbon x1 16 гигов. Ультимативный ноутбук.
    Ответ написан
    1 комментарий
  • Проблема с установкой hmailserver, как решить?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    смотрите в списке зависимостей.
    установите вот это https://www.microsoft.com/ru-ru/download/details.a...
    дальше все должно быть штатно
    Ответ написан
    Комментировать
  • Мегафон вмешивается в трафик. что делать?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Зайдите ко мне в репозиторий на гитхабе. Там есть проект по детекту вмешательства, и инструкции что делать, мне честно было жалко времени на опротестование отказа в возбуждении уголовного дела. Если же вас это напрягает соберите факты и идите в полицию, получив отказ, подавайте жалобу в прокуратуру с требованием произвести проверку по факту отказа в возбуждении уголовного дела.
    Ответ написан
    Комментировать