• Как исправить ошибку при удалении или переустановке Node.js?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Удалить запись в реестре об установщике и уже потом поставить ноду правильно. А если необходимо полностью удалить - то и удалить после установки (чтобы установщик правильно удалил все).
    Ответ написан
    8 комментариев
  • Какой лучший способ передать объект с приватными полями?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Если на обоих концах у вас dotNet или на одном JS, то можно попробовать MemoryPack - он умеет работать с приватными полями. Но есть нюанс: он хочет partial класс и сам генерирует основной класс с нужными ему статическими полями. Ну и для передачи по сети можно архиватором упаковать с контрольной суммой.

    spoiler

    Небольшой класс для упрощения упаковки/распаковки - наследуем от этого класса целевой объект и через расширение вызываем методы упаковки/распаковки:
        /// <summary>
        /// Класс [де]сериализуемый MemoryPack
        /// <br />Необходим для добавления всем наследуемым классам метода сериализации через расширение
        /// <br />Наследование данного метода не работает из-за каста в целевой класс
        /// </summary>
        public class Packable { }
    
        /// <summary>
        /// Расширение для [де]сериализуемых классов MemoryPack
        /// </summary>
        public static class PackableExtension
        {
            /// <summary>
            /// Сериализовать класс в массив байтов
            /// </summary>
            /// <typeparam name="T">Целевой класс</typeparam>
            /// <param name="data">Объект целевого класса</param>
            /// <returns></returns>
            public static byte[] Pack<T>(this T data) where T : Packable
                => MemoryPackSerializer.Serialize(data);
    
            /// <summary>
            /// Десериализовать класс из массива байтов
            /// </summary>
            /// <typeparam name="T">Целевой класс</typeparam>
            /// <param name="data">Массив байт</param>
            /// <returns></returns>
            public static T Unpack<T>(this byte[] data) where T : Packable
                => MemoryPackSerializer.Deserialize<T>(data);
        }
    Ответ написан
    1 комментарий
  • Телефон (Xiaomi redmi 9pro) отключился просто сам по себе, а при включении сбросился до заводских настроек. Можно как-то восстановить фото, видео?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Телефон перешел в режим Miui Recovery 5.0? Это глобальный косяк в обновлении - проблема массовая. У кого-то оно ломает телефон, у кого-то - нет. Рекомендую ждать когда найдут адекватное решение. Тем, кто еще не обновился рекомендуется не обновлять компонент System UI Plugin/Hyper OS UI service - в нём причина (пишут в сети). Тыц 1, тыц 2, тыц 3.

    UPD: возможное решение в топике на 4pda.
    Ответ написан
    Комментировать
  • Как переписать драйвер с x86 win под apple silicon?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    При наличии исходного кода драйверов - точно так же как и любой другой сотф: смотрим в исходный код и пишем для новой платформы все то же самое с использованием особенностей работы этой платформы. А исходники драйверов у вас вряд ли есть ввиду возраста принтера и того, что драйверы почти никогда не бывают с открытым исходным кодом. Если все равно есть желание написать - что ж, тут уже только обратная разработка поможет. Ну и пачка денег на это - дешевле будет новый принтер купить.

    Так что в вашем случае проще всего попробовать завести принтер в виртуалку и из виртуалки расшарить в основную ось. На М1 пока есть только UTM с поддержкой х86. Цена виртуализации х86 на м1 - потеря примерно 90% производительности, так что ставьте хрюшу или семерку самую минималку. Если есть драйвера под арм - можно использовать винду на арме.
    Ответ написан
    Комментировать
  • Как добавить новое свойство (property) к объекту DataGridViewCell в WinForms?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    • Полностью скопировать исходный код DataGridView с изменением типа ячеек.
    • Добавить к целевому классу свой список своих элементов с нужными свойствами и проксированием части функционала оригинальных ячеек, а элементы в этом списке уже связать с оригинальными ячейками. И работать соответственно со своим списком.
    • Использовать шаблон типа MVC/MVVM с моделями данных и прочее.
    Ответ написан
    Комментировать
  • Почему не десериализуется JSON объект при помощи Newtonsoft.Json?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Попробуйте сделать парсер через quicktype (Как правильно описать класс для библиотеки Newtonsoft.Json C#?) - похоже, что где-то у вас несоответствие типа и JSON.
    spoiler
    {
      "Header": {
        "CoverPage": {
            "Title": { "Content": "data" }
        }
      }
    }

    // <auto-generated />
    //
    // To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
    //
    //    using QuickType;
    //
    //    var data = Data.FromJson(jsonString);
    
    namespace QuickType
    {
        using System;
        using System.Collections.Generic;
    
        using System.Globalization;
        using Newtonsoft.Json;
        using Newtonsoft.Json.Converters;
    
        public partial class Data
        {
            [JsonProperty("Header")]
            public Header Header { get; set; }
        }
    
        public partial class Header
        {
            [JsonProperty("CoverPage")]
            public CoverPage CoverPage { get; set; }
        }
    
        public partial class CoverPage
        {
            [JsonProperty("Title")]
            public Title Title { get; set; }
        }
    
        public partial class Title
        {
            [JsonProperty("Content")]
            public string Content { get; set; }
        }
    
        public partial class Data
        {
            public static Data FromJson(string json) => JsonConvert.DeserializeObject<Data>(json, QuickType.Converter.Settings);
        }
    
        public static class Serialize
        {
            public static string ToJson(this Data self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
        }
    
        internal static class Converter
        {
            public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
            {
                MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
                DateParseHandling = DateParseHandling.None,
                Converters =
                {
                    new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
                },
            };
        }
    }
    Ответ написан
  • Какое файловое хранилище посоветуете под следующие нужды?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    На данный момент остановился на варианте VPS+Nextcloud

    Его и использовать. Еще из альтернатив есть Seafile - вполне нормальный вариант.
    Ответ написан
    Комментировать
  • Как выкрутить винты с поврежденными гранями?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    • Пшикнуть WD40 и дать немного времени на реакцию. Далее плоскогубцами/кусачками зажать головку и пытаться открутить. Можно попробовать подточить края головки напильником, чтобы было за что ухватиться.
    • Отрезным диском бор-машинкой/дремелем сделать пропил и плоской отверткой выкручивать. Если нет машинки и руки достаточно прямые - можно обрезком полотна от ножовки медленно и аккуратно пропилить.
    Ответ написан
    Комментировать
  • Как выполнить конвертацию пдф изображений в текст?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    FineReader или любой другой OCR.
    Ответ написан
    7 комментариев
  • Как в addEventListener в функцию передать переменные, если необходимо так же удалять созданный эвент?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Например можно сделать обретку или использовать bind:
    let handlePasteImage2 = (e) => handlePasteImage(e, $var)
    document.body.removeEventListener("paste", handlePasteImage2, true);
    document.body.addEventListener("paste", handlePasteImage2, true);
    Ответ написан
  • Как максимально быстро найти в диапазоне IP-адресов или подсетях нужный IP-адрес?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Если стоит задача именно максимально быстрого поиска, то вот тут я уже отвечал на похожий вопрос: Как ускорить поиск элементов из статичного string[] по подстроке? и там же есть ссылка на готовый код примера реализации на шарпе. Если кратко: тупо дерево таблиц переходов, на весь диапазон IPv4 - 17 гигабайт памяти и практически мгновенный поиск. Если на списках - то поиск примерно в 1-1000 раз медленнее и значительнее меньше затраты памяти.
    Примерно так:
    public struct Organization
    {
        public UInt64 Asn;
        public string Name;
    }
    
    var tree = ArrayTree<Organization>();
    var org1 = new Organization() { Asn = 13238, Name = "YANDEX LLC" };
    tree.Add(IPAddress.Parse("5.45.192.0").GetAddressBytes(), org1);


    В данном случае немного доработать логику путем добавления в узел еще одного поля с cылкой на структуру организации и в диапазонах втором/третьем байте сначала проверять это поле, а потом уже дальше по цепочке идти. Ну или можно для простоты сгененрировать конечные узлы для каждой организации и просто сразу на втором/третьем шаге их линковать для нужного числа адресов, что позволит сократить расход памяти.

    Измерил расход памяти для 400к записей: 1.6 и 3.6GB для х86 и х64 соответственно для ArrayTree. Для ListTree - 400 Мб.
    Ответ написан
  • Как автоматизировать запросы в Postgresql?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вообще, самое правильно решение в данном случае будет завести отдельную БД для аналитики/статистики и прочего и все данные этой категории класть туда. И соответственно поднять отдельный HTTP сервер, где вся эта статистика будет показываться - и вот туда запустить аналитиков и пускай они там занимаются своей аналитикой. Например можно использовать что-то типа графаны.
    Ответ написан
  • На двух новых Epson L15160 прямо из коробки идентичная проблема. В чём может быть причина?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    На высоком качестве проблема пропадает.

    Дык вот же ответ. На низком качестве принтер печатает, вот сюрприз, с низким качеством, зато быстро и экономно.
    Ответ написан
  • Какой Cron сервис для nodejs веб сервера(http) использовать?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Просто используйте PM2.
    Ответ написан
    1 комментарий
  • Как реализовать последовательную загрузку файлов с помощью sharp.js?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Файл сохраняется на диск
    2. В очередь кладется задача на обработку файла
    3. Из очереди по одной забирается задача
    4. Задача выполняется
    5. Результат сохраняется на диск
    6. Файл отдается клиенту

    Можно добавить еще две очереди - очередь, которая получает файлы с клиента, а так же очередь, которая отдает файлы клиенту.
    Ответ написан
  • Как организовать передачу файлов с FTP сервера?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Самый простой вариант: рядом с ссылкой на фтп положить ссылку на простой и дружелюбный фтп-клиент.
    Ответ написан
    1 комментарий
  • Надо ли скачивать SQL, если моя программа работает с ним?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, нужно будет устанавливать и настраивать SQL сервер. Да, можно автоматизировать - пишется скрипт, конфигурация и/или приложение делающее нужное. Если приложение десктопное - можно взять что-то типа SQLite, например. Если приложение предназначено для использования одним пользователем в один момент времени - то проще всего хранить все данные в простом файле (json, yml, xml и т.п.), БД тут не нужна. БД имеет смысл применять когда у вас многопользовательское приложение - чат, сетевая игра, форум и прочее.
    Ответ написан
    1 комментарий
  • Как настроить Git?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать
  • Безопасно ли запитать HDD через ЗУ смартфона и подключить к старому ПК?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нет, не безопасно. Используйте только USB порты ПК для питания диска. Попытка подключить еще и ЗУ от смарта может привести к любым последствиям - вплоть до смерти диска, контроллеров USB, ПК или еще чего угодно (никогда не знаешь какой сюрприз сделали в разводке китайцы). Диски - штука чувствительная к качеству питания. Обычно в комплекте есть USB разветвитель - одним концом в диск, двумя другими в ПК. Вот его и используйте - два в ПК, один в диск. Если питания не хватит - диск просто не запустится и не определится в системе. Еще можно использовать USB хаб с внешним питанием, если встроенные порты слишком слабые. Ну или просто вытащить диск из коробки, если он там стандартный SATA/IDE - то можно использовать любой внешний SATA/IDE контроллер с внешним питанием.
    Ответ написан
    Комментировать