Задать вопрос
  • Как сделать выборку случайного слова из списка? Рандом?

    Выбирать рандомом, да.
    А чтобы они не перемешивались - разделяй на несколько файлов или ещё как-то
    Ответ написан
    3 комментария
  • Что показывает .NET Reflector?

    1. Нет особо смысла использовать Reflector в 2021 году, тк есть и бесплатные альтернативы - например dotPeek или sharplab. В том же райдере, например, тоже есть кнопка, чтобы сразу показать IL.
    Студия уже умеет из коробки декомпилировать чужой код.
    2.
    В тоже время в С++ шаблоны "размножаются" в коде.

    В .NET женерики тоже размножаются в коде, но только для value-типов и только после JIT-компиляции.
    Ответ написан
    Комментировать
  • Аналог БД в Google таблицах?

    В пределах одной книги есть много листов. Один лист может ссылаться на другой.
    Также в гугл таблицах можно обращаться к апи через GScript
    Ответ написан
  • Есть ли смысл изучать ASP.NET?

    Есть ли смысл изучать его ради маленьких в пару страниц сайтов (но всё же серверным функционалом, не просто "отдать html по ссылке")?

    Для продакшена - да. HttpListener даже на линуксе вроде не будет работать, тк зависит от http.sys

    Какие у него есть киллер-фичи, облегчающие жизнь?

    1. Быстрый
    2. Гибкий
    По сравнению с httplistener.
    я слегка пересрался от вида "пустого проекта asp net" в visual studio.

    Ну там он действительно немного страшный, в .NET 6 его сделают чуть менее страшным.
    Вообще минимальный проект выглядит примерно так:
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHost(webBuilder =>
        {
            webBuilder.UseKestrel(o =>
            {
                o.ListenLocalhost(5000);
            });
            webBuilder.ConfigureServices(services =>
            {
                services.AddRouting();
            });
            webBuilder.Configure(app =>
            {
                app.UseRouting();
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapGet("/", async context =>
                    {
                        await context.Response.WriteAsync("Hello World!");
                    });
                });
            });
        })
        .Build()
        .Run();

    В .NET 6 будет MinApi, который выглядит вот так (без юзингов):
    var app = WebApplication.Create(args);
    
    app.MapGet("/", string () => "Hello World!");
    
    app.Run();
    Ответ написан
    Комментировать
  • Как десериализовать пустой массив Guid используя Newtonsoft deserializer?

    Какую версию Newtonsoft используешь?
    На .NET 5 и Newtonsoft.Json/13.0.1 всё ок.
    #r "nuget:Newtonsoft.Json/13.0.1"
    var guids = Newtonsoft.Json.JsonConvert.DeserializeObject<Guid[]>("[]").Dump();
    var guids2 = System.Text.Json.JsonSerializer.Deserialize<Guid[]>("[]").Dump();

    + Зачем использовать newtonsoft, когда есть STJ?
    Ответ написан
  • Какой СЦ лучше для матери supermicro?

    Авторизованный СЦ, напрямую сотрудничающий с supermicro и осуществляющий ремонт по гарантии.
    https://supermicro-russia.ru/garantiya/
    Ответ написан
  • Как сделать enum или что-то подобное со структурой?

    Никак. В будущем, возможно, появятся Discriminated Union, как в F#.
    Сейчас это можно решить через static
    Например как-то так:
    public static class Rarity {
      public static Color Rare {get;} = new Color(255,255,255)
    }

    Если хочется, чтобы Rarity был как самостоятельный тип, то можно использовать наследование.
    Ответ написан
    2 комментария
  • Двух канал или 4?

    Если купишь 2 по 8, то потом сможешь докупить ещё 2 по 8.
    Разницы в производительности почти нет, особенно если твоя материнская плата не умеет в четыре канала.

    24 гига лучше, чем 16
    Ответ написан
    Комментировать
  • Как лучше хранить большие списки в SQLite?

    Зависит от того, как вы слбираетесь работать с этими данными.
    Если их всегда тупо читают цел ком, то можно и в блобах.
    Если они участвуют в WHERE, или бывает надо вытащить только часть, то лучше в новую таблицу
    Ответ написан
    Комментировать
  • Есть ли резон переходить с винды на Линукс, если планирую изучать ИБ?

    Если есть задачи, которые ты сможешь более эффективно решать на линуксе, чем на винде + wsl, то да.
    Если таких задач нет и тебе под виндой в принципе комфортнее, то нет.

    Сказать конкретно нельзя, тк под ИБ все понимают что-то своё
    Ответ написан
    1 комментарий
  • Подходит ли блок питания к материнской плате?

    Да. Там стандартный ATX
    Ответ написан
    Комментировать
  • Какой UI фреймворк можно использовать в CLI интерфейсе Linux?

    Ну классика - curses, под Си (на нём как раз и сделан lynx и htop)
    Аналог из C# - Terminal.Gui
    Под Go - termui, termbox-go, tcell
    Под Rust- tui-rs
    Вроде и под питон есть, но не могу вспомнить название. Можно поискать тут: https://github.com/topics/tui?l=python
    Ответ написан
    6 комментариев
  • Как настроить черный список для телеграм бота?

    Просто if заверни. Типа "если сообщение отправлено от пользователя с id который содержится в базе, то не обрабатывать"
    Ответ написан
    1 комментарий
  • Какой из бесплатных курсов посоветуете пройти?

    и стоит 1500 в месяц.

    Честно говоря, стоит не очень много.

    Из бесплатных есть всякие пиратские книги и metanit, но хз что по качеству.
    На курсере и stepik есть бесплатные курсы - просто бери с самым лучшим рейтингом.
    Ответ написан
    2 комментария
  • Как сохранять файлы для сайта Аудиокниг?

    Читал много инфы об этом, нашел что то о файловых серверах как amazon s3, но все равно до конца не ясно что это, как оно работает и как правильно сделать.

    Создаёшь бакет и в него тупо кидаешь все свои файлы (можно руками, а можно через API). Обычно можно выбрать между холодным/горячим тарифом и приоритетом записи/чтения, по которым будет выстраиваться цена.

    Когда нужно отдать пользователю - просто генерируешь ссылку.

    Тарификация идёт за объём хранимых данных, операции чтения/записи, и сеть.
    Есть много провайдеров: Amazon S3, Azure Object Storage, Yandex.Cloud Object Storage. MCS Cloud Storage, итд - они все предоставляют API, совместимое с Amazon S3
    Ответ написан
  • Почему игнорируется объемный фрагмент кода после выполнения httpClient.GetStreamAsync()?

    в коде происходит полный выход из метода UploadPhotos(), хотя у меня там еще приличная часть кода должна исполниться. Прыжок происходит как в пошаговом так и в обычном режиме.

    1. Это особенность async-await. Перескакивание при отладке - это норма.
    2. Не используй async void
    3. Попробуй завернуть всё внутри метода с await-ами в try-catch, чтобы убедиться, что выход происходит не из-за исключений. Заодно выводи в консоль сообщения об ошибках.
    4.
    File.OpenWrite(PathForSavePhotos + "/" + dataExcelTabel[i].codeProduct + "." + splitFileName[splitFileName.Length - 1]);

    Выглядит очень подозрительно. На самом деле может падать из-за кривых разделителей пути. Используй Path.Combine
    5. Вместо .Close(); используй using

    PS: не надо дублировать вопросы
    Ответ написан
  • Десериализация с System.text.json. Не получается распарсить сложный json ответ с API?

    1. Пропустил скобочки:
    Вот такой json должен быть

    {
      "status": {
        "timestamp": "2021-06-28T05:54:55.250Z",
        "error_code": 0,
        "elapsed": 28,
        "credit_count": 1,
        "total_count": 5475
      },
      "data": [
        {
          "id": 1,
          "name": "Bitcoin",
          "symbol": "BTC",
          "slug": "bitcoin",
          "num_market_pairs": 9210,
          "date_added": "2013-04-28T00:00:00.000Z",
          "tags": [
            "mineable",
            "pow",
            "sha-256",
            "store-of-value",
            "state-channels",
            "coinbase-ventures-portfolio",
            "three-arrows-capital-portfolio",
            "polychain-capital-portfolio",
            "binance-labs-portfolio",
            "arrington-xrp-capital",
            "blockchain-capital-portfolio",
            "boostvc-portfolio",
            "cms-holdings-portfolio",
            "dcg-portfolio",
            "dragonfly-capital-portfolio",
            "electric-capital-portfolio",
            "fabric-ventures-portfolio",
            "framework-ventures",
            "galaxy-digital-portfolio",
            "huobi-capital",
            "alameda-research-portfolio",
            "a16z-portfolio",
            "1confirmation-portfolio",
            "winklevoss-capital",
            "usv-portfolio",
            "placeholder-ventures-portfolio",
            "pantera-capital-portfolio",
            "multicoin-capital-portfolio",
            "paradigm-xzy-screener"
          ],
          "max_supply": 21000000,
          "circulating_supply": 18743737,
          "total_supply": 18743737,
          "cmc_rank": 1,
          "last_updated": "2021-06-28T05:54:02.000Z",
          "quote": {
            "USD": {
              "price": 34489.91295375669,
              "volume_24h": 33231566302.9618,
              "percent_change_1h": 0.24623143,
              "percent_change_24h": 4.72866241,
              "percent_change_7d": 0.0385825,
              "percent_change_30d": -6.57806083,
              "percent_change_60d": -36.08177402,
              "percent_change_90d": -40.16259997,
              "market_cap": 646469857558.1086,
              "last_updated": "2021-06-28T05:54:02.000Z"
            }
          }
        },
        {
          "id": 1027,
          "name": "Ethereum",
          "symbol": "ETH",
          "slug": "ethereum",
          "num_market_pairs": 6005,
          "date_added": "2015-08-07T00:00:00.000Z",
          "tags": [
            "mineable",
            "pow",
            "smart-contracts",
            "ethereum",
            "coinbase-ventures-portfolio",
            "three-arrows-capital-portfolio",
            "polychain-capital-portfolio",
            "binance-labs-portfolio",
            "arrington-xrp-capital",
            "blockchain-capital-portfolio",
            "boostvc-portfolio",
            "cms-holdings-portfolio",
            "dcg-portfolio",
            "dragonfly-capital-portfolio",
            "electric-capital-portfolio",
            "fabric-ventures-portfolio",
            "framework-ventures",
            "hashkey-capital-portfolio",
            "kinetic-capital",
            "huobi-capital",
            "alameda-research-portfolio",
            "a16z-portfolio",
            "1confirmation-portfolio",
            "winklevoss-capital",
            "usv-portfolio",
            "placeholder-ventures-portfolio",
            "pantera-capital-portfolio",
            "multicoin-capital-portfolio",
            "paradigm-xzy-screener"
          ],
          "circulating_supply": 116469137.499,
          "total_supply": 116469137.499,
          "cmc_rank": 2,
          "last_updated": "2021-06-28T05:54:02.000Z",
          "quote": {
            "USD": {
              "price": 1972.9974245462824,
              "volume_24h": 19489435867.08539,
              "percent_change_1h": -0.03164063,
              "percent_change_24h": 5.36554092,
              "percent_change_7d": -7.36312666,
              "percent_change_30d": -22.4570674,
              "percent_change_60d": -27.41396336,
              "percent_change_90d": 9.21290472,
              "market_cap": 229793308324.65384,
              "last_updated": "2021-06-28T05:54:02.000Z"
            }
          }
        },
        {
          "id": 825,
          "name": "Tether",
          "symbol": "USDT",
          "slug": "tether",
          "num_market_pairs": 13711,
          "date_added": "2015-02-25T00:00:00.000Z",
          "tags": [
            "payments",
            "stablecoin",
            "stablecoin-asset-backed",
            "solana-ecosystem"
          ],
          "circulating_supply": 62534142511.11169,
          "total_supply": 64471767616.826355,
          "platform": {
            "id": 1027,
            "name": "Ethereum",
            "symbol": "ETH",
            "slug": "ethereum",
            "token_address": "0xdac17f958d2ee523a2206206994597c13d831ec7"
          },
          "cmc_rank": 3,
          "last_updated": "2021-06-28T05:53:08.000Z",
          "quote": {
            "USD": {
              "price": 1.00023604778902,
              "volume_24h": 50665651395.52314,
              "percent_change_1h": -0.00327685,
              "percent_change_24h": -0.11177658,
              "percent_change_7d": -0.14175554,
              "percent_change_30d": -0.07861614,
              "percent_change_60d": 0.01010439,
              "percent_change_90d": -0.01064075,
              "market_cap": 62548903557.1897,
              "last_updated": "2021-06-28T05:53:08.000Z"
            }
          }
        },
        {
          "id": 1839,
          "name": "Binance Coin",
          "symbol": "BNB",
          "slug": "binance-coin",
          "num_market_pairs": 570,
          "date_added": "2017-07-25T00:00:00.000Z",
          "tags": [
            "marketplace",
            "centralized-exchange",
            "payments",
            "binance-smart-chain",
            "alameda-research-portfolio",
            "multicoin-capital-portfolio"
          ]
        }
      ]
    }


    2. После генерации нужно ещё руками подкорректировать классы:
    - Переименовать классы (например Root на Response)
    - Поменять типы (например double на decimal)
    - Дополнить недостающее. (Например Quote заменить на словарь)
    Код

    using System.Text.Json;
    using System.Text.Json.Serialization;
    
    public class Status
    {
        [JsonPropertyName("timestamp")]
        public DateTime Timestamp { get; set; }
    
        [JsonPropertyName("error_code")]
        public int ErrorCode { get; set; }
    
        [JsonPropertyName("elapsed")]
        public int Elapsed { get; set; }
    
        [JsonPropertyName("credit_count")]
        public int CreditCount { get; set; }
    
        [JsonPropertyName("total_count")]
        public int TotalCount { get; set; }
    }
    
    public class QuoteForCurrency
    {
        [JsonPropertyName("price")]
        public decimal Price { get; set; }
    
        [JsonPropertyName("volume_24h")]
        public decimal Volume24h { get; set; }
    
        [JsonPropertyName("percent_change_1h")]
        public decimal PercentChange1h { get; set; }
    
        [JsonPropertyName("percent_change_24h")]
        public decimal PercentChange24h { get; set; }
    
        [JsonPropertyName("percent_change_7d")]
        public decimal PercentChange7d { get; set; }
    
        [JsonPropertyName("percent_change_30d")]
        public decimal PercentChange30d { get; set; }
    
        [JsonPropertyName("percent_change_60d")]
        public decimal PercentChange60d { get; set; }
    
        [JsonPropertyName("percent_change_90d")]
        public decimal PercentChange90d { get; set; }
    
        [JsonPropertyName("market_cap")]
        public decimal MarketCap { get; set; }
    
        [JsonPropertyName("last_updated")]
        public DateTime LastUpdated { get; set; }
    }
    
    public class Platform
    {
        [JsonPropertyName("id")]
        public int Id { get; set; }
    
        [JsonPropertyName("name")]
        public string Name { get; set; }
    
        [JsonPropertyName("symbol")]
        public string Symbol { get; set; }
    
        [JsonPropertyName("slug")]
        public string Slug { get; set; }
    
        [JsonPropertyName("token_address")]
        public string TokenAddress { get; set; }
    }
    
    public class Item
    {
        [JsonPropertyName("id")]
        public int Id { get; set; }
    
        [JsonPropertyName("name")]
        public string Name { get; set; }
    
        [JsonPropertyName("symbol")]
        public string Symbol { get; set; }
    
        [JsonPropertyName("slug")]
        public string Slug { get; set; }
    
        [JsonPropertyName("num_market_pairs")]
        public int NumMarketPairs { get; set; }
    
        [JsonPropertyName("date_added")]
        public DateTime DateAdded { get; set; }
    
        [JsonPropertyName("tags")]
        public List<string> Tags { get; set; }
    
        [JsonPropertyName("max_supply")]
        public int MaxSupply { get; set; }
    
        [JsonPropertyName("circulating_supply")]
        public decimal CirculatingSupply { get; set; }
    
        [JsonPropertyName("total_supply")]
        public decimal TotalSupply { get; set; }
    
        [JsonPropertyName("cmc_rank")]
        public int CmcRank { get; set; }
    
        [JsonPropertyName("last_updated")]
        public DateTime LastUpdated { get; set; }
    
        [JsonPropertyName("quote")]
        public Dictionary<string, QuoteForCurrency> Quote { get; set; }
    
        [JsonPropertyName("platform")]
        public Platform Platform { get; set; }
    }
    
    public class Response
    {
        [JsonPropertyName("status")]
        public Status Status { get; set; }
    
        [JsonPropertyName("data")]
        public List<Item> Data { get; set; }
    }


    3. Тогда чтобы спарсить ответ надо будет просто написать код:
    var json = "{}"; // тут твой ответ json из ответа
    var responseData = JsonSerializer.Deserialize<Response>(json);
    Ответ написан
  • Авторские права на Artstation?

    Все права на изображения принадлежат их авторам. Если автор согласен, что вы будете их использовать, то не нарушает. Если явного согласия нет, то это нарушает авторские права.
    На Artstation есть чат, так что можете там с автором сразу и связаться.
    Ответ написан
    Комментировать