• Какая связь между следующими терминами: Машинное обучение, Deep learning, Искусственный интеллект?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    машинное обучение - так называется схема благодаря которой алгоритм может подстраиваться под требуемый результат (грубо говоря самоулучшаться), дип лернинг - это машинное обучение на большом объеме данных, искусственный интеллект - изначально под этим подразумевали искусственный разум (такойже как у тебя например, только искусственно созданный), но сейчас все больше просто подразумевают хоть какие-то признаки самостоятельного принятия решений (уже якобы интеллект), вобщем это уже категории из философии, а не программирования. Предполагается что машинное обучение - одна из основ для искусственного интеллекта.
    Ответ написан
    Комментировать
  • Какая сейчас ставка у верстальщиков?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    не знаю что это за зарплата для программиста/верстальщика - 200 долларов.
    в нормальных компаниях даже студентам-стажерам которые нихрена не умеют и ничего не делают в районе 1000 платят (я про москву/питер конечно говорю), просто не работайте с нищебродами, вас же никто не заставляет кому-то бесплатно сайты верстать.
    не стоит соглашаться на первое встречное предложение, учитесь продавать свои навыки, иначе никогда ничего не заработаете.
    Ответ написан
  • Верно ли, что Scala -- это для промышленного стат. анализа?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Scala язык общего назначения.
    Каким образом формируется популярность языков в определенных сферах, сложно сказать, ну вот так сложилось исторически что именно в обработке данных он нашел наибольшую популярность, но это никак не ограничевает его область приминения.
    Я например активно scala код компилирую под браузер, и много чего под браузер разрабатываю.
    Одно из преимуществ Scala, что он позволяет свои решения переносить на разные сферы и платформы, например один и тотже код можно запустить как на JVM, так в Браузере, так и нативно скомпилировать без JVM.
    Можно быстро прототипировать из готовых блоков как на питоне, но в отличии например от питона, этот код потом можно легко масштабировать, запуская на многопоточных системах и кластерах, при этом сразу получая высокую эффективность статически типизированного кода.
    Ответ написан
    3 комментария
  • Не-python для машинного обучения/AI/нейронных сетей/etc?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Стоящие фреймворки имеют интерфейс практически для любого популярного языка.
    Поэтому при желании можешь использовать любой язык, какой тебе больше нравиться.
    Как правило для разработки эффективно работающего кода используют компилируемые языки, а для наброска быстрого прототипа, когда эффективность не важна, используют скриптовые языки (типа питона).
    Питон просто попроще и зарубежом активно используется для простого обучения не программистов (экономистов, статистиков) программированию, а они в свою очередь много исследовательских и обучающих материалов создают, что в свою очередь уже популяризирует язык.
    Ответ написан
    Комментировать
  • Как вы находите идеи домашних проектов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    >сделать что-то полезное
    для этого нужно иметь широкий кругозор и видеть проблемы людей - такое приходит только с годами и то не каждому.
    Если своих идей нет, советую просто участвовать в чужих опенсорс проектах, либо участвовать в соревнованиях по программированию.
    Ответ написан
    Комментировать
  • Кто такой продукт дизайнер?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну это типа новое модное понимание того каким должен быть руководиль разработки (проджект менеджер).
    хотя они могут работать и в паре.
    В стартапе он формулирует то каким должен быть продукт на основе анализа и исследования целевой аудитории.
    он немного дизайнер, программист, но по большей части маркетолог, менеджер, аналитик.
    его задача именно понять куда и как развивать продукт, каким он должен быть, на основе своих исследований, а не просто заявить что я вот хочу это делать вот так. . .
    Ответ написан
    Комментировать
  • Проверка гипотезы на случайных (или неизвестного источника) числовых данных в виде ряда. Вопрос организации?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    можно написать простейший генератор случайных чисел от 0 до 100, и добавить к нему случайно "вверх" и "вниз", а потом на последовательности этих данных построить график, то вы его не отличите от текущего торгового графика.
    Советую вам не просирать свою жизнь на поиски того чего нет.
    Ответ написан
    1 комментарий
  • Возможно ли за 1 год изучить один ЯП и выйти на работу?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    выучить можно и быстрее, но нужно понимать для работы разработчиком, язык программирование это примерно 10% от того что требуется знать.
    Ответ написан
    Комментировать
  • Как разбить транзакцию по микросервисам сохранив консистентность данных?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    то что вы описали называется двухФазным комитом, раньше очень часто использовался.
    сейчас активнее используют похожий но немного другой подход, тоже связанный с тем что резервируют определенные ресурсы (например деньги на счету, и товар на складе) потом проверяют промежуточный статус операции, и потом проводят и подтверждают операцию - разница в том что ничего не перезаписывается а непрерывно все запросы логируется, и любые откаты операции идут через добавление новых записей-запросов в лог (он же и очередь сообщений)
    ----
    там много тонкостей, например вы говорили про время-метки, в целом метки времени добавляют - если нужно контролировать очередность промежуточных шагов (но обычно это не так важно, поэтому метку времени не всегда добавляют), но добавляют уникальный айди операции, тк в случае сбоя запроса (при например длительном ожидания ответа), может произойти "переотправка" запроса, и нам эта метка с уникальным айди позволяет не дублировать одну и туже операцию.
    =====
    есть тонкости например с тем, каким образом разделены эти микросервисы, может это просто дублирование одного и того же сервиса но например каждый из них обрабатывает запросы от разных сегментов пользователей, поэтому не требуется согласовывать какие-то операции между этими микросервисами.
    ====
    на мой взгляд - это вобще разводные вопросы не имеющие правильного ответа, схемы подбираются конкретно под проект и задачи, тем более если вы не разрабатывали какую-нибудь платежную систему, типа яндекс.денег то вообще бесполезно что-то обсуждать.
    это не камень в ваш огород, этим вообще обычно мало кто реально занимается, уверен те кто у вас это спрашивал сами мало что в этом понимают, а спрашивают такие вещи чтоб вас слить.
    Ответ написан
    3 комментария
  • Как правильно распределить задачи в зависимости от нагрузки?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    если нет никаких особых свойств и закономерностей, а вся нагрузка распределена случайно по группам то уверен можно по порядку распределять, раздавая по порядку каждому серверу свою задачу. Все равно в среднем будет средняя нагрузка.
    Ответ написан
  • Подкиньте идею языка программирования, не похожего на семейство Си и Java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Scala, Rust, Swift - очень похожие друг на друга языки, базируются на современных представлениях о том как следует работать с возрастающей сложностью в разработке программного обеспечения.
    С одним из них обязательно стоит познакомится для развития кругозора + они активно используются в продакшене.
    Ответ написан
    Комментировать
  • Как отфильтровать данные за определенный период в Spark?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    можно просто попытаться как вы пишете отфильтровать, для этого в начале получить определенную структуру и тип данных:

    источникДанных
      .мап(созданиеСтруктуры)
      .фильтр(текущаяЗапись => СписокТребуемыхНомеров.содержит(текущаяЗапись.телефон) 
        && текущаяЗапись.дата<>требуемыйИнтервал)


    так будет работать, но очень долго, медленно и сожрет кучу ресурсов на одной машине - это не то ради чего спарк используют, спарк - это движек для распределенных вычислений. А чтоб запустить распределенные вычисления, нужно в начале создать пару "ключ"->"значение" (где ключ номер телефона, а значение все остальные данные), эти пары распределятся по узлам, где будут параллельно обрабатываться, а потом результат паралельной обработки агрегировать в один общий результат, и для этого не фильтр использовать а reduceByKey с aggregate, для паралельного сбора ключей и значений для этих ключей.
    Ответ написан
    1 комментарий
  • Для выполнения каких задач какой язык программирования подходит?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    bash, sql, html, mathLab - языки заточенные под определенные задачи, мало подходящие для других задач.
    Популярные языки типа python, js, java, scala, с++ -> подходят для любых задач (но с определенными сложностями, необходимы библиотеки, обертки, нужно писать много лишнего кода)

    вот например в баше чтоб получить список файлов - нужно ввести ls
    чтоб сделать тоже самое на JAVA - необходимо целую программу написать, строк на 10), потом ее скомпилировать, а потом запусить джава машину и передать ей этот код. Довольно геморройное занятие для такой задачи.
    ----
    но нужно понимать что в томже баше простота для простых задач (типа обработки файлов и текстов), выливается чудовищную сложность для более сложных задач.
    П. С.
    если работаешь только с одним типом задач - то тебе выгодно использовать заточенный под эту задачу язык.
    Если работаешь большим количеством разнообразных задач в разных сферах, то лучше освоить и использовать один инструмент (язык) общего назначения но на высоком уровне - чем 10 специализированных инструментов на посредственном уровне.
    Я например на scala - пишу фронтэнд, бэкенд, работаю с БД, пишу скрипты вместо баша, создаю быстрые наброски прототипы (вместо питона), и запускаю теже самые прототипы в продакшен где требуется высокая производительность и многопоточная обработка данных.
    Нигде не касаюсь вообще никаких других языков.
    Ответ написан
    9 комментариев
  • Как организовать работу команды без полного доступа ко всем кодам проекта на PHP?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Разделяете функционал по микросервисам, на каждый микросервис заводится отдельный гит репозиторий.
    Ответ написан
    2 комментария
  • Тестовое задание (Junior Frontend), приемлемое ли?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    на фрилансе полно таких заданий, вполне себе за бабки
    нет смысла делать для опыта это бесплатно, если можно делать для опыта ПЛАТНО.
    никогда не беру тестовых заданий, есть технические собеседования, вот пускай там все что надо спрашивают,
    а давать задания -> это уже обычная работа, а кто их берет и бесплатно делает идиоты.
    Уже не раз вопрос поднимался и разъяснялся что все эти "тестовые задания" - являются нарушеним трудового законодательства, тк по факту наступают трудовые отношения, за которые работодатель обязан оплачивать, но не платит.
    Ответ написан
    3 комментария
  • Правильно ли сделана авторизация?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    современный подход, отдавать авторизационные данные пользователя зашифрованными в виде токена, ключ для расшифровки хранится в памяти, и ничего не ищется в БД и ни с чем не сравнивается, при запросе расшифровываются данные токена, и решается давать доступ или нет на основе его токена (в токене записанно какие у пользователя есть разрешения), что позволяет убрать нагрузку с БД и неограниченно масштабировать функциональность по серверам, тк каждый сервер имеет для расшифровки один и тотже ключ, в случае же проверки данных в единой БД, масштабирование упрется в производительность этой БД.
    Ответ написан
  • Хорош ли учебник статистики Ивченко для Machine learning?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Машинное обучение — всего лишь другое название статистики.

    в машинном обучении есть несколько основных направлений.
    от психологов пришли -> к нейросетевым подходам
    от физиков -> пришли к моделированию
    от математиков и статистиков -> пришли к статистическим/вероятностным подходам
    от биологов пришли -> к эволюционными алгоритмами.
    -------
    Про книгу в 608 страниц о статистике -> я бы сказал, лучше не читать, для того чтоб вкатится в машинное обучение столько именно статистику изучать точно не требуется.
    нужно знать только что такое вероятность, и как считать условную вероятность
    Ответ написан
    Комментировать
  • Можно ли начать разговор о переоценке стоимости выполнения проекта, если вас уже выбрали исполнителем?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Да можно, никаких проблем.
    если проект не точно такожей как вы делали до этого - то у вас гарантированно будет уточнение деталей и обнаружение подводных комней во время разработки.
    Современные подходы решают "неопределенность" со сложностью и обьмемом работ через итеративную гибкую разработку. Тоесть вы делаете сначала грубый набросок сервиса (очень очень примитивный не рабочий прототип), потом на каждом новом этапе работ начинаете проработку его деталей, и берете оплату и фиксацию обьемов работ на одну такую итерацию по улучшению.
    Я обычно предлагаю 4-5 таких итераций, что позволяет например сделать более менее функциональный сервис, на сколько он будет функциональный только время покажет, если заказчику будет мало он просто докупает у меня дополнительные итерации.
    На каждой итерации у заказчика есть рабочий проект, просто разный по количеству и качеству проработки деталей, поэтому нет каких-то проблем с тем, что что-то не учли, или что-то нужно добавить, на каждом этапе это дополнительно обсуждается.
    Нужно просто понимать, что для подавляющего числа уникальных проектов, такие итерации просто могут быть бесконечны (пока сервис существует всегда будет что-то что еще нужно добавить или улучшить).
    Ответ написан
    Комментировать
  • Кто основатель всея IT?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Самый первый кто именно начал выдвигать теории работы вычислительных устройств Чарльз Бэбидж
    который пытался построить первую вычислительную машину еще в 1822 (он по миру ездил с лекциями, о том как работает эта машина, но в мире на тот момент не было людей которые бы могли вообще понять о чем речь, представляете эпоха императора Наполеона, и какой-то чудак рассказывает о том что придумал "метод аппроксимации функций многочленами и что мол для того чтоб автоматизировать вычисления этого процесса типа можно построить какую-то там вычислительную машину"), только через 100 лет на основе его работ начали дальше развивать теорию ну и Тьюринг собрал первую электронную вычислительную машину (У Бебиджа все же не неполучилось собрать рабочий прототип, тогда черезвычайно трудно было безошибочно создать такое сложное устройство, в итоге сроки и стоимость разработки ушли за все разумные пределы того времени).
    Ответ написан
    6 комментариев
  • Что вы делаете если не укладываетесь в срок?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Ни ускорить ни замедлить (новых людей подключать, краткосрочно процесс замедлится еще сильнее - на том чтоб работу дополнительного человека координировать), переработки череваты выгоранием и падением мотивации в итоге еще большим сабатажем сроков.
    Оценка сроков - это описательная и приблизительная харрактеристика, которая никак не влияет на реальные сроки разработки, вы же не будете что-то делать медленней если сделали быстрее чем планировались сроки, точно также и наоборот.
    Как с этим быть - никак, показать что есть, спринт фиксирует ваши обьемы работ на определенный момент времени, чтоб вы могли оценить проделанную работу, и решить куда дальше двигаться.
    Ответ написан
    Комментировать