Задать вопрос
  • Как передать функцию в c#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    namespace coordinates
    {
        class Example
        {
            public string Name;
            public Action MainFunc;
    
            public Example(string name, Action callback)
            {
                Name = name;
                MainFunc = callback;
            }
    
            public void Init()
            {
                MainFunc?.Invoke();
            }
        }
    }

    var r = new Example("Example name", () => Console.WriteLine("Example MainFunc"));
    Ответ написан
    Комментировать
  • Как проверить на работоспособность все радиодетали импульсного блока питания ПК не выпаивая их?

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

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    • Проверка исправности НЖМД — замена при неисправности
    • Полное форматирование с многопроходовой очисткой (secure delete или как-то так)
    • Установка чистой ОС
    • Проверка исправности остального оборудования:
      1. Кулер/кулеры
      2. Процессор
      3. Видеокарта
      4. Память
      5. Сетевые карты / беспроводные интерфейсы
      6. Внешние порты
      7. Разъем питания
      8. Клавиатура
      9. Тачпад

    • Полная разборка и чистка от пыли и грязи
    • Чистка/мытье корпуса
    • Замена тепловых интерфейсов
    • Продувка/мытье радиатора/радиаторов
    • Продувка и чистка клавиатуры и пространства под ней
    • Разборка и чистка тачпада
    • Тщательная очистка экрана
    • Проверка аккумуляторной батареи на исправность и калибровка при необходимости
    • При наличии оптического привода — разборка и чистка и его тоже
    • Сборка и замена неисправного оборудования
    • Стресс тестирование в течении дня
    Ответ написан
    Комментировать
  • Как работет context в Javascript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Соответственно есть вопрос, почему в 4 случае он указывает на window?

    Потому что у вас logThis вызывается в глобальном контексте. this устанавливается при каждом вызове каждой функции. Т.е., это переменная, которая внутри каждой функции своя, как локальная.
    function logThis() {
      console.log('logThis', this);
    }
    class TestTwo {
      constructor() {}
      log() {
        logThis();
        console.log('TestTwo.log', this);
      }
    }


    https://codesandbox.io/s/n4x93k3ppl

    UPD: Тут как раз подоспела свежая статья на хабре: https://habr.com/company/ruvds/blog/422089/
    Ответ написан
    6 комментариев
  • Как встраивание рекламы в гостевой WiFi и какую рекламную сеть использовать?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никак. WiFi — это всего лишь механизм передачи данных между клиентами и интернетом. Внедрение любых данных в трафик пользователей является прямым нарушением прав пользователей. Конечно, это возможно, но это уже будет являться взломом и атакой типа "MITM".
    Ответ написан
  • Как реализовать систему расчёта $y?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    $y = $x * 2000 + 6000;
    Ответ написан
    Комментировать
  • Как удалить папку Яндекс. Диск из панели проводника?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Удалить яндекс диск? Не? В реестре поищите — эти папки через реестр прописываются.
    Ответ написан
    Комментировать
  • Выбор охлаждение под Ryzen 2700X?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Поставьте лучше обычный кулер: если нужна тишина и надежность — то ноктуа по выбору и бюджету. Если тишина не так важна — то любой понравившийся. У этой модели процессора TDP не настолько высокое, чтобы на него ставить СВО за половину его стоимости .
    Ответ написан
    Комментировать
  • Почему не открывается конструктор в Visual Studio?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Смотрите ошибки конструктора, возможно изменили код конструктора, что угодно может быть. Конструктор частенько бывает в ступоре из-за разного кода или положения элементов. Для простых форм — он отличен, но когда надо что-то нестандартное или сложное, то лучше ручками писать. Имеет смысл создать новую форму и в неё ручками потихоньку перенести код конструктора старой формы и смотреть на каком этапе конструктор ломается.
    Ответ написан
    Комментировать
  • Преминимость powershell для web-приложения?

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

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Если он исправен — то нет, не будет.
    Ответ написан
    Комментировать
  • Как создать бота для Skype?

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

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Ресурсные испытания SSD: https://3dnews.ru/938764/
    Ответ написан
    Комментировать
  • Как создать программу для вызова процедуры в определенной программе по горячей клавише?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Зависит от особенностей реализации интерфейса программы: если эти кнопки реализованы нативно — по ним можно кликнуть программно через WinAPI; если использовалась какая-то сторонняя библиотека реализации интерфейса, то тут уже сложнее — возможно сработает отправка клика по координатам в окне через отправку сообщения, если не сработает — тогда есть вариант с перемещением курсора и кликом в определенной точке. Оба варианта легко реализуются программами автоматизации — nnCron и прочее.
    Ответ написан
    Комментировать
  • Как изолировать два HDD/SSD с Windows?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Acronis OS Selector — у него есть опция скрытия разделов и дисков до загрузки ОС.
    Ответ написан
    Комментировать
  • Оптимальная модель серверного SSD?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Интел оптан: https://www.intel.com/content/www/us/en/products/m...

    UPD:
    Результаты ресурсных испытаний тут: https://3dnews.ru/938764/page-3.html#Intel%20Optan... (кратко: бытовая версия (900P) сдохла так же как и все флешки)

    Итоговая таблица: https://3dnews.ru/assets/external/illustrations/20...
    Ответ написан
  • Как начать понимать программирование?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Программирование — всего лишь перевод алгоритмов с абстрактного человеческого языка на такой же абстрактный искусственный язык ЭВМ, но более строгий логически и ограниченный язык. Так что по сути своей программисты — это переводчики с одного языка на другой. Важно уметь четко и однозначно формулировать свои мысли, иметь абстрактное и образное мышление, а так же хорошую память. И конечно иметь огромное желание постоянно учиться и развиваться, изо дня в день, из года в год — по-другому тут никак.
    Для начала рекомендую изучить устройство ЭВМ и принципы, по котором оно все работает. Так же полезно изучить историю появления ЭВМ — чтобы понимать откуда вот это все вокруг взялось и почему оно вообще есть.
    Ответ написан
    1 комментарий
  • Как разобрать ответ JSON в C#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    https://app.quicktype.io/#r=json2csharp - вот, используйте для генерации парсеров JSON.
    Ответ написан
    Комментировать
  • Как правильно описать класс для библиотеки Newtonsoft.Json C#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Элементарно: https://app.quicktype.io/#r=json2csharp - слева вставляете JSON, справа на выходе получаете готовый класс для парсинга. Удобнейший сервис.

    Пример:
    {
      "greeting": "Welcome to quicktype!",
      "instructions": [
        "Type or paste JSON here",
        "Or choose a sample above",
        "quicktype will generate code in your",
        "chosen language to parse the sample data"
      ]
    }

    namespace QuickType
    {
        using System;
        using System.Collections.Generic;
    
        using System.Globalization;
        using Newtonsoft.Json;
        using Newtonsoft.Json.Converters;
        using J = Newtonsoft.Json.JsonPropertyAttribute;
        using R = Newtonsoft.Json.Required;
        using N = Newtonsoft.Json.NullValueHandling;
    
        public partial class Welcome
        {
            [J("greeting")]     public string Greeting { get; set; }      
            [J("instructions")] public string[] Instructions { get; set; }
        }
    
        public partial class Welcome
        {
            public static Welcome FromJson(string json) => JsonConvert.DeserializeObject<Welcome>(json, QuickType.Converter.Settings);
        }
    
        public static class Serialize
        {
            public static string ToJson(this Welcome 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 }
                },
            };
        }
    }


    Я конвертер выношу в отдельный класс и файл:
    using Newtonsoft.Json;
    
        /// <summary>
        /// Конвертер JSON 
        /// </summary>
        public static class Converter
        {
            /// <summary>
            /// Настройки конвертации JSON
            /// </summary>
            public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
            {
                MetadataPropertyHandling = MetadataPropertyHandling.Ignore,     // Пропускаем аттрибуты
                DateParseHandling = DateParseHandling.None,                     // Выключаем парсинг дат
                NullValueHandling = NullValueHandling.Ignore                    // Пропускаем пустые значения 
                                                                                // (API-вызов при создании запроса 
                                                                                // сам заполняет нужные поля)
            };
        }


    А парсинг/конвертацию JSON выношу в отдельный класс, от которого уже наследую классы для парсинга данных:
    namespace Foo
    {
        /// <summary>
        /// Абстрактный класс - сетевое сообщение: парсинг и 
        /// генерация JSON из экземпляров наследуемого класса
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public abstract class APIMessage<T>
        {
            /// <summary>
            /// Конвертация в JSON
            /// </summary>
            /// <returns></returns>
            public string ToJson()
            {
                return JsonConvert.SerializeObject(this, Converter.Settings);
            }
    
            /// <summary>
            /// Парсинг JSON в указанный тип
            /// </summary>
            /// <param name="json"></param>
            /// <returns></returns>
            public static T FromJson(string json)
            {
                try
                {
                    return JsonConvert.DeserializeObject<T>(json, Converter.Settings);
                }
                catch (Exception e)
                {                
                    throw new ServerConnectionException(
                        "Server response parse error!\nResponse type: <" + typeof(T).FullName
                        + ">\nError: " + e.Message
                    );
                }
            }
        }
    }


    Как-то так получается:
    public class Request : APIMessage<Request>
    {
        <описание JSON свойств>
    }
    Ответ написан
    3 комментария