• Как добавить расширение для сайта (на js) в WebView с помощью XMLHttpRequest?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    А как у вас веб-приложение обрабатывает запросы? Если там нет index.html или такой роут в нём отсутсвует, то вы ничего сделать и не сможете. Если там есть файл этот или роут, то спокойно и обращайтесь к нему
    web.loadUrl("https://deltav4.gitlab.io/ext/index.html");
    Ответ написан
  • Как сохранить html разметку с текстом в mongodb?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Посмотрите, через mongodb cli в каком виде сохранились данные, Если просто Hello, то у вас стоит strip html-тэгов, его надо бы отключить для данного HTTP-запроса на сохранение. Если сохранилось, как надо, то тут надо смотреть как вы выводите на фронт, многие фреймворки делают strip тэгов, поэтому смотрите для своего фреймворка, как можно вывести без этого. А если вы пользуетесь DOM API, то надо выводить именно через innerHtml
    Ответ написан
  • Как избавиться от ошибки?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Видимо mysql обрывает коннект
    Попробуйте передподключаться, если вас сбрасывают. Также не забудьте всё проверить данные для подключения к базе.
    let connection;
    
    function connectDatabase() {
      connection = mysql.createConnection(/* ваши параметры */);
    
      connection.connect(function (err) {
        // Если сервер перезагрузился или упал 
        if (err) setTimeout(connectDatabase, 2000); // Ждём две секунды, пробуем снова
      });
    
      connection.on('error', function (err) {
        // если потеряли соединение, то подключаемся заново
        // в остальных случаях выкидываем exception, чтобы узнать, что произошло
        if (err.code === 'PROTOCOL_CONNECTION_LOST') connectDatabase();
        else throw err;
      });
    }
    
    connectDatabase();
    Ответ написан
    Комментировать
  • Как добавить массив в конец документа?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    У себя на клиенте можете попробовать отсортировать через Object.keys.
    Но ради эстетики это того не стоит, а в кейсах, где вам кажется, что именно нужен порядок в ключах объекта, зачастую это от плохого проектирования структуры документов/объектов/классов, и лучше пересмотреть структуру.
    Ответ написан
    Комментировать
  • Можете посоветовать бюджетную схему логирования на AWS?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Elasticsearch довольно прожорливый, поэтому на экономию диска не расчитывайте)
    А чтобы не терялись логи, надо поднимать распределённый кластер на нескольких инстансах (облако, vps, vds, тут уж сравнивайте цены сами).
    Ответ написан
    Комментировать
  • Как идеологически правильно делать Lazy Load и делать ли её вообще?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Есть магический метод __get (с двумя нижними подчёркиваниями)
    class Category
    {
        private $children = null;
    
        public function __get($property)
        {
            if ($property === 'children') {
                if ($this->children !== null) return $this->children;
                else {
                    $this->children = $this->getChildren();
                    return $this->children;
                }
            } else {
                throw 'Undefined property';
            }
        }
    
        private function getChildren()
        {
            // TODO: запрос к базе и получение результата
        }
    }
    
    $category = new Category();
    someAction($category->children); // в первый раз будет запрос
    showSubCategories($category->children); // второй и послудеющий раз возьмёт уже из приватного поля

    А к вопросу нужности - зачастую в ORM это настраивается, какие поля брать сразу, а какие лениво. Так что полностью зависит от задачи.
    Ответ написан
    Комментировать
  • TXT или JSON - Что лучше?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Судя по вопросу вы не очень понимаете, какие проблемы решают большинство СУБД помимо самого хранения.
    Так вот это ACID (атомарность, согласованность, изолированность, стойкость).
    Если вы будете реализовывать хранение в txt или json файле, вам придётся самим решать эти проблемы, а решаются они далеко не просто.
    Так что не создавайте себе проблемы и возьмите SQLite, если вам так сильно не хочется устанавливать MySQL или любую другую серьёзную СУБД.
    Ответ написан
    8 комментариев
  • Как вывести следующий элемент в массиве?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    В следующий раз пишите нормально, что вы хотите. Я два раза переписывал код, чтобы понять, что вы хотите. А хотите вы имя первого саб-элемента.
    function getSubName($arr, $elementId) {
        foreach ($arr as $element) {
            if ($element['sub_id'] === $elementId) return $element['name'];
        }
    
        return false;
    }
    
    echo getSubName($arr, 1) . "\n";
    Ответ написан
    Комментировать
  • Объясните работу get и set в c#?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Конструкция свойств get-set генерирует скрытые (для синтаксиса) методы и поле
    Например,
    class Human
    {
        public string Name { get; set }
    }

    преобразуется на уровне компилятора в
    class Human
    {
        private string _name;
    
        public string GetName()
        {
            return this._name;
        }
    
        public void SetName(string value)
        {
            this._name = value;
        }
    }


    Но get и set можно переопределять, но тогда поле не генерируется и надо самому определить (или использовать существующее, в зависимости от логики)
    Например,
    class Human
    {
        private string _phone;
    
        public string Phone
        {
            get => "Human phone" + this._phone;
            set =>
            {
                this._phone = value;
                if (value[0] != '+') this._phone = "+" + this._phone;
            }
        }
    }

    Преобразуется в
    class Human
    {
        private string _phone;
    
        public string GetPhone()
        {
            return "Human phone: " + this._phone;
        }
    
        public void SetPhone(string value)
        {
            this._phone = value;
            if (value[0] != '+') this._phone = "+" + this._phone;
        }
    }


    Ну и обращения к свойствам в качестве полей заменяется на вызов метода
    var human = new Human();
    human.Name = "John";
    Console.WriteLine(human.Name);

    преобразуется в
    Human human = new Human();
    human.SetName("John");
    Console.WriteLine(human.GetName());


    А если не указать get или set, то соответственно не будет генерироваться метод на чтение или запись
    Ответ написан
    Комментировать
  • Можно ли объединять 2 и более классов в одном файле?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Обычно принято выносить каждый класс в отдельный файл, но, например Node для LinkedList вполне приемлемо в том же файле определить
    Ответ написан
    Комментировать
  • Как зациклить музыку, зашитую в ехе через Soundplayer?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Попробуйте всё же вынести плеер в поле класса
    partial class MyForm
    {
        private SoundPlayer Player = new SoundPlayer(Properties.Resources.SoundName);
    
        private void PlayAudio()
        {
            // Если нужно загружать именно по нажатию кнопки
            // this.Player = new SoundPlayer(Properties.Resources.SoundName);
    
            this.Player.PlayLooping();
        }
    }
    Ответ написан
  • Как исправить валидацию?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Лучше взять за основу один формат данных.
    А ещё лучше взять mask input, тогда не будет проблем с валидацией
    https://webstool.ru/jquery.maskedinput.html
    Ответ написан
    Комментировать
  • Как сделать инъецию React в файл content.js Chrome Extension?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Через webpack или gulp соберите сначала свой React App, а потом уже полученный JS используйте в content.js
    Ответ написан
  • Как правильно принять json в laravel?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    На стороне лары можно вот так:
    https://laravel.com/docs/8.x/requests#retrieving-j...
    Но в запросе должен быть заголовок
    Content-Type: application/json
    Ну и валидировать можно спокойно
    https://laravel.com/docs/8.x/validation#validating...
    Ответ написан
    Комментировать
  • Как в Nuxt, при SSR сократить размер объекта window.__NUXT__?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    PageSpeed, как и Lighthouse, в любом случае будет ругаться то на кучу JS кода, то на полифиллы, которые даже в modern режиме иногда подгружаются почему-то. Объект __NUXT__ нужен для воспроизведения состояния Vue, чтобы он потом работал и не делал лишний рендеринг. А так полностью статические компоненты в него не отдают данные, так как у них нет ни состояния, ни пропсов. По моему опыту - как раз большую часть __NUXT__ занимают data values и i18n переводы, чем меньше вы их будете использовать, тем меньше и будет __NUXT__. Других способов уменьшить его размер - нет.
    Ответ написан
    Комментировать
  • Как сделать повтор запроса webrequest при ошибке (C#)?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Через рекурсию, как вариант

    async Task<string> SendRequestUntilSuccess(string url)
    {
        try	
        {
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            return response.Content.ReadAsStringAsync();
        }
        catch(HttpRequestException e)
        {
            return SendRequestUntilSuccess(url);
        }
    }
    Ответ написан
    Комментировать
  • Как обновить вложенный массив в React?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    К сожалению, вам придётся полностью копировать объект content c новыми данными в массиве.

    const newContent = { ...this.state.content };
    newContent.themes[0].questions_count++;
    this.setState({ content: newContent });

    Ещё можно разделить всё по компонентам, так проще будет контролировать state и, например, через события (callbacks в props) где-то собирать, если надо. А тут уже как вариант можно использовать Redux и оттуда отдельно тянуть массив с вопросами.
    Ответ написан
  • Как в базе делается "просмотренно" на сообщениях и задачах для разных пользователей?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Вот, что мне пришло первое в голову:
    Я бы хранил так
    user_id | task_id | is_watched
    И написал бы триггер (CREATE TRIGGER) на изменение задачи, чтоб менял всем подписанным пользователям is_watching на false.
    А при просмотре (уже в рамках приложения), меняем на true.
    В принципе должно быстро считаться кол-во непросмотренных.
    Ответ написан
  • Спрятать внешние ссылки из БД на фронте?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Вы можете сделать API, чтобы по хэшу получать ссылку.
    Потом на наксте page с роутом для таких переходов.
    В нём под client-only компонент с уже полученной ссылкой с бэка и надписью - перенаправляем :) а в mounted:
    window.open(this.redirectUrl, '_self');
    Ответ написан
    Комментировать
  • Есть ли готовый модуль react календаря с ивентами?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Ответ написан
    Комментировать