Ответы пользователя по тегу .NET
  • Что означает .Net для Unity разработчика?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    1 - .Net существует не только для Unity. точнее изначально существовал сам по себе. гулить историю/архитектуру Unity (что такое Mono, IL2Cpp и много интересных вещей, не все из которых реально необходимы что бы начать кодить)
    знание .Net для Unity разработчика
    может означать, что
    просто знание .Net
    недостаточно

    2 - в различных версиях, Unity поддерживал не только C#, бывали Js, и даже Boo. в этом контексте
    знание .Net для Unity разработчика
    может означать, что
    надо уметь кодить на C# в Unity, а не на Js или Boo


    3 - .. или и то и другое вместе
    Ответ написан
  • Перенос клиента в веб. ASP.NET Core MVC или ASP.NET Core Web API + Angular?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    рекомендую к прочтению - https://habr.com/company/epam_systems/blog/429766/

    однако сам бы поддержал совет Роман Мирр - попробовать оба подхода на небольшом макетном приложении. так вы лучше почувствуете и поймете что вам подойдет
    Ответ написан
  • Переводят ли легаси .net на .net core?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    каждый отдельно взятый
    Интерпрайс
    сам принимает решение, исходя из каких то собственных внутренних причин
    Ответ написан
  • Как изменить значение переменной в ресурсах?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    использовать БД или конфигурационные файлы (в обоих случаях полезно задумываться о безопасности - использовать шифрование, хотя бы для защиты от прямого чтения)

    а ресурсы изначально задумывались как способ хранения статических вещей, типа параметров по умолчанию, разметки по умолчанию, и тд
    Ответ написан
  • Как включить отображение XAML Designer Window в Visual Studio 2017?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    создать WPF или UWP приложение, и он сам прекрасно открывается. в иных случаях он не нужен.
    все дизайнеры в студии (в тч WinForms), обрабатывают фалы макета в связке с кодом (хотя у форм это и есть код, только генереный по правилам дизайнера), по этому, вне проекта дизайнеры не доступны

    если у вас WPF или UWP - уточните проблему
    Ответ написан
  • C# vs Php. Что выбрать?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    вы вроде уже расписались в любви к шарпу... (сам буквально вчера поднял Unity и теперь смотрю, с какого боку его грызть начать ;))

    что держит? думы о трудоустройстве? чем дальше от мегаполисов, тем больше шансов быстрее подзаработать на "пыхе", и сложнее найти приличную работу на шарпе. но в столицах, думаю хорошие шансы и шарпистом устроится + шансы, что трудоустройство будет допускать хорошие, даже лучшие чем у пыха, перспективы роста (корпоративный сектор же ;) .. (другой вопрос - иметь шансы и реализовать их - не одно и тоже, это всегда зависит от человека ;))
    Ответ написан
  • Лучшие практики. Как закрыть главную форму из дочерней?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    1 - не обязательно делать "логин" главной формой. можно стартовать главную форму скрытой, а форму логина дочерней, но показывать раньше, и дальше действовать в зависимости от успешности логина

    2 - конкретно в WinForms можно отрабатывать вообще разные формы последовательно

    using System;
    using System.Windows.Forms;
    
    namespace X
    {
        internal static partial class Y
        {
            /// <summary>
            /// Главная точка входа для приложения.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(A = new fmA());
                // bla-bla-bla with login
                Application.Run(B = new fmB());
            }
            internal static fmA A;
            internal static fmB B;
        }
    }


    3 - для WPF не подскажу, но наверняка оба подхода можно рассмотреть и пробовать искать аналогии

    ps для WinForms
    Как закрыть главную форму из дочерней?
    буквальный ответ - ни как, закрытие главной формы, это завершение Application.Run(A = new fmXXX()); и если вы не модифицирутете код Main- тогда это завершение программы
    Ответ написан
  • C# - Как сделать выборку из текста?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    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}");
                }
            }
        }
    }

    Ответ написан
  • Верно ли я обращаюсь к файлу по адресу?

    mindtester
    @mindtester Куратор тега Windows
    делаю странные вещи..чаще на C#.. иногда за деньги
    на скрине один "ONU-Manager" через дефис, другой через пробел
    кроме то, используйте синтаксис, который позволит вам скопировать путь из проводника
    StreamReader fr = new StreamReader(@"D:\C# Projects\ONU-Manager\ONU Manager\bin\Debug\check.txt");

    ps используйте как пример к размышлению

    using System;
    using System.IO;
    
    namespace mypath
    {
        class Program
        {
            static void Main(string[] args)
            {
                var p = Environment.CurrentDirectory;
                Console.WriteLine(p);
                Console.ReadKey();
                p += @"\..\..\App.config";
                var appcfg = File.ReadLines(p);
                foreach(var l in appcfg)
                    Console.WriteLine(l);
                Console.ReadKey();
            }
        }
    }
    Ответ написан
  • На сколько сильно программирование .ASP NET MVC зависит от C#?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    На сколько сильно взаимодействуют эти два "языка".
    тут и есть фундаментальное заблуждение - это не два языка

    - язык один C# (хотя можно использовать любые языки реализованные в .NET, но все остальное, кроме vb.Net будет уже муками творчества)

    - ASP.NET MVC это шаблон проектирования и набор библиотек для его реализации

    - ASP.NET MVC Core тоже самое, только кросс платформенное, тут скоре надо просто понять разницу между ветками .Net
    Ответ написан
  • Что нужно из Xamarin-ов на компьютере (Win.), чтобы начать разрабатывать простые моб. приложения?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    ставите Visual Studio, при выборе компонентов, старайтесь исходить из принципа "откинуть все что не понятно" - доустановить проще чем вычистить
    Ответ написан
  • Math.Abs от строки как это работает?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    в этом синтаксисе, строка перебирается как массив символов, [] интерпретируется как индекс такого массива
    Ответ написан
  • Как реализовать стек на C#?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    а что? гугл уже тоже заблокировали? стек на C#

    ps вспомнил, был тут вопрос об оптимизации стека, где то в январе 2017, чел там на классах все расписал, но в приоритете была именно скорость )).. но еще и было требование функций модифкации стека.. оказалось у меня сохранился проект. вот код (System.Diagnostics необходим для замеров времени исполнения)

    using System;
    using System.Diagnostics;
    
    namespace stack
    {
        public class Program
        {
            static private int max = 100_000_000;
    
            class Stack
            {
                private int[] sd = new int[max];
                private int sp = -1;
    
                public void Push(int data)        => sd[++sp] = data; 
                public int  Pop()                 => sd[sp--];
    
                public void Rep(int sp, int data) => sd[sp] = data; 
                public void Inc(int sp, int data) => sd[sp] += data; 
                public void Dec(int sp, int data) => sd[sp] -= data; 
                public void Xor(int sp, int data) => sd[sp] %= data; 
            }
    
            public static void StackTest()
            {
                var watch = new Stopwatch();
                var stack = new Stack();
    
                var count = max;
    
                watch.Start();
                for (int i = 0; i < count; i++)
                    stack.Push(i);
                watch.Stop();
                Console.WriteLine(watch.Elapsed);
    
                watch.Restart();
                for (int i = 0; i < count; i++)
                    stack.Xor(i, 2);
                watch.Stop();
                Console.WriteLine(watch.Elapsed);
    
                watch.Restart();
                for (int i = 0; i < count; i++)
                    stack.Pop();
                watch.Stop();
                Console.WriteLine(watch.Elapsed);
    
                Console.ReadKey();
            }
    
            public static void Main() => StackTest();
        }
    }


    ! данный прототип действительно не содержит ни каких обработчиков возможного переполнения ;))
    ну и кусок кода https://i.imgur.com/AejLUcX.png для классического стека, скорее всего совсем не нужен ))

    всяческие bool empty() ... это bool empty() => sp < 0; .. ну в смысле для данного прототипа ))
    Ответ написан
  • Что изучать .NET программисту?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    или продвинутый десктоп:
    - (в корпоратив) WPF&MVVM&SQL(при чем желательно еще и опыт разных ;)
    - или эксклюзив типа https://ru.wikipedia.org/wiki/OpenCV upd есть отличные обертки
    - или нейросети/(бигдата? но с реальным пониманием) upd имеется в виду добавить в копилку F#, а там связи станут более очевидными ;))
    - или криптография upd блокчейны?
    ... иначе - "заурядные" вебсервисы ))

    .. возможно это вечная проблема - есть люди, которые пытаются учить много, но всега попадают не туда, где это уже нужно.. и есть люди, которые много двигаются, и все время куда то попадают.. и на ходу, доучивают что то еще... (ну и какой то середнячек, со средней степенью везения... к примеру 1С... практически гарантия трудоустройства.. + тошноты от работы ))
    Ответ написан
  • Где почитать что изменилось в asp.net core 2.1?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
  • Windows 7 после установки .NET Framework 4.5.1, свободная RAM уменьшится?

    mindtester
    @mindtester Куратор тега Windows
    делаю странные вещи..чаще на C#.. иногда за деньги
    по идее - нет. все дотнетовское, должно запускаться по запросу (хотя потом может сидеть фоном, но должно вытесняться конкурирующими процессами)

    но я не МС, не дам гарантии за ответ. за гарантийным ответом, вам, скорее всего придется обращаться именно в МС
    Ответ написан
  • Как работать с MetroFramework?

    mindtester
    @mindtester
    делаю странные вещи..чаще на C#.. иногда за деньги
    1 - поиск
    2 - демо

    ps кстати, на нугетовых страничках опенсорсных либ, как правило есть ссылка на джитхаб (или где там еще автор публикуется)
    Ответ написан
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    Есть мысли перейти на селфхостинг, однако есть опасения, что мировой опыт отвергает такой подход


    мопед не мой
    но:

    Сначала мы пошли по простому пути: прикрутили IIS, создали ASP.NET-приложение с фреймворком ASP.NET Web API и начали пилить бизнес-логику. Быстро стало понятно, что вся эта конструкция не держит больше 500-700 запросов в секунду. Как бы мы ни заклинали IIS, ни подкручивали 100500 параметров, проблема не решалась. И совсем доставало, что залезть внутрь IIS нет возможности, а значит полного контроля над ситуацией нам не добиться. IIS — пресловутый черный ящик, в котором тяжело что-то кардинально изменить.

    Тогда мы попробовали сервер проекта Katana (реализация OWIN-инфраструктуры от Microsoft). Katana — проект с открытым исходным кодом, поэтому можно было увидеть внутренности. К тому же, у Web API есть поддержка OWIN, а значит, сильно менять код не придется. Katana предоставляет возможность работать как с IIS, так и с их простым сервером, написанным на основе .NET-овского HttpListener. Именно его мы и взяли. Результат порадовал: теперь сервер держал около 2000 запросов в секунду, а ASP.NET приложение трансформировалось в Windows-сервис.

    Однако нагрузка на сервера увеличивалась, пилились новые фичи. Становилось понятно, что и этот вариант нас тоже не устраивает. Тогда мы пошли на кардинальные меры: от всей Катаны остался только HttpListener с небольшой обвязкой для асинхронности, от Web API не осталось ничего, то есть приложение стало полностью заточено под HTTP-запросы для биддера. В результате сервер стал способен обрабатывать до 9000 запросов в секунду. Вывод прост: вся OWIN- и Web API-обвязка оказывает критическое влияние на высокопроизводительные приложения. Хотите быстрее — пишите проще и неуниверсально. (Это не говорит о том, что внутри приложения должен быть ядерный говнокод. У нас всё модульно, вполне расширяемо: DI, паттерны и всё такое)


    источник - https://habr.com/company/targetix/blog/261745/
    Ответ написан
  • Как создать браузер на C# или C++?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    смотрите и подглядывайте на том же джите 1,048 repository results
    Ответ написан