• Как сделать случайные колебания цен для экономической стратегии?

    KEugene
    @KEugene
    Как сделать случайные колебания, которые будут выглядеть естественно?

    Многие случайные колебания на самом деле не совсем случайны. Если вы не хотите заморачиваться с математикой, то можно использовать реальные данные, как вы и сделали. Например, взять исторические данные за год по цене пары USD/GPB или USD/AUD (у этих пар не будет "странных" скачков), нормализовать их (это сделать просто даже в Экселе) и принять результат за базовую стоимость основной игровой валюты. Если вы хотите добавить сезонность, то можно взять реальную стоимость зерна (вместо свинины) - падение цены перед началом уборочной и максимальная цена через 2/3 года. Высокочастотные колебания будут очень незначительные, можно использовать, как есть. Ну или сгладить немного. На этот график "наложить" свою базовую стоимость. Все остальное - производные значения с неким курсом 1:ХХ.
    Ответ написан
    Комментировать
  • Как сделать прокрутку на 360 относительно центра группы svg?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Fullstack web developer
    transform-box: fill-box;
    Ответ написан
    Комментировать
  • Как запретить чужому процессу доступ к определенной директории в файловой системе?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Это делается правами доступа к папкам и запуске вашего процесса от имени юзера, у которого есть доступ.
    Ответ написан
    3 комментария
  • Где ошибка в коде?

    @Sir_Akakii
    У вас какая-то путаница в структуре кода.
    Функции FixedUpdate и Jump находятся вне класса, последняя фигурная скобка вообще лишняя.
    Ответ написан
    Комментировать
  • Как добавить функции плавности к линейному движению?

    GavriKos
    @GavriKos Куратор тега Unity
    Какой то интересный перевод - функция плавности... Хотя вроде и правильный.
    По сути своей это просто закон изменения значения в зависимости от времени.
    Вот разные варианты: https://easings.net/ru
    Можно представить графиком - благо в юнити есть кривые, можно - сразу функцией - быстрее считать будет.

    Например, простой линейный закон:
    x = k*t. t - время с начала анимации, k - коэффициент - по сути скорость.
    Квадратичный закон:
    x = k*(t^2) - за одно и то же время будет проходится все большее и большее расстояние.
    Ну и т.д.
    Ответ написан
    Комментировать
  • Где посмотреть формулы по физике для расчета столкновений в 2d?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Разработчики игры N в своё время сделали хорошие туториалы по физике.
    Ответ написан
    Комментировать
  • Почему не добавляется ещё один LEFT JOIN?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ... WHERE city_id = 4019 LEFT JOIN ...
    После WHERE не может быть JOIN'ов.
    Ответ написан
    5 комментариев
  • C# - Как сделать выборку из текста?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    https://www.newtonsoft.com/json

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

    сам бы скорее всего сделал в рукопашку, при условии что другие данные точно не нужны. при чем суть вы уже описали ;))) и по производительности, это наверняка самый быстрый вариант (upd )по производительности, а вот по реализации - зависит от навыков, кому то может быть проще newtonsoft (ну и см ленивый вариант, там тоже не производительность (но думаю и далеко не самый тормозной), но легко быстро набросать логику и легко ее оттестировать)

    ps можно еще ленивый вариант - Split по
    {"userId":"
    тогда первый элемент отбрасываем, все остальные начинаются с искомой величины, надо только хвост
    "} bla-bla-bla
    отрубить

    ps держите прототип, содержит все 3 упомянутые подхода, но перфоманс можно сравнить только на реально больших данных )).. (но на больших данных могут и баги полезть ;)

    spoiler

    вопрос понравился, и выдалось время.. хотя и не за 15 минут, врать не буду, часа полтора порядка 45 минут ушло на заковырки )) в основном с json (мало опыта)

    upd и уже исправлено - была заготовка класса для частичной json выборки, но она не нужна

    using Newtonsoft.Json.Linq;
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace parsejson111
    {
        class Program
        {
            const string data = "{\"anchor\":\"aaabbbccc==\",\"members\":[{\"userId\":\"111\"},{\"userId\":\"2222\"},{\"userId\":\"333\"},{\"userId\":\"444\"}],\"has_more\":true}";
            // фишки замера заложены, но разница может проявиться только на больших объемах ))
    
            static void Main(string[] args)
            {
                Console.WriteLine("data:");
                Console.WriteLine(data);
    
                var sw = new Stopwatch();
                sw.Start();
                var ts = sw.Elapsed; // лень объявлять тип
    
                json();
                hand();
                lazy();
    
                sw.Stop();
                Console.WriteLine("press any key to continue...");
                Console.ReadKey();
    
                void json() // возможно существует более элегантный вариант. тут у меня опыта мало ))
                {
                    sw.Reset();
                    Console.WriteLine("... json");
                    var j = JObject.Parse(data);
                    var r = j["members"].Children().ToList();
                    foreach (var u in r)
                    {
                        var uid = JObject.Parse(u.ToString());
                        var id = uid["userId"].Value<string>();
                        Console.WriteLine(id);
                    }
                    ts = sw.Elapsed;
                    Console.WriteLine($"\t{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}");
                }
    
                void hand() // зато тут гарантирую - оптимизировать лучше не реально, и по перфомансу вряд ли можно лучше ))
                {
                    sw.Reset();
                    Console.WriteLine("... hand");
                    var p = 0;
                    while ((p = data.IndexOf("{\"userId\":\"", p)) > 0)
                    {
                        p += 11; //длина шаблона. заодно избегаем риска зацикливания
                        var f = data.IndexOf("\"}", p);
                        Console.WriteLine(data.Substring(p, f - p));
                    }
                    ts = sw.Elapsed;
                    Console.WriteLine($"\t{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}");
                }
    
                void lazy()
                {
                    sw.Reset();
                    Console.WriteLine("... lazy");
                    var t = data.Split(new string[] { "{\"userId\":\"" }, StringSplitOptions.RemoveEmptyEntries);
                    for (var i = 1; i < t.Length; i++) // здесь и везде - обработка пустого множества на вашей совести
                    {
                        var id = t[i].Split(new string[] { "\"}" }, StringSplitOptions.RemoveEmptyEntries);
                        Console.WriteLine(id[0]);
                    }
                    ts = sw.Elapsed;
                    Console.WriteLine($"\t{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}");
                }
            }
        }
    }

    Ответ написан
    Комментировать
  • Как разруливать права доступа в зависимости от роли пользователя?

    Astatroth
    @Astatroth
    Я тут случайно
    Чтобы не городить кучу методов для выборки на каждый случай жизни, я бы сделал скоуп, который принимал бы пользователя в качестве аргумента и фильтровал записи в зависимости от пермишенов. Тогда выборка контрактов всегда будет "чистой", типа
    Contract::withPermission($user)->get();

    В скоупе уже придется прописать фильтры по пермишенам.
    Да, может это и не бест практис, но ведь работает. Теоретически, конечно, такого не приходилось реализовывать еще.
    Ответ написан
    1 комментарий
  • Как правильно отправить данные через Serialport C# на микроконтроллер?

    petermzg
    @petermzg
    Самый лучший программист
    В документации к SerialPort.Write написано:
    By default, SerialPort uses ASCIIEncoding to encode the characters. ASCIIEncoding encodes all characters greater then 127 as (char)63 or '?'. To support additional characters in that range, set Encoding to UTF8Encoding, UTF32Encoding, or UnicodeEncoding.
    Ответ написан
    1 комментарий
  • Проект в GitHub из VS17?

    ApeCoder
    @ApeCoder
    1) исходники - надо очистить проект от промежуточных файлов https://docs.microsoft.com/ru-ru/visualstudio/ide/...

    2) зависимости (используемые библиотеки) - если они не добавлены в проект как nuget пакеты

    3) инструкции по сборке, если просто собрать vs недостаточно
    Ответ написан
    Комментировать
  • Проект в GitHub из VS17?

    VisualStudio.gitignore сохранить как .gitignore в папке решения.
    https://visualstudio.github.com/ установить и следовать картинкам
    Ответ написан
    Комментировать
  • Можно ли прочитать данные с чипа TSOP48 с помощью программатора TL866?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Нет.
    Даже если-бы TL866 поддерживал нанды то считав с них содержимое, вам-бы это не помогло ровно никак ибо контроллер не складывает данные линейно и для восстановления данных нужен ещё софт (софт не халявный, очень).

    П.С. на хабре была статья про восстановление данных с флэш, доволи подробная. толи от hddmasters толи ещё от кого, не помню.
    Ответ написан
    Комментировать
  • Как создать свой формат файла или как сохранить 300 вопросов с вариантами в одном файле?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сделайте все в разных файлах и соберите в zip, как это делается в docx/xlsx. Это из простых вариантов.
    Ответ написан
    1 комментарий
  • Как создать свой формат файла или как сохранить 300 вопросов с вариантами в одном файле?

    hrls
    @hrls
    Не вижу проблем с хранением всего в JSON-файле с кодированием бинарных данных в Base64 (так изображения хранить проще простого; про формулы в конце). JSON парсить в php (да и вообще) – проще некуда. Сохранение в JSON-файл из *.doc/docx можно реализовать макросом-скриптом на Visual Basic за половину рабочего дня.
    Если не планируется какое либо распространение этого софта и заранее известно окружение (например система тестирования в университете с определенной версией MS Office =) ), то можно использовать автоматизацию приложений MS Office. Насколько помню, на том же Delphi довольно просто прикручивался кастомный GUI к документу MS Office при наличии хоть какого опыта работы с технологией COM. В таком случае достаточно будет лишь правильно разметить документ. С веб-версией, в случае ее необходимости, придется обращаться к .NET-платформе (хотя наверняка в MSDN уже есть мануал с сорцами на эту тему).
    И стоит напомнить: *.docx – это не более чем переименованный *.zip с файлами в xml-формате. Не знаю как там хранятся изображения, но парсить распакованную структуру не должно составить большого труда средствами любого языка программирования.
    Что является формулами я не смог понять из вопроса. Если объекты *math* или как там в MS Office они зовуться, то тут нужно искать решение. Например отрендерить предварительно =)). Вроде когда из .docx импортировали в *.doc для Office 2003 так и было.
    Ответ написан
    Комментировать
  • Можно ли в Фотошопе сделать афинное преобразование по опорным точкам?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Vanishing Point – встроенная фишка в шопе.

    Однажды настраиваете перспективную сетку и потом просто copy-paste изображение и натаскиваете на эту сетку - оно трансформируется под заданную перспективу.
    Ответ написан
    1 комментарий
  • Как взять рандомный, уникальный элемент из массива?

    Правильный способ - отсортировать рандомно массив и потом брать элементы по-очереди с первого. Гуглите по ключевому слову Shuffle.

    array.Shuffle();
    
    foreach (var randomItem in array) {
        Console.WriteLine( randomItem );
    }
    Ответ написан
    Комментировать
  • Как создать вектор оттягиванием мыши?

    coremission
    @coremission
    Профессиональный программист игр.
    Не используйте нормализованный вектор,- ну его!
    Оттягиванием - запомните позицию когда нажали мышь, отнимите эту позицию от позиции когда отпустили мышь,- и все, вот ваш вектор ;)
    Ответ написан
    Комментировать