Задать вопрос
  • Что использовать для сравнения двух 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 комментариев
  • Как правильно продавать свой код?

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

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

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

    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 комментарий
  • Какое решение задачи по циклам будет правильным?

    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 на сайт это хорошо?

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

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

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

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

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

    @Farawa
    Стрелять лучом из персонажа в направлении камеры изначальной заданной длиной, если луч попал в окружение, то брать точку чуть ближе и ставить туда камеру, гугли Physics.Raycast
    Ответ написан
    6 комментариев
  • Как посмотреть адрес в памяти у переменной с помощью отладчика (VS)?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    В отладчике же можно целые выражения вводить. &x введите в watches.
    Ответ написан
    1 комментарий
  • Хочу заняться программирование БПЛА/ ИИ на БПЛА, с чего начать?

    написать ИИ, который будет направлять дрон по заданному маршруту

    Здесь никакой ИИ не нужен.
    Нужно только записать маршрут в виде точек, периодически проверять GPS, и корректировать курс.

    анализировать данные, полученные по маршруту.

    Что это вообще значит? Какие данные он должен анализировать? Как? Какой результат в итоге хочется получить?

    Начать можешь с формулирования задачи и изучения матчасти (посмотри уже существующие решения как минимум), а после этого уже всё само по себе должно образоваться.
    Ответ написан
    Комментировать
  • Может кто-нибудь дать реальную задачу на которой можно применить ООП?

    Real_Fermer
    @Real_Fermer
    Программист PHP
    Понимание - зачем придет тогда, когда перестанете радоваться, что у вас хоть что-то работает. И начнете развивать свои приложения. Тогда поймете что поддержка приложения - это очень важная задача.
    Сделайте 5-6 небольших приложений - не применяя никаких техник/методик разработки.
    отложите их на месяц. А потом вернитесь и попробуйте внести изменения. Тогда вы поймете зачем нужны методики разработки.
    А для приложений HellowWord Не нужны ни ОПП, ни паттерены, ни уж тем более фреимворки
    Ответ написан
    Комментировать
  • Может кто-нибудь дать реальную задачу на которой можно применить ООП?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    ООП очень тяжело заходит потому что совершенно непонятно для чего оно нужно.

    Ровно для того же, для чего нужно программирования без ООП. ООП - просто достаточно простая и удобная абстракция для программирования.

    Я так понял, что бы в этом всём разобраться нужно писать свою CMS на ООП.

    Нет. Достаточно просто решить любую задачу с использованием ООП и без и сравнить для себя. Без ООП, т.е., функциональное программирование - у тебя куча файлов с кучей функций, каждый раз, когда нужно произвести какие-то вычисления над какими-то данными надо импортировать нужную функцию и использовать её для обработки данных. Когда у тебя десять строк кода и три функции - это достаточно просто. А если у тебя тысяча функций и несколько сотен видов данных для обработки, да еще и кучей разных форматов? А десять тысяч? Делать огромную документацию, в которой описывать какая функция с какими видами данных может работать и каждый раз её пересматривать в процессе написания или чтения кода? А вот ООП, говоря простым языком, позволяет группировать функции в отдельные группы, т.е. классы, которые могут работать с определенными типам данных и связывать сами эти группы функций с определенными типами данных, а так же связывать классы друг с другом (иерархия, наследование и прочее). Т.о., это упрощает работу с данными и их обработкой: просто создаем новый экземпляр класса и получаем удобный интерфейс для дальнейшей обработки каких-либо данных, путем использования методов этого класса для обработки данных, хранящихся в полях данного экземпляра или передаваемых в качестве параметров методов и сохраняемых в полях позднее.
    Ответ написан
  • Какие существуют популярные библиотеки/фреймворки для создания нейросетей и машинного обучения для C++?

    @rPman
    Что не так то? нормальная документация с примерами - https://www.tensorflow.org/api_docs/cc
    Окей, из крупных проектов гуглится сразу opennn.net открыто доступно с примерами

    Только непонятно зачем тебе именно c++?

    Нейронные сети это работа с данными, и главное, работа со специализированным оборудованием типо gpu, которое на пару порядков быстрее обычного процессора. Какая тебе разница на чем писать в конечном счете, все равно ты будешь пользоваться готовым инструментарием по его правилам?

    И да, opencl - общепринятый язык описания кода для высокоэффективных вычислений на универсально любом оборудовании (cpu/сопроцессор/видеокарта/...) это по факту язык с c++ синтаксисом.
    Ответ написан
    4 комментария
  • Какую выбрать СУБД, если в день может быть более 11млн записей?

    При такой постановке задачи лучшим вариантом СУБД будет та, которую знают и умеют обслуживать ваши админы.
    С таким объёмом вставок справится любая мейнстримная на правильно подобранном железе. Что ещё вы собираетесь делать с этими записями нам неведомо, посему на выбор повлияеть не может.
    Ответ написан
    1 комментарий
  • Какой набор библиотек используют в веб-геймдве?

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

    А почему обязательно JavaScript? Браузерные игры вполне могут делаться и на юнити.

    Что-то может и под Wasm делаться, а там уже и C++ и Rust живут со своими экосистемами.

    А некоторые браузерки и не требуют 3d вообще - там может использоваться и какой-нибудь кастомный 2д движок, а часть логики может обрабатываться на сервере, который вообще написано на php.
    Ответ написан
    Комментировать
  • Как погрузиться в начала/фундамент программирования?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как построенн язык программирования, например: Как понять, как устроенны ключевые слова; Препроцессорные процессы: define, include и др.; - Я правильно понимаю, нужно опустится на ещё более низкий уровень до ассемблера? - Ассемлер является той фундаментальной сущностью в программировании (не считая машинный код, который и так человек не должен понимать)?

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

    Возможно достичь понимания работы программ не физически, а программно. (Я не знаю как это точно сказать.) То есть не как в комп’ютере выполняется программа, а как работает отдельная сущность - программа? - И вообще это возможно, либо я просто многое чего хочу от жизни?

    Любая программа - это просто алгоритм. Так что смотрим что делает программа и спокойно разбираем её алгоритм. А если есть исходный код - то вообще все полностью можно разобрать.

    Ну и вообщем, какие-то фундаментальные знания - на чём базуется/построенна програмированние и IT, тоже не помешало. Например рекомендуют SICP почитать, правильно ли я тогда пойду или это не то. Если да, можете ещё набросать ваши варианты? Буду признателен.

    Фундамент - бинарная логика. Над ней - процессорные инструкции или машинный код. Далее - ассемблер, минимально простая абстракция для составления инструкций для процессора. Следующий этаж - язык программирования высокого уровня, который в своем составе имеет какой-то типовой набор абстракций (переменные, функции, операции с памятью, блоки и разные типы данных), функций и алгоритмов для более человечного описания алгоритмов и для работы с данными. ЯП бывают разные и решают проблему в какой-то определенной области или для какой-то цели. Также существуют предметно/проблемно-ориентированные ЯП (DSL - domain-specific language) - более узкие решения. Дальше - стандартные и дополнительные библиотеки для упрощения работы с определенными данными, алгоритмами и прочее. Выше лежат фреймворки реализующие какой-то определенный каркас/функционал для реализации программ/алгоритмов для решения задач в рамках какой-то специфической области.
    Ответ написан
    4 комментария
  • Как получить координаты мыши?

    KraGenDeveloper
    @KraGenDeveloper
    Unity Developer
    Ось так -
    Input.mousePosition; // x y position
    Input.mousePosition.x; // x position
    Input.mousePosition.x; // y position

    Док-ва
    Ответ написан
    4 комментария