• Как реализовать вывод товаров из List у которых закончился срок годности?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    
    namespace ConsoleApp2
    {
        /// <summary>
        /// Не используйте транслит! Любой китаец или индус поймет английский, 
        /// а вот русский только поржет. 
        /// </summary>
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string ImportDate { get; set; }
            public string Description { get; set; }
            /// <summary>
            /// Рубли умноженные на 10000. помним об этом то есть у вас копейка имеет 2знака после запятой!!!!
            /// </summary>
            public Int64 Price { get; set; }
            public int Discount { get; set; }
            public string Category { get; set; }
            /// <summary>
            /// Дата списания
            /// </summary>
            public string DueDate { get; set; }
            public string ДляОсобоУпоротыхЭтоТакиРаботает { get; set; }
        }
        public static class Extensions
        {
            /// <summary>
            /// Convert string from format dd.MM.yyyy to DateTime
            /// </summary>
            /// <param name="inputDate"></param>
            /// <returns></returns>
            public static DateTime ParseDateDayMounthYear(this string inputDate) =>
                DateTime.ParseExact(inputDate, "dd.MM.yyyy", CultureInfo.InvariantCulture);
        }
        class Program
        {
            static void Main(string[] args)
            {
                #region заполняем список товаров
                List<Product> tovar = new List<Product>()
                {
                    new Product(){Id = 2,
                        Name = "Яблоки",
                        ImportDate = "11.11.2022",
                        Description = "Свежие яблоки.",
                        Price = 1000000,
                        Discount = 5, 
                        DueDate="11.11.2022",
                        Category = "Овощи"},
                    new Product(){Id = 2,Name = "Молоко",
                        ImportDate = "16.10.2021",
                        DueDate="16.10.2021",
                        Description = "Свежее молоко.",
                        Price = 800000,
                        Discount = 10, 
                        Category = "Кисломолочные"}
                };
                #endregion
    
                // число месяц год
                var data =  tovar.Where(item => item.DueDate.ParseDateDayMounthYear() < DateTime.Today).ToList();
            }
        }
    }
    Ответ написан
    Комментировать
  • Как написать рекурсивный запрос?

    @galaxy
    Ну что-то типа такого (выводит для каждой строки с parent_id = null):
    with recursive cat as (
      select id, id top from landcategory where parent_id is null
      union
      select lc.id, top from landcategory lc join cat on (cat.id = lc.parent_id)
    )
    select lc.*, childs from landcategory lc join (
      select top, array_agg(id) childs from cat
       group by 1
    ) t on (t.top = lc.id)

    https://www.db-fiddle.com/f/9gQNjVwLn3W11pnCcr8NEs/0
    Ответ написан
    Комментировать
  • Как читать эту строчку?

    hePPer
    @hePPer
    читайте так:
    var a=CreateHostBuilder(args);
    var b=a.Build();
    b.Run();
    Ответ написан
    Комментировать
  • Правильна ли реализация АПИ: new Car().Run(100)?

    Я бы переписал этот код так:
    public abstract class Transport {
        public int MaxSpeed { get; private set; }
    
        public Transport(int maxSpeed) {
            MaxSpeed = maxSpeed;
        }
    
        public string Run(int speed)
            => $"Скорость движения транспорта {(speed <= MaxSpeed ? "в пределах нормы" : "выше максимальной")}";
    }
    
    public class Car : Transport {
        public Car() : base(300) {}
    }
    
    public class Bike : Transport {
        public Bike() : base(40) {}
    }
    Ответ написан
    Комментировать
  • Где лучше учить C#?

    datka
    @datka
    Комментировать
  • Что следует почитать/посмотреть для изучения Git?

    bingo347
    @bingo347
    Crazy on performance...
    Ответ написан
    Комментировать
  • Скорость циклов в c#?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Что мешает сделать тесты?
    Теоретически разницы нет. Но, естественно, всё зависит от условий.
    Поэтому делай тесты для твоей ситуации и сравнивай.
    Ответ написан
    Комментировать
  • Как сформировать вложенный json из структуры?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Если событий у вас действительно много, то рекомендую вам не пихать их в один JSON, а воспользоваться вот таким форматом: jsonlines.org
    Это разделённые абзацами строки с JSON'ами.
    Этот формат не требуют огромного количества памяти (на весь датасет разом), его можно обрабатывать потоково.
    Но в задаче не сказано, что отдельные треки одного событий идут подряд и отдельные координаты одного трека тоже идут подряд. Поэтому рассчитывать на это не приходится.
    Уточните задачу и можно будет оптимизировать решение по памяти перейдя к потоковой выдаче.
    import struct
    import json
    
    filepath = 'hits.dat'
    events = {}
    with open(filepath, 'rb') as fp:
        buffer = fp.read(28)
        while len(buffer) == 28:
            event_id, track_id, x, y, z = struct.unpack(">HHddd", buffer)
            buffer = fp.read(28)
    
            event = events.setdefault(event_id, dict(event_id=event_id, tracks={}))        
            track = event['tracks'].setdefault(track_id, dict(coordinates=[]))
            track['coordinates'].append(dict(x=x, y=y, z=z))
    
    with open('hits.json', 'w') as fp:
        json.dump(events, fp, indent=2)

    Файла у меня вашего нет, поэтому писал на ощупь. Проверяйте.
    У вас, кстати, ошибка в примере JSON'а.
    Нужно так:
    events = {
        1: {
            'event_id': 1,
            'tracks': {
                1: {        
                    'track_id': 1,
                    'coordinates': [
                        {'x': 1, 'y': 2, 'z': 3},
                        {'x': 4, 'y': 5, 'z': 6}
                    ]
                },
                2: {
                    'track_id': 2,
                    'coordinates': [
                        {'x': 12, 'y': 22, 'z': 33},
                        {'x': 44, 'y': 55, 'z': 66}
                    ]
                }
    
            }
        }
    }
    Ответ написан
  • Как вывести символ через канал?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В каком месте может быть ошибка?

    man pipe: писать можно только в fd[1], читать -- только из fd[0].
    Канал однонаправленный, т.е. для двунаправленной коммуникации нужно открывать два канала.
    Должно быть так:
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/wait.h> 
    
    int main(int argc, char **argv) {
    
            int fd0[2], fd1[2], n;
            char c;
            pipe(fd0);
            pipe(fd1);
    
            if (!fork()) {
                    close(fd0[0]);
                    close(fd1[1]);
    
                    write(fd0[1], "c", 1);
    
                    sleep(1);
    
                    if ((n = read(fd1[0], &c, 1)) != 1) {
                            printf("Дочерний процесс. Результат чтения: %d\n", n);
                            exit(0);
                    }
    
                    printf("Дочерний процесс прочитал: %c\n", c);
                    exit(0);
            }
            close(fd1[0]);
            close(fd0[1]);
                                                                                                                                                                                                                                                                              
            write(fd1[1], "p", 1);
            if ((n = read(fd0[0], &c, 1)) != 1) {
                    printf("Родительский процесс. Результат чтения: %d\n", n);
                    exit(0);
            }
    
            printf("Родительский процесс прочитал: %c\n", c);
            exit(0);
    
            return 0;
    }
    Ответ написан
    3 комментария
  • Как получить восьмеричную/символьную форму прав доступа?

    vman
    @vman
    Тут все просто, нужно разбить строку из 9 символов на 3 октета

    1 = rwx
    2 = r-x
    3 = r--

    Дальше заменить и просуммировать в каждом октете символы

    r = 4
    w = 2
    x = 1
    - = 0


    на выходе будет 754
    Ответ написан
    2 комментария
  • Как реализовать подзагрузку страницы перед переходом на нее в Vue JS?

    0xD34F
    @0xD34F Куратор тега Vue.js
    В интересующем вас компоненте определяете хук beforeRouteEnter - в нём и инициируете получение данных. Как оно конкретно выглядит - непосредственно выполнение запроса, или вызов экшена - тут вам виднее. После получения данных дёргаете next. Всё.

    UPD. Не, не всё. Если не очень поняли, о чём я - сделал небольшой пример. Три роута, первые два ни о чём, последний - показывает данные из хранилища. И при каждом переходе инициирует их обновление.
    Ответ написан
    Комментировать
  • Как правильно переносить git проект на другую машину?

    GavriKos
    @GavriKos
    Правильно - клонировать репозитории, а не страдать ерундой в виде копирования репы с машины на машину со всем мусором и прочим. Склонировать репу - это 1 команда, не представляю что может быть еще проще. Хоть 100 реп - пихаем в батник и все автоматом склонится куда надо.
    Ответ написан
    3 комментария
  • Как убрать зависимость от .net?

    arxont
    @arxont
    C# программист
    В общем случае нет. Но есть варианты -
    0. Переписать приложение на C++ (или любой другой язык не требующий дополнительных инсталляций для запуска)
    1. Net Core - там есть вариант сборки со всеми нужными библиотеками, но для десктопа не всегда подойдёт (нет GUI)
    2. Если вам нужно распространять приложение, то можно сделать инсталлятор, который при запуске будет проверять наличие фреймворка и далее если есть, то просто запускать программу на дотнет, которая в него встроена, либо скачивать и устанавливать дотнет, для дальнейшей работы (можно и дотнет с собой носить, но размер большой получится)
    3. Использование средств виртуализации приложений - VMware ThinApp, Turbo Studio и тому подобные.

    PS: Вообще не понимаю, в чём проблема - начиная с windows xp Net Framework встроен в систему. С включенными обновлениями у вас почти всегда нормальная версия для запуска имеется. А если не нужна поддержка ХР, то всё ещё легче.
    Ответ написан
    5 комментариев
  • Не получается получить все положительные числа из массива. Что не так?

    Может уже пора на LINQ ?

    int[] num = { 5, -7, -1, 3, 9};
    Console.WriteLine("Сумма всех положительных чисел: {0}",  num.Where(i => i > 0).Sum());
    Ответ написан
    2 комментария
  • Unity rpg инвентарь, реализация?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Приветствую! Нужно съесть манную кашу. Пробовал сначала сам есть - вышла какая то дичь - хотя формально я ее съел, но измазался в ней весь.
    Пересмотрел кучу туториалов как есть манную кашу - у всех принцип одинаков, но каждый есть по разному - кто то ложку боком заносит, кто то вообще левой рукой ест. А мне нужно есть через трубочку - я не нашел такого функционала.
    Надеюсь у кого то есть годные статьи\видео\примеры, либо кто то может объяснить как есть кашу через трубочку, в идеале на польском.

    Нормальный вариант ответа: никто вам не напишет ничего, потому что у вас своя архитектура, свои допустимые либы и все свое, и лезть в чужую архитектуру - это дорого.
    Ответ написан
    1 комментарий