• Как свернуть процесс в трей на C#?

    Gorily
    @Gorily
    var driver = new ChromeDriver();
    driver.Manage().Window.Minimize();
    Ответ написан
    Комментировать
  • Как хранить массив элементов, каждый элемент которого состоит из 2 связанных с ним элементов?

    @Hedy
    Создать класс допустим Auth:

    public class Auth {
     public string Login {get; set;}
     public string Password {get; set;}
    }

    и использовать списки:
    var AuthList = new List<Auth>();
    var auth = new Auth(){Login: "login123", Password: "pass"};
    AuthList.Add(auth);

    4 тысячи простых объектов - это немного.
    Ответ написан
    4 комментария
  • Как создать таск-менеджер на C#?

    @Satangelus
    Не понимаю затрудений. По идее Вам нужно запустить таймер с неким шагом и по таймеру выполнять процедуру проверки не пора запускать таски. Далее если пора, создаем нитку, считываем порядок запуска задач и запускаем процесс Process.Start(), проверяем циклом статус процесса, пока процесс жив делаем yield() когда процесс завершиться переходим к следующему по списку и повторяем до исчерпания списка.

    https://metanit.com/sharp/tutorial/11.9.php
    https://metanit.com/sharp/tutorial/18.1.php
    Ответ написан
    Комментировать
  • Как создать таск-менеджер на C#?

    GavriKos
    @GavriKos
    Ну очевидно должен быть общий конфиг в том же джсон, в котором указано какие конфиги/задачи запускать. Каждая задача наследуется от одного интерфейса и умеет говорить о своем завершении.

    Не до конца понятно, где и как все это должно крутится, так что может вам подойдет что то вроде jenkins или аналогов.
    Ответ написан
    1 комментарий
  • Как скруглить углы у элемента WPF?

    makarenya
    @makarenya
    программист
    Наиболее оптимальный способ - вручную прорисовывать шаблон элемента. Той же кнопки, к примеру.
    Первая попавшаяся ссылка с вменяемым по размеру примером:
    https://professorweb.ru/my/WPF/Template/level17/17...
    Общая суть:
    Нужно указать параметр Template у объекта, углы которого скруглять вздумали.
    Это можно сделать как в примере на странице через ссылку на StaticResource, либо по месту, указав
    <Button.Template>
    ...
    </Button.Template>

    Сам шаблон описывается элементом <ControlTemplate TargetType="Button">. Ну или не Button, а тот элемент, который вы хотите выдать.
    Внутри вы можете нарисовать кнопку так, как вам того хочется. Можно <Rectangle RadiusX="10" RadiusY="10">, можно <Border CornerRadius="10"> - на ваше усмотрение. Не забываете добавить <ContentPresenter>, чтобы отобразить содержимое кнопки (её текст или любые другие элементы, которые на ней должны размещаться). В реальности вам придётся ещё впоследствии добавить раскраску в зависимости от состояния (активная, курсор наведён, курсор не наведён), и возможно анимацию перехода между этими состояниями!

    Чтобы не делать это всё с нуля, часто бывает удобно скопировать стиль по-умолчанию с сайта майкрософт , а потом перкроить его на свой вкус.

    Blend так ни разу и не довелось использовать. Всё-таки мне показалось более удобным работать с чистым кодом. Вся идея бленда заключалась на мой взгляд в том, чтобы посадить за него дизайнера, и чтобы последний выдавал на нём готовые для использования блоки. Программеру он ни к чему.
    Ответ написан
    2 комментария
  • Как ограничить количество одновременно запускаемых потоков?

    @basrach
    Самый простой вариант это использовать Parallel.Foreach.
    var myEntities = new MyEntity[100];
    var maxThreads = 15;
    
    System.Threading.Tasks.Parallel.ForEach(
        myEntities,
        new System.Threading.Tasks.ParallelOptions { MaxDegreeOfParallelism = maxThreads },
        entity =>
        {
            entity.Do()
        });


    Второй вариант использовать Semaphore или SemaphoreSlim.
    var myEntities = new MyEntity[100];
    var maxThreads = 15;	
    
    var semaphoreSlim = new SemaphoreSlim(maxThreads);
    var tasks = new List<Task>(myEntities.Length);
    foreach (var entity in myEntities)
    {
    	tasks.Add(Task.Run(() =>
    	{
    		semaphoreSlim.Wait();
    		try
    		{
    			entity.Do();
    		}
    		finally
    		{
    			semaphoreSlim.Release();	
    		}
    	}));
    }
    
    Task.WaitAll(tasks.ToArray());


    Если вы хотите использовать класс Thread напрямую, то
    var myEntities = new MyEntity[100];
    var maxThreads = 3;	
    
    var semaphore = new Semaphore(maxThreads, maxThreads);
    var threads = new List<Thread>(myEntities.Length);
    foreach (var entity in myEntities)
    {
    	var thread = new Thread(() =>
    	{
    		semaphore.WaitOne();
    		try
    		{
    			entity.Do();
    		}
    		finally
    		{
    			semaphore.Release();
    		}
    	});
    	
    	threads.Add(thread);
    	
    	thread.Start();
    }
    
    foreach (var thread in threads)
    	thread.Join();


    Хотя из условий задачи кажется, что здесь вполне можно обойтись Task. Task предпочтительней еще и по той причине, что потоки переиспользуются. Т.е. задействованных потоков будет столько, сколько одновременно выполняется задач, например 15. В случае же создания потока напрямую через класс Thread, 15 будут работать, остальные просто ждать, при этом все равно расходуя ресурсы.
    Ответ написан
    Комментировать
  • В чем суть интерфейсов в программировании?

    @ZzZero
    Я делаю систему контроля яркости.
    Я хочу настраивать яркость всего (гирлянды, люстры, фонарика, экрана телефона).
    В коде выглядит примерно так
    class BrightControl
       public void setDefaultBright(Object obj){
             obj.setBright(10);
       }
    }

    Метод setDefaultBright принимает любой объект. Ведь мне всё равно яркость чего настраивать.
    Мой код используют другие разработчики, я не могу контролировать их.
    Как мне убедиться, что у объекта, который мне пришел в качестве аргумента, есть метод setBright?
    Я пишу интерфейс, и говорю, что метод setDefaultBright принимает только объекты, которые реализуют этот интерфейс.

    Если кроме меня самого никто не будет использовать эту систему контроля яркости. То я просто буду держать у себя в голове, что в метод setDefaultBright можно отправлять только объекты, у которых есть метод setBright, но поддержка кода усложняется, через год и не вспомнишь...
    Ответ написан
    3 комментария
  • Будущее за JS или еще не всё потеряно?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    я вот как не прочту новость с похвалами к ноде.. или еще че такое - так сразу хочется js начать... но как начну читать о ... том что ЭТО... - спасибо, дс (реально, я лучше С погрызу, и какунить либу к своей проге допишу, для перфоманса.. хотя и плюсы меня не возбуждают - врать не буду ))) (но на них и гуи то уже обычно не пишут... опять же - либы, перфоманс... а собрать и слинковать, вроде как получается много чего, не парюсь )))
    Ответ написан
    Комментировать
  • Стоит ли новичку начинать с фреймворка или лучше учиться на чистом php?

    AleksDesker
    @AleksDesker
    От цели зависит, если налабать по бырому лендинг надо, схватить деньгу и свалить навсегда - берите фреймворк который лучше зайдет, фигачте на нем и нафиг вам этот PHP и OOP. А вот если что-то серьезное в плане бэкенда писать, тут надо понимать как этот фреймворк работает не хуже, а чаше лучше его разработчика, чтоб не только пользоваться его сильными сторонами, но и уметь обойти слабые - тут без основ никуда.
    Можно попробовать комбинировать эти подходы, лабать че попроще на вордпрессе, а когда получилось схватить деньгу и свалить в подполье - изучать там основы спокойно и писать свои штуки :)
    Ответ написан
    Комментировать
  • Будущее за JS или еще не всё потеряно?

    @frees2
    Два индикатора умирания языка.
    1
    Учил flash4, мало кто знает, что это такое, отбил время на изучение, успел, повезло.
    От политической Эстонии полиции защитило, заказчик был американский.
    Потом код поменялся и пошли все кому не лень делать рекламки и крутилки. Притом все знали недостатки языка.
    2
    Появляются крутые гуру, которые только за имя стоящее на сайте (доткомы), как правило (тогда верстальщики специфические и дизайнер, это было вместе, по отдельности тогда не было...), спекулятивные. Языки называть не буду, чтобы не тревожить ещё живых участников поедания каши.
    Ответ написан
    Комментировать
  • Будущее за JS или еще не всё потеряно?

    Но вот как мне кажется JS это не тот язык, который может "во всё".

    Был бы компилятор, а остальное само придет.
    Ответ написан
    Комментировать
  • Будущее за JS или еще не всё потеряно?

    @m0nym
    1. Если бы можно было создать один идеальный язык - это было бы сделано еще до вашего рождения...
    2. JS является наскоро слепленным говном. Позиции держит только из-за монополии в браузерах, а то бы о нем уже все забыли.
    3. От него пытаются уйти (TypeScript, Dart и даже ES6 фактически уже другой язык), а вы говорите - придет он везде. Ага
    4. Там, где нет монополии браузеров - там JS вообще ничто. NodeJS таки не захватила сколько нибудь значимой доли в бэкенде. Используется только потому что полно фронтендеров, желающих писать бэкенд, но не желающих учить языки.


    Но для лично Вас - почему бы и нет.
    Существуют инструменты для использования JS где угодно.

    В браузерах, бекенде, мобилках и десктопе. Пользуйтесь на здоровье.
    Ответ написан
    6 комментариев
  • Будущее за JS или еще не всё потеряно?

    @LiguidCool
    Монополии не будет, 100%
    Но вот что потеснит тот же PHP и заменит всякий треш типа Python - вполне.
    Ответ написан
    9 комментариев
  • Будущее за JS или еще не всё потеряно?

    DevMan
    @DevMan
    не читайте по утрам советских газет.

    Скоро, скоро, благодаря серверному JS у серверных приложений тупо ничего не останется кроме последнего выбора — сдаться. Ну просто так сложилось, что ничто не в состоянии составить конкуренция JS. Питон и Руби могут попытаться, но вряд ли )
    https://habr.com/post/106274/#comment_3341256
    прошло уже 8 лет....

    один игрок на рынке - это стагнация. доказано историей не раз.
    Ответ написан
    Комментировать
  • Можно ли разрабатывать Windows-приложения на Java в Linux?

    sim3x
    @sim3x
    Без тестов на реальной ОС - нет
    Те ставить винду придется

    Специализировать часть кода для каждой ОС придется
    Ответ написан
    Комментировать
  • Можно ли разрабатывать Windows-приложения на Java в Linux?

    NeiroNx
    @NeiroNx
    Программист
    Java не зависит от платформы. Может от версии движка зависит максимум.
    Ответ написан
    2 комментария
  • Правильное использование virtual, override, new?

    @kttotto
    пофиг на чем писать
    Значит ли это, что все методы следует делать виртуальными?

    Нет, не значит. Если разрешить переопределять все, то можно логику поломать. А если Вы пишите библиотеку и разрешите все и вся менять? Переопределять можно разрешать в местах, где используется стратегия: где есть обобщенный класс и наследуемые классы могут реализовывать собственную логику.
    Если вдруг, в процессе разработки, возникнет необходимость разрешить переопределение, то дописать override недолго.
    Ответ написан
    Комментировать
  • Как извлечь только повторяющиеся N раз элементы массива в C#?

    @d-stream
    Готовые решения - не подаю, но...
    Linq .GropBy()
    Ответ написан
    Комментировать
  • Как работая с сайтом на Get/Post запросах можно представиться браузером?

    @m0nym
    Возможно, они имеют ввиду User-Agent.
    User-Agent легко подделывается и об этом всем известно - так что подделка так себе.

    Более серьезная подделка - полноценная имитация браузера. См. SlimerJS, PhantomJS, Selenium для этого.
    Но если речь идет о простых GET/POST - это не нужно.
    Ответ написан
    5 комментариев
  • Может ли Awesomium конкурировать с Selenium?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Используйте nwjs. Awesomium практически не юзабелен — документации нет, заброшен.
    Ответ написан
    Комментировать