• Насколько часто в js библиотеках попадаются бэкдоры?

    @d-sem
    Правда.

    На фронте из опасного - воровать токены авторизованных пользователей, майнить крипту и переадресовывать на фишинговые сайты.

    На беке - практически всё что угодно. Если вдруг еще и скрипт работает под рутом - тогда практически полный контроль на системой.

    Как защититься? Использовать минимум библиотек и проверенные библиотеки. Тщательно смотреть какие библиотеки подключаются в проект, как они устанавливаются. Чем популярнее и фундаментальнее библиотека тем ниже шанс бекдора. При установке популярных библиотек смотреть что это именно оригинальная библиотека, а не клон. https://www.kommersant.ru/doc/5501418

    Ну и еще можно позапускать проект в изолированном окружении и посмотреть за его активностью. Куда лезет, что отправляет и принимает. Как минимум это необходимо знать для стабильности проекта.
    Ответ написан
    2 комментария
  • Нужно ли иметь вышку в it для руководящих должностях?

    @d-sem
    Если вышестоящее лицо считает, что нужно - значит нужно. Другого не дано.

    Уровень тимлида или синьора это не тот уровень, где вышка ограничивает карьерные возможности. Желательна, да. Но не принципиальна и более служит для прохождения фильтра в лице HR.

    Глава департамента, технический директор, должности где много работы с официальными бумагами (Информационная безопасность, например) - вот это уже должности, где роль высшего образования возрастает как критерия отбора. Но опять-таки, нет практически ничего, за редким исключением, что бы нельзя было бы компенсировать умением решать бизнес задачи.
    Ответ написан
    Комментировать
  • Насколько актуальна книга Приемы объектно-ориентированного проектирования. Паттерны проектирования в 2022 году?

    @d-sem
    Классика актуальна всегда. Вопрос в том, что не нужно воспринимать книгу как догму и стоит просто черпать вдохновение для решения тех или иных стандартных задач. Не нужно тянуть паттерны ради паттернов туда где они не нужны.
    Ответ написан
    Комментировать
  • С помощью каких средств можно создать сайт-квиз с визуализацией?

    @d-sem
    Верхняя планка стоимости не ограничена, а сама цена зависит от кучи конкретных условий. В любом случае.

    Для примера, у тех же автопроизводителей машины в виртуальном шоуруме порой очень похожи на игру.

    Если же хочется сделать дешево и эффективно, то или создавать модель данных с поиском по аттрибутам или создавать фото со всеми вариантами, где в имени фотографии будет закодирован ответ на тот или иной вопрос (например 123.jpg где последовательно выбраны варианты 1, 2 и 3 в ответах).
    Ответ написан
  • Возможно ли написать бота Telegram, который будет управлять виртуальной машиной Azure/Aws?

    @d-sem
    Если есть возможность через какое-либо API или изнутри виртуальной машины управлять этим, то возможно.
    Ответ написан
  • Что значит Junior/Middle+?

    @d-sem
    Обычно значит что нужен крепкий Junior/Middle.
    Год коммерческого опыта для Junior и два-три для Middle.

    Однако, чаще встречается сочетание Junior+/Middle на вакансию, что означает готовность рассматривать опытных Junior на данную позицию, так как Middle не получается нанять. А еще чаще встречается сочетание Middle+/Senior, когда не хватает денег на позицию.
    Ответ написан
    Комментировать
  • Как парсить динамические страницы с использованием php?

    @d-sem
    Самое универсальное решение это поднять на nodejs сервис на базе puppeteer https://github.com/puppeteer/puppeteer и переложить на него всю ответственность по парсингу динамических страниц. А в него уже передавать запросы.

    С точки зрения php теоретически можно попытаться разобраться в хитросплетениях API запросов, если на целевом сайте вдруг совсем не делали защиту парсинга. Можно подключить любой компонент для headless браузеров.

    Но с точки зрения кпд и качества лучше всего сделать сервис на инструментах которые изначально для этого заточены. Связка nodejs + puppeteer с отдачей данных по api (http или очереди - rabbitmq в rpc) это очень мощное и в то же время простое решение. Хотя бы просто потому что puppeteer это оболочка над google chrome, которую очень удобно дебажить в консоли браузера.
    Ответ написан
    Комментировать
  • Как изучать вещь, про которую нету никаких уроков в Интернете и документация не понятна?

    @d-sem
    Если непонятна документация, то это означает, что либо документация плохая, либо есть пробелы в фундаментальных знаниях. В обоих случаях для понимания нужно изучать базовые вещи, на которых эта документация основана.

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

    В такие моменты обычно и пригождается хорошее высшее образование для организации научного поиска и структурирования информации, а также для экспериментов.
    Ответ написан
    1 комментарий
  • Как углубится во что то одно, а не изучать все поверхностно?

    @d-sem
    Пробовать все - нормально.
    В какой то момент, что-то да захватит. Возможно, просто еще не найдена своя ниша.

    А с концентрацией - скорее всего вопрос целеполагания. Если поставить цель сталь джуном в каком то направлении и идти к ней - то все будет ок. А пока все делается добровольно и по настроению - такие перескакивания и будут.

    Мне лично помогло не размазываться осознание того что у меня скоро закончится финансовая подушка и никто мне не поможет. А семью нужно кормить и счета платить. Знание даты когда у тебя кончатся деньги и тебе нечего будет есть - очень мотивирует стать джуном :)
    Ответ написан
    1 комментарий
  • Как загружать для РФ один скрипт, а для других стран - другой?

    @d-sem
    Использовать любой сервис который позволяет определять регион по IP

    Или внешнее API, или библиотеки вида https://www.maxmind.com/en/geoip2-services-and-dat...
    Ответ написан
    2 комментария
  • Можно ли как то определить фамилию или имя определенными правилами?

    @d-sem
    Еще сложность добавляет то, что ФИО могут быть не только русские, но и ФИО людей из других стран...


    Даже в рамках имен типичных для РФ могут возникать пограничные кейсы которые усложняют распознавание имен.

    Любой результат в итоге придется сверять руками. Что настоятельно советую.

    Из того что видел за пару лет работы с ФИО:
    1) Только имя у человека;
    2) 4ре имени у человека (учитывая что они еще и длинные то вообще ужас для любых документов, обрусевшиеся лютеране);
    3) Совпадении имени и фамилии (балканские народы);
    4) Использование сокращенных имен в паспорте (Сережа, Дима);
    5) Дилемма между тем что есть отчество а что есть имя у тюркских народов;
    6) Цифры в имени;
    7) Ошибки в именах (Владимер).

    А вообще хорошая заметка по проблемам имени https://habr.com/en/post/146901/
    Ответ написан
    Комментировать
  • Какой яп лучше подойдет для метапоисковой системы?

    @d-sem
    Язык лишь позволяет реализовать архитектуру. Даже на языках, более приспособленных к асинхронной работе, с плохой архитектурой получите тоже самое исчерпание ресурсов пока вы рассуждаете рамками одного скрипта. А с учетом незнания особенностей этого нового языка можно потерять очень много времени на дебаг.

    Поэтому выход в архитектуре. Асинхронность реализуется через очереди, а снижение нагрузки через кеширование.

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

    Пример:
    1. Точка API где собираются результаты паралельных запросов - Node.js с промисами которые работают с очередями для общения с п.2 и п.3, при необходимости в будущем переписать на golang, если будет тормозить;
    2. Точки где не нужны высокие нагрузки и много логики - php, python, любой язык который хорошо знаете. Если будет что-то становиться узким местом - переписывать компилирируемое и оптимизировать;
    3. Где высокая нагрузка - что-то компилируемое вроде golang.

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

    Комментировать
  • Как понять что ты развиваешься и как найти знакомых?

    @d-sem
    Добавиться во все тематические каналы. Стараться отвечать на вопросы, если не знать то докапываться самому. Из неадекватных каналов удаляться.

    Сделать портфолио самостоятельно. Периодически выкладывать его на обозрение в тематических каналах, где отвечаешь на вопросы.

    С кем-либо объединяться бессмысленно на этом этапе, так как отсутствует общая база и очень много времени уйдет на коммуникации. Ждать что появится ментор и научит программировать - наивно. Лучше методично делать проекты для портфолио и просить обратную связь на тематических ресурсах. Объединяться с кем-либо имеет смысл когда уже есть прочная база и хочется разделить обязанности. Например, запилить совместный проект, где один делает бекенд, а другой фронтенд и учитесь общаться в команде.

    Также с определенного этапа стоит начать ходить на собеседования. Там намного тщательней оценят портфолио и уровень, дадут рекомменданции куда копать и что изучать. Да, встречаются неадекваты, но в основном лично мне встречались позитивные и адекватные люди, с которыми было приятно общаться по 2-3-4 часа на собеседовании и даже после провала уходил с новыми знаниями.

    Поговорить и познакомиться можно когда уже ты специалист и работаешь в команде. А на профильных ресурсах лучше общаться по делу. В конце концов туда приходят решать проблемы, а не заводить друзей.
    Ответ написан
    8 комментариев
  • Можно ли получить магистратуру по Computer Science если у меня гуманитарное образование?

    @d-sem
    Все сильно зависит от конкретной специальности, ВУЗа и даже кафедры. Где то сдаешь экзамены, а где то просто общаешься в деканате, когда приносишь документы и оплачиваешь счет.

    На практике, в РФ, не раз наблюдал ситуацию когда у человека есть бакалавриат по гуманитарному направлению и магистратура по техническому.
    Ответ написан
    1 комментарий
  • Возьмут ли на работу в 19 лет?

    @d-sem
    В любом случае, надо попробовать. Адекватные работадатели дадут обратную связь, на собеседовании узнаёшь свои слабые места. Плюс опыт собеседований это тоже профессиональный опыт.

    Смотрят на результат, резюме, открытые репозитории. По сколько учить - не важно. Важно, какой результат можешь показать. По факту бывают и мидлы в 16. Ребята писали рабочий код - их брали на работу.

    19 лет могут мешать, только если есть проблемы с военкоматом (т.е. нет отсрочки) так как уход программиста в армию в любой момент это риски. В основном хороший возраст для джуна. Проблемы с возрастом начинаются когда идешь на джуна, а в команде все младше тебя лет на 10. Вот тогда будут проблемы из-за возраста потому что они обсуждают тиктоки, обедают в макдаке и после работы идут в ночной клуб, а ты идешь домой, к жене, детям и думаешь как закрывать ипотеку и кости ломят потому что уснул не на том боку. Но это совсем другая история.
    Ответ написан
    3 комментария
  • Достаточна ли защита сайта php?

    @d-sem
    Безопасность вещь комплексная и многое зависит от конкретной реализации. То что в одном месте закрывается (и то не факт, так как не известна реализация) один вектор мало влияет на общую безопасность.

    Например, у Вас может быть супер защищенный сайт, но рядом у вас в соседней папке у вас лежит приложение, которое принимает команду из пользовательского ввода и подкладывает ее в exec(). Или веб-сервер настроен так, что по отдельным запросам на другие виртуальные хосты отдает содержимое конфиг файлов. Или ньюансы срезания углов при разработке (добавим более тщательную фильтрацию полей позже. ага). Или внезапно выяснилось что в версии вашего ЯП, конкретной библиотеке или субд есть фундаментальная уязвимость.

    Хотите комплексно подойти к вопросу? Копайте в сторону изучения материалов от OWASP. Например, https://owasp.org/www-project-web-security-testing... Там достаточно много материалов для чеклистов. Или смотрите готовые чеклисты что проверять. Например, https://github.com/0xRadi/OWASP-Web-Checklist (я не говорю что это прям лучший чеклист, но посмотрите на число пунктов для быстрой оценки).

    Хотите подойти еще комплексней? Начните с книги для новичков по поиску узявимостей - Ловушка для багов. Полевое руководство по веб-хакингу | Яворски Питер https://www.piter.com/product_by_id/196618476

    А далее например обратите внимание на более сложную книгу как строить защиту в приложениях
    Безопасно by design | Берг Джонсон Д., Деоган Д., Савано Д. https://www.piter.com/product/bezopasno-by-design
    Там уже более основательно доводится доводится мысль как выстраивать защиту на основании архитектуры.
    Ответ написан
    Комментировать
  • Как устроиться на первую работу Django разработчиком?

    @d-sem
    Чтобы стать джуном, нужно подходить к требованиям на джунскую вакансию. Они очень разные. Где то джун документацию читает, а где-то выполняет работу сложнее мидловской в других командах.

    Отсюда:

    1. Какими технологиями нужно обладать Junior'y, что бы техлид отсобеседовал его?

    Теми что указаны в вакансии.

    2. Выкатить свой Django-проект в сеть, что бы дать интервьюерам "пощупать" функционал - нормальный способ привлечения?

    Нормальный. В идеале еще выложить на github репозиторий с этим проектом, чтобы можно было посмотреть навыки работы с git и вообще как происходила работа над проектом.

    Если выложить грамотное API для того же канонического todo, с документацией, тестами - это жирный такой способ привлечения внимания.

    3. Какой функционал в django нужно освоить, что бы увеличить свои шансы?

    По функционалу джанго, ранее реализовал: аутентификация, регистрация, WYSIWYG (форматирование текста в textarea), работа с БД, работа с файлами, изображениями

    я бы добавил создание API, работа с http (отправка запросов, парсинг и прочее в том же духе) и в идеале какое-никакое тестирование.
    Ответ написан
    Комментировать
  • Как понять это регулярное выражение?

    @d-sem
    Positive Lookbehind
    более предметно https://learn.javascript.ru/regexp-lookahead-lookbehind

    Небольшой лайфхак по регуляркам. Иногда помогает использовать инструменты для их составления. Например, https://regex101.com/r/GYjBIY/1

    В верхнем правом углу будет объяснение как работает. А в поле ниже можно на своих примерах посмотреть как отрабатывает регулярка в разных ситуациях.
    Ответ написан
    1 комментарий
  • Как делать Unit тест юнита где идёт взаимодействие с внешним сервисом?

    @d-sem
    Согласно документации внешнего сервиса построить ожидаемые ответы. Например, если есть OpenAPI | Swagger, то достаточно просто подменять ответы по разным путям.

    А в месте где происходит отправка запросов добавить параметр - отправлять реальный запрос или получить локально сохранённый ответ или вообще генерировать эти ответы на основании документации.
    Ответ написан
    Комментировать