• Почему занятого места на диске больше, чем файлов?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    Скорее всего, где-то остались удаленные, но не закрытые файлы - какие-то программы их держат.
    Их можно найти командой
    lsof -X / | grep deleted
    Если совсем лень разбираться, можно просто перезагрузить систему
    Ответ написан
    6 комментариев
  • Как корректно получить данные из SqliteDataReader?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист

    sqlCommandText = "SELECT * FROM table WHERE id='"+Id+"'"; // Смущает +Id+, так вроде не пишут, нужно @?


    Правильно, что смущает.
    1. SELECT * лучше не писать. Лучше писать конкретные поля, которые тебе нужны
    2. Вместо конкатенации следует использовать параметризованные запросы. При использовании EF Core и Dapper их можно делать через интерполяцию, но тут придётся ручками добавлять параметры в свойство Parameters

    using var command = new SqliteCommand
    {
        CommandText = "SELECT id, txt, floating_point, raw_bytes FROM table WHERE id=$id",
        Parameters = {
          new SqliteParameter("$id", 123)
        },
        Connection = new SqliteConnection() // Тут стоит подставить настоящий connection
    };
    
    using var reader = await command.ExecuteReaderAsync(); // Вместо async-await можно использовать и синхронные методы
    var data = new List<(int id, string text, double floatingPoint, byte[] blob>(); // Вместо кортежа можно нормальный тип
    while (await reader.ReadAsync())
    {
      var id = await reader.GetFieldValueAsync<int>(0); //integer
      var text = await reader.GetFieldValueAsync<string>(1); //text
      var value = await reader.GetFieldValueAsync<double>(2); // real
      var blob = await reader.GetFieldValueAsync<byte[]>(3); // blob
      data.Add((id, text, value, blob));
    }
    Ответ написан
    4 комментария
  • Какие есть идеи по акциям, если нет цен на сайте?

    PROInteriorDesign
    @PROInteriorDesign
    Дизайн интерьера: PROID.studio
    Акцией может являться дополнительный бонус или подарок. Что-то другое. Не сама скидка в %.
    Зависит от тематики сайта.
    Ответ написан
    2 комментария
  • Как удалить все кавычки из строки c#?

    Adler_lug
    @Adler_lug
    .Replace("\"","")

    Что вы лезете в то Unity, когда основ C# не знаете?
    Ответ написан
    1 комментарий
  • Как правильно оформить права на код?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Во первых составить лицензию. Для коммерческого использования и не коммерческого. Во вторых оформить юридическое лицо в третьих добавить кнопку покупки
    Ответ написан
    Комментировать
  • Как сохранять значения переменных?

    GavriKos
    @GavriKos
    В файл, в БД

    https://metanit.com/sharp/tutorial/6.5.php

    на закрытии программы записываете все свои переменные в файл или в БД. На открытии - читаете из файла в том же порядке. Все функции для этого доступны при быстром гуглеже.

    Для красоты лучше конечно сериализацию целыми классами делать. Вот так и можете гуглить- serialize class in c#
    Ответ написан
    5 комментариев
  • Тип с точностью до 4 знаков C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Есть. Называется int. Вам надо хранить количество десятитысячных в числе. Иными словами, вы вместо x храните в int x*10000. При выводе делите на 10000 (и установите выводить 4 знака).

    Такие числа можно просто складывать и вычитать. При умножении надо будет результат поделить нацело на 10000 (или округлить к ближайшему, делящемуся на 10000 и потом отбросить 4 нуля). При делении - наоборот. Надо сначала домножить числитель на 10000, а потом поделить нацело на знаменатель (возможно стоит подумать об округлении к ближайшему целому).

    Upd: И вообще, раз уж разговор о C++, то можно реализовать свой класс. Там можно даже отдельно хранить целую часть и 4 знака после запятой. Если вам встроенной точности int/int64_t не хватает. Все математические операции можно переопределить и работать, как со встроенным типом. Вообще, по-умному, это называется fixed point numbers.
    Ответ написан
    Комментировать
  • Почему возникает ошибка при использовании оконной функции?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Проблема в том, что после группировки поля исходных таблиц недоступны, если они не включены в выражение группировки.

    Правильно:

    SELECT "Items"."itemId", sum(price) / sum( sum(price) ) OVER ()
    FROM "Items"
    INNER JOIN "Purchases" USING("itemId")
    GROUP BY "Items"."itemId"


    Т.е. оконная функция применяется не к исходному полю, а к агрегатной функции.
    Ответ написан
    2 комментария
  • Как получить все дома на определённой улице?

    ZERGeich
    @ZERGeich
    Гуглите ключевые слова: "КЛАДР", "ФИАС"
    Ответ написан
    Комментировать
  • Что использовать для сравнения двух CSV файлов?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    допустим у нас есть файлы file1.csv и file2.csv
    $ cat file1.csv
    kpi1,kpi2,kpi3,kpi4,kpi5
    1.23,5.67,2.21,3.45,4.44
    
    $ cat file2.csv
    kpi1,kpi2,kpi3,kpi4,kpi5
    0.23,5.67,2.22,3.45,2.44

    где согласно условию: "Заголовки одинаковые, возможны вариации в значениях."

    cat file1.csv | head -1 | tr ',' '\n' > file3_1.csv
    cat file1.csv | tail -1 | tr ',' '\n' | paste file3_1.csv - > file3_2.csv
    cat file2.csv | tail -1 | tr ',' '\n' | paste file3_2.csv - > file3_3.csv

    в итоге получим
    $ cat file3_3.csv
    kpi1	1.23	0.23
    kpi2	5.67	5.67
    kpi3	2.21	2.22
    kpi4	3.45	3.45
    kpi5	4.24	2.44

    для удобства можно ввести 4-й столбец где укажем разницу между вторым и третим
    cat file3_3.csv | awk '{print $0"\t"$2-$3}' > file3_4.csv

    $ cat file3_4.csv
    kpi1	1.23	0.23	1
    kpi2	5.67	5.67	0
    kpi3	2.21	2.22	-0.01
    kpi4	3.45	3.45	0
    kpi5	4.24	2.44	1.8

    а заодно добавим заголовки
    echo -e 'name\t$2\t$3\t$2-$3' | cat - file3_4.csv > file3_5.csv

    $ cat file3_5.csv
    name	$2	$3	$2-$3
    kpi1	1.23	0.23	1
    kpi2	5.67	5.67	0
    kpi3	2.21	2.22	-0.01
    kpi4	3.45	3.45	0
    kpi5	4.44	2.44	2

    пример того как в консоли выделить красным цветом строки где разница между вторым и третим столбцом больше нуля:
    cat file3_5.csv | awk '$4>0{print "\033[41m"$0"\033[0m"}$4<=0{print}'


    для красивого оформления в консоли можно использовать утилиту csview
    $ csview -t file3_5.csv
    ┌──────┬──────┬──────┬───────┐
    │ name │ $2   │ $3   │ $2-$3 │
    ├──────┼──────┼──────┼───────┤
    │ kpi1 │ 1.23 │ 0.23 │ 1     │
    │ kpi2 │ 5.67 │ 5.67 │ 0     │
    │ kpi3 │ 2.21 │ 2.22 │ -0.01 │
    │ kpi4 │ 3.45 │ 3.45 │ 0     │
    │ kpi5 │ 4.44 │ 2.44 │ 2     │
    └──────┴──────┴──────┴───────┘

    пример покраски значения в таблице:
    csview -t file3_5.csv | awk '$8>0{print "\033[41m"$0"\033[0m"}$8<=0{print}'

    636a486564c22703960926.png

    для перекидывания в markdown используем ключ -s, --style
    $ csview -t -s Markdown file3_5.csv
    | name | $2   | $3   | $2-$3 |
    |------|------|------|-------|
    | kpi1 | 1.23 | 0.23 | 1     |
    | kpi2 | 5.67 | 5.67 | 0     |
    | kpi3 | 2.21 | 2.22 | -0.01 |
    | kpi4 | 3.45 | 3.45 | 0     |
    | kpi5 | 4.44 | 2.44 | 2     |
    Ответ написан
    1 комментарий
  • Почему Clang (с -O3) не векторизует данный цикл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В первом варианте был массив четверок int или массив 128 битных элементов.
    Во втором случае - два независимых массивка 64х битных элементов которые в памяти
    расположены достаточно далеко и для них скорее всего не нашлось такой векторной
    команды которая-бы адресовалась к паре 64 + 64.
    Ответ написан
    9 комментариев
  • Как правильно продавать свой код?

    vabka
    @vabka
    Токсичный шарпист
    1. Код продать невозможно
    2. Но ты можешь заключить лицензионный договор.
    Вот в этом договоре ты и указываешь, кто, кому, за что, в каком порядке, и когда что передаёт и каким способом.
    Там-же указываешь, какие права имеет приобретатель (например на изменение и использование в таких-то целях).
    Указываешь, какая лицензия должна быть у производных (чтобы, например, приобретатель не мог собрать из твоего кода программу, которую бы потом продавал, например)
    А также указывается, что точно нельзя (например передавать третьим лицам)

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

    Ну и да - бумажка ничего не значит, если ты не готов самостоятельно бегать по судам, чтобы доказывать, что кто-то твой договор нарушил.
    Ответ написан
    Комментировать
  • Почему луч выпускается не в ту сторону?

    vabka
    @vabka
    Токсичный шарпист
    1. direction должен быть нормализованным вектором, а не просто позицией чего-то.
    2. Если ты хочешь сделать рейкаст в от белого куба к красному, то тебе нужен вектор относительно белого куба, а не от начала координат.

    Но вероятно тебе на самом деле нужен Physics.Linecast
    Либо:
    var direction = Vector3.Normalize(cube.position - transform.position); // Направление к красному кубу.
    var start = transform.position;
    var ray = new Ray(start, direction);
    Debug.DrawRay(ray.origin, direction*1000);
    Physics.Raycast(ray);
    Ответ написан
    8 комментариев
  • Не могу сделать брутфорс почты на Python. В чем причина?

    @Drno
    потому что ты заходишь как "приложение", а надо стучаться как браузер, поэтому и сказали про юзер агента
    Ответ написан
    Комментировать
  • Почему объекты выглядят неправильно в запуске игры?

    GavriKos
    @GavriKos Куратор тега Unity
    С масштабированием скорее всего.
    Ширина границы - 1 пиксел. Масштаб 1:1 - пиксел виден. Потом вы отзумливаете - меняется масштаб. Как пол пиксела вписать?

    Делайте сетку независимой от зума (или наоборот - с перерасчетом толщины - зависит от реализации)
    Ответ написан
    1 комментарий
  • Какое решение задачи по циклам будет правильным?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. Определяемся с тем, что от нас хотят. Требования можно представить в виде такого псевдокода :)
    повторять всегда {
       сообщение = прочитать();
       если сообщение = "EXIT" то выйти;
       сообщение2 = прочитать();
       если сообщение2 = "EXIT" то выйти;
       количество_повторений = прочитать_число(сообщение2);
       повторять количество_повторений раз {
         напечатать(сообщение);
       }
    }


    2. Переводим буквально на C#:
    while(true) {
      Console.WriteLine("Введите сообщение");
      var message = Console.ReadLine();
      if (message == "EXIT") {
        return;
      }
      Console.WriteLine("Введите количество повторений");
      var message2 = Console.ReadLine();
      if (message == "EXIT") {
        return;
      }
      var count = int.Parse(message2); // по хорошему, надо бы как-нибудь обработать, если пользователь ввёл не число. В таком виде программа просто упадёт.
      for(var i=0; i<count; i++) {
        Console.WriteLine(message);
      }
    }
    Ответ написан
    Комментировать
  • Как проверить столкновение с объектом по его тегу?

    @Sannyprrod
    private void OnCollisionEnter(Collision collision)
    {
          if (collision.gameObject.CompareTag("FirstPart"))
          {
                Destroy(gameObject);
          }
    }
    
    Для 2D:
    private void OnCollisionEnter2D(Collision2D col)
            {
                if (col.gameObject.CompareTag("FirstPart"))
                {
                    Destroy(gameObject);
                }
            }

    +- вот так, но лучше, по возможности, искать решения без использования тегов, теги в основном bad practice
    Ответ написан
    2 комментария
  • Приделывать Git на сайт это хорошо?

    vabka
    @vabka
    Токсичный шарпист
    git - это система контроля версий.
    Это не "локальное хранилище" и не нечто, что можно "приделать" сбоку.

    Предположу, что под словом "приделать" вы имеете в виду использование git для доставки обновлений на продуктивный сервер.
    Моё мнение - так делать не стоит.
    Серверу совершенно не нужно хранить у себя всю историю версий.

    А вот локально да - лучше вести разработку в git.
    Ещё по хорошему следует хранить копию репозитория на каком-нибудь ещё сервере, например в собственном экземпляре gitlab и синхронизировать её с локальной при помощи git pull/push.

    Ну и помни, что не надо все файлы в git запихивать. В git должны храниться только исходные файлы. Всякие картинки - в git-lfs.
    Пароли - в каком-то другом хранилище.
    Артефакты, которые создаёт компилятор или препроцессор - в .gitignore
    Ответ написан
    1 комментарий
  • Почему не работает функция в с++ пытаюсь вызвать, а она не вызывается?

    @12rbah
    return 0;
        menu_for(v);
    Казалось бы, что могло бы пойти не так, попробуйте поменять местами return и menu_for
    Ответ написан
    Комментировать