Задать вопрос
  • Как тик ток соблюдает авторские права?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Спросите лучше у своего юриста. Если у вас нет его, значит оно вам не надо.
    Ответ написан
    Комментировать
  • Возвращение значений?

    NeiroNx
    @NeiroNx
    Программист
    Возвращение значений - это запись в специальную область памяти при завершении функции. Есть функции которые работают с указателями - сразу записывают данные в область памяти, назначенную для переменной. Такие функции могут быть void.
    Ответ написан
    Комментировать
  • Как вывести из json только определенные элементы?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    Берёшь свой запрос. Открываешь программу Postman. Отправляешь запрос. Копируешь полученный JSON в буфер обмена. Переходишь на какой-нибудь сайт вроде https://json2csharp.com/ и вставляешь туда JSON. Копируешь полученные классы, правильно именуешь. Параметры генерации классов:
    5fe665235f0a1045486034.png

    Кстати, для поискового запроса (текста) можно попробовать использовать Uri.EscapeUriString

    Подключение быстрого сериализатора System.Text.Json из .NET Core

    RestSharpExample.csproj
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="RestSharp" Version="106.11.7" />
        <PackageReference Include="RestSharp.Serializers.SystemTextJson" Version="106.11.7" />
      </ItemGroup>
    
    </Project>


    Api/Kinopoisk/KinopoiskService.cs
    using System.Threading.Tasks;
    using System.Web;
    using RestSharp;
    using RestSharp.Serializers.SystemTextJson;
    using RestSharpExample.Api.Kinopoisk.Model;
    
    namespace RestSharpExample.Api.Kinopoisk
    {
        public class KinopoiskService
        {
            private const string API = "https://api.kinopoisk.cloud/";
            private const string TOKEN = "7777";
    
            private readonly RestClient _client;
    
            public KinopoiskService()
            {
                _client = new RestClient(API);
                _client.UseSystemTextJson();
            }
    
            public async Task<SearchResult> SearchAsync(string movieTitle)
            {
                var request = new RestRequest($"movies/search/{HttpUtility.UrlEncode(movieTitle)}/token/{TOKEN}", Method.GET);
                var response = await _client.ExecuteAsync<SearchResult>(request);
                return response.Data;
            }
        }
    }


    Program.cs
    using System;
    using System.Linq;
    using System.Threading.Tasks;
    using RestSharpExample.Api.Kinopoisk;
    using RestSharpExample.Api.Kinopoisk.Model;
    
    namespace RestSharpExample
    {
        class Program
        {
            private KinopoiskService _kinopoisk;
    
            #region Entry point
    
            static async Task Main(string[] args)
            {
                var program = new Program();
                await program.Run(args);
            }
    
            #endregion
    
            private async Task Run(string[] args)
            {
                _kinopoisk = new KinopoiskService();
    
                try
                {
                    string searchRequest = "Дурак";
                    SearchResult result = await _kinopoisk.SearchAsync(searchRequest);
                    Console.WriteLine($"Результаты поиска по запросу \"{searchRequest}\":");
                    if (result.Results.Any())
                    {
                        Display(result.Results.First());
                    }
                    else
                    {
                        Console.WriteLine("Ничего не найдено.");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
    
            private void Display(SearchMovieInfo info)
            {
                Console.WriteLine($"ИД: {info.Id}, Название: {info.Title}, Год: {info.Year}");
            }
        }
    }


    Api/Kinopoisk/Model/SearchResult.cs
    using System.Collections.Generic;
    using System.Text.Json.Serialization;
    
    namespace RestSharpExample.Api.Kinopoisk.Model
    {
        public class SearchResult
        {
            [JsonPropertyName("results")]
            public List<SearchMovieInfo> Results { get; set; }
    
            [JsonPropertyName("pagination")]
            public Pagination Pagination { get; set; }
        }
    }


    Api/Kinopoisk/Model/SearchMovieInfo.cs
    using System.Text.Json.Serialization;
    
    namespace RestSharpExample.Api.Kinopoisk.Model
    {
        public class SearchMovieInfo
        {
            [JsonPropertyName("id")]
            public string Id { get; set; }
    
            [JsonPropertyName("id_kinopoisk")]
            public int IdKinopoisk { get; set; }
    
            [JsonPropertyName("title")]
            public string Title { get; set; }
    
            [JsonPropertyName("description")]
            public string Description { get; set; }
    
            [JsonPropertyName("year")]
            public int Year { get; set; }
    
            [JsonPropertyName("poster")]
            public string Poster { get; set; }
    
            [JsonPropertyName("rating_kinopoisk")]
            public double? RatingKinopoisk { get; set; }
    
            [JsonPropertyName("rating_imdb")]
            public double? RatingImdb { get; set; }
        }


    Api/Kinopoisk/Model/Pagination.cs
    using System.Text.Json.Serialization;
    
    namespace RestSharpExample.Api.Kinopoisk.Model
    {
        public class Pagination
        {
            [JsonPropertyName("current_page")]
            public string CurrentPage { get; set; }
    
            [JsonPropertyName("end_page")]
            public string EndPage { get; set; }
    
            [JsonPropertyName("total_pages")]
            public int TotalPages { get; set; }
        }
    }
    Ответ написан
    Комментировать
  • Как офлайн проверять баланс биткоин кошельков?

    @zohan1993
    devops
    1. Покупаете VPS, запускаете bitcoin ноду, используете JSON-RPC
    https://developer.bitcoin.org/reference/rpc/

    2. Ищете бесплатные API, которые устраивают по лимитам на запросы
    https://btc.com/api-doc
    https://www.blockchain.com/api/blockchain_api
    https://www.coinapi.io/pricing?apikey
    Ответ написан
    4 комментария
  • Есть ли быстрый алгоритм поиска подстроки с пропусками в строке?

    Lynn
    @Lynn
    nginx, js, css
    Есть стандартный механизм. Называется «регулярные выражения».

    Впрочем в этом конкретном случае непонятно зачем нужно что-то сохранять в отдельный массив. Нужно просто найти 0xFF 0xDD сдвинуться на три байта вправо и проверить, что там 0xFF. Примерно так (псевдокод):
    for(int i = 0; i < data.size - 4; i++) {
      if (data[i] == 0xFF && data[i+1] == 0xDD && data[i+4] == 0xFF) {
        // нашёл
      }
    }
    Ответ написан
    Комментировать
  • Требуется спарсить json в базу данных. Критична скорость. Какой язык и фрейворк выбрать?

    @rPman
    Если тормозит json парсер:
    - пишите сами, когда формат зафиксирован, можно обойтись регулярными выражениями, это чаще всего бывает отличным компромисом скорость разработки/выполнения, иначе пилите на c/c++ ковырялку посимвольную (не факт что у вас получится быстрее регулярных выражений).

    - не пытайтесь одним выражением парсить всю строку, делите на части, чаще всего поиском подстроки/символа все делается.

    - не собирайте данные промежуточно в ассоциативные массивы, отправляйте все сразу в sql запросы

    Если тормозит запись в sql базу данных:

    - отключайте транзакции или делайте их большими, собирая пакетом группу данных между begin .. comit

    - отключайте индексы, иногда это дает огромный прирост скорости записи (включая foreign key), после окончания добавления данных вернете

    - разместите временно файлы tablespace базы на максимально быстром диске, даже в ущерб надежности, например в оперативной памяти tmpfs/ramdisk (есть свои особенности, по умолчанию виртуалку оно не использует но под windows imdisk умеет), либо ищите где можно включить принудительный кеш на запись (это бывает не просто)

    Позже, когда импорт базы закончится, остановите базу и перенесете файлы вручную, поменяв симлинки на каталоги
    Ответ написан
    Комментировать
  • Какой SSD лучше взять на ноутбук Xiaomi pro 15.6?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Судя по этому у вас уже 512
    https://market.yandex.ru/product--noutbuk-xiaomi-m...
    А так общий совет идите в магазин и примеряйте
    Ответ написан
    1 комментарий
  • Где скачать полный дистрибутив Firefox?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    На официальном сайте дистрибутив уже не скачать, только установщик.
    А как вы собираетесь установить firefox без установщика? Хотя, может portable...
    Оффлайн-инсталлятор последней версии Firefox - на любой вкус, цвет...
    Ответ написан
    1 комментарий
  • Как строку разобрать на ФИО, дату рождения и регион?

    Adamos
    @Adamos
    На кой ляд тут регулярки?
    Разбиваешь по пробелу и считаешь последний кусок регионом, а первые два - всегда ФИ, как заявлено.
    Предпоследний, если он есть - день рождения, если от него получается ненулевой strtotime.
    Если еще что-то осталось - это отчество.
    Ответ написан
    5 комментариев
  • Как ускорить docker push?

    Lynn
    @Lynn
    nginx, js, css
    Можно использовать multi-stage build
    Примерно так:
    FROM node:lts-alpine as build
    WORKDIR /app
    # копируем исходный код
    COPY ./ ./
    # устанавливаем зависимости
    RUN npm ci
    # Компилируем приложение
    RUN npm run build
    # оставляем только production зависимости
    RUN npm ci --prod
    # опционально удаляем из исходников всякие тесты, ts-файлы и т.п.
    
    FROM node:lts-alpine as app
    WORKDIR /app
    # копируем сначала node_modules
    COPY --from=build /app/node_modules ./node_modules
    # а потом всё остальное
    COPY --from=build /app ./
    # и запускаем
    CMD [ "node", "/app/app.js" ]


    В результате, если не меняется файл package-lock.json (т.е. не меняются зависимости прода), то слой созданный в команде COPY --from=build /app/node_modules ./node_modules будет взят из кэша. А это и есть все наши 400 мегабайт зависимостей.

    живой пример

    Это второй запуск после изменения приложения и версии в package.json, но без изменений зависимостей. Тут видно, что шаг 4 сборки честно выполнился, но при этом шаг 9 (копирование node_modules) взят из кэша, т.к. папка node_modules не поменялась.
    $ docker build .
    Sending build context to Docker daemon  6.656kB
    Step 1/11 : FROM node:lts-alpine as build
     ---> 1c342643aa5c
    Step 2/11 : WORKDIR /app
     ---> Using cache
     ---> 01d641ac9d8b
    Step 3/11 : COPY ./ ./
     ---> 2a369bda0312
    Step 4/11 : RUN npm ci
     ---> Running in 5becac2f9f07
    added 2 packages in 1.914s
    Removing intermediate container 5becac2f9f07
     ---> c010ba772a08
    Step 5/11 : RUN npm run build
     ---> Running in de6fd7f872a5
    
    > docker-node@1.2.3 build /app
    > echo building app
    
    building app
    Removing intermediate container de6fd7f872a5
     ---> dc80bc125954
    Step 6/11 : RUN npm ci --prod
     ---> Running in 825f86a54af5
    npm WARN prepare removing existing node_modules/ before installation
    added 1 packages in 0.079s
    Removing intermediate container 825f86a54af5
     ---> a00a029b86dc
    Step 7/11 : FROM node:lts-alpine as app
     ---> 1c342643aa5c
    Step 8/11 : WORKDIR /app
     ---> Using cache
     ---> 01d641ac9d8b
    Step 9/11 : COPY --from=build /app/node_modules ./node_modules
     ---> Using cache
     ---> 81d587ccf147
    Step 10/11 : COPY --from=build /app ./
     ---> bb40061f06b6
    Step 11/11 : CMD [ "node", "/app/app.js" ]
     ---> Running in e6b9e08d9d8f
    Removing intermediate container e6b9e08d9d8f
     ---> eceb38619009
    Successfully built eceb38619009

    Ответ написан
    1 комментарий
  • Прояснение терминов: CG Artist, CGI Artist, 3D Artist. В чём их различие?

    DollyPapper
    @DollyPapper
    Потому что кто как привык, тот так и использует. Нет никакого различия.
    Если хотите можете обобщить: CG как общий класс всех компьютерных художников, 3d подкласс CG художников которые занимаются только 3d графикой. Но 3d художник так же CG художник (Artist). А CGI Artist вообще некорректно говорить - "Computer-generated imagery" (Изображение сгенерированное на копьютере), при чем здесь человек которое это изображение создал, решительно не понятно.
    Ответ написан
    4 комментария
  • Как реализовать программу в паскаль которая из одного 4-хзначного делает два 2-хзначных?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Ты охренел? Второй раз подряд этот вопрос задаешь. Тебе дали исчерпывающую инфу. В случае, когда ты просишь код - твой вопрос нарушает правила ресурса.
    Ответ написан
  • WPF vs UWP в 2021?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    • Между UWP и WPF есть ещё отличие в жизненном цикле приложения. UWP приложение не совсем тоже самое, что и WPF.
    • В UWP преобладает страничный режим. Там всё построено на переходах между страницами.
    • Приложения UWP устанавливаются из Microsoft Store.
    • Приложения UWP требуют включения разных разрешений для приложения.

    5fe41c979dcc6193298625.png
    Ответ написан
    5 комментариев
  • Законно ли использование кряков в личных целях?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    В личных нельзя. В исследовательских - под вопросом. Антивирусы, например, невозможно написать без их исследования.
    Ответ написан
    Комментировать
  • Нету config файла в .cargo (macOS)?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    Его по умолчанию и не должно быть - создавай сам в нужном скоупе, если что-то в него надо прописать.
    Ответ написан
    Комментировать
  • Где ошибка в коде?

    milssky
    @milssky
    Координатор племени фиолетовых обезьянок
    Я не вникал, что происходит, но
    1. Оформите код соответствующим тегом, уважайте людей, у которых вы просите помощи
    2. Можно просто увидеть ошибку внизу окна, на которой буковками написано, что не так
    3. Вас тут ничего не смущает?
    if (Mathf.Abs(input) > .if)
    Ответ написан
    Комментировать
  • Можно ли устроиться на работу в веб, откосив по дурке?

    Oleg714
    @Oleg714
    Устроиться можно, никто не проверяет, у нас такой работал, лишь бы реально недурил на работе, а у нас как раз дурил такой сотрудник.
    Ответ написан
    Комментировать
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    графовая БД

    neo4j - самая известная
    ArangoDB - вам подойдет
    Ответ написан
    Комментировать