• Почему не утилизируются полностью все ядра процессора?

    @Shahelm Автор вопроса
    Я разобрался, все банально я не правильно интерпретировал вывод htop, он при отрисовки дерева процесса выводит суммарную информацию по потреблению CPU в главном процессе.

    Всем спасибо.
    Ответ написан
    Комментировать
  • Как запускаются программы на разных операционных системах?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Код на С++ компилируется в исполняемый файл.
    Для виндовс компилятор выдает .exe файл
    Для линукса - один из вариантов линукс исполняемых файлов (ELF)

    Исполняемые файлы содержат, если не вдаваться в детали, инструкции для процессора, с вызовом функций операционной системы.

    Сам код на С++ может быть кроссплатформенный, предусматривающий его возможность компиляции под разные платформы.
    Ответ написан
    Комментировать
  • Работа в IT после 30, возможно ли?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Карьера программиста после 30+. Миф или реальность?
    Мне 30 лет, кем в IT можно стать за месяц (не трол...
    Поздний старт в ИТ — есть ли шансы?
    Программирование в 28 лет, реально ли научиться и ...
    Возможна ли переквалификация в разработчики после ...
    Реально в 36-40 лет стать тестировщиком или програ...
    Есть ли жизнь программиста-новичка после 30?

    очень сложно запоминать важные детали, хоть памятку печатай!
    у меня такое в 20 было) Пол года назад(сейчас мне 29) начал активно изучать python. Важные вещи записываю в тетрадку(и как то оно само запоминается, редко заглядываю в неё, но бывает такое). Нужно кодить, желательно интересные програмки для себя и все получится(если есть интерес).
    Также прочитайте мой ответ на один вопрос)
    Ответ написан
    Комментировать
  • Какой город есть для получения образования и с хорошими возможностями?

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

    По существу: поступайте куда сможете. Раз Европа не светит по финансовым причинам, а в МИФИ или МФТИ не пробьетесь - то пофигу, какая у вас будет корочка, лишь бы была и по специальности. Лучше профильное образование неизвестного ВУЗа, чем непрофильное известного.
    Ответ написан
    Комментировать
  • Нужна ли вышка веб-программиста?

    @anikavoi
    Мне 48 лет, из них больше 30 я в IT. Образование - 8 классов и "подворотня".
    Мне иногда ужасающе нехватает высшего образования.
    Все-таки лучше когда "школу обучения" прививают специалисты.
    То что "программит на (чемугодно)" не столкнется с чем-то из математики - не верь.
    Сидишь такой фигачишь сайты, и тут хренак - GIS-проект, и ты начинаешь натягивать теорему арксинусов на геоид Красовского, потому что нужны расстояния между точками поверхности.
    Или задача фильтрации данных, и ты пытаешься осилить преобразование Фурье.
    Или данные от источника могут поступать с запоротыми битами, потому что источник болтается на орбите, и ты впарываешься в коды Боуза-Чоудхури-Хоквингема...

    Википедия? Агась!
    https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%...
    Стало понятнее? Вот-вот...

    Так что, послушай старого дурака, который всю жизнь испытывает трудности с тем, чему его могли давным-давно научить - бери вышку! Потом не пожалеешь.
    Ответ написан
    2 комментария
  • Разработчик недисциплинированно трекает время. Что делать?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    А зачем вообще трекать время? Уложился в дедлайн - молодец. Не уложился - разбор полётов. Хронически не укладывается - понижение грейда или увольнение.
    Ответ написан
    21 комментарий
  • Как асинхронная программа(event loop) понимает, что пришел ответ от сервера?

    bingo347
    @bingo347
    Crazy on performance...
    Что-бы понять асинхронность полностью придется постепенно опустится на самый низкий уровень, вплоть до железа. Но начать стоит с самого верха - с уровня нашего приложения.

    Итак, мы пишем на нашем высокоуровневом любимом языке, неважно JS/Rust/C#/Scala/Python или любой другой. В современном мире у нас скорее всего есть какая либо абстракция для работы с асинхронными апи, предоставляемая или стандартной библиотекой языка или сторонними библиотеками. Она может быть примитивной и основанной на колбэках или более продвинутой, вроде Future/Promise/Task или чем-то подобным. Иногда наш язык предоставляет синтаксис наподобие async/await для более простой работы с этими абстракциями, а иногда асинхронная работа может вообще быть скрыта от нас в рантайме языка, например как с горутинами в Go. Но в любом случае где-то под капотом у нас будет event-loop, а иногда и не один, так как никто не запрещает нам писать многопоточку в то же время используя асинхронные вызовы.

    Сам event-loop - это не более чем обычный while(true) или любой другой бесконечный цикл. И внутри этого цикла наша программа имеет доступ на извлечение к некоторой очереди (если не знаете, что это за структура данных, то погуглите), которая содержит в себе результаты уже обработанных задач. Программа берет очередной результат, находит ожидающий ее колбэк/Promise/Future/Task и запускает выполнение ожидающего кода. Очередей опять же может быть несколько и обрабатываться они могут по разному, но это не важно. Важно то, что наш основной поток (или потоки) ничего не знают, о том как выполняются асинхронные задачи. Он лишь смотрит, есть ли в очереди результат, и если есть - обрабатывает его, а если нет, то принимает решение или выйти из цикла (и завершить поток, а иногда и весь процесс) или уснуть пока новых результатов не появится.

    Но откуда же в очереди берутся результаты? Надо понимать, что асинхронная программа почти всегда многопоточная и результат операций попадает в очередь из фоновых потоков, которые просто блокируются в ожидании нужного ресурса (или сразу многих ресурсов, если используют системные апи вроде epoll или kqueue). Как правило такие фоновые потоки большую часть времени находятся в состоянии ожидания, а значит не потребляют ресурсы CPU и не попадают в планировщик ОС. Такая простая модель действительно позволяет сильно экономить ресурсы по сравнению с моделью, где множество потоков выполняют по 1 задаче и самостоятельно ожидают свои запросы.

    Важно отметить, что в современном мире даже на среднеуровневых языках, вроде C или C++, не говоря уже о высокоуровневых, не реализуют асинхронность сами. Во-первых, на разных ОС для этого используются разные апи. Во-вторых, эти апи на разных ОС умеют обрабатывать разные типы ресурсов (с сетью вроде как умеют работать все основные ОС, но помимо сети асинхронно можно работать с пользовательским вводом, диском и периферийными устройствами, вроде сканеров, вебкамер и прочего цепляемого в usb). Наибольшую популярность (ИМХО) имеет кроссплатформенная библиотека libuv, хотя в Rust принято использовать mio (или даже абстракции над ней, вроде tokio), в C# подобные механизмы есть в .NET Core, а в Go оно уже зашито
    в те самые 1.5МБ рантайма, что Go засовывает в каждый бинарь
    (там правда еще и GC, но один фик это много и достойно вынесения в динамическую либу)


    Ок. С прикладным кодом вроде разобрались. А что же происходит в ядре ОС? Ведь, как писалось выше, у нас даже есть апи, чтоб ждать запросы пачкой. Все просто. Ядра ОС стали асинхронными еще до того, как это стало мейнстримом, если мы конечно имеем дело не с ОС реального времени (но у нас же винда/линь/мак/фряха, а не ОС для бортового компа боинга, где это критично). Смотрите, когда что-то происходит на внешней периферии (ну например диск запрошенные данные прочитал или по сети данные пришли, или юзер мышкой дернул), то формируется прерывание. CPU реально прерывает свою текущую работу и бежит смотреть что случилось, точнее вызывает обработчик предоставленный ОС. Но у ОС то есть основная работа, поэтому она скорее старается освободить обработчик и просто скидывает все данные в оперативку, а разбираться будет потом, когда очередь дойдет. Ничего не напоминает? Очень похоже, на то что происходило в event-loop, только вместо фоновых потоков "результаты" попадают в очередь из прерываний. А уже когда-то потом ОС отдаст данные в драйвер устройства, ну и т.д., пока они не дойдут до нашего прикладного приложения. Вот и все, никакой магии.
    Ответ написан
    3 комментария
  • Что использовать для получения TCP-пакетов в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Использовать нужно сокеты. В некоторых случаях можно с asyncio.
    Ответ написан
    2 комментария
  • Как выполнить нормализацию адресов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    После того, как открыли для себя сервис https://dadata.ru/, вообще перестали тратить время и деньги на собственные костыли из граблей. Сервис просто огонь.
    Для нас онлайн режим и скорость обработки не критична, поэтому мы даже уложились в бесплатный пробный тариф.
    Вроде бы у них были решения по установке их ПО в закрытом контуре, а это не что иное, как нужный вам оффлайн. Правда тут уже бесплатно не прокатит точно.

    До дадаты этот вопрос решался жутким нагромождением фильтров, регекспов с заменами и человеко-машинного совокупления.
    Общая схема годится не только для адресов, а вообще любых грязных данных:
    1. Входной датасет сохраняем в CSV и НИКОГДА не меняем.
    2. Обработка многоступенчатая. Каждая ступень состоит из фильтра и модификатора. Фильтр решает применим ли модификатор к каждой записи. Модификатор применяет свою модификацию если фильтр разрешил.
    3. Отладочный выхлоп, который показывает и позволяет быстро просмотреть полностью внесённые изменения.
    4. Каждая ступень должна делать минимальное однотипное улучшение максимально большого числа строк. Цель - каждой ступенью уменьшать разнообразие проблем, увеличивать регулярность, стандартизировать.
    5. При огромных входных датасетах можно сохранять промежуточный выхлоп, но в общем очистка должна выглядеть как пайп их последовательных ступеней обработки.
    - Очень часто бывает, что какая-то ступень незаметно ломает данные, а понимаешь это уже поздно, когда последующие ступени реализованы и отлажены, и сильно опираются на результат ломающей. Благодаря ступенчатости и иммутабельности процесса всегда можно зипнуть текущее состояние с любым предыдущим шагом и очередным фильтром заменить необходимые куски.
    - Часто бывает, что какая-то из ступеней улучшив отдельные записи убирает характерные признаки для фильтрации элемнтов для другой ступени. Благодаря такому инкрементальному процессу можно переставлять ступени местами.
    - При внесении ступенью изменения в запись. ступень должна оставлять свою сигнатуру в отдельном столбце. Удобно для поиска проблем.

    Расскажите подробнее почему не рассматривается онлайн. Заинтриговали.
    Ответ написан
    3 комментария
  • Как сгенерировать направленный граф с N количеством путей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Находим разбиение числа путей на простые множители. Строим между точками A и B дополнительные слои, в каждом из которых количество точек соответствует следующему множителю. Соединяем точку A со всеми точками первого слоя, каждую из точек первого слоя со всеми точками второго слоя и т.д., все точки последнего слоя с точкой B.
    Ответ написан
    Комментировать
  • Как разложить изображение по частотным октавам и потом снова собрать?

    @U235U235
    Эта идея называется вейвлет-разложением.
    В частности, то что вы описываете, похоже на вейвлеты Хаара.
    Вейвлеты используются, например, в jpeg2000 кодеках
    Примеры редактирования картинок ("в отдельном слое можно убрать крупные морщины и прыщи, не повредив мелкую текстуру кожи") есть в Wavelet toolbox, Matlab.
    Ответ написан
    Комментировать
  • Нужна ли математика ml специалисту?

    kgb_zor
    @kgb_zor
    I need your traceback.
    Ответ написан
    Комментировать
  • Нужна ли математика ml специалисту?

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

    gbg
    @gbg
    Любые ответы на любые вопросы
    Мне уже надоело репостить миллионы раз эту картинку:
    stairs.png
    Главный вопрос - вы хотите получить работу ML-ученого или вы хотите стать хорошим специалистом?

    Математика и языки программирования - это только лишь инструменты. Чем компетентнее специалист - тем больше в его арсенале инструментов.
    Ответ написан
    5 комментариев
  • Как развиваться дальше самостоятельно?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    После первого же семестра, с февраля начинаешь искать летнюю практику. Естественно, не в геймдеве, а куда возьмут. Ищи через преподов, родителей, знакомых, объявления. После первой-второй практики пытаешься залезть куда-нибудь на полставки. Если повезёт, туда же, где практику проходил. Часто университетские ВЦ берут студентов на полставки. Курса с 4-го можно пробовать договариваться с деканатом и преподавателями о свободном посещении и переходить на полную ставку. В случае успеха, вместе с дипломом получаешь статус мидла, заинтересованность в тебе рынка труда и возможность выбирать работодателя. После этого можно уже искать геймдев. В случае неуспеха, надо сказать себе "Я плохо старался" и стараться лучше.
    Ответ написан
    Комментировать
  • Как передать массив списков в функцию Си (С++)?

    @res2001
    Developer, ex-admin
    int searchByHash(Stack* hashTable, int element)
    Ответ написан
    Комментировать
  • Как можно искать похожие предложения по смыслу?

    DanilBaibak
    @DanilBaibak
    Machine Learning engineer
    1. Используя word2vec, получаем вектора для каждого слова
    2. Для каждого ответа считаем вектор, как среднее векторов слов из которых он состоит
    3. Считаем вектор вопроса, как среднее векторов слов из которых он состоит
    4. Для определенного вопроса ищем ответ используя, например, косинусное расстояние
    Ответ написан
    Комментировать
  • Есть книга описывающая само строение и принципы работы компьютера?

    Zoominger
    @Zoominger
    System Integrator
    учитывая как много произошло изменений с того времени.

    А что случилось? Архитектуру фон Неймана заменили на что-то более прогрессивное? Квантовые компьютеры уже захватили неевклидовы поля загоризонтных структур и гоняют бозоны по углам чёрных дыр процессора, пока мы смотрим котиков на Ютубе?
    Да нет, всё та же чепуха, ничего нового.
    Так что читайте.
    Ответ написан
    Комментировать
  • Как можно реализовать поиск цикла в однонаправленном списке?

    @d1skort
    junior
    Зачем использовать дополнительную память?
    def is_circular(self):
        turtle = self.head
        rabbit = self.head
        while(turtle and rabbit and rabbit.next):
            turtle = turtle.next
            rabbit = rabbit.next.next
            if turtle == rabbit:
                return True
        return False
    Ответ написан
    2 комментария