• Возможно ли сейчас повторить успех it-гигантов?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Если назвать проект стартапом - возможно, если просто проектом - нет.
    Ответ написан
    Комментировать
  • Как получить частоту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Начнем с того что звук в микрофон поступает не одной частоты. Это целый спект частот. Метод getByteFrequencyData этот спектр и возвращает, точнее... он делит спектр на части, каждый элемент которого определяет, проще говоря, среднюю громкость звука на этих частотах.

    Вы скажите что вам нужно сделать? Спектрограмму вывести?
    Ответ написан
    8 комментариев
  • Как запустить несколько потоков одновременно в c#?

    @Sumor
    С филосовской точки зрения всё равно потоки не стартуют одновременно, так как процессор-то один.
    Но с точки зрения программирования можно предложить следующее решение с потоками-стартерами рабочих потоков.
    class Program
    {
    static List<Thread> threads = new List<Thread>();   // Список потоков
    static int threadCount = 10;                        // Число потоков
    static ManualResetEvent startEvent = new ManualResetEvent(false);   // Событие для старта рабочих потоков
    static volatile int starterCount = 0;               // Счётчик запущенных потоков. volatile показывает, что переменная будет изменяться в различных потоках и её не надо оптимизировать
    static object LockObject = new object();            // Блокировка для изменения переменной starterCount
    
    static void Main(string[] args)
    {
        // Создаём пул потоков
        for (int i = 0; i < threadCount; i++)
        {
            Thread thread = new Thread(Work);
            threads.Add(thread);
        }
        // На старт — запускаем стартовые потоки и ждём их запуска
        foreach (var thread in threads)
            new Thread(Starting).Start(thread);
        while (starterCount < threadCount) Thread.Sleep(1);
        // Внимание — к этому моменту все стартовые потоки запустились и ожидают на WaitOne()
        Thread.Sleep(100);
        // Марш — установка события отпускает приостановленные потоки
        startEvent.Set();
    
        while (true) ;
    }
    
    static void Starting(object paramThread)
    {
        lock (LockObject)
        {
            starterCount++;
        }
        startEvent.WaitOne();
        (paramThread as Thread).Start();            
    }
    
    static void Work()
    {
        return;
    }
    }
    Ответ написан
    1 комментарий
  • Как запустить несколько потоков одновременно в c#?

    @gleb_kudr
    Идиотское требование. Потому что даже если вы подпишите стартовать каждый поток по одному и тому же событию, они все равно будут вызываться синхронно.

    Хотите нормального замера скорости чтобы на это не влиял старт потока? Элементарно - пишите таймстэмп из-под стартовавшего треда. Очевидно, что он выдаст вам значение только когда тред пройдет инициализацию. Потом просто выровняете свои треды по их таймстэмпам.

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

    @CheeseMaster
    Создаём несколько вспомогательных потоков, запускаем их последовательно. Суть этих потоков в том, чтобы проверять постоянно какую-нибудь определённую переменную, когда она изменится - запустить потоки с Work(). Меняем эту переменную, потоки "одновременно" запускают другие потоки.

    Можно и не делать вспомогательных потоков, просто основную логику Work() не запускать до какого-либо события (например, изменения переменной).
    Ответ написан
    Комментировать
  • Как проверить микросхему К555ЛА13?

    friogenn
    @friogenn
    Если у микросхем серий К155 и К555 вход остаётся свободным, то, согласно принципиальной электрической схеме элемента, это эквивалентно присутствию на нем уровня логической “1”.
    Ответ написан
    2 комментария
  • Вы в браузере набрали адрес сайта, нажали Enter. Расскажите максимально подробно о технических процессах происходящих далее?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Действительно, уважаемый. Это слишком. Вряд ли я затрону все тонкости, но попробую наметить примерный путь:

    0) Пользователь вбивает в адресную строку браузера адрес сайта (нажимая клавиши на клавиатуре, которые замыкают определённую дорожку в матрице, по которой происходит определение нажатой клавиши, что через шину USB в какой-то момент передастся OS, где это поймает HID-драйвер и вызовет определённое прерывание, что OS передаст как событие/или_ещё_как в программу, которая вызовет соотвествующую функцию из API менеджера окон, которая изменит содержимое строки и в результате когда-то будет перерисован UI-элемент, а если нажат был Enter, то начнётся следующее).
    1) Браузер вытащит из input'а строку с запросом и посмотрит, похоже ли это на адрес. Если да, то добавит недостающие уточнения (например, http или file протокол, порт и подобные довольно стандартные вещи). Если нет - то скорее всего создаст запрос в поисковую систему, установленную по умолчанию (я более не буду опускаться до таких бессмысленных деталей, как вызовы API-функций, иначе я буду набирать это сообщение ОЧЕНЬ долго). В любом случае на выходе мы по сути получим URL, который надо загрузить. Протокол file:// мы рассматривать не будем, ftp далеко не везде есть, https:// на не хватит вечности, так что остановимся на http, который по сути есть tcp/ip по умолчанию на 80 порту с определённым форматом общения.
    2) Окей, url есть. Теперь нам нужен адрес, к которому обращаться. Так как http это tcp/ip - нам нужен ip адрес. Здесь нам помогают dns-сервера. Обычно, нормальный провайдер устанавливает у себя кэш-сервера dns, которые не обращаются по стопицот раз за vk.com к ответственному серверу com-зоны. Давайте не будем отвлекаться на то, как происходит там общение, если что - вот (вики тем хороша, что часто содержит внизу релевантные ссылки). Скажу лишь то, что на выходе мы получаем ip адрес(а).
    3) Имея адрес мы можем запросить страницу. Собственно, всё что после первого слэша - это как-бы параметры для http-сервера: какую именно страницу запрашивать, он всё же не телепат. Конечно, можно было бы немного схитрить и отправить читать про tcp/ip, но ведь существует и shared-hosting. Ограничемся лишь его упоминанием. Собственно, по полученному адресу отправляется GET запрос, который и обрабатывает сервер, находящийся по полученному IP-адресу.
    4) Сервер же, получив адрес, начинает распарсивать строку, медленно вытягивая нужные данные из баз-данных и настроек, выполняются сотни скриптов, иногда делается ещё не одна сотня различных запросов на другие сервера (здесь и разного вида метрики и разного вида HADOOP и т.д.). Пройдя сквозь скрипты и темплейторы в самом конце мы получаем html-страницу, готовую к употреблению. Её-то сервер и отправит в ответе (после заголовков, конечно).
    5) Вот и началось самое интересное. Получив html страницу браузер начинает жутко надругаться над CPU, HDD и GPU, попутно сжирая тонны RAM и мусоря в swap. Виной всему нереальные для полного соблюдения стандарты от небезызвестной w3c.org. Для облегчения многие делают костыли, вроде webkit, а некоторые и вовсе забивают на него и пилят свой стандарт с преферансом и картёжницами (впрочем, в последнее время становиться лучше). Здесь снова начинаются сотни вызовов API ОС, windows manager'а и прочих библиотек, вроде boost, qt или libpng. В ходе работы в RAM строится макет, по которому потом строится нечто вроде PDF (тоже сильно векторный), что, потом, обрабатываясь быстрыми шейдерами на GPU, выдаётся на экран. Опять же, многое пропущено, но вряд ли кому-либо, кроме парня в свитере с оленями, действительно интересно, как работает GDI, DirectX или OpenGL.
    6) Ах да, мы же забыли про тысячи js-скриптов, миллионы картинок и анимации с котиками, а также о таких дополнительных плюшках, как flash-player или java-weblets. В кратце, что js, то и flash и java - это виртуалка, со специальной архитектурой. Они, виртуалки, конечно разные (хотя flash и js довольно похожи, ещё бы - ECMAScript один и тот же). JS - самый интегрированный внутрь браузера, он же и самый медленный чисто визуально (ибо последние два имеют доступ к быстрому GPU), хотя самый быстрый в попугаях. Второй постепенно вымирает и представляет из себя, так же как и третий специальную shared-библиотеку, о которой браузер как-нибудь узнал и которой скармливает специальное содержимое помечанное специальным тегом html. Третий уже почти умер и встречается лишь изредка или в каком-нибудь энтерпрайзед со страшным legacy-базой. Ну здесь из сылок разве только гугл. Ибо сколько всего - даже не сообразишь. Да и вообще, эта тема ещё скучнее GDI, DirectX и OpenGL и к свитеру с оленями требуются ещё очки с толстенными стёклами, дающие стопицот к терпению и задроству над матаном. Если в кратце, то в случае JS, всё что было загружено в память и не думает выгружаться и формирует этакое дерево - DOM, над которым с помощью специального API и происходят модификации. При этом, перед тем как исполниться, весь JS-код компилируется, в нативный для VM байт-код. То же самое в общем-то и со вторым и третьим, разве только они не имеют доступа к DOM и организовать его - дело тех ещё костылей. Ах да, забыл ещё про Silverlight (или как оно там пишется), который сдох, не успев родиться. Так же как и Java, жив в серьёзном энтерпрайзе, не поскупившийся не "дешёвую" поддержку MS.
    7) Ну... А дальше пользователь нажимает на нужную гиперссылку и всё по новой.

    За кадром остались такие костыли, как ajax, websockets и прочая асинхронная ересь. С ней всё в миллионы раз сложнее. И к очкам со свитером потребуется ещё и... а чёрт их знает, что они там ещё носят. Ну да ладно, я искренне завидую тем парням (и девушкам), которые разбираются во всей этой машине. Целиком. Ибо это лишь верхушка айсберга. Разбавленная не лучшей памятью и ужасным гуглом.

    P.S. Не бейте сильно за грамматические и синтаксические ошибки. Спеллчекер приказал долго жить, да и 5 утра как никак.

    UPDATE
    На хабр выложили неплохой перевод дающий некоторое представление, как браузер ругается над памятью и процессором. Хотя и весьма поверхностное,
    Ответ написан
    26 комментариев
  • Спрайт с gif анимацией

    walkman7
    @walkman7
    Проще и правильней подгружать гифки заранее.
    Ответ написан
    2 комментария
  • Как декомпилировать программу на .NET?

    @nicolausYes
    Бесплатный dotPeek от Jetbrains. Статья на Хабре.
    Ответ написан
    Комментировать
  • Как отследить наступлении событий в объекте?

    @vladmir-boy
    Не пробовал, но
    www.postsharp.net/aspects/intercept-event

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

    Вообще задача логирования событий ничем не отличается от задачи логирования вызовов метода. Здесь работает концепция аспектно-ориентированного программирования.
    ru.wikipedia.org/wiki/%D0%90%D1%81%D0%BF%D0%B5%D0%...

    надеюсь, что поможет.
    Бесплатных AOP-фреймворков тоже хватает, но у них немного другие принципы работы
    Ответ написан
    Комментировать
  • Что скрывается за понятием сlass в ООП?

    kynisa
    @kynisa
    I just press buttons.
    вы путаетесь в базовых абстракциях - в этом ваша проблема. и даже если вам объяснить в чем конкретно вы ошиблись в данном вопросе, вы завтра прибежите с новым, и так до бесконечности.
    вам нужна книжка, в которой больше про ооп, и меньше про кнопки :)
    Ответ написан
    1 комментарий
  • Как посчитать, во сколько раз больше число?

    @Vampiro
    Ипать... ЕГЭ....

    Хотя... можно планку зарплаты поднимать на 10% после каждого выпуска))
    Ответ написан
    Комментировать
  • Как реализовать несколько действий одной кнопкой?

    @AlexRudkowskij
    Студент
    А вообще вот как нужно сделать:
    1) Сделать событие для кнопки. Сделать массив цветов.
    2) При нажатии на кнопку устанавливать первый цвет. Прибавить к переменной единицу(эта переменная - индекс цвета из массива)

    И так далее... При нажатии на кнопку ставим цвет(colors[i]), и прибавляем единицу(i++).
    Примерно так :-)
    Ответ написан
    1 комментарий
  • Происходит ли уничтожение обьекта?

    @AlexP11223
    Да.
    Не пробовали гуглить? Первая же ссылка по запросу "using return".
    stackoverflow.com/questions/3247617/what-happens-i...
    Ну и еще можно было посмотреть в msdn (или где угодно), что using это на самом деле try-finally.
    Ответ написан
    Комментировать
  • Как добавить элемент в массив mono?

    kosmos89
    @kosmos89
    Array не может изменять свой размер (за исключением способа, указанного @Fesor. Если требуется изменять размер, используйте List<T>, например.
    Ответ написан
    Комментировать
  • Как добавить элемент в массив mono?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Эм... Array или ArrayList? если последнее то да, Add (или как там). Если Array то Array.Resize() и потом добавить значение...
    Ответ написан
    3 комментария
  • Какие задачи требуют большой вычислительной мощности и могут выполняться распределённо?

    @khassan0v
    Широкий класс задач сводятся к глобальной оптимизации, где актуальны и возможны параллельные вычисления. Труды по этой теме распространены и хорошо гуглятся.
    Если интересна робототехника - в ней много вычислительно трудных задач, где актуальны распределённые вычисления. Например, в популярной операционной системе роботов используется модульная система навигации в плоскости - один алгоритм может работать на одной машине с глобальной картой, другой алгоритм на другой машине - с локальной. Подробнее о навигационном модуле - по ссылке: wiki.ros.org/move_base.
    Вот и вот ещё пара примеров из поисковика. Многие behavior-based системы управления роботами и системы, построенные на основе парадигмы "syndicate" легко распараллеливаются.
    Ответ написан
    Комментировать
  • Где дешевле регистрировать зону .net, а где .ru? Есть ли зона .ov?

    @verd
    2domains недавно здорово подняли цену продления, а на сайте цены спрятали. Чтобы посмотреть стоимость нужно нажать под ценами ссылку Показать стоимость продления. Для ru/рф, если доменов меньше 10, цена продления 299 руб. Жалею, что повелся.
    Ответ написан
    1 комментарий
  • Почему не работает код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в описании ошибок как бы все уже написано что нужно сделать..
    Ответ написан
    Комментировать